From dd012d15b1bf9fb816003b11a3a9fc3c35581a57 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 28 Apr 2011 16:33:39 +0200 Subject: [PATCH] Update google-breakpad library. Normalized xpdf and freetype library --- .../google-breakpad/r318/bin/macx/dump_syms | Bin 430400 -> 0 bytes .../r318/bin/win32/dump_syms.exe | Bin 23040 -> 0 bytes thirdparty/google-breakpad/r318/breakpad.pro | 315 - .../client/mac/handler/breakpad_exc_server.h | 258 - .../client/mac/handler/breakpad_nlist_64.h | 43 - .../client/mac/handler/dynamic_images.h | 297 - .../client/mac/handler/exception_handler.h | 212 - .../client/mac/handler/minidump_generator.h | 157 - .../mac/handler/protected_memory_allocator.h | 85 - .../client/minidump_file_writer-inl.h | 94 - .../client/minidump_file_writer.h | 250 - .../windows/common/auto_critical_section.h | 63 - .../client/windows/common/ipc_protocol.h | 179 - .../windows/crash_generation/client_info.h | 170 - .../crash_generation_client.h | 159 - .../crash_generation_server.h | 269 - .../crash_generation/minidump_generator.h | 121 - .../windows/handler/exception_handler.h | 415 - .../windows/sender/crash_report_sender.h | 125 - .../google_breakpad/common/convert_UTF.h | 143 - .../r318/include/google_breakpad/common/md5.h | 31 - .../common/string_conversion.h | 66 - .../common/windows/guid_string.h | 58 - .../common/windows/http_upload.h | 125 - .../common/windows/pdb_source_line_writer.h | 163 - .../common/windows/string_utils-inl.h | 139 - .../google_breakpad/common/breakpad_types.h | 83 - .../common/minidump_cpu_amd64.h | 231 - .../google_breakpad/common/minidump_cpu_ppc.h | 163 - .../common/minidump_cpu_ppc64.h | 129 - .../common/minidump_cpu_sparc.h | 158 - .../google_breakpad/common/minidump_cpu_x86.h | 172 - .../common/minidump_exception_linux.h | 85 - .../common/minidump_exception_mac.h | 193 - .../common/minidump_exception_solaris.h | 94 - .../common/minidump_exception_win32.h | 102 - .../google_breakpad/common/minidump_format.h | 721 - .../google_breakpad/common/minidump_size.h | 107 - .../processor/basic_source_line_resolver.h | 114 - .../google_breakpad/processor/call_stack.h | 77 - .../google_breakpad/processor/code_module.h | 94 - .../google_breakpad/processor/code_modules.h | 98 - .../google_breakpad/processor/memory_region.h | 76 - .../google_breakpad/processor/minidump.h | 904 - .../processor/minidump_processor.h | 94 - .../google_breakpad/processor/process_state.h | 115 - .../source_line_resolver_interface.h | 82 - .../google_breakpad/processor/stack_frame.h | 84 - .../processor/stack_frame_cpu.h | 153 - .../google_breakpad/processor/stackwalker.h | 140 - .../processor/symbol_supplier.h | 82 - .../google_breakpad/processor/system_info.h | 97 - .../processor/address_map-inl.h | 92 - .../google_breakpad/processor/address_map.h | 80 - .../processor/basic_code_module.h | 95 - .../processor/basic_code_modules.h | 85 - .../processor/contained_range_map-inl.h | 197 - .../processor/contained_range_map.h | 145 - .../google_breakpad/processor/linked_ptr.h | 193 - .../google_breakpad/processor/logging.h | 153 - .../processor/pathname_stripper.h | 53 - .../processor/postfix_evaluator-inl.h | 282 - .../processor/postfix_evaluator.h | 158 - .../google_breakpad/processor/range_map-inl.h | 210 - .../google_breakpad/processor/range_map.h | 126 - .../google_breakpad/processor/scoped_ptr.h | 335 - .../processor/simple_symbol_supplier.h | 125 - .../processor/stack_frame_info.h | 126 - .../processor/stackwalker_amd64.h | 80 - .../processor/stackwalker_ppc.h | 81 - .../processor/stackwalker_sparc.h | 86 - .../processor/stackwalker_x86.h | 82 - .../r318/lib/macx/libbreakpad.a | Bin 3008416 -> 0 bytes .../r318/lib/win32/breakpad.lib | Bin 10305410 -> 0 bytes .../r318/lib/win32/dbreakpad.lib | Bin 1915770 -> 0 bytes thirdparty/google-breakpad/r318/readme.txt | 9 - .../google-breakpad/r318/release.vc9.bat | 17 - .../r318/src/client/linux/handler/Makefile | 55 - .../client/linux/handler/exception_handler.cc | 304 - .../client/linux/handler/exception_handler.h | 226 - .../linux/handler/exception_handler_test.cc | 124 - .../src/client/linux/handler/linux_thread.cc | 411 - .../src/client/linux/handler/linux_thread.h | 204 - .../client/linux/handler/linux_thread_test.cc | 224 - .../linux/handler/minidump_generator.cc | 815 - .../client/linux/handler/minidump_generator.h | 73 - .../src/client/linux/handler/minidump_test.cc | 86 - .../client/mac/handler/breakpad_exc_server.c | 1750 -- .../client/mac/handler/breakpad_exc_server.h | 258 - .../client/mac/handler/breakpad_nlist_64.cc | 381 - .../client/mac/handler/breakpad_nlist_64.h | 43 - .../src/client/mac/handler/dynamic_images.cc | 456 - .../src/client/mac/handler/dynamic_images.h | 297 - .../client/mac/handler/exception_handler.cc | 722 - .../client/mac/handler/exception_handler.h | 212 - .../mac/handler/exception_handler_test.cc | 107 - .../client/mac/handler/minidump_generator.cc | 989 - .../client/mac/handler/minidump_generator.h | 157 - .../mac/handler/minidump_generator_test.cc | 82 - .../julienbachmann.mode1v3 | 1410 - .../julienbachmann.pbxuser | 244 - .../minidump_test.xcodeproj/project.pbxproj | 963 - .../mac/handler/minidump_tests32-Info.plist | 20 - .../mac/handler/minidump_tests64-Info.plist | 22 - .../mac/handler/obj-cTestCases-Info.plist | 20 - .../mac/handler/protected_memory_allocator.cc | 92 - .../mac/handler/protected_memory_allocator.h | 85 - .../handler/testcases/DynamicImagesTests.cc | 85 - .../handler/testcases/DynamicImagesTests.h | 52 - .../handler/testcases/breakpad_nlist_test.cc | 106 - .../handler/testcases/breakpad_nlist_test.h | 62 - .../client/mac/handler/testcases/dwarftests.h | 46 - .../mac/handler/testcases/dwarftests.mm | 60 - .../testcases/testdata/dump_syms_dwarf_data | Bin 702795 -> 0 bytes .../testdata/dump_syms_i386_breakpad.sym | 5300 ---- .../src/client/minidump_file_writer-inl.h | 94 - .../r318/src/client/minidump_file_writer.cc | 251 - .../r318/src/client/minidump_file_writer.h | 250 - .../client/minidump_file_writer_unittest.cc | 174 - .../r318/src/client/solaris/handler/Makefile | 78 - .../solaris/handler/exception_handler.cc | 258 - .../solaris/handler/exception_handler.h | 201 - .../solaris/handler/exception_handler_test.cc | 119 - .../solaris/handler/minidump_generator.cc | 786 - .../solaris/handler/minidump_generator.h | 70 - .../client/solaris/handler/minidump_test.cc | 75 - .../src/client/solaris/handler/solaris_lwp.cc | 436 - .../src/client/solaris/handler/solaris_lwp.h | 160 - .../src/client/windows/breakpad_client.sln | 49 - .../windows/common/auto_critical_section.h | 63 - .../src/client/windows/common/ipc_protocol.h | 179 - .../windows/crash_generation/ReadMe.txt | 58 - .../windows/crash_generation/client_info.cc | 210 - .../windows/crash_generation/client_info.h | 170 - .../crash_generation/crash_generation.vcproj | 347 - .../crash_generation_client.cc | 337 - .../crash_generation_client.h | 159 - .../crash_generation_server.cc | 852 - .../crash_generation_server.h | 269 - .../crash_generation/minidump_generator.cc | 289 - .../crash_generation/minidump_generator.h | 121 - .../windows/handler/exception_handler.cc | 746 - .../windows/handler/exception_handler.h | 415 - .../windows/handler/exception_handler.vcproj | 323 - .../windows/sender/crash_report_sender.cc | 143 - .../windows/sender/crash_report_sender.h | 125 - .../windows/sender/crash_report_sender.vcproj | 307 - .../crash_generation_app/abstract_class.cc | 53 - .../crash_generation_app/abstract_class.h | 57 - .../crash_generation_app.cc | 510 - .../crash_generation_app.h | 35 - .../crash_generation_app.ico | Bin 23558 -> 0 bytes .../crash_generation_app.rc | 144 - .../crash_generation_app.sln | 26 - .../crash_generation_app.vcproj | 431 - .../tests/crash_generation_app/precompile.cc | 37 - .../tests/crash_generation_app/precompile.h | 90 - .../tests/crash_generation_app/resource.h | 73 - .../tests/crash_generation_app/small.ico | Bin 23558 -> 0 bytes .../r318/src/common/convert_UTF.c | 533 - .../r318/src/common/convert_UTF.h | 143 - .../r318/src/common/linux/dump_symbols.cc | 781 - .../r318/src/common/linux/dump_symbols.h | 48 - .../r318/src/common/linux/file_id.cc | 145 - .../r318/src/common/linux/file_id.h | 66 - .../r318/src/common/linux/guid_creator.cc | 82 - .../r318/src/common/linux/guid_creator.h | 48 - .../r318/src/common/linux/http_upload.cc | 185 - .../r318/src/common/linux/http_upload.h | 83 - .../r318/src/common/mac/HTTPMultipartUpload.h | 61 - .../r318/src/common/mac/HTTPMultipartUpload.m | 205 - .../r318/src/common/mac/dump_syms.h | 79 - .../r318/src/common/mac/dump_syms.mm | 1224 - .../src/common/mac/dwarf/bytereader-inl.h | 141 - .../r318/src/common/mac/dwarf/bytereader.cc | 62 - .../r318/src/common/mac/dwarf/bytereader.h | 132 - .../r318/src/common/mac/dwarf/dwarf2enums.h | 490 - .../r318/src/common/mac/dwarf/dwarf2reader.cc | 830 - .../r318/src/common/mac/dwarf/dwarf2reader.h | 393 - .../r318/src/common/mac/dwarf/functioninfo.cc | 240 - .../r318/src/common/mac/dwarf/functioninfo.h | 178 - .../src/common/mac/dwarf/line_state_machine.h | 61 - .../r318/src/common/mac/dwarf/types.h | 46 - .../AppKit/GTMCarbonEvent.h | 380 - .../AppKit/GTMCarbonEvent.m | 710 - .../AppKit/GTMCarbonEventTest.m | 367 - .../AppKit/GTMDelegatingTableColumn.h | 35 - .../AppKit/GTMDelegatingTableColumn.m | 42 - .../AppKit/GTMGetURLHandler.m | 310 - .../AppKit/GTMGetURLHandlerTest.m | 84 - .../AppKit/GTMHotKeyTextField.h | 127 - .../AppKit/GTMHotKeyTextField.m | 1024 - .../AppKit/GTMHotKeyTextFieldTest.m | 204 - .../AppKit/GTMLargeTypeWindow.h | 60 - .../AppKit/GTMLargeTypeWindow.m | 366 - .../AppKit/GTMLargeTypeWindowTest.m | 198 - .../AppKit/GTMLinearRGBShading.h | 76 - .../AppKit/GTMLinearRGBShading.m | 204 - .../AppKit/GTMLinearRGBShadingTest.m | 132 - .../AppKit/GTMLoginItems.h | 88 - .../AppKit/GTMLoginItems.m | 193 - .../AppKit/GTMLoginItemsTest.m | 137 - .../AppKit/GTMNSBezierPath+CGPath.h | 33 - .../AppKit/GTMNSBezierPath+CGPath.m | 70 - .../AppKit/GTMNSBezierPath+CGPathTest.m | 75 - .../AppKit/GTMNSBezierPath+RoundRect.h | 48 - .../AppKit/GTMNSBezierPath+RoundRect.m | 68 - .../AppKit/GTMNSBezierPath+RoundRectTest.m | 102 - .../AppKit/GTMNSBezierPath+Shading.h | 121 - .../AppKit/GTMNSBezierPath+Shading.m | 216 - .../AppKit/GTMNSBezierPath+ShadingTest.m | 177 - .../AppKit/GTMNSColor+Luminance.h | 65 - .../AppKit/GTMNSColor+Luminance.m | 153 - .../AppKit/GTMNSColor+LuminanceTest.m | 72 - .../AppKit/GTMNSImage+Scaling.h | 51 - .../AppKit/GTMNSImage+Scaling.m | 183 - .../AppKit/GTMNSImage+ScalingTest.m | 64 - .../AppKit/GTMNSWorkspace+Running.h | 92 - .../AppKit/GTMNSWorkspace+Running.m | 173 - .../AppKit/GTMNSWorkspace+RunningTest.m | 78 - .../AppKit/GTMShading.h | 41 - .../google-toolbox-for-mac/AppKit/GTMTheme.h | 78 - .../google-toolbox-for-mac/AppKit/GTMTheme.m | 390 - .../AppKit/GTMThemeTest.m | 67 - .../BuildScripts/BuildAllSDKs.sh | 116 - .../BuildingAndUsing.txt | 18 - .../externals/google-toolbox-for-mac/COPYING | 202 - .../DebugUtils/GTMDebugSelectorValidation.h | 100 - .../DebugUtils/GTMDebugThreadValidation.h | 55 - .../DebugUtils/GTMDebugThreadValidation.m | 38 - .../DebugUtils/GTMDebugThreadValidationTest.m | 110 - .../DebugUtils/GTMMethodCheck.h | 88 - .../DebugUtils/GTMMethodCheck.m | 163 - .../DebugUtils/GTMMethodCheckTest.m | 53 - .../Foundation/GTMAbstractDOListener.h | 222 - .../Foundation/GTMAbstractDOListener.m | 438 - .../Foundation/GTMAbstractDOListenerTest.m | 61 - .../Foundation/GTMBase64.h | 183 - .../Foundation/GTMBase64.m | 694 - .../Foundation/GTMBase64Test.m | 437 - .../Foundation/GTMCalculatedRange.h | 102 - .../Foundation/GTMCalculatedRange.m | 148 - .../Foundation/GTMCalculatedRangeTest.m | 101 - .../Foundation/GTMExceptionalInlines.h | 53 - .../Foundation/GTMExceptionalInlines.m | 56 - .../Foundation/GTMExceptionalInlinesTest.m | 71 - .../Foundation/GTMFileSystemKQueue.h | 78 - .../Foundation/GTMFileSystemKQueue.m | 259 - .../Foundation/GTMFileSystemKQueueTest.m | 394 - .../Foundation/GTMFourCharCode.h | 51 - .../Foundation/GTMFourCharCode.m | 98 - .../Foundation/GTMFourCharCodeTest.m | 82 - .../Foundation/GTMGarbageCollection.h | 72 - .../Foundation/GTMGeometryUtils.h | 452 - .../Foundation/GTMGeometryUtils.m | 108 - .../Foundation/GTMGeometryUtilsTest.m | 331 - .../Foundation/GTMHTTPFetcher.h | 22 - .../Foundation/GTMHTTPServer.h | 137 - .../Foundation/GTMHTTPServer.m | 595 - .../Foundation/GTMHTTPServerTest.m | 574 - .../Foundation/GTMLightweightProxy.h | 46 - .../Foundation/GTMLightweightProxy.m | 114 - .../Foundation/GTMLightweightProxyTest.m | 85 - .../Foundation/GTMLogger+ASL.h | 87 - .../Foundation/GTMLogger+ASL.m | 126 - .../Foundation/GTMLogger+ASLTest.m | 90 - .../Foundation/GTMLogger.h | 458 - .../Foundation/GTMLogger.m | 445 - .../Foundation/GTMLoggerRingBufferWriter.h | 97 - .../Foundation/GTMLoggerRingBufferWriter.m | 248 - .../GTMLoggerRingBufferWriterTest.m | 363 - .../Foundation/GTMLoggerTest.m | 451 - .../GTMNSAppleEvent+HandlerTest.applescript | 60 - .../GTMNSAppleEventDescriptor+Foundation.h | 100 - .../GTMNSAppleEventDescriptor+Foundation.m | 536 - ...GTMNSAppleEventDescriptor+FoundationTest.m | 643 - .../GTMNSAppleEventDescriptor+Handler.h | 40 - .../GTMNSAppleEventDescriptor+Handler.m | 130 - .../GTMNSAppleEventDescriptor+HandlerTest.m | 70 - .../Foundation/GTMNSAppleScript+Handler.h | 126 - .../Foundation/GTMNSAppleScript+Handler.m | 518 - .../Foundation/GTMNSAppleScript+HandlerTest.m | 506 - .../Foundation/GTMNSArray+Merge.h | 47 - .../Foundation/GTMNSArray+Merge.m | 111 - .../Foundation/GTMNSArray+MergeTest.m | 219 - .../Foundation/GTMNSData+zlib.h | 84 - .../Foundation/GTMNSData+zlib.m | 267 - .../Foundation/GTMNSData+zlibTest.m | 360 - .../Foundation/GTMNSDictionary+URLArguments.h | 30 - .../Foundation/GTMNSDictionary+URLArguments.m | 40 - .../GTMNSDictionary+URLArgumentsTest.m | 54 - .../Foundation/GTMNSEnumerator+Filter.h | 53 - .../Foundation/GTMNSEnumerator+Filter.m | 179 - .../Foundation/GTMNSEnumerator+FilterTest.m | 133 - .../Foundation/GTMNSFileManager+Carbon.h | 60 - .../Foundation/GTMNSFileManager+Carbon.m | 99 - .../Foundation/GTMNSFileManager+CarbonTest.m | 69 - .../Foundation/GTMNSFileManager+Path.h | 75 - .../Foundation/GTMNSFileManager+Path.m | 101 - .../Foundation/GTMNSFileManager+PathTest.m | 249 - .../GTMNSObject+KeyValueObserving.h | 70 - .../GTMNSObject+KeyValueObserving.m | 350 - .../GTMNSObject+KeyValueObservingTest.m | 106 - .../Foundation/GTMNSString+FindFolder.h | 55 - .../Foundation/GTMNSString+FindFolder.m | 78 - .../Foundation/GTMNSString+FindFolderTest.m | 77 - .../Foundation/GTMNSString+HTML.h | 66 - .../Foundation/GTMNSString+HTML.m | 522 - .../Foundation/GTMNSString+HTMLTest.m | 242 - .../Foundation/GTMNSString+Replace.h | 45 - .../Foundation/GTMNSString+Replace.m | 53 - .../Foundation/GTMNSString+ReplaceTest.m | 59 - .../Foundation/GTMNSString+URLArguments.h | 41 - .../Foundation/GTMNSString+URLArguments.m | 45 - .../Foundation/GTMNSString+URLArgumentsTest.m | 94 - .../Foundation/GTMNSString+XML.h | 51 - .../Foundation/GTMNSString+XML.m | 182 - .../Foundation/GTMNSString+XMLTest.m | 93 - .../Foundation/GTMObjC2Runtime.h | 106 - .../Foundation/GTMObjC2Runtime.m | 156 - .../Foundation/GTMObjC2RuntimeTest.m | 424 - .../Foundation/GTMObjectSingleton.h | 71 - .../Foundation/GTMPath.h | 132 - .../Foundation/GTMPath.m | 156 - .../Foundation/GTMPathTest.m | 236 - .../GTMProgressMonitorInputStream.h | 22 - .../Foundation/GTMRegex.h | 379 - .../Foundation/GTMRegex.m | 817 - .../Foundation/GTMRegexTest.m | 1245 - .../Foundation/GTMSQLite.h | 713 - .../Foundation/GTMSQLite.m | 2012 -- .../Foundation/GTMSQLiteTest.m | 1813 -- .../Foundation/GTMScriptRunner.h | 134 - .../Foundation/GTMScriptRunner.m | 254 - .../Foundation/GTMScriptRunnerTest.m | 423 - .../Foundation/GTMSignalHandler.h | 73 - .../Foundation/GTMSignalHandler.m | 210 - .../Foundation/GTMSignalHandlerTest.m | 143 - .../Foundation/GTMStackTrace.h | 105 - .../Foundation/GTMStackTrace.m | 358 - .../Foundation/GTMStackTraceTest.m | 163 - .../Foundation/GTMSystemVersion.h | 86 - .../Foundation/GTMSystemVersion.m | 232 - .../Foundation/GTMSystemVersionTest.m | 93 - .../Foundation/GTMTransientRootPortProxy.h | 50 - .../Foundation/GTMTransientRootPortProxy.m | 80 - .../GTMTransientRootPortProxyTest.m | 182 - .../Foundation/GTMTransientRootProxy.h | 113 - .../Foundation/GTMTransientRootProxy.m | 229 - .../Foundation/GTMTransientRootProxyTest.m | 228 - .../Foundation/GTMValidatingContainers.h | 196 - .../Foundation/GTMValidatingContainers.m | 490 - .../Foundation/GTMValidatingContainersTest.m | 378 - .../google-toolbox-for-mac/GTM-Info.plist | 20 - .../GTM.xcodeproj/project.pbxproj | 2680 -- .../google-toolbox-for-mac/GTMDefines.h | 241 - .../google-toolbox-for-mac/GTM_Prefix.pch | 37 - .../GTMiPhone-Info.plist | 24 - .../GTMiPhone.xcodeproj/project.pbxproj | 780 - .../google-toolbox-for-mac/ReleaseNotes.txt | 399 - .../AppleScript.xcodeproj/project.pbxproj | 355 - .../English.lproj/InfoPlist.strings | Bin 452 -> 0 bytes .../AppleScript/GetMetadataForFile.m | 121 - .../SpotlightPlugins/AppleScript/Info.plist | 74 - .../SpotlightPlugins/AppleScript/PluginID.h | 19 - .../SpotlightPlugins/AppleScript/ReadMe.rtf | 38 - .../AppleScript/TestData/test.scpt.tar | Bin 10240 -> 0 bytes .../SpotlightPlugins/AppleScript/schema.xml | 38 - .../SpotlightPlugins/Common/main.c | 204 - .../Installer/ApplescriptInstallerPost.sh | 17 - .../ApplescriptInstallerPreflight.sh | 19 - .../project.pbxproj | 275 - .../InterfaceBuilderInstallerPost.sh | 17 - .../SpotlightPlugins/Installer/License.rtf | 13 - .../SpotlightPlugins/Installer/Welcome.rtf | 11 - .../Installer/XcodeProjectInstallerPost.sh | 17 - .../English.lproj/InfoPlist.strings | Bin 480 -> 0 bytes .../InterfaceBuilder/GetMetadataForFile.m | 208 - .../InterfaceBuilder/Info.plist | 51 - .../project.pbxproj | 339 - .../InterfaceBuilder/PluginID.h | 19 - .../InterfaceBuilder/ReadMe.rtf | 34 - .../TestData/XibCarbonTest.xib | 3106 --- .../TestData/XibCocoaTest.xib | 3075 --- .../English.lproj/InfoPlist.strings | Bin 472 -> 0 bytes .../XcodeProject/GetMetadataForFile.m | 85 - .../SpotlightPlugins/XcodeProject/Info.plist | 49 - .../SpotlightPlugins/XcodeProject/PluginID.h | 19 - .../SpotlightPlugins/XcodeProject/ReadMe.rtf | 31 - .../TestData/test.xcodeproj/project.pbxproj | 277 - .../XcodeProject.xcodeproj/project.pbxproj | 339 - .../SpotlightPlugins/XcodeProject/schema.xml | 31 - .../TigerGcov/libgcov_readme.html | 11 - .../UnitTest-Info.plist | 20 - .../UnitTesting/GTMAppKit+UnitTesting.h | 144 - .../UnitTesting/GTMAppKit+UnitTesting.m | 341 - .../UnitTesting/GTMCALayer+UnitTesting.h | 46 - .../UnitTesting/GTMCALayer+UnitTesting.m | 90 - .../UnitTesting/GTMDevLogUnitTestingBridge.m | 44 - .../UnitTesting/GTMIPhoneUnitTestDelegate.h | 38 - .../UnitTesting/GTMIPhoneUnitTestDelegate.m | 206 - .../UnitTesting/GTMIPhoneUnitTestMain.m | 33 - .../GTMNSObject+BindingUnitTesting.h | 120 - .../GTMNSObject+BindingUnitTesting.m | 568 - .../UnitTesting/GTMNSObject+UnitTesting.h | 417 - .../UnitTesting/GTMNSObject+UnitTesting.m | 982 - .../UnitTesting/GTMSenTestCase.h | 1004 - .../UnitTesting/GTMSenTestCase.m | 362 - .../UnitTesting/GTMTestHTTPServer.h | 39 - .../UnitTesting/GTMTestHTTPServer.m | 166 - .../UnitTesting/GTMTestTimer.h | 125 - .../UnitTesting/GTMTestTimerTest.m | 56 - .../UnitTesting/GTMUIKit+UnitTesting.h | 128 - .../UnitTesting/GTMUIKit+UnitTesting.m | 122 - .../UnitTesting/GTMUIKit+UnitTestingTest.m | 65 - .../GTMUIUnitTestingHarness/Info.plist | 71 - .../GTMUIUnitTestingHarness/main.m | 27 - .../UnitTesting/GTMUIViewUnitTestingTest.png | Bin 3214 -> 0 bytes .../UnitTesting/GTMUnitTestDevLog.h | 76 - .../UnitTesting/GTMUnitTestDevLog.m | 279 - .../UnitTesting/GTMUnitTestingBindingTest.m | 116 - .../UnitTesting/GTMUnitTestingTest.h | 29 - .../UnitTesting/GTMUnitTestingTest.m | 252 - .../UnitTesting/GTMUnitTestingUtilities.h | 91 - .../UnitTesting/GTMUnitTestingUtilities.m | 310 - .../UnitTesting/RunIPhoneUnitTest.sh | 108 - .../UnitTesting/RunMacOSUnitTests.sh | 213 - .../GTMUIViewUnitTestingTest.gtmUTState | 33 - .../TestData/GTMUIViewUnitTestingTest.png | Bin 3214 -> 0 bytes .../TestData/GTMUnitTestingImage.10.6.0.tiff | Bin 21014 -> 0 bytes .../TestData/GTMUnitTestingImage.gtmUTState | 30 - .../TestData/GTMUnitTestingImage.tiff | Bin 67190 -> 0 bytes .../TestData/GTMUnitTestingTestApp.gtmUTState | 1591 -- .../TestData/GTMUnitTestingView.tiff | Bin 161670 -> 0 bytes .../TestData/GTMUnitTestingWindow.10.5.6.tiff | Bin 21176 -> 0 bytes .../TestData/GTMUnitTestingWindow.10.6.0.tiff | Bin 21380 -> 0 bytes .../TestData/GTMUnitTestingWindow.gtmUTState | 291 - .../TestData/GTMUnitTestingWindow.tiff | Bin 21226 -> 0 bytes .../Project/DebugLeopardOrLater.xcconfig | 37 - .../Project/DebugSnowLeopardOrLater.xcconfig | 37 - .../Project/DebugTigerOrLater.xcconfig | 37 - .../XcodeConfig/Project/DebugiPhone.xcconfig | 26 - .../Project/DebugiPhone20.xcconfig | 37 - .../Project/DebugiPhone21.xcconfig | 37 - .../Project/ReleaseLeopardOrLater.xcconfig | 37 - .../ReleaseSnowLeopardOrLater.xcconfig | 37 - .../Project/ReleaseTigerOrLater.xcconfig | 37 - .../Project/ReleaseiPhone.xcconfig | 26 - .../Project/ReleaseiPhone20.xcconfig | 37 - .../Project/ReleaseiPhone21.xcconfig | 37 - .../XcodeConfig/Target/DebugUnittest.xcconfig | 29 - .../Target/LoadableBundle.xcconfig | 30 - .../Target/LoadableBundleGCSupported.xcconfig | 30 - .../Target/ReleaseUnittest.xcconfig | 37 - .../XcodeConfig/Target/SharedLibrary.xcconfig | 29 - .../Target/SharedLibraryGCSupported.xcconfig | 30 - .../XcodeConfig/Target/StaticLibrary.xcconfig | 30 - .../Target/StaticLibraryGCSupported.xcconfig | 30 - .../subconfig/CodeCoverage.xcconfig | 25 - .../subconfig/CodeCoverageStatic.xcconfig | 24 - .../XcodeConfig/subconfig/Debug.xcconfig | 47 - .../subconfig/GCSupported.xcconfig | 23 - .../XcodeConfig/subconfig/GTMMerge.xcconfig | 42 - .../XcodeConfig/subconfig/General.xcconfig | 172 - .../subconfig/LeopardOrLater.xcconfig | 25 - .../XcodeConfig/subconfig/Release.xcconfig | 45 - .../subconfig/SnowLeopardOrLater.xcconfig | 26 - .../subconfig/TigerOrLater.xcconfig | 25 - .../XcodeConfig/subconfig/Unittest.xcconfig | 33 - .../XcodeConfig/subconfig/iPhone20.xcconfig | 24 - .../XcodeConfig/subconfig/iPhone21.xcconfig | 24 - .../XcodeConfig/xcconfigs-readme.txt | 53 - .../iPhone/GTMABAddressBook.h | 328 - .../iPhone/GTMABAddressBook.m | 903 - .../iPhone/GTMABAddressBook.strings | Bin 1428 -> 0 bytes .../iPhone/GTMABAddressBookTest.m | 608 - .../iPhone/GTMUIFont+LineHeight.h | 24 - .../iPhone/GTMUIFont+LineHeight.m | 25 - .../iPhone/GTMUIFont+LineHeightTest.m | 40 - .../r318/src/common/mac/file_id.cc | 101 - .../r318/src/common/mac/file_id.h | 78 - .../r318/src/common/mac/macho_id.cc | 366 - .../r318/src/common/mac/macho_id.h | 124 - .../r318/src/common/mac/macho_utilities.cc | 89 - .../r318/src/common/mac/macho_utilities.h | 90 - .../r318/src/common/mac/macho_walker.cc | 243 - .../r318/src/common/mac/macho_walker.h | 106 - .../r318/src/common/mac/string_utilities.cc | 84 - .../r318/src/common/mac/string_utilities.h | 52 - .../google-breakpad/r318/src/common/md5.c | 246 - .../google-breakpad/r318/src/common/md5.h | 31 - .../r318/src/common/solaris/dump_symbols.cc | 681 - .../r318/src/common/solaris/dump_symbols.h | 49 - .../r318/src/common/solaris/file_id.cc | 197 - .../r318/src/common/solaris/file_id.h | 66 - .../r318/src/common/solaris/guid_creator.cc | 84 - .../r318/src/common/solaris/guid_creator.h | 50 - .../r318/src/common/solaris/message_output.h | 54 - .../r318/src/common/string_conversion.cc | 155 - .../r318/src/common/string_conversion.h | 66 - .../r318/src/common/windows/guid_string.cc | 76 - .../r318/src/common/windows/guid_string.h | 58 - .../r318/src/common/windows/http_upload.cc | 393 - .../r318/src/common/windows/http_upload.h | 125 - .../common/windows/pdb_source_line_writer.cc | 800 - .../common/windows/pdb_source_line_writer.h | 163 - .../src/common/windows/string_utils-inl.h | 139 - .../r318/src/common/windows/string_utils.cc | 92 - thirdparty/google-breakpad/r318/src/config.h | 56 - .../google-breakpad/r318/src/config.h.in | 55 - .../google_breakpad/common/breakpad_types.h | 83 - .../common/minidump_cpu_amd64.h | 231 - .../google_breakpad/common/minidump_cpu_ppc.h | 163 - .../common/minidump_cpu_ppc64.h | 129 - .../common/minidump_cpu_sparc.h | 158 - .../google_breakpad/common/minidump_cpu_x86.h | 172 - .../common/minidump_exception_linux.h | 85 - .../common/minidump_exception_mac.h | 193 - .../common/minidump_exception_solaris.h | 94 - .../common/minidump_exception_win32.h | 102 - .../google_breakpad/common/minidump_format.h | 721 - .../google_breakpad/common/minidump_size.h | 107 - .../processor/basic_source_line_resolver.h | 114 - .../google_breakpad/processor/call_stack.h | 77 - .../google_breakpad/processor/code_module.h | 94 - .../google_breakpad/processor/code_modules.h | 98 - .../google_breakpad/processor/memory_region.h | 76 - .../src/google_breakpad/processor/minidump.h | 904 - .../processor/minidump_processor.h | 94 - .../google_breakpad/processor/process_state.h | 115 - .../source_line_resolver_interface.h | 82 - .../google_breakpad/processor/stack_frame.h | 84 - .../processor/stack_frame_cpu.h | 153 - .../google_breakpad/processor/stackwalker.h | 140 - .../processor/symbol_supplier.h | 82 - .../google_breakpad/processor/system_info.h | 97 - .../r318/src/processor/.deps/.dirstamp | 0 .../processor/.deps/address_map_unittest.Po | 1 - .../processor/.deps/basic_code_modules.Plo | 385 - .../.deps/basic_source_line_resolver.Plo | 436 - .../basic_source_line_resolver_unittest.Po | 1 - .../r318/src/processor/.deps/call_stack.Plo | 301 - .../.deps/contained_range_map_unittest.Po | 1 - .../r318/src/processor/.deps/logging.Plo | 365 - .../r318/src/processor/.deps/minidump.Plo | 438 - .../r318/src/processor/.deps/minidump_dump.Po | 420 - .../processor/.deps/minidump_processor.Plo | 441 - .../.deps/minidump_processor_unittest.Po | 1 - .../src/processor/.deps/minidump_stackwalk.Po | 469 - .../src/processor/.deps/pathname_stripper.Plo | 280 - .../.deps/pathname_stripper_unittest.Po | 1 - .../.deps/postfix_evaluator_unittest.Po | 1 - .../src/processor/.deps/process_state.Plo | 308 - .../src/processor/.deps/range_map_unittest.Po | 1 - .../.deps/simple_symbol_supplier.Plo | 395 - .../r318/src/processor/.deps/stackwalker.Plo | 454 - .../src/processor/.deps/stackwalker_amd64.Plo | 414 - .../src/processor/.deps/stackwalker_ppc.Plo | 414 - .../processor/.deps/stackwalker_selftest.Po | 1 - .../src/processor/.deps/stackwalker_sparc.Plo | 415 - .../src/processor/.deps/stackwalker_x86.Plo | 446 - .../r318/src/processor/.dirstamp | 0 .../r318/src/processor/address_map-inl.h | 92 - .../r318/src/processor/address_map.h | 80 - .../src/processor/address_map_unittest.cc | 196 - .../r318/src/processor/basic_code_module.h | 95 - .../r318/src/processor/basic_code_modules.cc | 122 - .../r318/src/processor/basic_code_modules.h | 85 - .../processor/basic_source_line_resolver.cc | 714 - .../basic_source_line_resolver_unittest.cc | 212 - .../r318/src/processor/call_stack.cc | 53 - .../src/processor/contained_range_map-inl.h | 197 - .../r318/src/processor/contained_range_map.h | 145 - .../processor/contained_range_map_unittest.cc | 263 - .../r318/src/processor/linked_ptr.h | 193 - .../r318/src/processor/logging.cc | 104 - .../r318/src/processor/logging.h | 153 - .../r318/src/processor/minidump.cc | 3679 --- .../r318/src/processor/minidump_dump | Bin 246444 -> 0 bytes .../r318/src/processor/minidump_dump.cc | 130 - .../r318/src/processor/minidump_dump_test | 36 - .../r318/src/processor/minidump_processor.cc | 992 - .../processor/minidump_processor_unittest.cc | 239 - .../r318/src/processor/minidump_stackwalk | Bin 458288 -> 0 bytes .../r318/src/processor/minidump_stackwalk.cc | 508 - .../minidump_stackwalk_machine_readable_test | 37 - .../src/processor/minidump_stackwalk_test | 37 - .../r318/src/processor/pathname_stripper.cc | 56 - .../r318/src/processor/pathname_stripper.h | 53 - .../processor/pathname_stripper_unittest.cc | 85 - .../src/processor/postfix_evaluator-inl.h | 282 - .../r318/src/processor/postfix_evaluator.h | 158 - .../processor/postfix_evaluator_unittest.cc | 303 - .../r318/src/processor/process_state.cc | 63 - .../r318/src/processor/range_map-inl.h | 210 - .../r318/src/processor/range_map.h | 126 - .../r318/src/processor/range_map_unittest.cc | 494 - .../r318/src/processor/scoped_ptr.h | 335 - .../src/processor/simple_symbol_supplier.cc | 157 - .../src/processor/simple_symbol_supplier.h | 125 - .../r318/src/processor/stack_frame_info.h | 126 - .../r318/src/processor/stackwalker.cc | 193 - .../r318/src/processor/stackwalker_amd64.cc | 131 - .../r318/src/processor/stackwalker_amd64.h | 80 - .../r318/src/processor/stackwalker_ppc.cc | 146 - .../r318/src/processor/stackwalker_ppc.h | 81 - .../src/processor/stackwalker_selftest.cc | 425 - .../src/processor/stackwalker_selftest_sol.s | 111 - .../r318/src/processor/stackwalker_sparc.cc | 139 - .../r318/src/processor/stackwalker_sparc.h | 86 - .../r318/src/processor/stackwalker_x86.cc | 432 - .../r318/src/processor/stackwalker_x86.h | 82 - .../r318/src/processor/testdata/minidump2.dmp | Bin 11317 -> 0 bytes .../src/processor/testdata/minidump2.dump.out | 705 - .../minidump2.stackwalk.machine_readable.out | 21 - .../testdata/minidump2.stackwalk.out | 35 - .../r318/src/processor/testdata/module1.out | 19 - .../r318/src/processor/testdata/module2.out | 17 - .../src/processor/testdata/module3_bad.out | 3 - .../src/processor/testdata/module4_bad.out | 5 - .../kernel32.sym | 5787 ---- .../test_app.sym | 22151 ---------------- .../r318/src/processor/testdata/test_app.cc | 69 - thirdparty/google-breakpad/r318/src/stamp-h1 | 1 - .../r318/src/tools/linux/dump_syms/Makefile | 30 - .../src/tools/linux/dump_syms/dump_syms.cc | 52 - .../r318/src/tools/linux/symupload/Makefile | 24 - .../tools/linux/symupload/minidump_upload.cc | 144 - .../src/tools/linux/symupload/sym_upload.cc | 216 - .../tools/mac/crash_report/crash_report.mm | 362 - .../julienbachmann.mode1v3 | 1382 - .../julienbachmann.pbxuser | 102 - .../crash_report.xcodeproj/project.pbxproj | 450 - .../crash_report/on_demand_symbol_supplier.h | 97 - .../crash_report/on_demand_symbol_supplier.mm | 267 - .../julienbachmann.mode1v3 | 1395 - .../julienbachmann.pbxuser | 181 - .../dump_syms.xcodeproj/project.pbxproj | 280 - .../src/tools/mac/dump_syms/dump_syms_tool.m | 142 - .../src/tools/mac/dump_syms/dump_syms_tool.mm | 142 - .../src/tools/mac/symupload/minidump_upload.m | 135 - .../r318/src/tools/mac/symupload/symupload.m | 190 - .../symupload.xcodeproj/project.pbxproj | 303 - .../r318/src/tools/solaris/dump_syms/Makefile | 64 - .../src/tools/solaris/dump_syms/dump_syms.cc | 54 - .../tools/solaris/dump_syms/run_regtest.sh | 51 - .../dump_syms/testdata/dump_syms_regtest.cc | 64 - .../testdata/dump_syms_regtest.stabs | 129 - .../dump_syms/testdata/dump_syms_regtest.sym | 33 - .../converter/ms_symbol_server_converter.cc | 522 - .../converter/ms_symbol_server_converter.h | 201 - .../ms_symbol_server_converter.vcproj | 319 - .../src/tools/windows/dump_syms/dump_syms.cc | 61 - .../tools/windows/dump_syms/dump_syms.vcproj | 222 - .../tools/windows/dump_syms/run_regtest.sh | 53 - .../dump_syms/testdata/dump_syms_regtest.cc | 65 - .../dump_syms/testdata/dump_syms_regtest.pdb | Bin 846848 -> 0 bytes .../dump_syms/testdata/dump_syms_regtest.sym | 14097 ---------- .../src/tools/windows/symupload/symupload.cc | 202 - .../tools/windows/symupload/symupload.vcproj | 231 - 660 files changed, 184391 deletions(-) delete mode 100644 thirdparty/google-breakpad/r318/bin/macx/dump_syms delete mode 100644 thirdparty/google-breakpad/r318/bin/win32/dump_syms.exe delete mode 100644 thirdparty/google-breakpad/r318/breakpad.pro delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_exc_server.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_nlist_64.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/dynamic_images.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/protected_memory_allocator.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/auto_critical_section.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/ipc_protocol.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/client_info.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_client.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_server.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/sender/crash_report_sender.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/convert_UTF.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/md5.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/string_conversion.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/guid_string.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/http_upload.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/pdb_source_line_writer.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/string_utils-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/breakpad_types.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_amd64.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc64.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_sparc.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_x86.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_linux.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_mac.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_solaris.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_win32.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_format.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_size.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/basic_source_line_resolver.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/call_stack.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_module.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_modules.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/memory_region.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump_processor.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/process_state.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/source_line_resolver_interface.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame_cpu.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stackwalker.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/symbol_supplier.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/system_info.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_module.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_modules.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/linked_ptr.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/logging.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/pathname_stripper.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/scoped_ptr.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/simple_symbol_supplier.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/stack_frame_info.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_amd64.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_ppc.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_sparc.h delete mode 100644 thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_x86.h delete mode 100644 thirdparty/google-breakpad/r318/lib/macx/libbreakpad.a delete mode 100644 thirdparty/google-breakpad/r318/lib/win32/breakpad.lib delete mode 100644 thirdparty/google-breakpad/r318/lib/win32/dbreakpad.lib delete mode 100644 thirdparty/google-breakpad/r318/readme.txt delete mode 100644 thirdparty/google-breakpad/r318/release.vc9.bat delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/Makefile delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.c delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.mode1v3 delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.pbxuser delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests32-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests64-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/obj-cTestCases-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.mm delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data delete mode 100644 thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym delete mode 100644 thirdparty/google-breakpad/r318/src/client/minidump_file_writer-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/minidump_file_writer.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/minidump_file_writer.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/minidump_file_writer_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/Makefile delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_test.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/breakpad_client.sln delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/common/auto_critical_section.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/common/ipc_protocol.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/ReadMe.txt delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.ico delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.rc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.sln delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.cc delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/resource.h delete mode 100644 thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/small.ico delete mode 100644 thirdparty/google-breakpad/r318/src/common/convert_UTF.c delete mode 100644 thirdparty/google-breakpad/r318/src/common/convert_UTF.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/file_id.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/file_id.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/guid_creator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/guid_creator.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/http_upload.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/linux/http_upload.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dump_syms.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dump_syms.mm delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2enums.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/line_state_machine.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/dwarf/types.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEventTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandler.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandlerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextFieldTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindowTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShadingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItemsTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPathTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRectTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+ShadingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+LuminanceTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+ScalingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+RunningTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMShading.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMThemeTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildScripts/BuildAllSDKs.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildingAndUsing.txt delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/COPYING delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugSelectorValidation.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidationTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheckTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListenerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64Test.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRangeTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlinesTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueueTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCodeTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGarbageCollection.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtilsTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPFetcher.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxyTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASLTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriterTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEvent+HandlerTest.applescript delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+HandlerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+MergeTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlibTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArgumentsTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+FilterTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+CarbonTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+PathTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObservingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolderTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTMLTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+ReplaceTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArgumentsTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XMLTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2RuntimeTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjectSingleton.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPathTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMProgressMonitorInputStream.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegexTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLiteTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunnerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandlerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTraceTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersionTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxyTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxyTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainersTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMDefines.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM_Prefix.pch delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/ReleaseNotes.txt delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/AppleScript.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/English.lproj/InfoPlist.strings delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/GetMetadataForFile.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/PluginID.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/ReadMe.rtf delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/TestData/test.scpt.tar delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/schema.xml delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Common/main.c delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/License.rtf delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/Welcome.rtf delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/English.lproj/InfoPlist.strings delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/GetMetadataForFile.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/InterfaceBuilder.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/PluginID.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/ReadMe.rtf delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCarbonTest.xib delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCocoaTest.xib delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/English.lproj/InfoPlist.strings delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/GetMetadataForFile.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/PluginID.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/ReadMe.rtf delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/TestData/test.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/XcodeProject.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/schema.xml delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/TigerGcov/libgcov_readme.html delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTest-Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMDevLogUnitTestingBridge.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestMain.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimer.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimerTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTestingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/Info.plist delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/main.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIViewUnitTestingTest.png delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingBindingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunMacOSUnitTests.sh delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.png delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.10.6.0.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingView.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.10.6.0.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.tiff delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugLeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugSnowLeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugTigerOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone20.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone21.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseLeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseSnowLeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseTigerOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone20.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone21.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/DebugUnittest.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundle.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundleGCSupported.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/ReleaseUnittest.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibrary.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibraryGCSupported.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibrary.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibraryGCSupported.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverage.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverageStatic.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Debug.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GCSupported.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GTMMerge.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/General.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/LeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Release.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/SnowLeopardOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/TigerOrLater.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Unittest.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone20.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone21.xcconfig delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/xcconfigs-readme.txt delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.strings delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBookTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeightTest.m delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/file_id.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/file_id.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_id.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_id.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_walker.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/macho_walker.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/string_utilities.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/mac/string_utilities.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/md5.c delete mode 100644 thirdparty/google-breakpad/r318/src/common/md5.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/file_id.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/file_id.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/solaris/message_output.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/string_conversion.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/string_conversion.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/guid_string.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/guid_string.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/http_upload.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/http_upload.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.cc delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/string_utils-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/common/windows/string_utils.cc delete mode 100644 thirdparty/google-breakpad/r318/src/config.h delete mode 100644 thirdparty/google-breakpad/r318/src/config.h.in delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/breakpad_types.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_amd64.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc64.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_sparc.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_x86.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_linux.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_mac.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_solaris.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_win32.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_format.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_size.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/basic_source_line_resolver.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/call_stack.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_module.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_modules.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/memory_region.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump_processor.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/process_state.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/source_line_resolver_interface.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame_cpu.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/stackwalker.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/symbol_supplier.h delete mode 100644 thirdparty/google-breakpad/r318/src/google_breakpad/processor/system_info.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/.dirstamp delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/address_map_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/basic_code_modules.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/call_stack.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/contained_range_map_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/logging.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/minidump.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/minidump_dump.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/minidump_stackwalk.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/postfix_evaluator_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/process_state.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/range_map_unittest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/simple_symbol_supplier.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_amd64.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_ppc.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_selftest.Po delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_sparc.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_x86.Plo delete mode 100644 thirdparty/google-breakpad/r318/src/processor/.dirstamp delete mode 100644 thirdparty/google-breakpad/r318/src/processor/address_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/address_map.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/address_map_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/basic_code_module.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/basic_code_modules.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/basic_code_modules.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/call_stack.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/contained_range_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/contained_range_map.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/contained_range_map_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/linked_ptr.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/logging.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/logging.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_dump delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_dump.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_dump_test delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_processor.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_processor_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_machine_readable_test delete mode 100644 thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_test delete mode 100644 thirdparty/google-breakpad/r318/src/processor/pathname_stripper.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/pathname_stripper.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/pathname_stripper_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/postfix_evaluator-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/postfix_evaluator.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/postfix_evaluator_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/process_state.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/range_map-inl.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/range_map.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/range_map_unittest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/scoped_ptr.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stack_frame_info.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest_sol.s delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.cc delete mode 100644 thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.h delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dmp delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dump.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.machine_readable.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/module1.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/module2.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/module3_bad.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/module4_bad.out delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym delete mode 100644 thirdparty/google-breakpad/r318/src/processor/testdata/test_app.cc delete mode 100644 thirdparty/google-breakpad/r318/src/stamp-h1 delete mode 100644 thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/Makefile delete mode 100644 thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/dump_syms.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/linux/symupload/Makefile delete mode 100644 thirdparty/google-breakpad/r318/src/tools/linux/symupload/minidump_upload.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/linux/symupload/sym_upload.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.mm delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.mode1v3 delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.pbxuser delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.h delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.mm delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.mode1v3 delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.pbxuser delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.m delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.mm delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/symupload/minidump_upload.m delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.m delete mode 100644 thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/Makefile delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/dump_syms.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/run_regtest.sh delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs delete mode 100644 thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.h delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.vcproj delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/run_regtest.sh delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.cc delete mode 100644 thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.vcproj diff --git a/thirdparty/google-breakpad/r318/bin/macx/dump_syms b/thirdparty/google-breakpad/r318/bin/macx/dump_syms deleted file mode 100644 index bc6676978557e0cc02d518e1c2f908ed74cdfeb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430400 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 z 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 OR%KK9Y`J!Eoc|A3JqqXm diff --git a/thirdparty/google-breakpad/r318/bin/win32/dump_syms.exe b/thirdparty/google-breakpad/r318/bin/win32/dump_syms.exe deleted file mode 100644 index 79e1b7f7bb11019beef63be8b66dd503ac72f9a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 CO!YGW diff --git a/thirdparty/google-breakpad/r318/breakpad.pro b/thirdparty/google-breakpad/r318/breakpad.pro deleted file mode 100644 index 8e1810a6..00000000 --- a/thirdparty/google-breakpad/r318/breakpad.pro +++ /dev/null @@ -1,315 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) Fri Mar 13 16:41:05 2009 -###################################################################### - -TEMPLATE = lib -CONFIG += staticlib debug_and_release - -BUILD_DIR = build -CONFIG(debug, debug|release) { - BUILD_DIR = $$BUILD_DIR/debug - mac: TARGET = $$join(TARGET,,,_debug) - win32: TARGET = $$join(TARGET,,d) -} -CONFIG(release, debug|release) { - BUILD_DIR = $$BUILD_DIR/release - CONFIG += warn_off -} - -BREAKPAD_DIR = "$$[UNIBOARD_DIR]/thirdparty/google-breakpad/r318" -headersHandlerMac.path = "$$BREAKPAD_DIR/include/google_breakpad/client/mac/handler" -headersHandlerMac.files = "src/client/mac/handler/*.h" - -headersHandlerWin.path = "$$BREAKPAD_DIR/include/google_breakpad/client/windows/handler" -headersHandlerWin.files = "src/client/windows/handler/*.h" - -headersClient.path = "$$BREAKPAD_DIR/include/google_breakpad/client" -headersClient.files = "src/client/*.h" - -headersClientCommonWin.path = "$$BREAKPAD_DIR/include/google_breakpad/client/windows/common" -headersClientCommonWin.files = "src/client/windows/common/*.h" - -headersClientCrashGenerationWin.path = "$$BREAKPAD_DIR/include/google_breakpad/client/windows/crash_generation" -headersClientCrashGenerationWin.files = "src/client/windows/crash_generation/*.h" - -headersClientSenderWin.path = "$$BREAKPAD_DIR/include/google_breakpad/client/windows/sender" -headersClientSenderWin.files = "src/client/windows/sender/*.h" - -headersCommon.path = "$$BREAKPAD_DIR/include/google_breakpad/common" -headersCommon.files = "src/common/*.h" - -headersCommonWin.path = "$$BREAKPAD_DIR/include/google_breakpad/common/windows" -headersCommonWin.files = "src/common/windows/*.h" - -headersGbCommon.path = "$$BREAKPAD_DIR/include/google_breakpad/google_breakpad/common" -headersGbCommon.files = "src/google_breakpad/common/*.h" - -headersGbProcessor.path = "$$BREAKPAD_DIR/include/google_breakpad/google_breakpad/processor" -headersGbProcessor.files = "src/google_breakpad/processor/*.h" - -headersProcessor.path = "$$BREAKPAD_DIR/include/google_breakpad/processor" -headersProcessor.files = "src/processor/*.h" - -INSTALLS += "headersHandlerMac" "headersHandlerWin" "headersClient" "headersClientCommonWin" "headersCommonWin"\ - "headersClientCrashGenerationWin" "headersClientSenderWin" "headersCommon" "headersGbCommon" "headersGbProcessor" "headersProcessor" - -INCLUDEPATH += src \ - src/client \ - src/google_breakpad/common \ - src/common \ - src/processor \ - src/google_breakpad/processor - -# Input -HEADERS += src/client/minidump_file_writer-inl.h \ - src/client/minidump_file_writer.h \ - src/common/convert_UTF.h \ - src/common/md5.h \ - src/common/string_conversion.h \ - src/processor/address_map-inl.h \ - src/processor/address_map.h \ - src/processor/basic_code_module.h \ - src/processor/basic_code_modules.h \ - src/processor/contained_range_map-inl.h \ - src/processor/contained_range_map.h \ - src/processor/linked_ptr.h \ - src/processor/logging.h \ - src/processor/pathname_stripper.h \ - src/processor/postfix_evaluator-inl.h \ - src/processor/postfix_evaluator.h \ - src/processor/range_map-inl.h \ - src/processor/range_map.h \ - src/processor/scoped_ptr.h \ - src/processor/simple_symbol_supplier.h \ - src/processor/stack_frame_info.h \ - src/processor/stackwalker_amd64.h \ - src/processor/stackwalker_ppc.h \ - src/processor/stackwalker_sparc.h \ - src/processor/stackwalker_x86.h \ - src/google_breakpad/common/breakpad_types.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_size.h \ - src/google_breakpad/processor/basic_source_line_resolver.h \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/minidump.h \ - src/google_breakpad/processor/minidump_processor.h \ - src/google_breakpad/processor/process_state.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/processor/stack_frame.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stackwalker.h \ - src/google_breakpad/processor/symbol_supplier.h \ - src/google_breakpad/processor/system_info.h - - -win32 { - - DESTDIR = "lib/win32" - OBJECTS_DIR = $$BUILD_DIR/objects - MOC_DIR = $$BUILD_DIR/moc - RCC_DIR = $$BUILD_DIR/rcc - UI_DIR = $$BUILD_DIR/ui - - INCLUDEPATH += "C:\Program Files\Microsoft Visual Studio 9.0\DIA SDK\include" - - HEADERS += src/common/windows/guid_string.h \ - src/common/windows/http_upload.h \ - src/common/windows/pdb_source_line_writer.h \ - src/common/windows/string_utils-inl.h \ - src/client/windows/common/auto_critical_section.h \ - src/client/windows/common/ipc_protocol.h \ - src/client/windows/crash_generation/client_info.h \ - src/client/windows/crash_generation/crash_generation_client.h \ - src/client/windows/crash_generation/crash_generation_server.h \ - src/client/windows/crash_generation/minidump_generator.h \ - src/client/windows/handler/exception_handler.h \ - src/client/windows/sender/crash_report_sender.h \ - src/tools/windows/converter/ms_symbol_server_converter.h \ - src/client/windows/tests/crash_generation_app/abstract_class.h \ - src/client/windows/tests/crash_generation_app/crash_generation_app.h \ - src/client/windows/tests/crash_generation_app/precompile.h \ - src/client/windows/tests/crash_generation_app/resource.h - - SOURCES += src/common/windows/guid_string.cc \ - src/common/windows/http_upload.cc \ - src/common/windows/pdb_source_line_writer.cc \ - src/common/windows/string_utils.cc \ - src/client/windows/crash_generation/client_info.cc \ - src/client/windows/crash_generation/crash_generation_client.cc \ - src/client/windows/crash_generation/crash_generation_server.cc \ - src/client/windows/crash_generation/minidump_generator.cc \ - src/client/windows/handler/exception_handler.cc \ - src/client/windows/sender/crash_report_sender.cc \ - src/tools/windows/dump_syms/dump_syms.cc \ - src/tools/windows/symupload/symupload.cc -} - -macx { - - DESTDIR = "lib/macx" - OBJECTS_DIR = $$BUILD_DIR - - CONFIG += x86 ppc - QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.4" - - INCLUDEPATH += src/common/mac \ - src/client/mac/handler \ - src/common/mac/dwarf - - HEADERS += src/common/mac/dump_syms.h \ - src/common/mac/file_id.h \ - src/common/mac/HTTPMultipartUpload.h \ - src/common/mac/macho_id.h \ - src/common/mac/macho_utilities.h \ - src/common/mac/macho_walker.h \ - src/common/mac/string_utilities.h \ - src/client/mac/handler/breakpad_exc_server.h \ - src/client/mac/handler/breakpad_nlist_64.h \ - src/client/mac/handler/dynamic_images.h \ - src/client/mac/handler/exception_handler.h \ - src/client/mac/handler/minidump_generator.h \ - src/client/mac/handler/protected_memory_allocator.h \ - src/common/mac/dwarf/bytereader-inl.h \ - src/common/mac/dwarf/bytereader.h \ - src/common/mac/dwarf/dwarf2enums.h \ - src/common/mac/dwarf/dwarf2reader.h \ - src/common/mac/dwarf/functioninfo.h \ - src/common/mac/dwarf/line_state_machine.h \ - src/common/mac/dwarf/types.h \ - src/common/mac/externals/google-toolbox-for-mac/GTMDefines.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMShading.h \ - src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.h \ - src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugSelectorValidation.h \ - src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.h \ - src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGarbageCollection.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPFetcher.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjectSingleton.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMProgressMonitorInputStream.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.h \ - src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.h \ - src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.h \ - src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimer.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.h \ - src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.h \ - src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/PluginID.h \ - src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/PluginID.h \ - src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/PluginID.h - - SOURCES += src/common/convert_UTF.c \ - src/common/md5.c \ - src/common/string_conversion.cc \ - src/client/minidump_file_writer.cc \ - src/client/minidump_file_writer_unittest.cc \ - src/processor/address_map_unittest.cc \ - src/processor/basic_code_modules.cc \ - src/processor/basic_source_line_resolver.cc \ - src/processor/basic_source_line_resolver_unittest.cc \ - src/processor/call_stack.cc \ - src/processor/contained_range_map_unittest.cc \ - src/processor/logging.cc \ - src/processor/minidump.cc \ - src/processor/minidump_dump.cc \ - src/processor/minidump_processor.cc \ - src/processor/minidump_processor_unittest.cc \ - src/processor/minidump_stackwalk.cc \ - src/processor/pathname_stripper.cc \ - src/processor/pathname_stripper_unittest.cc \ - src/processor/postfix_evaluator_unittest.cc \ - src/processor/process_state.cc \ - src/processor/range_map_unittest.cc \ - src/processor/simple_symbol_supplier.cc \ - src/processor/stackwalker.cc \ - src/processor/stackwalker_amd64.cc \ - src/processor/stackwalker_ppc.cc \ - src/processor/stackwalker_selftest.cc \ - src/processor/stackwalker_sparc.cc \ - src/processor/stackwalker_x86.cc \ - src/common/mac/file_id.cc \ - src/common/mac/macho_id.cc \ - src/common/mac/macho_utilities.cc \ - src/common/mac/macho_walker.cc \ - src/common/mac/string_utilities.cc \ - src/client/mac/handler/breakpad_exc_server.c \ - src/client/mac/handler/breakpad_nlist_64.cc \ - src/client/mac/handler/dynamic_images.cc \ - src/client/mac/handler/exception_handler.cc \ - src/client/mac/handler/exception_handler_test.cc \ - src/client/mac/handler/minidump_generator.cc \ - src/client/mac/handler/minidump_generator_test.cc \ - src/client/mac/handler/protected_memory_allocator.cc \ - src/common/mac/dwarf/bytereader.cc \ - src/common/mac/dwarf/dwarf2reader.cc \ - src/common/mac/dwarf/functioninfo.cc -} - diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_exc_server.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_exc_server.h deleted file mode 100644 index c05f25a8..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_exc_server.h +++ /dev/null @@ -1,258 +0,0 @@ -#ifndef _exc_user_ -#define _exc_user_ - -/* Module exc */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef AUTOTEST -#ifndef FUNCTION_PTR_T -#define FUNCTION_PTR_T -typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t); -typedef struct { - char *name; - function_ptr_t function; -} function_table_entry; -typedef function_table_entry *function_table_t; -#endif /* FUNCTION_PTR_T */ -#endif /* AUTOTEST */ - -#ifndef exc_MSG_COUNT -#define exc_MSG_COUNT 3 -#endif /* exc_MSG_COUNT */ - -#include -#include -#include -#include - -#ifdef __BeforeMigUserHeader -__BeforeMigUserHeader -#endif /* __BeforeMigUserHeader */ - -#include -__BEGIN_DECLS - - -/* Routine exception_raise */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt -); - -/* Routine exception_raise_state */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise_state -( - mach_port_t exception_port, - exception_type_t exception, - const exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - const thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -/* Routine exception_raise_state_identity */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise_state_identity -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -__END_DECLS - -/********************** Caution **************************/ -/* The following data types should be used to calculate */ -/* maximum message sizes only. The actual message may be */ -/* smaller, and the position of the arguments within the */ -/* message layout may vary from what is presented here. */ -/* For example, if any of the arguments are variable- */ -/* sized, and less than the maximum is sent, the data */ -/* will be packed tight in the actual message to reduce */ -/* the presence of holes. */ -/********************** Caution **************************/ - -/* typedefs for all requests */ - -#ifndef __Request__exc_subsystem__defined -#define __Request__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - } __Request__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Request__exc_subsystem__defined */ - -/* union of all requests */ - -#ifndef __RequestUnion__exc_subsystem__defined -#define __RequestUnion__exc_subsystem__defined -union __RequestUnion__exc_subsystem { - __Request__exception_raise_t Request_exception_raise; - __Request__exception_raise_state_t Request_exception_raise_state; - __Request__exception_raise_state_identity_t Request_exception_raise_state_identity; -}; -#endif /* !__RequestUnion__exc_subsystem__defined */ -/* typedefs for all replies */ - -#ifndef __Reply__exc_subsystem__defined -#define __Reply__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - } __Reply__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Reply__exc_subsystem__defined */ - -/* union of all replies */ - -#ifndef __ReplyUnion__exc_subsystem__defined -#define __ReplyUnion__exc_subsystem__defined -union __ReplyUnion__exc_subsystem { - __Reply__exception_raise_t Reply_exception_raise; - __Reply__exception_raise_state_t Reply_exception_raise_state; - __Reply__exception_raise_state_identity_t Reply_exception_raise_state_identity; -}; -#endif /* !__RequestUnion__exc_subsystem__defined */ - -#ifndef subsystem_to_name_map_exc -#define subsystem_to_name_map_exc \ - { "exception_raise", 2401 },\ - { "exception_raise_state", 2402 },\ - { "exception_raise_state_identity", 2403 } -#endif - -#ifdef __AfterMigUserHeader -__AfterMigUserHeader -#endif /* __AfterMigUserHeader */ - -#endif /* _exc_user_ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_nlist_64.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_nlist_64.h deleted file mode 100644 index ee10afb9..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/breakpad_nlist_64.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// breakpad_nlist.h -// -// This file is meant to provide a header for clients of the modified -// nlist function implemented to work on 64-bit. - -#ifndef CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ - -typedef struct nlist_64 breakpad_nlist; - -int -breakpad_nlist_64(const char *name, - breakpad_nlist *list, - const char **symbolNames); - -#endif /* CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/dynamic_images.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/dynamic_images.h deleted file mode 100644 index 85ba8cf9..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/dynamic_images.h +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dynamic_images.h -// -// Implements most of the function of the dyld API, but allowing an -// arbitrary task to be introspected, unlike the dyld API which -// only allows operation on the current task. The current implementation -// is limited to use by 32-bit tasks. - -#ifndef CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ -#define CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ - -#include -#include -#include -#include -#include - -namespace google_breakpad { - -using std::vector; - -//============================================================================== -// The memory layout of this struct matches the dyld_image_info struct -// defined in "dyld_gdb.h" in the darwin source. -typedef struct dyld_image_info { - struct mach_header *load_address_; - char *file_path_; - uintptr_t file_mod_date_; -} dyld_image_info; - -//============================================================================== -// This is as defined in "dyld_gdb.h" in the darwin source. -// _dyld_all_image_infos (in dyld) is a structure of this type -// which will be used to determine which dynamic code has been loaded. -typedef struct dyld_all_image_infos { - uint32_t version; // == 1 in Mac OS X 10.4 - uint32_t infoArrayCount; - const struct dyld_image_info *infoArray; - void* notification; - bool processDetachedFromSharedRegion; -} dyld_all_image_infos; - -// some typedefs to isolate 64/32 bit differences -#ifdef __LP64__ -typedef mach_header_64 breakpad_mach_header; -typedef segment_command_64 breakpad_mach_segment_command; -#else -typedef mach_header breakpad_mach_header; -typedef segment_command breakpad_mach_segment_command; -#endif - -//============================================================================== -// A simple wrapper for a mach_header -// -// This could be fleshed out with some more interesting methods. -class MachHeader { - public: - explicit MachHeader(const breakpad_mach_header &header) : header_(header) {} - - void Print() { - printf("magic\t\t: %4x\n", header_.magic); - printf("cputype\t\t: %d\n", header_.cputype); - printf("cpusubtype\t: %d\n", header_.cpusubtype); - printf("filetype\t: %d\n", header_.filetype); - printf("ncmds\t\t: %d\n", header_.ncmds); - printf("sizeofcmds\t: %d\n", header_.sizeofcmds); - printf("flags\t\t: %d\n", header_.flags); - } - - breakpad_mach_header header_; -}; - -//============================================================================== -// Represents a single dynamically loaded mach-o image -class DynamicImage { - public: - DynamicImage(breakpad_mach_header *header, // we take ownership - int header_size, // includes load commands - breakpad_mach_header *load_address, - char *inFilePath, - uintptr_t image_mod_date, - mach_port_t task) - : header_(header), - header_size_(header_size), - load_address_(load_address), - file_mod_date_(image_mod_date), - task_(task) { - InitializeFilePath(inFilePath); - CalculateMemoryAndVersionInfo(); - } - - ~DynamicImage() { - if (file_path_) { - free(file_path_); - } - free(header_); - } - - // Returns pointer to a local copy of the mach_header plus load commands - breakpad_mach_header *GetMachHeader() {return header_;} - - // Size of mach_header plus load commands - int GetHeaderSize() const {return header_size_;} - - // Full path to mach-o binary - char *GetFilePath() {return file_path_;} - - uintptr_t GetModDate() const {return file_mod_date_;} - - // Actual address where the image was loaded - breakpad_mach_header *GetLoadAddress() const {return load_address_;} - - // Address where the image should be loaded - mach_vm_address_t GetVMAddr() const {return vmaddr_;} - - // Difference between GetLoadAddress() and GetVMAddr() - ptrdiff_t GetVMAddrSlide() const {return slide_;} - - // Size of the image - mach_vm_size_t GetVMSize() const {return vmsize_;} - - // Task owning this loaded image - mach_port_t GetTask() {return task_;} - - uint32_t GetVersion() {return version_;} - // For sorting - bool operator<(const DynamicImage &inInfo) { - return GetLoadAddress() < inInfo.GetLoadAddress(); - } - - // Debugging - void Print(); - - private: - friend class DynamicImages; - - // Sanity checking - bool IsValid() {return GetVMSize() != 0;} - - // Makes local copy of file path to mach-o binary - void InitializeFilePath(char *inFilePath) { - if (inFilePath) { - size_t path_size = 1 + strlen(inFilePath); - file_path_ = reinterpret_cast(malloc(path_size)); - strlcpy(file_path_, inFilePath, path_size); - } else { - file_path_ = NULL; - } - } - - // Initializes vmaddr_, vmsize_, and slide_ - void CalculateMemoryAndVersionInfo(); - - breakpad_mach_header *header_; // our local copy of the header - int header_size_; // mach_header plus load commands - breakpad_mach_header *load_address_; // base address image is mapped into - mach_vm_address_t vmaddr_; - mach_vm_size_t vmsize_; - ptrdiff_t slide_; - uint32_t version_; // Dylib version - char *file_path_; // path dyld used to load the image - uintptr_t file_mod_date_; // time_t of image file - - mach_port_t task_; -}; - -//============================================================================== -// DynamicImageRef is just a simple wrapper for a pointer to -// DynamicImage. The reason we use it instead of a simple typedef is so -// that we can use stl::sort() on a vector of DynamicImageRefs -// and simple class pointers can't implement operator<(). -// -class DynamicImageRef { - public: - explicit DynamicImageRef(DynamicImage *inP) : p(inP) {} - // The copy constructor is required by STL - DynamicImageRef(const DynamicImageRef &inRef) : p(inRef.p) {} - - bool operator<(const DynamicImageRef &inRef) const { - return (*const_cast(this)->p) - < (*const_cast(inRef).p); - } - - bool operator==(const DynamicImageRef &inInfo) const { - return (*const_cast(this)->p).GetLoadAddress() == - (*const_cast(inInfo)).GetLoadAddress(); - } - - // Be just like DynamicImage* - DynamicImage *operator->() {return p;} - operator DynamicImage*() {return p;} - - private: - DynamicImage *p; -}; - -//============================================================================== -// An object of type DynamicImages may be created to allow introspection of -// an arbitrary task's dynamically loaded mach-o binaries. This makes the -// assumption that the current task has send rights to the target task. -class DynamicImages { - public: - explicit DynamicImages(mach_port_t task); - - ~DynamicImages() { - for (int i = 0; i < (int)image_list_.size(); ++i) { - delete image_list_[i]; - } - } - - // Returns the number of dynamically loaded mach-o images. - int GetImageCount() const {return image_list_.size();} - - // Returns an individual image. - DynamicImage *GetImage(int i) { - if (i < (int)image_list_.size()) { - return image_list_[i]; - } - return NULL; - } - - // Returns the image corresponding to the main executable. - DynamicImage *GetExecutableImage(); - int GetExecutableImageIndex(); - - // Returns the task which we're looking at. - mach_port_t GetTask() const {return task_;} - - // Debugging - void Print() { - for (int i = 0; i < (int)image_list_.size(); ++i) { - image_list_[i]->Print(); - } - } - - void TestPrint() { - const breakpad_mach_header *header; - for (int i = 0; i < (int)image_list_.size(); ++i) { - printf("dyld: %p: name = %s\n", _dyld_get_image_header(i), - _dyld_get_image_name(i) ); - - const void *imageHeader = _dyld_get_image_header(i); - header = reinterpret_cast(imageHeader); - - MachHeader(*header).Print(); - } - } - - private: - bool IsOurTask() {return task_ == mach_task_self();} - - // Initialization - void ReadImageInfoForTask(); - void* GetDyldAllImageInfosPointer(); - - mach_port_t task_; - vector image_list_; -}; - -// Returns a malloced block containing the contents of memory at a particular -// location in another task. -void* ReadTaskMemory(task_port_t target_task, - const void* address, - size_t len, - kern_return_t *kr); - -} // namespace google_breakpad - -#endif // CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/exception_handler.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/exception_handler.h deleted file mode 100644 index 2a8ee1e4..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/exception_handler.h +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// exception_handler.h: MacOS exception handler -// This class can install a Mach exception port handler to trap most common -// programming errors. If an exception occurs, a minidump file will be -// generated which contains detailed information about the process and the -// exception. - -#ifndef CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ - -#include - -#include - -namespace google_breakpad { - -using std::string; - -struct ExceptionParameters; - -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, Breakpad - // will immediately report the exception as unhandled without writing a - // minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void *context); - - // A callback function to run after the minidump has been written. - // |minidump_id| is a unique id for the dump, so the minidump - // file is /.dmp. - // |context| is the value passed into the constructor. - // |succeeded| indicates whether a minidump file was successfully written. - // Return true if the exception was fully handled and breakpad should exit. - // Return false to allow any other exception handlers to process the - // exception. - typedef bool (*MinidumpCallback)(const char *dump_dir, - const char *minidump_id, - void *context, bool succeeded); - - // A callback function which will be called directly if an exception occurs. - // This bypasses the minidump file writing and simply gives the client - // the exception information. - typedef bool (*DirectCallback)( void *context, - int exception_type, - int exception_code, - mach_port_t thread_name); - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Minidump files will be written to dump_path, and the optional callback - // is called after writing the dump file, as described above. - // If install_handler is true, then a minidump will be written whenever - // an unhandled exception occurs. If it is false, minidumps will only - // be written when WriteMinidump is called. - ExceptionHandler(const string &dump_path, - FilterCallback filter, MinidumpCallback callback, - void *callback_context, bool install_handler); - - // A special constructor if we want to bypass minidump writing and - // simply get a callback with the exception information. - ExceptionHandler(DirectCallback callback, - void *callback_context, - bool install_handler); - - ~ExceptionHandler(); - - // Get and set the minidump path. - string dump_path() const { return dump_path_; } - void set_dump_path(const string &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - UpdateNextID(); // Necessary to put dump_path_ in next_minidump_path_. - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const string &dump_path, MinidumpCallback callback, - void *callback_context); - - private: - // Install the mach exception handler - bool InstallHandler(); - - // Uninstall the mach exception handler (if any) - bool UninstallHandler(bool in_exception); - - // Setup the handler thread, and if |install_handler| is true, install the - // mach exception port handler - bool Setup(bool install_handler); - - // Uninstall the mach exception handler (if any) and terminate the helper - // thread - bool Teardown(); - - // Send an "empty" mach message to the exception handler. Return true on - // success, false otherwise - bool SendEmptyMachMessage(); - - // All minidump writing goes through this one routine - bool WriteMinidumpWithException(int exception_type, int exception_code, - mach_port_t thread_name); - - // When installed, this static function will be call from a newly created - // pthread with |this| as the argument - static void *WaitForMessage(void *exception_handler_class); - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); - - // Generates a new ID and stores it in next_minidump_id_, and stores the - // path of the next minidump to be written in next_minidump_path_. - void UpdateNextID(); - - // These functions will suspend/resume all threads except for the - // reporting thread - bool SuspendThreads(); - bool ResumeThreads(); - - // The destination directory for the minidump - string dump_path_; - - // The basename of the next minidump w/o extension - string next_minidump_id_; - - // The full path to the next minidump to be written, including extension - string next_minidump_path_; - - // Pointers to the UTF-8 versions of above - const char *dump_path_c_; - const char *next_minidump_id_c_; - const char *next_minidump_path_c_; - - // The callback function and pointer to be passed back after the minidump - // has been written - FilterCallback filter_; - MinidumpCallback callback_; - void *callback_context_; - - // The callback function to be passed back when we don't want a minidump - // file to be written - DirectCallback directCallback_; - - // The thread that is created for the handler - pthread_t handler_thread_; - - // The port that is waiting on an exception message to be sent, if the - // handler is installed - mach_port_t handler_port_; - - // These variables save the previous exception handler's data so that it - // can be re-installed when this handler is uninstalled - ExceptionParameters *previous_; - - // True, if we've installed the exception handler - bool installed_exception_handler_; - - // True, if we're in the process of uninstalling the exception handler and - // the thread. - bool is_in_teardown_; - - // Save the last result of the last minidump - bool last_minidump_write_result_; - - // A mutex for use when writing out a minidump that was requested on a - // thread other than the exception handler. - pthread_mutex_t minidump_write_mutex_; - - // True, if we're using the mutext to indicate when mindump writing occurs - bool use_minidump_write_mutex_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/minidump_generator.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/minidump_generator.h deleted file mode 100644 index 0d3424c3..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/minidump_generator.h +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_generator.h: Create a minidump of the current MacOS process. - -#ifndef CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ -#define CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ - -#include - -#include - -#include "client/minidump_file_writer.h" -#include "google_breakpad/common/minidump_format.h" -#include "common/mac/macho_utilities.h" - -#include "dynamic_images.h" - -namespace google_breakpad { - -using std::string; - -#if TARGET_CPU_X86_64 || TARGET_CPU_PPC64 -#define TOP_OF_THREAD0_STACK 0x00007fff5fbff000 -#else -#define TOP_OF_THREAD0_STACK 0xbffff000 -#endif - -#if TARGET_CPU_X86_64 -typedef x86_thread_state64_t breakpad_thread_state_t; -typedef MDRawContextAMD64 MinidumpContext; -#elif TARGET_CPU_X86 -typedef i386_thread_state_t breakpad_thread_state_t; -typedef MDRawContextX86 MinidumpContext; -#elif TARGET_CPU_PPC64 -typedef ppc_thread_state64_t breakpad_thread_state_t; -typedef MDRawContextPPC64 MinidumpContext; -#elif TARGET_CPU_PPC -typedef ppc_thread_state_t breakpad_thread_state_t; -typedef MDRawContextPPC MinidumpContext; -#endif - -// Creates a minidump file of the current process. If there is exception data, -// use SetExceptionInformation() to add this to the minidump. The minidump -// file is generated by the Write() function. -// Usage: -// MinidumpGenerator minidump(); -// minidump.Write("/tmp/minidump"); -// -class MinidumpGenerator { - public: - MinidumpGenerator(); - MinidumpGenerator(mach_port_t crashing_task, mach_port_t handler_thread); - - ~MinidumpGenerator(); - - // Return

/.dmp - // Sets |unique_name| (if requested) to the unique name for the minidump - static string UniqueNameInDirectory(const string &dir, string *unique_name); - - // Write out the minidump into |path| - // All of the components of |path| must exist and be writable - // Return true if successful, false otherwise - bool Write(const char *path); - - // Specify some exception information, if applicable - void SetExceptionInformation(int type, int code, mach_port_t thread_name) { - exception_type_ = type; - exception_code_ = code; - exception_thread_ = thread_name; - } - - // Gather system information. This should be call at least once before using - // the MinidumpGenerator class. - static void GatherSystemInformation(); - - private: - typedef bool (MinidumpGenerator::*WriteStreamFN)(MDRawDirectory *); - - // Stream writers - bool WriteThreadListStream(MDRawDirectory *thread_list_stream); - bool WriteExceptionStream(MDRawDirectory *exception_stream); - bool WriteSystemInfoStream(MDRawDirectory *system_info_stream); - bool WriteModuleListStream(MDRawDirectory *module_list_stream); - bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream); - bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream); - - // Helpers - u_int64_t CurrentPCForStack(breakpad_thread_state_data_t state); - bool WriteStackFromStartAddress(mach_vm_address_t start_addr, - MDMemoryDescriptor *stack_location); - bool WriteStack(breakpad_thread_state_data_t state, - MDMemoryDescriptor *stack_location); - bool WriteContext(breakpad_thread_state_data_t state, - MDLocationDescriptor *register_location); - bool WriteThreadStream(mach_port_t thread_id, MDRawThread *thread); - bool WriteCVRecord(MDRawModule *module, int cpu_type, - const char *module_path); - bool WriteModuleStream(unsigned int index, MDRawModule *module); - - size_t CalculateStackSize(mach_vm_address_t start_addr); - - int FindExecutableModule(); - - // disallow copy ctor and operator= - explicit MinidumpGenerator(const MinidumpGenerator &); - void operator=(const MinidumpGenerator &); - - // Use this writer to put the data to disk - MinidumpFileWriter writer_; - - // Exception information - int exception_type_; - int exception_code_; - mach_port_t exception_thread_; - mach_port_t crashing_task_; - mach_port_t handler_thread_; - - // System information - static char build_string_[16]; - static int os_major_version_; - static int os_minor_version_; - static int os_build_number_; - - // Information about dynamically loaded code - DynamicImages *dynamic_images_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/protected_memory_allocator.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/protected_memory_allocator.h deleted file mode 100644 index ed4f51d5..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/mac/handler/protected_memory_allocator.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// ProtectedMemoryAllocator -// -// A very simple allocator class which allows allocation, but not deallocation. -// The allocations can be made read-only with the Protect() method. -// This class is NOT useful as a general-purpose memory allocation system, -// since it does not allow deallocation. It is useful to use for a group -// of allocations which are created in the same time-frame and destroyed -// in the same time-frame. It is useful for making allocations of memory -// which will not need to change often once initialized. This memory can then -// be protected from memory smashers by calling the Protect() method. - -#ifndef PROTECTED_MEMORY_ALLOCATOR_H__ -#define PROTECTED_MEMORY_ALLOCATOR_H__ - -#include - -// -class ProtectedMemoryAllocator { - public: - ProtectedMemoryAllocator(vm_size_t pool_size); - ~ProtectedMemoryAllocator(); - - // Returns a pointer to an allocation of size n within the pool. - // Fails by returning NULL is no more space is available. - // Please note that the pointers returned from this method should not - // be freed in any way (for example by calling free() on them ). - char * Allocate(size_t n); - - // Returns the base address of the allocation pool. - char * GetBaseAddress() { return (char*)base_address_; } - - // Returns the size of the allocation pool, including allocated - // plus free space. - vm_size_t GetTotalSize() { return pool_size_; } - - // Returns the number of bytes already allocated in the pool. - vm_size_t GetAllocatedSize() { return next_alloc_offset_; } - - // Returns the number of bytes available for allocation. - vm_size_t GetFreeSize() { return pool_size_ - next_alloc_offset_; } - - // Makes the entire allocation pool read-only including, of course, - // all allocations made from the pool. - kern_return_t Protect(); - - // Makes the entire allocation pool read/write. - kern_return_t Unprotect(); - - private: - vm_size_t pool_size_; - vm_address_t base_address_; - int next_alloc_offset_; - bool valid_; -}; - -#endif // PROTECTED_MEMORY_ALLOCATOR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer-inl.h deleted file mode 100644 index 7c556a27..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer-inl.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_file_writer-inl.h: Minidump file writer implementation. -// -// See minidump_file_writer.h for documentation. - -#ifndef CLIENT_MINIDUMP_FILE_WRITER_INL_H__ -#define CLIENT_MINIDUMP_FILE_WRITER_INL_H__ - -#include - -#include "client/minidump_file_writer.h" -#include "google_breakpad/common/minidump_size.h" - -namespace google_breakpad { - -template -inline bool TypedMDRVA::Allocate() { - allocation_state_ = SINGLE_OBJECT; - return UntypedMDRVA::Allocate(minidump_size::size()); -} - -template -inline bool TypedMDRVA::Allocate(size_t additional) { - allocation_state_ = SINGLE_OBJECT; - return UntypedMDRVA::Allocate(minidump_size::size() + additional); -} - -template -inline bool TypedMDRVA::AllocateArray(size_t count) { - assert(count); - allocation_state_ = ARRAY; - return UntypedMDRVA::Allocate(minidump_size::size() * count); -} - -template -inline bool TypedMDRVA::AllocateObjectAndArray(unsigned int count, - size_t size) { - assert(count && size); - allocation_state_ = SINGLE_OBJECT_WITH_ARRAY; - return UntypedMDRVA::Allocate(minidump_size::size() + count * size); -} - -template -inline bool TypedMDRVA::CopyIndex(unsigned int index, MDType *item) { - assert(allocation_state_ == ARRAY); - return writer_->Copy(position_ + index * minidump_size::size(), item, - minidump_size::size()); -} - -template -inline bool TypedMDRVA::CopyIndexAfterObject(unsigned int index, - const void *src, - size_t size) { - assert(allocation_state_ == SINGLE_OBJECT_WITH_ARRAY); - return writer_->Copy(position_ + minidump_size::size() + index * size, - src, size); -} - -template -inline bool TypedMDRVA::Flush() { - return writer_->Copy(position_, &data_, minidump_size::size()); -} - -} // namespace google_breakpad - -#endif // CLIENT_MINIDUMP_FILE_WRITER_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer.h deleted file mode 100644 index f569a553..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/minidump_file_writer.h +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_file_writer.h: Implements file-based minidump generation. It's -// intended to be used with the Google Breakpad open source crash handling -// project. - -#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__ -#define CLIENT_MINIDUMP_FILE_WRITER_H__ - -#include - -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -class UntypedMDRVA; -template class TypedMDRVA; - -// The user of this class can Open() a file and add minidump streams, data, and -// strings using the definitions in minidump_format.h. Since this class is -// expected to be used in a situation where the current process may be -// damaged, it will not allocate heap memory. -// Sample usage: -// MinidumpFileWriter writer; -// writer.Open("/tmp/minidump.dmp"); -// TypedMDRVA header(&writer_); -// header.Allocate(); -// header->get()->signature = MD_HEADER_SIGNATURE; -// : -// writer.Close(); -class MinidumpFileWriter { -public: - // Invalid MDRVA (Minidump Relative Virtual Address) - // returned on failed allocation - static const MDRVA kInvalidMDRVA; - - MinidumpFileWriter(); - ~MinidumpFileWriter(); - - // Open |path| as the destination of the minidump data. Any existing file - // will be overwritten. - // Return true on success, or false on failure - bool Open(const char *path); - - // Close the current file - // Return true on success, or false on failure - bool Close(); - - // Copy the contents of |str| to a MDString and write it to the file. - // |str| is expected to be either UTF-16 or UTF-32 depending on the size - // of wchar_t. - // Maximum |length| of characters to copy from |str|, or specify 0 to use the - // entire NULL terminated string. Copying will stop at the first NULL. - // |location| the allocated location - // Return true on success, or false on failure - bool WriteString(const wchar_t *str, unsigned int length, - MDLocationDescriptor *location); - - // Same as above, except with |str| as a UTF-8 string - bool WriteString(const char *str, unsigned int length, - MDLocationDescriptor *location); - - // Write |size| bytes starting at |src| into the current position. - // Return true on success and set |output| to position, or false on failure - bool WriteMemory(const void *src, size_t size, MDMemoryDescriptor *output); - - // Copies |size| bytes from |src| to |position| - // Return true on success, or false on failure - bool Copy(MDRVA position, const void *src, ssize_t size); - - // Return the current position for writing to the minidump - inline MDRVA position() const { return position_; } - - private: - friend class UntypedMDRVA; - - // Allocates an area of |size| bytes. - // Returns the position of the allocation, or kInvalidMDRVA if it was - // unable to allocate the bytes. - MDRVA Allocate(size_t size); - - // The file descriptor for the output file - int file_; - - // Current position in buffer - MDRVA position_; - - // Current allocated size - size_t size_; - - // Copy |length| characters from |str| to |mdstring|. These are distinct - // because the underlying MDString is a UTF-16 based string. The wchar_t - // variant may need to create a MDString that has more characters than the - // source |str|, whereas the UTF-8 variant may coalesce characters to form - // a single UTF-16 character. - bool CopyStringToMDString(const wchar_t *str, unsigned int length, - TypedMDRVA *mdstring); - bool CopyStringToMDString(const char *str, unsigned int length, - TypedMDRVA *mdstring); - - // The common templated code for writing a string - template - bool WriteStringCore(const CharType *str, unsigned int length, - MDLocationDescriptor *location); -}; - -// Represents an untyped allocated chunk -class UntypedMDRVA { - public: - explicit UntypedMDRVA(MinidumpFileWriter *writer) - : writer_(writer), - position_(writer->position()), - size_(0) {} - - // Allocates |size| bytes. Must not call more than once. - // Return true on success, or false on failure - bool Allocate(size_t size); - - // Returns the current position or kInvalidMDRVA if allocation failed - inline MDRVA position() const { return position_; } - - // Number of bytes allocated - inline size_t size() const { return size_; } - - // Return size and position - inline MDLocationDescriptor location() const { - MDLocationDescriptor location = { size_, position_ }; - return location; - } - - // Copy |size| bytes starting at |src| into the minidump at |position| - // Return true on success, or false on failure - bool Copy(MDRVA position, const void *src, size_t size); - - // Copy |size| bytes from |src| to the current position - inline bool Copy(const void *src, size_t size) { - return Copy(position_, src, size); - } - - protected: - // Writer we associate with - MinidumpFileWriter *writer_; - - // Position of the start of the data - MDRVA position_; - - // Allocated size - size_t size_; -}; - -// Represents a Minidump object chunk. Additional memory can be allocated at -// the end of the object as a: -// - single allocation -// - Array of MDType objects -// - A MDType object followed by an array -template -class TypedMDRVA : public UntypedMDRVA { - public: - // Constructs an unallocated MDRVA - explicit TypedMDRVA(MinidumpFileWriter *writer) - : UntypedMDRVA(writer), - data_(), - allocation_state_(UNALLOCATED) {} - - inline ~TypedMDRVA() { - // Ensure that the data_ object is written out - if (allocation_state_ != ARRAY) - Flush(); - } - - // Address of object data_ of MDType. This is not declared const as the - // typical usage will be to access the underlying |data_| object as to - // alter its contents. - MDType *get() { return &data_; } - - // Allocates minidump_size::size() bytes. - // Must not call more than once. - // Return true on success, or false on failure - bool Allocate(); - - // Allocates minidump_size::size() + |additional| bytes. - // Must not call more than once. - // Return true on success, or false on failure - bool Allocate(size_t additional); - - // Allocate an array of |count| elements of MDType. - // Must not call more than once. - // Return true on success, or false on failure - bool AllocateArray(size_t count); - - // Allocate an array of |count| elements of |size| after object of MDType - // Must not call more than once. - // Return true on success, or false on failure - bool AllocateObjectAndArray(unsigned int count, size_t size); - - // Copy |item| to |index| - // Must have been allocated using AllocateArray(). - // Return true on success, or false on failure - bool CopyIndex(unsigned int index, MDType *item); - - // Copy |size| bytes starting at |str| to |index| - // Must have been allocated using AllocateObjectAndArray(). - // Return true on success, or false on failure - bool CopyIndexAfterObject(unsigned int index, const void *src, size_t size); - - // Write data_ - bool Flush(); - - private: - enum AllocationState { - UNALLOCATED = 0, - SINGLE_OBJECT, - ARRAY, - SINGLE_OBJECT_WITH_ARRAY - }; - - MDType data_; - AllocationState allocation_state_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MINIDUMP_FILE_WRITER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/auto_critical_section.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/auto_critical_section.h deleted file mode 100644 index 82c7b7f1..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/auto_critical_section.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ -#define CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ - -#include - -namespace google_breakpad { - -// Automatically enters the critical section in the constructor and leaves -// the critical section in the destructor. -class AutoCriticalSection { - public: - // Creates a new instance with the given critical section object - // and enters the critical section immediately. - explicit AutoCriticalSection(CRITICAL_SECTION* cs) : cs_(cs) { - assert(cs_); - EnterCriticalSection(cs_); - } - - // Destructor: leaves the critical section. - ~AutoCriticalSection() { - LeaveCriticalSection(cs_); - } - - private: - // Disable copy ctor and operator=. - AutoCriticalSection(const AutoCriticalSection&); - AutoCriticalSection& operator=(const AutoCriticalSection&); - - CRITICAL_SECTION* cs_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/ipc_protocol.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/ipc_protocol.h deleted file mode 100644 index cba8699c..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/common/ipc_protocol.h +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ -#define CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ - -#include -#include -#include -#include -#include "common/windows/string_utils-inl.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Name/value pair for custom client information. -struct CustomInfoEntry { - // Maximum length for name and value for client custom info. - static const int kNameMaxLength = 64; - static const int kValueMaxLength = 64; - - CustomInfoEntry() { - // Putting name and value in initializer list makes VC++ show warning 4351. - set_name(NULL); - set_value(NULL); - } - - CustomInfoEntry(const wchar_t* name_arg, const wchar_t* value_arg) { - set_name(name_arg); - set_value(value_arg); - } - - void set_name(const wchar_t* name_arg) { - if (!name_arg) { - name[0] = L'\0'; - return; - } - WindowsStringUtils::safe_wcscpy(name, kNameMaxLength, name_arg); - } - - void set_value(const wchar_t* value_arg) { - if (!value_arg) { - value[0] = L'\0'; - return; - } - - WindowsStringUtils::safe_wcscpy(value, kValueMaxLength, value_arg); - } - - void set(const wchar_t* name_arg, const wchar_t* value_arg) { - set_name(name_arg); - set_value(value_arg); - } - - wchar_t name[kNameMaxLength]; - wchar_t value[kValueMaxLength]; -}; - -// Constants for the protocol between client and the server. - -// Tags sent with each message indicating the purpose of -// the message. -enum MessageTag { - MESSAGE_TAG_NONE = 0, - MESSAGE_TAG_REGISTRATION_REQUEST = 1, - MESSAGE_TAG_REGISTRATION_RESPONSE = 2, - MESSAGE_TAG_REGISTRATION_ACK = 3 -}; - -struct CustomClientInfo { - const CustomInfoEntry* entries; - int count; -}; - -// Message structure for IPC between crash client and crash server. -struct ProtocolMessage { - ProtocolMessage() - : tag(MESSAGE_TAG_NONE), - pid(0), - dump_type(MiniDumpNormal), - thread_id(0), - exception_pointers(NULL), - assert_info(NULL), - custom_client_info(), - dump_request_handle(NULL), - dump_generated_handle(NULL), - server_alive_handle(NULL) { - } - - // Creates an instance with the given parameters. - ProtocolMessage(MessageTag arg_tag, - DWORD arg_pid, - MINIDUMP_TYPE arg_dump_type, - DWORD* arg_thread_id, - EXCEPTION_POINTERS** arg_exception_pointers, - MDRawAssertionInfo* arg_assert_info, - const CustomClientInfo& custom_info, - HANDLE arg_dump_request_handle, - HANDLE arg_dump_generated_handle, - HANDLE arg_server_alive) - : tag(arg_tag), - pid(arg_pid), - dump_type(arg_dump_type), - thread_id(arg_thread_id), - exception_pointers(arg_exception_pointers), - assert_info(arg_assert_info), - custom_client_info(custom_info), - dump_request_handle(arg_dump_request_handle), - dump_generated_handle(arg_dump_generated_handle), - server_alive_handle(arg_server_alive) { - } - - // Tag in the message. - MessageTag tag; - - // Process id. - DWORD pid; - - // Dump type requested. - MINIDUMP_TYPE dump_type; - - // Client thread id pointer. - DWORD* thread_id; - - // Exception information. - EXCEPTION_POINTERS** exception_pointers; - - // Assert information in case of an invalid parameter or - // pure call failure. - MDRawAssertionInfo* assert_info; - - // Custom client information. - CustomClientInfo custom_client_info; - - // Handle to signal the crash event. - HANDLE dump_request_handle; - - // Handle to check if server is done generating crash. - HANDLE dump_generated_handle; - - // Handle to a mutex that becomes signaled (WAIT_ABANDONED) - // if server process goes down. - HANDLE server_alive_handle; - - private: - // Disable copy ctor and operator=. - ProtocolMessage(const ProtocolMessage& msg); - ProtocolMessage& operator=(const ProtocolMessage& msg); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/client_info.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/client_info.h deleted file mode 100644 index 774816fb..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/client_info.h +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ - -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "google_breakpad/common/minidump_format.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -class CrashGenerationServer; - -// Abstraction for a crash client process. -class ClientInfo { - public: - // Creates an instance with the given values. Gets the process - // handle for the given process id and creates necessary event - // objects. - ClientInfo(CrashGenerationServer* crash_server, - DWORD pid, - MINIDUMP_TYPE dump_type, - DWORD* thread_id, - EXCEPTION_POINTERS** ex_info, - MDRawAssertionInfo* assert_info, - const CustomClientInfo& custom_client_info); - - ~ClientInfo(); - - CrashGenerationServer* crash_server() const { return crash_server_; } - DWORD pid() const { return pid_; } - MINIDUMP_TYPE dump_type() const { return dump_type_; } - EXCEPTION_POINTERS** ex_info() const { return ex_info_; } - MDRawAssertionInfo* assert_info() const { return assert_info_; } - DWORD* thread_id() const { return thread_id_; } - HANDLE process_handle() const { return process_handle_; } - HANDLE dump_requested_handle() const { return dump_requested_handle_; } - HANDLE dump_generated_handle() const { return dump_generated_handle_; } - - HANDLE dump_request_wait_handle() const { - return dump_request_wait_handle_; - } - - void set_dump_request_wait_handle(HANDLE value) { - dump_request_wait_handle_ = value; - } - - HANDLE process_exit_wait_handle() const { - return process_exit_wait_handle_; - } - - void set_process_exit_wait_handle(HANDLE value) { - process_exit_wait_handle_ = value; - } - - // Unregister all waits for the client. - bool UnregisterWaits(); - - bool Initialize(); - bool GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const; - bool GetClientThreadId(DWORD* thread_id) const; - - // Reads the custom information from the client process address space. - bool PopulateCustomInfo(); - - // Returns the client custom information. - CustomClientInfo GetCustomInfo() const; - - private: - // Calcualtes the uptime for the client process, converts it to a string and - // stores it in the last entry of client custom info. - void SetProcessUptime(); - - // Crash generation server. - CrashGenerationServer* crash_server_; - - // Client process ID. - DWORD pid_; - - // Dump type requested by the client. - MINIDUMP_TYPE dump_type_; - - // Address of an EXCEPTION_POINTERS* variable in the client - // process address space that will point to an instance of - // EXCEPTION_POINTERS containing information about crash. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - EXCEPTION_POINTERS** ex_info_; - - // Address of an instance of MDRawAssertionInfo in the client - // process address space that will contain information about - // non-exception related crashes like invalid parameter assertion - // failures and pure calls. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - MDRawAssertionInfo* assert_info_; - - // Custom information about the client. - CustomClientInfo custom_client_info_; - - // Contains the custom client info entries read from the client process - // memory. This will be populated only if the method GetClientCustomInfo - // is called. - scoped_array custom_info_entries_; - - // Address of a variable in the client process address space that - // will contain the thread id of the crashing client thread. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - DWORD* thread_id_; - - // Client process handle. - HANDLE process_handle_; - - // Dump request event handle. - HANDLE dump_requested_handle_; - - // Dump generated event handle. - HANDLE dump_generated_handle_; - - // Wait handle for dump request event. - HANDLE dump_request_wait_handle_; - - // Wait handle for process exit event. - HANDLE process_exit_wait_handle_; - - // Time when the client process started. It is used to determine the uptime - // for the client process when it signals a crash. - FILETIME start_time_; - - // Disallow copy ctor and operator=. - ClientInfo(const ClientInfo& client_info); - ClientInfo& operator=(const ClientInfo& client_info); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_client.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_client.h deleted file mode 100644 index 81b0e6ca..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_client.h +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ - -#include -#include -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -struct CustomClientInfo; - -// Abstraction of client-side implementation of out of process -// crash generation. -// -// The process that desires to have out-of-process crash dump -// generation service can use this class in the following way: -// -// * Create an instance. -// * Call Register method so that the client tries to register -// with the server process and check the return value. If -// registration is not successful, out-of-process crash dump -// generation will not be available -// * Request dump generation by calling either of the two -// overloaded RequestDump methods - one in case of exceptions -// and the other in case of assertion failures -// -// Note that it is the responsibility of the client code of -// this class to set the unhandled exception filter with the -// system by calling the SetUnhandledExceptionFilter function -// and the client code should explicitly request dump generation. -class CrashGenerationClient { - public: - CrashGenerationClient(const wchar_t* pipe_name, - MINIDUMP_TYPE dump_type, - const CustomClientInfo* custom_info); - - ~CrashGenerationClient(); - - // Registers the client process with the crash server. - // - // Returns true if the registration is successful; false otherwise. - bool Register(); - - // Requests the crash server to generate a dump with the given - // exception information. - // - // Returns true if the dump was successful; false otherwise. Note that - // if the registration step was not performed or it was not successful, - // false will be returned. - bool RequestDump(EXCEPTION_POINTERS* ex_info); - - // Requests the crash server to generate a dump with the given - // assertion information. - // - // Returns true if the dump was successful; false otherwise. Note that - // if the registration step was not performed or it was not successful, - // false will be returned. - bool RequestDump(MDRawAssertionInfo* assert_info); - - private: - // Connects to the appropriate pipe and sets the pipe handle state. - // - // Returns the pipe handle if everything goes well; otherwise Returns NULL. - HANDLE ConnectToServer(); - - // Performs a handshake with the server over the given pipe which should be - // already connected to the server. - // - // Returns true if handshake with the server was successful; false otherwise. - bool RegisterClient(HANDLE pipe); - - // Validates the given server response. - bool ValidateResponse(const ProtocolMessage& msg) const; - - // Returns true if the registration step succeeded; false otherwise. - bool IsRegistered() const; - - // Connects to the given named pipe with given parameters. - // - // Returns true if the connection is successful; false otherwise. - HANDLE ConnectToPipe(const wchar_t* pipe_name, - DWORD pipe_access, - DWORD flags_attrs); - - // Signals the crash event and wait for the server to generate crash. - bool SignalCrashEventAndWait(); - - // Pipe name to use to talk to server. - std::wstring pipe_name_; - - // Custom client information - CustomClientInfo custom_info_; - - // Type of dump to generate. - MINIDUMP_TYPE dump_type_; - - // Event to signal in case of a crash. - HANDLE crash_event_; - - // Handle to wait on after signaling a crash for the server - // to finish generating crash dump. - HANDLE crash_generated_; - - // Handle to a mutex that will become signaled with WAIT_ABANDONED - // if the server process goes down. - HANDLE server_alive_; - - // Server process id. - DWORD server_process_id_; - - // Id of the thread that caused the crash. - DWORD thread_id_; - - // Exception pointers for an exception crash. - EXCEPTION_POINTERS* exception_pointers_; - - // Assertion info for an invalid parameter or pure call crash. - MDRawAssertionInfo assert_info_; - - // Disable copy ctor and operator=. - CrashGenerationClient(const CrashGenerationClient& crash_client); - CrashGenerationClient& operator=(const CrashGenerationClient& crash_client); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_server.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_server.h deleted file mode 100644 index cacb639a..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/crash_generation_server.h +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ - -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/crash_generation/client_info.h" -#include "client/windows/crash_generation/minidump_generator.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -// Abstraction for server side implementation of out-of-process crash -// generation protocol for Windows platform only. It generates Windows -// minidump files for client processes that request dump generation. When -// the server is requested to start listening for clients (by calling the -// Start method), it creates a named pipe and waits for the clients to -// register. In response, it hands them event handles that the client can -// signal to request dump generation. When the clients request dump -// generation in this way, the server generates Windows minidump files. -class CrashGenerationServer { - public: - typedef void (*OnClientConnectedCallback)(void* context, - const ClientInfo* client_info); - - typedef void (*OnClientDumpRequestCallback)(void* context, - const ClientInfo* client_info, - const std::wstring* file_path); - - typedef void (*OnClientExitedCallback)(void* context, - const ClientInfo* client_info); - - // Creates an instance with the given parameters. - // - // Parameter pipe_name: Name of the Windows named pipe - // Parameter pipe_sec_attrs Security attributes to set on the pipe. Pass - // NULL to use default security on the pipe. By default, the pipe created - // allows Local System, Administrators and the Creator full control and - // the Everyone group read access on the pipe. - // Parameter connect_callback: Callback for a new client connection. - // Parameter connect_context: Context for client connection callback. - // Parameter crash_callback: Callback for a client crash dump request. - // Parameter crash_context: Context for client crash dump request callback. - // Parameter exit_callback: Callback for client process exit. - // Parameter exit_context: Context for client exit callback. - // Parameter generate_dumps: Whether to automatically generate dumps. - // Client code of this class might want to generate dumps explicitly in the - // crash dump request callback. In that case, false can be passed for this - // parameter. - // Parameter dump_path: Path for generating dumps; required only if true is - // passed for generateDumps parameter; NULL can be passed otherwise. - CrashGenerationServer(const std::wstring& pipe_name, - SECURITY_ATTRIBUTES* pipe_sec_attrs, - OnClientConnectedCallback connect_callback, - void* connect_context, - OnClientDumpRequestCallback dump_callback, - void* dump_context, - OnClientExitedCallback exit_callback, - void* exit_context, - bool generate_dumps, - const std::wstring* dump_path); - - ~CrashGenerationServer(); - - // Performs initialization steps needed to start listening to clients. - // - // Returns true if initialization is successful; false otherwise. - bool Start(); - - private: - // Various states the client can be in during the handshake with - // the server. - enum IPCServerState { - // Server is in error state and it cannot serve any clients. - IPC_SERVER_STATE_ERROR, - - // Server starts in this state. - IPC_SERVER_STATE_INITIAL, - - // Server has issued an async connect to the pipe and it is waiting - // for the connection to be established. - IPC_SERVER_STATE_CONNECTING, - - // Server is connected successfully. - IPC_SERVER_STATE_CONNECTED, - - // Server has issued an async read from the pipe and it is waiting for - // the read to finish. - IPC_SERVER_STATE_READING, - - // Server is done reading from the pipe. - IPC_SERVER_STATE_READ_DONE, - - // Server has issued an async write to the pipe and it is waiting for - // the write to finish. - IPC_SERVER_STATE_WRITING, - - // Server is done writing to the pipe. - IPC_SERVER_STATE_WRITE_DONE, - - // Server has issued an async read from the pipe for an ack and it - // is waiting for the read to finish. - IPC_SERVER_STATE_READING_ACK, - - // Server is done writing to the pipe and it is now ready to disconnect - // and reconnect. - IPC_SERVER_STATE_DISCONNECTING - }; - - // - // Helper methods to handle various server IPC states. - // - void HandleErrorState(); - void HandleInitialState(); - void HandleConnectingState(); - void HandleConnectedState(); - void HandleReadingState(); - void HandleReadDoneState(); - void HandleWritingState(); - void HandleWriteDoneState(); - void HandleReadingAckState(); - void HandleDisconnectingState(); - - // Prepares reply for a client from the given parameters. - bool PrepareReply(const ClientInfo& client_info, - ProtocolMessage* reply) const; - - // Duplicates various handles in the ClientInfo object for the client - // process and stores them in the given ProtocolMessage instance. If - // creating any handle fails, ProtocolMessage will contain the handles - // already created successfully, which should be closed by the caller. - bool CreateClientHandles(const ClientInfo& client_info, - ProtocolMessage* reply) const; - - // Response to the given client. Return true if all steps of - // responding to the client succeed, false otherwise. - bool RespondToClient(ClientInfo* client_info); - - // Handles a connection request from the client. - void HandleConnectionRequest(); - - // Handles a dump request from the client. - void HandleDumpRequest(const ClientInfo& client_info); - - // Callback for pipe connected event. - static void CALLBACK OnPipeConnected(void* context, BOOLEAN timer_or_wait); - - // Callback for a dump request. - static void CALLBACK OnDumpRequest(void* context, BOOLEAN timer_or_wait); - - // Callback for client process exit event. - static void CALLBACK OnClientEnd(void* context, BOOLEAN timer_or_wait); - - // Releases resources for a client. - static DWORD WINAPI CleanupClient(void* context); - - // Cleans up for the given client. - void DoCleanup(ClientInfo* client_info); - - // Adds the given client to the list of registered clients. - bool AddClient(ClientInfo* client_info); - - // Generates dump for the given client. - bool GenerateDump(const ClientInfo& client, std::wstring* dump_path); - - // Sync object for thread-safe access to the shared list of clients. - CRITICAL_SECTION clients_sync_; - - // List of clients. - std::list clients_; - - // Pipe name. - std::wstring pipe_name_; - - // Pipe security attributes - SECURITY_ATTRIBUTES* pipe_sec_attrs_; - - // Handle to the pipe used for handshake with clients. - HANDLE pipe_; - - // Pipe wait handle. - HANDLE pipe_wait_handle_; - - // Handle to server-alive mutex. - HANDLE server_alive_handle_; - - // Callback for a successful client connection. - OnClientConnectedCallback connect_callback_; - - // Context for client connected callback. - void* connect_context_; - - // Callback for a client dump request. - OnClientDumpRequestCallback dump_callback_; - - // Context for client dump request callback. - void* dump_context_; - - // Callback for client process exit. - OnClientExitedCallback exit_callback_; - - // Context for client process exit callback. - void* exit_context_; - - // Whether to generate dumps. - bool generate_dumps_; - - // Instance of a mini dump generator. - scoped_ptr dump_generator_; - - // State of the server in performing the IPC with the client. - // Note that since we restrict the pipe to one instance, we - // only need to keep one state of the server. Otherwise, server - // would have one state per client it is talking to. - volatile IPCServerState server_state_; - - // Whether the server is shutting down. - volatile bool shutting_down_; - - // Overlapped instance for async I/O on the pipe. - OVERLAPPED overlapped_; - - // Message object used in IPC with the client. - ProtocolMessage msg_; - - // Client Info for the client that's connecting to the server. - ClientInfo* client_info_; - - // Count of clean-up work items that are currently running or are - // already queued to run. - volatile LONG cleanup_item_count_; - - // Disable copy ctor and operator=. - CrashGenerationServer(const CrashGenerationServer& crash_server); - CrashGenerationServer& operator=(const CrashGenerationServer& crash_server); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/minidump_generator.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/minidump_generator.h deleted file mode 100644 index 8ab6a8f6..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/crash_generation/minidump_generator.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ - -#include -#include -#include -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Abstraction for various objects and operations needed to generate -// minidump on Windows. This abstraction is useful to hide all the gory -// details for minidump generation and provide a clean interface to -// the clients to generate minidumps. -class MinidumpGenerator { - public: - // Creates an instance with the given dump path. - explicit MinidumpGenerator(const std::wstring& dump_path); - - ~MinidumpGenerator(); - - // Writes the minidump with the given parameters. Stores the - // dump file path in the dump_path parameter if dump generation - // succeeds. - bool WriteMinidump(HANDLE process_handle, - DWORD process_id, - DWORD thread_id, - DWORD requesting_thread_id, - EXCEPTION_POINTERS* exception_pointers, - MDRawAssertionInfo* assert_info, - MINIDUMP_TYPE dump_type, - bool is_client_pointers, - std::wstring* dump_path); - - private: - // Function pointer type for MiniDumpWriteDump, which is looked up - // dynamically. - typedef BOOL (WINAPI* MiniDumpWriteDumpType)( - HANDLE hProcess, - DWORD ProcessId, - HANDLE hFile, - MINIDUMP_TYPE DumpType, - CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam); - - // Function pointer type for UuidCreate, which is looked up dynamically. - typedef RPC_STATUS (RPC_ENTRY* UuidCreateType)(UUID* Uuid); - - // Loads the appropriate DLL lazily in a thread safe way. - HMODULE GetDbghelpModule(); - - // Loads the appropriate DLL and gets a pointer to the MiniDumpWriteDump - // function lazily and in a thread-safe manner. - MiniDumpWriteDumpType GetWriteDump(); - - // Loads the appropriate DLL lazily in a thread safe way. - HMODULE GetRpcrt4Module(); - - // Loads the appropriate DLL and gets a pointer to the UuidCreate - // function lazily and in a thread-safe manner. - UuidCreateType GetCreateUuid(); - - // Returns the path for the file to write dump to. - bool GenerateDumpFilePath(std::wstring* file_path); - - // Handle to dynamically loaded DbgHelp.dll. - HMODULE dbghelp_module_; - - // Pointer to the MiniDumpWriteDump function. - MiniDumpWriteDumpType write_dump_; - - // Handle to dynamically loaded rpcrt4.dll. - HMODULE rpcrt4_module_; - - // Pointer to the UuidCreate function. - UuidCreateType create_uuid_; - - // Folder path to store dump files. - std::wstring dump_path_; - - // Critical section to sychronize action of loading modules dynamically. - CRITICAL_SECTION module_load_sync_; - - // Critical section to synchronize action of dynamically getting function - // addresses from modules. - CRITICAL_SECTION get_proc_address_sync_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/handler/exception_handler.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/handler/exception_handler.h deleted file mode 100644 index 2cacdc38..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/handler/exception_handler.h +++ /dev/null @@ -1,415 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// ExceptionHandler can write a minidump file when an exception occurs, -// or when WriteMinidump() is called explicitly by your program. -// -// To have the exception handler write minidumps when an uncaught exception -// (crash) occurs, you should create an instance early in the execution -// of your program, and keep it around for the entire time you want to -// have crash handling active (typically, until shutdown). -// -// If you want to write minidumps without installing the exception handler, -// you can create an ExceptionHandler with install_handler set to false, -// then call WriteMinidump. You can also use this technique if you want to -// use different minidump callbacks for different call sites. -// -// In either case, a callback function is called when a minidump is written, -// which receives the unqiue id of the minidump. The caller can use this -// id to collect and write additional application state, and to launch an -// external crash-reporting application. -// -// It is important that creation and destruction of ExceptionHandler objects -// be nested cleanly, when using install_handler = true. -// Avoid the following pattern: -// ExceptionHandler *e = new ExceptionHandler(...); -// ExceptionHandler *f = new ExceptionHandler(...); -// delete e; -// This will put the exception filter stack into an inconsistent state. - -#ifndef CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ - -#include -#include -#include -#include - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/crash_generation/crash_generation_client.h" -#include "google_breakpad/common/minidump_format.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -using std::vector; -using std::wstring; - -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. exinfo points to the - // exception record, if any; assertion points to assertion information, - // if any. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, Breakpad - // will immediately report the exception as unhandled without writing a - // minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void* context, EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // A callback function to run after the minidump has been written. - // minidump_id is a unique id for the dump, so the minidump - // file is \.dmp. context is the parameter supplied - // by the user as callback_context when the handler was created. exinfo - // points to the exception record, or NULL if no exception occurred. - // succeeded indicates whether a minidump file was successfully written. - // assertion points to information about an assertion if the handler was - // invoked by an assertion. - // - // If an exception occurred and the callback returns true, Breakpad will treat - // the exception as fully-handled, suppressing any other handlers from being - // notified of the exception. If the callback returns false, Breakpad will - // treat the exception as unhandled, and allow another handler to handle it. - // If there are no other handlers, Breakpad will report the exception to the - // system as unhandled, allowing a debugger or native crash dialog the - // opportunity to handle the exception. Most callback implementations - // should normally return the value of |succeeded|, or when they wish to - // not report an exception of handled, false. Callbacks will rarely want to - // return true directly (unless |succeeded| is true). - // - // For out-of-process dump generation, dump path and minidump ID will always - // be NULL. In case of out-of-process dump generation, the dump path and - // minidump id are controlled by the server process and are not communicated - // back to the crashing process. - typedef bool (*MinidumpCallback)(const wchar_t* dump_path, - const wchar_t* minidump_id, - void* context, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion, - bool succeeded); - - // HandlerType specifies which types of handlers should be installed, if - // any. Use HANDLER_NONE for an ExceptionHandler that remains idle, - // without catching any failures on its own. This type of handler may - // still be triggered by calling WriteMinidump. Otherwise, use a - // combination of the other HANDLER_ values, or HANDLER_ALL to install - // all handlers. - enum HandlerType { - HANDLER_NONE = 0, - HANDLER_EXCEPTION = 1 << 0, // SetUnhandledExceptionFilter - HANDLER_INVALID_PARAMETER = 1 << 1, // _set_invalid_parameter_handler - HANDLER_PURECALL = 1 << 2, // _set_purecall_handler - HANDLER_ALL = HANDLER_EXCEPTION | - HANDLER_INVALID_PARAMETER | - HANDLER_PURECALL - }; - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Before writing a minidump, the optional filter callback will be called. - // Its return value determines whether or not Breakpad should write a - // minidump. Minidump files will be written to dump_path, and the optional - // callback is called after writing the dump file, as described above. - // handler_types specifies the types of handlers that should be installed. - ExceptionHandler(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types); - - // Creates a new ExcetpionHandler instance that can attempt to perform - // out-of-process dump generation if pipe_name is not NULL. If pipe_name is - // NULL, or if out-of-process dump generation registration step fails, - // in-process dump generation will be used. This also allows specifying - // the dump type to generate. - ExceptionHandler(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info); - - ~ExceptionHandler(); - - // Get and set the minidump path. - wstring dump_path() const { return dump_path_; } - void set_dump_path(const wstring &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - UpdateNextID(); // Necessary to put dump_path_ in next_minidump_path_. - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Writes a minidump immediately, with the user-supplied exception - // information. - bool WriteMinidumpForException(EXCEPTION_POINTERS* exinfo); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const wstring &dump_path, - MinidumpCallback callback, void* callback_context); - - // Get the thread ID of the thread requesting the dump (either the exception - // thread or any other thread that called WriteMinidump directly). This - // may be useful if you want to include additional thread state in your - // dumps. - DWORD get_requesting_thread_id() const { return requesting_thread_id_; } - - // Controls behavior of EXCEPTION_BREAKPOINT and EXCEPTION_SINGLE_STEP. - bool get_handle_debug_exceptions() const { return handle_debug_exceptions_; } - void set_handle_debug_exceptions(bool handle_debug_exceptions) { - handle_debug_exceptions_ = handle_debug_exceptions; - } - - // Returns whether out-of-process dump generation is used or not. - bool IsOutOfProcess() const { return crash_generation_client_.get() != NULL; } - - private: - friend class AutoExceptionHandler; - - // Initializes the instance with given values. - void Initialize(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info); - - // Function pointer type for MiniDumpWriteDump, which is looked up - // dynamically. - typedef BOOL (WINAPI *MiniDumpWriteDump_type)( - HANDLE hProcess, - DWORD dwPid, - HANDLE hFile, - MINIDUMP_TYPE DumpType, - CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam); - - // Function pointer type for UuidCreate, which is looked up dynamically. - typedef RPC_STATUS (RPC_ENTRY *UuidCreate_type)(UUID* Uuid); - - // Runs the main loop for the exception handler thread. - static DWORD WINAPI ExceptionHandlerThreadMain(void* lpParameter); - - // Called on the exception thread when an unhandled exception occurs. - // Signals the exception handler thread to handle the exception. - static LONG WINAPI HandleException(EXCEPTION_POINTERS* exinfo); - -#if _MSC_VER >= 1400 // MSVC 2005/8 - // This function will be called by some CRT functions when they detect - // that they were passed an invalid parameter. Note that in _DEBUG builds, - // the CRT may display an assertion dialog before calling this function, - // and the function will not be called unless the assertion dialog is - // dismissed by clicking "Ignore." - static void HandleInvalidParameter(const wchar_t* expression, - const wchar_t* function, - const wchar_t* file, - unsigned int line, - uintptr_t reserved); -#endif // _MSC_VER >= 1400 - - // This function will be called by the CRT when a pure virtual - // function is called. - static void HandlePureVirtualCall(); - - // This is called on the exception thread or on another thread that - // the user wishes to produce a dump from. It calls - // WriteMinidumpWithException on the handler thread, avoiding stack - // overflows and inconsistent dumps due to writing the dump from - // the exception thread. If the dump is requested as a result of an - // exception, exinfo contains exception information, otherwise, it - // is NULL. If the dump is requested as a result of an assertion - // (such as an invalid parameter being passed to a CRT function), - // assertion contains data about the assertion, otherwise, it is NULL. - bool WriteMinidumpOnHandlerThread(EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // This function does the actual writing of a minidump. It is called - // on the handler thread. requesting_thread_id is the ID of the thread - // that requested the dump. If the dump is requested as a result of - // an exception, exinfo contains exception information, otherwise, - // it is NULL. - bool WriteMinidumpWithException(DWORD requesting_thread_id, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // Generates a new ID and stores it in next_minidump_id_, and stores the - // path of the next minidump to be written in next_minidump_path_. - void UpdateNextID(); - - FilterCallback filter_; - MinidumpCallback callback_; - void* callback_context_; - - scoped_ptr crash_generation_client_; - - // The directory in which a minidump will be written, set by the dump_path - // argument to the constructor, or set_dump_path. - wstring dump_path_; - - // The basename of the next minidump to be written, without the extension. - wstring next_minidump_id_; - - // The full pathname of the next minidump to be written, including the file - // extension. - wstring next_minidump_path_; - - // Pointers to C-string representations of the above. These are set when - // the above wstring versions are set in order to avoid calling c_str during - // an exception, as c_str may attempt to allocate heap memory. These - // pointers are not owned by the ExceptionHandler object, but their lifetimes - // should be equivalent to the lifetimes of the associated wstring, provided - // that the wstrings are not altered. - const wchar_t* dump_path_c_; - const wchar_t* next_minidump_id_c_; - const wchar_t* next_minidump_path_c_; - - HMODULE dbghelp_module_; - MiniDumpWriteDump_type minidump_write_dump_; - MINIDUMP_TYPE dump_type_; - - HMODULE rpcrt4_module_; - UuidCreate_type uuid_create_; - - // Tracks the handler types that were installed according to the - // handler_types constructor argument. - int handler_types_; - - // When installed_handler_ is true, previous_filter_ is the unhandled - // exception filter that was set prior to installing ExceptionHandler as - // the unhandled exception filter and pointing it to |this|. NULL indicates - // that there is no previous unhandled exception filter. - LPTOP_LEVEL_EXCEPTION_FILTER previous_filter_; - -#if _MSC_VER >= 1400 // MSVC 2005/8 - // Beginning in VC 8, the CRT provides an invalid parameter handler that will - // be called when some CRT functions are passed invalid parameters. In - // earlier CRTs, the same conditions would cause unexpected behavior or - // crashes. - _invalid_parameter_handler previous_iph_; -#endif // _MSC_VER >= 1400 - - // The CRT allows you to override the default handler for pure - // virtual function calls. - _purecall_handler previous_pch_; - - // The exception handler thread. - HANDLE handler_thread_; - - // True if the exception handler is being destroyed. - // Starting with MSVC 2005, Visual C has stronger guarantees on volatile vars. - // It has release semantics on write and acquire semantics on reads. - // See the msdn documentation. - volatile bool is_shutdown_; - - // The critical section enforcing the requirement that only one exception be - // handled by a handler at a time. - CRITICAL_SECTION handler_critical_section_; - - // Semaphores used to move exception handling between the exception thread - // and the handler thread. handler_start_semaphore_ is signalled by the - // exception thread to wake up the handler thread when an exception occurs. - // handler_finish_semaphore_ is signalled by the handler thread to wake up - // the exception thread when handling is complete. - HANDLE handler_start_semaphore_; - HANDLE handler_finish_semaphore_; - - // The next 2 fields contain data passed from the requesting thread to - // the handler thread. - - // The thread ID of the thread requesting the dump (either the exception - // thread or any other thread that called WriteMinidump directly). - DWORD requesting_thread_id_; - - // The exception info passed to the exception handler on the exception - // thread, if an exception occurred. NULL for user-requested dumps. - EXCEPTION_POINTERS* exception_info_; - - // If the handler is invoked due to an assertion, this will contain a - // pointer to the assertion information. It is NULL at other times. - MDRawAssertionInfo* assertion_; - - // The return value of the handler, passed from the handler thread back to - // the requesting thread. - bool handler_return_value_; - - // If true, the handler will intercept EXCEPTION_BREAKPOINT and - // EXCEPTION_SINGLE_STEP exceptions. Leave this false (the default) - // to not interfere with debuggers. - bool handle_debug_exceptions_; - - // A stack of ExceptionHandler objects that have installed unhandled - // exception filters. This vector is used by HandleException to determine - // which ExceptionHandler object to route an exception to. When an - // ExceptionHandler is created with install_handler true, it will append - // itself to this list. - static vector* handler_stack_; - - // The index of the ExceptionHandler in handler_stack_ that will handle the - // next exception. Note that 0 means the last entry in handler_stack_, 1 - // means the next-to-last entry, and so on. This is used by HandleException - // to support multiple stacked Breakpad handlers. - static LONG handler_stack_index_; - - // handler_stack_critical_section_ guards operations on handler_stack_ and - // handler_stack_index_. The critical section is initialized by the - // first instance of the class and destroyed by the last instance of it. - static CRITICAL_SECTION handler_stack_critical_section_; - - // The number of instances of this class. - volatile static LONG instance_count_; - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/sender/crash_report_sender.h b/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/sender/crash_report_sender.h deleted file mode 100644 index da1ed0af..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/client/windows/sender/crash_report_sender.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ -#define CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ - -// CrashReportSender is a "static" class which provides an API to upload -// crash reports via HTTP(S). A crash report is formatted as a multipart POST -// request, which contains a set of caller-supplied string key/value pairs, -// and a minidump file to upload. -// -// To use this library in your project, you will need to link against -// wininet.lib. - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -namespace google_breakpad { - -using std::wstring; -using std::map; - -typedef enum { - RESULT_FAILED = 0, // Failed to communicate with the server; try later. - RESULT_REJECTED, // Successfully sent the crash report, but the - // server rejected it; don't resend this report. - RESULT_SUCCEEDED, // The server accepted the crash report. - RESULT_THROTTLED // No attempt was made to send the crash report, because - // we exceeded the maximum reports per day. -} ReportResult; - -class CrashReportSender { - public: - // Initializes a CrashReportSender instance. - // If checkpoint_file is non-empty, breakpad will persist crash report - // state to this file. A checkpoint file is required for - // set_max_reports_per_day() to function properly. - explicit CrashReportSender(const wstring &checkpoint_file); - ~CrashReportSender() {} - - // Sets the maximum number of crash reports that will be sent in a 24-hour - // period. This uses the state persisted to the checkpoint file. - // The default value of -1 means that there is no limit on reports sent. - void set_max_reports_per_day(int reports) { - max_reports_per_day_ = reports; - } - - int max_reports_per_day() const { return max_reports_per_day_; } - - // Sends the specified minidump file, along with the map of - // name value pairs, as a multipart POST request to the given URL. - // Parameter names must contain only printable ASCII characters, - // and may not contain a quote (") character. - // Only HTTP(S) URLs are currently supported. The return value indicates - // the result of the operation (see above for possible results). - // If report_code is non-NULL and the report is sent successfully (that is, - // the return value is RESULT_SUCCEEDED), a code uniquely identifying the - // report will be returned in report_code. - // (Otherwise, report_code will be unchanged.) - ReportResult SendCrashReport(const wstring &url, - const map ¶meters, - const wstring &dump_file_name, - wstring *report_code); - - private: - // Reads persistent state from a checkpoint file. - void ReadCheckpoint(FILE *fd); - - // Called when a new report has been sent, to update the checkpoint state. - void ReportSent(int today); - - // Returns today's date (UTC) formatted as YYYYMMDD. - int GetCurrentDate() const; - - // Opens the checkpoint file with the specified mode. - // Returns zero on success, or an error code on failure. - int OpenCheckpointFile(const wchar_t *mode, FILE **fd); - - wstring checkpoint_file_; - int max_reports_per_day_; - // The last date on which we sent a report, expressed as YYYYMMDD. - int last_sent_date_; - // Number of reports sent on last_sent_date_ - int reports_sent_; - - // Disallow copy constructor and operator= - explicit CrashReportSender(const CrashReportSender &); - void operator=(const CrashReportSender &); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/convert_UTF.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/convert_UTF.h deleted file mode 100644 index b1556de8..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/convert_UTF.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* --------------------------------------------------------------------- - -Conversions between UTF32, UTF-16, and UTF-8. Header file. - -Several funtions are included here, forming a complete set of -conversions between the three formats. UTF-7 is not included -here, but is handled in a separate source file. - -Each of these routines takes pointers to input buffers and output -buffers. The input buffers are const. - -Each routine converts the text between *sourceStart and sourceEnd, -putting the result into the buffer between *targetStart and -targetEnd. Note: the end pointers are *after* the last item: e.g. -*(sourceEnd - 1) is the last item. - -The return result indicates whether the conversion was successful, -and if not, whether the problem was in the source or target buffers. -(Only the first encountered problem is indicated.) - -After the conversion, *sourceStart and *targetStart are both -updated to point to the end of last text successfully converted in -the respective buffers. - -Input parameters: -sourceStart - pointer to a pointer to the source buffer. -The contents of this are modified on return so that -it points at the next thing to be converted. -targetStart - similarly, pointer to pointer to the target buffer. -sourceEnd, targetEnd - respectively pointers to the ends of the -two buffers, for overflow checking only. - -These conversion functions take a ConversionFlags argument. When this -flag is set to strict, both irregular sequences and isolated surrogates -will cause an error. When the flag is set to lenient, both irregular -sequences and isolated surrogates are converted. - -Whether the flag is strict or lenient, all illegal sequences will cause -an error return. This includes sequences such as: , , -or in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code -must check for illegal sequences. - -When the flag is set to lenient, characters over 0x10FFFF are converted -to the replacement character; otherwise (when the flag is set to strict) -they constitute an error. - -Output parameters: -The value "sourceIllegal" is returned from some routines if the input -sequence is malformed. When "sourceIllegal" is returned, the source -value will point to the illegal value that caused the problem. E.g., -in UTF-8 when a sequence is malformed, it points to the start of the -malformed sequence. - -Author: Mark E. Davis, 1994. -Rev History: Rick McGowan, fixes & updates May 2001. -Fixes & updates, Sept 2001. - ------------------------------------------------------------------------- */ - -/* --------------------------------------------------------------------- -The following 4 definitions are compiler-specific. -The C standard does not guarantee that wchar_t has at least -16 bits, so wchar_t is no less portable than unsigned short! -All should be unsigned values to avoid sign extension during -bit mask & shift operations. ------------------------------------------------------------------------- */ - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ -typedef unsigned char Boolean; /* 0 or 1 */ - -/* Some fundamental constants */ -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_MAX_BMP (UTF32)0x0000FFFF -#define UNI_MAX_UTF16 (UTF32)0x0010FFFF -#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF -#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF - -typedef enum { - conversionOK, /* conversion successful */ - sourceExhausted, /* partial character in source, but hit end */ - targetExhausted, /* insuff. room in target for conversion */ - sourceIllegal /* source sequence is illegal/malformed */ -} ConversionResult; - -typedef enum { - strictConversion = 0, - lenientConversion -} ConversionFlags; - -/* This is for C++ and does no harm in C */ -#ifdef __cplusplus -extern "C" { -#endif - -ConversionResult ConvertUTF8toUTF16 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF8 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF8toUTF32 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF8 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF32 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF16 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd); - -#ifdef __cplusplus -} -#endif - -/* --------------------------------------------------------------------- */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/md5.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/md5.h deleted file mode 100644 index dbf4893c..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/md5.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2007 Google Inc. All Rights Reserved. -// Author: liuli@google.com (Liu Li) -#ifndef COMMON_MD5_H__ -#define COMMON_MD5_H__ - -#include - -typedef uint32_t u32; -typedef uint8_t u8; - -struct MD5Context { - u32 buf[4]; - u32 bits[2]; - u8 in[64]; -}; - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -void MD5Init(struct MD5Context *ctx); - -void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len); - -void MD5Final(unsigned char digest[16], struct MD5Context *ctx); - -#ifdef __cplusplus -} -#endif - -#endif // COMMON_MD5_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/string_conversion.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/string_conversion.h deleted file mode 100644 index d51f46bb..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/string_conversion.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// string_conversion.h: Conversion between different UTF-8/16/32 encodings. - -#ifndef COMMON_STRING_CONVERSION_H__ -#define COMMON_STRING_CONVERSION_H__ - -#include -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::vector; - -// Convert |in| to UTF-16 into |out|. Use platform byte ordering. If the -// conversion failed, |out| will be zero length. -void UTF8ToUTF16(const char *in, vector *out); - -// Convert at least one character (up to a maximum of |in_length|) from |in| -// to UTF-16 into |out|. Return the number of characters consumed from |in|. -// Any unused characters in |out| will be initialized to 0. No memory will -// be allocated by this routine. -int UTF8ToUTF16Char(const char *in, int in_length, u_int16_t out[2]); - -// Convert |in| to UTF-16 into |out|. Use platform byte ordering. If the -// conversion failed, |out| will be zero length. -void UTF32ToUTF16(const wchar_t *in, vector *out); - -// Convert |in| to UTF-16 into |out|. Any unused characters in |out| will be -// initialized to 0. No memory will be allocated by this routine. -void UTF32ToUTF16Char(wchar_t in, u_int16_t out[2]); - -// Convert |in| to UTF-8. If |swap| is true, swap bytes before converting. -std::string UTF16ToUTF8(const vector &in, bool swap); - -} // namespace google_breakpad - -#endif // COMMON_STRING_CONVERSION_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/guid_string.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/guid_string.h deleted file mode 100644 index f8aa8a23..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/guid_string.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// guid_string.cc: Convert GUIDs to strings. - -#ifndef COMMON_WINDOWS_GUID_STRING_H__ -#define COMMON_WINDOWS_GUID_STRING_H__ - -#include - -#include - -namespace google_breakpad { - -using std::wstring; - -class GUIDString { - public: - // Converts guid to a string in the format recommended by RFC 4122 and - // returns the string. - static wstring GUIDToWString(GUID *guid); - - // Converts guid to a string formatted as uppercase hexadecimal, with - // no separators, and returns the string. This is the format used for - // symbol server identifiers, although identifiers have an age tacked - // on to the string. - static wstring GUIDToSymbolServerWString(GUID *guid); -}; - -} // namespace google_breakpad - -#endif // COMMON_WINDOWS_GUID_STRING_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/http_upload.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/http_upload.h deleted file mode 100644 index a1ba7ae1..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/http_upload.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// HTTPUpload provides a "nice" API to send a multipart HTTP(S) POST -// request using wininet. It currently supports requests that contain -// a set of string parameters (key/value pairs), and a file to upload. - -#ifndef COMMON_WINDOWS_HTTP_UPLOAD_H__ -#define COMMON_WINDOWS_HTTP_UPLOAD_H__ - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -#include -#include -#include - -namespace google_breakpad { - -using std::string; -using std::wstring; -using std::map; -using std::vector; - -class HTTPUpload { - public: - // Sends the given set of parameters, along with the contents of - // upload_file, as a multipart POST request to the given URL. - // file_part_name contains the name of the file part of the request - // (i.e. it corresponds to the name= attribute on an . - // Parameter names must contain only printable ASCII characters, - // and may not contain a quote (") character. - // Only HTTP(S) URLs are currently supported. Returns true on success. - // If the request is successful and response_body is non-NULL, - // the response body will be returned in response_body. - // If response_code is non-NULL, it will be set to the HTTP response code - // received (or 0 if the request failed before getting an HTTP response). - static bool SendRequest(const wstring &url, - const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - wstring *response_body, - int *response_code); - - private: - class AutoInternetHandle; - - // Retrieves the HTTP response. If NULL is passed in for response, - // this merely checks (via the return value) that we were successfully - // able to retrieve exactly as many bytes of content in the response as - // were specified in the Content-Length header. - static bool HTTPUpload::ReadResponse(HINTERNET request, wstring* response); - - // Generates a new multipart boundary for a POST request - static wstring GenerateMultipartBoundary(); - - // Generates a HTTP request header for a multipart form submit. - static wstring GenerateRequestHeader(const wstring &boundary); - - // Given a set of parameters, an upload filename, and a file part name, - // generates a multipart request body string with these parameters - // and minidump contents. Returns true on success. - static bool GenerateRequestBody(const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - const wstring &boundary, - string *request_body); - - // Fills the supplied vector with the contents of filename. - static void GetFileContents(const wstring &filename, vector *contents); - - // Converts a UTF8 string to UTF16. - static wstring UTF8ToWide(const string &utf8); - - // Converts a UTF16 string to UTF8. - static string WideToUTF8(const wstring &wide); - - // Checks that the given list of parameters has only printable - // ASCII characters in the parameter name, and does not contain - // any quote (") characters. Returns true if so. - static bool CheckParameters(const map ¶meters); - - // No instances of this class should be created. - // Disallow all constructors, destructors, and operator=. - HTTPUpload(); - explicit HTTPUpload(const HTTPUpload &); - void operator=(const HTTPUpload &); - ~HTTPUpload(); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // COMMON_WINDOWS_HTTP_UPLOAD_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/pdb_source_line_writer.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/pdb_source_line_writer.h deleted file mode 100644 index e91d0737..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/pdb_source_line_writer.h +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// PDBSourceLineWriter uses a pdb file produced by Visual C++ to output -// a line/address map for use with BasicSourceLineResolver. - -#ifndef _PDB_SOURCE_LINE_WRITER_H__ -#define _PDB_SOURCE_LINE_WRITER_H__ - -#include - -#include - -struct IDiaEnumLineNumbers; -struct IDiaSession; -struct IDiaSymbol; - -namespace google_breakpad { - -using std::wstring; - -// A structure that carries information that identifies a pdb file. -struct PDBModuleInfo { - public: - // The basename of the pdb file from which information was loaded. - wstring debug_file; - - // The pdb's identifier. For recent pdb files, the identifier consists - // of the pdb's guid, in uppercase hexadecimal form without any dashes - // or separators, followed immediately by the pdb's age, also in - // uppercase hexadecimal form. For older pdb files which have no guid, - // the identifier is the pdb's 32-bit signature value, in zero-padded - // hexadecimal form, followed immediately by the pdb's age, in lowercase - // hexadecimal form. - wstring debug_identifier; - - // A string identifying the cpu that the pdb is associated with. - // Currently, this may be "x86" or "unknown". - wstring cpu; -}; - -class PDBSourceLineWriter { - public: - enum FileFormat { - PDB_FILE, // a .pdb file containing debug symbols - EXE_FILE, // a .exe or .dll file - ANY_FILE // try PDB_FILE and then EXE_FILE - }; - - explicit PDBSourceLineWriter(); - ~PDBSourceLineWriter(); - - // Opens the given file. For executable files, the corresponding pdb - // file must be available; Open will be if it is not. - // If there is already a pdb file open, it is automatically closed. - // Returns true on success. - bool Open(const wstring &file, FileFormat format); - - // Locates the pdb file for the given executable (exe or dll) file, - // and opens it. If there is already a pdb file open, it is automatically - // closed. Returns true on success. - bool OpenExecutable(const wstring &exe_file); - - // Writes a map file from the current pdb file to the given file stream. - // Returns true on success. - bool WriteMap(FILE *map_file); - - // Closes the current pdb file and its associated resources. - void Close(); - - // Retrieves information about the module's debugging file. Returns - // true on success and false on failure. - bool GetModuleInfo(PDBModuleInfo *info); - - // Sets uses_guid to true if the opened file uses a new-style CodeView - // record with a 128-bit GUID, or false if the opened file uses an old-style - // CodeView record. When no GUID is available, a 32-bit signature should be - // used to identify the module instead. If the information cannot be - // determined, this method returns false. - bool UsesGUID(bool *uses_guid); - - private: - // Outputs the line/address pairs for each line in the enumerator. - // Returns true on success. - bool PrintLines(IDiaEnumLineNumbers *lines); - - // Outputs a function address and name, followed by its source line list. - // Returns true on success. - bool PrintFunction(IDiaSymbol *function); - - // Outputs all functions as described above. Returns true on success. - bool PrintFunctions(); - - // Outputs all of the source files in the session's pdb file. - // Returns true on success. - bool PrintSourceFiles(); - - // Outputs all of the frame information necessary to construct stack - // backtraces in the absence of frame pointers. Returns true on success. - bool PrintFrameData(); - - // Outputs a single public symbol address and name, if the symbol corresponds - // to a code address. Returns true on success. If symbol is does not - // correspond to code, returns true without outputting anything. - bool PrintCodePublicSymbol(IDiaSymbol *symbol); - - // Outputs a line identifying the PDB file that is being dumped, along with - // its uuid and age. - bool PrintPDBInfo(); - - // Returns the function name for a symbol. If possible, the name is - // undecorated. If the symbol's decorated form indicates the size of - // parameters on the stack, this information is returned in stack_param_size. - // Returns true on success. If the symbol doesn't encode parameter size - // information, stack_param_size is set to -1. - static bool GetSymbolFunctionName(IDiaSymbol *function, BSTR *name, - int *stack_param_size); - - // Returns the number of bytes of stack space used for a function's - // parameters. function must have the tag SymTagFunction. In the event of - // a failure, returns 0, which is also a valid number of bytes. - static int GetFunctionStackParamSize(IDiaSymbol *function); - - // The session for the currently-open pdb file. - CComPtr session_; - - // The current output file for this WriteMap invocation. - FILE *output_; - - // Disallow copy ctor and operator= - PDBSourceLineWriter(const PDBSourceLineWriter&); - void operator=(const PDBSourceLineWriter&); -}; - -} // namespace google_breakpad - -#endif // _PDB_SOURCE_LINE_WRITER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/string_utils-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/string_utils-inl.h deleted file mode 100644 index 6f650812..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/common/windows/string_utils-inl.h +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// string_utils-inl.h: Safer string manipulation on Windows, supporting -// pre-MSVC8 environments. - -#ifndef COMMON_WINDOWS_STRING_UTILS_INL_H__ -#define COMMON_WINDOWS_STRING_UTILS_INL_H__ - -#include -#include - -#include - -// The "ll" printf format size specifier corresponding to |long long| was -// intrudced in MSVC8. Earlier versions did not provide this size specifier, -// but "I64" can be used to print 64-bit types. Don't use "I64" where "ll" -// is available, in the event of oddball systems where |long long| is not -// 64 bits wide. -#if _MSC_VER >= 1400 // MSVC 2005/8 -#define WIN_STRING_FORMAT_LL "ll" -#else // MSC_VER >= 1400 -#define WIN_STRING_FORMAT_LL "I64" -#endif // MSC_VER >= 1400 - -// A nonconforming version of swprintf, without the length argument, was -// included with the CRT prior to MSVC8. Although a conforming version was -// also available via an overload, it is not reliably chosen. _snwprintf -// behaves as a standards-confirming swprintf should, so force the use of -// _snwprintf when using older CRTs. -#if _MSC_VER < 1400 // MSVC 2005/8 -#define swprintf _snwprintf -#else -// For MSVC8 and newer, swprintf_s is the recommended method. Conveniently, -// it takes the same argument list as swprintf. -#define swprintf swprintf_s -#endif // MSC_VER < 1400 - -namespace google_breakpad { - -using std::string; -using std::wstring; - -class WindowsStringUtils { - public: - // Roughly equivalent to MSVC8's wcscpy_s, except pre-MSVC8, this does - // not fail if source is longer than destination_size. The destination - // buffer is always 0-terminated. - static void safe_wcscpy(wchar_t *destination, size_t destination_size, - const wchar_t *source); - - // Roughly equivalent to MSVC8's wcsncpy_s, except that _TRUNCATE cannot - // be passed directly, and pre-MSVC8, this will not fail if source or count - // are longer than destination_size. The destination buffer is always - // 0-terminated. - static void safe_wcsncpy(wchar_t *destination, size_t destination_size, - const wchar_t *source, size_t count); - - // Performs multi-byte to wide character conversion on C++ strings, using - // mbstowcs_s (MSVC8) or mbstowcs (pre-MSVC8). Returns false on failure, - // without setting wcs. - static bool safe_mbstowcs(const string &mbs, wstring *wcs); - - // Returns the base name of a file, e.g. strips off the path. - static wstring GetBaseName(const wstring &filename); - - private: - // Disallow instantiation and other object-based operations. - WindowsStringUtils(); - WindowsStringUtils(const WindowsStringUtils&); - ~WindowsStringUtils(); - void operator=(const WindowsStringUtils&); -}; - -// static -inline void WindowsStringUtils::safe_wcscpy(wchar_t *destination, - size_t destination_size, - const wchar_t *source) { -#if _MSC_VER >= 1400 // MSVC 2005/8 - wcscpy_s(destination, destination_size, source); -#else // _MSC_VER >= 1400 - // Pre-MSVC 2005/8 doesn't have wcscpy_s. Simulate it with wcsncpy. - // wcsncpy doesn't 0-terminate the destination buffer if the source string - // is longer than size. Ensure that the destination is 0-terminated. - wcsncpy(destination, source, destination_size); - if (destination && destination_size) - destination[destination_size - 1] = 0; -#endif // _MSC_VER >= 1400 -} - -// static -inline void WindowsStringUtils::safe_wcsncpy(wchar_t *destination, - size_t destination_size, - const wchar_t *source, - size_t count) { -#if _MSC_VER >= 1400 // MSVC 2005/8 - wcsncpy_s(destination, destination_size, source, count); -#else // _MSC_VER >= 1400 - // Pre-MSVC 2005/8 doesn't have wcsncpy_s. Simulate it with wcsncpy. - // wcsncpy doesn't 0-terminate the destination buffer if the source string - // is longer than size. Ensure that the destination is 0-terminated. - if (destination_size < count) - count = destination_size; - - wcsncpy(destination, source, count); - if (destination && count) - destination[count - 1] = 0; -#endif // _MSC_VER >= 1400 -} - -} // namespace google_breakpad - -#endif // COMMON_WINDOWS_STRING_UTILS_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/breakpad_types.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/breakpad_types.h deleted file mode 100644 index 926b47f2..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/breakpad_types.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* breakpad_types.h: Precise-width types - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file ensures that types u_intN_t are defined for N = 8, 16, 32, and - * 64. Types of precise widths are crucial to the task of writing data - * structures on one platform and reading them on another. - * - * Author: Mark Mentovai */ - -#ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ -#define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ - -#ifndef _WIN32 - -#include -#ifndef __STDC_FORMAT_MACROS -#define __STDC_FORMAT_MACROS -#endif /* __STDC_FORMAT_MACROS */ -#include - -#if defined(__SUNPRO_CC) || (defined(__GNUC__) && defined(__sun__)) -typedef uint8_t u_int8_t; -typedef uint16_t u_int16_t; -typedef uint32_t u_int32_t; -typedef uint64_t u_int64_t; -#endif - -#else /* !_WIN32 */ - -#include - -typedef unsigned __int8 u_int8_t; -typedef unsigned __int16 u_int16_t; -typedef unsigned __int32 u_int32_t; -typedef unsigned __int64 u_int64_t; - -#endif /* !_WIN32 */ - -typedef struct { - u_int64_t high; - u_int64_t low; -} u_int128_t; - -typedef u_int64_t breakpad_time_t; - -/* Try to get PRIx64 from inttypes.h, but if it's not defined, fall back to - * llx, which is the format string for "long long" - this is a 64-bit - * integral type on many systems. */ -#ifndef PRIx64 -#define PRIx64 "llx" -#endif /* !PRIx64 */ - -#endif /* GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_amd64.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_amd64.h deleted file mode 100644 index 75dae7dd..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_amd64.h +++ /dev/null @@ -1,231 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on amd64. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ - - -/* - * AMD64 support, see WINNT.H - */ - -typedef struct { - u_int16_t control_word; - u_int16_t status_word; - u_int8_t tag_word; - u_int8_t reserved1; - u_int16_t error_opcode; - u_int32_t error_offset; - u_int16_t error_selector; - u_int16_t reserved2; - u_int32_t data_offset; - u_int16_t data_selector; - u_int16_t reserved3; - u_int32_t mx_csr; - u_int32_t mx_csr_mask; - u_int128_t float_registers[8]; - u_int128_t xmm_registers[16]; - u_int8_t reserved4[96]; -} MDXmmSaveArea32AMD64; /* XMM_SAVE_AREA32 */ - -#define MD_CONTEXT_AMD64_VR_COUNT 26 - -typedef struct { - /* - * Register parameter home addresses. - */ - u_int64_t p1_home; - u_int64_t p2_home; - u_int64_t p3_home; - u_int64_t p4_home; - u_int64_t p5_home; - u_int64_t p6_home; - - /* The next field determines the layout of the structure, and which parts - * of it are populated */ - u_int32_t context_flags; - u_int32_t mx_csr; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int16_t cs; - - /* The next 4 registers are included with MD_CONTEXT_AMD64_SEGMENTS */ - u_int16_t ds; - u_int16_t es; - u_int16_t fs; - u_int16_t gs; - - /* The next 2 registers are included with MD_CONTEXT_AMD64_CONTROL */ - u_int16_t ss; - u_int32_t eflags; - - /* The next 6 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */ - u_int64_t dr0; - u_int64_t dr1; - u_int64_t dr2; - u_int64_t dr3; - u_int64_t dr6; - u_int64_t dr7; - - /* The next 4 registers are included with MD_CONTEXT_AMD64_INTEGER */ - u_int64_t rax; - u_int64_t rcx; - u_int64_t rdx; - u_int64_t rbx; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int64_t rsp; - - /* The next 11 registers are included with MD_CONTEXT_AMD64_INTEGER */ - u_int64_t rbp; - u_int64_t rsi; - u_int64_t rdi; - u_int64_t r8; - u_int64_t r9; - u_int64_t r10; - u_int64_t r11; - u_int64_t r12; - u_int64_t r13; - u_int64_t r14; - u_int64_t r15; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int64_t rip; - - /* The next set of registers are included with - * MD_CONTEXT_AMD64_FLOATING_POINT - */ - union { - MDXmmSaveArea32AMD64 flt_save; - struct { - u_int128_t header[2]; - u_int128_t legacy[8]; - u_int128_t xmm0; - u_int128_t xmm1; - u_int128_t xmm2; - u_int128_t xmm3; - u_int128_t xmm4; - u_int128_t xmm5; - u_int128_t xmm6; - u_int128_t xmm7; - u_int128_t xmm8; - u_int128_t xmm9; - u_int128_t xmm10; - u_int128_t xmm11; - u_int128_t xmm12; - u_int128_t xmm13; - u_int128_t xmm14; - u_int128_t xmm15; - } sse_registers; - }; - - u_int128_t vector_register[MD_CONTEXT_AMD64_VR_COUNT]; - u_int64_t vector_control; - - /* The next 5 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */ - u_int64_t debug_control; - u_int64_t last_branch_to_rip; - u_int64_t last_branch_from_rip; - u_int64_t last_exception_to_rip; - u_int64_t last_exception_from_rip; - -} MDRawContextAMD64; /* CONTEXT */ - -/* For (MDRawContextAMD64).context_flags. These values indicate the type of - * context stored in the structure. The high 26 bits identify the CPU, the - * low 6 bits identify the type of context saved. */ -#define MD_CONTEXT_AMD64_CONTROL (MD_CONTEXT_AMD64 | 0x00000001) - /* CONTEXT_CONTROL */ -#define MD_CONTEXT_AMD64_INTEGER (MD_CONTEXT_AMD64 | 0x00000002) - /* CONTEXT_INTEGER */ -#define MD_CONTEXT_AMD64_SEGMENTS (MD_CONTEXT_AMD64 | 0x00000004) - /* CONTEXT_SEGMENTS */ -#define MD_CONTEXT_AMD64_FLOATING_POINT (MD_CONTEXT_AMD64 | 0x00000008) - /* CONTEXT_FLOATING_POINT */ -#define MD_CONTEXT_AMD64_DEBUG_REGISTERS (MD_CONTEXT_AMD64 | 0x00000010) - /* CONTEXT_DEBUG_REGISTERS */ -/* WinNT.h refers to CONTEXT_MMX_REGISTERS but doesn't appear to define it - * I think it really means CONTEXT_FLOATING_POINT. - */ - -#define MD_CONTEXT_AMD64_FULL (MD_CONTEXT_AMD64_CONTROL | \ - MD_CONTEXT_AMD64_INTEGER | \ - MD_CONTEXT_AMD64_FLOATING_POINT) - /* CONTEXT_FULL */ - -#define MD_CONTEXT_AMD64_ALL (MD_CONTEXT_AMD64_FULL | \ - MD_CONTEXT_AMD64_SEGMENTS | \ - MD_CONTEXT_X86_DEBUG_REGISTERS) - /* CONTEXT_ALL */ - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc.h deleted file mode 100644 index 038e921a..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc.h +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on ppc. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -/* - * Breakpad minidump extension for PowerPC support. Based on Darwin/Mac OS X' - * mach/ppc/_types.h - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ - -#define MD_FLOATINGSAVEAREA_PPC_FPR_COUNT 32 - -typedef struct { - /* fpregs is a double[32] in mach/ppc/_types.h, but a u_int64_t is used - * here for precise sizing. */ - u_int64_t fpregs[MD_FLOATINGSAVEAREA_PPC_FPR_COUNT]; - u_int32_t fpscr_pad; - u_int32_t fpscr; /* Status/control */ -} MDFloatingSaveAreaPPC; /* Based on ppc_float_state */ - - -#define MD_VECTORSAVEAREA_PPC_VR_COUNT 32 - -typedef struct { - /* Vector registers (including vscr) are 128 bits, but mach/ppc/_types.h - * exposes them as four 32-bit quantities. */ - u_int128_t save_vr[MD_VECTORSAVEAREA_PPC_VR_COUNT]; - u_int128_t save_vscr; /* Status/control */ - u_int32_t save_pad5[4]; - u_int32_t save_vrvalid; /* Identifies which vector registers are saved */ - u_int32_t save_pad6[7]; -} MDVectorSaveAreaPPC; /* ppc_vector_state */ - - -#define MD_CONTEXT_PPC_GPR_COUNT 32 - -/* Use the same 32-bit alignment when accessing this structure from 64-bit code - * as is used natively in 32-bit code. #pragma pack is a MSVC extension - * supported by gcc. */ -#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) -#pragma pack(4) -#else -#pragma pack(push, 4) -#endif - -typedef struct { - /* context_flags is not present in ppc_thread_state, but it aids - * identification of MDRawContextPPC among other raw context types, - * and it guarantees alignment when we get to float_save. */ - u_int32_t context_flags; - - u_int32_t srr0; /* Machine status save/restore: stores pc - * (instruction) */ - u_int32_t srr1; /* Machine status save/restore: stores msr - * (ps, program/machine state) */ - /* ppc_thread_state contains 32 fields, r0 .. r31. Here, an array is - * used for brevity. */ - u_int32_t gpr[MD_CONTEXT_PPC_GPR_COUNT]; - u_int32_t cr; /* Condition */ - u_int32_t xer; /* Integer (fiXed-point) exception */ - u_int32_t lr; /* Link */ - u_int32_t ctr; /* Count */ - u_int32_t mq; /* Multiply/Quotient (PPC 601, POWER only) */ - u_int32_t vrsave; /* Vector save */ - - /* float_save and vector_save aren't present in ppc_thread_state, but - * are represented in separate structures that still define a thread's - * context. */ - MDFloatingSaveAreaPPC float_save; - MDVectorSaveAreaPPC vector_save; -} MDRawContextPPC; /* Based on ppc_thread_state */ - -#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) -#pragma pack(0) -#else -#pragma pack(pop) -#endif - -/* For (MDRawContextPPC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_PPC 0x20000000 -#define MD_CONTEXT_PPC_BASE (MD_CONTEXT_PPC | 0x00000001) -#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008) -#define MD_CONTEXT_PPC_VECTOR (MD_CONTEXT_PPC | 0x00000020) - -#define MD_CONTEXT_PPC_FULL MD_CONTEXT_PPC_BASE -#define MD_CONTEXT_PPC_ALL (MD_CONTEXT_PPC_FULL | \ - MD_CONTEXT_PPC_FLOATING_POINT | \ - MD_CONTEXT_PPC_VECTOR) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc64.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc64.h deleted file mode 100644 index a788e5d1..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_ppc64.h +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (c) 2008, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on ppc64. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Neal Sidhwaney */ - - -/* - * Breakpad minidump extension for PPC64 support. Based on Darwin/Mac OS X' - * mach/ppc/_types.h - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ - -#include "minidump_cpu_ppc.h" - -// these types are the same in ppc64 & ppc -typedef MDFloatingSaveAreaPPC MDFloatingSaveAreaPPC64; -typedef MDVectorSaveAreaPPC MDVectorSaveAreaPPC64; - -#define MD_CONTEXT_PPC64_GPR_COUNT MD_CONTEXT_PPC_GPR_COUNT - -typedef struct { - /* context_flags is not present in ppc_thread_state, but it aids - * identification of MDRawContextPPC among other raw context types, - * and it guarantees alignment when we get to float_save. */ - u_int64_t context_flags; - - u_int64_t srr0; /* Machine status save/restore: stores pc - * (instruction) */ - u_int64_t srr1; /* Machine status save/restore: stores msr - * (ps, program/machine state) */ - /* ppc_thread_state contains 32 fields, r0 .. r31. Here, an array is - * used for brevity. */ - u_int64_t gpr[MD_CONTEXT_PPC64_GPR_COUNT]; - u_int64_t cr; /* Condition */ - u_int64_t xer; /* Integer (fiXed-point) exception */ - u_int64_t lr; /* Link */ - u_int64_t ctr; /* Count */ - u_int64_t vrsave; /* Vector save */ - - /* float_save and vector_save aren't present in ppc_thread_state, but - * are represented in separate structures that still define a thread's - * context. */ - MDFloatingSaveAreaPPC float_save; - MDVectorSaveAreaPPC vector_save; -} MDRawContextPPC64; /* Based on ppc_thread_state */ - -/* For (MDRawContextPPC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_PPC 0x20000000 -#define MD_CONTEXT_PPC_BASE (MD_CONTEXT_PPC | 0x00000001) -#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008) -#define MD_CONTEXT_PPC_VECTOR (MD_CONTEXT_PPC | 0x00000020) - -#define MD_CONTEXT_PPC_FULL MD_CONTEXT_PPC_BASE -#define MD_CONTEXT_PPC_ALL (MD_CONTEXT_PPC_FULL | \ - MD_CONTEXT_PPC_FLOATING_POINT | \ - MD_CONTEXT_PPC_VECTOR) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_sparc.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_sparc.h deleted file mode 100644 index ee95b64e..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_sparc.h +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on sparc. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -/* - * SPARC support, see (solaris)sys/procfs_isa.h also - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ - -#define MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT 32 - -typedef struct { - - /* FPU floating point regs */ - u_int64_t regs[MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT]; - - u_int64_t filler; - u_int64_t fsr; /* FPU status register */ -} MDFloatingSaveAreaSPARC; /* FLOATING_SAVE_AREA */ - -#define MD_CONTEXT_SPARC_GPR_COUNT 32 - -typedef struct { - /* The next field determines the layout of the structure, and which parts - * of it are populated - */ - u_int32_t context_flags; - u_int32_t flag_pad; - /* - * General register access (SPARC). - * Don't confuse definitions here with definitions in . - * Registers are 32 bits for ILP32, 64 bits for LP64. - * SPARC V7/V8 is for 32bit, SPARC V9 is for 64bit - */ - - /* 32 Integer working registers */ - - /* g_r[0-7] global registers(g0-g7) - * g_r[8-15] out registers(o0-o7) - * g_r[16-23] local registers(l0-l7) - * g_r[24-31] in registers(i0-i7) - */ - u_int64_t g_r[MD_CONTEXT_SPARC_GPR_COUNT]; - - /* several control registers */ - - /* Processor State register(PSR) for SPARC V7/V8 - * Condition Code register (CCR) for SPARC V9 - */ - u_int64_t ccr; - - u_int64_t pc; /* Program Counter register (PC) */ - u_int64_t npc; /* Next Program Counter register (nPC) */ - u_int64_t y; /* Y register (Y) */ - - /* Address Space Identifier register (ASI) for SPARC V9 - * WIM for SPARC V7/V8 - */ - u_int64_t asi; - - /* Floating-Point Registers State register (FPRS) for SPARC V9 - * TBR for for SPARC V7/V8 - */ - u_int64_t fprs; - - /* The next field is included with MD_CONTEXT_SPARC_FLOATING_POINT */ - MDFloatingSaveAreaSPARC float_save; - -} MDRawContextSPARC; /* CONTEXT_SPARC */ - -/* For (MDRawContextSPARC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_SPARC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_SPARC 0x10000000 -#define MD_CONTEXT_SPARC_CONTROL (MD_CONTEXT_SPARC | 0x00000001) -#define MD_CONTEXT_SPARC_INTEGER (MD_CONTEXT_SPARC | 0x00000002) -#define MD_CONTEXT_SAPARC_FLOATING_POINT (MD_CONTEXT_SPARC | 0x00000004) -#define MD_CONTEXT_SAPARC_EXTRA (MD_CONTEXT_SPARC | 0x00000008) - -#define MD_CONTEXT_SPARC_FULL (MD_CONTEXT_SPARC_CONTROL | \ - MD_CONTEXT_SPARC_INTEGER) - -#define MD_CONTEXT_SPARC_ALL (MD_CONTEXT_SPARC_FULL | \ - MD_CONTEXT_SAPARC_FLOATING_POINT | \ - MD_CONTEXT_SAPARC_EXTRA) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_x86.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_x86.h deleted file mode 100644 index 4dbc0e9a..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_cpu_x86.h +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on x86. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ - -#define MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE 80 - /* SIZE_OF_80387_REGISTERS */ - -typedef struct { - u_int32_t control_word; - u_int32_t status_word; - u_int32_t tag_word; - u_int32_t error_offset; - u_int32_t error_selector; - u_int32_t data_offset; - u_int32_t data_selector; - - /* register_area contains eight 80-bit (x87 "long double") quantities for - * floating-point registers %st0 (%mm0) through %st7 (%mm7). */ - u_int8_t register_area[MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE]; - u_int32_t cr0_npx_state; -} MDFloatingSaveAreaX86; /* FLOATING_SAVE_AREA */ - - -#define MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE 512 - /* MAXIMUM_SUPPORTED_EXTENSION */ - -typedef struct { - /* The next field determines the layout of the structure, and which parts - * of it are populated */ - u_int32_t context_flags; - - /* The next 6 registers are included with MD_CONTEXT_X86_DEBUG_REGISTERS */ - u_int32_t dr0; - u_int32_t dr1; - u_int32_t dr2; - u_int32_t dr3; - u_int32_t dr6; - u_int32_t dr7; - - /* The next field is included with MD_CONTEXT_X86_FLOATING_POINT */ - MDFloatingSaveAreaX86 float_save; - - /* The next 4 registers are included with MD_CONTEXT_X86_SEGMENTS */ - u_int32_t gs; - u_int32_t fs; - u_int32_t es; - u_int32_t ds; - /* The next 6 registers are included with MD_CONTEXT_X86_INTEGER */ - u_int32_t edi; - u_int32_t esi; - u_int32_t ebx; - u_int32_t edx; - u_int32_t ecx; - u_int32_t eax; - - /* The next 6 registers are included with MD_CONTEXT_X86_CONTROL */ - u_int32_t ebp; - u_int32_t eip; - u_int32_t cs; /* WinNT.h says "must be sanitized" */ - u_int32_t eflags; /* WinNT.h says "must be sanitized" */ - u_int32_t esp; - u_int32_t ss; - - /* The next field is included with MD_CONTEXT_X86_EXTENDED_REGISTERS. - * It contains vector (MMX/SSE) registers. It it laid out in the - * format used by the fxsave and fsrstor instructions, so it includes - * a copy of the x87 floating-point registers as well. See FXSAVE in - * "Intel Architecture Software Developer's Manual, Volume 2." */ - u_int8_t extended_registers[ - MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE]; -} MDRawContextX86; /* CONTEXT */ - -/* For (MDRawContextX86).context_flags. These values indicate the type of - * context stored in the structure. The high 26 bits identify the CPU, the - * low 6 bits identify the type of context saved. */ -#define MD_CONTEXT_X86 0x00010000 - /* CONTEXT_i386, CONTEXT_i486: identifies CPU */ -#define MD_CONTEXT_X86_CONTROL (MD_CONTEXT_X86 | 0x00000001) - /* CONTEXT_CONTROL */ -#define MD_CONTEXT_X86_INTEGER (MD_CONTEXT_X86 | 0x00000002) - /* CONTEXT_INTEGER */ -#define MD_CONTEXT_X86_SEGMENTS (MD_CONTEXT_X86 | 0x00000004) - /* CONTEXT_SEGMENTS */ -#define MD_CONTEXT_X86_FLOATING_POINT (MD_CONTEXT_X86 | 0x00000008) - /* CONTEXT_FLOATING_POINT */ -#define MD_CONTEXT_X86_DEBUG_REGISTERS (MD_CONTEXT_X86 | 0x00000010) - /* CONTEXT_DEBUG_REGISTERS */ -#define MD_CONTEXT_X86_EXTENDED_REGISTERS (MD_CONTEXT_X86 | 0x00000020) - /* CONTEXT_EXTENDED_REGISTERS */ - -#define MD_CONTEXT_X86_FULL (MD_CONTEXT_X86_CONTROL | \ - MD_CONTEXT_X86_INTEGER | \ - MD_CONTEXT_X86_SEGMENTS) - /* CONTEXT_FULL */ - -#define MD_CONTEXT_X86_ALL (MD_CONTEXT_X86_FULL | \ - MD_CONTEXT_X86_FLOATING_POINT | \ - MD_CONTEXT_X86_DEBUG_REGISTERS | \ - MD_CONTEXT_X86_EXTENDED_REGISTERS) - /* CONTEXT_ALL */ - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_linux.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_linux.h deleted file mode 100644 index d52c7519..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_linux.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_linux.h: A definition of exception codes for - * Linux - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -/* For (MDException).exception_code. These values come from bits/signum.h. - */ -typedef enum { - MD_EXCEPTION_CODE_LIN_SIGHUP = 1, /* Hangup (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGINT = 2, /* Interrupt (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGQUIT = 3, /* Quit (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGILL = 4, /* Illegal instruction (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGTRAP = 5, /* Trace trap (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGABRT = 6, /* Abort (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGBUS = 7, /* BUS error (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGFPE = 8, /* Floating-point exception (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGKILL = 9, /* Kill, unblockable (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGUSR1 = 10, /* User-defined signal 1 (POSIX). */ - MD_EXCEPTION_CODE_LIN_SIGSEGV = 11, /* Segmentation violation (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGUSR2 = 12, /* User-defined signal 2 (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGPIPE = 13, /* Broken pipe (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGALRM = 14, /* Alarm clock (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTERM = 15, /* Termination (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGSTKFLT = 16, /* Stack faultd */ - MD_EXCEPTION_CODE_LIN_SIGCHLD = 17, /* Child status has changed (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGCONT = 18, /* Continue (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGSTOP = 19, /* Stop, unblockable (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTSTP = 20, /* Keyboard stop (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTTIN = 21, /* Background read from tty (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTTOU = 22, /* Background write to tty (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGURG = 23, - /* Urgent condition on socket (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGXCPU = 24, /* CPU limit exceeded (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGXFSZ = 25, - /* File size limit exceeded (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGVTALRM = 26, /* Virtual alarm clock (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGPROF = 27, /* Profiling alarm clock (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGWINCH = 28, /* Window size change (4.3 BSD, Sun) */ - MD_EXCEPTION_CODE_LIN_SIGIO = 29, /* I/O now possible (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGPWR = 30, /* Power failure restart (System V) */ - MD_EXCEPTION_CODE_LIN_SIGSYS = 31 /* Bad system call */ -} MDExceptionCodeLinux; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_mac.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_mac.h deleted file mode 100644 index 5fba44ca..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_mac.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_mac.h: A definition of exception codes for Mac - * OS X - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -/* For (MDException).exception_code. Breakpad minidump extension for Mac OS X - * support. Based on Darwin/Mac OS X' mach/exception_types.h. This is - * what Mac OS X calls an "exception", not a "code". */ -typedef enum { - /* Exception code. The high 16 bits of exception_code contains one of - * these values. */ - MD_EXCEPTION_MAC_BAD_ACCESS = 1, /* code can be a kern_return_t */ - /* EXC_BAD_ACCESS */ - MD_EXCEPTION_MAC_BAD_INSTRUCTION = 2, /* code is CPU-specific */ - /* EXC_BAD_INSTRUCTION */ - MD_EXCEPTION_MAC_ARITHMETIC = 3, /* code is CPU-specific */ - /* EXC_ARITHMETIC */ - MD_EXCEPTION_MAC_EMULATION = 4, /* code is CPU-specific */ - /* EXC_EMULATION */ - MD_EXCEPTION_MAC_SOFTWARE = 5, - /* EXC_SOFTWARE */ - MD_EXCEPTION_MAC_BREAKPOINT = 6, /* code is CPU-specific */ - /* EXC_BREAKPOINT */ - MD_EXCEPTION_MAC_SYSCALL = 7, - /* EXC_SYSCALL */ - MD_EXCEPTION_MAC_MACH_SYSCALL = 8, - /* EXC_MACH_SYSCALL */ - MD_EXCEPTION_MAC_RPC_ALERT = 9 - /* EXC_RPC_ALERT */ -} MDExceptionMac; - -/* For (MDException).exception_flags. Breakpad minidump extension for Mac OS X - * support. Based on Darwin/Mac OS X' mach/ppc/exception.h and - * mach/i386/exception.h. This is what Mac OS X calls a "code". */ -typedef enum { - /* With MD_EXCEPTION_BAD_ACCESS. These are relevant kern_return_t values - * from mach/kern_return.h. */ - MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS = 1, - /* KERN_INVALID_ADDRESS */ - MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE = 2, - /* KERN_PROTECTION_FAILURE */ - MD_EXCEPTION_CODE_MAC_NO_ACCESS = 8, - /* KERN_NO_ACCESS */ - MD_EXCEPTION_CODE_MAC_MEMORY_FAILURE = 9, - /* KERN_MEMORY_FAILURE */ - MD_EXCEPTION_CODE_MAC_MEMORY_ERROR = 10, - /* KERN_MEMORY_ERROR */ - - /* With MD_EXCEPTION_SOFTWARE */ - MD_EXCEPTION_CODE_MAC_BAD_SYSCALL = 0x00010000, /* Mach SIGSYS */ - MD_EXCEPTION_CODE_MAC_BAD_PIPE = 0x00010001, /* Mach SIGPIPE */ - MD_EXCEPTION_CODE_MAC_ABORT = 0x00010002, /* Mach SIGABRT */ - - /* With MD_EXCEPTION_MAC_BAD_ACCESS on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_VM_PROT_READ = 0x0101, - /* EXC_PPC_VM_PROT_READ */ - MD_EXCEPTION_CODE_MAC_PPC_BADSPACE = 0x0102, - /* EXC_PPC_BADSPACE */ - MD_EXCEPTION_CODE_MAC_PPC_UNALIGNED = 0x0103, - /* EXC_PPC_UNALIGNED */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_INVALID_SYSCALL = 1, - /* EXC_PPC_INVALID_SYSCALL */ - MD_EXCEPTION_CODE_MAC_PPC_UNIMPLEMENTED_INSTRUCTION = 2, - /* EXC_PPC_UNIPL_INST */ - MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_INSTRUCTION = 3, - /* EXC_PPC_PRIVINST */ - MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_REGISTER = 4, - /* EXC_PPC_PRIVREG */ - MD_EXCEPTION_CODE_MAC_PPC_TRACE = 5, - /* EXC_PPC_TRACE */ - MD_EXCEPTION_CODE_MAC_PPC_PERFORMANCE_MONITOR = 6, - /* EXC_PPC_PERFMON */ - - /* With MD_EXCEPTION_MAC_ARITHMETIC on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_OVERFLOW = 1, - /* EXC_PPC_OVERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_ZERO_DIVIDE = 2, - /* EXC_PPC_ZERO_DIVIDE */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_INEXACT = 3, - /* EXC_FLT_INEXACT */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_ZERO_DIVIDE = 4, - /* EXC_PPC_FLT_ZERO_DIVIDE */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_UNDERFLOW = 5, - /* EXC_PPC_FLT_UNDERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_OVERFLOW = 6, - /* EXC_PPC_FLT_OVERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_NOT_A_NUMBER = 7, - /* EXC_PPC_FLT_NOT_A_NUMBER */ - - /* With MD_EXCEPTION_MAC_EMULATION on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_NO_EMULATION = 8, - /* EXC_PPC_NOEMULATION */ - MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST = 9, - /* EXC_PPC_ALTIVECASSIST */ - - /* With MD_EXCEPTION_MAC_SOFTWARE on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_TRAP = 0x00000001, /* EXC_PPC_TRAP */ - MD_EXCEPTION_CODE_MAC_PPC_MIGRATE = 0x00010100, /* EXC_PPC_MIGRATE */ - - /* With MD_EXCEPTION_MAC_BREAKPOINT on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_BREAKPOINT = 1, /* EXC_PPC_BREAKPOINT */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86, see also x86 interrupt - * values below. */ - MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION = 1, /* EXC_I386_INVOP */ - - /* With MD_EXCEPTION_MAC_ARITHMETIC on x86 */ - MD_EXCEPTION_CODE_MAC_X86_DIV = 1, /* EXC_I386_DIV */ - MD_EXCEPTION_CODE_MAC_X86_INTO = 2, /* EXC_I386_INTO */ - MD_EXCEPTION_CODE_MAC_X86_NOEXT = 3, /* EXC_I386_NOEXT */ - MD_EXCEPTION_CODE_MAC_X86_EXTOVR = 4, /* EXC_I386_EXTOVR */ - MD_EXCEPTION_CODE_MAC_X86_EXTERR = 5, /* EXC_I386_EXTERR */ - MD_EXCEPTION_CODE_MAC_X86_EMERR = 6, /* EXC_I386_EMERR */ - MD_EXCEPTION_CODE_MAC_X86_BOUND = 7, /* EXC_I386_BOUND */ - MD_EXCEPTION_CODE_MAC_X86_SSEEXTERR = 8, /* EXC_I386_SSEEXTERR */ - - /* With MD_EXCEPTION_MAC_BREAKPOINT on x86 */ - MD_EXCEPTION_CODE_MAC_X86_SGL = 1, /* EXC_I386_SGL */ - MD_EXCEPTION_CODE_MAC_X86_BPT = 2, /* EXC_I386_BPT */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86. These are the raw - * x86 interrupt codes. Most of these are mapped to other Mach - * exceptions and codes, are handled, or should not occur in user space. - * A few of these will do occur with MD_EXCEPTION_MAC_BAD_INSTRUCTION. */ - /* EXC_I386_DIVERR = 0: mapped to EXC_ARITHMETIC/EXC_I386_DIV */ - /* EXC_I386_SGLSTP = 1: mapped to EXC_BREAKPOINT/EXC_I386_SGL */ - /* EXC_I386_NMIFLT = 2: should not occur in user space */ - /* EXC_I386_BPTFLT = 3: mapped to EXC_BREAKPOINT/EXC_I386_BPT */ - /* EXC_I386_INTOFLT = 4: mapped to EXC_ARITHMETIC/EXC_I386_INTO */ - /* EXC_I386_BOUNDFLT = 5: mapped to EXC_ARITHMETIC/EXC_I386_BOUND */ - /* EXC_I386_INVOPFLT = 6: mapped to EXC_BAD_INSTRUCTION/EXC_I386_INVOP */ - /* EXC_I386_NOEXTFLT = 7: should be handled by the kernel */ - /* EXC_I386_DBLFLT = 8: should be handled (if possible) by the kernel */ - /* EXC_I386_EXTOVRFLT = 9: mapped to EXC_BAD_ACCESS/(PROT_READ|PROT_EXEC) */ - MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT = 10, - /* EXC_INVTSSFLT */ - MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT = 11, - /* EXC_SEGNPFLT */ - MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT = 12, - /* EXC_STKFLT */ - MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT = 13, - /* EXC_GPFLT */ - /* EXC_I386_PGFLT = 14: should not occur in user space */ - /* EXC_I386_EXTERRFLT = 16: mapped to EXC_ARITHMETIC/EXC_I386_EXTERR */ - MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT = 17 - /* EXC_ALIGNFLT (for vector operations) */ - /* EXC_I386_ENOEXTFLT = 32: should be handled by the kernel */ - /* EXC_I386_ENDPERR = 33: should not occur */ -} MDExceptionCodeMac; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_OSX_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_solaris.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_solaris.h deleted file mode 100644 index d48632ac..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_solaris.h +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_solaris.h: A definition of exception codes for - * Solaris - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -/* For (MDException).exception_code. These values come from sys/iso/signal_iso.h - */ -typedef enum { - MD_EXCEPTION_CODE_SOL_SIGHUP = 1, /* Hangup */ - MD_EXCEPTION_CODE_SOL_SIGINT = 2, /* interrupt (rubout) */ - MD_EXCEPTION_CODE_SOL_SIGQUIT = 3, /* quit (ASCII FS) */ - MD_EXCEPTION_CODE_SOL_SIGILL = 4, /* illegal instruction (not reset when caught) */ - MD_EXCEPTION_CODE_SOL_SIGTRAP = 5, /* trace trap (not reset when caught) */ - MD_EXCEPTION_CODE_SOL_SIGIOT = 6, /* IOT instruction */ - MD_EXCEPTION_CODE_SOL_SIGABRT = 6, /* used by abort, replace SIGIOT in the future */ - MD_EXCEPTION_CODE_SOL_SIGEMT = 7, /* EMT instruction */ - MD_EXCEPTION_CODE_SOL_SIGFPE = 8, /* floating point exception */ - MD_EXCEPTION_CODE_SOL_SIGKILL = 9, /* kill (cannot be caught or ignored) */ - MD_EXCEPTION_CODE_SOL_SIGBUS = 10, /* bus error */ - MD_EXCEPTION_CODE_SOL_SIGSEGV = 11, /* segmentation violation */ - MD_EXCEPTION_CODE_SOL_SIGSYS = 12, /* bad argument to system call */ - MD_EXCEPTION_CODE_SOL_SIGPIPE = 13, /* write on a pipe with no one to read it */ - MD_EXCEPTION_CODE_SOL_SIGALRM = 14, /* alarm clock */ - MD_EXCEPTION_CODE_SOL_SIGTERM = 15, /* software termination signal from kill */ - MD_EXCEPTION_CODE_SOL_SIGUSR1 = 16, /* user defined signal 1 */ - MD_EXCEPTION_CODE_SOL_SIGUSR2 = 17, /* user defined signal 2 */ - MD_EXCEPTION_CODE_SOL_SIGCLD = 18, /* child status change */ - MD_EXCEPTION_CODE_SOL_SIGCHLD = 18, /* child status change alias (POSIX) */ - MD_EXCEPTION_CODE_SOL_SIGPWR = 19, /* power-fail restart */ - MD_EXCEPTION_CODE_SOL_SIGWINCH = 20, /* window size change */ - MD_EXCEPTION_CODE_SOL_SIGURG = 21, /* urgent socket condition */ - MD_EXCEPTION_CODE_SOL_SIGPOLL = 22, /* pollable event occured */ - MD_EXCEPTION_CODE_SOL_SIGIO = 22, /* socket I/O possible (SIGPOLL alias) */ - MD_EXCEPTION_CODE_SOL_SIGSTOP = 23, /* stop (cannot be caught or ignored) */ - MD_EXCEPTION_CODE_SOL_SIGTSTP = 24, /* user stop requested from tty */ - MD_EXCEPTION_CODE_SOL_SIGCONT = 25, /* stopped process has been continued */ - MD_EXCEPTION_CODE_SOL_SIGTTIN = 26, /* background tty read attempted */ - MD_EXCEPTION_CODE_SOL_SIGTTOU = 27, /* background tty write attempted */ - MD_EXCEPTION_CODE_SOL_SIGVTALRM = 28, /* virtual timer expired */ - MD_EXCEPTION_CODE_SOL_SIGPROF = 29, /* profiling timer expired */ - MD_EXCEPTION_CODE_SOL_SIGXCPU = 30, /* exceeded cpu limit */ - MD_EXCEPTION_CODE_SOL_SIGXFSZ = 31, /* exceeded file size limit */ - MD_EXCEPTION_CODE_SOL_SIGWAITING = 32, /* reserved signal no longer used by threading code */ - MD_EXCEPTION_CODE_SOL_SIGLWP = 33, /* reserved signal no longer used by threading code */ - MD_EXCEPTION_CODE_SOL_SIGFREEZE = 34, /* special signal used by CPR */ - MD_EXCEPTION_CODE_SOL_SIGTHAW = 35, /* special signal used by CPR */ - MD_EXCEPTION_CODE_SOL_SIGCANCEL = 36, /* reserved signal for thread cancellation */ - MD_EXCEPTION_CODE_SOL_SIGLOST = 37, /* resource lost (eg, record-lock lost) */ - MD_EXCEPTION_CODE_SOL_SIGXRES = 38, /* resource control exceeded */ - MD_EXCEPTION_CODE_SOL_SIGJVM1 = 39, /* reserved signal for Java Virtual Machine */ - MD_EXCEPTION_CODE_SOL_SIGJVM2 = 40 /* reserved signal for Java Virtual Machine */ -} MDExceptionCodeSolaris; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_win32.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_win32.h deleted file mode 100644 index 7fd4bc4f..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_exception_win32.h +++ /dev/null @@ -1,102 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_win32.h: Definitions of exception codes for - * Win32 platform - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -/* For (MDException).exception_code. These values come from WinBase.h - * and WinNT.h (names beginning with EXCEPTION_ are in WinBase.h, - * they are STATUS_ in WinNT.h). */ -typedef enum { - MD_EXCEPTION_CODE_WIN_CONTROL_C = 0x40010005, - /* DBG_CONTROL_C */ - MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION = 0x80000001, - /* EXCEPTION_GUARD_PAGE */ - MD_EXCEPTION_CODE_WIN_DATATYPE_MISALIGNMENT = 0x80000002, - /* EXCEPTION_DATATYPE_MISALIGNMENT */ - MD_EXCEPTION_CODE_WIN_BREAKPOINT = 0x80000003, - /* EXCEPTION_BREAKPOINT */ - MD_EXCEPTION_CODE_WIN_SINGLE_STEP = 0x80000004, - /* EXCEPTION_SINGLE_STEP */ - MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION = 0xc0000005, - /* EXCEPTION_ACCESS_VIOLATION */ - MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR = 0xc0000006, - /* EXCEPTION_IN_PAGE_ERROR */ - MD_EXCEPTION_CODE_WIN_INVALID_HANDLE = 0xc0000008, - /* EXCEPTION_INVALID_HANDLE */ - MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION = 0xc000001d, - /* EXCEPTION_ILLEGAL_INSTRUCTION */ - MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION = 0xc0000025, - /* EXCEPTION_NONCONTINUABLE_EXCEPTION */ - MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION = 0xc0000026, - /* EXCEPTION_INVALID_DISPOSITION */ - MD_EXCEPTION_CODE_WIN_ARRAY_BOUNDS_EXCEEDED = 0xc000008c, - /* EXCEPTION_BOUNDS_EXCEEDED */ - MD_EXCEPTION_CODE_WIN_FLOAT_DENORMAL_OPERAND = 0xc000008d, - /* EXCEPTION_FLT_DENORMAL_OPERAND */ - MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO = 0xc000008e, - /* EXCEPTION_FLT_DIVIDE_BY_ZERO */ - MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT = 0xc000008f, - /* EXCEPTION_FLT_INEXACT_RESULT */ - MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION = 0xc0000090, - /* EXCEPTION_FLT_INVALID_OPERATION */ - MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW = 0xc0000091, - /* EXCEPTION_FLT_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_FLOAT_STACK_CHECK = 0xc0000092, - /* EXCEPTION_FLT_STACK_CHECK */ - MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW = 0xc0000093, - /* EXCEPTION_FLT_UNDERFLOW */ - MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO = 0xc0000094, - /* EXCEPTION_INT_DIVIDE_BY_ZERO */ - MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW = 0xc0000095, - /* EXCEPTION_INT_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION = 0xc0000096, - /* EXCEPTION_PRIV_INSTRUCTION */ - MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW = 0xc00000fd, - /* EXCEPTION_STACK_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK = 0xc0000194 - /* EXCEPTION_POSSIBLE_DEADLOCK */ -} MDExceptionCodeWin; - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_format.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_format.h deleted file mode 100644 index 4d9e767f..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_format.h +++ /dev/null @@ -1,721 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -#if defined(_MSC_VER) -/* Disable "zero-sized array in struct/union" warnings when compiling in - * MSVC. DbgHelp.h does this too. */ -#pragma warning(push) -#pragma warning(disable:4200) -#endif /* _MSC_VER */ - - -/* - * guiddef.h - */ - -typedef struct { - u_int32_t data1; - u_int16_t data2; - u_int16_t data3; - u_int8_t data4[8]; -} MDGUID; /* GUID */ - - -/* - * WinNT.h - */ - -/* Non-x86 CPU identifiers found in the high 26 bits of - * (MDRawContext*).context_flags. These aren't used by Breakpad, but are - * defined here for reference, to avoid assigning values that conflict - * (although some values already conflict). */ -#define MD_CONTEXT_IA64 0x00080000 /* CONTEXT_IA64 */ -#define MD_CONTEXT_AMD64 0x00100000 /* CONTEXT_AMD64 */ -/* Additional values from winnt.h in the Windows CE 5.0 SDK: */ -#define MD_CONTEXT_SHX 0x000000c0 /* CONTEXT_SH4 (Super-H, includes SH3) */ -#define MD_CONTEXT_ARM 0x00000040 /* CONTEXT_ARM (0x40 bit set in SHx?) */ -#define MD_CONTEXT_MIPS 0x00010000 /* CONTEXT_R4000 (same value as x86?) */ -#define MD_CONTEXT_ALPHA 0x00020000 /* CONTEXT_ALPHA */ - -#define MD_CONTEXT_CPU_MASK 0xffffffc0 - - -/* This is a base type for MDRawContextX86 and MDRawContextPPC. This - * structure should never be allocated directly. The actual structure type - * can be determined by examining the context_flags field. */ -typedef struct { - u_int32_t context_flags; -} MDRawContextBase; - -#include "minidump_cpu_sparc.h" -#include "minidump_cpu_x86.h" -#include "minidump_cpu_ppc.h" -#include "minidump_cpu_ppc64.h" -#include "minidump_cpu_amd64.h" - - -/* - * WinVer.h - */ - - -typedef struct { - u_int32_t signature; - u_int32_t struct_version; - u_int32_t file_version_hi; - u_int32_t file_version_lo; - u_int32_t product_version_hi; - u_int32_t product_version_lo; - u_int32_t file_flags_mask; /* Identifies valid bits in fileFlags */ - u_int32_t file_flags; - u_int32_t file_os; - u_int32_t file_type; - u_int32_t file_subtype; - u_int32_t file_date_hi; - u_int32_t file_date_lo; -} MDVSFixedFileInfo; /* VS_FIXEDFILEINFO */ - -/* For (MDVSFixedFileInfo).signature */ -#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd - /* VS_FFI_SIGNATURE */ - -/* For (MDVSFixedFileInfo).version */ -#define MD_VSFIXEDFILEINFO_VERSION 0x00010000 - /* VS_FFI_STRUCVERSION */ - -/* For (MDVSFixedFileInfo).file_flags_mask and - * (MDVSFixedFileInfo).file_flags */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG 0x00000001 - /* VS_FF_DEBUG */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE 0x00000002 - /* VS_FF_PRERELEASE */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED 0x00000004 - /* VS_FF_PATCHED */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008 - /* VS_FF_PRIVATEBUILD */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010 - /* VS_FF_INFOINFERRED */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020 - /* VS_FF_SPECIALBUILD */ - -/* For (MDVSFixedFileInfo).file_os: high 16 bits */ -#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN 0 /* VOS_UNKNOWN */ -#define MD_VSFIXEDFILEINFO_FILE_OS_DOS (1 << 16) /* VOS_DOS */ -#define MD_VSFIXEDFILEINFO_FILE_OS_OS216 (2 << 16) /* VOS_OS216 */ -#define MD_VSFIXEDFILEINFO_FILE_OS_OS232 (3 << 16) /* VOS_OS232 */ -#define MD_VSFIXEDFILEINFO_FILE_OS_NT (4 << 16) /* VOS_NT */ -#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE (5 << 16) /* VOS_WINCE */ -/* Low 16 bits */ -#define MD_VSFIXEDFILEINFO_FILE_OS__BASE 0 /* VOS__BASE */ -#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1 /* VOS__WINDOWS16 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__PM16 2 /* VOS__PM16 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__PM32 3 /* VOS__PM32 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4 /* VOS__WINDOWS32 */ - -/* For (MDVSFixedFileInfo).file_type */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN 0 /* VFT_UNKNOWN */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP 1 /* VFT_APP */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL 2 /* VFT_DLL */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV 3 /* VFT_DLL */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT 4 /* VFT_FONT */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD 5 /* VFT_VXD */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7 /* VFT_STATIC_LIB */ - -/* For (MDVSFixedFileInfo).file_subtype */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN 0 - /* VFT2_UNKNOWN */ -/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER 1 - /* VFT2_DRV_PRINTER */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD 2 - /* VFT2_DRV_KEYBOARD */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE 3 - /* VFT2_DRV_LANGUAGE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY 4 - /* VFT2_DRV_DISPLAY */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE 5 - /* VFT2_DRV_MOUSE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK 6 - /* VFT2_DRV_NETWORK */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM 7 - /* VFT2_DRV_SYSTEM */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE 8 - /* VFT2_DRV_INSTALLABLE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND 9 - /* VFT2_DRV_SOUND */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM 10 - /* VFT2_DRV_COMM */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD 11 - /* VFT2_DRV_INPUTMETHOD */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12 - /* VFT2_DRV_VERSIONED_PRINTER */ -/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER 1 - /* VFT2_FONT_RASTER */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR 2 - /* VFT2_FONT_VECTOR */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE 3 - /* VFT2_FONT_TRUETYPE */ - - -/* - * DbgHelp.h - */ - - -/* An MDRVA is an offset into the minidump file. The beginning of the - * MDRawHeader is at offset 0. */ -typedef u_int32_t MDRVA; /* RVA */ - -typedef struct { - u_int32_t data_size; - MDRVA rva; -} MDLocationDescriptor; /* MINIDUMP_LOCATION_DESCRIPTOR */ - - -typedef struct { - /* The base address of the memory range on the host that produced the - * minidump. */ - u_int64_t start_of_memory_range; - - MDLocationDescriptor memory; -} MDMemoryDescriptor; /* MINIDUMP_MEMORY_DESCRIPTOR */ - - -typedef struct { - u_int32_t signature; - u_int32_t version; - u_int32_t stream_count; - MDRVA stream_directory_rva; /* A |stream_count|-sized array of - * MDRawDirectory structures. */ - u_int32_t checksum; /* Can be 0. In fact, that's all that's - * been found in minidump files. */ - u_int32_t time_date_stamp; /* time_t */ - u_int64_t flags; -} MDRawHeader; /* MINIDUMP_HEADER */ - -/* For (MDRawHeader).signature and (MDRawHeader).version. Note that only the - * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION. Per the - * documentation, the high 16 bits are implementation-specific. */ -#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */ - /* MINIDUMP_SIGNATURE */ -#define MD_HEADER_VERSION 0x0000a793 /* 42899 */ - /* MINIDUMP_VERSION */ - -/* For (MDRawHeader).flags: */ -typedef enum { - /* MD_NORMAL is the standard type of minidump. It includes full - * streams for the thread list, module list, exception, system info, - * and miscellaneous info. A memory list stream is also present, - * pointing to the same stack memory contained in the thread list, - * as well as a 256-byte region around the instruction address that - * was executing when the exception occurred. Stack memory is from - * 4 bytes below a thread's stack pointer up to the top of the - * memory region encompassing the stack. */ - MD_NORMAL = 0x00000000, - MD_WITH_DATA_SEGS = 0x00000001, - MD_WITH_FULL_MEMORY = 0x00000002, - MD_WITH_HANDLE_DATA = 0x00000004, - MD_FILTER_MEMORY = 0x00000008, - MD_SCAN_MEMORY = 0x00000010, - MD_WITH_UNLOADED_MODULES = 0x00000020, - MD_WITH_INDIRECTLY_REFERENCED_MEMORY = 0x00000040, - MD_FILTER_MODULE_PATHS = 0x00000080, - MD_WITH_PROCESS_THREAD_DATA = 0x00000100, - MD_WITH_PRIVATE_READ_WRITE_MEMORY = 0x00000200, - MD_WITHOUT_OPTIONAL_DATA = 0x00000400, - MD_WITH_FULL_MEMORY_INFO = 0x00000800, - MD_WITH_THREAD_INFO = 0x00001000, - MD_WITH_CODE_SEGS = 0x00002000 -} MDType; /* MINIDUMP_TYPE */ - - -typedef struct { - u_int32_t stream_type; - MDLocationDescriptor location; -} MDRawDirectory; /* MINIDUMP_DIRECTORY */ - -/* For (MDRawDirectory).stream_type */ -typedef enum { - MD_UNUSED_STREAM = 0, - MD_RESERVED_STREAM_0 = 1, - MD_RESERVED_STREAM_1 = 2, - MD_THREAD_LIST_STREAM = 3, /* MDRawThreadList */ - MD_MODULE_LIST_STREAM = 4, /* MDRawModuleList */ - MD_MEMORY_LIST_STREAM = 5, /* MDRawMemoryList */ - MD_EXCEPTION_STREAM = 6, /* MDRawExceptionStream */ - MD_SYSTEM_INFO_STREAM = 7, /* MDRawSystemInfo */ - MD_THREAD_EX_LIST_STREAM = 8, - MD_MEMORY_64_LIST_STREAM = 9, - MD_COMMENT_STREAM_A = 10, - MD_COMMENT_STREAM_W = 11, - MD_HANDLE_DATA_STREAM = 12, - MD_FUNCTION_TABLE_STREAM = 13, - MD_UNLOADED_MODULE_LIST_STREAM = 14, - MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */ - MD_LAST_RESERVED_STREAM = 0x0000ffff, - - /* Breakpad extension types. 0x4767 = "Gg" */ - MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */ - MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */ -} MDStreamType; /* MINIDUMP_STREAM_TYPE */ - - -typedef struct { - u_int32_t length; /* Length of buffer in bytes (not characters), - * excluding 0-terminator */ - u_int16_t buffer[1]; /* UTF-16-encoded, 0-terminated */ -} MDString; /* MINIDUMP_STRING */ - -static const size_t MDString_minsize = offsetof(MDString, buffer[0]); - - -typedef struct { - u_int32_t thread_id; - u_int32_t suspend_count; - u_int32_t priority_class; - u_int32_t priority; - u_int64_t teb; /* Thread environment block */ - MDMemoryDescriptor stack; - MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ -} MDRawThread; /* MINIDUMP_THREAD */ - - -typedef struct { - u_int32_t number_of_threads; - MDRawThread threads[1]; -} MDRawThreadList; /* MINIDUMP_THREAD_LIST */ - -static const size_t MDRawThreadList_minsize = offsetof(MDRawThreadList, - threads[0]); - - -typedef struct { - u_int64_t base_of_image; - u_int32_t size_of_image; - u_int32_t checksum; /* 0 if unknown */ - u_int32_t time_date_stamp; /* time_t */ - MDRVA module_name_rva; /* MDString, pathname or filename */ - MDVSFixedFileInfo version_info; - - /* The next field stores a CodeView record and is populated when a module's - * debug information resides in a PDB file. It identifies the PDB file. */ - MDLocationDescriptor cv_record; - - /* The next field is populated when a module's debug information resides - * in a DBG file. It identifies the DBG file. This field is effectively - * obsolete with modules built by recent toolchains. */ - MDLocationDescriptor misc_record; - - /* Alignment problem: reserved0 and reserved1 are defined by the platform - * SDK as 64-bit quantities. However, that results in a structure whose - * alignment is unpredictable on different CPUs and ABIs. If the ABI - * specifies full alignment of 64-bit quantities in structures (as ppc - * does), there will be padding between miscRecord and reserved0. If - * 64-bit quantities can be aligned on 32-bit boundaries (as on x86), - * this padding will not exist. (Note that the structure up to this point - * contains 1 64-bit member followed by 21 32-bit members.) - * As a workaround, reserved0 and reserved1 are instead defined here as - * four 32-bit quantities. This should be harmless, as there are - * currently no known uses for these fields. */ - u_int32_t reserved0[2]; - u_int32_t reserved1[2]; -} MDRawModule; /* MINIDUMP_MODULE */ - -/* The inclusion of a 64-bit type in MINIDUMP_MODULE forces the struct to - * be tail-padded out to a multiple of 64 bits under some ABIs (such as PPC). - * This doesn't occur on systems that don't tail-pad in this manner. Define - * this macro to be the usable size of the MDRawModule struct, and use it in - * place of sizeof(MDRawModule). */ -#define MD_MODULE_SIZE 108 - - -/* (MDRawModule).cv_record can reference MDCVInfoPDB20 or MDCVInfoPDB70. - * Ref.: http://www.debuginfo.com/articles/debuginfomatch.html - * MDCVInfoPDB70 is the expected structure type with recent toolchains. */ - -typedef struct { - u_int32_t signature; - u_int32_t offset; /* Offset to debug data (expect 0 in minidump) */ -} MDCVHeader; - -typedef struct { - MDCVHeader cv_header; - u_int32_t signature; /* time_t debug information created */ - u_int32_t age; /* revision of PDB file */ - u_int8_t pdb_file_name[1]; /* Pathname or filename of PDB file */ -} MDCVInfoPDB20; - -static const size_t MDCVInfoPDB20_minsize = offsetof(MDCVInfoPDB20, - pdb_file_name[0]); - -#define MD_CVINFOPDB20_SIGNATURE 0x3031424e /* cvHeader.signature = '01BN' */ - -typedef struct { - u_int32_t cv_signature; - MDGUID signature; /* GUID, identifies PDB file */ - u_int32_t age; /* Identifies incremental changes to PDB file */ - u_int8_t pdb_file_name[1]; /* Pathname or filename of PDB file, - * 0-terminated 8-bit character data (UTF-8?) */ -} MDCVInfoPDB70; - -static const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70, - pdb_file_name[0]); - -#define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ - -typedef struct { - u_int32_t data1[2]; - u_int32_t data2; - u_int32_t data3; - u_int32_t data4; - u_int32_t data5[3]; - u_int8_t extra[2]; -} MDCVInfoELF; - -/* In addition to the two CodeView record formats above, used for linking - * to external pdb files, it is possible for debugging data to be carried - * directly in the CodeView record itself. These signature values will - * be found in the first 4 bytes of the CodeView record. Additional values - * not commonly experienced in the wild are given by "Microsoft Symbol and - * Type Information", http://www.x86.org/ftp/manuals/tools/sym.pdf, section - * 7.2. An in-depth description of the CodeView 4.1 format is given by - * "Undocumented Windows 2000 Secrets", Windows 2000 Debugging Support/ - * Microsoft Symbol File Internals/CodeView Subsections, - * http://www.rawol.com/features/undocumented/sbs-w2k-1-windows-2000-debugging-support.pdf - */ -#define MD_CVINFOCV41_SIGNATURE 0x3930424e /* '90BN', CodeView 4.10. */ -#define MD_CVINFOCV50_SIGNATURE 0x3131424e /* '11BN', CodeView 5.0, - * MS C7-format (/Z7). */ - -#define MD_CVINFOUNKNOWN_SIGNATURE 0xffffffff /* An unlikely value. */ - -/* (MDRawModule).miscRecord can reference MDImageDebugMisc. The Windows - * structure is actually defined in WinNT.h. This structure is effectively - * obsolete with modules built by recent toolchains. */ - -typedef struct { - u_int32_t data_type; /* IMAGE_DEBUG_TYPE_*, not defined here because - * this debug record type is mostly obsolete. */ - u_int32_t length; /* Length of entire MDImageDebugMisc structure */ - u_int8_t unicode; /* True if data is multibyte */ - u_int8_t reserved[3]; - u_int8_t data[1]; -} MDImageDebugMisc; /* IMAGE_DEBUG_MISC */ - -static const size_t MDImageDebugMisc_minsize = offsetof(MDImageDebugMisc, - data[0]); - - -typedef struct { - u_int32_t number_of_modules; - MDRawModule modules[1]; -} MDRawModuleList; /* MINIDUMP_MODULE_LIST */ - -static const size_t MDRawModuleList_minsize = offsetof(MDRawModuleList, - modules[0]); - - -typedef struct { - u_int32_t number_of_memory_ranges; - MDMemoryDescriptor memory_ranges[1]; -} MDRawMemoryList; /* MINIDUMP_MEMORY_LIST */ - -static const size_t MDRawMemoryList_minsize = offsetof(MDRawMemoryList, - memory_ranges[0]); - - -#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15 - -typedef struct { - u_int32_t exception_code; /* Windows: MDExceptionCodeWin, - * Mac OS X: MDExceptionMac, - * Linux: MDExceptionCodeLinux. */ - u_int32_t exception_flags; /* Windows: 1 if noncontinuable, - Mac OS X: MDExceptionCodeMac. */ - u_int64_t exception_record; /* Address (in the minidump-producing host's - * memory) of another MDException, for - * nested exceptions. */ - u_int64_t exception_address; /* The address that caused the exception. - * Mac OS X: exception subcode (which is - * typically the address). */ - u_int32_t number_parameters; /* Number of valid elements in - * exception_information. */ - u_int32_t __align; - u_int64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS]; -} MDException; /* MINIDUMP_EXCEPTION */ - -#include "minidump_exception_win32.h" -#include "minidump_exception_mac.h" -#include "minidump_exception_linux.h" -#include "minidump_exception_solaris.h" - -typedef struct { - u_int32_t thread_id; /* Thread in which the exception - * occurred. Corresponds to - * (MDRawThread).thread_id. */ - u_int32_t __align; - MDException exception_record; - MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ -} MDRawExceptionStream; /* MINIDUMP_EXCEPTION_STREAM */ - - -typedef union { - struct { - u_int32_t vendor_id[3]; /* cpuid 0: ebx, edx, ecx */ - u_int32_t version_information; /* cpuid 1: eax */ - u_int32_t feature_information; /* cpuid 1: edx */ - u_int32_t amd_extended_cpu_features; /* cpuid 0x80000001, ebx */ - } x86_cpu_info; - struct { - u_int64_t processor_features[2]; - } other_cpu_info; -} MDCPUInformation; /* CPU_INFORMATION */ - - -typedef struct { - /* The next 3 fields and numberOfProcessors are from the SYSTEM_INFO - * structure as returned by GetSystemInfo */ - u_int16_t processor_architecture; - u_int16_t processor_level; /* x86: 5 = 586, 6 = 686, ... */ - u_int16_t processor_revision; /* x86: 0xMMSS, where MM=model, - * SS=stepping */ - - u_int8_t number_of_processors; - u_int8_t product_type; /* Windows: VER_NT_* from WinNT.h */ - - /* The next 5 fields are from the OSVERSIONINFO structure as returned - * by GetVersionEx */ - u_int32_t major_version; - u_int32_t minor_version; - u_int32_t build_number; - u_int32_t platform_id; - MDRVA csd_version_rva; /* MDString further identifying the - * host OS. - * Windows: name of the installed OS - * service pack. - * Mac OS X: the Apple OS build number - * (sw_vers -buildVersion). - * Linux: uname -srvmo */ - - u_int16_t suite_mask; /* Windows: VER_SUITE_* from WinNT.h */ - u_int16_t reserved2; - - MDCPUInformation cpu; -} MDRawSystemInfo; /* MINIDUMP_SYSTEM_INFO */ - -/* For (MDRawSystemInfo).processor_architecture: */ -typedef enum { - MD_CPU_ARCHITECTURE_X86 = 0, /* PROCESSOR_ARCHITECTURE_INTEL */ - MD_CPU_ARCHITECTURE_MIPS = 1, /* PROCESSOR_ARCHITECTURE_MIPS */ - MD_CPU_ARCHITECTURE_ALPHA = 2, /* PROCESSOR_ARCHITECTURE_ALPHA */ - MD_CPU_ARCHITECTURE_PPC = 3, /* PROCESSOR_ARCHITECTURE_PPC */ - MD_CPU_ARCHITECTURE_SHX = 4, /* PROCESSOR_ARCHITECTURE_SHX - * (Super-H) */ - MD_CPU_ARCHITECTURE_ARM = 5, /* PROCESSOR_ARCHITECTURE_ARM */ - MD_CPU_ARCHITECTURE_IA64 = 6, /* PROCESSOR_ARCHITECTURE_IA64 */ - MD_CPU_ARCHITECTURE_ALPHA64 = 7, /* PROCESSOR_ARCHITECTURE_ALPHA64 */ - MD_CPU_ARCHITECTURE_MSIL = 8, /* PROCESSOR_ARCHITECTURE_MSIL - * (Microsoft Intermediate Language) */ - MD_CPU_ARCHITECTURE_AMD64 = 9, /* PROCESSOR_ARCHITECTURE_AMD64 */ - MD_CPU_ARCHITECTURE_X86_WIN64 = 10, - /* PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 (WoW64) */ - MD_CPU_ARCHITECTURE_SPARC = 0x8001, /* Breakpad-defined value for SPARC */ - MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */ -} MDCPUArchitecture; - -/* For (MDRawSystemInfo).platform_id: */ -typedef enum { - MD_OS_WIN32S = 0, /* VER_PLATFORM_WIN32s (Windows 3.1) */ - MD_OS_WIN32_WINDOWS = 1, /* VER_PLATFORM_WIN32_WINDOWS (Windows 95-98-Me) */ - MD_OS_WIN32_NT = 2, /* VER_PLATFORM_WIN32_NT (Windows NT, 2000+) */ - MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH - * (Windows CE, Windows Mobile, "Handheld") */ - - /* The following values are Breakpad-defined. */ - MD_OS_UNIX = 0x8000, /* Generic Unix-ish */ - MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */ - MD_OS_LINUX = 0x8201, /* Linux */ - MD_OS_SOLARIS = 0x8202 /* Solaris */ -} MDOSPlatform; - - -typedef struct { - u_int32_t size_of_info; /* Length of entire MDRawMiscInfo structure. */ - u_int32_t flags1; - - /* The next field is only valid if flags1 contains - * MD_MISCINFO_FLAGS1_PROCESS_ID. */ - u_int32_t process_id; - - /* The next 3 fields are only valid if flags1 contains - * MD_MISCINFO_FLAGS1_PROCESS_TIMES. */ - u_int32_t process_create_time; /* time_t process started */ - u_int32_t process_user_time; /* seconds of user CPU time */ - u_int32_t process_kernel_time; /* seconds of kernel CPU time */ - - /* The following fields are not present in MINIDUMP_MISC_INFO but are - * in MINIDUMP_MISC_INFO_2. When this struct is populated, these values - * may not be set. Use flags1 or sizeOfInfo to determine whether these - * values are present. These are only valid when flags1 contains - * MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO. */ - u_int32_t processor_max_mhz; - u_int32_t processor_current_mhz; - u_int32_t processor_mhz_limit; - u_int32_t processor_max_idle_state; - u_int32_t processor_current_idle_state; -} MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO2 */ - -#define MD_MISCINFO_SIZE 24 -#define MD_MISCINFO2_SIZE 44 - -/* For (MDRawMiscInfo).flags1. These values indicate which fields in the - * MDRawMiscInfoStructure are valid. */ -typedef enum { - MD_MISCINFO_FLAGS1_PROCESS_ID = 0x00000001, - /* MINIDUMP_MISC1_PROCESS_ID */ - MD_MISCINFO_FLAGS1_PROCESS_TIMES = 0x00000002, - /* MINIDUMP_MISC1_PROCESS_TIMES */ - MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO = 0x00000004 - /* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */ -} MDMiscInfoFlags1; - - -/* - * Breakpad extension types - */ - - -typedef struct { - /* validity is a bitmask with values from MDBreakpadInfoValidity, indicating - * which of the other fields in the structure are valid. */ - u_int32_t validity; - - /* Thread ID of the handler thread. dump_thread_id should correspond to - * the thread_id of an MDRawThread in the minidump's MDRawThreadList if - * a dedicated thread in that list was used to produce the minidump. If - * the MDRawThreadList does not contain a dedicated thread used to produce - * the minidump, this field should be set to 0 and the validity field - * must not contain MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID. */ - u_int32_t dump_thread_id; - - /* Thread ID of the thread that requested the minidump be produced. As - * with dump_thread_id, requesting_thread_id should correspond to the - * thread_id of an MDRawThread in the minidump's MDRawThreadList. For - * minidumps produced as a result of an exception, requesting_thread_id - * will be the same as the MDRawExceptionStream's thread_id field. For - * minidumps produced "manually" at the program's request, - * requesting_thread_id will indicate which thread caused the dump to be - * written. If the minidump was produced at the request of something - * other than a thread in the MDRawThreadList, this field should be set - * to 0 and the validity field must not contain - * MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID. */ - u_int32_t requesting_thread_id; -} MDRawBreakpadInfo; - -/* For (MDRawBreakpadInfo).validity: */ -typedef enum { - /* When set, the dump_thread_id field is valid. */ - MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID = 1 << 0, - - /* When set, the requesting_thread_id field is valid. */ - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1 -} MDBreakpadInfoValidity; - -typedef struct { - /* expression, function, and file are 0-terminated UTF-16 strings. They - * may be truncated if necessary, but should always be 0-terminated when - * written to a file. - * Fixed-length strings are used because MiniDumpWriteDump doesn't offer - * a way for user streams to point to arbitrary RVAs for strings. */ - u_int16_t expression[128]; /* Assertion that failed... */ - u_int16_t function[128]; /* ...within this function... */ - u_int16_t file[128]; /* ...in this file... */ - u_int32_t line; /* ...at this line. */ - u_int32_t type; -} MDRawAssertionInfo; - -/* For (MDRawAssertionInfo).type: */ -typedef enum { - MD_ASSERTION_INFO_TYPE_UNKNOWN = 0, - - /* Used for assertions that would be raised by the MSVC CRT but are - * directed to an invalid parameter handler instead. */ - MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER, - - /* Used for assertions that would be raised by the MSVC CRT but are - * directed to a pure virtual call handler instead. */ - MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL -} MDAssertionInfoData; - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif /* _MSC_VER */ - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ */ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_size.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_size.h deleted file mode 100644 index 918544b6..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/common/minidump_size.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. */ - -// minidump_size.h: Provides a C++ template for programmatic access to -// the sizes of various types defined in minidump_format.h. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ - -#include - -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -template -class minidump_size { - public: - static size_t size() { return sizeof(T); } -}; - -// Explicit specializations for variable-length types. The size returned -// for these should be the size for an object without its variable-length -// section. - -template<> -class minidump_size { - public: - static size_t size() { return MDString_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawThreadList_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDCVInfoPDB20_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDCVInfoPDB70_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDImageDebugMisc_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawModuleList_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawMemoryList_minsize; } -}; - -// Explicit specialization for MDRawModule, for which sizeof may include -// tail-padding on some architectures but not others. - -template<> -class minidump_size { - public: - static size_t size() { return MD_MODULE_SIZE; } -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/basic_source_line_resolver.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/basic_source_line_resolver.h deleted file mode 100644 index 38759579..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/basic_source_line_resolver.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// BasicSourceLineResolver implements SourceLineResolverInterface, using -// address map files produced by a compatible writer, e.g. PDBSourceLineWriter. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ - -// TODO: Platforms that have no hash_map can use map, at the likely cost of -// performance. -#ifdef __SUNPRO_CC -#define BSLR_NO_HASH_MAP -#endif // __SUNPRO_CC - -#ifdef BSLR_NO_HASH_MAP -#include -#else // BSLR_NO_HASH_MAP -#include -#endif // BSLR_NO_HASH_MAP - -#include "google_breakpad/processor/source_line_resolver_interface.h" - -namespace google_breakpad { - -using std::string; -#ifdef BSLR_NO_HASH_MAP -using std::map; -#else // BSLR_NO_HASH_MAP -using __gnu_cxx::hash_map; -#endif // BSLR_NO_HASH_MAP - -class BasicSourceLineResolver : public SourceLineResolverInterface { - public: - BasicSourceLineResolver(); - virtual ~BasicSourceLineResolver(); - - // SourceLineResolverInterface methods, see source_line_resolver_interface.h - // for more details. - - // Adds a module to this resolver, returning true on success. - // The given map_file is read into memory, and its symbols will be - // retained until the BasicSourceLineResolver is destroyed. - virtual bool LoadModule(const string &module_name, const string &map_file); - - // Exactly the same as above, except the given map_buffer is used - // for symbols. - virtual bool LoadModuleUsingMapBuffer(const string &module_name, - const string &map_buffer); - - - virtual bool HasModule(const string &module_name) const; - - virtual StackFrameInfo* FillSourceLineInfo(StackFrame *frame) const; - - private: - template class MemAddrMap; - struct Line; - struct Function; - struct PublicSymbol; - struct File; -#ifdef BSLR_NO_HASH_MAP - struct CompareString { - bool operator()(const string &s1, const string &s2) const; - }; -#else // BSLR_NO_HASH_MAP - struct HashString { - size_t operator()(const string &s) const; - }; -#endif // BSLR_NO_HASH_MAP - class Module; - - // All of the modules we've loaded -#ifdef BSLR_NO_HASH_MAP - typedef map ModuleMap; -#else // BSLR_NO_HASH_MAP - typedef hash_map ModuleMap; -#endif // BSLR_NO_HASH_MAP - ModuleMap *modules_; - - // Disallow unwanted copy ctor and assignment operator - BasicSourceLineResolver(const BasicSourceLineResolver&); - void operator=(const BasicSourceLineResolver&); -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/call_stack.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/call_stack.h deleted file mode 100644 index 21f595e7..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/call_stack.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// call_stack.h: A call stack comprised of stack frames. -// -// This class manages a vector of stack frames. It is used instead of -// exposing the vector directly to allow the CallStack to own StackFrame -// pointers without having to publicly export the linked_ptr class. A -// CallStack must be composed of pointers instead of objects to allow for -// CPU-specific StackFrame subclasses. -// -// By convention, the stack frame at index 0 is the innermost callee frame, -// and the frame at the highest index in a call stack is the outermost -// caller. CallStack only allows stacks to be built by pushing frames, -// beginning with the innermost callee frame. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ - -#include - -namespace google_breakpad { - -using std::vector; - -struct StackFrame; -template class linked_ptr; - -class CallStack { - public: - CallStack() { Clear(); } - ~CallStack(); - - // Resets the CallStack to its initial empty state - void Clear(); - - const vector* frames() const { return &frames_; } - - private: - // Stackwalker is responsible for building the frames_ vector. - friend class Stackwalker; - - // Storage for pushed frames. - vector frames_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCSSOR_CALL_STACK_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_module.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_module.h deleted file mode 100644 index 38ee956e..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_module.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// code_module.h: Carries information about code modules that are loaded -// into a process. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -class CodeModule { - public: - virtual ~CodeModule() {} - - // The base address of this code module as it was loaded by the process. - // (u_int64_t)-1 on error. - virtual u_int64_t base_address() const = 0; - - // The size of the code module. 0 on error. - virtual u_int64_t size() const = 0; - - // The path or file name that the code module was loaded from. Empty on - // error. - virtual string code_file() const = 0; - - // An identifying string used to discriminate between multiple versions and - // builds of the same code module. This may contain a uuid, timestamp, - // version number, or any combination of this or other information, in an - // implementation-defined format. Empty on error. - virtual string code_identifier() const = 0; - - // The filename containing debugging information associated with the code - // module. If debugging information is stored in a file separate from the - // code module itself (as is the case when .pdb or .dSYM files are used), - // this will be different from code_file. If debugging information is - // stored in the code module itself (possibly prior to stripping), this - // will be the same as code_file. Empty on error. - virtual string debug_file() const = 0; - - // An identifying string similar to code_identifier, but identifies a - // specific version and build of the associated debug file. This may be - // the same as code_identifier when the debug_file and code_file are - // identical or when the same identifier is used to identify distinct - // debug and code files. - virtual string debug_identifier() const = 0; - - // A human-readable representation of the code module's version. Empty on - // error. - virtual string version() const = 0; - - // Creates a new copy of this CodeModule object, which the caller takes - // ownership of. The new CodeModule may be of a different concrete class - // than the CodeModule being copied, but will behave identically to the - // copied CodeModule as far as the CodeModule interface is concerned. - virtual const CodeModule* Copy() const = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_modules.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_modules.h deleted file mode 100644 index 29c55d4e..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/code_modules.h +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// code_modules.h: Contains all of the CodeModule objects that were loaded -// into a single process. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ - -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -class CodeModule; - -class CodeModules { - public: - virtual ~CodeModules() {} - - // The number of contained CodeModule objects. - virtual unsigned int module_count() const = 0; - - // Random access to modules. Returns the module whose code is present - // at the address indicated by |address|. If no module is present at this - // address, returns NULL. Ownership of the returned CodeModule is retained - // by the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleForAddress(u_int64_t address) const = 0; - - // Returns the module corresponding to the main executable. If there is - // no main executable, returns NULL. Ownership of the returned CodeModule - // is retained by the CodeModules object; pointers returned by this method - // are valid for comparison with pointers returned by the other Get - // methods. - virtual const CodeModule* GetMainModule() const = 0; - - // Sequential access to modules. A sequence number of 0 corresponds to the - // module residing lowest in memory. If the sequence number is out of - // range, returns NULL. Ownership of the returned CodeModule is retained - // by the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleAtSequence( - unsigned int sequence) const = 0; - - // Sequential access to modules. This is similar to GetModuleAtSequence, - // except no ordering requirement is enforced. A CodeModules implementation - // may return CodeModule objects from GetModuleAtIndex in any order it - // wishes, provided that the order remain the same throughout the life of - // the CodeModules object. Typically, GetModuleAtIndex would be used by - // a caller to enumerate all CodeModule objects quickly when the enumeration - // does not require any ordering. If the index argument is out of range, - // returns NULL. Ownership of the returned CodeModule is retained by - // the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleAtIndex(unsigned int index) const = 0; - - // Creates a new copy of this CodeModules object, which the caller takes - // ownership of. The new object will also contain copies of the existing - // object's child CodeModule objects. The new CodeModules object may be of - // a different concrete class than the object being copied, but will behave - // identically to the copied object as far as the CodeModules and CodeModule - // interfaces are concerned, except that the order that GetModuleAtIndex - // returns objects in may differ between a copy and the original CodeModules - // object. - virtual const CodeModules* Copy() const = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/memory_region.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/memory_region.h deleted file mode 100644 index 1ac3fe8d..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/memory_region.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// memory_region.h: Access to memory regions. -// -// A MemoryRegion provides virtual access to a range of memory. It is an -// abstraction allowing the actual source of memory to be independent of -// methods which need to access a virtual memory space. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ - - -#include "google_breakpad/common/breakpad_types.h" - - -namespace google_breakpad { - - -class MemoryRegion { - public: - virtual ~MemoryRegion() {} - - // The base address of this memory region. - virtual u_int64_t GetBase() = 0; - - // The size of this memory region. - virtual u_int32_t GetSize() = 0; - - // Access to data of various sizes within the memory region. address - // is a pointer to read, and it must lie within the memory region as - // defined by its base address and size. The location pointed to by - // value is set to the value at address. Byte-swapping is performed - // if necessary so that the value is appropriate for the running - // program. Returns true on success. Fails and returns false if address - // is out of the region's bounds (after considering the width of value), - // or for other types of errors. - virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) = 0; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump.h deleted file mode 100644 index 5c5dccc9..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump.h +++ /dev/null @@ -1,904 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump.h: A minidump reader. -// -// The basic structure of this module tracks the structure of the minidump -// file itself. At the top level, a minidump file is represented by a -// Minidump object. Like most other classes in this module, Minidump -// provides a Read method that initializes the object with information from -// the file. Most of the classes in this file are wrappers around the -// "raw" structures found in the minidump file itself, and defined in -// minidump_format.h. For example, each thread is represented by a -// MinidumpThread object, whose parameters are specified in an MDRawThread -// structure. A properly byte-swapped MDRawThread can be obtained from a -// MinidumpThread easily by calling its thread() method. -// -// Most of the module lazily reads only the portion of the minidump file -// necessary to fulfill the user's request. Calling Minidump::Read -// only reads the minidump's directory. The thread list is not read until -// it is needed, and even once it's read, the memory regions for each -// thread's stack aren't read until they're needed. This strategy avoids -// unnecessary file input, and allocating memory for data in which the user -// has no interest. Note that although memory allocations for a typical -// minidump file are not particularly large, it is possible for legitimate -// minidumps to be sizable. A full-memory minidump, for example, contains -// a snapshot of the entire mapped memory space. Even a normal minidump, -// with stack memory only, can be large if, for example, the dump was -// generated in response to a crash that occurred due to an infinite- -// recursion bug that caused the stack's limits to be exceeded. Finally, -// some users of this library will unfortunately find themselves in the -// position of having to process potentially-hostile minidumps that might -// attempt to cause problems by forcing the minidump processor to over- -// allocate memory. -// -// Memory management in this module is based on a strict -// you-don't-own-anything policy. The only object owned by the user is -// the top-level Minidump object, the creation and destruction of which -// must be the user's own responsibility. All other objects obtained -// through interaction with this module are ultimately owned by the -// Minidump object, and will be freed upon the Minidump object's destruction. -// Because memory regions can potentially involve large allocations, a -// FreeMemory method is provided by MinidumpMemoryRegion, allowing the user -// to release data when it is no longer needed. Use of this method is -// optional but recommended. If freed data is later required, it will -// be read back in from the minidump file again. -// -// There is one exception to this memory management policy: -// Minidump::ReadString will return a string object to the user, and the user -// is responsible for its deletion. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ - -#include - -#include -#include -#include - -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/memory_region.h" - - -namespace google_breakpad { - - -using std::map; -using std::string; -using std::vector; - - -class Minidump; -template class RangeMap; - - -// MinidumpObject is the base of all Minidump* objects except for Minidump -// itself. -class MinidumpObject { - public: - virtual ~MinidumpObject() {} - - bool valid() const { return valid_; } - - protected: - explicit MinidumpObject(Minidump* minidump); - - // Refers to the Minidump object that is the ultimate parent of this - // Some MinidumpObjects are owned by other MinidumpObjects, but at the - // root of the ownership tree is always a Minidump. The Minidump object - // is kept here for access to its seeking and reading facilities, and - // for access to data about the minidump file itself, such as whether - // it should be byte-swapped. - Minidump* minidump_; - - // MinidumpObjects are not valid when created. When a subclass populates - // its own fields, it can set valid_ to true. Accessors and mutators may - // wish to consider or alter the valid_ state as they interact with - // objects. - bool valid_; -}; - - -// This class exists primarily to provide a virtual destructor in a base -// class common to all objects that might be stored in -// Minidump::mStreamObjects. Some object types (MinidumpContext) will -// never be stored in Minidump::mStreamObjects, but are represented as -// streams and adhere to the same interface, and may be derived from -// this class. -class MinidumpStream : public MinidumpObject { - public: - virtual ~MinidumpStream() {} - - protected: - explicit MinidumpStream(Minidump* minidump); - - private: - // Populate (and validate) the MinidumpStream. minidump_ is expected - // to be positioned at the beginning of the stream, so that the next - // read from the minidump will be at the beginning of the stream. - // expected_size should be set to the stream's length as contained in - // the MDRawDirectory record or other identifying record. A class - // that implements MinidumpStream can compare expected_size to a - // known size as an integrity check. - virtual bool Read(u_int32_t expected_size) = 0; -}; - - -// MinidumpContext carries a CPU-specific MDRawContext structure, which -// contains CPU context such as register states. Each thread has its -// own context, and the exception record, if present, also has its own -// context. Note that if the exception record is present, the context it -// refers to is probably what the user wants to use for the exception -// thread, instead of that thread's own context. The exception thread's -// context (as opposed to the exception record's context) will contain -// context for the exception handler (which performs minidump generation), -// and not the context that caused the exception (which is probably what the -// user wants). -class MinidumpContext : public MinidumpStream { - public: - virtual ~MinidumpContext(); - - // Returns an MD_CONTEXT_* value such as MD_CONTEXT_X86 or MD_CONTEXT_PPC - // identifying the CPU type that the context was collected from. The - // returned value will identify the CPU only, and will have any other - // MD_CONTEXT_* bits masked out. Returns 0 on failure. - u_int32_t GetContextCPU() const; - - // Returns raw CPU-specific context data for the named CPU type. If the - // context data does not match the CPU type or does not exist, returns - // NULL. - const MDRawContextX86* GetContextX86() const; - const MDRawContextPPC* GetContextPPC() const; - const MDRawContextAMD64* GetContextAMD64() const; - const MDRawContextSPARC* GetContextSPARC() const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class MinidumpThread; - friend class MinidumpException; - - explicit MinidumpContext(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // Free the CPU-specific context structure. - void FreeContext(); - - // If the minidump contains a SYSTEM_INFO_STREAM, makes sure that the - // system info stream gives an appropriate CPU type matching the context - // CPU type in context_cpu_type. Returns false if the CPU type does not - // match. Returns true if the CPU type matches or if the minidump does - // not contain a system info stream. - bool CheckAgainstSystemInfo(u_int32_t context_cpu_type); - - // Store this separately because of the weirdo AMD64 context - u_int32_t context_flags_; - - // The CPU-specific context structure. - union { - MDRawContextBase* base; - MDRawContextX86* x86; - MDRawContextPPC* ppc; - MDRawContextAMD64* amd64; - // on Solaris SPARC, sparc is defined as a numeric constant, - // so variables can NOT be named as sparc - MDRawContextSPARC* ctx_sparc; - } context_; -}; - - -// MinidumpMemoryRegion does not wrap any MDRaw structure, and only contains -// a reference to an MDMemoryDescriptor. This object is intended to wrap -// portions of a minidump file that contain memory dumps. In normal -// minidumps, each MinidumpThread owns a MinidumpMemoryRegion corresponding -// to the thread's stack memory. MinidumpMemoryList also gives access to -// memory regions in its list as MinidumpMemoryRegions. This class -// adheres to MemoryRegion so that it may be used as a data provider to -// the Stackwalker family of classes. -class MinidumpMemoryRegion : public MinidumpObject, - public MemoryRegion { - public: - virtual ~MinidumpMemoryRegion(); - - static void set_max_bytes(u_int32_t max_bytes) { max_bytes_ = max_bytes; } - static u_int32_t max_bytes() { return max_bytes_; } - - // Returns a pointer to the base of the memory region. Returns the - // cached value if available, otherwise, reads the minidump file and - // caches the memory region. - const u_int8_t* GetMemory(); - - // The address of the base of the memory region. - u_int64_t GetBase(); - - // The size, in bytes, of the memory region. - u_int32_t GetSize(); - - // Frees the cached memory region, if cached. - void FreeMemory(); - - // Obtains the value of memory at the pointer specified by address. - bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class MinidumpThread; - friend class MinidumpMemoryList; - - explicit MinidumpMemoryRegion(Minidump* minidump); - - // Identify the base address and size of the memory region, and the - // location it may be found in the minidump file. - void SetDescriptor(MDMemoryDescriptor* descriptor); - - // Implementation for GetMemoryAtAddress - template bool GetMemoryAtAddressInternal(u_int64_t address, - T* value); - - // The largest memory region that will be read from a minidump. The - // default is 1MB. - static u_int32_t max_bytes_; - - // Base address and size of the memory region, and its position in the - // minidump file. - MDMemoryDescriptor* descriptor_; - - // Cached memory. - vector* memory_; -}; - - -// MinidumpThread contains information about a thread of execution, -// including a snapshot of the thread's stack and CPU context. For -// the thread that caused an exception, the context carried by -// MinidumpException is probably desired instead of the CPU context -// provided here. -class MinidumpThread : public MinidumpObject { - public: - virtual ~MinidumpThread(); - - const MDRawThread* thread() const { return valid_ ? &thread_ : NULL; } - MinidumpMemoryRegion* GetMemory(); - MinidumpContext* GetContext(); - - // The thread ID is used to determine if a thread is the exception thread, - // so a special getter is provided to retrieve this data from the - // MDRawThread structure. Returns false if the thread ID cannot be - // determined. - bool GetThreadID(u_int32_t *thread_id) const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // These objects are managed by MinidumpThreadList. - friend class MinidumpThreadList; - - explicit MinidumpThread(Minidump* minidump); - - // This works like MinidumpStream::Read, but is driven by - // MinidumpThreadList. No size checking is done, because - // MinidumpThreadList handles that directly. - bool Read(); - - MDRawThread thread_; - MinidumpMemoryRegion* memory_; - MinidumpContext* context_; -}; - - -// MinidumpThreadList contains all of the threads (as MinidumpThreads) in -// a process. -class MinidumpThreadList : public MinidumpStream { - public: - virtual ~MinidumpThreadList(); - - static void set_max_threads(u_int32_t max_threads) { - max_threads_ = max_threads; - } - static u_int32_t max_threads() { return max_threads_; } - - unsigned int thread_count() const { return valid_ ? thread_count_ : 0; } - - // Sequential access to threads. - MinidumpThread* GetThreadAtIndex(unsigned int index) const; - - // Random access to threads. - MinidumpThread* GetThreadByID(u_int32_t thread_id); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef map IDToThreadMap; - typedef vector MinidumpThreads; - - static const u_int32_t kStreamType = MD_THREAD_LIST_STREAM; - - explicit MinidumpThreadList(Minidump* aMinidump); - - bool Read(u_int32_t aExpectedSize); - - // The largest number of threads that will be read from a minidump. The - // default is 256. - static u_int32_t max_threads_; - - // Access to threads using the thread ID as the key. - IDToThreadMap id_to_thread_map_; - - // The list of threads. - MinidumpThreads* threads_; - u_int32_t thread_count_; -}; - - -// MinidumpModule wraps MDRawModule, which contains information about loaded -// code modules. Access is provided to various data referenced indirectly -// by MDRawModule, such as the module's name and a specification for where -// to locate debugging information for the module. -class MinidumpModule : public MinidumpObject, - public CodeModule { - public: - virtual ~MinidumpModule(); - - static void set_max_cv_bytes(u_int32_t max_cv_bytes) { - max_cv_bytes_ = max_cv_bytes; - } - static u_int32_t max_cv_bytes() { return max_cv_bytes_; } - - static void set_max_misc_bytes(u_int32_t max_misc_bytes) { - max_misc_bytes_ = max_misc_bytes; - } - static u_int32_t max_misc_bytes() { return max_misc_bytes_; } - - const MDRawModule* module() const { return valid_ ? &module_ : NULL; } - - // CodeModule implementation - virtual u_int64_t base_address() const { - return valid_ ? module_.base_of_image : static_cast(-1); - } - virtual u_int64_t size() const { return valid_ ? module_.size_of_image : 0; } - virtual string code_file() const; - virtual string code_identifier() const; - virtual string debug_file() const; - virtual string debug_identifier() const; - virtual string version() const; - virtual const CodeModule* Copy() const; - - // The CodeView record, which contains information to locate the module's - // debugging information (pdb). This is returned as u_int8_t* because - // the data can be of types MDCVInfoPDB20* or MDCVInfoPDB70*, or it may be - // of a type unknown to Breakpad, in which case the raw data will still be - // returned but no byte-swapping will have been performed. Check the - // record's signature in the first four bytes to differentiate between - // the various types. Current toolchains generate modules which carry - // MDCVInfoPDB70 by default. Returns a pointer to the CodeView record on - // success, and NULL on failure. On success, the optional |size| argument - // is set to the size of the CodeView record. - const u_int8_t* GetCVRecord(u_int32_t* size); - - // The miscellaneous debug record, which is obsolete. Current toolchains - // do not generate this type of debugging information (dbg), and this - // field is not expected to be present. Returns a pointer to the debugging - // record on success, and NULL on failure. On success, the optional |size| - // argument is set to the size of the debugging record. - const MDImageDebugMisc* GetMiscRecord(u_int32_t* size); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // These objects are managed by MinidumpModuleList. - friend class MinidumpModuleList; - - explicit MinidumpModule(Minidump* minidump); - - // This works like MinidumpStream::Read, but is driven by - // MinidumpModuleList. No size checking is done, because - // MinidumpModuleList handles that directly. - bool Read(); - - // Reads indirectly-referenced data, including the module name, CodeView - // record, and miscellaneous debugging record. This is necessary to allow - // MinidumpModuleList to fully construct MinidumpModule objects without - // requiring seeks to read a contiguous set of MinidumpModule objects. - // All auxiliary data should be available when Read is called, in order to - // allow the CodeModule getters to be const methods. - bool ReadAuxiliaryData(); - - // The largest number of bytes that will be read from a minidump for a - // CodeView record or miscellaneous debugging record, respectively. The - // default for each is 1024. - static u_int32_t max_cv_bytes_; - static u_int32_t max_misc_bytes_; - - // True after a successful Read. This is different from valid_, which is - // not set true until ReadAuxiliaryData also completes successfully. - // module_valid_ is only used by ReadAuxiliaryData and the functions it - // calls to determine whether the object is ready for auxiliary data to - // be read. - bool module_valid_; - - // True if debug info was read from the module. Certain modules - // may contain debug records in formats we don't support, - // so we can just set this to false to ignore them. - bool has_debug_info_; - - MDRawModule module_; - - // Cached module name. - const string* name_; - - // Cached CodeView record - this is MDCVInfoPDB20 or (likely) - // MDCVInfoPDB70, or possibly something else entirely. Stored as a u_int8_t - // because the structure contains a variable-sized string and its exact - // size cannot be known until it is processed. - vector* cv_record_; - - // If cv_record_ is present, cv_record_signature_ contains a copy of the - // CodeView record's first four bytes, for ease of determinining the - // type of structure that cv_record_ contains. - u_int32_t cv_record_signature_; - - // Cached MDImageDebugMisc (usually not present), stored as u_int8_t - // because the structure contains a variable-sized string and its exact - // size cannot be known until it is processed. - vector* misc_record_; -}; - - -// MinidumpModuleList contains all of the loaded code modules for a process -// in the form of MinidumpModules. It maintains a map of these modules -// so that it may easily provide a code module corresponding to a specific -// address. -class MinidumpModuleList : public MinidumpStream, - public CodeModules { - public: - virtual ~MinidumpModuleList(); - - static void set_max_modules(u_int32_t max_modules) { - max_modules_ = max_modules; - } - static u_int32_t max_modules() { return max_modules_; } - - // CodeModules implementation. - virtual unsigned int module_count() const { - return valid_ ? module_count_ : 0; - } - virtual const MinidumpModule* GetModuleForAddress(u_int64_t address) const; - virtual const MinidumpModule* GetMainModule() const; - virtual const MinidumpModule* GetModuleAtSequence( - unsigned int sequence) const; - virtual const MinidumpModule* GetModuleAtIndex(unsigned int index) const; - virtual const CodeModules* Copy() const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef vector MinidumpModules; - - static const u_int32_t kStreamType = MD_MODULE_LIST_STREAM; - - explicit MinidumpModuleList(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // The largest number of modules that will be read from a minidump. The - // default is 1024. - static u_int32_t max_modules_; - - // Access to modules using addresses as the key. - RangeMap *range_map_; - - MinidumpModules *modules_; - u_int32_t module_count_; -}; - - -// MinidumpMemoryList corresponds to a minidump's MEMORY_LIST_STREAM stream, -// which references the snapshots of all of the memory regions contained -// within the minidump. For a normal minidump, this includes stack memory -// (also referenced by each MinidumpThread, in fact, the MDMemoryDescriptors -// here and in MDRawThread both point to exactly the same data in a -// minidump file, conserving space), as well as a 256-byte snapshot of memory -// surrounding the instruction pointer in the case of an exception. Other -// types of minidumps may contain significantly more memory regions. Full- -// memory minidumps contain all of a process' mapped memory. -class MinidumpMemoryList : public MinidumpStream { - public: - virtual ~MinidumpMemoryList(); - - static void set_max_regions(u_int32_t max_regions) { - max_regions_ = max_regions; - } - static u_int32_t max_regions() { return max_regions_; } - - unsigned int region_count() const { return valid_ ? region_count_ : 0; } - - // Sequential access to memory regions. - MinidumpMemoryRegion* GetMemoryRegionAtIndex(unsigned int index); - - // Random access to memory regions. Returns the region encompassing - // the address identified by address. - MinidumpMemoryRegion* GetMemoryRegionForAddress(u_int64_t address); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef vector MemoryDescriptors; - typedef vector MemoryRegions; - - static const u_int32_t kStreamType = MD_MEMORY_LIST_STREAM; - - explicit MinidumpMemoryList(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // The largest number of memory regions that will be read from a minidump. - // The default is 256. - static u_int32_t max_regions_; - - // Access to memory regions using addresses as the key. - RangeMap *range_map_; - - // The list of descriptors. This is maintained separately from the list - // of regions, because MemoryRegion doesn't own its MemoryDescriptor, it - // maintains a pointer to it. descriptors_ provides the storage for this - // purpose. - MemoryDescriptors *descriptors_; - - // The list of regions. - MemoryRegions *regions_; - u_int32_t region_count_; -}; - - -// MinidumpException wraps MDRawExceptionStream, which contains information -// about the exception that caused the minidump to be generated, if the -// minidump was generated in an exception handler called as a result of -// an exception. It also provides access to a MinidumpContext object, -// which contains the CPU context for the exception thread at the time -// the exception occurred. -class MinidumpException : public MinidumpStream { - public: - virtual ~MinidumpException(); - - const MDRawExceptionStream* exception() const { - return valid_ ? &exception_ : NULL; - } - - // The thread ID is used to determine if a thread is the exception thread, - // so a special getter is provided to retrieve this data from the - // MDRawExceptionStream structure. Returns false if the thread ID cannot - // be determined. - bool GetThreadID(u_int32_t *thread_id) const; - - MinidumpContext* GetContext(); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_EXCEPTION_STREAM; - - explicit MinidumpException(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - MDRawExceptionStream exception_; - MinidumpContext* context_; -}; - - -// MinidumpSystemInfo wraps MDRawSystemInfo and provides information about -// the system on which the minidump was generated. See also MinidumpMiscInfo. -class MinidumpSystemInfo : public MinidumpStream { - public: - virtual ~MinidumpSystemInfo(); - - const MDRawSystemInfo* system_info() const { - return valid_ ? &system_info_ : NULL; - } - - // GetOS and GetCPU return textual representations of the operating system - // and CPU that produced the minidump. Unlike most other Minidump* methods, - // they return string objects, not weak pointers. Defined values for - // GetOS() are "mac", "windows", and "linux". Defined values for GetCPU - // are "x86" and "ppc". These methods return an empty string when their - // values are unknown. - string GetOS(); - string GetCPU(); - - // I don't know what CSD stands for, but this field is documented as - // returning a textual representation of the OS service pack. On other - // platforms, this provides additional information about an OS version - // level beyond major.minor.micro. Returns NULL if unknown. - const string* GetCSDVersion(); - - // If a CPU vendor string can be determined, returns a pointer to it, - // otherwise, returns NULL. CPU vendor strings can be determined from - // x86 CPUs with CPUID 0. - const string* GetCPUVendor(); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_SYSTEM_INFO_STREAM; - - explicit MinidumpSystemInfo(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - MDRawSystemInfo system_info_; - - // Textual representation of the OS service pack, for minidumps produced - // by MiniDumpWriteDump on Windows. - const string* csd_version_; - - // A string identifying the CPU vendor, if known. - const string* cpu_vendor_; -}; - - -// MinidumpMiscInfo wraps MDRawMiscInfo and provides information about -// the process that generated the minidump, and optionally additional system -// information. See also MinidumpSystemInfo. -class MinidumpMiscInfo : public MinidumpStream { - public: - const MDRawMiscInfo* misc_info() const { - return valid_ ? &misc_info_ : NULL; - } - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_MISC_INFO_STREAM; - - explicit MinidumpMiscInfo(Minidump* minidump_); - - bool Read(u_int32_t expected_size_); - - MDRawMiscInfo misc_info_; -}; - - -// MinidumpBreakpadInfo wraps MDRawBreakpadInfo, which is an optional stream in -// a minidump that provides additional information about the process state -// at the time the minidump was generated. -class MinidumpBreakpadInfo : public MinidumpStream { - public: - const MDRawBreakpadInfo* breakpad_info() const { - return valid_ ? &breakpad_info_ : NULL; - } - - // These thread IDs are used to determine if threads deserve special - // treatment, so special getters are provided to retrieve this data from - // the MDRawBreakpadInfo structure. The getters return false if the thread - // IDs cannot be determined. - bool GetDumpThreadID(u_int32_t *thread_id) const; - bool GetRequestingThreadID(u_int32_t *thread_id) const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_BREAKPAD_INFO_STREAM; - - explicit MinidumpBreakpadInfo(Minidump* minidump_); - - bool Read(u_int32_t expected_size_); - - MDRawBreakpadInfo breakpad_info_; -}; - - -// Minidump is the user's interface to a minidump file. It wraps MDRawHeader -// and provides access to the minidump's top-level stream directory. -class Minidump { - public: - // path is the pathname of a file containing the minidump. - explicit Minidump(const string& path); - - ~Minidump(); - - static void set_max_streams(u_int32_t max_streams) { - max_streams_ = max_streams; - } - static u_int32_t max_streams() { return max_streams_; } - - static void set_max_string_length(u_int32_t max_string_length) { - max_string_length_ = max_string_length; - } - static u_int32_t max_string_length() { return max_string_length_; } - - const MDRawHeader* header() const { return valid_ ? &header_ : NULL; } - - // Reads the minidump file's header and top-level stream directory. - // The minidump is expected to be positioned at the beginning of the - // header. Read() sets up the stream list and map, and validates the - // Minidump object. - bool Read(); - - // The next set of methods are stubs that call GetStream. They exist to - // force code generation of the templatized API within the module, and - // to avoid exposing an ugly API (GetStream needs to accept a garbage - // parameter). - MinidumpThreadList* GetThreadList(); - MinidumpModuleList* GetModuleList(); - MinidumpMemoryList* GetMemoryList(); - MinidumpException* GetException(); - MinidumpSystemInfo* GetSystemInfo(); - MinidumpMiscInfo* GetMiscInfo(); - MinidumpBreakpadInfo* GetBreakpadInfo(); - - // The next set of methods are provided for users who wish to access - // data in minidump files directly, while leveraging the rest of - // this class and related classes to handle the basic minidump - // structure and known stream types. - - unsigned int GetDirectoryEntryCount() const { - return valid_ ? header_.stream_count : 0; - } - const MDRawDirectory* GetDirectoryEntryAtIndex(unsigned int index) const; - - // The next 2 methods are lower-level I/O routines. They use fd_. - - // Reads count bytes from the minidump at the current position into - // the storage area pointed to by bytes. bytes must be of sufficient - // size. After the read, the file position is advanced by count. - bool ReadBytes(void* bytes, size_t count); - - // Sets the position of the minidump file to offset. - bool SeekSet(off_t offset); - - // Returns the current position of the minidump file. - off_t Tell() { return valid_ ? lseek(fd_, 0, SEEK_CUR) : (off_t)-1; } - - // The next 2 methods are medium-level I/O routines. - - // ReadString returns a string which is owned by the caller! offset - // specifies the offset that a length-encoded string is stored at in the - // minidump file. - string* ReadString(off_t offset); - - // SeekToStreamType positions the file at the beginning of a stream - // identified by stream_type, and informs the caller of the stream's - // length by setting *stream_length. Because stream_map maps each stream - // type to only one stream in the file, this might mislead the user into - // thinking that the stream that this seeks to is the only stream with - // type stream_type. That can't happen for streams that these classes - // deal with directly, because they're only supposed to be present in the - // file singly, and that's verified when stream_map_ is built. Users who - // are looking for other stream types should be aware of this - // possibility, and consider using GetDirectoryEntryAtIndex (possibly - // with GetDirectoryEntryCount) if expecting multiple streams of the same - // type in a single minidump file. - bool SeekToStreamType(u_int32_t stream_type, u_int32_t* stream_length); - - bool swap() const { return valid_ ? swap_ : false; } - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // MinidumpStreamInfo is used in the MinidumpStreamMap. It lets - // the Minidump object locate interesting streams quickly, and - // provides a convenient place to stash MinidumpStream objects. - struct MinidumpStreamInfo { - MinidumpStreamInfo() : stream_index(0), stream(NULL) {} - ~MinidumpStreamInfo() { delete stream; } - - // Index into the MinidumpDirectoryEntries vector - unsigned int stream_index; - - // Pointer to the stream if cached, or NULL if not yet populated - MinidumpStream* stream; - }; - - typedef vector MinidumpDirectoryEntries; - typedef map MinidumpStreamMap; - - template T* GetStream(T** stream); - - // Opens the minidump file, or if already open, seeks to the beginning. - bool Open(); - - // The largest number of top-level streams that will be read from a minidump. - // Note that streams are only read (and only consume memory) as needed, - // when directed by the caller. The default is 128. - static u_int32_t max_streams_; - - // The maximum length of a UTF-16 string that will be read from a minidump - // in 16-bit words. The default is 1024. UTF-16 strings are converted - // to UTF-8 when stored in memory, and each UTF-16 word will be represented - // by as many as 3 bytes in UTF-8. - static unsigned int max_string_length_; - - MDRawHeader header_; - - // The list of streams. - MinidumpDirectoryEntries* directory_; - - // Access to streams using the stream type as the key. - MinidumpStreamMap* stream_map_; - - // The pathname of the minidump file to process, set in the constructor. - const string path_; - - // The file descriptor for all file I/O. Used by ReadBytes and SeekSet. - // Set based on the |path_| member by Open, which is called by Read. - int fd_; - - // swap_ is true if the minidump file should be byte-swapped. If the - // minidump was produced by a CPU that is other-endian than the CPU - // processing the minidump, this will be true. If the two CPUs are - // same-endian, this will be false. - bool swap_; - - // Validity of the Minidump structure, false immediately after - // construction or after a failed Read(); true following a successful - // Read(). - bool valid_; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump_processor.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump_processor.h deleted file mode 100644 index 73447f97..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/minidump_processor.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -class Minidump; -class ProcessState; -class SourceLineResolverInterface; -class SymbolSupplier; -class SystemInfo; - -class MinidumpProcessor { - public: - // Return type for Process() - enum ProcessResult { - PROCESS_OK, // the minidump was processed successfully - PROCESS_ERROR, // there was an error processing the minidump - PROCESS_INTERRUPTED // processing was interrupted by the SymbolSupplier - }; - - // Initializes this MinidumpProcessor. supplier should be an - // implementation of the SymbolSupplier abstract base class. - MinidumpProcessor(SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - ~MinidumpProcessor(); - - // Processes the minidump file and fills process_state with the result. - ProcessResult Process(const string &minidump_file, - ProcessState *process_state); - - // Populates the cpu_* fields of the |info| parameter with textual - // representations of the CPU type that the minidump in |dump| was - // produced on. Returns false if this information is not available in - // the minidump. - static bool GetCPUInfo(Minidump *dump, SystemInfo *info); - - // Populates the os_* fields of the |info| parameter with textual - // representations of the operating system that the minidump in |dump| - // was produced on. Returns false if this information is not available in - // the minidump. - static bool GetOSInfo(Minidump *dump, SystemInfo *info); - - // Returns a textual representation of the reason that a crash occurred, - // if the minidump in dump was produced as a result of a crash. Returns - // an empty string if this information cannot be determined. If address - // is non-NULL, it will be set to contain the address that caused the - // exception, if this information is available. This will be a code - // address when the crash was caused by problems such as illegal - // instructions or divisions by zero, or a data address when the crash - // was caused by a memory access violation. - static string GetCrashReason(Minidump *dump, u_int64_t *address); - - private: - SymbolSupplier *supplier_; - SourceLineResolverInterface *resolver_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/process_state.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/process_state.h deleted file mode 100644 index afbbb193..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/process_state.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// process_state.h: A snapshot of a process, in a fully-digested state. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ - -#include -#include -#include "google_breakpad/processor/system_info.h" -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; -using std::vector; - -class CallStack; -class CodeModules; - -class ProcessState { - public: - ProcessState() : modules_(NULL) { Clear(); } - ~ProcessState(); - - // Resets the ProcessState to its default values - void Clear(); - - // Accessors. See the data declarations below. - u_int32_t time_date_stamp() const { return time_date_stamp_; } - bool crashed() const { return crashed_; } - string crash_reason() const { return crash_reason_; } - u_int64_t crash_address() const { return crash_address_; } - int requesting_thread() const { return requesting_thread_; } - const vector* threads() const { return &threads_; } - const SystemInfo* system_info() const { return &system_info_; } - const CodeModules* modules() const { return modules_; } - - private: - // MinidumpProcessor is responsible for building ProcessState objects. - friend class MinidumpProcessor; - - // The time-date stamp of the minidump (time_t format) - u_int32_t time_date_stamp_; - - // True if the process crashed, false if the dump was produced outside - // of an exception handler. - bool crashed_; - - // If the process crashed, the type of crash. OS- and possibly CPU- - // specific. For example, "EXCEPTION_ACCESS_VIOLATION" (Windows), - // "EXC_BAD_ACCESS / KERN_INVALID_ADDRESS" (Mac OS X), "SIGSEGV" - // (other Unix). - string crash_reason_; - - // If the process crashed, and if crash_reason implicates memory, - // the memory address that caused the crash. For data access errors, - // this will be the data address that caused the fault. For code errors, - // this will be the address of the instruction that caused the fault. - u_int64_t crash_address_; - - // The index of the thread that requested a dump be written in the - // threads vector. If a dump was produced as a result of a crash, this - // will point to the thread that crashed. If the dump was produced as - // by user code without crashing, and the dump contains extended Breakpad - // information, this will point to the thread that requested the dump. - // If the dump was not produced as a result of an exception and no - // extended Breakpad information is present, this field will be set to -1, - // indicating that the dump thread is not available. - int requesting_thread_; - - // Stacks for each thread (except possibly the exception handler - // thread) at the time of the crash. - vector threads_; - - // OS and CPU information. - SystemInfo system_info_; - - // The modules that were loaded into the process represented by the - // ProcessState. - const CodeModules *modules_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/source_line_resolver_interface.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/source_line_resolver_interface.h deleted file mode 100644 index 93ef85d2..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/source_line_resolver_interface.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Abstract interface to return function/file/line info for a memory address. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -struct StackFrame; -struct StackFrameInfo; - -class SourceLineResolverInterface { - public: - typedef u_int64_t MemAddr; - - virtual ~SourceLineResolverInterface() {} - - // Adds a module to this resolver, returning true on success. - // - // module_name may be an arbitrary string. Typically, it will be the - // filename of the module, optionally with version identifiers. - // - // map_file should contain line/address mappings for this module. - virtual bool LoadModule(const string &module_name, - const string &map_file) = 0; - // Same as above, but takes the contents of a pre-read map buffer - virtual bool LoadModuleUsingMapBuffer(const string &module_name, - const string &map_buffer) = 0; - - // Returns true if a module with the given name has been loaded. - virtual bool HasModule(const string &module_name) const = 0; - - // Fills in the function_base, function_name, source_file_name, - // and source_line fields of the StackFrame. The instruction and - // module_name fields must already be filled in. Additional debugging - // information, if available, is returned. If the information is not - // available, returns NULL. A NULL return value does not indicate an - // error. The caller takes ownership of any returned StackFrameInfo - // object. - virtual StackFrameInfo* FillSourceLineInfo(StackFrame *frame) const = 0; - - protected: - // SourceLineResolverInterface cannot be instantiated except by subclasses - SourceLineResolverInterface() {} -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame.h deleted file mode 100644 index b330f8ae..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -class CodeModule; - -using std::string; - -struct StackFrame { - StackFrame() - : instruction(), - module(NULL), - function_name(), - function_base(), - source_file_name(), - source_line(), - source_line_base() {} - virtual ~StackFrame() {} - - // The program counter location as an absolute virtual address. For the - // innermost called frame in a stack, this will be an exact program counter - // or instruction pointer value. For all other frames, this will be within - // the instruction that caused execution to branch to a called function, - // but may not necessarily point to the exact beginning of that instruction. - u_int64_t instruction; - - // The module in which the instruction resides. - const CodeModule *module; - - // The function name, may be omitted if debug symbols are not available. - string function_name; - - // The start address of the function, may be omitted if debug symbols - // are not available. - u_int64_t function_base; - - // The source file name, may be omitted if debug symbols are not available. - string source_file_name; - - // The (1-based) source line number, may be omitted if debug symbols are - // not available. - int source_line; - - // The start address of the source line, may be omitted if debug symbols - // are not available. - u_int64_t source_line_base; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame_cpu.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame_cpu.h deleted file mode 100644 index 70823b9c..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stack_frame_cpu.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stack_frame_cpu.h: CPU-specific StackFrame extensions. -// -// These types extend the StackFrame structure to carry CPU-specific register -// state. They are defined in this header instead of stack_frame.h to -// avoid the need to include minidump_format.h when only the generic -// StackFrame type is needed. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ - -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stack_frame.h" - -namespace google_breakpad { - -struct StackFrameX86 : public StackFrame { - // ContextValidity has one entry for each relevant hardware pointer register - // (%eip and %esp) and one entry for each nonvolatile (callee-save) register. - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_EIP = 1 << 0, - CONTEXT_VALID_ESP = 1 << 1, - CONTEXT_VALID_EBP = 1 << 2, - CONTEXT_VALID_EBX = 1 << 3, - CONTEXT_VALID_ESI = 1 << 4, - CONTEXT_VALID_EDI = 1 << 5, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameX86() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextX86 context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFramePPC : public StackFrame { - // ContextValidity should eventually contain entries for the validity of - // other nonvolatile (callee-save) registers as in - // StackFrameX86::ContextValidity, but the ppc stackwalker doesn't currently - // locate registers other than the ones listed here. - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_SRR0 = 1 << 0, - CONTEXT_VALID_GPR1 = 1 << 1, - CONTEXT_VALID_ALL = -1 - }; - - StackFramePPC() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextPPC context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFrameAMD64 : public StackFrame { - // ContextValidity has one entry for each relevant hardware pointer register - // (%rip and %rsp) and one entry for each nonvolatile (callee-save) register. - //FIXME: validate this list - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_RIP = 1 << 0, - CONTEXT_VALID_RSP = 1 << 1, - CONTEXT_VALID_RBP = 1 << 2, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameAMD64() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextAMD64 context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFrameSPARC : public StackFrame { - // to be confirmed - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_PC = 1 << 0, - CONTEXT_VALID_SP = 1 << 1, - CONTEXT_VALID_FP = 1 << 2, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameSPARC() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextSPARC context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stackwalker.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stackwalker.h deleted file mode 100644 index c463fd80..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/stackwalker.h +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker.h: Generic stackwalker. -// -// The Stackwalker class is an abstract base class providing common generic -// methods that apply to stacks from all systems. Specific implementations -// will extend this class by providing GetContextFrame and GetCallerFrame -// methods to fill in system-specific data in a StackFrame structure. -// Stackwalker assembles these StackFrame strucutres into a CallStack. -// -// Author: Mark Mentovai - - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ - -#include - -namespace google_breakpad { - -class CallStack; -class CodeModules; -template class linked_ptr; -class MemoryRegion; -class MinidumpContext; -class SourceLineResolverInterface; -struct StackFrame; -struct StackFrameInfo; -class SymbolSupplier; -class SystemInfo; - -using std::vector; - - -class Stackwalker { - public: - virtual ~Stackwalker() {} - - // Populates the given CallStack by calling GetContextFrame and - // GetCallerFrame. The frames are further processed to fill all available - // data. Returns true if the stackwalk completed, or false if it was - // interrupted by SymbolSupplier::GetSymbolFile(). - bool Walk(CallStack *stack); - - // Returns a new concrete subclass suitable for the CPU that a stack was - // generated on, according to the CPU type indicated by the context - // argument. If no suitable concrete subclass exists, returns NULL. - static Stackwalker* StackwalkerForCPU(const SystemInfo *system_info, - MinidumpContext *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - protected: - // system_info identifies the operating system, NULL or empty if unknown. - // memory identifies a MemoryRegion that provides the stack memory - // for the stack to walk. modules, if non-NULL, is a CodeModules - // object that is used to look up which code module each stack frame is - // associated with. supplier is an optional caller-supplied SymbolSupplier - // implementation. If supplier is NULL, source line info will not be - // resolved. resolver is an instance of SourceLineResolverInterface - // (see source_line_resolver_interface.h and basic_source_line_resolver.h). - // If resolver is NULL, source line info will not be resolved. - Stackwalker(const SystemInfo *system_info, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - // Information about the system that produced the minidump. Subclasses - // and the SymbolSupplier may find this information useful. - const SystemInfo *system_info_; - - // The stack memory to walk. Subclasses will require this region to - // get information from the stack. - MemoryRegion *memory_; - - // A list of modules, for populating each StackFrame's module information. - // This field is optional and may be NULL. - const CodeModules *modules_; - - private: - // Obtains the context frame, the innermost called procedure in a stack - // trace. Returns NULL on failure. GetContextFrame allocates a new - // StackFrame (or StackFrame subclass), ownership of which is taken by - // the caller. - virtual StackFrame* GetContextFrame() = 0; - - // Obtains a caller frame. Each call to GetCallerFrame should return the - // frame that called the last frame returned by GetContextFrame or - // GetCallerFrame. To aid this purpose, stack contains the CallStack - // made of frames that have already been walked. GetCallerFrame should - // return NULL on failure or when there are no more caller frames (when - // the end of the stack has been reached). GetCallerFrame allocates a new - // StackFrame (or StackFrame subclass), ownership of which is taken by - // the caller. - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) = 0; - - // The optional SymbolSupplier for resolving source line info. - SymbolSupplier *supplier_; - - // The SourceLineResolver implementation - SourceLineResolverInterface *resolver_; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/symbol_supplier.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/symbol_supplier.h deleted file mode 100644 index 7b9d00e4..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/symbol_supplier.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// The caller may implement the SymbolSupplier abstract base class -// to provide symbols for a given module. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ - -#include - -namespace google_breakpad { - -using std::string; -class CodeModule; -class SystemInfo; - -class SymbolSupplier { - public: - // Result type for GetSymbolFile - enum SymbolResult { - // no symbols were found, but continue processing - NOT_FOUND, - - // symbols were found, and the path has been placed in symbol_file - FOUND, - - // stops processing the minidump immediately - INTERRUPT - }; - - virtual ~SymbolSupplier() {} - - // Retrieves the symbol file for the given CodeModule, placing the - // path in symbol_file if successful. system_info contains strings - // identifying the operating system and CPU; SymbolSupplier may use - // to help locate the symbol file. system_info may be NULL or its - // fields may be empty if these values are unknown. symbol_file - // must be a pointer to a valid string - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file) = 0; - // Same as above, except also places symbol data into symbol_data. - // If symbol_data is NULL, the data is not returned. - // TODO(nealsid) Once we have symbol data caching behavior implemented - // investigate making all symbol suppliers implement all methods, - // and make this pure virtual - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data) = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/system_info.h b/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/system_info.h deleted file mode 100644 index fdbdbfd6..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/google_breakpad/processor/system_info.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// system_info.h: Information about the system that was running a program -// when a crash report was produced. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ - -#include - -namespace google_breakpad { - -using std::string; - -struct SystemInfo { - public: - SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(), - cpu_count(0) {} - - // Resets the SystemInfo object to its default values. - void Clear() { - os.clear(); - os_short.clear(); - os_version.clear(); - cpu.clear(); - cpu_info.clear(); - cpu_count = 0; - } - - // A string identifying the operating system, such as "Windows NT", - // "Mac OS X", or "Linux". If the information is present in the dump but - // its value is unknown, this field will contain a numeric value. If - // the information is not present in the dump, this field will be empty. - string os; - - // A short form of the os string, using lowercase letters and no spaces, - // suitable for use in a filesystem. Possible values are "windows", - // "mac", and "linux". Empty if the information is not present in the dump - // or if the OS given by the dump is unknown. The values stored in this - // field should match those used by MinidumpSystemInfo::GetOS. - string os_short; - - // A string identifying the version of the operating system, such as - // "5.1.2600 Service Pack 2" or "10.4.8 8L2127". If the dump does not - // contain this information, this field will be empty. - string os_version; - - // A string identifying the basic CPU family, such as "x86" or "ppc". - // If this information is present in the dump but its value is unknown, - // this field will contain a numeric value. If the information is not - // present in the dump, this field will be empty. The values stored in - // this field should match those used by MinidumpSystemInfo::GetCPU. - string cpu; - - // A string further identifying the specific CPU, such as - // "GenuineIntel level 6 model 13 stepping 8". If the information is not - // present in the dump, or additional identifying information is not - // defined for the CPU family, this field will be empty. - string cpu_info; - - // The number of processors in the system. Will be greater than one for - // multi-core systems. - int cpu_count; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map-inl.h deleted file mode 100644 index d88b4fcc..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map-inl.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// address_map-inl.h: Address map implementation. -// -// See address_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_ADDRESS_MAP_INL_H__ -#define PROCESSOR_ADDRESS_MAP_INL_H__ - -#include - -#include "processor/address_map.h" -#include "processor/logging.h" - -namespace google_breakpad { - -template -bool AddressMap::Store(const AddressType &address, - const EntryType &entry) { - // Ensure that the specified address doesn't conflict with something already - // in the map. - if (map_.find(address) != map_.end()) { - BPLOG(INFO) << "Store failed, address " << HexString(address) << - " is already present"; - return false; - } - - map_.insert(MapValue(address, entry)); - return true; -} - -template -bool AddressMap::Retrieve( - const AddressType &address, - EntryType *entry, AddressType *entry_address) const { - BPLOG_IF(ERROR, !entry) << "AddressMap::Retrieve requires |entry|"; - assert(entry); - - // upper_bound gives the first element whose key is greater than address, - // but we want the first element whose key is less than or equal to address. - // Decrement the iterator to get there, but not if the upper_bound already - // points to the beginning of the map - in that case, address is lower than - // the lowest stored key, so return false. - MapConstIterator iterator = map_.upper_bound(address); - if (iterator == map_.begin()) - return false; - --iterator; - - *entry = iterator->second; - if (entry_address) - *entry_address = iterator->first; - - return true; -} - -template -void AddressMap::Clear() { - map_.clear(); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_ADDRESS_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map.h deleted file mode 100644 index 14139e7a..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/address_map.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// address_map.h: Address maps. -// -// An address map contains a set of objects keyed by address. Objects are -// retrieved from the map by returning the object with the highest key less -// than or equal to the lookup key. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_ADDRESS_MAP_H__ -#define PROCESSOR_ADDRESS_MAP_H__ - -#include - -namespace google_breakpad { - -template -class AddressMap { - public: - AddressMap() : map_() {} - - // Inserts an entry into the map. Returns false without storing the entry - // if an entry is already stored in the map at the same address as specified - // by the address argument. - bool Store(const AddressType &address, const EntryType &entry); - - // Locates the entry stored at the highest address less than or equal to - // the address argument. If there is no such range, returns false. The - // entry is returned in entry, which is a required argument. If - // entry_address is not NULL, it will be set to the address that the entry - // was stored at. - bool Retrieve(const AddressType &address, - EntryType *entry, AddressType *entry_address) const; - - // Empties the address map, restoring it to the same state as when it was - // initially created. - void Clear(); - - private: - // Convenience types. - typedef std::map AddressToEntryMap; - typedef typename AddressToEntryMap::const_iterator MapConstIterator; - typedef typename AddressToEntryMap::value_type MapValue; - - // Maps the address of each entry to an EntryType. - AddressToEntryMap map_; -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_ADDRESS_MAP_H__ - diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_module.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_module.h deleted file mode 100644 index 5c9f75f1..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_module.h +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// basic_code_module.h: Carries information about code modules that are loaded -// into a process. -// -// This is a basic concrete implementation of CodeModule. It cannot be -// instantiated directly, only based on other objects that implement -// the CodeModule interface. It exists to provide a CodeModule implementation -// a place to store information when the life of the original object (such as -// a MinidumpModule) cannot be guaranteed. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_BASIC_CODE_MODULE_H__ -#define PROCESSOR_BASIC_CODE_MODULE_H__ - -#include - -#include "google_breakpad/processor/code_module.h" - -namespace google_breakpad { - -using std::string; - -class BasicCodeModule : public CodeModule { - public: - // Creates a new BasicCodeModule given any existing CodeModule - // implementation. This is useful to make a copy of the data relevant to - // the CodeModule interface without requiring all of the resources that - // other CodeModule implementations may require. - explicit BasicCodeModule(const CodeModule *that) - : base_address_(that->base_address()), - size_(that->size()), - code_file_(that->code_file()), - code_identifier_(that->code_identifier()), - debug_file_(that->debug_file()), - debug_identifier_(that->debug_identifier()), - version_(that->version()) {} - virtual ~BasicCodeModule() {} - - // See code_module.h for descriptions of these methods and the associated - // members. - virtual u_int64_t base_address() const { return base_address_; } - virtual u_int64_t size() const { return size_; } - virtual string code_file() const { return code_file_; } - virtual string code_identifier() const { return code_identifier_; } - virtual string debug_file() const { return debug_file_; } - virtual string debug_identifier() const { return debug_identifier_; } - virtual string version() const { return version_; } - virtual const CodeModule* Copy() const { return new BasicCodeModule(this); } - - private: - u_int64_t base_address_; - u_int64_t size_; - string code_file_; - string code_identifier_; - string debug_file_; - string debug_identifier_; - string version_; - - // Disallow copy constructor and assignment operator. - BasicCodeModule(const BasicCodeModule &that); - void operator=(const BasicCodeModule &that); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_BASIC_CODE_MODULE_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_modules.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_modules.h deleted file mode 100644 index df87fc49..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/basic_code_modules.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// basic_code_modules.h: Contains all of the CodeModule objects that -// were loaded into a single process. -// -// This is a basic concrete implementation of CodeModules. It cannot be -// instantiated directly, only based on other objects that implement -// the CodeModules interface. It exists to provide a CodeModules -// implementation a place to store information when the life of the original -// object (such as a MinidumpModuleList) cannot be guaranteed. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_BASIC_CODE_MODULES_H__ -#define PROCESSOR_BASIC_CODE_MODULES_H__ - -#include "google_breakpad/processor/code_modules.h" - -namespace google_breakpad { - -template class linked_ptr; -template class RangeMap; - -class BasicCodeModules : public CodeModules { - public: - // Creates a new BasicCodeModules object given any existing CodeModules - // implementation. This is useful to make a copy of the data relevant to - // the CodeModules and CodeModule interfaces without requiring all of the - // resources that other implementations may require. A copy will be - // made of each contained CodeModule using CodeModule::Copy. - explicit BasicCodeModules(const CodeModules *that); - - virtual ~BasicCodeModules(); - - // See code_modules.h for descriptions of these methods. - virtual unsigned int module_count() const; - virtual const CodeModule* GetModuleForAddress(u_int64_t address) const; - virtual const CodeModule* GetMainModule() const; - virtual const CodeModule* GetModuleAtSequence(unsigned int sequence) const; - virtual const CodeModule* GetModuleAtIndex(unsigned int index) const; - virtual const CodeModules* Copy() const; - - private: - // The base address of the main module. - u_int64_t main_address_; - - // The map used to contain each CodeModule, keyed by each CodeModule's - // address range. - RangeMap > *map_; - - // Disallow copy constructor and assignment operator. - BasicCodeModules(const BasicCodeModules &that); - void operator=(const BasicCodeModules &that); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_BASIC_CODE_MODULES_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map-inl.h deleted file mode 100644 index 5cc498df..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map-inl.h +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// contained_range_map-inl.h: Hierarchically-organized range map implementation. -// -// See contained_range_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ -#define PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ - - -#include - -#include "processor/contained_range_map.h" -#include "processor/logging.h" - - -namespace google_breakpad { - - -template -ContainedRangeMap::~ContainedRangeMap() { - // Clear frees the children pointed to by the map, and frees the map itself. - Clear(); -} - - -template -bool ContainedRangeMap::StoreRange( - const AddressType &base, const AddressType &size, const EntryType &entry) { - AddressType high = base + size - 1; - - // Check for undersize or overflow. - if (size <= 0 || high < base) { - //TODO(nealsid) We are commenting this out in order to prevent - // excessive logging. We plan to move to better logging as this - // failure happens quite often and is expected(see comment in - // basic_source_line_resolver.cc:671). - // BPLOG(INFO) << "StoreRange failed, " << HexString(base) << "+" - // << HexString(size) << ", " << HexString(high); - return false; - } - - if (!map_) - map_ = new AddressToRangeMap(); - - MapIterator iterator_base = map_->lower_bound(base); - MapIterator iterator_high = map_->lower_bound(high); - MapIterator iterator_end = map_->end(); - - if (iterator_base == iterator_high && iterator_base != iterator_end && - base >= iterator_base->second->base_) { - // The new range is entirely within an existing child range. - - // If the new range's geometry is exactly equal to an existing child - // range's, it violates the containment rules, and an attempt to store - // it must fail. iterator_base->first contains the key, which was the - // containing child's high address. - if (iterator_base->second->base_ == base && iterator_base->first == high) { - // TODO(nealsid): See the TODO above on why this is commented out. -// BPLOG(INFO) << "StoreRange failed, identical range is already " -// "present: " << HexString(base) << "+" << HexString(size); - return false; - } - - // Pass the new range on to the child to attempt to store. - return iterator_base->second->StoreRange(base, size, entry); - } - - // iterator_high might refer to an irrelevant range: one whose base address - // is higher than the new range's high address. Set contains_high to true - // only if iterator_high refers to a range that is at least partially - // within the new range. - bool contains_high = iterator_high != iterator_end && - high >= iterator_high->second->base_; - - // If the new range encompasses any existing child ranges, it must do so - // fully. Partial containment isn't allowed. - if ((iterator_base != iterator_end && base > iterator_base->second->base_) || - (contains_high && high < iterator_high->first)) { - // TODO(mmentovai): Some symbol files will trip this check frequently - // on STACK lines. Too many messages will be produced. These are more - // suitable for a DEBUG channel than an INFO channel. - // BPLOG(INFO) << "StoreRange failed, new range partially contains " - // "existing range: " << HexString(base) << "+" << - // HexString(size); - return false; - } - - // When copying and erasing contained ranges, the "end" iterator needs to - // point one past the last item of the range to copy. If contains_high is - // false, the iterator's already in the right place; the increment is safe - // because contains_high can't be true if iterator_high == iterator_end. - if (contains_high) - ++iterator_high; - - // Optimization: if the iterators are equal, no child ranges would be - // moved. Create the new child range with a NULL map to conserve space - // in leaf nodes, of which there will be many. - AddressToRangeMap *child_map = NULL; - - if (iterator_base != iterator_high) { - // The children of this range that are contained by the new range must - // be transferred over to the new range. Create the new child range map - // and copy the pointers to range maps it should contain into it. - child_map = new AddressToRangeMap(iterator_base, iterator_high); - - // Remove the copied child pointers from this range's map of children. - map_->erase(iterator_base, iterator_high); - } - - // Store the new range in the map by its high address. Any children that - // the new child range contains were formerly children of this range but - // are now this range's grandchildren. Ownership of these is transferred - // to the new child range. - map_->insert(MapValue(high, - new ContainedRangeMap(base, entry, child_map))); - return true; -} - - -template -bool ContainedRangeMap::RetrieveRange( - const AddressType &address, EntryType *entry) const { - BPLOG_IF(ERROR, !entry) << "ContainedRangeMap::RetrieveRange requires " - "|entry|"; - assert(entry); - - // If nothing was ever stored, then there's nothing to retrieve. - if (!map_) - return false; - - // Get an iterator to the child range whose high address is equal to or - // greater than the supplied address. If the supplied address is higher - // than all of the high addresses in the range, then this range does not - // contain a child at address, so return false. If the supplied address - // is lower than the base address of the child range, then it is not within - // the child range, so return false. - MapConstIterator iterator = map_->lower_bound(address); - if (iterator == map_->end() || address < iterator->second->base_) - return false; - - // The child in iterator->second contains the specified address. Find out - // if it has a more-specific descendant that also contains it. If it does, - // it will set |entry| appropriately. If not, set |entry| to the child. - if (!iterator->second->RetrieveRange(address, entry)) - *entry = iterator->second->entry_; - - return true; -} - - -template -void ContainedRangeMap::Clear() { - if (map_) { - MapConstIterator end = map_->end(); - for (MapConstIterator child = map_->begin(); child != end; ++child) - delete child->second; - - delete map_; - map_ = NULL; - } -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map.h deleted file mode 100644 index f30016f3..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/contained_range_map.h +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// contained_range_map.h: Hierarchically-organized range maps. -// -// A contained range map is similar to a standard range map, except it allows -// objects to be organized hierarchically. A contained range map allows -// objects to contain other objects. It is not sensitive to the order that -// objects are added to the map: larger, more general, containing objects -// may be added either before or after smaller, more specific, contained -// ones. -// -// Contained range maps guarantee that each object may only contain smaller -// objects than itself, and that a parent object may only contain child -// objects located entirely within the parent's address space. Attempts -// to introduce objects (via StoreRange) that violate these rules will fail. -// Retrieval (via RetrieveRange) always returns the most specific (smallest) -// object that contains the address being queried. Note that while it is -// not possible to insert two objects into a map that have exactly the same -// geometry (base address and size), it is possible to completely mask a -// larger object by inserting smaller objects that entirely fill the larger -// object's address space. -// -// Internally, contained range maps are implemented as a tree. Each tree -// node except for the root node describes an object in the map. Each node -// maintains its list of children in a map similar to a standard range map, -// keyed by the highest address that each child occupies. Each node's -// children occupy address ranges entirely within the node. The root node -// is the only node directly accessible to the user, and represents the -// entire address space. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_CONTAINED_RANGE_MAP_H__ -#define PROCESSOR_CONTAINED_RANGE_MAP_H__ - - -#include - - -namespace google_breakpad { - - -template -class ContainedRangeMap { - public: - // The default constructor creates a ContainedRangeMap with no geometry - // and no entry, and as such is only suitable for the root node of a - // ContainedRangeMap tree. - ContainedRangeMap() : base_(), entry_(), map_(NULL) {} - - ~ContainedRangeMap(); - - // Inserts a range into the map. If the new range is encompassed by - // an existing child range, the new range is passed into the child range's - // StoreRange method. If the new range encompasses any existing child - // ranges, those child ranges are moved to the new range, becoming - // grandchildren of this ContainedRangeMap. Returns false for a - // parameter error, or if the ContainedRangeMap hierarchy guarantees - // would be violated. - bool StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry); - - // Retrieves the most specific (smallest) descendant range encompassing - // the specified address. This method will only return entries held by - // child ranges, and not the entry contained by |this|. This is necessary - // to support a sparsely-populated root range. If no descendant range - // encompasses the address, returns false. - bool RetrieveRange(const AddressType &address, EntryType *entry) const; - - // Removes all children. Note that Clear only removes descendants, - // leaving the node on which it is called intact. Because the only - // meaningful things contained by a root node are descendants, this - // is sufficient to restore an entire ContainedRangeMap to its initial - // empty state when called on the root node. - void Clear(); - - private: - // AddressToRangeMap stores pointers. This makes reparenting simpler in - // StoreRange, because it doesn't need to copy entire objects. - typedef std::map AddressToRangeMap; - typedef typename AddressToRangeMap::const_iterator MapConstIterator; - typedef typename AddressToRangeMap::iterator MapIterator; - typedef typename AddressToRangeMap::value_type MapValue; - - // Creates a new ContainedRangeMap with the specified base address, entry, - // and initial child map, which may be NULL. This is only used internally - // by ContainedRangeMap when it creates a new child. - ContainedRangeMap(const AddressType &base, const EntryType &entry, - AddressToRangeMap *map) - : base_(base), entry_(entry), map_(map) {} - - // The base address of this range. The high address does not need to - // be stored, because it is used as the key to an object in its parent's - // map, and all ContainedRangeMaps except for the root range are contained - // within maps. The root range does not actually contain an entry, so its - // base_ field is meaningless, and the fact that it has no parent and thus - // no key is unimportant. For this reason, the base_ field should only be - // is accessed on child ContainedRangeMap objects, and never on |this|. - const AddressType base_; - - // The entry corresponding to this range. The root range does not - // actually contain an entry, so its entry_ field is meaningless. For - // this reason, the entry_ field should only be accessed on child - // ContainedRangeMap objects, and never on |this|. - const EntryType entry_; - - // The map containing child ranges, keyed by each child range's high - // address. This is a pointer to avoid allocating map structures for - // leaf nodes, where they are not needed. - AddressToRangeMap *map_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_CONTAINED_RANGE_MAP_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/linked_ptr.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/linked_ptr.h deleted file mode 100644 index 1a4ef7d4..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/linked_ptr.h +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// A "smart" pointer type with reference tracking. Every pointer to a -// particular object is kept on a circular linked list. When the last pointer -// to an object is destroyed or reassigned, the object is deleted. -// -// Used properly, this deletes the object when the last reference goes away. -// There are several caveats: -// - Like all reference counting schemes, cycles lead to leaks. -// - Each smart pointer is actually two pointers (8 bytes instead of 4). -// - Every time a pointer is assigned, the entire list of pointers to that -// object is traversed. This class is therefore NOT SUITABLE when there -// will often be more than two or three pointers to a particular object. -// - References are only tracked as long as linked_ptr<> objects are copied. -// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS -// will happen (double deletion). -// -// A good use of this class is storing object references in STL containers. -// You can safely put linked_ptr<> in a vector<>. -// Other uses may not be as good. -// -// Note: If you use an incomplete type with linked_ptr<>, the class -// *containing* linked_ptr<> must have a constructor and destructor (even -// if they do nothing!). - -#ifndef PROCESSOR_LINKED_PTR_H__ -#define PROCESSOR_LINKED_PTR_H__ - -namespace google_breakpad { - -// This is used internally by all instances of linked_ptr<>. It needs to be -// a non-template class because different types of linked_ptr<> can refer to -// the same object (linked_ptr(obj) vs linked_ptr(obj)). -// So, it needs to be possible for different types of linked_ptr to participate -// in the same circular linked list, so we need a single class type here. -// -// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. -class linked_ptr_internal { - public: - // Create a new circle that includes only this instance. - void join_new() { - next_ = this; - } - - // Join an existing circle. - void join(linked_ptr_internal const* ptr) { - linked_ptr_internal const* p = ptr; - while (p->next_ != ptr) p = p->next_; - p->next_ = this; - next_ = ptr; - } - - // Leave whatever circle we're part of. Returns true iff we were the - // last member of the circle. Once this is done, you can join() another. - bool depart() { - if (next_ == this) return true; - linked_ptr_internal const* p = next_; - while (p->next_ != this) p = p->next_; - p->next_ = next_; - return false; - } - - private: - mutable linked_ptr_internal const* next_; -}; - -template -class linked_ptr { - public: - typedef T element_type; - - // Take over ownership of a raw pointer. This should happen as soon as - // possible after the object is created. - explicit linked_ptr(T* ptr = NULL) { capture(ptr); } - ~linked_ptr() { depart(); } - - // Copy an existing linked_ptr<>, adding ourselves to the list of references. - template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } - linked_ptr(linked_ptr const& ptr) { copy(&ptr); } - - // Assignment releases the old value and acquires the new. - template linked_ptr& operator=(linked_ptr const& ptr) { - depart(); - copy(&ptr); - return *this; - } - - linked_ptr& operator=(linked_ptr const& ptr) { - if (&ptr != this) { - depart(); - copy(&ptr); - } - return *this; - } - - // Smart pointer members. - void reset(T* ptr = NULL) { depart(); capture(ptr); } - T* get() const { return value_; } - T* operator->() const { return value_; } - T& operator*() const { return *value_; } - // Release ownership of the pointed object and returns it. - // Sole ownership by this linked_ptr object is required. - T* release() { - bool last = link_.depart(); - T* v = value_; - value_ = NULL; - return v; - } - - bool operator==(T* p) const { return value_ == p; } - bool operator!=(T* p) const { return value_ != p; } - template - bool operator==(linked_ptr const& ptr) const { - return value_ == ptr.get(); - } - template - bool operator!=(linked_ptr const& ptr) const { - return value_ != ptr.get(); - } - - private: - template - friend class linked_ptr; - - T* value_; - linked_ptr_internal link_; - - void depart() { - if (link_.depart()) delete value_; - } - - void capture(T* ptr) { - value_ = ptr; - link_.join_new(); - } - - template void copy(linked_ptr const* ptr) { - value_ = ptr->get(); - if (value_) - link_.join(&ptr->link_); - else - link_.join_new(); - } -}; - -template inline -bool operator==(T* ptr, const linked_ptr& x) { - return ptr == x.get(); -} - -template inline -bool operator!=(T* ptr, const linked_ptr& x) { - return ptr != x.get(); -} - -// A function to convert T* into linked_ptr -// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation -// for linked_ptr >(new FooBarBaz(arg)) -template -linked_ptr make_linked_ptr(T* ptr) { - return linked_ptr(ptr); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_LINKED_PTR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/logging.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/logging.h deleted file mode 100644 index b638ff58..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/logging.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// logging.h: Breakpad logging -// -// Breakpad itself uses Breakpad logging with statements of the form: -// BPLOG(severity) << "message"; -// severity may be INFO, ERROR, or other values defined in this file. -// -// BPLOG is an overridable macro so that users can customize Breakpad's -// logging. Left at the default, logging messages are sent to stderr along -// with a timestamp and the source code location that produced a message. -// The streams may be changed by redefining BPLOG_*_STREAM, the logging -// behavior may be changed by redefining BPLOG_*, and the entire logging -// system may be overridden by redefining BPLOG(severity). These -// redefinitions may be passed to the preprocessor as a command-line flag -// (-D). -// -// If an additional header is required to override Breakpad logging, it can -// be specified by the BP_LOGGING_INCLUDE macro. If defined, this header -// will #include the header specified by that macro. -// -// If any initialization is needed before logging, it can be performed by -// a function called through the BPLOG_INIT macro. Each main function of -// an executable program in the Breakpad processor library calls -// BPLOG_INIT(&argc, &argv); before any logging can be performed; define -// BPLOG_INIT appropriately if initialization is required. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_LOGGING_H__ -#define PROCESSOR_LOGGING_H__ - -#include -#include - -#include "google_breakpad/common/breakpad_types.h" - -#ifdef BP_LOGGING_INCLUDE -#include BP_LOGGING_INCLUDE -#endif // BP_LOGGING_INCLUDE - -namespace google_breakpad { - -class LogStream { - public: - enum Severity { - SEVERITY_INFO, - SEVERITY_ERROR - }; - - // Begin logging a message to the stream identified by |stream|, at the - // indicated severity. The file and line parameters should be set so as to - // identify the line of source code that is producing a message. - LogStream(std::ostream &stream, Severity severity, - const char *file, int line); - - // Finish logging by printing a newline and flushing the output stream. - ~LogStream(); - - template std::ostream& operator<<(const T &t) { - return stream_ << t; - } - - private: - std::ostream &stream_; - - // Disallow copy constructor and assignment operator - explicit LogStream(const LogStream &that); - void operator=(const LogStream &that); -}; - -// This class is used to explicitly ignore values in the conditional logging -// macros. This avoids compiler warnings like "value computed is not used" -// and "statement has no effect". -class LogMessageVoidify { - public: - LogMessageVoidify() {} - - // This has to be an operator with a precedence lower than << but higher - // than ?: - void operator&(std::ostream &) {} -}; - -// Returns number formatted as a hexadecimal string, such as "0x7b". -std::string HexString(u_int32_t number); -std::string HexString(u_int64_t number); -std::string HexString(int number); - -// Returns the error code as set in the global errno variable, and sets -// error_string, a required argument, to a string describing that error -// code. -int ErrnoString(std::string *error_string); - -} // namespace google_breakpad - -#ifndef BPLOG_INIT -#define BPLOG_INIT(pargc, pargv) -#endif // BPLOG_INIT - -#ifndef BPLOG -#define BPLOG(severity) BPLOG_ ## severity -#endif // BPLOG - -#ifndef BPLOG_INFO -#ifndef BPLOG_INFO_STREAM -#define BPLOG_INFO_STREAM std::clog -#endif // BPLOG_INFO_STREAM -#define BPLOG_INFO google_breakpad::LogStream(BPLOG_INFO_STREAM, \ - google_breakpad::LogStream::SEVERITY_INFO, \ - __FILE__, __LINE__) -#endif // BPLOG_INFO - -#ifndef BPLOG_ERROR -#ifndef BPLOG_ERROR_STREAM -#define BPLOG_ERROR_STREAM std::cerr -#endif // BPLOG_ERROR_STREAM -#define BPLOG_ERROR google_breakpad::LogStream(BPLOG_ERROR_STREAM, \ - google_breakpad::LogStream::SEVERITY_ERROR, \ - __FILE__, __LINE__) -#endif // BPLOG_ERROR - -#define BPLOG_IF(severity, condition) \ - !(condition) ? (void) 0 : \ - google_breakpad::LogMessageVoidify() & BPLOG(severity) - -#endif // PROCESSOR_LOGGING_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/pathname_stripper.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/pathname_stripper.h deleted file mode 100644 index 17db75d6..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/pathname_stripper.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// pathname_stripper.h: Manipulates pathnames into their component parts. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_PATHNAME_STRIPPER_H__ -#define PROCESSOR_PATHNAME_STRIPPER_H__ - -#include - -namespace google_breakpad { - -using std::string; - -class PathnameStripper { - public: - // Given path, a pathname with components separated by slashes (/) or - // backslashes (\), returns the trailing component, without any separator. - // If path ends in a separator character, returns an empty string. - static string File(const string &path); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_PATHNAME_STRIPPER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator-inl.h deleted file mode 100644 index aa0851d9..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator-inl.h +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// postfix_evaluator-inl.h: Postfix (reverse Polish) notation expression -// evaluator. -// -// Documentation in postfix_evaluator.h. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_POSTFIX_EVALUATOR_INL_H__ -#define PROCESSOR_POSTFIX_EVALUATOR_INL_H__ - - -#include - -#include "processor/postfix_evaluator.h" -#include "google_breakpad/processor/memory_region.h" -#include "processor/logging.h" - -namespace google_breakpad { - -using std::istringstream; -using std::ostringstream; - - -// A small class used in Evaluate to make sure to clean up the stack -// before returning failure. -class AutoStackClearer { - public: - explicit AutoStackClearer(vector *stack) : stack_(stack) {} - ~AutoStackClearer() { stack_->clear(); } - - private: - vector *stack_; -}; - - -template -bool PostfixEvaluator::Evaluate(const string &expression, - DictionaryValidityType *assigned) { - // Ensure that the stack is cleared before returning. - AutoStackClearer clearer(&stack_); - - // Tokenize, splitting on whitespace. - istringstream stream(expression); - string token; - while (stream >> token) { - // There are enough binary operations that do exactly the same thing - // (other than the specific operation, of course) that it makes sense - // to share as much code as possible. - enum BinaryOperation { - BINARY_OP_NONE = 0, - BINARY_OP_ADD, - BINARY_OP_SUBTRACT, - BINARY_OP_MULTIPLY, - BINARY_OP_DIVIDE_QUOTIENT, - BINARY_OP_DIVIDE_MODULUS - }; - - BinaryOperation operation = BINARY_OP_NONE; - if (token == "+") - operation = BINARY_OP_ADD; - else if (token == "-") - operation = BINARY_OP_SUBTRACT; - else if (token == "*") - operation = BINARY_OP_MULTIPLY; - else if (token == "/") - operation = BINARY_OP_DIVIDE_QUOTIENT; - else if (token == "%") - operation = BINARY_OP_DIVIDE_MODULUS; - - if (operation != BINARY_OP_NONE) { - // Get the operands. - ValueType operand1, operand2; - if (!PopValues(&operand1, &operand2)) { - BPLOG(ERROR) << "Could not PopValues to get two values for binary " - "operation " << token << ": " << expression; - return false; - } - - // Perform the operation. - ValueType result; - switch (operation) { - case BINARY_OP_ADD: - result = operand1 + operand2; - break; - case BINARY_OP_SUBTRACT: - result = operand1 - operand2; - break; - case BINARY_OP_MULTIPLY: - result = operand1 * operand2; - break; - case BINARY_OP_DIVIDE_QUOTIENT: - result = operand1 / operand2; - break; - case BINARY_OP_DIVIDE_MODULUS: - result = operand1 % operand2; - break; - case BINARY_OP_NONE: - // This will not happen, but compilers will want a default or - // BINARY_OP_NONE case. - BPLOG(ERROR) << "Not reached!"; - return false; - break; - } - - // Save the result. - PushValue(result); - } else if (token == "^") { - // ^ for unary dereference. Can't dereference without memory. - if (!memory_) { - BPLOG(ERROR) << "Attempt to dereference without memory: " << - expression; - return false; - } - - ValueType address; - if (!PopValue(&address)) { - BPLOG(ERROR) << "Could not PopValue to get value to derefence: " << - expression; - return false; - } - - ValueType value; - if (!memory_->GetMemoryAtAddress(address, &value)) { - BPLOG(ERROR) << "Could not dereference memory at address " << - HexString(address) << ": " << expression; - return false; - } - - PushValue(value); - } else if (token == "=") { - // = for assignment. - ValueType value; - if (!PopValue(&value)) { - BPLOG(ERROR) << "Could not PopValue to get value to assign: " << - expression; - return false; - } - - // Assignment is only meaningful when assigning into an identifier. - // The identifier must name a variable, not a constant. Variables - // begin with '$'. - string identifier; - if (PopValueOrIdentifier(NULL, &identifier) != POP_RESULT_IDENTIFIER) { - BPLOG(ERROR) << "PopValueOrIdentifier returned a value, but an " - "identifier is needed to assign " << - HexString(value) << ": " << expression; - return false; - } - if (identifier.empty() || identifier[0] != '$') { - BPLOG(ERROR) << "Can't assign " << HexString(value) << " to " << - identifier << ": " << expression; - return false; - } - - (*dictionary_)[identifier] = value; - if (assigned) - (*assigned)[identifier] = true; - } else { - // The token is not an operator, it's a literal value or an identifier. - // Push it onto the stack as-is. Use push_back instead of PushValue - // because PushValue pushes ValueType as a string, but token is already - // a string. - stack_.push_back(token); - } - } - - // If there's anything left on the stack, it indicates incomplete execution. - // This is a failure case. If the stack is empty, evalution was complete - // and successful. - BPLOG_IF(ERROR, !stack_.empty()) << "Incomplete execution: " << expression; - return stack_.empty(); -} - - -template -typename PostfixEvaluator::PopResult -PostfixEvaluator::PopValueOrIdentifier( - ValueType *value, string *identifier) { - // There needs to be at least one element on the stack to pop. - if (!stack_.size()) - return POP_RESULT_FAIL; - - string token = stack_.back(); - stack_.pop_back(); - - // First, try to treat the value as a literal. In order for this to - // succed, the entire string must be parseable as ValueType. If this - // isn't possible, it can't be a literal, so treat it as an identifier - // instead. - istringstream token_stream(token); - ValueType literal; - if (token_stream >> literal && token_stream.peek() == EOF) { - if (value) { - *value = literal; - } - return POP_RESULT_VALUE; - } else { - if (identifier) { - *identifier = token; - } - return POP_RESULT_IDENTIFIER; - } -} - - -template -bool PostfixEvaluator::PopValue(ValueType *value) { - ValueType literal; - string token; - PopResult result; - if ((result = PopValueOrIdentifier(&literal, &token)) == POP_RESULT_FAIL) { - return false; - } else if (result == POP_RESULT_VALUE) { - // This is the easy case. - *value = literal; - } else { // result == POP_RESULT_IDENTIFIER - // There was an identifier at the top of the stack. Resolve it to a - // value by looking it up in the dictionary. - typename DictionaryType::const_iterator iterator = - dictionary_->find(token); - if (iterator == dictionary_->end()) { - // The identifier wasn't found in the dictionary. Don't imply any - // default value, just fail. - BPLOG(ERROR) << "Identifier " << token << " not in dictionary"; - return false; - } - - *value = iterator->second; - } - - return true; -} - - -template -bool PostfixEvaluator::PopValues(ValueType *value1, - ValueType *value2) { - return PopValue(value2) && PopValue(value1); -} - - -template -void PostfixEvaluator::PushValue(const ValueType &value) { - ostringstream token_stream; - token_stream << value; - stack_.push_back(token_stream.str()); -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_POSTFIX_EVALUATOR_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator.h deleted file mode 100644 index 552ed159..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/postfix_evaluator.h +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// postfix_evaluator.h: Postfix (reverse Polish) notation expression evaluator. -// -// PostfixEvaluator evaluates an expression, using the expression itself -// in postfix (reverse Polish) notation and a dictionary mapping constants -// and variables to their values. The evaluator supports standard -// arithmetic operations, assignment into variables, and when an optional -// MemoryRange is provided, dereferencing. (Any unary key-to-value operation -// may be used with a MemoryRange implementation that returns the appropriate -// values, but PostfixEvaluator was written with dereferencing in mind.) -// -// The expression language is simple. Expressions are supplied as strings, -// with operands and operators delimited by whitespace. Operands may be -// either literal values suitable for ValueType, or constants or variables, -// which reference the dictionary. The supported binary operators are + -// (addition), - (subtraction), * (multiplication), / (quotient of division), -// and % (modulus of division). The unary ^ (dereference) operator is also -// provided. These operators allow any operand to be either a literal -// value, constant, or variable. Assignment (=) of any type of operand into -// a variable is also supported. -// -// The dictionary is provided as a map with string keys. Keys beginning -// with the '$' character are treated as variables. All other keys are -// treated as constants. Any results must be assigned into variables in the -// dictionary. These variables do not need to exist prior to calling -// Evaluate, unless used in an expression prior to being assigned to. The -// internal stack state is not made available after evaluation, and any -// values remaining on the stack are treated as evidence of incomplete -// execution and cause the evaluator to indicate failure. -// -// PostfixEvaluator is intended to support evaluation of "program strings" -// obtained from MSVC frame data debugging information in pdb files as -// returned by the DIA APIs. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_POSTFIX_EVALUATOR_H__ -#define PROCESSOR_POSTFIX_EVALUATOR_H__ - - -#include -#include -#include - -namespace google_breakpad { - -using std::map; -using std::string; -using std::vector; - -class MemoryRegion; - -template -class PostfixEvaluator { - public: - typedef map DictionaryType; - typedef map DictionaryValidityType; - - // Create a PostfixEvaluator object that may be used (with Evaluate) on - // one or more expressions. PostfixEvaluator does not take ownership of - // either argument. |memory| may be NULL, in which case dereferencing - // (^) will not be supported. |dictionary| may be NULL, but evaluation - // will fail in that case unless set_dictionary is used before calling - // Evaluate. - PostfixEvaluator(DictionaryType *dictionary, MemoryRegion *memory) - : dictionary_(dictionary), memory_(memory), stack_() {} - - // Evaluate the expression. The results of execution will be stored - // in one (or more) variables in the dictionary. Returns false if any - // failures occure during execution, leaving variables in the dictionary - // in an indeterminate state. If assigned is non-NULL, any keys set in - // the dictionary as a result of evaluation will also be set to true in - // assigned, providing a way to determine if an expression modifies any - // of its input variables. - bool Evaluate(const string &expression, DictionaryValidityType *assigned); - - DictionaryType* dictionary() const { return dictionary_; } - - // Reset the dictionary. PostfixEvaluator does not take ownership. - void set_dictionary(DictionaryType *dictionary) {dictionary_ = dictionary; } - - private: - // Return values for PopValueOrIdentifier - enum PopResult { - POP_RESULT_FAIL = 0, - POP_RESULT_VALUE, - POP_RESULT_IDENTIFIER - }; - - // Retrieves the topmost literal value, constant, or variable from the - // stack. Returns POP_RESULT_VALUE if the topmost entry is a literal - // value, and sets |value| accordingly. Returns POP_RESULT_IDENTIFIER - // if the topmost entry is a constant or variable identifier, and sets - // |identifier| accordingly. Returns POP_RESULT_FAIL on failure, such - // as when the stack is empty. - PopResult PopValueOrIdentifier(ValueType *value, string *identifier); - - // Retrieves the topmost value on the stack. If the topmost entry is - // an identifier, the dictionary is queried for the identifier's value. - // Returns false on failure, such as when the stack is empty or when - // a nonexistent identifier is named. - bool PopValue(ValueType *value); - - // Retrieves the top two values on the stack, in the style of PopValue. - // value2 is popped before value1, so that value1 corresponds to the - // entry that was pushed prior to value2. Returns false on failure. - bool PopValues(ValueType *value1, ValueType *value2); - - // Pushes a new value onto the stack. - void PushValue(const ValueType &value); - - // The dictionary mapping constant and variable identifiers (strings) to - // values. Keys beginning with '$' are treated as variable names, and - // PostfixEvaluator is free to create and modify these keys. Weak pointer. - DictionaryType *dictionary_; - - // If non-NULL, the MemoryRegion used for dereference (^) operations. - // If NULL, dereferencing is unsupported and will fail. Weak pointer. - MemoryRegion *memory_; - - // The stack contains state information as execution progresses. Values - // are pushed on to it as the expression string is read and as operations - // yield values; values are popped when used as operands to operators. - vector stack_; -}; - -} // namespace google_breakpad - - -#endif // PROCESSOR_POSTFIX_EVALUATOR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map-inl.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map-inl.h deleted file mode 100644 index 77bf7d20..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map-inl.h +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// range_map-inl.h: Range map implementation. -// -// See range_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_RANGE_MAP_INL_H__ -#define PROCESSOR_RANGE_MAP_INL_H__ - - -#include - -#include "processor/range_map.h" -#include "processor/logging.h" - - -namespace google_breakpad { - - -template -bool RangeMap::StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry) { - AddressType high = base + size - 1; - - // Check for undersize or overflow. - if (size <= 0 || high < base) { - // The processor will hit this case too frequently with common symbol - // files in the size == 0 case, which is more suited to a DEBUG channel. - // Filter those out since there's no DEBUG channel at the moment. - BPLOG_IF(INFO, size != 0) << "StoreRange failed, " << HexString(base) << - "+" << HexString(size) << ", " << - HexString(high); - return false; - } - - // Ensure that this range does not overlap with another one already in the - // map. - MapConstIterator iterator_base = map_.lower_bound(base); - MapConstIterator iterator_high = map_.lower_bound(high); - - if (iterator_base != iterator_high) { - // Some other range begins in the space used by this range. It may be - // contained within the space used by this range, or it may extend lower. - // Regardless, it is an error. - AddressType other_base = iterator_base->second.base(); - AddressType other_size = iterator_base->first - other_base + 1; - BPLOG(INFO) << "StoreRange failed, an existing range is contained by or " - "extends lower than the new range: new " << - HexString(base) << "+" << HexString(size) << ", existing " << - HexString(other_base) << "+" << HexString(other_size); - return false; - } - - if (iterator_high != map_.end()) { - if (iterator_high->second.base() <= high) { - // The range above this one overlaps with this one. It may fully - // contain this range, or it may begin within this range and extend - // higher. Regardless, it's an error. - AddressType other_base = iterator_high->second.base(); - AddressType other_size = iterator_high->first - other_base + 1; - BPLOG(INFO) << "StoreRange failed, an existing range contains or " - "extends higher than the new range: new " << - HexString(base) << "+" << HexString(size) << - ", existing " << - HexString(other_base) << "+" << HexString(other_size); - return false; - } - } - - // Store the range in the map by its high address, so that lower_bound can - // be used to quickly locate a range by address. - map_.insert(MapValue(high, Range(base, entry))); - return true; -} - - -template -bool RangeMap::RetrieveRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRange requires |entry|"; - assert(entry); - - MapConstIterator iterator = map_.lower_bound(address); - if (iterator == map_.end()) - return false; - - // The map is keyed by the high address of each range, so |address| is - // guaranteed to be lower than the range's high address. If |range| is - // not directly preceded by another range, it's possible for address to - // be below the range's low address, though. When that happens, address - // references something not within any range, so return false. - if (address < iterator->second.base()) - return false; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->second.base(); - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -bool RangeMap::RetrieveNearestRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveNearestRange requires |entry|"; - assert(entry); - - // If address is within a range, RetrieveRange can handle it. - if (RetrieveRange(address, entry, entry_base, entry_size)) - return true; - - // upper_bound gives the first element whose key is greater than address, - // but we want the first element whose key is less than or equal to address. - // Decrement the iterator to get there, but not if the upper_bound already - // points to the beginning of the map - in that case, address is lower than - // the lowest stored key, so return false. - MapConstIterator iterator = map_.upper_bound(address); - if (iterator == map_.begin()) - return false; - --iterator; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->first; - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -bool RangeMap::RetrieveRangeAtIndex( - int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRangeAtIndex requires |entry|"; - assert(entry); - - if (index >= GetCount()) { - BPLOG(ERROR) << "Index out of range: " << index << "/" << GetCount(); - return false; - } - - // Walk through the map. Although it's ordered, it's not a vector, so it - // can't be addressed directly by index. - MapConstIterator iterator = map_.begin(); - for (int this_index = 0; this_index < index; ++this_index) - ++iterator; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->first; - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -int RangeMap::GetCount() const { - return map_.size(); -} - - -template -void RangeMap::Clear() { - map_.clear(); -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_RANGE_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map.h deleted file mode 100644 index a7b67412..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/range_map.h +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// range_map.h: Range maps. -// -// A range map associates a range of addresses with a specific object. This -// is useful when certain objects of variable size are located within an -// address space. The range map makes it simple to determine which object is -// associated with a specific address, which may be any address within the -// range associated with an object. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_RANGE_MAP_H__ -#define PROCESSOR_RANGE_MAP_H__ - - -#include - - -namespace google_breakpad { - - -template -class RangeMap { - public: - RangeMap() : map_() {} - - // Inserts a range into the map. Returns false for a parameter error, - // or if the location of the range would conflict with a range already - // stored in the map. - bool StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry); - - // Locates the range encompassing the supplied address. If there is - // no such range, returns false. entry_base and entry_size, if non-NULL, - // are set to the base and size of the entry's range. - bool RetrieveRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const; - - // Locates the range encompassing the supplied address, if one exists. - // If no range encompasses the supplied address, locates the nearest range - // to the supplied address that is lower than the address. Returns false - // if no range meets these criteria. entry_base and entry_size, if - // non-NULL, are set to the base and size of the entry's range. - bool RetrieveNearestRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; - - // Treating all ranges as a list ordered by the address spaces that they - // occupy, locates the range at the index specified by index. Returns - // false if index is larger than the number of ranges stored. entry_base - // and entry_size, if non-NULL, are set to the base and size of the entry's - // range. - // - // RetrieveRangeAtIndex is not optimized for speedy operation. - bool RetrieveRangeAtIndex(int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; - - // Returns the number of ranges stored in the RangeMap. - int GetCount() const; - - // Empties the range map, restoring it to the state it was when it was - // initially created. - void Clear(); - - private: - class Range { - public: - Range(const AddressType &base, const EntryType &entry) - : base_(base), entry_(entry) {} - - AddressType base() const { return base_; } - EntryType entry() const { return entry_; } - - private: - // The base address of the range. The high address does not need to - // be stored, because RangeMap uses it as the key to the map. - const AddressType base_; - - // The entry corresponding to a range. - const EntryType entry_; - }; - - // Convenience types. - typedef std::map AddressToRangeMap; - typedef typename AddressToRangeMap::const_iterator MapConstIterator; - typedef typename AddressToRangeMap::value_type MapValue; - - // Maps the high address of each range to a EntryType. - AddressToRangeMap map_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_RANGE_MAP_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/scoped_ptr.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/scoped_ptr.h deleted file mode 100644 index 0d4f7fd3..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/scoped_ptr.h +++ /dev/null @@ -1,335 +0,0 @@ -// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. -// Copyright (c) 2001, 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation. -// - -// scoped_ptr mimics a built-in pointer except that it guarantees deletion -// of the object pointed to, either on destruction of the scoped_ptr or via -// an explicit reset(). scoped_ptr is a simple solution for simple needs; -// use shared_ptr or std::auto_ptr if your needs are more complex. - -// *** NOTE *** -// If your scoped_ptr is a class member of class FOO pointing to a -// forward declared type BAR (as shown below), then you MUST use a non-inlined -// version of the destructor. The destructor of a scoped_ptr (called from -// FOO's destructor) must have a complete definition of BAR in order to -// destroy it. Example: -// -// -- foo.h -- -// class BAR; -// -// class FOO { -// public: -// FOO(); -// ~FOO(); // Required for sources that instantiate class FOO to compile! -// -// private: -// scoped_ptr bar_; -// }; -// -// -- foo.cc -- -// #include "foo.h" -// FOO::~FOO() {} // Empty, but must be non-inlined to FOO's class definition. - -// scoped_ptr_malloc added by Google -// When one of these goes out of scope, instead of doing a delete or -// delete[], it calls free(). scoped_ptr_malloc is likely to see -// much more use than any other specializations. - -// release() added by Google -// Use this to conditionally transfer ownership of a heap-allocated object -// to the caller, usually on method success. - -#ifndef PROCESSOR_SCOPED_PTR_H__ -#define PROCESSOR_SCOPED_PTR_H__ - -#include // for std::ptrdiff_t -#include // for assert -#include // for free() decl - -namespace google_breakpad { - -template -class scoped_ptr { - private: - - T* ptr; - - scoped_ptr(scoped_ptr const &); - scoped_ptr & operator=(scoped_ptr const &); - - public: - - typedef T element_type; - - explicit scoped_ptr(T* p = 0): ptr(p) {} - - ~scoped_ptr() { - typedef char type_must_be_complete[sizeof(T)]; - delete ptr; - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - delete ptr; - ptr = p; - } - } - - T& operator*() const { - assert(ptr != 0); - return *ptr; - } - - T* operator->() const { - assert(ptr != 0); - return ptr; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_ptr & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_ptr should have its own object - template bool operator==(scoped_ptr const& p) const; - template bool operator!=(scoped_ptr const& p) const; -}; - -template inline -void swap(scoped_ptr& a, scoped_ptr& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_ptr& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_ptr& b) { - return p != b.get(); -} - -// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to -// is guaranteed, either on destruction of the scoped_array or via an explicit -// reset(). Use shared_array or std::vector if your needs are more complex. - -template -class scoped_array { - private: - - T* ptr; - - scoped_array(scoped_array const &); - scoped_array & operator=(scoped_array const &); - - public: - - typedef T element_type; - - explicit scoped_array(T* p = 0) : ptr(p) {} - - ~scoped_array() { - typedef char type_must_be_complete[sizeof(T)]; - delete[] ptr; - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - delete [] ptr; - ptr = p; - } - } - - T& operator[](std::ptrdiff_t i) const { - assert(ptr != 0); - assert(i >= 0); - return ptr[i]; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_array & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_array should have its own object - template bool operator==(scoped_array const& p) const; - template bool operator!=(scoped_array const& p) const; -}; - -template inline -void swap(scoped_array& a, scoped_array& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_array& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_array& b) { - return p != b.get(); -} - - -// This class wraps the c library function free() in a class that can be -// passed as a template argument to scoped_ptr_malloc below. -class ScopedPtrMallocFree { - public: - inline void operator()(void* x) const { - free(x); - } -}; - -// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a -// second template argument, the functor used to free the object. - -template -class scoped_ptr_malloc { - private: - - T* ptr; - - scoped_ptr_malloc(scoped_ptr_malloc const &); - scoped_ptr_malloc & operator=(scoped_ptr_malloc const &); - - public: - - typedef T element_type; - - explicit scoped_ptr_malloc(T* p = 0): ptr(p) {} - - ~scoped_ptr_malloc() { - typedef char type_must_be_complete[sizeof(T)]; - free_((void*) ptr); - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - free_((void*) ptr); - ptr = p; - } - } - - T& operator*() const { - assert(ptr != 0); - return *ptr; - } - - T* operator->() const { - assert(ptr != 0); - return ptr; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_ptr_malloc & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_ptr_malloc should have its own object - template - bool operator==(scoped_ptr_malloc const& p) const; - template - bool operator!=(scoped_ptr_malloc const& p) const; - - static FreeProc const free_; -}; - -template -FP const scoped_ptr_malloc::free_ = FP(); - -template inline -void swap(scoped_ptr_malloc& a, scoped_ptr_malloc& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_ptr_malloc& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_ptr_malloc& b) { - return p != b.get(); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_SCOPED_PTR_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/simple_symbol_supplier.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/simple_symbol_supplier.h deleted file mode 100644 index dff6a512..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/simple_symbol_supplier.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// simple_symbol_supplier.h: A simple SymbolSupplier implementation -// -// SimpleSymbolSupplier is a straightforward implementation of SymbolSupplier -// that stores symbol files in a filesystem tree. A SimpleSymbolSupplier is -// created with one or more base directories, which are the root paths for all -// symbol files. Each symbol file contained therein has a directory entry in -// the base directory with a name identical to the corresponding debugging -// file (pdb). Within each of these directories, there are subdirectories -// named for the debugging file's identifier. For recent pdb files, this is -// a concatenation of the pdb's uuid and age, presented in hexadecimal form, -// without any dashes or separators. The uuid is in uppercase hexadecimal -// and the age is in lowercase hexadecimal. Within that subdirectory, -// SimpleSymbolSupplier expects to find the symbol file, which is named -// identically to the debug file, but with a .sym extension. If the original -// debug file had a name ending in .pdb, the .pdb extension will be replaced -// with .sym. This sample hierarchy is rooted at the "symbols" base -// directory: -// -// symbols -// symbols/test_app.pdb -// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1 -// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1/test_app.sym -// symbols/kernel32.pdb -// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542 -// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym -// -// In this case, the uuid of test_app.pdb is -// 63fe4780-728d-4937-9b9d-7bb6460cb42a and its age is 1. -// -// This scheme was chosen to be roughly analogous to the way that -// symbol files may be accessed from Microsoft Symbol Server. A hierarchy -// used for Microsoft Symbol Server storage is usable as a hierarchy for -// SimpleSymbolServer, provided that the pdb files are transformed to dumped -// format using a tool such as dump_syms, and given a .sym extension. -// -// SimpleSymbolSupplier will iterate over all root paths searching for -// a symbol file existing in that path. -// -// SimpleSymbolSupplier supports any debugging file which can be identified -// by a CodeModule object's debug_file and debug_identifier accessors. The -// expected ultimate source of these CodeModule objects are MinidumpModule -// objects; it is this class that is responsible for assigning appropriate -// values for debug_file and debug_identifier. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ -#define PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ - -#include -#include - -#include "google_breakpad/processor/symbol_supplier.h" - -namespace google_breakpad { - -using std::string; -using std::vector; - -class CodeModule; - -class SimpleSymbolSupplier : public SymbolSupplier { - public: - // Creates a new SimpleSymbolSupplier, using path as the root path where - // symbols are stored. - explicit SimpleSymbolSupplier(const string &path) : paths_(1, path) {} - - // Creates a new SimpleSymbolSupplier, using paths as a list of root - // paths where symbols may be stored. - explicit SimpleSymbolSupplier(const vector &paths) : paths_(paths) {} - - virtual ~SimpleSymbolSupplier() {} - - // Returns the path to the symbol file for the given module. See the - // description above. - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file); - - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data); - protected: - SymbolResult GetSymbolFileAtPathFromRoot(const CodeModule *module, - const SystemInfo *system_info, - const string &root_path, - string *symbol_file); - - private: - vector paths_; -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stack_frame_info.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stack_frame_info.h deleted file mode 100644 index 052a9338..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stack_frame_info.h +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stack_frame_info.h: Holds debugging information about a stack frame. -// -// This structure is specific to Windows debugging information obtained -// from pdb files using the DIA API. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACK_FRAME_INFO_H__ -#define PROCESSOR_STACK_FRAME_INFO_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -struct StackFrameInfo { - public: - enum Validity { - VALID_NONE = 0, - VALID_PARAMETER_SIZE = 1, - VALID_ALL = -1 - }; - - StackFrameInfo() : valid(VALID_NONE), - prolog_size(0), - epilog_size(0), - parameter_size(0), - saved_register_size(0), - local_size(0), - max_stack_size(0), - allocates_base_pointer(0), - program_string() {} - - StackFrameInfo(u_int32_t set_prolog_size, - u_int32_t set_epilog_size, - u_int32_t set_parameter_size, - u_int32_t set_saved_register_size, - u_int32_t set_local_size, - u_int32_t set_max_stack_size, - int set_allocates_base_pointer, - const std::string set_program_string) - : valid(VALID_ALL), - prolog_size(set_prolog_size), - epilog_size(set_epilog_size), - parameter_size(set_parameter_size), - saved_register_size(set_saved_register_size), - local_size(set_local_size), - max_stack_size(set_max_stack_size), - allocates_base_pointer(set_allocates_base_pointer), - program_string(set_program_string) {} - - // CopyFrom makes "this" StackFrameInfo object identical to "that". - void CopyFrom(const StackFrameInfo &that) { - valid = that.valid; - prolog_size = that.prolog_size; - epilog_size = that.epilog_size; - parameter_size = that.parameter_size; - saved_register_size = that.saved_register_size; - local_size = that.local_size; - max_stack_size = that.max_stack_size; - allocates_base_pointer = that.allocates_base_pointer; - program_string = that.program_string; - } - - // Clears the StackFrameInfo object so that users will see it as though - // it contains no information. - void Clear() { - valid = VALID_NONE; - program_string.erase(); - } - - // Identifies which fields in the structure are valid. This is of - // type Validity, but it is defined as an int because it's not - // possible to OR values into an enumerated type. Users must check - // this field before using any other. - int valid; - - // These values come from IDiaFrameData. - u_int32_t prolog_size; - u_int32_t epilog_size; - u_int32_t parameter_size; - u_int32_t saved_register_size; - u_int32_t local_size; - u_int32_t max_stack_size; - - // Only one of allocates_base_pointer or program_string will be valid. - // If program_string is empty, use allocates_base_pointer. - bool allocates_base_pointer; - std::string program_string; -}; - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACK_FRAME_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_amd64.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_amd64.h deleted file mode 100644 index a3e11358..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_amd64.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_amd64.h: amd64-specific stackwalker. -// -// Provides stack frames given amd64 register context and a memory region -// corresponding to a amd64 stack. -// -// Author: Mark Mentovai, Ted Mielczarek - - -#ifndef PROCESSOR_STACKWALKER_AMD64_H__ -#define PROCESSOR_STACKWALKER_AMD64_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerAMD64 : public Stackwalker { - public: - // context is a amd64 context object that gives access to amd64-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerAMD64(const SystemInfo *system_info, - const MDRawContextAMD64 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using amd64 context (stack pointer in %rsp, - // stack base in %rbp) and stack conventions (saved stack pointer at 0(%rbp)) - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextAMD64 *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_AMD64_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_ppc.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_ppc.h deleted file mode 100644 index 3d312419..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_ppc.h +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_ppc.h: ppc-specific stackwalker. -// -// Provides stack frames given ppc register context and a memory region -// corresponding to a ppc stack. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACKWALKER_PPC_H__ -#define PROCESSOR_STACKWALKER_PPC_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerPPC : public Stackwalker { - public: - // context is a ppc context object that gives access to ppc-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerPPC(const SystemInfo *system_info, - const MDRawContextPPC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using ppc context (stack pointer in %r1, - // saved program counter in %srr0) and stack conventions (saved stack - // pointer at 0(%r1), return address at 8(0(%r1)). - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextPPC *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_PPC_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_sparc.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_sparc.h deleted file mode 100644 index f051e5bb..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_sparc.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_sparc.h: sparc-specific stackwalker. -// -// Provides stack frames given sparc register context and a memory region -// corresponding to an sparc stack. -// -// Author: Michael Shang - - -#ifndef PROCESSOR_STACKWALKER_SPARC_H__ -#define PROCESSOR_STACKWALKER_SPARC_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerSPARC : public Stackwalker { - public: - // context is a sparc context object that gives access to sparc-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerSPARC(const SystemInfo *system_info, - const MDRawContextSPARC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using x86 context (%ebp, %esp, %eip) and - // stack conventions (saved %ebp at [%ebp], saved %eip at 4[%ebp], or - // alternate conventions as guided by stack_frame_info_). - // Implementation of Stackwalker, using ppc context (stack pointer in %r1, - // saved program counter in %srr0) and stack conventions (saved stack - // pointer at 0(%r1), return address at 8(0(%r1)). - // Implementation of Stackwalker, using sparc context (%fp, %sp, %pc) and - // stack conventions (saved %sp at) - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextSPARC *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_SPARC_H__ diff --git a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_x86.h b/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_x86.h deleted file mode 100644 index 14b9e8b9..00000000 --- a/thirdparty/google-breakpad/r318/include/google_breakpad/processor/stackwalker_x86.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_x86.h: x86-specific stackwalker. -// -// Provides stack frames given x86 register context and a memory region -// corresponding to an x86 stack. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACKWALKER_X86_H__ -#define PROCESSOR_STACKWALKER_X86_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - - -class StackwalkerX86 : public Stackwalker { - public: - // context is an x86 context object that gives access to x86-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerX86(const SystemInfo *system_info, - const MDRawContextX86 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using x86 context (%ebp, %esp, %eip) and - // stack conventions (saved %ebp at [%ebp], saved %eip at 4[%ebp], or - // alternate conventions as guided by stack_frame_info_). - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextX86 *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_X86_H__ diff --git a/thirdparty/google-breakpad/r318/lib/macx/libbreakpad.a b/thirdparty/google-breakpad/r318/lib/macx/libbreakpad.a deleted file mode 100644 index b8f80b2fb17a7540d85bba0bbc1b2d6d0e42f6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3008416 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%0Apt9> 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⪚VWi~}^mbGg3WtGX;n$!K) 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

&4mYbLd{HrLd( zwKca+YSNN8v8D!d6_4Ahsb00Jx!r1MZCKTAHLO}w-PllT)mFE|+|Dn%uX?Rb1ln3w zTf?JuOPiN3Z2;|7{ND^~Z0#2)50TH|V2R+4%v>snXUHOAFUtk>MSw5hstX;b~9Zm-1WjMw4z z(wdIe*1A>g-nvQa0oT&ThNgyg7i02z=(nL3rlqYNBbUla>9hOw)OG6FbMBRsY18hk zYrn5wQ)UHOHs0Zt>w+FR?@Cr+4RzB)mOJ!tD1!_MXIH`LO(WsZHsJCUQyR> zRX5e%HpQw@MhaEa)op93Zmsdwji=vh!)*FtFYAbRBz5nH*064@Uba@RT2TkNYMIcm zs&QgH;PH$Rsgn}VoItW#*U5ayRkHqN9iXkUDV<;4uu54v(qQw< z%VUv+GAvd;QV>5@FAlpmFPc>S*>lSE(Vop@blDS{(l&VsKxdXE)~lg?ovT#1a`eEm z*yB=1RCO(Xcu|9r=yB|W8loi8gUN#<1>A$f9;>rn$ONQkemw7;wl?GK=HNqoT?Mi$ zDrxr4O%na-4BqBygiUXfdMzy;%}G%&+4QNkMI&4kybXNS%DPn64m~wa;^A*?Yq3+D za1m24)dGZ8G4*avK;sm|)VswgPPmAvcUuD3DTt}}EvGo)!c%W~V{>);(zfa~brZ>= z*5<~gYnxm3f|FTxBHNxeE znNNw2?nMl`6#Ys)FS-=; z$=B2sZ8E~-C-1mNSPyGy>OT*@+7Z^Pt8Ew&zPh#%)?3y&GJLfotXDI_detMWx2$Dk z^fipE9zJ-T`p+{Tbx948ZtAVqHnM)(M%r&@d)=zqy4t0-RJT1e_7+IA{IOqy{+9UW z+J074%r?^4PYxQD}f#{04~J2va1-D)mfLKlBZ5% ziYi`PP}82Gk_S)IYKMZ@3s0Rjt+cbTV99yvcRejW=1iGe9;=&fd8}=8%VTY;TfRI-*WB`0+wPXf>ZV&BYXjW! zSRX{noq4Zq^{P)i>}Cpz{)>m*Vgr!I!@NF4Jk0Ay#KKx*Y-}7X#!kngwI9QAwkAuamRdKMG^)3z;^sp?BXRTAyz$SZr$T*ynQ_o-PP5zqBUT*J*LVg%&h|3Q)8F9 zsTaN~Nd+%Fc5|k1c;N^{x`_3a7Y?Hvqus0$19$yA*E+iu5^QrrW23A>Zk1TuZQCgq zZtru{zG?)UH}si)Pv&mkQp5mew$Fu6(3uztP{qw1?N;-0OF|0MEOci~!eP_tyN@nM z*tM?JV0>@IDr_BEW0pV}xQf@UscUUx)F4g?eJKTljs!)p;?;tpZm zQY?3B@)Z7>`nsBxZ5>T^Q%N2CV;4^t+caTptu?lM+SvKi#@>%HS{8$WOR-as5E%jr zo;KFlHhV2bJW@g2vpb={(^O{D^w8MahrgiwE2oV8XxiJ?wK&|-BeSf==9+4T!zQX7 z3*tQ(l|%WEsC)MXFs`+iJ^4mYV7-+0TwPp9FdTS;NntE{?C?70v+R8nU(w8;)0 z!6w89m#wp~|HJ(Oc(QHa&RS?#dp#Pp*VkFA>ekwl%1id);7UeEVqY|K=%~%xNqxhL z`n0{cys&B-o7+fvlManr5b5Q$pad~EsKTsu?R9O_EZOz4kQ(JF#~xGFwe?H!*48os zE9RnYTpjYh+S05?)OcBAT@zVs++SC>^8UJZr&lN6*4(k8Ud@q>3s#`HrEXQs2!O({ zhvC$N9yZn@dJ5x!`tER17d+>t-eNnaK5Jq2nryZJmR#mU-fD2$Y3XvrgNcKGY3kP2 zE$di;STe$v4a*x~YiibDe^Y}v#?o&UPq-a9*YwPoVa+dFI(y;VyYINCqHNZ;ikIF$ z_s+X#RxY@24)^oHMPrMn=;LOjX%6iC-F|LX{nU%Co0zh@n`63D{Q-~7BYUnL&eql; z@Boh0S@B~OCi(D18&r&|W1{_kBz@V2n9=kEzPtCAY`bs|O{K9Grlfgoo6%HVV>C9b z>R@1`t+}zfwV}=F)6=$N)yh@PYgbwK+%ITa8mrsUUDHVVn_aO0xDiA&5Fj)pz>d7l z!z6v6fpmgMe0@VZ76-0DXflGaq3J@HndVkwY)$fi$?&KZ*Bd8SC3>NCX!X=nhB$7i zO(XNT%fXvx_lcO327CNkhMEAZYiz7uRoC3nrlerz;x6uZE0`ijSM8# z7_4zg#_ZCo%w&3EFPUdteiIo-Vn|E!x$??@nwgpH_cO-7ss@%VcFv@3n+95OqL8d^ z!dmMzz9f3Y%S(oTWHRa8zqajx_l}k=@t(1|_5T3)z1~RDK5QOIuUOmosDrpAHt*eg z9lZY>s}qTJ^bKv1FAA>Qk#~6Ku{{aMY+Rl?USw@@+aCVd@@CICAi=!vo+x#Of!jq+ zzw_;SUW~EYCx~qtytlTJ;Z9o5i`zyJN3ZRr#5e>VI&HYHPpy^C7%Y_sIrc6A0}%5x z%_;(paaz%A+ANgO`9NYUgHJV~ZEbZ+i`Q*&`D58Dnv2rySC7j!amo|7oLvO*JAG=P z+Jbn>y}U_+z-hl6dl$Gs9gXb`Esb^B>xZYgTzTc}YrM4#`z;`Z!_~MBmb<#qTHDZG zkF5AY@pi`6I%hjEhqrMP^-g!@4ov(0sqD^7Oxr(WS{YPC>OZz&|k`$iUf0NhXa12S?iIqqJb8)KGEDm8(d|D2Z-4sP= z-?$qqxS&a(N7kM+t>bBAeeNlhLDhS5XD_Zw?Y*wzWLX`;)D11z397wlb!$5x_EGdK zmEeLW(!x3l)q^JJaX2$3d-h6Iilqq zb$lQ~E|7ZU+DDEO&?cXMeLFv1z7zUUyJ@Ns{Jz->ZLiOf0R?v@#?}HpbGNX8TjErH zVq6Wi8epg{z45q38snNJ*0(EsOLv{H%*4^2SRW6mU>6O|qm?h7pf*B?#MCCxX1BdL zO<%M_+BHtBo~Ek=KBRu44RpyfZNf0f?=n2aBhRxnRj+WOIwGU$o78s`qib2Y>I`q;LwD}JfEZYU_eMQmMrVB;pn#E6{nYcVq{tH@!(xMbqa zfNXKFa{_`#>e(J{~fGwlubVGHYP-#oJFy?J|jgiAFj!dB++tsjF`Wn%cCVt&;6 zcrljBF?7Vo2jg1A)YV2Mu8KpATQ_!%z62jpRubDs)aweo6Wq5^Oa?DhsrC_dOj!If zwc&6!L>_-k`Sfte)J38{X8ZDSC=57Fs>t48pns>#Z}X6%uDC&p5QkQqU;5D*59Vcc z$TZKTd1*}}9y{;}B4tufo?79(&FY$!6LC(v zaKg;;kaO}!Y5-g-rNQ$QnwHNT&uf}CJaEd=2*PG&}K zFV%G0_EOJzoV`?~%3j9nsT;$zw}_5-IyAX;Qi^iwy0PM%x?U2Io?qtljJZoE&vC-! zvL5Z6SgY+^x&?8oxJQ)Jw~KY=y(*Bto!Uyf#0s720j;!jR;#<_PQ&!=R&_Kj!!yTN zF|ZxO-q+Pvy@ICgi_zXz1Wys{cAr=ttM$>5FL}u>Rxcdt)P>VmT$>mjNoZrc&5oQ@ ziYCTHe-*+6osqXUa1YxX?Ba`D&aLb?oJz;Uvq*@z!&a17N$aaUya=_TgDW*cjj?uG zaC_kvb=+DjvBsKeyar}RavRhG8dftrD?Guumi3b0(u(Klw~?>X;FV51k&DL~@L)jF zb_pX(hFf?r(tfR^{b>4D;5mFfY`n8Yi=uPM#uOLPRyEsH#2T%^FFXSh-(H2@($Aee z#@M?0i34F_tdOV~bjRgsr|n6yd!O&t$;+ zXHV{>$2GTIIztTC4^3bIb z>zyol<3aDK=gyzdlQ?#FQ{ecv_m?eHkJtgNqXV9LaX4q+UuMVoQq=d2g}TTM=Y3qf z>=W}KM%?ltS!dmG-+gVw8;gy}>e^*V+O*cKX-Ise&~AV<#>dc0E^bOVy}GNer;)VN z&)?Z0$Cv;`Y+XC&(AQM`9q>SJ!fj~s)NRwS>XO?m>u6}KU8+Wv9KBQO^keUrlD{_0&qdjA>WX(lHTF|13qS;?Ha32_2A3?>M%x z+YoWg#CGz)sUXqbl5XubGm^Ahj`zgz2+<|C!+XO^)nkizoQ2eDL~XHhSma@7su+z! zryYs{otMF*NSIsL`kXdOSGn?dt7v!k=2v7x$kU77q!fNQ6m zID@@ziQVJPiiA4)nUC4AH^0=4b=*a_*5WzIy3Q6n2!@+U&YCPSEBozXhUwxSpVBv% zQlN>$GeY0SiIc^zFDg2w-O^;Zy%j94Jy(2E{d@deRX?3i-Y#b(Xx31vIir^WfKYJspT5`2HpV z@1j=Y(Z}jWJXI1`+vbOjTY+nv@dgx|$x}F1oA(K&1lr^2(S)lX>+sH%-3MO+j~BFf zI^rA>Hqm$!`zJ6R#qqfLa``3ppZ0xp0xzY1^}`VH6eNx-jt2?9ClNm`RUsWEiGA1) z8LGddT-PRebiGCD{{>S3*vg1m0qIb6U#wMi@$J1TOq#du2Gl{BTlddTOWpW-z{xt1jrd+; zjghIZb8(%+YmViwcSk=8_TpP@UDtK?YUOMfaYuc}AM}J-hC6@~vj!b;(l9@2tN#7{!1n}yD*aPNN{ozOP)@3hU;LuG*C;KO zZ(si8CE_WlHOeS6l$TKS*)EkW|yR>n>uE;+tucmHAW zJ-+pG;e#JRT@C;E2JG?iy>fT#{jlF1__lhG`pkWa*0(X;bMQU(XN+7mCtKfC>5eVn zPm8ms@c1XfhcVH!)VuJJn>zW8_3+v0qU-j$68_ieo#8XLK=+>Sy=v$b-g=xNx8(b-i9BM^-c)tp z@T*Sj9nF5^x8VgU$M%pW@0vuKp8<{9zw_?Fz+)5L8T9`kqd}#6yRNqVwQ#`54I3s7 z#{O&JuYfmLcch5)ppo{o zlJo(88T`Of(0MHK_rOb=i!mX;gffJE_R9`F_`-?!27VofuLSslXx|=zZ6$4xodUs2 znNa+yBEL{4zq<~6)O~`!s_y0Nb4MNMs{+4RXMFglH=(R|HRVvv%}>TUG>P0rTSC!j zC3xH4or<@#Q{*l5ifdQ*FaOzIdxoG}?Fa2t~htN&c5(+miYL zPrO6nwaSf}^7i?G#mm3`i9mUN^2KR`|(-)P?wtl2vdJpLbwAj_L3 zJp)@0-a*E4RQ>P1sdye~K)#%FMi~u7w@mFBqh&HuPMO>snG3nR-Y}*%Kz~&HsU0cx zEDzdu8PR^R``4tO{S&vlU+h)!rIa*pH)ClY*!sYbb(^hwBlp1veywO;f3MJ-%6B`A zHSrAhf=@JHeyqsDkUPfU1CX=JGoB0QWOUvg$s7aSDeK;Op1L^9dgP6gzsFuwHt+|R ztNyy))#XpCa`^YQ?t1JQd2RF3o^zJ**!TGh@GH~c=p*t zA}hUrQ4t(A{)|2XY{J!ICoHiOCBfdmID>U!jN-}0Upsa}?br4PYj(E>kN*^N8F`rc z$vJ|4Mpz$n)()R5uRCHHhlU)mVX6>U_6{T_ez5c>Xe*p8j-SJ|eY<#2yNy8?Rl zvOL)PvqF?TjeS=h%C@Tc-Z+=Kjeh!F+1Pli;?ZMo^xOcOepKLjT{nbi<6++)eLLKM zH3PASnS;>}Xxk!}8I*2)u^~&9M>wR$7`{WgUV8+_8=YLx9^~o2L>5t$` zNq^srSo)uQ0rclzI{iP`q2}+=EBxv2ZHT3R&C81ZwUblQ&$S!zDf;Z%2J}NGrYiY< zaw_eI_{*}Mb-oVS^6Z_@y`0UPgcm)7o}{bB!J8x)GJb7Kv95AE2c5#imsGX>sWmV5j1;!PTJ zsPV=y*Ud?e_XjF|mUceYKOZ|ETh}SRZ(L2jlJDd{Vu!B=ufskRYX{~_?uqJpI=-{^ zRoaOIqhbG!7=c*^?ggWLD7tYR?*lwgm0bcFTX5gQnVTxq=MjIO%Z>*n#5X~QTGM`T zHE2k;rsXGJ)4n%atzGN1{;s`3(fGYAUC#Sk${+pAYueUz$>(D25X+O!vF{q*wby67 z1Ifp`;RQ9WzBx+Y*Nj%<-LONKPx$=f-SmF)@vb?LY`n_z4 zh&f@5JrElci->&-MIXB=8E=KoM1737_HpfE&W&pyfABu~@z}@p>(pGf->dX*eFODV z{BNzV82>yRr8vrPl!v07dxe*bQDC0}K9q){?e{7^tk?Q!-3EFiBht^bv8kSy6Jt|7 z@5RQZ+7>AJi#&lo{{XS6?~Y9$n_BbU$YN9Ly0Dl3BgdvTf6R4?_m=-~v8hdUZfvT< z!Jj@hwRZCV`q)&*e47_Ko)QUuLC_jZ0oKAy)SC} z*N~QnjQJv7W8HmS&k@n1p8R*!HsU(oSjA?QWbmSvtJJ(_NK~nf)F11 z3`pI3B4z(K_TOz;N!Ojlz-z~^;^Jw1?q#Y4e>}x~5p*TKwZ1PR@&o;t!MQ*?FTDkt zUJGN$1YGDX-Km~=VjrZL&#KA&68Cwv1CzF3%!&6)N|pSqf74x)8s@NH;gO0@7U=k7 zsnaKI<4!!Qlk`4H=h)A>Rw;k;HF>^LV#uM7g@cNZQV5p{x5v?P_%>3za-_MUUwKbm*-oP z$ITx-#y)@E6Fo(_koy@g<6aEz$vCmf)3-2AX;ndHdEgl>qi2(m*;9xV&uMj4)vODD zrz$TzcX3{E4W3J!Wxj=bSuOq5Mmz4C7Dn(qm$qa1%3hcel)+ZyLvPJ?wx4zszga(w z{Xg(eFNJbNFy)X>vPBRP@P=b2Mb3fbmKlgDu4T z)nk8^MHx|Zx%OjRmk^FLXVQS^xD9)UWe)5|0xLqh#!z(atAG`#F|OtMSyFD8gHGKa zvaY#@d_(yF=pK;!q`bF|@r9zRL_b-!5isoWa1V6V8?c)L-5YqH-fZdV!hM{bMjpm* zPU|shH$H6SZ|pJ(V&-MzPdP91IWJugRpoX~Tbz5#7YuX#`{s76QxB7On4?vv5W-3{cyf?1Od}b>36BSG|LMbR~JV{_HEA-C4iT_buDh z{ujJK-ItYLv*up#8_x`w18N;#GgIgHD0((=6-kS%&%9;LJ}& zl6iS3`Mj+DrJk1x@T@o#ZF(E?GB0snT6enhvg*ayd1=~>c_~kvm(~VpBlEJVOX&{h zrD-+hr7Uq?S|!e_=4I7rsT0M6#aCb^sn*@kgvc|9?6IO3yaS_L^^r~jZCc1EzqAx z&rG8o_P2j)wXu0?kI}ak@sX`FjowhS;rE!gA?Vf~$bgADyzd`|4If5%_FvHsd!Jt! zk)Pl8YRr1#`1v*UEGJ(3UL#|}!Ct%r^y#nmtMp{MO8-w;d)zhSj6AQOe9c%@%r(QU z`%V}8NnZC6_?q30`P~|ZdsD4Da9zy#q~C-5Cgii3Cmob2&@#`ZrFtyOg^!+c z@)Rm8>!J5Ku~2mRc4rMwJKi6byM45pYJ96{|82T4{?#&mHQv><|27QcT`l7W4C7n< zst3lrj9-m!HRHdY@vi3h#8>%aDQ;hCqMcy5z4 zfG)su;@~-e=T4si{f6%Gc`#is*ISQe)3H`b9X`(!01rL)umz5FOyKav0nbl>@5FOz z>;rZK@Pc?aVZko=IRV@Q_uvMfWvx>7r)9M8ookWo6>Czc$ z{dwe8%DV8Kb|c;|=U(#6E$X=!JVO=!`Ax2$i2V_LH_Uqk&%Cr_-g!TJ9({)35btM4 z<_X^3ZQW}&*Dy>brM1^P?y4dw-V_goA`SLpb3-Q}_OvomiD)@&FG9^YFE*?U5K zDeT9v4{F3%s)Fd7>uUcJ9AP69&*8~?jaVxyNdssp*XttgZEp(;Plq$V89W}D7m9x8 z2(pF6d{xh5SZ{BF{pa&BTP*I~YmstY&guSM z5%ZPSdicT*o2PEV^EAlkO;XR*l-#t@xD5N%DUp@X1<*WsmyzAoWo{4GROE$c&CTon zzQh8U0-xF6-Iq^4d9#dRj8PUd20jNloOz2HL&L{<3}qMt)|%y)PoIgk6FlO)b8pFK z+AvmmzLP!?>bxiOwBd)_)w)~vb}+(coNHeou3+zWtaWv-A{LPgzp+HtY}!bSCGsqv z5&6z0@=2}L%b(Ubwz59!(yv8b;A;^7LHW_k<^CZ2fXgv&d8AMIzl~!5lpHov{spG< zV*eEVjc+F|~2Vt+jAd_{Qnm-2ePj(MAf_d`nX zJirpj37#WBEMW?tFN7@RKZiw!qyg^?gvc`Ji zEJ_!D-z&O!Njeja#_CL0zS5cga#v^Suj1UeI^(jARbMmQ(IA?i$b zBc9{HUg?p=9-XPhcos<Ft;Ivd}+tr7Iu$xmC*`p~nDSc@{Fh z?49JgvSKgCp>(C@Wu+_Is+62Bdmg$19jNXhu3+z0tjo)Gq}G)ci(Or*Y0^0A5_M(y zYSvS_QZq;CMuS@a9bIX7gF2veqd~3z)N|R-HOTs}bftmoztSVol?JZ=c}iE7(m#%P zb%nHG9m9Ja(3KivBJ8MvvP_iO`VqvntsmnntM0hHa@nzol?}75uUvWb%CPZet~qAd z2z7>yhdTQqTj;}z)t}!j*7~zOz5e_Ub+7kx>Cd{;N`IcncJ-(BP0p9AKf5-EqE+v( z9&}_!qW*-(2aoSM8Hzr1O)~vC;Hy7Rh##Z$XWeP&>b+X_pg+6bLf_TwJ9e#k+EZ=GCfzCf6 zdLa6;yvK$q{aLl~QMFA$ilElV13-I7{=0uv7;>Q9kJe+nv>l}@azdhK?l zGhgncECFYnzWmp5T3@(lOtaqnclD0i=hBxo`^dXU@0Qc9zEtn#{J8q^%%V{A;TKpB zI#HLXFP#^I$DbJtMIU%SnZ6A8>dO|XrjtAdS z`f`6q5`C$R^Uca8?Tkk0t4-P^?@W1pF*A*R)N1`$0(#=~12jAOL7Jmsl)VPuRPwsW_{N}nE zJWI+L1N)s08W3aQdoPh~*pFau(pRz+e%5a62QZJaH`&m3h+~WNK7KAZeC6cs#~B-Z zsz2n;+voc?+83whQ7y^ zMDAQs)k`^9^fB82Zy(34=JA1FD!r(981F6?26tnRRc%0jt0v&ST4B!^_<-<*ySK=F z$10I)#M`9*A<)(P_yv)b;VW+^4bZ(ETCPjce$uOf9?$G<6hAu$dwj@-*~|8%5wumvI6i&%U475X_C-rHJ@7>zKd0%rThk-) zfA9mb|7RoU_iC4(2i^~13nsEBHsaHdAb0uT;hWTriSXh1tVQV4|GBgDFN{K&JJ7H9 zR}ahF_4XG8kM{>d(fdb3ZVk#O;{6qn-I#cVrZ)`Vy^K6eLhk}a?~(DyRldF>$!jGgk76UUZB0!uU)X44=jMq`yzNSfiU<-$51v?$x`LVj(*ABhWgdI z55C#yQ1sreNrTS4m3qk4649;eV{~f~>50`X&~v<{Qt8%%FSAdjTf1Ph7rw4&S+HB{ z)nEHg4B)483ZpgdWe(eM7H)l8wIS>%PY- zK0I{@Wm-P&{}AIV#r(EU$GbIn@Xpn#^`cX<4`6%hROr*c->T)ag5!sbdh}^yud7d_ zWARIx4(QWQpvMb-spzQO30>;t_|;rQ8EXL_9@<2I%+;lTeml7?VV-*X4h4_*!QZ{- zO-CM6>r!W;E;+P9mxR{KHLdhP%R%ckiq`u-R5afAy3QQqQe762j^zK_fn;wCl<4rkAj~-a9=LKujGXv+{0j>%O5!&m2YHS*q`Q-%)({K?``I<)Z@o-x2B2 zWlE3!ZfiWo_e>m1dng& z3q|K`apdum^vIzVdPG_mysBx19t|3hk2e*q70)X@x~IqK$5)T;;r{54rbp^t)&Eex z(UN*y8Z`oaGU!`Pf41SU(x>nTu0B=1NPf8bG=TkW#S!pi6l|CHKf&IC@hH>$xw|@1 zpBi(6#|KJ7(YxLop+3Ry@cMk9=Xk?mrB9Xi{s;Or06SMPS<`ZPqCU-kTj|psO|km4 za7GG!VvOG7?}aaFIfgzp9ESev)v^J78i4NH^OEZO?k89dn{J^@;(wv&{KX^Gr%_6u z{>#T6eNykfkq4NUNN@N9SD%EA(V7nE(?Bo!oS^B*N}^9#D=U8&t4|-9$@K~I)cd#< zJpOn|C^~nlBj^75q~%~FlY1TEBV=e7G)Cu3PnTLBtl0=URuomp49;toOhchQ$XBf~U?lI+Fw7Qo$8+*@B-;%k5 zO>p;5n7iH$r-R2gd=!e#dB>6YOVTZee(09af3>C`y0xPo^p92a&;3N{R{7gbKfbzE z&iJ>_TJ_1rRQTZY4Sx=wFLUI&RgX!(aq zrnYWIS(f6twho4(WivmUZh@ZTHTg=n=6C6Nfo^Tx16%rprll@Xx9*&* zbnDx%$LiKSPmfHu)-2L8jWwz!ANE81U+mkUTU$?}@2gbbcfPOquqh0lX!*F~r4i~@ zrqZo97o^s$HTu5Tm54=Q=_cb!(~i|5`o%-(7M3-;?nF?x6pd0XwGszbE1U-J$)zvLycBGWdT_!v8D% zjQ$_!Ilff;e|LHOzbDJlFa1B#lEnX;t^L1}IR9_n2>riSkN>yyFm%b||2+x+Zw~!G z^j-FZ(ya~f|K@1TpO+!g2l{nPJU z|Ie#On5W(_{J(HXDEjTs=>IviLXSvmxyS!|68>Kq{Xft;Td(i4F2Vns^+)yp)N=~| za#W|zZ$!ceFP7)I@Eo|rd=TfepCe*yFF5OgMtL4-Hew|BEzO=nJTr~o80GJV^0znn zEFk>gEs+AF6me$0zs=vgEX8lD$!{#%@fGiTxU{qU4RZL)=N-S4{rmqmP#NE$3Pq=0 zlkRtX1Sj5oVN5jqS9r$#m-r2ioz6RM{h?^d)Qw^6X%OF2_fEv5hDd24;c$*F0=7WEkTW8=pfY?8tp+la(H)w!{T=1B`KPbOL2%qgL zlx;`ZX7atK#OUh@8~uQ9NBzyf(YLh=@1dZ-^z$&g{u1Y5K+VHFSAD*DD0_2b%skxw zZjyPxx;K@-Z-jX$Gcn$@^T2VCkK}n*x%#F6c?((1F1afjh1_NaXH}Mix5dI+{X4R# zlZWRMa{O#UL1e!o|%L{SkGtb-?x}sJre$Sd4q2W z7&E?u=cLB1JlL~x<$gZ5ITg>VfnNrGSJwzdzm+4gnCNwTqS1_RAXJ)<18;h$ze1fE z&uod#7zV0diwryisak>5sM47cK&PN89u{@GsnnTTq{b32gkQKj$x^#dQbO`r%V^XY z2WshpBBb(i7OUbfYK#$zb8yX~JQF9#nvsnIw^Zb;M`iawq6|``Z~%HYG8{8m)Qdx) zq(T19;LNJ$n7e?Zm>2jnIbJ~crGGFc(fHVE%K7k&4=nVDmZAyCBf~DG zEoYcR%g3=DhtZCsiWmGF#$iFjIaZVCZ4Q_y6>B3L@Fy?*(26zYAX3K!JD6=K$rRC4 zL}<2@qA>NqIT}KHame^Cp=}kKuzCv)QT3R%=`q_hCm)doghW<^!(-DiB3hRc9E4Wl zFy`q@Ei-nX!kSB{%K1r8Q59;i&&08^8@t~=TpK5Fu<9vhPV0;_SvK)ygmMI|>Od`A zvLJEbw0Uf!s^h|LTZ`-11#~|OhFOX~lT@IMIgB)rjZ+~G>8~D11r7&emCiIGH8_-F zUht1Y$_El0YO!OR3(TCyLG*-}IVyuQG8}@%E1H1+D}eMcjy-@7zgdeD8}>7^S!eb$ zb5dtcBMsKsZI^0VJpW$ z#vH{VGoFKV4>N-}K!AcA@@7ams|f)eNGu#hIOK00&f{^MWUd#7h2sDYXXO{jF%%HJ z{9VA=&Y0QASdapeWfGGEA+aihk#8`OBX}PU`5VTW;16(Qg>?prk=2J&fnkg)WQMd@ z$gpbGX`FD8b&i=~l~It3I>R=j@>K?BWMsDG5@c}vML0^N0H=B!B#Ri0AsiNtlQ@iH zIM}H`hIIysVdi-=><}2uC4^LXA&pMP9)G!0f{R5sEF2U!d}u~lMqW$zph;BDBncRT zS%%ak*(gvDA|RB1W;;%Wa*50yTv$loLTaACNmTqKrlWK01xh|bOpP#zmA?qUX1enpHUEBNdt=$dD#tGdJr@47Jkcn1)E^q{`q7 z0v|$B?iAo+k=L}%)eIwqCZ zq5u}sGt8XAVfQ8WOJ#uZ7b#UkP#*F&Jb{db;{py377&?@f)bYE&$cNhX|tzXLC8r9 zg(OFm#-_gDkNZbn}NqB5eXWIzwy$a?|c7 z(22|x6dohw0FWRfe;Gso3Nj-|Gjnl5rj#4B2iIT7nPDwutTlB$e$7#8MYjIjQ7XFzBa4NtMNWB<6P#qwGfQ1u| z0O@mvP5wE<7DyvXFc#H@Y-NVn0()?($B~9W1xAgtIM7g5UK6R>%pf)Q;Y0$7%{+-y z88YlAz@b`5NkO0#Cm;~o9BKtpt0B@RqBF!M(-y|X|JDR@44;X>K4}Q14d8+tWNIG9 zi5%=i8py`ULb`;RVw}jqQlw%BnGp!(iWzA`xnhRc0_>v%hY;8sKspZx!0L~!nW<%# zLd8Dh?>33I{XtH=sw!j6?c(W-j1l;ox7O5GS+=R51gN%f#T?$lSvd{-0%f04ECv z|HM52B&(1a4%foLzpMhB2mvA^i=82Zze~42oFrE`t8h(hq(Y`!hKp-4$hk<_vBaL{ zu?qgoUYt;B?q_BXPPI7r7s$g2Z30Ei1aVSCBGZTr5M&e*attR{yU5IGoKQ_c&Z`X0 z7?>EyCAc1sgPqCpTgwanv2_k804Bq{9kdcj4Y$2-+GjkXx5-5Amjuy zddR#qL|su;cqbB$Y9ic$0)Uw*MJmz_p5YIi*_G0+^sz=Q4t6Gg5uBOnXKo0G139TP zWV-A)>~V-tqM8^RF+X-2vrM%SC&>2?zqDEuaZikaG$mZA55LO=WTw1m}Mb!o!I96ism>QYVZiOJFplDP$48}#3&cKWqMlX(HUhwZI4o(WEPHYb|@^=WXhZZTvX~zEmDzVyD!Rzna5HJ&ZV^ztkUk^KM%yOm$At0r6Bmx zB3!}gAP(~DC=SzAG-NKI1nQ@@7Suxv8MX^(?#n_Ofc_GJf>0`$>1VZGmBAUAA)G3C zW$Q3xKo&HiB!Udu;ZJLLYUsyYkBV?CVRinoGYbcYB5}WBUf_?yOSH1*5?@F4fs*Zj zU;!`>uo}h7ZWG8;Z31F>N>v7D450!iR10io<^)bQHgS9`SSuEYD`Z15$ZKRW!bmeT zt1>9{8MO+6Gct#9Dup*lO2iGekfOlI9M6*tnW8c{qfnEh+Vr8sLg4{IPU3{B0?Eoj z1|!YtL@M4UFlN;=Lk1GHK>Brt6l9ScK;$p$oRiUWQ>F{pr#N$}sxS1vWuSf~j(Kdz zzx_BY9H($3_X-LDFo$qbedrm(cw{pwD||7a{ByQYL1y&e6r>SJ5ef$hIfIjpE${&{ z7A61~jf`9mB*V+=j8X;3Sj1|*I8`7FM-j*v#tGOmE;6H8C6G*XNJu6-&n(fIB}lUh zROYfn%#6ng*s|VYhNugXo?_+zPC$@#lo{4#Mj-5&8EJDyWu((lIXc7Yqu5UwQq~w% zk5eJiqew?>#|a2V?O|q6XO1$X`%!I(AJv4=%ksP#jX*lR?6iX5jJhAG4B9{-#Cb%o z#G?Kl^-7LfjZ4^ZJEN#U1W1F+Ac1*V!W=7K_ zkbs2}Adog9CTJ5lio!qzPK8MKF%!lK)ns37TQ3C}(vYJ_spZ@a3%1NolmJ`iDb^Uk z2~=kuWM)54_%9GWW6~xo8xT&ESi5&jq$C4%)n647X3&RWG~y`c1^@Qp0Df`mjgz>r zAtq4*qPBPuWNd6^KQe`Y971ZI_dsYzjUa|wjx&z6qNxTw^b zTBM0Cfb>Igl;tleDOGIPg2N%@05a_T5Dw!s4)(!6Gl&x)CMhtr%n+dVSA+~PvmGa7 zr&=(hwHnSfZe6H*6upPGu=B<^}&Q;y^=_jblTm{U`yi%>9JCg_GSTkc$lJ z2LM%$HXHL#7V9FUq}tvME67PC778yAavmqUO~!bY$!J097{V%M7AXkM$PD5H3NB-s zaT+HJI7o?@Mqm?2CehlcGnXKP=}?dZ$XEcfZ5FH8kSz97fkJ_>8lbUOQ6L`yQmnC! z!UbpSGS2p>KAZ}XVd1DlIDrRZ&qkd?2G~YjAmqHt2;{OHonf2HP@mNV+hq}z!5Jm{ zy_sVwgYjUN|HVXZo(Jp*Cdr}Qa~NSnbcW3HEUCzFWawFG#6_J!VwkK8A~Psw0an2g z2r`qaGo)ICz=6~&h-$-zfT(E5QDo3g&Hq~-NCr__s8)+KgEPi9Y%2?)li{F{!JjSR zl}-sR*qY!yIK-%dboED6Qve*#>{~ckjq@S~V6%ppEec|GA~o3=>Ps83`)DK409j~D z0p(vN8WUS)KT=s}iJE^Bd$W*MF{8PHOJqn+v0+?M!OSU~&?f6FGn|TY4H-ph0T~6# zjVpRp24`f5z(RVMnUgr7n*3ey5fY%zCFDw65OQT1GvqNkR1hK{gcF>5US)7LjH`IE zkQOn+Ha6<3s*nN3FC8L;4FS38ATxV#nrA~UD#(}E?n`G?24`eQTfSj@xeV!-^Ke3y zFBdXXpfdt-JC*lv@VoAON5gqn2vzy6P!(hV-rev#h? zsVMnt!@&E$p9Uj_5y5*uk-gLM`J3>;nwfZqCF8kJG;opi2#fixc+|(con}>UG>Ugv z!{`!pWBMPhn0FuS@yyGf!AF5s=jP^6{|pYribfkrePJd`)E~=(Ctg(z(D<8T#vMVG3sx=g!)yQ&XMBp zNB#a0;>Uaij-o#K=H(~HbvpX#^hGFNlo^fwYLYJ>GO|%Wg8E_B|K|V4-uuTzR$gi1 zFN!uQcB7UC6}8mTkcf(kktAqHg333Ngd`X-K}E%gTDGXDsHl|$yV0OxOCqhPrJ`0# zwPHd~(4bQqW`|73ER$tF%g(S`Dn?XhhnZz(m>L?p8~#1@Wp=`-@3Z9Du(_v34ZUj@XfitAg?_!|JRJee`r4U z9LDOlYYphpey>g9p%>OmWHyk&= z4eLc~tYiMKURh&3iS_w4)-nHAPp`2)h4l>9L)U5kJk}>ec+AOO2J53(ua%bADk_LAGl5>LnS<;PV!!%h_Q$c`u$z6;2XTKUQmE_sZn@6iuFdU+apfEcnKc;UvnM(x9gFR|5mIwz}EGT z910Rxufh5!%|UENVABPgPdZ~_GY^|t*d#44`HwS~kL=AFm*gfBIqp+}drK{lMb-x2 z;3ex7Sg*$S;dS&sF8wGB;ajjSa}&mQVm-FTdLPy?FT3E=SV#O_)-nI_LafJ}xUk=6 z7VE`Wue9s(pTaW4$_r2gm(tu`WIS1RVF1{A+-13g#o%EpsZ$^$9-rll}E=qHp@VLsNILU`ms+Ee>&% zxR`(Ir#8rOw|-`TM-9U@*szH8g3vnr7Zo6{C9Ho!|3$d}Ut1XR1O7$z@Ut9R7yqqT zpZhcX_XEF1Z;OVp9_}sfVMP;Im)^F9>m$!Xx%+$Z`Zm7Hs({T3YcaUC&DM3C0RO4L zK6f2}>;Kwz#9Ch4j#mCtF3zU|kpD(Vy#Irt`#vMUFOqx4!=I0_FVyaU!PV948lkQ6 zyt7Lz^!$M7)t#rvIai*GdBbyuFQAHlBx zKkDIkemox6${}T|JI{b!fy_aGr*nN3IXwmTkml8$U+Q5k#`cvMyRS8JI|TQ?jfK1B zc1Q|m?lRWpnP_a?u3X)-qZEE{|C94JeBWK`p8hGg+*nWFzxvI``$kTmssO$h_X!~acm4a7jso8Tym0rQt8gC6iNSl3`0VC2EcyNFhmKD&cJsq5ergo>IO;kg`0E_J z-cQ!N#v~5z|7~*rv~fBeyEWnfUmRUsy&m=4^%*aht3UmM$NgXacT4L33xC>w0{HGv z=pQp!jQjufDd6Qyd&S;>owJ2GxHA}q&D`qh4MnioUHySMv;dfzkHMe@hn4};0ZizA zx64d{=b??j%8U#P&y7wUc7LrLiu3QrLfFV$y<*Aca?54reR76cA3C<1RR=K!CFRRf;|es{ISHGNpi>S{Y=_}o6M6Z~aX zCcyvYH$I-fa7zO(v81Li5C3WWEVvB7wPjT$&M zYd-Im^sTPmA{0Z{S?;}#Up-szl5yaRf%j){*O_(Rx0WmcUk&^&bFs^nZ2cdB{BLOn zz5)IDrTw6i{&$1N{r`&#z{@rC%gZE_Al^O8G1o`n{$JGqRIlJK`qTIk@QDHcN#<1i z&jDWre6zR?_Kz9(6^$BmWCZv)kbXUb_bbfbk(IzCff)nmznFG72WHlLw`Jcq9T{I; z?Z7$u=gjPpN!T>OCbKK|kDJ*eXJ9vn`P0uTL;P~@2mMJ$osKF*9}vonOHM~RHo4Qn zn<9JtABF4x)->?$^C)U_R0Gxru)YL8JC+5$@a z{oj@X-tW=J&iqmHz)u1H31>c94E!SSGV?ob-Ib63WN!IHYgboqj{yHkW)kN^v;)@& z^4+6J{GZ|Ymm0}g)L-!MK0n(xSNRN2zY^GD{w=qdnAv&u*?>cI8v9Gwar=V)Mi+4Z zsIg}fVjdibnTz9{VO7Q)T>?KN_!*j9$2-0iz`GoOx?f)*?W60n0P+6fyC08--=lH=|B|4(8qa@q#vD_>y7SABdp8O`{M_UBRciLo{#({RxS_Y` zfdlS8@V zY@)^-i|4;Pn^714dJ3L-n5$#UfawD!G*`#gtnU08YHOwt@0a$s4a4WXUsLhZ4nN2# z;0L^qMgPAxf}j1%2l9X6z8}+Tf)y%W?_CSxD+6CeYxu(NKYYC%HCPZ%-wD+qcm5Tx z@8!H!;B7a~zi%RsJ&MKV*TI1Fw*i1qRjfmpk+lQ?+))7kYgad7|Z>|P_z=<3c3r&)uS zk9Okh62)G}$IY+q{GRZVn!WthKZ!rScy;IZdw{PK{1pyg0Pmiyxoo`d;9Nc){l9eFv;Ci9oBK?`x22{3gqg6P zsA3+DUs~PSGKbt!i2cf5j{Pn+&G3z%pBnS&($$?mz`40j-fzEhtk~r4w|-3Lel_gh z2R_}hy7Ss8*8W#p9ot-XfqDIO-|9~J{0x7@8t?6Y<=~xpEpe_v)c?~HxL37;)dFnB zN*$YA4F6se0e%_x>lpC)0_6*SO7Z^h_9E!k4p2iJaSHSm+jtw-WEIC%d)o@3x; ziTI@*tE+cJ5hrw(miDghY{Q)59EQI&?t%U%*>goC-k0M3*Cul+ z&v;{XA-=SUIJJe%XJV^6Z^R6kd9lgv&c=V%#f*NY5jG2`ORLz-g>2mW;2JSe*U$7L zuV&0Znb^;+VNbi5!xeS?%oKimv;kb*x{5zM|J_vsf0gj}>WQD&-)Ez%t3QHW*xzSy z{{0Ak_be5E`gJA?Yq z;W?xN{$7iQ{E?e~_p|R$PQd-|R@m$%&%Cew-;ho2p6O2qu9p+4S9jheNSTelbU#m9 zdr(A-^awnKI{3v%Yk`20oVV% z*x$2O{QhojzeV@}VV`sC@4MSuxZ}U90RF3Y@4u{cb@jeN`p>NY^ZmENzno8N@yE4Q z){Xr*`kw&*%r`^+{p*DlisYVKFf(Q2tE&%;!gpxq%Vt-1{-__EtHo#g8a{J#;6GoW zmM2EwuZ_9Beo4rVHXl>V6B|}{-ksS^u9%q<+p#~6eaZFpq~kxAoqtvfpTX7DEv4Wi z@0DJ^-@!ZggOB5b=byW0cF*UeeC*F+zhC^jXU*DtPO4a4?OXEr{LP=u=OpC6sbDvJ zknc%-tE&$$vi@%r|M~u>;UD!{bJlP+oV0}f1kUDVzN zk8qODjeh+Zhm$iG?)x0E!Ts;PdDK?!E58ok2Xf5XypI~?_q)nttE*d6$i= zY{m5zSV!H<8&-F2slfWM#IPSY*k`4jcW=4{n*esq!+s@~!!B6#pgfIu$N`^`;6L^Z z%sqnlnkiu?c865t1STl1(}^Hb|tr%=sLZN+*Q{QMa; zKXm{$gRuFeHAmj3;`wLm9Bk~P9i+TueSUTIkz#xw;&qzAdLh>T3|^<<{Cfno`NX^` zj5!VWzy3wEsYqtQeXjPNlR3e~>!)(>b;0|zBx1pyzZ;Ej)>~DE=dfWe?tkxm=K#j$7YQf$iD*lZ%04ZWd-kkUb<^NbDt-n zo)wFj519k^EQ7z(3s!fIfb*VX@b}k0bmDvd`U`R$@@i8LJ3Rl5g8xCSu$wr0O*{D< zbN8Qj;iR=z>lfu;w*KeqKP&K`75L8zcoq0{0nX818}r5z*h^G4d_ zoz(iIb@Sq6+PpES`ke#Dyf_JeN#dZ-4|+J*^_sjtPD9TV9PGMvzY_7Rp3wa|@Unhd z0Tq7Dly#KVl$DgYFIZeDWt0+Uv8=zoLOG#%ygsV@ULOJP3Xfmfye@e`zY}pK{_82? z27`IL-XF~4_1<6}ulEG=c)gSH;aBSYI`Xlyk^UPHH{an=r}~}9&+@1xt|r8zGQ} zELC5h;GQb-FBet5#(KV1uW?>O{Z35#d|szdB1C z>h9L#Rn*$d}Q>eg>ZCRo26W5M`4(ptYAeT?5jzukyuocIaV@2Ft>PU1R3@#CTRsK494 z9q5Db^Uk*&sJG1V4)~S+?TArEC<_^|FXaV)Fy9@=!cpPu~4t zq$CtC60Fxqf!6C6oR?oLYTmy<9I4+g5KHR$i*d>^$`Q&m63Pf=A!WYGpRZ6ZQ7%x^I_~#?yVD8=PXSiSN@KF%@DE7lW@LS@?8SYZOvtHv2 zGw)&K>7Ns@iwENjw}#@tUg|eo&3NUMrIb;|FEM#1EIRQqzoK`d|B~l$5pjiXJj93l zKhD7}PjG4TBKqZ?8!s;EeqFKpd6Dz*;(*3~v4^sYvYirrlKQ;ZKv^ep$h=q!USrBL zU4(d5s^671CJl}+RuWg?^Gp}P4t@0MX6=x-@T}?+JNQBVvj5F-`my=KpV9a)%u-HM zPEuw>4w)CmaIVEXUeNJeu~&hkj~MgevZtrb3u(n)7}5AIq!izX`U#&G1{HtSyz+Sg zJf)8>bTe)zWh-ShWjQ7Cllr}Yx?9P7UdUH{`y%B8CE^KgyY0)6+1_vR@`gRW&=KF8 zXQ}7*-e5l4yA^+aQu%N13f6afBACzixWt2>df3%EanR>LoZ3*FYQ>+AK1-dpSB2tW zUFz)BZF@}fO0Q66DQ7f(dK&(Uz4&R9o>2Y#0!^#!=ULC^=R_Ye&!et87c`H-^0aw=R`u_V;Um&= z;BCDj$>aGE`bkrE(oZ|=cn(=VZK{7SLqBoiZ58qT=mUHd2VYZ4)yfrOY+^u`=Xrd zlHWGePxifhx1o+Qe_p=Z;7{fvwLm$iepA^X-_&f7Z;EwE*}4pw)TGJ#Y}V(S8drVO zu=179TV>u-V?n;D;b4DKsUY9fV32PLb(Hfol_1|v`t9(~aj8QJ_4CegtGD^*k<=yC zs`%z5ty8K+@y*D~?l&v`oC)%eF?W99P01(_c`>z?eBA_x76#oQN~YF@28G>O8=kh;5zDLb>wel z9c2w=6>(AOMU=>2`ukiyK1Uev@`7KR_mFvZ#pLBLdFyHO?6T_3c@KzHGcQ_^)!}#Z=!^$auDI;8hZeR}_keeg@*9?S9>ic?SKGxq1fmmAKDjOx{sA zXXGVyc?NYB{dUwt@_c4gaFD~qqt2h@{oCSkor`|=Jn>2527)}F=?(IHraQ>KA;!zjjJJ=tr&tOl8FXl49w==}InQ<|H zmM`YaO4Pwhqw?tm$~lok=IJc>aIT+fO`E4@RNss`KGkZ>)6>LF`uv`1h24bD&)SXY z{y9}*2S2Eb%-Mx;`st+~j2(3*FF>R<3EMD5Pefx<3F{m@t@*+plrxz$UKE}O!ATQNO(V$4aR>8b#wE5YC_{a zHB5iFPD-Z$@kEQv(-zOJU z-<%>2csYNboKe3|PMf?>PdfN1)i<{hKSA6$*83b>Ms<0PwDCuY8^L;$gBw;|p1&*( z^_J`4$v&*dJRJCRbG^&t9na@#$@58EccO3VrF{o+?N}f2?15`jeN!WGt;DrpouBVo zf6c0IiV+9A<%qV>US>^S4&(C)_ML~f7PnrJw{w5aTO--IL@ENm8*U?^0aj* zB`$__zVEcSsOon&5LZlG1nZp+zarJ|juKZuTt3!o9Gp?TYhH25WyK|zuwLZjl8dT$ z;XD<7N#La}$vKl3n{{wm)w>eJ%@8+@b!U!}Q`+B66M{>dB+f6{@8Vn~Gh&CmQOXo$ zlKuvOA8_LKsoqu1xR?jauiL+VlTF~;<)0fiZinvI){;lN?tdTaHqQ#iEu$==ETDhX zGZt4KPt>H%6U(aKU24n|HTc50B|M&3@OeB@1Kl~ltlg~c|9{P52R}T&nvjR}Gmb`~ z9#8aX{3m+ow;S=QocIaVyOwF!NgVSuc-i=IzYaEDODKMm?&sncGcNOgd`0;@j=ZE# zkAuIJla%0V^-+;S=J64ecP!t>Ji3%Nj}NQ98TOB&Mvte7A0$4BJffPH#rLb;T}HgE z1N`>*b$xURI_lxw7pxufm-|xPu-GAPhwfjJrJp$SXkvWKf#qF68KY$Wj~9xLI0fJn zarns`K<|#yFX}9~$8bM8sn^39^Vl-im;C2;;q@4k!AB6vw0miX)2fuE{!}a9$ z^|3^-uaBYrQqRZQiEqRHxRXb#>YKsa=G{VEb1097P#$%mJZjuL@K57xogr-z^uj{m%CfZZ+amJ8>&j-;DZ6y$33YD-Xqu zh4L;5#f=2>esn_feKbQkO4&=9ptN&<*tXA*O|m{@9&H4#3g!8;iL`kX{T96k_4yfm zKZ?9$jvlpnL4vQfD+8{;u>)_>d#Y&{C64?JUO$^aydpn88?Qj~`_`=NBYwW_Us0%j z9?5F_N5&}!DJ_3v7OBP+Mg@QvwtF3_x?<wr)e_r_ObD|0s0l zIzf^Jej=r|1u%4w8T02>lNG^CoreL*2Z2vvvcze<65Vy-rGp*RAVA>0n(S!u-m@>r zoTZ$g9HkrNi(uogN&ZAIy*S(~CNedwziL zR{bILQRe2sF5(iwx<1$*tm}jEU|k<nM}&CXAC68s_yX0ppq@65eBw+nkKUzV9=!{}JbLHcJn*M+X4FsbH2k;v@p^H; z6@3f(Bk_7|--b-@cqrazC?4?cJoctS@z5{1K6+7K=~r*7|9QRiw-cXLp)1^JRd-w!ta3${1^K1@b4k5zNJCqJupHX z^F}+s8+L=icn=_Nw=NI#h2nJ^TNnBFk&^ENt@JDPsCVKwtKQqs_)WxvkL6o$@}kbU z@<6TXTS|#XT`aCTSf2+fLVU|Yd}ATLMU0!T^8OXdETx?*#7v4lWbViL_Qx6Ik!Q?( zc&@#_1G;<;X7#kWKd$>5;rBi~f8CF{ko}Fg9`2ifpBDN-egQw|f4~p&mHnKbnvkC= z@~fbXQWjG(pZjb+L*_o@@$M9O;w8N9n^yh11!&f~2lF5BBlSR?a(-$xkNc`A(MOr5`(l*r+kJ>D zed(F=^Alb@S>}iQg;!5T@`LOpzQe)S0pG6r1zo_@;frzP{e{Gp_X}1|QjSrkDf=m{ zf8e`CA2L6IKkvC>6XN_Nq592D#%w~IpLEg=@h!g1WADnEyHN;ngFVAnwzf$$B%jAzbTfgNY{;?4M zk`Vvm5P#HL=JsBr@$Z3u@q5pbKF44g^@6^r&oMcD!GG=%e)r5N{>~Zg>pfY;-#JDd zeU#r9Ye_5rd(bC|dryXOhbfa>@2B2P*-ja!Y$2|edL zpHLm2AK5&*JBjNEN5^vkas;-OD6N1Nx=-{vgh}`}ylI;FN#ZB4AM^Qc%BU`%!&yA) zB6)2Z4b}%gXAjKHrokZJO#?x`^7jxd&kjn=nbj-lU-IYu{_X+r#&s#WyuZ1709*=* zL)tFx?iCj|WbRHI^DfT?@pCu&Ci=y&7eDfIQh83fyT$j@H4j`9{Vd|o-Jzy;H)_1Q zG3Q=9i>q~ULq>jH=Eal!t|i9HsGly>TlyqF|CBm*p-wq`0{Eormy`m78g<2qV;s3I ze~h0`b>aH@qg-!RhaKijc-=B5`_Ls9zhWWyt(kt^+SF4)-6Ybibn=cA^jJen+e5_)1DV$bOCcW8iXe1>eTF;ArtN zt)n zQT+T6JY+t8n5G<5nV41o30%KN^0`~=6H}@`-mmtFN#am9IWOcTJQ8C;9tp&eeUAr5 z&+_zmB$AA4`vH68<@N2Z#k9F=MfJ z#IgOxdbP0{&+3z`-toD=km^GADwa7rFn-{lxV-Sn6o~wCZzkPH*v_o2{QF#mn=Z z)f*L$=R4IK6u%L5vT^G4dbp#Cd3yOrsTY$6&Z81MS7==1U8p*KKScc$5SJg!yK_01 zcPHjf>f+_yiFtDK?wnOVo!~EX**StZrGDJbwCYccY23~faf6|_tf$;pqz;|Ep}3q2 zuil*%jLZBxZT^Ul>#U?ijNoryR(`kRdOCd3 z$K8%|S^Opk1eZ3qqYkp4Y@^+r#Ikmqn3w*mD_qJKp zpTxWf&)cSno5FgXgPTdJ?7xXRDTlnu{hTIwqcWZ*ouS0yo&y0IdOyZ zm&7`*cX>&Ew+*QNB<9Nc>m{xS>rVY{!`zCV%o5j0TnE;>9DnVq%kQOGe{tekvEJn1 zT2xOWp2am0*NF8>2iKr_5`HYMjyUxHup$Rnqk6K2xGLf*v5xB^moMf*bh*!3f2fbl z`E8|?#gs*~NB<9ss7}wG4d>YYm_{SeIB>Wz%JtRuy%+iJlZD3 z4t|i2oP$4JQ9m8D_~*a)>6rGyVZ<`bNQBD z)vv++EeU)fuAEo5AP<>~Tgdko@|FK@!@HxjH?RjU(c`G|Ee2nOYJc;r+TT1ueVqE3 z=5sU7kw1>Z5BT3)oi;ZQs(v^6adS1kY`r1l#5Wof1Yc3bx6f((_G!vVO3MR(nk-E{N!d%;P1#A=DssrQW9|-(Y254a`FeYk>d)01 zb3J0Tqh1!*;LpwV`1wIQ&NJ_M(b^#onVXxZ#14L{bYDK-w0_FzCkp>jC!WkH^yg4_ zivwQb-MEZ@U&`kI@pt3A>b)h3yAg9Db9LhYCF*4LF4`yb->1Tz<#S`Z>JQY=zKwWW z2l#2CT_gV7*}Tv1#(LGCi_i`{Ex+1eJ#J*aGKZFLMX(+>;yjdkdG)xlfPQfO4d{dLykRoP^M*{YZ#SThZr^T@ z>&fAH!yx1K(jV@#0lutrjxXoyh8Eh{x*Br>>TdZ|hwLjt`Pw-FzLfS++La)`gj1)8 z>d&T`ZxL~Yp?pm+-|Lry`Ch*m%=h|~#=SmC*-y#5u5YH^Kv_juK^dcrh#WH47l9|A zBd%*mo9l6Z7JVD~e;s^WZ|4C2+br;s`E8q1yS6NFHJY#3wMl=Wrxw+&ZHhRjzt=Sk znYN6dueD=;Z><+Q_!-gto&^0EjeDJqKV+_3LY#a*?sW^Q(n_>Zv&KeZ;{& z5VtE77kvuEZ4bq5W!!Sg5>N(@jm&@J0?u9Dmp0dPpSPz@Ur%Z zEB)Ts2KeX;06=33Nsj_1y`hwkG1nsQwKgtr za(~Neov-bNo`gQ*>99lHWdHs~*mOhh)BXDq``T`NVO{uMiylb*udPwu*H)XnLl%^G z96h(;AJhE@ z$UolBxN*uR`fWtK7L9);`WeUlK=c|p5nSWgJuXOOZ{zZQQ`3U}+Ma5q; zr~a?WV!zPGUo)fn3uDBO5I1b{4wk;-B|NT4tNuc-=tJfj%*DaO&VEw$7nI9n&+TCra4_-j#pdzLuX@fy_e;Cu(y zp!#;?XX9cHWiGF&Wc&(~7m>Nf%f>HPeS0_YrGf(z{M^V;y#~e)S6Ma_ebx z^|IpbZC1ZmFY5kws~dAQ=k99EUBvkDuSTClPY-MSt2uX9Pn*1h9G+KCsh%d!t0%}~ z9QID#ug<8xoprx@l(-SBH#%|AchR>OFm8%C^gB}K;09Dr&l1;9Tp#YQx%^QN%!_w^ z%G_Mt*Gpj6@8p%Qdb*bJjN-0BUk{4=xT`{ay=p=C(xt57%Z z@7G8ju0mf0zZHJ1J{7FPRg=LwT!p&I{9e_id0vG&NxoOLQ?`(IGk8^dJP-%hh3G?z zn%`BG#IsIUm0>^P;A5%}jT4_wzX*RI?;paq74;E)2y-CUSL>4ES~2ejW_*9GsFUbJ zZN$wHm&JOYgPT=-sD`*{;xO+AI(=xJRDHG(m~(Lbsz2XHTrY7wSRZw8-Ksy|N?d}tPOSGhIGlf?KVL;0>SObW zW4+nI;rtW*`6A+)iEF}oxr0NWMcwf!wu zeOniCxSlLO%tukm@fTHnTO)DB#6_^)>EMb~-&RIk0de_QuXk{mGtsvh#a+3qxGR^i z9`kWmV$MWQVNN8EE9Z%uGkF_ue#lGmxDs z%(vhN3+TU5@lP*MZ&3U_vl{OT%iEYM5*qi44vl+7JAMy{b0~hVXjA>^X4=JxM||OV zMKkJA>euHA#1&nhOQb$mAg;yL2kUc1O|U*!R0ZpEMP;x)SJ*xwUV+J5zu?3(s&Ajt zcr7a$uVpzHuVo<^uVpS6uO%Cd*JAr`OiM)by&QPy&*i9}; zX8a^&g0h{mm9mktUgVIutPa2Tg*@eDdDU_qbL0Kqn&n@u`qMMSG5^adh%ZNeEuJ6b zTdMkY__Kav#6?5-Mnd_bo^IVQ%Xjk~GMA#RKHs#t6m=E-cikH2Qt*?!F2$Uz=Y2@{ zUplG!_6Ttk#El2}Tsj)$b1CZT^0}0A;?@7s0j>X~t@PJ|I0b$kF2#8vdK&$fI$Ub& z4}J}yxV53U)uFhRZXMvKK;l7i?k+|DL~mZ9v~_?!sl1veOkN@H-l4m; zldOYh9c2x1)xZsVxU^}mf{wh>W8x1w>Lht=2Y;(qD1Lh(g zOXh%&`~EM%IUss^LhUcH{RD2xpBv$I3Fg|nFH0VmWOV-?TVLp7x<6of!dEBbb-+L8 z;o>pi+Ew2Ut`|!!ZC@ZUr!(t2Tb9HR{Nh}Y{q0HmMSbMF zx+E(0kj0d&&n4h3@h)D0U77Fq;w9DP{FL|?+xh{A`pNYvuZzc^qmEuZB>u&yo9y2M zoYkjw|1re1e)=^2#XXd^KG zGH_Ai5YOZJ{blgPym&mV9rBm`p0wD(PrmLyF{^$qf-kAtMROYeq8asj5%Te#U&QZ4 zQ~vXd)hGSu7x8=1xZ>q`*XkL?Z!4mX+RFRE2gv`T5yoSkF6yG*LD@>#EE4gXa2}_% zACmt?ja+Z=?cI(j87K)4WR`$L5l7AO$ z`AgmL+$}H5SLzP^#b(B1-J8ln@j`WP3e~+SP7voQ%f=X|hs>{oBT*ul@V*5&C6`kByv ze2@IThdK+7?{(6DhyU*^tbM!c^8Uc`K;13AmG~C$EOvM|tNwHNvG^w98;HksvhSjU zuT}l$^~Bc@R~^a|ee?Qnd9h!)JaPY%{al{5uEt!rr2Z~k1g`==F8&>>)qjpWgy)6x z%Jaf3@v}jm_ElQyWkr!ucE&+M|@V}HgZn2ZbPOqP*>QE zyL_RKx%t3X2jkkhL2spQ=MH)ubd!=sxu6gDO5)2!f=?NEH)vff zKBoH5GsH)ULtVT+T+jzQ)YI#OwJXs52T@n6qn@%q2tE?`f~@+vK;|#z$Gbr05Bkr0 ziJKzMsguOJK;{qrq>keMg3(~S3uOM>cyaLqYzrmk#OfuKg(|;m`#NO4y9^%r%Illi zwE6Cm>aWC%`6jr3caivck-($h`^-3a#xXvj<7oNlDUQnb^4N#Z^WyjXan)bOzO~CJzw<|e`JSH+=6ilh_q}}2$81QR=XWq} zD`g#JHDwtk`*(gs^dWOT@;|B1%NKr-zg;izpJOav)Ir`S?|_}-i?|u3` zKWWpjp!&Ykccnq-&qhjWWFSf9mrei_#J#%Jaj8Fv>OBeddCiPA^OX0v>PUFFqqGG27>u~2X&Bod-L)geW1Q|ZV1cAM%iH)_0Z$2H!!Td`j5;969Fxn6Ma(}bU^6g&Hks=ri8 zKehBz13R8$(ywnjAZ`nQ= z`}cpOzTcYCyuW4Z41I+9ASLQ&alMqNm+<&j2l$ovd3{Uj1^wkJ#%UwIg%b6!c6I*W zGZDVuLjLmiOruBrT+EAqjv&v9P~5Um+$iJPx*1cSFMbgN^|8{{9eN4%0!q|h z;(ucWytpk`ub|K0K<~b>NZh>7^Ba}0oAY^EJLDyKJc8@V>eITv9d)&S zCY0wl1~vXSux{h``{#(Y>r?%gowVyEzMJ?i@Z;wm7T>A*E2YGD5Qlzvb+vqPeS3Aa zcFiHa=$Gv0__B^)U(xtqNB&aJuV*Qdukimm^7PKZug#>**QZo}W!9Ll0rT}q;>U^4 zfG_T|^0N3*)n6?qeuTKR&;M)qz2L8>eE!xB^^^P_gMX`|j>3N!d?oIA8TE7C82s~G z6WnIv{h{6k{QSqpZBhNz2F7g`9C(6< z)bTv5dw(Cv;_Fo(DJH&-_!{D?gLOX-*NybStNVGC#G|g(Kdu|M?&rl+_v(ILl(>>$ z-Onou)uA9%2c+%R{cEU`+=prhHGVDnBze}_`GrhqoLbE7I(|NKZb#bGwyU0LG3MM3 z;M$05_4%CJF=T2{M{ka;U8C+lStfSy)1dn!P4rVsJ~8q@eo~LxV!wXYE~5HtRkSN2 z9{E~)KKSuG6a2X=s%NSdf9|s4&Rq)fJ$F9H_uOod@3}KUzUPi>+;hh$la#2d)bZRJ z&F5V7RqA}MQF#vHi+)bC;?6-`1b+_jRw6ISY}_2qDOdfCYGcl>2Of2_ zIMmBKKhDPQVVo27^RRXi-G3T$Yjw`aUv$w=zVbOctMSjCQNL$T`*jz)v!_&-zDxYG zCy5^?J_CMy{3(@ejZ=J=f+>{@bj>Caov9g^|m_BW65I_{B7JC`l*J0{iH5mnV`&2B92{0ovgI=7&2e!_v`lMg|zt!>LY&- z<&`mGzPtcGy~KBm1ilNrJ2elB$N4JyIB*uE*6Sc9Ew*IidPVf_hma5@Y$pOzAW=lqH(L6)8@+w z)&B~0sg~HC#I^fztDA?+m)rcf)~-eO<@ZLc-mLq-f}Qo#Ab#Mln$qSC9r@Vx63U23 z_(vYz->b3y3RNGgrN08=jpD0u|JV!f7vv@Q>Lu0x3jLD!)r-WT*WNiSc~obEc~s8? z^QfK*=24xdpA`I$Iq{OJ|5X#?4G`BKiYMm|t{a(i%d;yK4|68_Ufrr$r|PKqgAMck z67mrJOWt1aRepvP2R1?p9zm)Rx zs45>aUmEc9uyOiyKaGA{9p{eZ@t1?@=d59kdlvi%-?Ne$|19{~i_eo{cUGV3zcIAy zC9WqJ|ExqX{#hNt_-D0;;r|D;sc=S0x6@u>;+^~_4`>zSy#%+;B!_nC#% zS@)_HjaRh{9z55ju2ncEM4zZrUR8@~SH=ERp+EUmejZiQ7w8l4FLkY&p}RZ{4jAT zKaVfQU^nRJVeR^Le|tjg5VueFGqAUQ+UN)KwkO|DSRCd}^oc&=nu%))#j6j+s}04& z`5=Ar;(fu+kuhIb5`U1a*B4M9t0O-vM<~;jgCd8_7Z7jH0j;4<1^wY`samp6T2Fe=BN=n#CzMqd$MktNQAyc^mp1gj}7*3l?TyLWPw#S$=hK;FQ zAWrhB(7IS$R`uU@2@Za6{_V;8gx#M~{kIA3<9geZpAXo5oPVPK7WvpX1B}CY0zLKH zrA}we2J<;%I+)KHlfit>K>dXO8Eur{ zW%WkNTFNTQGD_6L;)*FPf5bN?Z;u(}eR_Y|d=7bt{<~^pPDkxOw!pU;(0hhMvI>jN9imFTB0P|k@QGN)(Z zx6hArI_6#U$rX)rI{IjFQ^9;r=k+VklfwUWbUM@ zf1*92rzFo+`JaY9dd~sYj{WoUKMm)W z>`$QXlFws_`r#uP2#l%H?e&tEn zp^qLvYX{!Ke>7k0(&p3^-Ty7(iJw!m8voR3^>^wd;w<`cPaRYJ?=V*uKSJCv)`vaZ zkU15(dUX;Wr>6YpY#SGS7X058k;g!YSHI$4VScA}kyk6@NniQ=DgI7D|3sexe~EVr zt~c-BL0Nq^$mf)qAfHokzY+Wtcv^pxK|ZHU1o@m|^ET#`9_4jP8zuRj(gJ_QUOm9C zQT3?~t=lOL#8*>RQkGIiL?RE~PYhm`SANJ3)@6>$mnj$2t{m50UWp&STv*l_Ng5GcITyhJXnWv^k4S9c`0va+&CrYxt#fx*Koax@hX+S=+LV{6 z{&%&agBSBJkJ7G~b~v95=g``r|DyjLaMrGXxO_jKlc$Ev$;*B|Vt4W)^O@H8C!c1a1=0w!;WY*(kTMxu<#XkJY%i^0= z|NRQ_P4tU;d3`t$KfgJ-9=vdF0ufinkF7Rt^Wz^^Sre9 zjOxF)c>q5~+(Vz8el4lBA!C)Ye<_DJ5--S-eveYv7Pp<#N%8tt;*lxn^d2U5Z_2#z0bc4 zfA`?TI=>&*u3GoUfU|m)?*CWtvT-XIH%3`ZSwLx2mZ1*Phq5Jq4#i*DqU!%Gss73q zh@T@q3*LB6ke9{F973PYCw`i^$zUF3m_P4)vv#AwJjzCbd6cCY7yXs_DT`A^DVbLp z;>!LBHXq1&>a&#KVfV)=5!dRrzeDB(`1k%lF~_Z>%?U}>XHbXZFyki-5Z_DLArf}& z$h%zYVC~|n|2^t&?b!DdTKqa3w*tFHzYf+8eU$U(4e+sgt?vK#8Tu*I>*xgJDc94d zDUY{#4VmNRIxqBj9FIDS{`W;{fBcy8Jsx>`=bZ33J{{z7JnG=`IG)$J$K!b9FY%9O zAC5;}Qpe+KD61&hpW};FKhDkrxUdh$frr=~H%!Ss9EbSc=hCr(v^fra5Pb&u$Iyf0 z*oWi##BRtO2R^HK4wIL~cdPynO~iK**XidS8-N||8{QmRJLDsIj~CEStM31gO8RLg z&w5JcdmQ>~^C+W?iG=^Ce?3|MC93~JBmH@GDIy;Et!AA(@>Tx_#IboJKk*w|4(1VC z2<8!+3+55a2J?u`D9_jwWttLolfK5Uj*~AJahlI!feW;{$Ic>SiVCCH{{_-k$%X7t-eFW%>u7qZjanS_=N?BxMg}f)erV zKKpny^FO*)*5SVf=Nq2?^>{ zfPAf=Lgf+7s=w$g;_&`0_R(q8{}*x+d~}Mq$za@Q27cu^E>Cc&5zE z-qAY7FH?EclKMXi@pd+8{zu|X@KN9=dbZS}e|zMJb^Sf6+B39ffyea2aj%R2lualaA!Bi=sp zs#EzT$YS+(#0u=k5jW46BjRaugghTZf3s0^d@U%?Bj$*o3E?M0c+^Sq zJ7SCy^{_hP%bXq2iSv!ujg5!=ME@_alXxYIiZ7X`996z0sJHkjK^?8^qwJzY{p>n? zSlJ?S$duHY+~0*PsZ5)a8rA8l%1Mz!=I~+P|Ka$2 zazAWP{T~K<>%TXI?+W2NiD$hJYo>1V z06*~d`fKBrtNu5Ij8~-iL&00}I&_he{XTSt`V^(j1Go|D;BD>tMGl!m!N;q|p_t!8 zJ5>K|32fr{sw5sftR2>^jL;r@Rx0(nE3Simf$Hy~mc@0jxAQP$idX#WuDA}mJg4wJ zC3eNY%YAC9QS6}4>;AjwyZ9*{(|Ek4~Uhm-0N6|kVAa0Vl39MH*IP_8U4^cns4}N8S4uS9g;B_K=4?!PA|FDI)LE@6e z{QHXI5Aj6*u$H)9;(D;|^x=?h)jvc%ZQM@cI#u>hdaU<2xH{E8Kz%H(nz$;gw>h{<)jt>`4m@pLO0nMH;9{zOkR+~{xCquO z9UST#~o}toJ(p`cu1NKH;4Q9zxO}XSIXI*G zJoW__Syo(R3G0JCF0!cl`;ZnlPuv{Vow<)>ReyhmI7sPlWE$&EKO$4Azn>v)g1B+4 zH#u>!FZ%l_;zo%B*MF;VaKoy<-%A|uHtrzS%N$%%_4hl7>nE-c>qQO@enfvCeYW{_ z5tlILUzZ$Qr|R!l6W2x@`u(pn4z5-8_hZDtujSW>b*CSZ2G!p$Ag-3U8m!}fA}_f< zB8VsY9~OwKAg&ziT@J2H^*>Az7bUI)>&`h8DOUXtW5gBdeIf!LmS;Zp>wLclt*HJ7 z)KBVj(6ZtVTEcp%gIiSn5ADRw5;u+Y+&KgLajs{K`M<8u|DeH z(yIRfJT0F=;*wbJb8rKyzn3MhkGNi}JM}oINA>qukAu31OJLotL#OKRd38XZmR}pz z-8#fI-#^qz+_X8US@+)q-txt|wX4B;?p#1!D!E=^%u?3LqfGVpAgw*>W9?&DcjoD! zsOs;bj}})idbfi!s?SXeE^Q86QoiritKESMIyVQxkMKD# z3%oOr2crL?&rK0ON!+;q_i=>hfvCH+NB@_a{rCqCt3H>eJ*35@uwLol234QyB5r^< z^l8bt&JXNUeXfbP9^$%<`9JfHKll-Su7bEu;ySRNad7Rb&lM6EC$1IiPQ4FoQT^RH z;t=2F(TH_t4i9Wl{oOI*>WHhwdaV<;M)h}*kF8%7ag|t)Iymqb{ax^~xH95Ojro^l z2NzTQUHG-Q65@)nKIPyds=teUiz_6q0P86Sm#_LeONu*SMR5l#V?E*H4#2+X?@SW6 zK-@gm8y(!7>hBB^H%r_M*2^8-wCeA45(mFh=L06NUf|%yRez^}xG~~JF_&2fH=_DG zWyGb4OJRM~!GV|P@8lCVAUIir_BK^s=tjqq`n6<6W4_G zW(U`(`rF`Rakw6Bo^@ESba1t*zuiS#HE~r~FLH2|s=tjm)?YbsWyUPdJGfHS->x7o zN?ZxnGY+m;^|uR&D{VnjZ{(6b)!Fr>E>sDPpr?j{Pah+Iq>(Zh6TedD~Qxr$PF^_Mr z(5^+#@uFg}2mc~UqjJNt`rQED|5W0~->{(iTdnG6!#r_W|8s~9BSU7xtp7QM+($N` z-tsww{Cw8x@_8ekXBVRMgFJ=DhAzrBO2m;l-vGY<+j}l6g1;u!-Y%K`53bv`3Rr&la$yO9_urRJE`?pA5WY0qpD|{ zfklnij}Vvkd907aPCl>u}eSi5H3|A#rTgCBk#{!hru`YETMGXHZo z>!;NJ+|AmdF7mmYeC}=aV%>kUl78UN=2J+2sL%hd@%b07s4nNH#4TJ_T;YPtcgPfi zr_@be5~q;!u6&_SyZHdquW<`){b1jNI6R;B8wDQq6#bo6WA+;bKEb$BPor@xu3hza zYKdzhuGyG>aot}M~kadUG8HxF6tz6Q&@rZ0Vgi%FZ$ca+u}-z zga3c*c5qSE-<~24{g8SWMko-WRjP3!(F@K&GF{YAtVzWcQ?F6wLJwjfTq^4_-waiw0+-+}$UHNZC#SMSH&w+3;wLy%X8>H1NfREZo-ed4}PCypK+g;wL{${uKYaH>ioT?f2pLO zHpT^i8^3|Fj{a*Aw}?Cnz@u9Acg3H4RS{R=@F)O}a)*c5VNNU$;Vybq_y1*5{S?e- z+ya}IF$Lf)d(>2jCH=_H zk1%)trrfM!({(Kl5B$5U zb(~AN&ew?@`YnBVJ3+l(>#>Boi=Vx-8h7s*^|$vl;xuX8z3}|A_oV9YrHt8Y1bEay z;_jXCj%2`^DyhD#6MrGpCa9V4|TRW`X@gRd#{FmFbC4V zy}?8L?X`ma5sz2e?6s)+dzL3`7KqDgAGBVuL;d}HU^k`v$`?B7?$;B3dNl4{sE7Ri z&t9m9@Yt(Cboi^q&w;DS13!1(3w%X?6MXlo#Fxz<68TuWe6`D8_U-cL(md&M2XzjvOZE4giR&b;1M4vd*RJ~emBht~YsK8HIJg$o z-!CGriMU3ryLD+${e7=4sJG179{)dkZ{QbsRqy|wSy0Cu6$_PhSw$Ch)X`;ku~

(0k6BQK=3u`Je?4qq#N^W7zy%!4$je8|Uqng_3E)^DiquLa8R8&+{G*nd7F)`85 z_TIbI?|DA&7tLq)Pxw8q59jeduk(DL_c`Z%&iQ->=EH1KmVN?ViPCo*IGMz+f0=f@Et-+mmCO?-Yo zr1&W=TI9v+muv7L7ZK*=_jg3|iBKQ3*F4;|LVL&gaZ74HMj{x43-$+g)Y`dW*#Ya{ z`RmjS{YUVrrM*8d=>KIOxZ2ImRfKp9UM4;XkMSH?HQMKq_AfF1gA%4!HhT^C`5G5b z!egdaGS8QiJU`^`Q~v(v+sAo+XTkK!KCj`^Xn%e4JPMyQy^^846orqXM~uIihi6T% z%sKaB9^Q}6is#_HrdQ6xbMQ{I|2+ipU(CSUO&`GYUd+Io(0=_rPs1BbA5iW!yc+G- z&+`;KVfug?ui>R=f8IP#!egcnU|nBK@_f(|dO$qR^GFM(59ol$;nV1T@hE)K^Z~u_ zD0~#{-`5d;E)UO|=D8O%ydT{wo`d(AK41c#gLk6+&n3Qn2HtM^fH|+>P3Ru+G`zvI ze=cV(4X;Lbi>KfT)2qthDR?QmOFRjWnO;>5Px8Fd5_*$(oadDmOs`_U&&A=>Xn!4w zpri0f)2rIOhL55|$@5f8=w|Ua&r>a!F6Vr| z5Qk5ro5Z8=Nz;sj_u%kRbffX-^TG32fi6!u_k14S4{s39!Fx@Y_rP=TPIOW{18+B7 zJ_OIeo6z;*X?TO_@^N??UX893Pr(zW%V*#zcqzJ8JPD7PX5HQMNuHltLf44Ld0uP5 z^y(6L96pV%7LURwO|#ExmqX?Qi-iKpNR(+3W~Q}9w3`Je6LNqEfkfuryw&rL0% zw~5DjzG}hrfm84}d>XwZ9)(YuK5zjZg^!{ajsGDJ&ze3c>f9gl@P71ycn;oc`k+d9 z4&I5*i)Y~NrVpxvXW&ifdGR#7!Sq2b@HD&{Jtv-mCrlr-37&$NqG!dE@R;d?`r*mV zZvQ3pjCh>qn-)wTGy;#qr_s~mQTU|kgC^lo_$YeH__KL<*7QMn=bp{O`_Yr)Ie4$> zieh*U-igkMXW;FoD=Od_coTX;JPmI!T~P~9!>iF-#Z&Nv>567}3SNpH7f-@trYkz( zNuGOJLXU~ZdG2Y!bVVOL4xdJkibvs-rYo}WXz<)roq zrVnm{Cwbmy2|XYl=lP)p(+79J4PWWId~^JEuMk5n?86Bo`E-^d&JZ52Ga*`ho|Ay=x*^8JYo8fGI$DJitZ9m z!egcnsfH(c9%c!>Nj%Q;91EroX@tjv=Vc=Q(Pr}iMw8NwDQFMp#r}OZv=|j@a zJ)MX5qua%E@Lto048wEqPIO8<18+Bd$X0j;-h^%wPs1BbA2JJ1!>iG);wgB-^dZ~e zDR?QmMLY?QnO;*0PxAc661rJD&hroprq@)#AfAKwnqJcb&%ryz^alkk}7Lr1;d>`Io<+tfbJ=dTN<51oR?;nV0P@hE)K^q~vzD0~#X zX#9yhJZt)}sB=%`;r-|Z@f^I@^kJ3o9J~{q7tg@kO&?YV&%m3|^WtfEgXzOs;Awa@ zdQLnAPnbSz6FdbkMbC;S;W5*P^}~~V?z)7Y5s&jZ>w@XSM&NPyG@M*nm#P=+~aw8KYCI;2k$j~criQ&??mUsGw^oPhgZNe@Fw(xcpBbd`tVwK z8eWawDxQKTOdsA1Pr*yk6V=hv%GoED!HTXT@{yUekxq!*lRXbVfV_Z#T{HagSx-P3U3qG`zud zyd0i}SEGl-Q}Bf8cnv%SFGUZEC*d*E@g{hZ&v%#51LAQ$&s{Jb?|{eQ)98NjD16d% zycZsYkD~jGPvzlR)A5XRQ+aqlx>r00?=>BtfalrEK8@}akHRNS zAJGnv!bi~^#vjeYv!;(oJNIZF-j8k<&%t|5A2AHi!8_3@@eI7(^buR(8F&-AO*{>6 zFnz=mM);Jv1g?1AUto#>=^2HtM^$RT(J-h{3f zPs1BbA2|+B!>iGC;wgB-^pP|06ucB&E1rbMOdq)fPx3kE61qk_&gYs7rjIIt$KliH zYVjz1()3XYcoaU0t}^~`9-cLQRMNSJ^YDIjLOciWHGNbYJO}SY$Hg=7cGE|7!!z(E zbftJ2-eCHuL3kQojjj++!4syB8iS|crRZ|;Bs^yNsA+hT&o!6OW#Vx@$6PRd)FM0% zpGKF8N8yvE6ES!cK8h|eKADGSO(){cP3GbK=$Lp8-fKEh56{6n(NXaXyxnx76`p}N zp^L@S@CMU~E_fPVjdtQGc*1mI0G@)Ey2!Te;z@YSbYc{qc>-j7}o&%t|5A6*I0!8_4;@eI7(^wD+j z47>?FFP?@sm_E7%o`zSW=fqR+gz2L8A@JZ80Pr{?{QS_AY2lMc(>7(<`J(!30qbJ34@Lto$6vK1yPIOK@18+Bd zOa(jxZ$eLqr{N8zkEw;H;nnD^;wgB-^fArw6ucBYE}n$POdrz;Px3kL5_(KL&gZ`i zrjO}^$KliHQSoT-`Ea0*$-<-XQTT}Q2lDW&>0@%vJ&=d@qqE{Uc(3VW=HWSbCpsgZ zfw!Ap>);u96M9%Y4R0{Lwj7>@SEGl-Q}Bf8wKeb*yc9hso`lCtuWf=S`P_5~Js=+E zbJGRWYdhd^_%ym-JPMyQy|xz~g^!~9jOX(3tm(BG=W=;?Ke|^u2k$k#b^@M*ccRnc z8F;(twR7+cyb0YSo`yG=Ub`KhhF7Dz#Z&Nv>8dh#3SNrt5>LWormL#q$<3~K3B5@? z&gZ`irmGs^ariX4Q#=ZvG+osWkHSaM9mem^!?UKV($3wVhxen~#dGjp(^bRp9J~{q z63@WfO;>G&XW&ifHt{sP!LariX4NjwUlG`+3?9)*vh8;#$Whi6T%OF4I69^Q{`5YNGTO|R>L z=ir^_q<9A2ZhGAiJOgh+*Ndm&4W`$P!_)9;be(t#o-pmd2k*WVycAt4o`lCtuUmpA z`8;(AT_Yan^V0>>>r3Eq_%ym&JPMyQy*>et!bj0n#_!F;v!>T4ox3*=??)%ZbMRi% z>)YTtcqck8o`JWUUf&JRz?;yO;%Rt;>Ggx~G`t#JA)bOKOs^kE!()5NHJPIF0ml&VO!};H9zSq%B!67Z!qn@Z*n3HuSPrZ6g**i!vH)5FLjZ>Y!^?$ zW2QHZ!jpWyyoBB+9?v?rV0yz8JPw~mFNsItlcqN;z@zX{^rG>5@^HHFx;pCIJ$ZOP zdOunqy|Ip1A;eKY@_h__AR#0WU+8CYTk zwpP4KIw8xx2sraE^8J=cm&%sN#>6p?&|hS`E4t0wZLVm@+a*^t=g|9ldeGZ`S9G7ZeXi)Y-uAkpVQ56{l<5sw$ z|MIrn6^(dX=8Cf3mb#)}cw6F%M!k)>qA_oyuE_t}X^~=!Ko_}5>uuHOwvJ0|# z*?HMH*;&PzlGeI8t(%(=A9qEcq+iE+?dtm*bwz*ndPMbE)w6CvJ?j?u52>DY3+h?7 zpuS)AtXojex&`%V)%U2r%N2dx_tPn!5^v)c>+4%w(dFJYxuPq)O^Vlx*Qp)r5sbS= zajWHDrTT>GD_zkie4KLe5^?e$^hf@KaTcqd^!V}nb@Joz>vXNR_yzUFZpGeSb0j~2 zWxZDH>FqYR!k>4plPmV{cG0ca*V_fRVjpkwZpH52&O7&tw{y+wMZ#TQvPM)W1zQg_f?=JF9emUOSZn}x*yuMjN8r8nFQte`9KekNsFP+c2 zmaV40F~Y4NkKefb*#G{yKcBaBo_4HXb-Lk{$i@h>bWPB1UpaXSXI!>I z^C)M2?V8}Lyaqf~K`47mypYdtG`uShdYx*1H(U13%wEWmV;qhMLzwgJtPh%KC zyN;d4n=<}|?TSO*{JyxPPPRt2QnuXN&F&JOcig|KkiSdFyVu{~`~>46Z-HO&PUG1r ze-|(9IG&4l%HPE~i*xY=@#D+=ZFU!L-En_h%yq!?Z`9d5FCN)(KU^H--MNd06>kWC zetuZa|HXr*zmc%5fua$odQT##_#KbY6pYr8|w6b@u$4W{Y#-lJ$F`@^;~@bWS$dPn+F^f>JM z&kOn{^5fV0Lh|PK*M*rK$8+IM`MZ#F;jb^t`{u%(^2hzh;-rYL^Xk{(!nPgv$%TyH z^P2{J|BR<;$9-{OkaxzFRJ?lpbzTGiI@33$HU1#)_*cuHd@rBZz`xS;P1<)CvTuX= zvOf#^gK@^f^JiSe;r)?y7i~)4{y(%gcXG z{Q{Md>XvSo4ffM! z*VIb?II2ZoBF7KPBo$}XIqBvYvmd~qShovF&THU5Z@M4r$A4asckGP($@lVk4g7Pa z`>}yP`_|9*ys_~9K#zpy&$u$-{ed0|&!7I7m)|EJot2%IWnF#zkJ8`rdHpi)vp&lD zdOg58ewjV<(Q)}{o&9*g ziTq-PJO|?y{p;P=_`e9v9nalYry+c?f0wf@h|THJG4FMl7kJQ8QvbZ;;p z=gwvQ{Cb@`Apd^Gr*j(g+iQA&Jo>zzo0ebCj^jOd6XVf24cc|=G~Sf)uI-9L-hzIW zw{vTxD`m^oPZ|B|oCa~pyVnCr#UXEgU!7aL(|C5uU*pn_<7wO}e~med(>OtV-B8HP@qD1p_n&o*BRlSg#vt$fI$&7whVa)p4g3d940$AL!=r{E0(;{m*Y78T0Y5y|S!ppw-VuSl8wA zdfhV#n=Zx$)-*YlM&i9<59p`&azsAv~{#z8c zxo}>C{+mpHGnfzkH_AUL|9Zx!^BVY*Pp@y?s`1vyuX?BP#u<;!YtXJ@r}1*`JnwE$ z9P;M(#o5Z+*?H+{*-7i?>>T~;y!yCjGY+qB9k4iOlQ*BgvqyIv&)GZW?`+PGzuqnH zm$P@u-`SfKr<3?PuYMiQ?$~jEoZV*p);`}q<7wS-Kb#%poq07WUL*cGuYo`F_xjc@ zjX%gc{&n&v-^=GU@UJp`YpeVd@~a5%55`#*o5UKy$AAIqe;j-fI3|$f%z&7hIpt%Gf;5 z>XS{Yf5x+XPJ?)?kJq=CtG)KeS)GME2jfcZIN!6_4}PC5&-bk6o#xx1ag?k7QuWVz zE#Fsz{<-dW{jFd=&Yi{j`Sm)>ng5yF8K2In_dj#V^zG!=ug{r_@>|$(yl2ia9?l{E z1$jGjX2p_{n+3$+`6BuX7>mlC!4o%z8~b*4O7fIbG{XPiVso#GZ zlODHmeT{hqarzXew{T8_IO)PU4K({<`S-v<+%EI)t5Mud=HJKq1e|^0{jXua2mP== z{QHO``yiNiy=;y8uV#L_p9byyK0x2e{tMa%`C@*RJI%MOuns}H6661vZ*<4`o=(2~ zI8M)5|EH55pU2b5%knw(aZV>+Uf&YT2mev|XXHQ3_;gMK|3TAtw%d45ACO=Fj^jO@ zye^;9pk4Ql<2{``dj7R-iqooo8)cKS)w0UV>6P@aa~i~D++N>VuQ+AipLr@jwy)5v z&+!~5g3apQN^`u?--w6Puc!)eOrX<5a~ z;II2>;P3N`zB6v)KW)h7dz$ik8rQMqa~k-QSFi76K7PNP#(wqlJ+`Z&$9mRrPoDqq`@#29KVkaTIknrW_~V7VUA3M5MhbZi+K~sJw`*9(Ko1%J*BQmB zQNLBP<%(NIe?y`ExnFvHE9>v)Ss%=k{-Qhfe~R{{V|jdkr!c>8|EDbM*#9ZPx@~r+ zY$d*~t9~A*Ft6o(8^mE=p5HpCxLM-pN{QOR4|M-1%GI?FzhgVK!-N}olZ=B^hph^4|+kjL?1!Kq<@@BpLf)>NWPId%`FscM$b;Vp*Rt;dt-RkDRh+2$b!O{= z@o#o@dHT~n^zG{AOy4$b?dq79&qp2e@$vn6@%`6ve!~6NvCqQ&*Nq!r?!T^Iar{2f zJ`CdY7WQG#KjZfNHsS}m%Xn8p>Gdo{>qTXQ*7hkxZUDy+=jpQqxavqV0w7F`ESh2Z#F#M&2Hm#cs{h7 z4Cf0y5uT588-sPm2Km6YY8*|nH7?kn8(9aRuZ_&(e_2=li+qyYZKUA$S_o1n9`>gwrA0PbY79S7IdGqma?y&eD8djWiq1_eT_;s1Sg?3kTJNKbr z9>j0o$&c%xkM|G1W*gs!lCrh33E2wS5?QUw2bWBLaKYQn?t^p0)x7+8KIqp0eGB`` zkLQD9^5dK==c}y`zh2YdX>gIYKK#=1(|jCx4gA=zzTH3kQtDsh|6qf(#{a=8X^sDb zrP3PzvD#P1F4{Pk`#E;O^mjO)emuwKtlhC$TlZrJrJ0kzP957J%Xk9aDqAl<<*|Ck zboGF2Fi##2?2>MmrM=%j)s3=>Q(Y~+9Irw;D(lQ{(7J4x^?I}0K)-+2xw)(=>o!cA zzJu$^W#nkXl-fP%#G_H2a!-hV!+oX1##Ba6tRY5!E<@Fs^YDb=e z_)R=oTD$DWIN2x5KTikk>WqIQ=G!rD*2DAfj#`}c+pOR9i?YFdom)RCJuVx}hkA{7 zeZT6J|MeZx!MN~ikq+{{*{x?B;ry+y-7$abYviAhE%lamu^scbo^|r~jph8UFE;;m zn#a01YqxF|zoq58WZk-H(?b(B?{!o18{aX1>qd6W-@43>`CB)zWB%54tN(Uc&10SB zv984GtCnQ*vO)jORpq3|WQV-n?5YMC?_y#6RRgAnw%Yisl>e$8wd+tj#<6@~_3K@g zGQFIysy6vI$+8YXe~kNYGok(%zt=+<^%s|4<&OE{@5Xl6Z&l3K@5kl+R>i&x@3*y# z$Dhl!4R*fQ26539s#m^_QNE609lifC)3Ot?ow8N3YJc>+>7&)|Xtncyf9c~KOnuSfA=UWEKCg3e$%w?xD)lp()junynm>P0NZ`s(odd>Z4}Y zEXiu#YZQNt+OKI7Z;@@1t(UDfd&qWK#q-}A-acom9Q(JWqU_Min>jpLw6 z>2X=j^PpjAjpLw{bX>N?tpDCOKi>n#WZPxiWR;f#>!p>K1FNMgWlPPjo|T=JosiZ1 zR%?E%TUFmETQ0jCr`UA)oa~IO;*={t{(B$&_*cnqmHbwz-&Nz{qu%oUh$DrcbI$1D z`w_FIf6n`WGkS=l^;i}3ga07B&#tS1f4}LUb6pJlgK^-OE?ig7=t1{z-Q?#H{=<)c zHW|NjOxnMXgY&mW7AMF9?Hce)FZYK|7Jgm`;?x@dUa{iT7{7yf!FZ}Q--PDNdT-bJ zkf43J>7VhwH1IEzpTExkW4!cB{+HjE_;v?u504kU6rKEMYc({TsCHw?=cMg`2Iq(TF0_r9r+sFlD)i>=jeJ+U==! zdnylmY900*Fuy%Do;_=&E6m2!PfYoZjjLYk7E{0eZ=(D>V{x;4sJ}fXq}9(JYPZKG z)i=u4$ZFhtKTHtsed_Oh!_sQU_oDzmEMO)<`+<;5%0KTS>zI2{T>hF*QOxv;CA%K1n3f)rZI`W)EjAlb{vyoL@25zM zY?HVA-FYq7A%5QAzsTBIbPalLS!W%8ZyWH3xW28OMe}p8=abyW*3QzXTyaW5amMiT z_a)*^R^T_r-*+#Bct6Qxo&m3i_tSeYAN+FEPpbb8{3c9Kw&2$R9}e*b_>g!vyn#5q zHXeue|E_p2uQ+~PrY8sSixY=<|KP>&X7R0Xa_8z5$LE9J+xR%g%;D$rfu7v%HE~Kq zd>roc0DrgwK2ED1&M_} z)|YmE9Q-`~k9K}t(8rZ~zb)?Avt8tO&l~^Cf1ruGWn8)sO z93Ast5g^@+j^f{B+WS{8@pqQZ;&tdncx{N^>muXZ#rJ`ei{T3CD0&S4;*kH%_+M@M zy%*uV&fTf_@6DjoF7lq<=LG#2o$I$GLcSlVJ{_N9lj)?cb z*&pwAhj=l(MZ6KtJoN9<2J63`^ZCt2@tQ4eeIBm-`1tFm;Tr$D73e8=c_IFK#{Z2z z(@P6*&e@Xobb*$Ho%KsAUwT|^#QvZHD{GKXuV~_mf=oz@yBj6M8F7XohR(LGb-*@Tnm!|*x zI-F}*?}YRmy3a-aJR9==w2S;=qxfC$R>w2@(phv1{#xIl{{;O<#W%s@@XkWKs%`vT zuk!cj`Yn#%b4C7K7vghp#rtyt&V2tI5AhLr!t^`a;aL}XXIqHh$aq(YKLh7Fc7yW& z&J?;E|H+U)=kcz;%AfOC#d++Rk>)&BvA*ww&SO;_{VU(^^ulZ5=}9@Ha`R|eHYL=csr(NXj>5%^w_(!#x$B);4Pun#y#j8fo!{s0FpSs9T|K0do ze}!lGJ0b0#x0cYuF7no5q5q@*1^>^<|6w@uyITA2E#`ML^Lr~azoVPsZSo(6H^GNO z@eX#85#{Ht&%w+1`v>Lotu}Ni{;dW7#Op4y=u`pbM7jw=UWLh=k+b^XFtD0 zj(E%QOVJbXl2APM>lWqXPwdwO`}Onn#{a~A<@c+RKZW*dg8RwmE5yg(Dfnn89{cmZ zzA4WBOmIEAu1A{vnTX@x8S;-gcjbV1Gdv1!D)6J8bdjI@N&Mg~?x;zgW7YZmQyDsk ze`&}+OFXULo7>_N?b)J0wj^h2$Pxh5R?}v`! z{ZMfj$gObs2b}f%@rdyS*7L|-p5t1Oo0d@i1p&Z7rhME?$9@P6e8uD6++ z#kt-d!S(iI{nA`-k7&k!*tDO|5xoD)Tq@4{zax16cUe}t6U}_z=qUKdxxf5yIX?H7 zIQN%J^77~Y66gN%Ms3LdVf;TMz7o#*eri#g^^LQ>Z-mx2&ijWSo@D%wynl%E{^627 z={a$)Gi+Jk)k2&-v_(X`azkl$i+Oxmo^?csmBF+BhbB2ii{k9-~@zwa> zD*kCW*QYBq|39{(OYm2F-~Zv;;adMcCehpA^@aWq=Y0R*48`MoAI|x1>z3wxAI|yK zzvCA4e>nG_?`Mp^&i&``0e%G2{9m6(_q)jJbD{WG;eUbre*;hPx82&WuaBbJ@E-~J zAL}CD)B3;uFYp9^`!%KZo6vFmwI74|MezTq_}N>6&sENeOV^{9@YnhG{)heEMefx5 z{nz(IkMXR3PX5K{QT(0h!2bsPwLkNZ!Mk{tJ7ql2dLG7l=0odw*!lQ>So{ungL9{< z|NHUIOLO0?+81mAlJ^_671Gt{dHkzF{;dD)S#j3ClJ!5nRGRg#Wc^UV$B(!2To<`b@n8KeI>|FJLl*zlesn$leWn9{?pL?%Ao~|G`(u zy=?lGSKxho#;)h&Q$@TI`FFt+aP7aKKj#05G4W=26t4Z}`5`aT-~Qr9qi6WcTI=yjC3+fv%|Gz} ziHqE-@y-7?e3;L$>#hAf`~491`}~6Gz@PnmtK!eIpATU_A1Xf2em;c#JRjQ6haBx9 z|G6ChT6iU2z16Gu9q0=D+Y9jz{ww|$iJ!5>9nAe|&46?rdJ+HHkpEV=@--iWkHe!O z&U*gm@upv9Jr8C*59yR~&T;i*CU`6Y@WTuN>6* ze)(!R^SMmjCBCC9c;MT(1w*d3Y&@X8*o45%O;!Ue@$WT%Rkr zKEKo-;#{A<^G9*6&lSw?(q?I{M-^rGw-x;Pyf|{{a{pY9`FE-!FI9&)>(w%%_E9+V zd8s(WZ>GOV(=WaVXT4g~{>2$|+C^TR4*6e>{~hxG3B1`wE~%3qMmOO<6!NcwE8j2n z!fWB_5a)XIov*4r*Q0~D9<6SXZb8TJ*ZlqYIB?cQE{=(F{W)+3u6zf4*hMaCFh0lm zI*{`d7IM%Uoq6Y?)}kqf89+u)_})&gJ6 zdR*8c&i!HaJiIEz$KcEH*;^cP~`F$>w-&O4Yb5r8IaQ4%4>OUAy3A{p_{l1F*{#G7n$7_^5^}b!gZm8{=Ky2V+)m8{=vX#G|`K)g%D_l0wRTB-K4F*NHt8#NxpdtKxY8c*PV1^x$#{}kSWzxw|J`*9`f{fE$gTv_EJXD`XW z3!Z>)3iTg@4~p}CVr3NGRN!TKc)fV_7FRY8uL|+sFrJ9`?(k8*GCCve&?7GL?Dmj9 z`?I0h^s`g&Zun$~^Zw#yz5jZa_ZR-(V?0awc$W7UWsUf2ygnagmGA+@?7r?6_2B5;FTeM7xALv5qQ=`PFplRvkjeb zk(s5Ce?NRdd=B0RpAGTP@m0+Ci2n-S#9zH21%Kx&OsR z{3G~lzdU{R7FW8>@o(0seLZ>! z|GI*I>0>VPEv?tntKm84cJGsaDS86`l8`^=`LsFHPi=>@Kc3na;;jE^RGj&jHuIcNqcrm`W&Tfv=3mPEzoqN*Q_R1V`A4_QpZS+E|EEIpFD)US*88az zcnscL=>G$+6YpfTKX!}zz#Q>fr4wk*$5Zi;e~x&{*Hh%<1LWhWP(D6z2l4dz>XUE6 z2b|kY^M7(4-R~k#Dqnv6KX8?c-1L~mfATlz6#m+8PmZG7@E-~Fe=`2p%l}4rjdQ!` zd_UQPuExJR-~P#`xNcpY1aGwtoL+tq5VGF;4_L}za{wh7pLn&e1?2>idVv?XvdAUcpA=pAMXi`kM%f7`Fp$>9))YZzWv@yaLxB| z?#FvC!fOld_nw8^EE5w=4iKXIAaL(UjjRn3J^Et6ZympJ@`Mk(uH6hM? zPK=4O|Mr@OhxXrITj5dh7LB zF~#}Zs{?=S$0^R|UhIddvC#PH;8lv(3unEj(ji{LqgONHoIjo~j7%wCzP~-^;QitW zH0wDPFSOq?2k#Rvg-^hhub@5G*S^0Sf0XMh&m~5df1mm2Jeu`=bS@Mxdz&kFdI#?uZjho=hdW32b_z2dAl z&q+oetqF1FcYIR31ilrn_4o6QW#QWIkFcL(?B_?8LhYIF@pYyjVL!+E;Gz8->w;@P zJd%TNf=`6nGvDL3sr>*v3D^1r{WHJgM#Y(5jQKqho?jHMd_KZ{kFnn$X)MIwgZUq) z^YaMv--G!-5}N-W?Dyj`iqC%EgZ=(UMW{XVJ+964!%OgC7kPLw#F@`=QSk|QCwyy& zGrx_R@59V*59ar9XnuRJo*U)=Fz0!XDtK3@J@ef-uJ|c<8C>J>`PqZ{ZX6Tm{Q zHx%0Qd}?H4r+CE{_r583d5AN=ja8;6nIF%uMkYh^dmrn$F(Ez+?}g8V+B5%+adGDV zKIT6en*aM+;g#Z9cne(l_Tzsa`Pk^h`_c9AzEFJfQ8O*x1y8^?g*f@B84z!Sm%>{^ zoP5+MpOf^r`*wJ;z;~a6*QSr>U|TZj+9 zHNS`E;r;Nr5bt)84=LXdO~Sk2xe!mm<^RwqybV4Q;*D_S=b=G3`|Tm+BN%@TT>I~# z9(XmpJJh}cK5F`*c6d2FRp8MDc&T{J78lLKt3!OuMLw7oFNTl8HDBL3=RxlGQRe$#Pl#8-mCpw| z;LP{I_7IQ3x2peUcog1L;JYos$HeQlxZM`vwIRM0uKn|13_cEzhIk*(jVk{SaDH~{ zb&&^VLcD|a+CLAB!^y`3>d()AH|ASCYyJ`?%+e>^tbDFc(TBEWxcDF?+2>k^YE$=&%sk_&-vJO0S_hE8$Te^>I63$6dItp5hBXO8vXmG#es)_>P>c#Ya~{oIv& z@cIyEz8i|wz6w4EPlP!0U9a)xO5p5=oZ|WU?~;Y*%>Vvv zX!3FYQmB1DT>J0-Id~sj>m9UjgKItSAAz^Rv!V9vhxN+O{R8kMyg$UN;f?CQ8_s^Y zzbnLx;ZgBMIQ!xLh5|2MfNTEu*KBe8{XpdY>JXpix%xS^uYga%%R_t|uKC;_g^$4% z&(E)T7(QeE_bsA_T;#rmQ2So^wD=61{c@jl(7qF{{NJ|~-T@yEwQqq>s(l9D3?B~h zdbrl-zCL&zyf?%X@Cmiw1dqczL%bBO^}DYXUIK3^@FMotI*sQ(_E!=6>%RIBpNEer zeieKUo(SBeQzE<0G|)>t9d_rzxeOr?QDQq z=`nN)fA#P4UBu@-eR{s`UOw;fe_s)4mVX*ugMUvb{=WF@_h0l{u9h^SiA(j6&?%met3uJi8*+mi%e*Kem*PO z;I-l-=vKJ$74T}f&c{SIyb9hGieJp1ZcM9vBb;CC`Kam_ zkHW{`#UVZnPn*7H5kAD9-!6nW=cB4!d)&a&TWI&hxj~y zH=_C6Qw5)cCqkU_u~z&4o-%k2uJQQsyHU8tdyhkpxX9hxL+v>qYg5vB_yBx9#Czb& z)+iU<8NH%UGeUX*g4r**%{es*(upc*_`Zz>{i)v*)iEs*%4X(N!g&kjO?)N zknEuBfNZ~PpKPyeTDC{FTeeGflWeDKhitoSO14e5RklU8S++^GQMN%gDO)dFCtE99 zBU>$7C7Y0q%T~%($d=2N$(G8N$i`%&vct+L~?W3r>NBeGf9jO?)NknEuBfNZ~PpKPyeTDC{FTeeGflWeDKhitoS zO14e5RklU8S++^GQMN%gDO)dFCtE99BU>$7C7Y0q%T~%($d=2N$(G8N$i`%&vchr%GS%)$=1r&$X3f% z$tGmuvX!zGvgNX6vZb;mvN74HY_Y5}%l$F9zH(nQyCl0PyC9pFotK@Hot2%DotB-F zos`YVPRMSR9hV)G9hDuC&B|tEhh>Lk2W1Cj`(^uNdu7wIJ+j@hU9y{GJ7qg$+htR- zZL+PhEwatBO|p%$4YEnudf7VJTG<-eYS}8;glt^4Qno_2T((TMRJKGmCL5J4mUU)V z{FQt8ExZSQ7|Um;D=z2t2IW(*=VM>NewNqSluzZgH@@FQKSud4*l+WCi!yCi{0ckI z%f~#=@!%zOmr~|4=c4C%T}0j6wEqvvPrzQpuH*GCuLU%$=pX-*V2e=g< z;&m^t8>!z1`z7pS*p2wUj%6$>e#z@|)Kj;@=Y%m7F|HN=itWeVioKB6@s!WPKF!P9 zeR=tDev#L&c|D3=L(+G_@-s)#2I}tTbpo%?GrsGw%&q8gUVrDch`tHy^Y=34Gq6W7 zE?@o_WpcIRyV#HL`Wvs;V0U3*EB>8$=oRP{_!rR!KbN^8=2Wyhb-vANUOsmZ^ZF-V zcksH7@kObBitjhrFqwXsD@MC(C*R#}-o5&ly9z&lDKbP0Fl;7i(r{4Fs z8?R%je~uS9ihP?G-=X~9^u-S|E65S=CEbe6*jM4?Ho_PqzoG8$ynaIc(Y#o{74P!8 zn(}{Qug87}%h*<2Livx_KVXY!djmFt{yvs`uVB0@K1KN@7~?4R?5mWY;6;8MV=6ib zOZyc!^V))5i@ufeU-0=e_Itd3O8p+#|K&y7V)|O~L#&@8b1(8^xgA}M{T;6hX-oT} z4^SpXqiY31* zzE0g+*oUxx=jG?{AG|(+{~5fF;I#_f$IsgCVIWOwroc|jy zt|RQoJX8Gir%f;RNe(m`K_uAc;|Cf94^GEN+70&;T zjPgk;|2yS#RsIp>PpEu9<*WDNYD&x+%3rpazn`GIMfFXTUs8F{qAd_Cn+mAMbSaG#aG#f)BfM&*+!FR0A@>4m?m z%=LWk{VH=$o;%da-!7$Gqw*&ypQZ9`lrK~HWy)7sxu5InT#w3J)91dUGI^W(vC8*Q z{*9Gy=IqT)seBmamsPH({GQ4mckadARqm!-uJXN<*Q(4IUi`3?Z($W)JYVI5D5q3D zf%0`KUqbmCDwBs7?@*ch$&1S2Eq77AU-eH=epcnTDZgpu@9gc|OHSqED1SiZD<~hP zGW+eNjVj+kxk2Sg${$mid-h9Tu<`&odFcj~FQz=8@_m#yTlqiP4=?>zW%k2MkEwhS z<$0A^qnG|-HrvByCRvz^ARVw@XQ&c9OFJEBg?{bb_{1Pt(1SK@|%<&xAG59qWp@= zpP{@>W!?|HvWJy3mr_1ZWnaHe<%cQPTlq&OW6JidC4m4CL8^5rUDNV(I>Ki`FNTIC;59<=f(`~1}rmA^oFLggP*p0V;>CsNjR z=B{g;drfELuD?>&`u>7z#cLYdFBrpXwbu5Rzogu#@{^R?RQ@yNO?I8UWsI`M@GJJi zYZ}9^xz@d=G5q=s${NEsXFsnoj9*PzV;JYYkk=S~%X{Ly#_+r6DL1b0zXJ~b%eREe zcZAAMhsxUu<<}FTa`Rq$5`@1Q=0~ZITloQgo_PHhE58R^b>-ggbKU;;)6V_#rF-w` z%XfEEpH%%Q_0_6R@o%#~W%ZvR4_jka|4O5CXYFnEXV*LTU-w%59}?7Gr20YUw!B~U z_&1DMePai|t{=7f*|c-XJFGs*SAt7N@V$xu>@_wtYiW2{q7XKb{d*BV~ zcbfWtQ+=F|eh#(xUu3>hpSStGO>RH^xYc*#^VmOI{X66>b&=IyJC6Sk$2t9sgQdM8w`@%JX2d;A*Wu#WF6@%;U3=6?fu zd;AQICrABnRG%jPCqr?*tN5(lf5@h|B~uU_&Z_EtGLm*j;|HQ^NCR#&*$s;wb;@4GoC+9 zIk)RatbPmmoLR8?zc8NDS6V&K;<_K-Y4tOmeDBDcR{zDV?31=a{7>DbddC07BMSAq zR$6^AdFc3Ep?;VDw)$Q0ziL&X{^%=IAIJaALj8X7KQrgty;s|K^4py|=&R-*nRV{^ zA6osrBhG#N16F@!Kl}FYg*cZ#tNJ?X?QANLd-t;Xd>{UcR{!Nj z{7v(l5-}SRp80RP6HUF#ex%!ud`h7oU^?VlXuK%LNxwo5s*Q>sXd|puS zKj;FhcdX0xr^}x)lr`vDI>6Tw{>XejoOf=*?=j|*ucBUi;1tfq#DwY@XX%sX|BVdS z1ZVZ{j_}6`=aYL`{WUqp{P{v(S3IG5^7H6gi?i53{Hv{=ze#jIt<@MNs6XB6 z52W8O)E45L|NpFhHFNxb{{BnOUu@z&sB^KAG2gwb)xS!dEB|Kxw^x(%o2>plt`+;8 zYW1h5*l#CWeSRx(oYf!8Tz-G6;t>Dy8?AnbF+csN;?UP6+CLu}!hcHs_2*E3udZFMGv-qtvid!krrU zAG^oKeAR+;4}QkRyfDT0FCA?4pY3w)fw=0csMj3*{(Rs8)pv7^nlk@Xl53Q5^~N0a zpRs-~V~)91_;ViLXy@;}Vpbn*b?%49Tm4g&)PGp@jPr*-S3Ulh=^R~>=e|FuI5oV_ zx!L@?X}f7HZCtBQ zwEDLOxyBx-z0uEgUf0-bV)$$~pTz{{uHV{TGs!jc*Q#e-KG9?KpRb^=|50Bfy!W`l z>c7~)`PH@b?Q+gV#_F%6{E+}C8HQt!u~a_*wv zTm2f=@e8*V_Q^%Js-C(0E-L?G;=E6B()iyW@_$YK?4RGQlYb5It8F}&RdAix`F**K zeUh+~F6Pe>MK;UaNl~#=lAO8`U$RufJ*a zxk---Vk)w34=mQsDcbL;N3dVYQ4zV(RJPqG$OKd|~5*7_!0uO{p9 z-(B_O^IO_id@r@DR6f_|82?8s&i#wbSNmZDIr-XUR-dbL?x;5{&ardO-ROV*W&96z z^Zh~ESI2In{@bdjucP#S_*mliYF-bf_*XG{|$q@Z~2tPd9?!npIH6ct;D}t@yYY)Nvkib<>#GgtDj-*R;Mlgx+ve#dZfjl z*u>9eKU2SH=f0G*`g`*DpRIbv{3ZYM6#1M;QvX}UA^w*?q52Fz7bmR#Q;WX}r{3R>@PBfa_b|G@ z#71}zbFI}sJ;?jsX^pd;alVgw#(&S0bNifYadz)>F7rG2$EbhQ>Q5%-gzmGX+3jvTcaPuC^!wTX^?O@=MK{-zL#_VhYUkds_wDrOuJ^w;!~fn2-rwGC{>L-NyHBzD zSGO~M?VtD2HuE>Df4Y|Wo@xHO3^U&kTK$t<+%GP+`U`uw*XaHE>*VLu-E6+6GR_}r zKRh+azjd$kbw($@m(z9QSq4?5{Z>=YdC&ZR?7e?@Rn?U@er|q1fCxcjMFG7)&}gFO zh5#3cnvevN5+Ei)V+ZFZBv%s+NlY#p+9*-6gU`@5w%9?7PMBhcj`$s%!M-@9Esp3z zTWqnV9aQXKrETos3|czH7Mt&9?Y+)9`<@^7oC}G4|9J0{lXLdkYp=ET+H0@<^PCO( z(9fY9_@Bj+&K%(XO{at(M1E%$OL*vrrai>|>Q(4-PNRe`*sEz3Mg*&lj<%bgfBj6W3%W&xGandv7`4Mz}1^dqs;2U_J@Rj2@Q*N@v zUjUtar9|Q%+5vbe!*c=eVL0*_oGRg=J&=d%>8n}z9^DTld{HsBZd}cL_v6e&jo~GL zuVMI6oQccr&P`kKt@eMH@SouMrfCxYrW5$)`_C8-IcMI^e3AB{XC(a9A$-U0dyHSH zX-~H?ei&!Q?qT>A&~IUQKji23D1^N9f0gM#wnf~2-FQaRp5l7+I(QYYVLIiYKaS}H zHEjmlPw1egJ@^3A*@W*hen#S#gYPppNcfSnXur7MQUu*T`nMAP{nfy~knsob4Sk*` zIfA?|xm&`QAdlaqu{p}|KS1ZIEfQX|4ejP@OeY_DdsxD60{(WMm;MRzvXuS#l9QVD z>_mxw6#2U9f0)i7idE&1m{BS15hC3y^>^S7yAmK;aq0dzk9@-0i zJ|f|-<^rGPF9WX~)VGBEM~Xo|Ch->mzI8~#e+*sCC}KJXpil0fyxIl)`HX)U_+0Kk zZh@UMd?B76-ze$4hCI%BQsOVzkNWrvhWElh^hx+K$oAYU34b#T{5KgNd>`jA+H1)B zA|CJD2s__K{uA=Qz7zGdSK{B81^5LFFT%P&u7oe$0X^@R@HeV~zmM^=fzM;Z*8!i~ zBjF3r;4Fb3OZ*>!Z_!%}-winR>!|($zmm(VDh>XP`&Vxq2A%5|A98+`$5}sWLB6;@ zvmgdNa6ja=DX7=?Nc;u)sMj5n(VzdO z#J?Hx{L7~#{@eAKTX`kmKZH)!)=Bsmk@uf* zJ97F2*2_LC;VX|~y^P_O%f?wEUy|@2pzLm`lJM0;w{tL)fGeyGdHv`W3 z`UT0qR>EsHLH=JeKImNcMG2n|Ilsj9`iBMh-ZQrgw`ZWfP=614{w3hE{z2jw?#CS3 zzp*^9nLO@4%msXNqlEvU2KjwQ;;%+tzTL%iz;^|gSM4cH`&X`azkp6YeXqo?hVA`- zS4#Xhp|@NATf%P#eBZ-Nr%}_c;r`Oxa!vc&)yy{ydSHLGY6x3wZSj2VVuR5?+TYIfFBD*w6p84}O5xM@k|8*SQ`4De`!e-v2p? zcAxtpKh4s#n-59)w`|n3Z`~^8`OjjEXZJ|>9LW3#+rz4}tLA%W3z8it_6!#}zhfZdEMbZf!LjU0>lK!iMnpV&4 z!e=1!i;qh9J3-XbV-mmN1pFlXpW}P*-R3zGenWw#J^7-Q68|*H z=q|1on|ESe^&chtci_AB$CCb+YT&njFX6vO+A^+>>rCqU=oG5kD;^~!2~-h}y( z%lH{IFW$$`dm+PQ`TQ=PFUe*25a#*sXE@}nU|+XnAJois_UA{iKHDU1wWS_&BVU&` z`J01)e~RI`nCsv^|8E-6_j^ymZ$FJWZEn+lc~;Xd;=b{c;J^?c1@eazI~tpbE@}B_#cqRiB%H60K7iOzWrt3 zO#GdMKX3?hs@!MzAK*-4AKL<%_dhG?{AwTIzn1uS4q@(biG=@lKj?g(>4R6_UrYGQ zn}Gk%65fI`dWr3ge9=U1Yg)2Ee*x2nt}fikbXq{?Ri?8S_Ma``p&gjRC>{y2gBd z`-kT98-FmL-~LDCS&{AS*$TYPe17X+&F43MqCEeN`TX`}=JT;Dl;__n&tdcVZRPom zK@>gjpHW#*v01aTRrCU+b=86N;$qwFHYf)es4dbJpY^d z{8oZ?|S=HA)ad1rexvZg!Qbaz)%OK9%$wvM)z zb!)rIIy+*~-dKf3n76D56+|M|S3Ry|b;e z!%>@|NaWtN{?(a?vV$O@Lc0J?h2((dM9s*5eJe_+#YYLLh)xv4x}qdvbz2XYl9QCK z$WD|ES(kUVtZR?@kX1!=qF7MY*%DQeoMf~iIZ-k)BB}YzwH4Wka>$gi$34q-EGJr~ zl){MpN@+oMqC8(O^@`r+Xjjar8%_#!!*!x-NL;tRCl*~>mC!M{B0Eu@r%SxNt*1FL zT^Cdbs%B+g%pN!)FY;jXh)Gf>Isp{H3n`Ej`7|f(5N@JxhE#1+co{IG~ts}+R3Li%RITXF4__$KO&Sw`Hu)C zS(%e63zytUTX1q>Ml-JTB<$uAvY_dP;saAR4kzYD6JhC{IFNNfO(295wyQS^IbeHu zQ&S&Gf5ky+Lv0c*fy7o!UD{>#cE^GmDqI7n8EIlCCYu)TWJNuu)AYt((2TxWCU z^!zdi%@t|dTB04XwmaIQ-TqS+v_#jeyE934^JJoP;5Yx?Xm<~FlKf_^sI0SVy~K8_ z=vE8Si{3ZBUTYHtqz4+N0eHClDr+aZK9*2^xZx)iaQZLhI5xE!gIS_Ly?{gqy%49A2b0Fqo1@7L$ zLD#A+B=#8b^8pEcfPw1EW0=@}Jcfa-cnq4_v<^f=E)x#EFcZjaC#&1IFUnq08%1Q9 z`fwobfSN#VCu|@3HpTFg+ex}d$i-uSZhQ~8YW6p$Z0S`-{Xd@v;s!8L$eEJ-C`!( zPeRek(ww7ADBEoJgw{dFT;jGClXa0b>tj*>>E=+n=6gL-87edfhEmL!m>73uXO@;a z%M~ghriz@7e#yw8vOHohD6?NL(cCS~hAC|f3q4Jdu65nf$h~ddv2{)DVw%RuQ5pg% zt09R5l4yPeVoWxAM{U?wEF4(JAthiOkC%w8b$Z`{se+P#rHYk^p>3+(fuo9(fMpz7 zBA#PxCw--I8A|#|8$XKllS1tdI<4YZHSW^P*nCnUkC5!$G>i8sE3BwlQ5P{BvnK=T zW6DBK$(&40UjX8z@epRcl3<1JR1LHOplEcSpD9!F2q(8*?D& zq7h$?#8-Krrxs!(rv=?HduU;l+(be>z>mlYPqjEkNsv&ez4N|kcVrEwYFjF5^;XT@ zvK*b4gA&~-*lp9Sr|O`sBDuo0IZOwkM1z@J^H^5s)W#OU)l(;+sj8j}OC{~MMS)Lu zB2G=EJMp{h`ZM}uF3#PVjXe+UW#-_slI>U`sznbCz5z0nA*Ov`@qU#ziplgPBbj%ZcQvRGYg-o2u)RTV>Jj-d`#tf^gw zArI|f?da@Y+teOui$%Lddt4u>FF-Y|TP!)_Jq-l@5iLV34D4oR&Qx?^J)8 z-ky)DI7-U)!C7%WNqaV5y}Y73+SJa3X}xxKE=@nRrm*9Rw%&@hY^HkUw9~M4Z4;z! zMO0_N;ksEQhR891DIR^RB#!gre<$7DV+nJ<`Fwc?~mn`Zpv z-EM7Oovk<#RXw02?bK|x8#n#o2VZe;Sc1Prv|ysy^}|iKXfq{E%!~-h5g`&Umz;Pj zlx79dt;QdxJ6oi?Kvq<}&c$<2KE0AcuYzu@6jYNdb)IaQbQVskCh0jzV;(V)rRhUu zcNu-89!X2HxZ_cf%W7%%47xO2aVF?LRWey{;e7rI_8>fJGFp`#Q)g@~wSk*36B_TY zc>Wme0y_yTZpZmV$MjMFeeTsI36R!;u8u`h?>v*>yY*5uXbeiKMynrK*b+q_p>w?$ zhoMQfFBItWOzHq}l%xqqmPash!mAyBVL|3Lw?~`0_4N~FOgc&#H;UXgQi)rvFwjto z9cS2JeTJ`gL@+5>?biw2xe+-x8cHgom2>KUalcnVx71Dlfh}#XId_Ig05wL*j=CYu7cM%!id8C<-+s+?agfSYMe&}Zg3FSE6^_L;?& z5@b)eJ`+=nKpoS|x~}(zt$hwo0wk9{^Es?ynN?Hid!GXx2qn5wb+N*E5wf_Bwpd$J zJ6?usp%>2DBOQ^Zb-h(J)}i`Znzp-FO#EYZEfj&4B6l>kD@pFLM|%{^D8%gg5#ai=rMq;)l=wPmhJ z<2t^fIki!2kB;6OmD_b{m#we4t7biW9=v){5J~3E5~r6zeCsbnxi81ZS*)6~RZVC8 z$L%F^P?>$FT8K)_lN$^%&Jl=LRm8S$b4*|iMtwOYv8zmuCmiIoexyd-iPsRG=UTA# z6&qy>Urmi}5jJhw(s?P;q7O$c(g;WQw!R1Gx@$mJ)#3x~T@q`lh%I2WX2DKRpQf}@ zV%KPTGb=)(VGz^SM?S`iWfI~UjP2!6(9_)61uxhY>xT05!5pnLS~M>5Dq1juT2dOb zOyI?9%x;l!9;2`z&SU7W*|iC`F~_9|v-)y<{A<;x(Gwb-4Uk}mW|kIWjWL|H^z9{S zI-9uNF_Z--b92msovP8fFuNJ*hCpBA0H^HeR-^O)#4?m$YjY~8cuVt5$)U9+rNvXT z*)7iyDu%6RiDSrSJl7;W3eBMIH#4Y&2}oMAq)TiscC#j1>fpIZJ;?wGSmda<$u`VFl;menw^#J36vihm|n5#DnQiMhtj6AER4GTN=S>I`5?k zeM7YB5JqJtB=N$;CnkpLvc#xl+VHnFH)YmFIV!Pu=MkFraPWWDUa?&==gujoGiN_+ z37wnGPyuZwlTDC5iZXhR!|fA$w}nk zP?@>k5}#9t(Y^V?O^s8->e5v;S}WOUa;z1}I&i%sAzzQuI}&%pHu?k`@(!=o^DSgYfHrm|T-NKXb=TTW4K1-C`+_=j}iR>=QRJ%DuFC-nR^G{ytFqEm# zpwd=p_^AK7v8pERFhQuJ6&8Vo`Oa)dtb4tOpoW~Gc~l?jJLN1`J(hGT?&6gbyU|9nLurylbQh;o?m7iDEiMXElrx4 zaP5Iu*Fp;m%UYw&cbDFYFHH8R1l+m>_C;U63Uf$#e)_T#^sg>z{>`%lJk7&w^!?`6 zC`={k`DNFEqW}DgjReN0)m+WP%|3F{8CH^xP=-y4 z$z@nc=ayls1Mr($TRMMPH9G`Swom~op4U6CMsqFGcr@;Y&6>IQNMUyzzQnR8^WbCT zgS#F6ROZ}m^jS_WiT!c57M40lvGq}$IVBi47}}8KS2G6pCxi##`v8UA)5H+-8~8PD5n9E zE;UY;tO3eoeoD=d>s(4rCLY;RW11sYYPyU`l$vwhMA`Y*ku!;r(3A`1^VF9MRm-lT zgtl%pBq40cYHESg#;#Mh*+g>`YWBM2#=^StTjEY%u-7Srk(tzQOCpUSG@k@4UDw;z z-qzH;zPu^c>sw9jAJc0j6IF2!u8p4P4$dn-$` z%I^5qj)~>78vYZ~cSDoF#@3i5uoGs%um^LjkT}mq0<+7LFoARBh+i{y&5TQ8Kg*A< zG|k#04O*-~`qPnFXA)-FP!TU~xQb#RCM4&g1m{Dy*1IxGip*UjLnbydWLjOxn2y3_ zdd)SZsSb5o%GSq7Hodj8;hNq)zvQ2{Lt6iQ4Wl!yISI~Asr~b|JJ=*xJ0$kc*^t}x zbGGihds&&OjbZ({q&8h<64^F*E2;hG+uB4W!Pu76KUbsScNu-UYTB%ovYg~$wEl&5 zN$*>7=kzodNK)i;@aTy<0ftJY8TeO;=^{C$Z)I3hCd`wGESuGH5s*`!gMcz+VgZ#! zLjQ;fJ7#eosZZF2h{H@sGye1b35mv|CZuXu51&?$kggTkA7xq96IK<|Mi|)?!~HxT zLmFAe*3aha_0nM^;4h_b&it(}{|w_3xbrbQyv!kWNUi67C184fsjW-uNvPMFG(Niy zuL|1M@71#j66Daz$l-W`WKzeSP>@VQheHaINN%1}z=@JF2tKnQ0Y3*juq5&|;7!!j zIUF~YxY4pL=IV0|dOk2m;$s$)b_-+rC=~ITOx7c@$=ExYbCd6wSe_T42!Tmj^E(;m zeq?|_QTd3DvORSKUl%Z?mETEGP7N@G&<_q!015Kx^Iab-CaFz>x)FDj_FXF_6ZcJ+ zI5FHm5hSK76&0ZEay~>r!AYQ|r1zC3P?%yG_R3?p0dt;1Hn#F~0*H9-A0<&$XLlyH z%APE`*&DED%Rb~y=y}Xat&Z*!3gnU`kx(v4l>U-x=c8V1aUTaZYr6DHc>hMXRQHc{ zT8~EXPT^2eMz>3jH>}^D*J-+_X5^gR`K!ZvMuIN7y8;ubLvNMhzuvCXRMjy`9xqS3OD@rsHs zYe)CT=?i9YhYsl4Q>puInw{yxW0)T@bE1C^ZJIMD$DFt;I#Dz0Pob7G1@z3F6HDJ( z9!aL>pn4bfYF$@aC|`Q?*O_pw>7&j%&fys@&HOT#UhXb}*j>d)bgujgWg6poovEPb z(Ij_X$12##jq=F~IzzRLK8g16{}ywxA42d6YQ!IN#chmEl`#)NF!S!d>Byx$*SBNP zVF7-~n3I*i zCpwOLv9Q3FIYHA2xt?F(^P^i%M+4|$_~7EZ(T?N8rz9{RtA?EP>ZBzf;+;eD9w#WD zm7psG#cQvaHv1NzTuCyCI--U?;y)1XgQsrwW=j2oiiRNPL3MPblarB!>SUy~c34$u zi%%$-6JNhryUL_A-;viid|*`LE<3Py1zHbs4m3>_OQt{&E_CyCFRMc729XmP-1 z%JVWs3)Rt)&cPJzIdy3dtv2dEVUl@q;Xfi(--GsOO6s6{dD?Q>LiZDIlgQ_fsS zj*1kf!1PHjyn!dbB5ROWW+Qwzit%bSddh#<^B0U9jsE0S;xA|@Gijf|phf?5#wVD4 zwfJqz0C8VuQ!!EB9VhT$lB%nB#EGM0HEpL9=h9?4_20NB9narrHhrfstGsMF6C^ZI zsrixhI&R?;-7M?ezCNAky8@H%#{ySa@fV|Ci%qHH*5jloxR1Dt4RiFCxtyqzr#a}U z(G!pdIv4I*Fg`aHJv=CFquOD&Voh{*^BA~1Jc&B=m3$F)*nnt`7S&xL?q@ydCgZTT)VeudeBgv%F6ZMO z&M`Hg_`s=olc22*m|0O5t>>c>EN;TlaC(v1%iCwd$nkx`ym&) z!p`@c3zJRaeiC<`j(!E25x$P-e-SX@lXzRKH>YI;s_3%wL@lYwcL6Nho07^ zUmIH=sDTEw_G^Vs1!o)tku))f z-V<4Zji9X>E2k*vOl_;XWJ~r)yTUz6GI3osN=sUScwJlBVe40|ao@1B8I*%Q^rEz9 z$8?UCx}7*9KAet1&nl5yhs?BLnb=!Drb3OESrhK1RyY`6@ltd82~2X!+Qui1m=-sp zhmGiDZ3Y$RjvM)S7=gGNI<)oHZ&J2fad6i4;8ar9(C~Y@&a>3@T zr)r#|B!Cac%O{h3l3KB!Uu-JHUj9Z~sPukJ6HThqq`c`hDu+Q>rnS`qR-C~oH60`2 zqDM!x^L5vwBb86rJvz))H$Ez+s5)F*oieJFWy5uv*wUK(%}*_ zErIQO6i$=p7QXg0zHC@On#R2h4a+cVig7wkQmL#5)aZ#FY{1}Y_HLcdsL?6db81nJ z{g@g~dLE8bJ*mc|cJ7YTfu2*b8>(@1oDM{i&Z5H!I_I80cVd1smw1>O@JeCM`>KnKUa1VdNJL}0&0d8K%tU7u zxvI@b?R;F3YdYI!j1sn~c5G#wVYe;ow~i9e%v!P04X_`G#2NA3Fj&4CWLLYb*)Qwt zT5nE^IwY{lX<=bggK0SGOuf^3vCpKIuB^S=ZdM3$nZYxWvzWe)ZHg}xpScK)%r{>X z3aB3gHIf3l`=N8tpnj~>ND7$jcWM)AP(P+>Bn9;I1zg!yTaUeBDI6@`(tYu?cBP6K z3rC)b3@1yKmscs`mg3Zw!8~!qRceEt!--PfiQk6npEb zORfUgwxSfe9=yafd^Z)zeTmOva0wFI{Gp*NO9|S0K1u1&auk!h3Jv~d>p*R7+(~Y( zsg1-I;SIP+G%4w=2P?S>;8b%*QhdW5Brm?1)ad8=E__3O<^V2f0hFZf0+<~hi5`Ds zkGt9pgO|xXouye$rdZyI>~+AeeD;*y+$?#D@1wKhu$7>5Gp~GwH_3#F=ESUpmAH3q z$xh<#wgp*Ex*5B>u^d|vF~69QsKu4V8-Jn+n~~RkXdh$~A7`SQtGRo@2T58Y!|_72 z3tn!{!;UU<3!AOHoebG)*k_iT?8qqP=4KtXB<9e{cM^Z5#3ChweD2mEnT@!0Fxio` z4qejZti#zGB&#oHDkG#d7vkryI~T&|T))h&ga7&^yWt64ozb+$pGTzojsz9n?9JMa zBuXlE5-pLmLdS!Ne6WN6g>4~jd z6Is*N(SjqRBCXN(u4p$7g^t|W+Z(}SPbW@`Zi}st+*?3LMPqY)bF`Zf#AAEsorK%c z(-~=P>S$??QmDDNDbn23-X2-k5$)~5i;&S4!e3F>gE~rwI|_`ZShTk-MiFTEj2%Xi zwvOiR=-OyUtOj2LQsDFz(g?l%tdk1SuHYUm(%jxDfU7$0Lmncv(Vlf{b)chEWKBtZ>jhtyGs&CY8gvF>OT>gb7f$0E>eq&vE%slBPAIl89CSq^-( zskYALB;^Iwop*A*MI$E#BZ;Y%)FNH$VuJOGIudrRi?H+XYEWBq845xgZV#PdBF;}& zk0-#1)a^YuzFlUey@y`R4mGznbt6MfZLuCO#p`)^SsR7f)*R{VK|Y(-RyEg0D(dD& z^pb+D5b+BK6RaDi{76WJ92jiI7T7q21eX`K3S)nen7U}GYcE|)h^Sh%ksC%Pa$aOu^ z07UIv(6z3o6*+CbyFyf#I4f(3>h&@XY^elXYDS^0jjrv9qLRz{kW*d0xH?oAh6+2Z z5FvqHUuDgPRg&Fk5m0IFQnK8up)xd)Q(0QQa&c*OBvM8G#a6q`{+-JKa-5et1vW^?1}U^b=74M@)_g}qc+8?u1Qyd2gRK*fHh9y| zBGlO-Ds@W~*0io!gbUhSOrxmozNW5<8npf8)t${Eae1_-xx1|^)+tTcmUT`dmF5F3y`FS1KtWS73kE`5<*`XamZMRw_n?9vz6 zr7yBeUu2hlu3h@McIoHZrJrk;ey&~mxpwL2+NGasmwv8Y`nh)L=h>y7XP17SUHW-; z>F3#{pJ$hTo?ZHRcIoHYrJrY)e!gA$`F82&+ohjxmwvuo`uTS0=i8;9ZBDyE!*=PzcIm@*>BDyE!*=PzcIm@*>BDyE!*=Nx*ri`!mwtg=`UQ6B7ucm=V3&S@ zUHS!f=@;0gUtpI$RA3iBRA84sRAA3QsKB0sP=P%Qp#pmzLIw6rgbM7r2o>0~5h`%V zhhwwrkPkGx&KKq03VJLHgmr#9QE(ROOJotkZj zb~}WITkqP*nSt}{f4WXDB<%5drE)*RmB~8w`@D#Tl&&A)R#Zmr=x$mY4N*xa)yH+^ z6!NqVN{ZjC(Dj7{LGu?XoHKvUf>6oJao)<`oqMg9{4gg(Y_5__h2A zfk?}`wO!YB5;^V9@Bi^fxLqg$nijx46@P~{El41QQw3iN#Q!FIfVh*IHsKWDWBJM? z9E<>>y)k-{zeuFMqM=?7>G!lWnO;lLv`NPR-QKSO#J@?*&*R%}cnXYNsCvfitjSSrB7mP&KcD9I-N92xm9W<^hFRd??k@El8$KBkY~@!xFtQ;}!wdQF>-@=xE1XVMwzfPQ3?bP+DWNv|%y%gD}3t&x2h zDc@N9_geb>l_}ro%Sio3@m-o0Zk{kysg22{xa%L*Qoh$Te3EcB45fTyAfRPznK4{a z`m~l)ya9!}1B&~5+?yxt3vbLQ2{&uIE48uLR%)qR9^Rp)g`2eSqL;LWN-cfChL?ZW z8{V#kH|+SYUeN#MqU~Dah6BIr-SBk^r$0gQNISU_Wz_e%sl6NyAUuueAkAEfo4QuV zVfb|Ln+936lBcys@T(`8ivJUN8Po#(8z<}$ypL=1!mno3gV%FH<|eHkGRKhiZOJQb z)uR2HCV8Z_UH>%FHxkX1LzP;}0q|_(xC>a0N0?_lc-FY^EMcAtm}d=mZU)ab$uspG z@T5FWG4q^~U#X?Nr^xah=2N}sL9JTnv*;I`w};>DrF;^f@NumYXPPj`Q-8Lc7v~b`5CX!?Y_w`w(bvXWExC?N;zvD`}@knRX@QF4t*8 zRt;scpVC3zTcv)|E@isqpnDQ@t0di&mzZuAc)uX&rYu)vF45__=pzDozQeRj!W+j? z{@-WXQAu0d1K4encHka`cCiQTJ3+gNX%~ZbKIlBgw8t^+2H?ESazD!FX;I&F(S zI;B2R$1&a2pj!>P3nbmZ^PnqjMU-h^JB4wr55fy>*#ANHvf+_AUs3c-;X-{ZPaP1?<@MXpqAig_=nb%Z`^RVrcs(l{&sBf{f|=Gw4h6T&?7!A zar~GekN86#@w+|Zw|K<&dc?2xh%fPo&+&-QNF1Mj(j)$`NBka-_^lrCeID_R9`WTK z@wp!HnTg}mPI<&1@rd8+5x>nNzTYFh#UsAbBR=0FK1+{BUwAdu(eJ%9d`4}IFU z$9Fes!^0cUlR~>$0^bzCJxuL-xH(OOA4!M5s44y)+ERk`!*9cP^gok&`rDuvZa$Mm z{$Sbg+0}$6{0iW@Um<+*IgJ~KhnEcx_pR$`x-+^kIJ+lUd`DY*^v3a!p{Kj~`mXNI z=4ek(XZQ8-qmkxjP17OQ)nbJs_v+vsO-R|Iz>V)z(vq`@V5CF5xg_lpZ@hQn9A6=p zK(It%Mw@ccKHT*^vFKVl5Y$A7irI*NMjE0*F(hNkaU~{|s30b_ z9QV{>{KJFblS))5W*fz9;lMr$>{0`VWB~v1n?nBrpRK8`)dGE`W50&bud=c-Mb|qY zf#C4)*<-l(g0P^jW&C~M>6CG$#7WDXT>1drGbYyHe*vzV;o;LKz;P&Tc=*q^2^_+I zDs@}h*U~vv*2Mh*Bn0;VRlii|I^|`^ew^kcG9HQ|qhH5Ex=k38oYcce*DvEU>M0$2fS`1ZDh$JxnKy`DVy_%2~djmh@9jfp6HPN487h zahWoG$_d7UJ*oOgIUFxX%E5R!QVzt+kpg+BoKkl2eUR_0@02azJ4KOWvkYgPWI3RJ z(i>H{I5~R3M=6(-E{h!PGF~s2l-10)p6``>FJbz{NPk9=qezA`4zU~sjF)SXW12-D z*%mpnEcyUB(nsJ7-;qxdW_<^aBmGfR4)RbG&e$d82po}e1R$5HkHG$TIRbm*hqqm}VmEOInhXHP9gUYqJ0SULd-%SK?}L0F z;JdI(@a^TW&EU0#GM!DmPhgJ`*o&nQ6}_z{}7q4){=D2z+!0qL>< zKgH?D2*{ogo-hQQ4EQI=If3nE>_PY=pinpscw-MDehb1!Wcsl?5x-f6)4*fwPQ=F$ zKFsl(5Z^AtX^?m9CdAhxe2C*)5nnCCX)TCvMSKy$2RXhH@t{lLw0^`_B0d}8100`= z_)Hm2+lKgD)a%m-@8|f8U0TXX8BW`a_zc7!L3p2xA2WpbLo%EO_?RKY??IUDbj(4- z?~>s(*uj{Ch~I+n9!|d#@tb8hJrnUe5g$W%H^*;6e7g*%=OTU+;_DIK#qq6(ua@C- zl;4@jDT@S%$|PLi|p|#}Mw~_)Um!m*Fv}Uul~VUym@?I}aM0_RUvk`9L_*}$i%JA4?#KXqumtKN@8*xXwpf$4p zXuz|!9pf6*gHxbWgLEe(ow27tr(DLL$)b3KOJscNX$m7Q%ydY;Q%br58HV`4`)5tN z9qsLtGJZlS!u5!l#^Er+#J5O>$Dcqr2kBUj2^k0n5uc{SUxe^64*vnPVw!dxXlPx0 zZ|8d}-&^?J$amO=f?Xe*h*c{zPbkZ@_a{O_$lfVDpPd+>XZoe5OPsMM@H}tgSc1_SO?o9pi$MzE zxn6m0od}I<8m+;kcgtr|nHHENX_DT?P7*j1P}V7r0nFUe3Y6zY^EoAAKBxZHeAZqz zpHml`&)S!i=ii&pY0sI@sk@Zt3(e=ilge|*d`{VJK5K2}bKqU`IpwFy^L6HPYRr62 z8LvFwY(A$RGoRC@DbN34J_mkaKBs(SK5IAOS^xdD`5b66aRRfc&l0R$VLxaQwv^Mhc849M#(NEN6TR3bY~Ock zzNDefbm(s+I8(-&Jg-cfvnz>H7zxBH+sk>*MQmNRY_PXWXr?vKJ)!v|edF`FZriqP z9F1pWW=%43-Flrs;>1cZcVEk`&j}0BKoL90dGo$QsheeEzAmGPVSn==fg0!wEvi+p zBHUBZE^_gr1MQHu>{K^0;GSH5RY-YF*310tuZ}vWFg2arKKFQwFcqp>g!xv2Q`sp+ zVdP0E3h|POcyYkkg6>Gg_9>b;8a8b@oLXTfxWjQPyRom{M$A-z<@Iss+1yVgypb1P8#|)L2850RM6Pg>9_Jd^excluN*=w^(5$`{t;B_XTQ!>{W86V?nXWO zYGdd3iwRSrKs3De>ri@H1<2ctf9Uyq;V{H40S(a`0W9dfUnc|_#B?svfE<4Z8kFZ` z_UnlJ8%-+G>OTV}_0inf)E?=GA=bX9BeW6Y&MwHY2hk+QQQQ|GFQT(W1iknC%s&mZ zO_xBED%11%NrOZhVuYE%|LjM!))3n85DF^<`A7qk0?>#?N z{g4ATv7F20Njz&`Y?b|WLBxB{&x);N51Lkc5DCEhY3N4meIYxo!G*kd?fF@G6lhtn zPvnVc7{4)i8l;f-o*!W!z$6=Y{(0~DiKAiIm4zC~2OeKXzO^rD+CNoexU&<_WJ4mq zxFav(D#yJZ*CJdlzwMOg9oEQ!uWM-o4{O?rel4gzQXmAN*@X|_5&vO z8s-0r(u5zR{YckdDq+`!`hTHi6Mm!iU|_@Ng?^6Zeg45f=~G(Y^`F-Q(APfPQ*hsb zeNQE{rW)?oCWN24F-^*F)pNAJL+*{b@}&na*Rnt}1GviwxBt&tCh%tfKa=tACtNA_ zm5=o|X~oFTdwus$U0?E$HUORMl=3{J%d?upDI{OX)5CqhX#jq&%)_<3XXmPCNY5k- z^m_#BwlO7q9N`uvJcO{=YsL7d5f=M=ID8i2B7u)RDB+DaPN~$cdxm6|`Ml-{$V7Wm z2K!P|d;2Z>Qphg8`_AyOzWb*3_LXQ?l5LPZQW^GrP1;D`i+Q~RSf#^Sb`a%JMK+53 z)1I@1a(`9cD&qgZyWj5J@Cx>yZ7jxwa&ADzX_b9_`aUzQnrxZu7-f_>|79%`bjqQB z-9|1j=sbh+7j&+AQIFe z+Eq75_^h9iK4BYJuRmLbGR-16C=R;sWqX(=@}KrH=)rzL1GaL1rS_=<{kJQ2`;f?c zEbk#jaI;o-b~*zQx<6QJ#fZEKr1Y$MwlzoSySV3T2ABHhFthJA_f``XYWD3N3MS|K=6S) zx<9350dG9&(=o&$ZGdQO!aWtRgMbYvd~>1qXW(08oszPY0QMMQjS5}^l@DNIuOF2c zWNrnl4Y06+hdP|M3a}gnhPt0u3Rso`+X>jU*w1lRf$anAQox3w|5k$A%PH`pET`NL zC>}nh6>=P|)Mh-mLD*6*@7cT(@_#&7sbx!FAmu#?ypIO&$L7_C$*uylKNC7hse!)7 zKyQ0QnO0GmrVd%l6y>=E*EC!xLosLDfO|Wxelrg@q``)e|BsdY-!Kg@ zhWwvZ@_$1)V95X3A%!0HhF+5n*bxQRg0}Ai!1kMVaP>RTSqtGf=5+GqHM8K8+WoqR%}yBu^adn$E*6F9?kuV%W~ zQ%QDw`HPb7?AK+P%!2%XJPNv-l{}!|a79S5<3_gQt?W0>nB_KRw?nxdMH%GcD#lfV z3%-fgK50Eg^grRBw1W!2X>~_?Ihx57+?(HUQW=rrxjo8T8&j@%HjenJ)F7 z^E}0)JR79mrz?N;Q4@4FKD|47aMUciw5Giv@10*3sbQS%R5n2r3OQS(0p*gJr!Jk9|28erQ@ zzBgq6_99@L6d1~9HvIpYn5nvooF6=mG})wo?BE=~Vsg1gr|MDUhk$MW*{$rWq^~_S%z7mp(6L3VvV8booomhJO!u zrsB6}z7M)3E_5G|bc5e#y4Ytg=-$S3?_s)apbMMHROQ|a{;!+%H1iSQi2A@b0Q-Y{ zhP};XP|NTB2{nV1urvh-gqTiZM{npZ_Q;H>A+f=Oelha6%@W2qm ztBbV~*el+35%__fj2GbWF6cn`UiY{oglI9D>xYT)RwFH4-18r+F~3*&x?(^~m{f#Euj zFH#sX!=D*^2N*}^@tDN<^9hCT;}R!@%fiUlS1f6_a9Y@}A@j$amdh_7a8Q0}Ec;hE z4f-$vrR}`w6vkn&pWi9%Ux^0TJ%B0xzhnwvs6QW`H0`J)3>fOqhl>9%sR3**V2b}Q zX$5RX>6bs;-G8|jr14S7Qy=cY_^trsyCQvjhcp8UZTOB)!T)@y_|cMWfV}}&tAdBR z@Tpe-Q|!OwC}7V6ChDHF`I57MJq4Ijk4mQj_9$SA&niWpJ_Y~zVVcRKv;nZDWy2qw zQeeG+EeGtF0^17M0>BjgmhJ^?Heh=cJot%Eq5b(_P=TTEfAPnFZ8l+x(*S!9uwDh0 z1K7_1Yf)gufWiNKAlfdO-^Gym;^zPpb&p{v`-`6dESJ*4@8kU&@;TYRl0IkZ$I|Cq z`g`Dj_t?D{OI}g>RBEQ^TZpk_R-?Udk#Z9Khkjf%{@96YAFji=PT)F&<}4Fe5LXc{ zxMkWa9YB9Ouo2f*T)S}X$8`kP5U#UuGg-KDaG}4Fg8oWMBQEq;Qa0g2?Mm5=>i{mr z_7)EyFKB;HRVuncnPfi$nBxBy4+8cWU_k{Bbt(IPz%musZouGw|L2SXLwRPe0_=nW z+YeYNV22ghLBOsBY@Y%nU0({=P6c)puynw-D6r!g<9q;EzXBTq>}|l>71$}jz7JS~ z0y_iP3xJiIurk!=i?#z+pujQ!`vPFo6j(N3>jBG9V5lP(MVAf#_h|(N8@%Xdz>X_0 z^l>h_0kA^~tO&5H0o$v3@Rt{JIumJ^DU8!C8K45(ctRAp80BcoXs{wlj zuzCg73fS|2l_;<-z@7puUxD=j_9$Re6xc?<)&Z8Lz%~Qcv~2i&nxBag+}@U@*2uPO z%10EBx)qakYx1MAZcW)P>(-~90G*w9FK;#KRxaw6?6-@$b2*fV~G;uL&#L0@%+0Yf)g7_9eh-OxWUsfWiNrRQ=y!z@Yz= zxe6ZYZq_4!Wh*e$zpQ%z(@a?AU)Ef}4wx{ie_1mC zQ+0)UpLGFX+f2O0LzUX3j{w_b!pfk7NxuS2*q!v_Ww6mnuLIVo;B^7^9l)v;80yue zZvqxpUfMqE#)aOZSmks~+tOA2Cm~7?m^?NVT^fQ0?@I8Jlhw07`dla}^xv|fOB((dni&|J$Z9Uh{2aIv=Z zq+B=Pb*(P@+LHEBxOrAic;l?{@T;>>rfzFX+8-4>*z3g?EINSs{Eb?clt1fjxdxE+ zGkv{i+3<;PhD)%f^f|Gnls)(s=0-oSrDCi%lt=fc@DASR#W=Yh>jK3*Cq6d(Ony+V zGhFZ}(Uxl`nNMw+s*M4?z`$i%Hsm~jv^1Zc3+INhO}|+8LBD-3;-pQ|`}Z63U_+X$ z8!~(nChs)K zSU)u8#`@p<`;DL}@-Jo0ejaNP^@5JznU8mrhf9?36od;jRnbv{6 z^V0C%zAaeyQP+X)!Mf1iJh4_79>iqOarD2%TF{>dZrq@0H~uH=@GEnsg?~Py4|cnW z?P@mhMSeGhH(t|Nsf~Z(fsJ2>JxzX%;upN54MGnu-T&_AdL?}PDtbnn`5g47e3xJn z<}b#l(cCuX32H!J)N$ekS@6w)IYFWanV{Fn`ux{M@a#vrQs#LZ$pRSs@p#yG3hLvy z0cqbC-VU2Sa{r${*Q>9sF4~WsvX^7Q7kMrDvNnKs$ooZl@FTudUc?tXZvxL7C=R#* ztV*~@T=GChHfTfER?-)ua+b9w&U5}fhl4=>JfSm{Q-mtzHIoHmy&Jvt)D8wsDoQ^ zZGo+PKw#9$}-HH(f3(N1NmHaEy|#; zV`^{d7qxQG4-g*sr$Mguu+u)mU365-xc|iG#J48Gd$r7E!|y&rw4{Abx>?q*tTtKJ z7raAt#C(T-%(m-NQ7^x&P3td%?WACh9BWT~nW?>a2Y$vtuU0J6O>VZ12KSEhg+4u$Gnf? zdHeNGB*Yc-^PqbIxa&4-4Fs_-z>Th0e+BL-;8vlG-0-fI{PQ&6VSMe1m(F;Z(91_R zeGj(s_KY)fE^^F!95)SdZ(lorJbY2hlyPca$GpUN`M`VOy32s~Wvs71W!1@;Cm62; zcwdmZp74xr8x+PG&hh?BuudO@FYgyR%XoOcmPL}z45ywE zYrHM=t%nH@qMcliwvGH!yU2sx4q+!3TuO1UL$twpjrb&h9QwLG6;HM_aZ+d(eYva6b=-~4{4;uRV7uF2(`apX*(}w*A2663#PH11nW^UV_ z1HBfKN90$u6M5U9n^h!(EW`0_GOw90$uyZSLI*jbo&p~{zlm^$S#LA3zMOIlbXQyI z&EGN|J^xq_%G-f*;`~qG`R{Q=AN?lnEbJ&7{&;hLskUW9e-_OpZk7IV!VBZ!q{44y<;JEM`j2YG{rK9~17Cl(_rb~JYtt{FK9=y|l6Q?up1%)&uKPc% zJLJJHq=uMx74t^_^W#kl?-2BGGTcbtt{L+T$FD{B;8$M4_l1ma3XQ## z+h_8})fOB0vE()WV%7uJ4f5d+Ql62rjQfs^9}8Wne8y7!FGBqez!vbiM)*>c59&rG z+OjbEAC<7#fZUsrvR+Ti;WmVGu;)U2V+idC*0#)c1aaje&sziJPZQxu8<+k7@&#h( z8^AsSeX_oe+rH>?T42KyM={^~r%l(BAC!HRa=kwk9)#S-wf~TL95P80gxze+Cm(Ss%Mp@z8L%BL3$f281LLDVtd@2^<^sfJlKudz z4CDPT^Z~L_?gN%QpOAUV(CvQ!a-k2SJtujMW&2N$^RHM}IfJ}wz!Trzk?no@db$59 zB?a!(+rj!9@Na(}D(O`WTZZ*~}a<>KP6JgtAz!zKQx zNBlmI_(6~OjUMr>9`V&4@dY07*@@$4pYe!4<`KW&BYuZR{3eh1c8~ZPkN6^w_$i6w zbIy9iANPnq;1R#mBYv|-e3wUjy+?f5BYv7kyp}kA)(MaJgC6m_JmLpD;$t514Ic5u z9`Qks__W0FGlx9l4|&Az_K4r&5#Q?(zuF_d#3Me(BR(T>{EU+x@rOO)_jtr_^@#8D zh;Q_WFZYPg^@z_*93MR85r4!Zey>OTHjnszkN6gk_)3rXe2@67#PL_0_J}{~5x>tP ze$XR+qepzJM|`zMe1S)NcH;QU&v?Wi^N8Q?5x>JDev?OhyB?38cf0jn3!abO-Kf#r zt)@NvGUgMW7X5ayXBuO%3ot)gLw!r?SJL;_s9%Y3QjFj#On--iXclWX4J+SyD=GPo zmVy2;?YXb1e>iI)rIU0%s-}MB_qGq8)@A8S4c63S8bizl59ZeNrKgH{3+$zPP{@Kl zxZsO4`dn>4=E?fYF(0R0*jrG7kG`!5Wa;wIcVzqCp3}QwBWR(Y-uLnx{r!@`4UfFr zyJ6dJF)#el?5|*+3iKPPZ!PF6->TGQr1uuYdjLD~di!26=Yu zYleJjkgst{O<(h;x^&q%&x1n#GJLo8L5%I1v|_+%Oo#VDK3YyP>H5;s(RcN9ePOK8 zK7c*a0}pEL7$;<5eApUZjPW|%0jF^(bU#~;Nrz96oFac*mP9ijvMql|3-;q}xB)y9 zjIL$Fr#BlsDL=@+&KI)XBgUbW@9B6iXFAeO*TndPY>6&a2av&B8zJ5pi|Mp<{C?<( zWIDAU1&1`&Er!`1p-iMFDmiK9C*q=!A%Nh7aYubjV zhcIp&K11=?mm}t%F^{%Z*YCH9mNNHGHmS%c=z_1<-$CUB-Mr4U#QYFwV*U!_H0X$A zM*Igfe#HIz1`ow1NdE6`A3oBzbylxfBZ5Bqz9rWcSTFtk4{K?#jSTu$B6JcC?-<6r zEx&uC|GTi2CasdzuEOaU&wnEi?{EyC9k^Ued-z*42YzPmSN77lF@Q4s)Ay-9if=AL zw1Q?Rnwh@50t$TlAg`)ftrU_6L6bZ84tSkp6P-hFL!Z?8EmT#vFx=|1j{t zEB`8JZ9sV;ACo~t%=NL2HieHNj68|CIGO%Anp=1ndBuL3mxw3cVG-YV<}}xaw`1-F zdX_Z*SG=DB+{dvmO0lIguiP@2weTwsXlY;mGwR_bDcR6f2Fj(sA9eNLs2tR?C;NN^ z>pm76wUkFL^0yp&u+l)MM$|bx6FuEeQr)3A6^48_2-}tKo=Ja#chCC1jdzNW7JhRO zx?H8$QCt6CLD%GiAA(IjH52~ock3ujc_v*UJX?e@4~u<>G=Her;TiGGWyo3zSsDc$ zlF`Y(eFuI`$usQzT0s}@eBrq%p6(x>m-hX^dz43muEoZa{|4wKu*(lGCYm&N9sdo` zOODBJfF8vAd(;m7&mpURh0gn7-;J8_4N!d560_~}?H>)^P3(ym8@MT;Va_J?D%|pM zNdO*7a0PL-;1YYh<4~snXrShBfYJ-n1}gDu#Rav=AF3p!3-nQNKd#O6fFHd=Bwn8o z()@QSLIt=C9t|95!Ch?Mr_-69CXkGD@&UcgCDLRS$(Sr+kyQ>2m2k{O z12X2Kow#2#h&0HCNOQ>n8FR@o+%F+<()1XT34Epipj~p-h=BqA3N5ceAj;ne90mYl&_}t%4krVRwhfYj2ikEDwBVnfCNPM=UZ$4PC}UE3 zaZe$A0blS*IgS8Gry`x$)I_EwVp0o0u>l0PASP`y{&jIodL}`zt$7;m>De+M(xf8| zi8GFX>0B=9#5BDh|8&{XiJF0S00B@;KZ1Mu35g~NuqMY4RbiVTAZ;^CqRAMDPozbf zF_72{umofJ0TiYSfJ8e92$+r`7Gs0>7v>mx*^gqz_EAg>|8&x0cc_8GG9bQ>IrcaL zl;#ZXq9P!Th!IDJ7y(vQ2I(yW3`y4+`zg?le;|;tkpje-((I?eZZ)u%11BlwgbaxM zh&ooplX5-mV-Dm7Duk)>&L;y**#Z{N4(27o6Rp% zG&gH>oDA`3!&i~%ek%^6?YyrixT4;8)|NLl2Upew8z{cItwZp}8JQUT2`ULR;_?kOIK77;;N3jJ38;{2+CtNNy|9O6Nd~3nFi&n zYDHar?J6O!$ed1F&tBbab!Da1)dtU1E2?U$MJiK{n%b&ch>j`;!D=g(8tLk5rJy?f znu^*b%U7-t@l|ue^GKg7Ya~rP*4Nc7sV0JiUsthoMU4!~aQ!k7qPV3TLC+%R3SMb# zRek01iu$TDS#CP-mA8O-^~zgSc|TK8yE0Oae3VxR9v}meDjG`5>P48!fnZiV9lmNs zxj|ItL-iVi%D#}Xh>Z*j2iN4So z*^{%!oV>kmFgAg>Q*kP zzqPcsf6>f_7Egsc3QR_k;`{ua{|f{bT7 z6-0>d^3t-(hyo;7EqIq!SJW~qt$gv)NZHC2^|dRjBW03KMUAMrOIMZFmPcwzm+Ezk z;dE|L{cSZB$U>d4w&fLYI-t$*s?Br8uNlsnv1(R;*k>8LnEfs&p~rF^H-%>GaF1>S|Wj zRS8Q}Q)ICV2hWISCH513F|q&#>LB3S6^DTEK*ikQMSy+)2zK_8kl54St;JE-DW!SeDMWf z#z`5>RBGO#?7Au{m2$ZG>XnePu4-xJDi{pzU?%Q2ud1pSVYpift>Ec=eU%Uz} z5yDGqU>UeCgGJDNRb6d}?r^2IaJZ1}HB~^wy|lV^Io(mY#l4PQEWyeutINe5mP7Zt zdN^vrt*e)J*pmp?uUtjn14ytHp=dV-pM2NhI7S_iU^_lC zC~-jt=o-oceD3JX2VwM$^hZtqMxG8a`U^lruGT>;qD9Fxg|-M&Uo0qr`N5`+7Q*R{ z-m?yelu`a<3}CZcuAdFjHQKvYW@PEkXpB*UcXW0K-Quds^=K{FCRk|Iot<|RgC>Ij zHn^{QX-n_GWJ>u`A?hx|?9H)ji-+f8;>$&M_5|r?jvNzD9 zEt02E?&!~oe6-jzLPYX~Io#2?4(f*8=rlnFk)jiiv6^}w#h42HJPHgk=sb#VQSZGz zjj-uo+<6oeYxrP^Y{XO#5C3KlVF_G3;79Nlzz1M!8B>C zGYFjhxEHB79G?UDe#9TayyFb^(4I&tZd3 zrokx)*$yH84C2kQiq|LQ>(ub@5S6P+8}O72z;ggs%ZT78|Dh}gco@9STHw%g3eF?> z%@E*bd9Z%;6HMasn$qt;hxl$~I;uR7J7qWEN9^=%)QQG1;GT4l@igE^0bgzC(I`XX z#1y>*k*Cxg=zvgLaK_4i{g9rldD5}P{84H>@WascRy+N#r9V05iLqNV{%+h?$3H%S zxlNncZ=BD9Jf@=j-y0D8@XuD~P^N5Mu*X!`|9c04H9)d0S7cMpf3etOD)Rr^9HeQW zG@_v5^J8)lHlK$4{|m}AWeVZnl&>Oj`BC&zHgDH8{nYc-Hy|37NPM8je5Jo)b~JW20cGQV=c zmnS|pX&~!MlfQT&)5@QCiX4w21@ZlVzY)^FRSmG8m+@)w8opQZJ%{h`^&+0?EzaJ! zDofL{%*L!1E7P_CA=$7(VkKRd4Cezb(zP>Q3**~cZ_ z*{GwWhuM%<+*|qH$oFEt=kq;>?~sG!nLPzd4SY5MmD6nSr*J;-NuJr6jAxN2=S;jj zIYW|e4wqLB(vmzm`}n?_?}L2b%J%`fKda?z2H!oVUUD|daNa2?M@~QE#p25$r(M<4 zE-eT7r*hKEAqV9myqkKQe_x*fF zKBydK?xH)=?*yMlGru#T2MXiuZ^3uw7RK-6JMtycbpfwLN!KdFdB7uiXSOh2L%g15 z)~NFD(q=+0s-4U%WMIV3!PEbBg)3GhVBOUyFs`Y74&x3%_cnQ;BptmHd^<@HHox zUkT$CTlj@7{0c1m@-6&=OlKO>DgHV*MTW0A%KWk!FU!I&)50&!!Vl#^_N?2>6{jVg zE1Sprf=CS8S8vYxXkTt&Bgw_?sBSlK~AU1 zbkomB{OPa@wS1=|pA^>1clrs&I~K3k>97N{ymx8Sp%+!J(|0hREu0?uSz2StHGQ)T zUxPdOjp>^hzn}5@EONyxa&<9Yi$yNzCr+*gi(KW*r-<+Qd=K(Ho9~%)e^#4L`pi+} zhW;pgO{0{1+F6M=?Uc&*S#8=$@HOmzmo^Q0CAnrGUsRscPRRH<(H9_sVcS&)Ua$te)LmJBKB(quRf`6hX%LZ&4r%=oF`OW{1|f#jWfK+>DK zSJIoh8~K^0;O~@SnywZ2$S>8WsqLIj`8Gr9)616l27Tz! zqz{|}GGCYN;rkB0Z{zzGx<9L3HlS%YZI*JR?AxVXwn>JI4YUrR?ggpQMC0A}r$1fQ{nhW( zsZ*y;)vbG}?u+^hnSU;uFzOGAo&fs$o@OWfN4VH8a+FegGLb)}$@v%;!+%PjN95ed zpU~uBAK_y7k>qwPu-uM$&4m{x^lvnl@i(Db{Gc>snxRey%2Wi*Zql$n}U^H}VTLxlYDKNR@r zahg%h_&ofh^i_&nIr4ioePPDu?}{AyU+F7A{vAy&$hgQ5Ir2Bvn}hrjP0r8w{DR13 zh@21kLz`*C-tBWJuZ_3uGmOtqi`+etL%T}a zHGPwe&yR}SxX6tmzgv?-U4+j=Ue$~KSM?4fzf+SNWPG0VkbV6k*9W`nHMw5KMUYo= z)E;U_7xK$BxemrfkXLeTA{RqF=y&>1+;5LEJ`a18T)oKEAYZSyit%}~-g1#ELw>cU zubA=qe$iJTav|hbYH|U_=WmHzj>u&rzf6D~hP}Wt zz7+4l+&`!BZeW=o6z>8a(|Gu0$FPOBEdon?ko>j<;4Y1y2aaj@K5&hO=YXX>s{AZ) zNaJUKvo$;oEc3OJzlS+%QRD9d&uVxIcuK>Qz@r+T03OotIPfhEj{$dTcoeur!*_tC zf0aGAfiaHgqwolDP{YH(ehm)+do(X69T&3Yo;9?DT00%VO4xFjsHpEwfiQh7|)sr6>(|Foe&3G&PM&oH)nBp2~ zp`;;7Q7&j-Z*9x9ueY}4h+MXPy|pdFzTVpAwXe6fdF<;gdbKOnm%fPkK>CgBOrK|L z&WGu9A~%ctLaROL(~QmQN%~!pn?im_lbc{%)D9l)P9GDwQRL@pa<>_q*RgcOi?VMB z`7#caeFKcmbwzrg$lXGIhNchwP1sylq@#b8zE0%JI8ypx7h!YVlO7Yf7Ua7%eT|IG zbx(SY$Wpz1(APWlgnjnu4mHG@2VYs*q$$5}Jt;x9b^WA4`u8(}^f70ihLH?vBcaL$A5Bwec zS$<07CXqj;$&E8Ea*G`LU+F^`eI4K%VQj7geCU5AH;DWZOx_FE4e80`!u)mzTkT=)3G zB3F$3ZcSeSV{;wg3yNF-`JI|v4r6m2;6wi_`!bQ=uF3frpC|vqw?6d0l7rt%Vw#-6 z`21~_+q%GVTj!B4^CGol>l|Zq9k6vqzgm+UV{EPi z)O<*CutQ%5Y#nB7t^?>RDN5e}^2;=ReT>a@z}8!sW9FIPn)z8{E8-zt;$Pt&;0cZI z2EMJ~E?|iZCEp3$qwyWU;%~*b12<}X8*rtDW56nl z%6y>s8sK{xUkyC2;VR$}4Oas9Yq%V^Tf=3*Z5j>(OTVi6ih;{Dz7V)T!v(-O8V&*b zG#msrG#o%X=QNxPEc1@4F9&!`HS7oO({LuPp>7i+j@;lg8LRkJetpC6!f!Ml zw#-o+A)S%*9>>*|yY}numPz|{cgwiQjUnCwmi{f!N%%baS?M1UxnbmsAIOd^gN)Ck zf0SIm$n{~X(SoM0m+|=mk?R(@F62ubD}5b|&%-}TUz^Cmj^a^GUzG8Am&nzN9Q;u{ zsL8=D!sp08Xww$N35~ZcWyqI!QS}xxJ_r9OIkJ=FLdcJ4`T~s4-4?kVk%PU(m6}{8 z<8!w}&L?tSqg($^<)w~!yx zg1}>|tCO5;>R18OWcq^m!K;7m^;d!+W3QymQFEqsh%M zhWRXaPvq_*e@K&?Wc)PgfxfhAmP@O$ubb1#?Ca*VV*9!|4HeOIO!GNqs;bX0QlX#x zoH~JeZdvuFjxm0kJN!N`1`yzt~cc}ewyr~_IX6kjr?4#eeg5kr(q|_dFDwD>71nSC$-Bn zZEu(7uDx9z_*cnI+S}!UU-jqx9@L@7jpw$#U7jJ)gMK-$U9Ua;jGwLnPj=oCxnAUZ ztoC@i89xnwDLLsM50#^KRO8nr7B%@w#!nZDd>P3>KVgzD06(kA2N^$|EAlxa@0T<~ z%K04r@;Lm3eo*>dc7JVLu={J{eY?Ll&e{F7QS}dhlbh_`IL>x#9A*6*;Vb>`G#f|k zc5ECLxgm!g{SG_eZ@u3(_B!n7mU`PoUmN_S&Ep$e7(Y$^flc%Ub!z{{dgRNxj>hH2 zYQ|5Ke@L!U|K!~ zJIOvD^0j$+qlfX?agjs+DLDiAF-zYD*hTp4ZI;`Bek8dKbI8}`p$+Ii!e<9b?z6^* zX|%b8^=udgz6V^bVc54Ztl=r(poS-b{TiMCmhqwV!R`$U8b1a+qv27=OM5qr!rme9 zqs&wPY#3ndrgo!$=u6KOcN@AS?VuFp+U;>iUy|16!3`}U7q!RTh8la^ZK$%x9sLM` ze%+iazT9GR@u~2VVYiaY5IG<6wRvcRhw)k1spQBH z)LsMmE=%9~1;+T9ekHg5KFh72!`CI|G`ShZX9FU4Pvp?gg;Sc`B;&JW7uvBN{Ydq$ zA4C3_CI^o2S+~fIh}iZyeZrXTP5BU?f{-){R+1OPinXg_>P8Sz;ZvL_C6n>_C6%npCS86u2|#>kzb?f3o$-}_9(f4 z$mJrxT$9UYe5P0AGDR)}`GuOCm+=|2OX-t-r1`5bV9BjpWPBz@a-TKUEx<;xYuyO& zJaCNV6~6Dla}JFDc9&`LGr%(6sPfam*&2Tj*sI~YzcG?| zdVRO?s~wA)JtI2*ma(oM{0Q?j&eq*x?1JCO&+EwFh?{lol9FE$x9eK$ak~!jq+b`- z)r(w>J#N=k+T(T|;z^I&bzytlt}B#!1EP=ON9HMIZ#LsIR3F)!DRLRemwr%kUdCro zzmju{oD2De)&8}MjL#Ia+}e4TTYDevo73cG8J{7$Q19Alk-LZdyPDh-<1=Iz$)SJA ze{08)KdQ-%GCl))C~nt6cAdo4+5uqdM`@43BlH6=TwdW}U|HWPJOn(Y@q@rppW+9g zPvUs(0PN`jKcLyu#W)4+RCYIt-Sx0j=5g}t+G@rHb0Swxawr>?RP`V97eKCC(;sAP z-cPM1KayY2zxq74)^CrOwdhwpUe@~T@j^ePqx8U!PiynrnnlJ1@GG@v%{{~N}eCb~$ zhyEg5&?s`~A0^k1e4l3DEye{^B1iR;zHazM;z8-_WL!`va#TObwIP2-)7QedAV=gv zBnSV%e@fl}KWWL+yg;}Bey2Ef!H=n9%)2Im;m_0o4bK60YIqj+url71{0#2VDm8u@ zIH+OxeSNlu?;^IUHH?06EogWW-#MH&@mq%L4tU*u_?>XFvLEMz+)fw#eOBxy|G9b@ zpN75EzpgHkBfl21e!Aax!Jqnlv5Wi(-n`#;MeXtFQhtSvi=+=J+C%#nQzitDNeVj^ zKSb$UMoJ&_%J?PwQhFE{kUrR#(kSvZl9o#vrWECiA%DlT8|6cc3(&u+d{E>GLp~Yy z>GH| zdKF&<+^g|u4`Ev8Djw}RE9*X0zL4>mS>Z##9a{MSV_N^J@;SgUjrTJ?GetbwkSXo* zahh~j(n(2GKfPrn-9fn_OHa};R#N;*9K0>STP@CGu#el1KYg zS|DjQ$4L_Wr}Dj$x;Zr#D1A%)f||MCmD*|Chkl7yh0$;3epIU8m;sK$uM<>1@HESx zf!zw@<{0mRTwWvA`BT6${`11%Cm8R6{=6`F)c^d1 zl+OV_#CXpD_#E)Pz~jPWvA({W@t#reZtyYSG3Eoa;88E(J@8v#7JMbJjN8CC_%gR6X*i(VZ1j$821nJz$3yp4yj*eBfJ;&1RB9l zfgct=41R(!ecvGv20sEU@f*kiKg4)1{2j;v-wQ0)`v6FHH{-qi;N9S3z!J|#X2C}p z??t~KnFU`7+|TtN83$j+c<){C8zL#=j5WElgmXz-T?_umm{2%GU zIuvrx_X^*L_3IpCKlB`F1V07bBYYVA1Y>^~d>H%)aJTR|;D;Fd>%r%M?**25=7<}7 zH)DSXcsKYMa3_~PJPSU`*x!dY(9MFc1eST|@HqG~#{S#j$H51I+ok*<_*};RDe!~f zeZXzPcY*gX_G4Th?!tO$9ylg^Bi3VcjI$tjxDh<`Jl`UG82kj|tQ_!R@FTz&|MWSW z1Ad5cRxx4ly}*sayTNxe&Z+_L1|I{iXa3ME_$cEnjL}20;46V^gdYcA#yIO1_;K(- z;A-Iq!RIp08Ua5D-UnPId>42RTKf!pP z8+;f%>Uq9Q_#E&(s4n7E+Df}S#T*mvM_o+efKHv=DyTE%G@9zQMg>}t5 zuuu3#tZU{N?;ir+2!0CKD|{II1mpeV;KSfYfIY(JfJZsP`)9!CfbRu%3-1Qs%^2Zf zJmm%-19mb0k!TW$0 zgzp0HVVvCpz6mr~4oXy;isxBHkM^PZbAJ%2vt$NiqPLp`5?Jt<>cp5`N} zKP4)u=ufE>EdEJ>&y<|15Ax7YnC|mbIxeZ`rFlW+i~Tf?6%KHkgm@-Q_dhDFk~D); zx(}dyqeoKFV}u2Z9$M$GCAk{PNB={Q5qrZ}TB4sZ1}?|^Df2~$g0-0WakN|ELgwj* ztV5vaKcy##e9T*%g>tBm@OJn!WZ=2QU*HX-yO_WDKHy1wr%}eu#d6>Y#9bNlr5(V1 z*bhD@@|nQ5z-MTDgJGP^Vf@^;!B@kMLBaQc(XQuYUQ_z=V28}p&wUPj4lL~v`9a`p z$jdlW@=1{Ys_?IU)<{_}j1w}Bp2PPQC_bKp-{?c~DPM>DCq@1_VD#$=kKkh9QOFl+ z@@UU-)7}j5z2JQs5BraK8JFD!Ux}eTrSa6BcHz;U6tpLZd4)b@Xio~-Q>L{i8TJRu zg@^rgT`SY(+^R;qmuKV-|d)#*d-A^w+b9SNaY4XSH}W25>(v_B@*nz8}0_E06xn>lXb6 z_;!p7X)oDlpnZ9!ztKJe?JL#VNApfzr|83TPP&ejPH6hG4gC0qVDzuy2e0+7u@&>p zUEzNP^CaTse}&E@#EDAbKb697D$SKNM^fll`OvFU_*13uqe^{}dL{Kp>Xy_cDa<5! zV^PutN#`ZKFDd#%$)O)qIwR?{r1vDfE9sP^lafwIIxgv$q@$AFk@U8tBa#kFIwa|! zqyv)nOWG&tElGPN?UA%w(k@9mCGC*3UD7s5W0JN=8kMwB(t1g2B(0XTO43S6%Ox$7 zG%RVcq=k|eNE(tfC}}{_TuE~z&6d#tS%p0mmgA{|?75;=r3?jQ8MpAC7A{;5!5DHZJ18b=3F(jtCC?0ehRvhRTTI16E@c;V{K6tzS`}Zi@h2x_*Uc>Kv986t{ zGb04w?*7$O7o9&pi}TN-NB5c+gap`3pb=P$_l zS8-l1=l5~`GM}GBjP2>-^V7R<{>fxj59!+T8S8xS_SE&1SK5K!tI3k{KAd0U^JftY zNw21@p_s|*#=finnzo+KOBe9BtKUvj_V1j-t<3Yt$LFFC`4P@f9z=dJ=RY@v{GV`s z<}mVqOXS1I_i#R~pSKQ)d_R=cOTGvDXMQ&&ZoiQv`4HLgZY_Ua@-ty)k(U2oBtHZB zTdn+cU*>iNhwz<&7f^2ph9~Mx`aNmy3~tF%IsaMcTvN#TN8z8e-{brXQQR*jbAJ9J z{vH^Wd@t6-ACmlP==n3z(+l}u5W-z4j5#FGGK=HQRLudcGujCZPXIq8~PR zLz0iSuk95*@c-s*l8?5pTO;{y?Ai29$%p;x-YxpepkMr1R)zdukoLH@Tn{}}wd<%Z->VvopsIsf<| z^8bPJpM#9+8=QYMjQ%~#`4@2R?&JIu9>nKyk%yh`Dar3c{)Z$V^={9`u;7txYmo}u-{F3pDR z^_I*|Qi6ZtJX7nt^wT0hG6C)U!Tt1m+wS142 zpHXP#Z%en%cWQ0%{Zm{%5_$i{ykjplH@_5Zh+M*t)PJz0wm$EK`Mc-x+vv^LitQv1T|MHWy@hXb*OI}{JJ;iwWAi^xmJ6np`--H2ghaBTEDQ4Qa_x3t-iGEQeH_#EdTg5ygs1$N~E@~uA#Lx(u6LhN+Pk^mr9Ov zi9{9REg+Hd3l+yB6(=JVC%Da)^;a88%U5u%W^qOAIKQ{5wBl$4zQz9~_*{D70!8DA zNaSkswJWvJxNW7Ck;(u>DvG(Tidf!JX&pp06QVLHgkEttE99UJ71JrOB+8NGUr;!K%qdG8SiNN#OQ~8UJ)w~n345W@}Rm;G9$-$B)_9#odx4nuy+|amc z9~8aqh2*2uLc{No^jfASYN?ng!qX)y%%MG}U43 z{`6LtW~Eje-q8i7SsmK=KgAl;vgd!gWu|GG)ieL2SDL0pZ+EdN<$t>CP19)0jgMi; zX)0aKq@+)Jk7?a!Q@Of%(KgdPCNs>%Slk}8Y z%;nxPquRAgNRA6AJ~TGIDvsesr49x0+^;r*b$44+ zjFq+?$6MQ*Ub>3AAmUdr#u`n>ilPm**GvQGffrr~+WZP`yz2QeB1~(&+HwuA!n~Ya zR(!rJFF&-h&b&PBO`CZqH1G_b7ni>XYv_rPenX`09gdkdOhwIjNZf{pA0(FloO%!F z3+gqXQZ%m!FK~TMz3#M?rQYV_=L^fmO@6?%!hF>#-7)1I!`)Lc-k(~j-q(sZkC%S{ zjeqg#D+rYco^4;hqGI47y`6UyDztk*^Y%N`)ZD6`&jd@aHpLJVLZI(jS{km_Q{P>Y z?mTg=p|#=K%XmnuGFEGSejciRA^x6KdmG+=v7(i3j4sq680q$zR9}6CYgp!!P{G}G{5`+r{u-eSPsd{=Nr`bpv}z^hs)h*i>=^$@fKLs|5g|)^H(Sr zG`p2sPxtB^SaG|L)mZ~zxq`UG@u&aGd~>p_`K1aqEFUZrSEIs#L%0kt?2TJt_Ii9~ zSl-E&_qZ)oKJPdh#PD3K^lE)WTL}f|3M1Yst@)l}v#6r@J(%L~vR%`dm_0Th+^Usy z(ujG!!c;|p#eo5vD&q4Jw-R$%wBah5TM@&|_rT{mE6jiVR3CppfTl~Oc+!N)kRJOy zpzV$*$WxaanQeI7J)~D@zOHD#SP_VXDjM*oEL;d^*fddH_0jSNl(#O#C2e&LEiw3a zg=#BW&B=dx=vl%2;2wy_RS*w~>c#8J+LC8`JfqL}%WI8mR0A_^`-4=U3^%kP_;J}( zffs4uD+PCIe!#q%pr2ogHAZl8Y`$h*lvapvXFt&d=A5>cwa&7b!r2-dW(?9a7avv> zgYo%QMav3i#2?7To1eGb61;%?{JFA7q;%!s7T58Z{$xrwmXW6BCR{8Y5af;v4P8a! zt|`G^t#DC|V`~neArpz!U5?Pw=KaCE2-ZTiF)THxrY0X0$KwcnlJczubC-YCR ze9eX{=v{g*e58e6bdNvcUPph&(7}gkV8$iQy#{iH`0fGr8yU2VjgHMY;67U6(HVatk;;;)N)wrBI`mR`1KZUKi&0OY!yr}s zi9}kO>RQ#d16sBtVx2nDN4ZLDe}f`ycN{}H4IOUEz{gL2b;aM>7~%g&r1)Irxj4j0 z<|zKl;jN+u+TBPx%av z$PDXf!agX90YmNnLy9t&T4^(>`B|<*#RHXbe&Tt!xvGuTTJ&-qPY#0h!H!v^u)nDo zDf-y@aEwu}M6OZ~FZaijh_AKT(6I=bbdXr~H2v1Pj&dv9lP zPChHgL7#Lv!boWk_5mCZ_^62_<|NzQ$)7p@8^)Sf!^xj%cc*-&06V@zb*C1?#*Rkf zzVzDC{r1JvZS8+^v<(~4+`U;pHfo@xqX@fVwwxp%$_P+f$$o}?^>}qTO!c%QGXOllecDCO=+SZ%3)KU0p zBT#@H^aa0x<4ZXHFW6moDirG6T@ac!u7=*+T^ahL-PNHwV;D9BkNiA(_KQaFA!V9T zrrRpxdjswGG3gIA7@m&KgEL_x{S)woaqf!`t-A$!Zkc*6EG^wuI$kxr&@l}irK`~K zA?O&@bi_!9@>l1<`_Qpw6*{g#$9+vlKJuw1(c?lVR!j$(-nLL&q$1 zyt)bhmDE26BPiGkgh}jR_9Q&uXoBRKyE%XM(xbKbA=ZtcSy_?y8(sr}x z&)d+>Tgd;8YEP|EsM=EZSJakFy)CElGQFF{f8KVp;jh|wJZ%3V+84_)KX z^{JaFUumOyQU7LX$3ZER1zWSJjgr3^*sZV{W80H}eK%1*%Knhf703A7ii6GI{vysX z{+i;@PHc}9ylK0%rk9`Z}wj2m$869eD(^%HV_7`iHCTLun zp4y5!zec_c8(VAP_vlR*+Ft@+srr3i=YHBb!foFCv$p>G^v*l5 zNBVE`Idk5DZ>!+T&)qbAtNL%t-=2QWs8K$reudqkH+SKSH(L*~?({FKw!dQfH~n+K zeiaY32I9|K%f8*d!<1tmcuT`Z+BDg#`X7Cax_@7dlh=*n<@3++no#GC`p~q|kNR^$ zf3%~M=PYj)UHmZTjdML)KLowiYW&q2{T-c8WWa_Wi{2IH!nocyptsG`i}`3!bPPZT zUb5o-gH`DGG;|DVI_gEoAar=4LdToXQKsp*g*fftxoD+%J?_WPpj@X`t_I_{GW43!$>Y)YA+m+eL!FtJ zN78C({$OtF^&_}$o_n3<4Z3c6?mr|Behc*sTlM^S0rqu?eO{b*g5#q23;{Awjv{LAjt-u7K(cp&b12Gavg+ta>poW4?Wu z?Y|2hRhEv$1@R%phbuw-|2xXoXl3uH{!sO&eoodlo>lbqF!X4By%^Kl1TrlFB|0_`O5FLb$lFa5Udz+EwNn}&)&or z^}wI{r=0^InfW~C8qaqq?kG>q4;**J<{TyYnEyAr9ukB933km`cKxf?{!L9Cb-eDv zbvPGu6~@13HRFE-*EFojcz(OE^sj!at((%7&IsE3={T%%pxzpQ|n`{dnRbaq@?-q1$TfkIFO~ z&RKD?cZ%a=!*i>cpFasNFAyAyiTugzr(gO-gO zKBdLSxdid?1?bV@ccDh~B*U&3A0a+Qp+}or7BVzFn^qAYo>j!gmr;i{ul)BBtB&=* zEwK@PXl!6E;km;7YgTM{e%Brw|2q7T*!a(|L7PMVdqA_{fE62AGKaWVbN&BH=*_G` zD>nZ5o~6_MO-(1Qp%5SI{(2Sh_EqQ{(R6lcI$yQoBkA1<;^U7(Z|>99CjVS0dQ!rM z``9DI$Jd}o8`nQH;~#p~eQy=<;Vm%QJ63V+`D4@*wc7o|9?RZ!KQA#-{ID3I^$zi& z&V9JYUi%>{PB#3!Jx+eq^^iE3fE`ns9d65xwLhlzzP1nd&g+-vSF!&1dg#sl0ZZ4s zdHsj))~f42bY-qm*EgU`TT9HhXm&MNagp#E|EJK?tJ##(QES|m^3LZhn-av>H=%3H z()CaGG+nlJ0mXfSb=IFj*L_V_&x3T4tyt?8w%7A|w!^Uo3H{2>0rE}Qa9yDo;B)tD zdJN#+d+{ML@aLg7vwfN^F0zHzjd;#vK9ln3_t2{t*Hh40ZRz~S;Rm&kY&PpF=r;+F|fX{e1 zzi%-CKb?RdOTZ5%;JXv>EeZI_1bip~pP7I+9?oaYB;dyr@Iwjso&0biAXFG#@q z6Y#Ew^ZwZc{6qqNI04_AfNx8{S0~^L6Y$vyc=yBky>kip$prjJ0{&J4zC8h7lYlQy zz~?03JrC#i+)uzyCE#x-;QJEr9SQjQ1bo=!aS3$e@1oc{pnuf92s7h0PBL*o?!lks zd(4*oYJ_p|#LIRt;cL3@9jUuiYo%c=ijC4O8?ec$@jDSSy5zmf1#L!_>;p$=(D zl@y=yA87U0#_<2C1N9roQ>gViwvQWV>5=#roFfl!DV1wgUna#yjmynOjs^~$t!ue{ z(0}HPKj(wi-Y#sqK8Qt;Q%)6MNtm`gA9Tn!w=R=>z5-gEda;|iwXykHYz65GmA_1H z1bZoI+vy4=WJBsfqwZ8S?MaGY&)(sNwg&Q7eG@hh&<~~^u{)3CX!FPs*&1{tUa+P9 z(h-u6XF%d1<;`BmKU{x>HZJ7EJLs_N<;yWeBA1(@4Y~d&XvBMI{v#k>@Xv<8qYrVXaqk4jwxDFh7&_pznOJL`%DHVVe+C)QN^>f_^ z51myz2bbv!Dt$^;7paZq1W>a%KTto|b=U+BouyxRh%9fAniEk&!t!;P{!|p3E!c-4 zXB%_Mfi<;Po3Gxu(tN$ue--;6TU+o;KJPkps)#!78EhD%Eum=ggX^PRWoq9j73YDn zZ#7C$yFLfh;o0*8+tjLlbx5@)qE%ySP+gsBPa+*rTqxMeVQ9oG%Z?B*9 z@~iBpE457z?g!GhQa?~3cx6SOP?>+LUo{<;UyrLXw~}A;6ZzE=czb@;%dgU}*i%Se zDte)^B364Xc3oW;9%TGVK3=9kg`sizRCQ}h^~-g!=H_T?b=|dCzo^*6Uf`-%uOZ zYbmyA=DvDR8*SZvxZz4m>;|r65B7<(tF$5ywqFWaey1x9_Y>9ze7R897(T^T%j;KT z=A52)RP3>f;@c9>A*i2IYf)vgs{f%vSZJ>1ijhSDv|N#@3Eu`hCs*LWK^V5OsAd>X z#H&--7UY0|-gsLSEQ>n(|V_SokUaTy6;e{8=D@%%11m#uX9K)!li0Taxz`S+&4teYV2or> z9%P-rv>(6DzV!Vl>88IUcDV4&wI-vyy>43z<&iGhe~P`Q{T(Ubi?E0BHSB|}#S1Hw zj8M-xqu|2Q_YPs-TaErKm&$$VjiveaPwj8B?|WMszOZ!v3pYPDTX^mZ*nfz99HF{@ ztVG^-prf30e4fh5-nqAL)Avt4noZyTn%$-!jKZcDA7oQyr}tEQ{Z60hBeky>`+c#0 zSN0WCJOBQNRG$6@Kzrg;+hou0g{AM@rM9h7&nF(NXD&cCK%YBq3;7SWNWa03x##Hq znsoH+M!)aI{<__Ui|naEJ{`Kx(Vu;)|GvDmK!4jX^_a3`xBMN-4cRrH9%~`!(SMGnQ!2;K%OaN5k(Jt_w@wrTvxe(|=>QZoWQ?zuzq_5PxB5 z_89#=0{kY_q2kNAXIdW%)JBT)o)pCB`G2@)jtSE*x~w%OJa-{G>>Ly9)7g=D9AhuG z?hCZ<2JP{py_M+aPr!b)-<$H_?^pTnKC|gI-)M0i*9-sB9ud>WD0?pS5yOM@By{@J zUQWgb34?>r=XPrx;Z4H9mvh)Jg1^bo-t&(r-~IsDO_*)_?%%R)|Lw*~w!zn<%C>V$ zvsC8vtA@+$GsM^d`r8!J-KRfgxVdk>v-$L28y?pEoi!os_eQ_{SmLb)apqHTLHf-7 zupf@w@}jbhF!ysw9IJZ1dn}IC-_gE%fd1}uVd?L_plqyNnmb*Gw!w#|KW1c*ZDMQB z=`R}Du;V(%(RaQ_`f1)mUnOzgxBo)=XfxSL_V?_ex$N( zD%p?udAJ7ewxRtG`1^Mu#%B`J5YMk0GSIGrq*Hxofacr|%;gxb9dB;%(wGg^{i%<~ z?aVaE>0_DdC3)KST+_LBpfyRrue7gVyOrBMw|k_|t)e0m{7# zAS0fElWYO%p=Uvyf#^8^Q#1$XsxDGgOu!VaAwZQAqbl#fNhS^h9!bGdjJOh&=g0pf ziVHBefItU<5RSN#LIE{MjeZ=&D2>$eY#f|{6ZE20&a|Wkne=5PtK1{B{3}UZI7u}d z=gB_&2VY><75*a&%-WL&8KjI5Gb*5$z_fri0`mf@k)}{TK|x9(0jO0VK)^4ckO0+A zVyaA~0MeF1ekO+MN$D0aLST#m{)h8_0c!>oC6M*r$GK66gTORW^$rLC;~s$l90W)U zy^u)(#Y{2qQcLOmwA4{vsx+wp|B*IglFD)P2$MX=Oo|&Ry%Q)IZBS*_)HAcD1L+!R z2Qy<(Fd<^=Zn4-pGH2ZY6hM;_qc^=$rRyh=t{(;C6=ow@3uYtPxN#QR?hCVNnwd?D zNH@VYnx&Ptv_fXmV4smzhW|QEMzp1owlrv?L8Z!g`vFjocMPfbj(}+bcLktg{`M!t z_>)0N(ud2-UclFy&aL}(H2!N|FaK(_50rmt>4zOiv*RUjy#Wp(zk7xJa^&AaKK;PG z`62m6(5b34A16sA5nR!Mf*m5|vLT(goxfAPuQ}`p=VE!^Nncqzv$t$PLGN zW!I-tq!wRlxk#&elERRWLf%nNQVsIaK@Y44?N|O?Z9Qne@~>BG57|48{2p69Vz1^G z(_;7~iP}&7?AFus^vA`PIlTet^F{c7G?| zUO`U|^h~a-$Bd`A7P4^>va#j1r1+3ugZyfzEt)UQSb?6DV#s$xKG*JplxpPnBi}I= zQewzg!&8%o4^q03KM46M#P-7XiL}R@H*UQe3n_OXKM5%s3k!e$aQOiA&n+$eGsXM> z$uDX0eXd_$^U1aG@ng0PWn6xg8A6$Ul=;zaM;R%Rk=ha;3uuR{a%t(m)4W3M_)(Tt zCSHRXiRwK&uFj>U{{s1xdnBK!$+KO*w(gc&O8QeflDMiu)Pwf_G5okWhsq7DSngNX z|HlpgVPmi7S2o4#?n#at3mgAG^hxhS%zp)6r|p##F{^O9q)|z0BrTV;Skj=RG|uqu z#B{{|p6oZ22VHn~d%72|WGd6J8@x-y=%LewiHFqJda3-5PV{B}kl|b8@&^!a3NLW^ z9rc3ex%_e1=jz8)JI(g^#@Qa(JwA*z-5%cnmyg?nI;i}C zDybj-qw;ZkZaM4`Kl)n49{BU%tXV(WhjtJ?5GH-F$KgL8{CBX&ln3wdA6;5(_8NA3 zx59r^KKnk~yVc>ptq%Wf75{CWVtcnvqI`#0|B$g2ekGg@IkI&s-de-uv%AFJYA$d3cPso(?dAT4e)5MFZ(HGyoJFhtEoi@9{}!}g z_tzG*U$1`){6yumQ7^^YmN|RV28~=UM{~Mep3GN zIP61z=>4<#p1uCfcTv9HvTyUGz5dM;_WC!E+w0#v#^v`TrTRCI+UwtZ$5DTeqyBD` z4{G&yI_if%_4wG_?x??w%kM`&sQTe|ef)23(d)-`sG9p_bJ$@=G4#aey|;|b1r9qx z4m*MlI|5vOe~s9Y>#zg;ZuJA~@Uk7=MY|o|1-#RE(((u0dFkWDJ7>4UJ8QSYJHzGo z!yfVn-K^>U@ZPiALH8kao$wAj>==R`d6y@R8}ER_j(&$7eGWTraru2yVh8%iW=D_1 zj&`yGOWhW+CyMgrrXSFbddB-;rweuCDWa>lQoO9CpN@=ZXEKj>ap@5i(%hd+wNj)23C zT_9*1ah>LO*g^e<>xg-sPeZ>^`7HQR+2M28fqv7+SDK6MNL@s^`1NSWNL^r@ z)k%8rUb*`sch7Eb>RtSV$+Tr}>ZIM?)Cs%2spEEgQ^&Y`Rw3J)I%>B!^^V=%)M2p$ z{eED=tQYnUFwTPil)Zf-*X6Jm?K#kCmV3)cZFkt)=CBuWq5C(rh0FVA#9oOLGu~1g z9rjj|9q?aRQuGgv1A1#C>7@_N8>vVS6kB)`{IB=>rg^(vo6sM+UG%_(%KPC5>i12v zT;8;66YSOdebWfrv8mr~$0qpgfM(aGUWXk$4m-LXc64!hf2Y`iR38VMIvjSuf8>u% zRSrAgx9oY%A7u_Z;7@&C*i`JWqmaw{p-1_nz+p$oVMn&u;dR*Ifu3Q_4wu6Y^qX#n zXVGql2mMIp{m@Hxc;@YPc+ih}zj$WI4m`k_VtYKJc6&T`ps(Gs$1`HL$207(XUJjC zAeY~JPwW|R*wgQ@r&sLgM!EQP4(&ic6W$9uT`1$}5V@$s-bTpfYWCJR?5%d#D{)}X zXP!zfzZdl@|CKxJEpyn5epUX<<#Z$ZgW`)GRqEqyBmBHyyYA3)O?|v=ylb~>BigBt zw~dorelO}LyEabP?bv!fk);`12nj5+LRao7=c*a81i`MqebvZLN% z2mGza*GAZ@`~g4N>Vu?8tQ3k>Rkz#dd7CZ?|K^ z9Q0IKc5FaD>2_?Gw%f6R`VI4y87~{qZ&ZHIZMI_r^_$DO&)tB2)BUkwOzeRC{;*l^ zkg;Ke@t#4_gI`7*61iIrdwcQwciKF)q1$0^m&4vphrJzKeov*?i+Hfv+vc!0Dt6SP zTs&@IZw=!;xnggX$Q3*6EreXB+0M6&4IziUL5IBohrQ5G<#*4By@(5&z1a?X5eGCL zH@G-mzrc2_N55P5dqc+hS;jjD*nag#2aMbGLw5Vuqd)c)TlTL<-{|qNzRzy|`dfDU z*HeF?{BBhb>g}=HzrNdU|9bJ``eKJ2DtJN&rb;m7slN0i^)$$nh#@Zre;csQffWwY{haEj)N4vw0Ht3nM`o-Piup{cQ zqtRhUJ(u5&{!@0qFM52tt93ixGTgJapSV)(RDMr z9nd#wuYVoIL%CMJBOcZbJL(^D)KBq%^7L+RRsVpa{(ilF{Q0t*{D8EB{jm;lkrg!S zhy5|enZ2YBaxEfP<*>UFa@x3FSH|@k_$a@H9d;Kx>@MW;nVn*Hfx~XZgLVCZ-~5jH zGY!K(XW9+k=cwQ7sNdtL-_7MSVYl*|%TYhtVbzbH(VS;Lti6xt)q`feL&jS4H{mCs zkJ`QVp54y1cTtaazr1$RZs*zwyPa#t?RKsmaQB%UCmHw|fozM&p7$%B}&2-ThpC z7yPF9K8M}69Cjnlls#>dHcDC}Df(OSg_4FSg@oDD(P)W+a--jS|e$tq{Wh| zc0dp8Ci`5Ok|J&tR`%lWqp*)~%Cw}gL*YqD$0&WvNP!)Dd)QuMe8`|JK!o> zWPDKRfgNL9Puz}C;4aIbNw>M4I6vaBbC}D=?HuCrwC7&gImqQre+0FRiH0gnz9b6Cd!0o{CaRwaYdg6SG!_Fv|kK5VE<#(fgWhdg#=Fb|3ot0u| zIqZ__zbY4Id~k;JU@uTH$ssKi`4HC&mfH~omibS$E0^ny^EnQ?v$=fSZa&MBSOw-SAsl9$w-sFvWd;JFDL?1849GBk>e^C9#EU-4N4fsKi zL!*!VVf0GcDJlAo{A9!=t(O$`)4WUj%}$$kxlxao@u@|WapSr_k6(1W&vs`HV%-3{ z2-AF%IS76VSk|$bUEn7e??FA8UEoK6XQg~2cvL}nPY3u$@V&q@!iT|kGv0&tWQM`V zfMwpv%mE)|OwWBXbHG;u-;?rg@MVnmOo4ZU4+7t1e%CDcT*iCg?_IOteZW(~kAwFx z-ivhCIIh$4z>~rcVm&g)crW5-*C2S*b815PF7OkK_ZEZi0zU#gE_@^SA;x=az&C>L z1s)SV48EK3Ui90pF!&hosPH-9qm1|70-poE68MhrZt!J{_oCiiZty{1nU{9Xg3o2V zchWF+&Vu&=%lx`?9K46|-Z}8&yxuq^*NL5jLxv0ag#B*tgW#utWt{Hp0zbjnpAEhX zJnT3n^Ucmi@I#FKh2R^(_W}>F{X4_pyBYhd!H2=efcu5d0Uu@TZv&qLz7n`kcsKYm z#(wDC=>{JJzQz2GS@5}x{lkW_V-~y*xL5db@E*qg3Gm}sm&^nA2tSB*$sA)p#^a7b z@KeCu!gqm3Il@^k@Lk|XfV+fm1V6+$%MZR0d@pdP@L}-XjI#>Bhr!2yJA}^xA7z|X z1wIFSC2+g&Zt!J{vruk_8+;JBjrojO@VSh$dawt37Q7EQCj2;f596#M@Z-47&jYsz zKZxu09OJBU@Ppu|fTO~9fuCTUH3Pm2{0MNP@QvW1m+(FVd?WZ?;CkW1;JX>`%LE?= z9|NutJ_mf1@xBoF9PpLE)xx{MmoeUl{0ukvAaE7)+h@V>zr>7~5yT`+zHj9|!MY zyssPlIOg?v;Bw&yc|AaQ-yrxw@KfN+gzo}B!Fb;o_%84xz+vGV!4EOsHx0fKd@pdZ z@L|3l6W+H7J`6qvzEJoa@KMJ5Gr;G7uLLd--VMHt@%|uqH+ZC{Lde)7q>%%;7K={ES!}{!#Fa;Cq3yg%5-5X1xC%_%QewuwVEb@KMJ57r^I$uLRB%-VMHtakdY<8+;Hr zgZcDX@VSh$1K3kI3m$T(e8P`|_b|>b1CJOtvU!bR_$5VL9)R!Y3k>g~6y;M2k-81z zMZzvTYaxu!D}*8cVUbrUQyp zPuF>RT?(aif34CPNk=3dl5{}QUP(J8jY%4nv|iFGNnxAPnxCH1pwh$1;F_$uRQ2D*SH)qkoLsg8PBd zj+1?wd@bZZDf|uaXjh<1a0_rH`H&@_@*~K5h2Q*H z^}ObYT#rt=f#HjjE=?Zo&HEF^A+$FI?L9mw80}3#dqY}#Q+^Hd{lb3^d=KQy1rGvu zLw~i;WFWSfMejhHNFOXhVX6R5nrL0#)mQP5V!OR)qqDohpIIm{dTBF_yBnH ze<)YuQSOk`7lJ*>i{O10PwSmSVa6xW|1^$Ih=0lcWVHW~`0vCN@NMvz59p(KwD%C= zjy@*_z@z_9h<_B1_U1~Qp6CYO0=`QtkM`!uI5-glk9auIqVZ^N?!4%)244uiO5@Sq z+&jYOg7<>Yv3Po3k~<{4@3Z*M4S27{Pk5T*LcKt zZl>^k;5)$I()fDJ3p2vEgRcSKrtxLq#h=IP!K1&A*Jykuc=6ZqAb9lm@qoqCeD_qj z=tui#-aD?fkM66VDiHZa@YCow@i+C4@ddLb z(m_cFB<+{9PtseG_Db3#X}6?Zl6FekA!)m$ZIZ?$ZIKlIR(8P8Dy^5aM$&3Yt0b+I zv|Q3MNyCyBOIj#tfutcxgOUa$&6PAq(riinl4eSpA*oMNucRJH-IBT_H6(orC-_#h zQH0|Ljt(3@hvN*6pT+SZ91S=Q;<$u^UZr;g#|a$ICbMMBn zA4dg_QXJ?b<0uaFkwM>yJdI-q4)mq*|MvDFevS9x_;)y7MYAuZZp4{Ezq7J4BNe?) z>kpj2D|J1cKRJl=ZaE*q`S;{}821^Kaz29dKalg=n67rDCQ(`XWbR}AfoYsqq$0X# ze#3c#ocH7W6*>PCoPV6p^AV4kzb@y9qs-rx^H1XZOLG2IoPU$gkA4E@-%3{V57m+R zed~PpVCp8yqjyp6{!en=i@ikulD2{3_ee2rv$m#fqH_w(4O5(d7;WGB_naS^#QM)K z^0SaH5cwe1V=r?4lhcs-Jbb%B$Hwr*>2I)}Lv#4POAG4>RYA`=&VR}U{nMhq9&7Nw;QYg|Ve2y@--UJ^mwfnP z%U?-8#>kpK6Fq2S>bp7rcs1<*qU0Cgi`Y+!{(0O3ewy=hVQ1QIk%vFmeM<80VELTQ z`6sd=UnhEIpkL}e9)o<{N{U!^G`OS-(Tna!|=~m(I4uE(Lchj{SJ(kS)3=OrQm;q zem^&$G*7^1yTIcC~*7=Snt@G_?t@Df&>wMd< zTIV}5t@CYvW1VMwLp%SZcK#RE`L<2k`A4kt?KiCR9Yxmpw(nTyN&9eaej2Uw49zF$ zpSR>)H!Yd;F75o9cK#o&^Bn~^7nuG#+WFVC^Y@7Wz5Mq5m8I|euO3r1@41*4z`J+b z+G;N~y_}bi^VX(FU9`5fH4?kg(x85!mEHpX{>qAaKUZp1@D1p1h;@eLViT?q~3G z$|dC&R)~*45q@@%f2@xLD)J(E0qcjZOUf%+e;O`%Or}=WnTwiUzb_MTiZ;CZstBo~ZE3J%F=0!^K zj@36^zT9xF;c8ujnyX4)xKL3Pc>(=@GE!O@h*X@15@q=XOMe1WP<1{^1?k6~r7e$K zI4@}bq4$z2%80~1LC}&PpSgx#K`!|p?G?K*kL;Hfi$B0KkL=;5Hu32rm&~t?t*YpX z=C88a70X%`Cmu${<}j*=<>g1-quw46q2KaOF#c%ZQ1n`bny$1&Ep4kAzZgULYW}(S zSSrVi0F6igO&TAE4$BGgnPzn}funMBnp$1qc&+d7$^u6IbT0Z*PerUHT3Uwy$*XIu zy%vdGt8I$4me!RZ0P9LhDlX9s9Z-`rI{$b?u4v1z9T+LIH*U#;HBrI=~c!`)-I z$G-0PH)wdUiym%{9y?+TEdy3($qI$lI$(9BSM^YPCEv?S6-S`+4XE`Qwa`<`TH4Y7u+yfjbHDaVSU4Yk+QGXBM@^b)zq z3k|K;uTZt`r(3Zg?*E$VB2AZDV|a>rWu?`3N&Gp_g^Jb_b(xeUS%* z`98_gpTe{9$2663qe78LQ#0NosM`2=pYq#Z4oNrV94wD>rVrXHdF&PB2eb;FuaI{| zKK5$zLbhtuODrFMB}Z+Qkp4)l?s9~#Oz#io;d+Ee9duDZG&JF=^L11DPq(w~;G!@!085q`=7 zb_MBV`KRO$z}?0+E*!=>InqcD(bv!xqci?QB9$do*ok5Pq@x^_H?Rfh*%nka*I~Hg zB9TZ-Q=Pno6$>#0u~SF-DE2fIVy{yh3a!C*DePrPYJ?8ADDg)kxD=?UkI?JYU{~?E z%5%c1B#Zt>r3b{01}`w$Y^YsTL`EW)T4__8`B|<*wV%p3Kk+=Q^_s7?#_&J>LWa+B z9a&_vA9jo)h5s8ekdjZ;t}mo0Yn93%__s* zpDz3sBy|LIG?XKK3qI9!)M3WJl33I)*KuSDP53Of?qffU&5pQDSVZHM%hoir+#g3f z(fkY8##-ReA+?h2^!&D|j#izNx!jIZhzELI$kXO|!>XLnDt&F!(Ijak>io zfu;?kkm3S5KIlhy(2qW9{)pB_I8GxiF}g!=##nKP;u5c8xX(ITdyu{#2lX$dD04OX za2+N65JOBn3wvxnrCmQGIG{tt2hHWpw3%~xTU4Bap|Q5|2e&bDIZ!GR>4?X-LmTxo zY`qai`bER|XaHe3j&t%^IS%^x%kOt<={Hj79YTd4HQ&j0WGrlK`#QZp=;j#SSM=t0@t&$9t z>}m@eF8|H?ziPXg@)ex#Sx@I5`wBK~!xq@k0vnEXyl!}oAnMP(o>bLQjQm<7bow=; zpd;Dvwy#h5OuHwg?P7;3%Y5$>%4AXb4#+?U^rruSxUjLi36A%v_dPLwA8(%*Ou@8f#yb;C_% zUOQ`KzxH!R4(us}Jsllig#Z4&#@qh2_j#e~MJ|*1b=22w*_QbQdUq7~A3AjTpeqA< zdfR^oIzCQ1jPee=H|%4t8?KLi(QxCveFl8v)_wD8@vQgN{eP?8!S`zRg|=5qDyWZp zQP!t?g|e{AjlBM_;rnvIZ=k>M{;g2wkwMt-OY{!7!q=1h9ea`&Xy;u^vXOM|qiFx@ z#*Fx7=)%&EKTdpm!>%^)$->_k9`C06ag)Zogr63E1bnH+yM><={xIqds9&zYG!!;evZbo^-}mmB{n0yui#=CcM00Ti z{0$c_ZE;d`srwRs%}{TTtKORtXZfe&^`>=ez0o!vvGtbmeaRm^Lyo((UTx#3UuAr= z?nmt|T>6mqKM!N0jPKk1s3z3xQae^i!YM+0o*Ju~|)CJ}h;~ckZN~Wcwm3 zb8^H9yw3a&!%#hs2=dqP0%7X8CWz zmq^_aXXWe6sR8EHKs27J&pFZ$3ym!+^F=!+2HwQ?O7V>`|BmTUR&Ae{)XGdjz$Ie%x^Jml^^KS9+&p9QbF{hWi>U;Zs>;$oYhI&FrYne|s zzRBFXQor`!2l`m^>Ow%Jax)OY+Y>Uxm61e5w&H%^#3r=;)aziGzUM`c_rUvcbr zWQ@Jj#uyuv?ff50zjlqWS6`YvCw;g#?A#-Loq50`V@*9#OOHxi;nU90 zFNFi!&Hl&Lv;z9@1-6m0579yFPf4HUVXqFW8^|_x_;x9M=TY0AS8Szz^KDM$@sB=% zzRXeb9aH9s5B9E}s5{noMZRZx20UoK$!Y3XwpDDh4gIwBD}Non?+aBq=X=xB#sB8P zDi8Zj%f2gf0 z=COiR5hu6n`HP+qbzY^edZ`mzFTr0%H$+|al-JqvWxFZA0pF-{-^7PHrG-XB77JFv@*&}`F*lT=`_DyHh z^z||6>+4Sv_dB+|mLDM}K9&wU&n$0Oz8m`^*biF!Kl}>z&tPB5imm-0zT~oh=J;Aq ziK~uNGAB^a3tEqie^)@(Q% z%UnXAdi_%`c}h3GAZ?f4*7so^O#A#RbGBFarPEJ;%PEw8jh^)F@L-FF?T{0kZ@(2R zJb2tw?Xs7!U%NesjTTR3#7Vmrm3g}OH>BPI_x`WgmN+R-(C>ScCp|7YgEE)(evp;3=`Qy~P>$RF!i| zY&_liS+Nmx`>@^PoP4_Nvpr9zpAelIqjS;e{nT;iq|y1aKM z_U`R(I{h+F$bJMiJYr)5+X8+i(8qbQcyLdcdJGVIneN~?7W1pIGXg?40fX}oesg=I?+*+sh zxhkjbdA5(wvw!jYai^N?MEziu(*Tukh_kP-{>sxe&-Xn2Z$961Z2e!FeKFZCNx$6| zmht4PvHf<*tBL(~$(KyOB|hf9mtvUZpA+8hTP=AeiYagUzdgQOVvqmi`^e^abBXl- zf~U#5Zhy@eWV`#&?bQJbk~!{LLK0 z{E%>tMd$CpcIMsfVex7HdAs+wm`|T%zKz>Sn0I@-*7R&|7JbiTR7U1T>bvcETjp!C z56WDYJdep77oE$tzvN8F+;~58+A-#|`L;{jk2{@DpLwO{=@Xx445Ytl=2ed~{;7*j zr4{x{`?K|5Z-eCH=IZyTs{pB9!&DM?HWAEd5a^erf-=(tuM}H_mr%2YN zp9n8?({G-Xa$Rq?b6<|k4R*i4%!N5}{83=z)H%A5I5@`kN-G0gHZ{{^=nW}bMy zkGbi`6?QJjekUrY{C9=d?dO{@%x+J=4j+(wFlU)>(cAsQ%x{XE?1M7K^P)PI&oK5` zucyDh<-&v)`-N<)LYqJ3NKVV(tIhVmg)-(ha?_yu8(#PJ54kWlL-S!DV=e?^Up;#* zwAsvG?4!ef89lSlueb-^r}Z`Onf?B)&|1%!%rD1V9B&`TPJblFR2*X+eUiDf>v&Mk zDLDF*^QY$AYDd}^c7BYuMDCg2xUcKzv*};pJZEqLygmgUN`V)pz@5eMP1jQ36Djb~ z6!>5YygLQnkOHqvfd^CI-o^3K=@j^63jAyed?*FplLBu{frnGz#VK&#;`qkvDey}v z@N+5fQz`J?6nJwAygCJ5k^=WHj&Hb;0>7LBKc50WodWMmfw!f=BPsCG6nJ29eEm!c z{7MS^LJE911>T_c<Q18C-{{lVb$;H5ietbRL=&`DWh5daU0GhhG)>w~vT?{fWT# zs1D}^hx^j;lk0iC&a$4eFxNRB^8}>+Ma$cePhZ^=B(C1aRuvfeR_u7;n+xlDTkq(K z#-P62dUiQp&a;F#zLax(A@KFj3sOnHzJ=bnNeeOU4mC;u@~OT*u)Vi!wP`yOtK750xd1s&676q$W@nCzzMKP=^HC-?y|;(H zQ!KIFrX72Id|o@>yCwC@v39gxj=AaQKl+yK=iit9kXa~@J`0xo!Gw9F~`%*l*{67Bd(D&SetLh`t4ks|NM=g%;rD$o4j6}y(!nsBv@`Tex9|54-kjg>nwzEke**U5d#+^@kL z-22-7QU4kL-}|D;=}~)q#OS-md@OG9>DBoB&3Wd|!4{`ukaLLm7nFQ+{M=_lmnGCCFHOXmN8&CNeu+;N(`oi=&9K|gv++7q4K zwk`kBwvW^!^OBC;Sd1;R*G+#qLH^?7eh@oE{kJJxRaXYBRR z@9mU!JVAexb`zgZoR)t0gO`u}x$T!CZ~gs2?EIVR%K5L5^i$jBZ@oocyNs{mo6e!) zgW_MeeRbyB8lNYY>-qZF1^U=k>0>`wWpZZv_uHSAJRf`UhUD}H<KA#(eq_PJ-R z{eO5#>-~t9KRI7tlrd%ekUqfpOx|8R^e5cIz;%h^JBu3n9xkfhww~)@>=!)uZpP>? z63{9>{)4$b)c0sngV`VW70Ka0td)Ld@{!!Xv@Uc5(LT?Z`ErQ+`=DPWE_2RS`OgT? zI&;m;r(KxvM-{_|nI~BgmSWp3Y)FEe?lnlaH@K(B%s>BlBy?2f{eRrA^K3J7c7d@k_M&~^ z*P`>)_g^!<3C|d2&i_h`H~sbdFUNS(?%#hwu6OL2z5crKk^Z%#mDp&n9Va-aj*j{| zxZ`V1F}eSiw*4DoU-m!t%-(p*mfeVsujAsY_&<1;?8|&d@>eD{ZJxgOlJP-!n58Mlnr-oJ{?m&4qj&`S(`%zM3qFG1fh*Mmy>m_M2SdiTtJ_nXIevR=it-Sx3K zu=hF2ByV;eeCq|Rdy<@%(vGi5F8f|YhWk3m#}WE~&VS$5_W666|C*&OOh0nZDdhNT z7iX{Zepc^2rj2^fZ;ajhOrP!J`lgrtU?2O?avh)}bcSsS_m0s=v$wrK-+ z>M!s6nwiTYat$W*+U%{+%d7e5qV?e^#T2W;PXD}!rVSIxZyrhnde8~!vlJ|O$= z&9d(<^ZwVO`=3uPfAZI9H*90?Q5gd)wIX+-#rTwc;uLc; ze#v;!_B|4MiFI;e>-xKPJJ!DQ2KTy|eI>5X3}I);m0{ae$1duFGf6JGtQ z;od#&pZ$k7esLuG@MzxHDMRv#u=EgKhh|x9!^#UzNsF zE?e4yh&$_eIA<+?g1@}(aBzEYU0ZOYD0g=DJnF<&k+Wso@Edx-Y2Vl7v>#@9OqL$j z_c`rtEG?|Jvb3>0-syC8wK|6n9pd=~UXaZjv0L`HJy0R*=pRD=5c-FCc)FD`Sm$vT zRGf8f>sn*ATuRF3m_;?F1C2R}wy3F=N^6*`-dEMcAb42eD4*(oG*xG*h@WDfy z=Xp}AwbfZ`o*vuuAWt(L>1^NhU@H%}Ha(8PlJ)ns@9*kCBY59^ z_dS{;&zo)9Pc!_&k?yV|-NAhag8N%qJ9ub&6Az=e$peMK$K@q`-4eR9X+JLq=b^;5 zBm2AbVdR5{wr|%}%^7mPuveoxoa5}O`*4(jwi!FS4z(QaAl(wVjnd}+k%Pfj3u#** zZr}dsG9lTrdSxMcjj^C>Vx9+z5AmGQfhU58%`2!R9a5=;n)tKj_!kv%3~r0fi_s-! zThgK}pFF}tJM=BdVrj5# zUt93N!EPHka`hdOc^MZa>khBaiSyX2J=oHQqU~0Pw>u9#^br1)$XgKBOC99WWFojp ze6Xw18(56*v$N@|5i4Zj?1{a$8&t+&8(`1^EhvII@<&8tXsH%7N|`(yXHjscJpEpH z8GKUK=;2QXi`eUBkw?2!S|IsRqo{;gM8!yTD>Djp#+8XxAGKaBsQ4gyF*MAo6fn=4 zFEGSWaU{eNW--4${)*_NaD&PW3v)^tgPen@lTv=3QvRUhsT8KdGW><9f zVMB>K=EHT%c#I!6m60G#RN{lFsm`V2>9I_ngy}hD8ULg(XDs89$mD~1QjbNn9{F&T z`IN6g24T|t{3%1MTbKxc&`E0(Mk}>Qqec8iXFwUFb6Rz-h|YOsCWIMN#vqqqXcTMh zmPOKQq3JNWBl<#4RVzLOI0VMz#>__(2Qbb znuWov=www3)1Zu0o*}Y=NMbThS|;;`FsGG~%w~)!Bc5bPaOh-;M857Ul|nKzvf4JfoZDLo5uFGs7RzDTL7^@o%Zcl=^akZxfHl)-bye@2-}XdZrvSe}HESD=i9l2>dQ{@Qae>>s<& zzer`SYaz1FALba!0}a{x7;~=fnSJ9UvM*gJ=V`cqGSufdeeApUy_|FDtJn**zBXXb z$Np6yd7t}{J|`&h+#Bg>?w_6In4p&`C1Z}~*Xn9N#JpaW^;t5yGZ65bF)i)~XJ@}9 zxhp29=ugT+lwXCq%gf;FW@pFip>0N9{`h{^^SQJa(@%S|d8!7!aB0=kraZq6PHf@L zx6VPmMu!!CQqJ9|-x`Lx%ZuR8QGOCy;hmlR!N)|YAioZ)teDC4vg%bBd-5j`!=+tj zW@mrg2knXB#z*zfpX{Hf7<>K57aDn1_~D6-I@<~Iq{{R)cjU2&>sF+FE;IweqkOvQtxH8 zyMYP=8Ql5@fJ}&jQnl-?P6>9}=C>0aZ?UNG(L0Fj`6M63ml4X( zP~L^J-~R(i(87IH>b!#dwYk2}S7(OAe`{`?84~|A<&DYh5u3{bv2luz8N~m$#IT5b zVJudW??pb0d^p*@dKs5C`?DFN$jh9028X}*-$iNR{$GautH_TdH6ilT9fq#i*{_|WeL6(` z3oiN7-p^+IPUdH_PWe=`C_m~Mxyq#d|MVL5^orj9bm_&siq{iDp7#GUa*#GH^51aD z$Lsm+Y}F0s4|<|WpsuU}Vv11LX>`9|@6w&8F6zjtMxK~VyL^A2OWxKM(~8dNqSG@w zJ6(*5`y=y^Y+coPk-3D-#3C|MH}l`O5phPP?p^cO z9dBjkTRK_^Iz8mGdp;f8Zoi%V?{n1iqWnJ1C}YvrHaq*Bv((onRhfMN({E#WiMCuF zvW)-nX7-k(KYjm`NxsGFc_DYm|9swW5$TXrJYI}mC~1td{}9P z(qg4-*9{)9bh)Yj6=ym1-{1BUUeOnuN1f&PA^b+K@ZgvDcJ4VBK56+4^@@)p-{8W> zEWhEV;(hS-F1*+B8)gLOTVP@9&oV<_ah6qrSI6a-F&2g2fS)42OygQs!2TS0T;{X- zOK%B%g>RH0&*cjFiTqL%C-jQoqt4RH7T*AG@G)y=={dD?M(qqER}!^@-YLs(pnW7S zONZcnE_~4P8%7i#fOlMYzvVYz*VNms_2HxOyOF%kxa1owzkzy;e4WbGQhwDX7qhLe7)iXt|NCot{0fL{097z_ye?uyI%yR zEFbL`fh+K5UHX?TzkxW!&%n6#FEB>=8JFAz%WtSwIr1s_37nz)luPck?v%=r zuPuEpxs#UPKpsrJw2QIVPkDz+j{FI~!KZRPB8Q(HN+Y(P1S*v;Qi{Cv!zH&Yzhqh| zaf$wtb4u~w@WxNd2b8B?Q{JhR+!)@pH*(~`@D)l+lol%WTbi%+=bQH9J!ex|PToa7 ze_ZJWp|3dkr-?T+wh0!C$L#5z32Qa+Q`}kH1Dv*gKy%Ec=A630UmG4)o@#S`^ejDEqz3I{?9^u!YQhnl*Jmpp> zRsVC<|6KJy7yrwz$L-`?xBU8()=m!bh@Bk#H`MqKkG~R6&S|AX)~_7=E_aRhoB_+P z?@)Uto>!clK29yh~#x)LeIxSve^hTW=sNg%R)lP%f8&Mik8dU1DH2a3qYf6bj z{LUU%dQPdvk!|7tCw?Q>rL<9Lty26jxYnCpqP*8q-z}wDzwd(ZuQ)#HD{qVD8~!YD zx#lU~h{e}qN4AH)VT3U+DECHy*Wv9QhP}eVfXaYW*f3$QOWDTKSA_az zoZz^n`xPhaW+I+--Ho#kYx0Dg_*WXYlQn4hjpxMfrG9L(|Jk{hyo8SxppUX>%xvO$+z zx8=(aGjjD(KlRp8KH!qWf8jUZ6gluPe7_41S$^}3+95vUe~@zB{u=*_EWi1N%Hf}p zgDvZg+e^P?`OVj@T>4e(SNavoyIpdZEWi1h$i3poRfe)I7d~$J%~NV;)Yg|iLV1Tv zZrJjhu`hW@@7MbJDA)Nx{7>(({N~FdM}1xJ%`Q8gmfwtD#!j==*GPGzORmB4nU%%S#4Y{ z?S|zyUr@O#Do5O95tkfs3cvZh%0Z<))6P*|?UFld`OTDze`%*wZiw=*OAbu<&BzBwsT%B#NH1b#$a@mvo!EdI$ja*peDk(2>$(31t^RUR_e+hiC z3oo+#X8aZ0b1f0~Tyf+0OuNc>_Rt=N61SoFE8|Np8Ie1iR)8F-yHgCp$MT(^8N zG&ll&8Gcap2f!ySzs?6f08TwMCl&7iAGQ3tV(<>|A@~8sBj6`3zb*_O0q=&_c{Er8 z-f8)Dw0E!sydJ(!^?l&AmS0DngFf&I_+E>@YZ|=N^6RMgUDMzN@I8u8fcq`K?kxDk zD^B(dyw0cZ8X0x6uUmfIB=`vUW%w@D9{{IZ_;u6Z1K{W2I~DH$AGQ2FUhod^A@~l( zBj6`3e@_rR0^SX;^Xt1xz&kB}PbGK>cs+cx>ifWJEq_k~xDUJnzR}`$O@o(O{vPb! zH4R<>-=O#exZm>k41!OvA2tK8^XOe8?1x>q{5_-KBjA_e>r{ULeA4pwFh1@Y06zz> z^X6S0;OGf|&o%H4@F95SNBP|q0Y7Q^dkqiX4X^X$T_xb1mcO?M`4aGY_^|3@+*fP) zdl@fx`M@jSD=mKKG}Lvp?@90x z@XPRJiVuKKTK?V<@B#31@TH1(fR9@K-f{2_@FDmT#UtR@75?5S@CbM}yw0QCE)e&LDlzx*IK@$5Znh|0bgYCqG|9_%a>4IG!0$=U#R#5xZm<6b>I{1AI`uR zC_cje-*wBEbb^n7Uxp7TJ^(&x`H}(f0q}G1e#JY$M=f7+2D}4&2;Qf71pK7sOUA$> z;N9?E#Y@1cSNM{v;3eSo@Q&g>@LJ24+ywW5S8#dimc`dhgO^%#1kW2>50A8;TErPg-7%AJ+_kpM$@ycnA2X<=6Lv zcYqJUPb(e)KWX{(!{8C{Zuo18mw3cmezs#V5f1mfsKnpI|>0x$4V`kFbAz-SQi-vw8&lGW;dQ2f!ySzaauX z0DcaBQt=M(QOj>=1MdJIf}c=40)Eo+8~VT_;N9@!ikE;;W{?OD(_Qvg53p1}}g=ulNMG-|`!7fKRahIs<=B@e%fKuUmd2a;rwb zu~U6k@d5Bj%gb@jssZqG@S}=%fR9>!V>NgO_z?Vv;t}wZmfzS69s%!$KcjdFc&Ftz z_JWsy*TWAh?gOv2{Kiw@KJW_o(-tqB1~0Yz#&g`RFb!S+e@gKQaKGg@UIL$BKW_$p zNbwQ&E3aFABeZY?{4)HY;sfB5mM`^z57_XV9hfRBR1mllI}fDgeBC>{YnY5CGH zcm%u~zF+YY@J`E@HiDOc*TeTI?gOv2d}$B354-}t*WxRu!AmV)O1&$m!3*Gf6rTY1 zTfX!x_yqf*Gw|JtkBmB=>y|H_1Rnvv4Bw^r0668smrjEZfS-f!RJ;Rx)bg9W;2q#Y z@EwXrz)xC!QxH4?-VNWTcnNr?jEbR`Q?Q9Lw&zd2QB0i7(&te&q4!A(Yr@@ zACH|0rG5V`G{4{O|I58ha{Q2YQ|S$*kBJisuceXj*CM5TEAcG^%JuxKdbbV(l(*5IR0kNYiWCK@{gKZ@r0N29h=C3Kcezl zufI(B5~bwP*!NnRdtIrbOe(MW$WeLO{}=h3Ql-U8 z3zVuK*)x`x{dzDm%sn@6V z`YtO!uJpW8t>1TA`IAcfmDUSozn1!Ibi1{_5xd3@%1bEM?Zx^=_+qyl`@i@lcu}?E ztZ#&;y~IvYgYcXuy=Lplx~f$D%$ihwT&en*bz1purJYLKlv0nxomHW`)&6rJl@6OEa!3RX^pvS-~^vl!lb59~pkjduNnRC>>Ke zptMJ++Vj>cul0J>Ub@DSK5p^!3raN(Id3NZq^q5D^($TdN-wgwoQD!Q*$x{zB$Vyi zAm;(5?Y#ExF}7>i72aRsIPVsp`&3@-ra4y6bIYYy%J$%<>fztJOF8dy-RgPNUr(3v z>X*#-;)mQgZ>Zw(w1(lUg);9VAMKxOdq&MXEqrk$PjL0vc{zsHg9og9aWgnMb!g`t zsR!QJYha!2qucvkZ^M&spU#K7uEP)V6p!Y8M*}=@Z;r~3!MA~5u=WkU)o~uUWcgj6 z1}|k3bxZkvc-m`MpG)3@{AtBM^81cl2PxI<@2)!d8RXR;v7dF>aW>AVd?`Hf?kb7f z%Q_2wN^u`JsoLdr;m=SXd6VD6Z-DnY&W4-HUxx3YT>UroeGvI&ihmJ2f_%O5!|=4j z!|K10U+XwqUswDo@IvMp&Huw)@CC?sT3qBazlD6%{!Vz>B_rxz1^gA{%Utqbp-KNv z?dO3LpI6)GVK4j$@{UWMCmbq1Y5A&efOiwP=D%tZzKbVlCtUI$K>ksce;J(k)@%N& zPQ!!I--^rMAoO`u@RE6M)zpBC| z|3}<6F{ScL!D-)n8prK&jrOt;A_FpxbPr& zv*JDAMc~~o+y~yMcr&;cTzRqY#s7Pv_0xV{+Ar*CKQHZf|Cs92eqQ`vH=;c4=cWC^ zPP{(v5V-pH5aZE1$Tz>Vy-j@`;Og%~j7M)9xW;F2;$5fyJw&`-;(f>!ua|h&slN{q zua|fqa>eT<-gO1mpNELoOS})c;!VE+9#A~;`{sD^q3XE*a{XqVU-2^V%jlQ7@G)?o z;)UQBz_mW{Kb?4s$1VQgH2g`&dGMM`zXx3N`QRmR`uBsAF1#6B^YP$$@J8@+E<6H$ zUhOlU)2qQxyKtV2z5n+Ve-^w1`2pqo;ER#(jmyjRmEt59hH6IW9!08_kdR_P_wp%wXzw-t-{bT2K7fye8_gTg14{7v=of^NXpLpNh zqd4)V5${e{ylG|NZHf^tB^iW84)Uw78WaS!p`t?jdu_&mh7(-og*0{oKd z2f@d|)t>n0838|~xC4KNCqHhv><@rzf3KVZ?+3r?!n?pV-<1>Ko#5jxya8POsXPl_ z4?gO`!{F*qq@7UUQ;@y^s3S;N-rzDq;yj0gwk=PV@fY5J+Jhf(z8lOm5wMq zqjXs5X{D!>4k;Z}dQ$0t(tf3VN_&;|DD76-rLr6HviO3Rd%DlJi3tTd>!NNJ(c0;K_^ex*L8UZsxGUuWe!%K*!lS?Kc4udxu1 zj1^~)WdjTQG0tzXJkIh3miM!eJM(==9zt^-VIgKNx;oAomfv9^Hs{~75VM>&a`4?5 zX6a%%%krOCewXC{%kQxetMgTsK9-NNkP8`)&I>HORl|9V<&Rk&W~pa+j)nbyxkl@J zoJBsZDJQC4W*K5R&Cudv7iYoB6aAISL+EDx~!DoY#7FS0bVgjxDoWQyrw`2&_(mj9dQ|1)_WCD&hM z`9qd-EdPb&B-dVh@^e@-@8x{gv-w_GuQ^ZoseF&D%kNz?`Po9{`?kSMEvIdRORTPZ zvo;u3ncrjmL%Kf3dYi8QHR~U@>lFp859spHRA{o8i^J&eb@ z|6>|X5j?-U|IoGmU-NUNOun^y_hnr_!#>pgcAd{2Iq!bLu2+q-{-&BRml)t6rlQ?qJmaoOGh z;GX8Yw0wl~LGROY>;yL2@|}eo)3(_1ceimb`y*OT%xN#EJpL@{QafYR`vWa6qTWd@ zAEf+?TJEL%lUm+`{grAT`K2DUU&pccmu-15J}>)^wp^yL^ebxT8h-wX%9kO3MD390 zWgpY>Y05Wg`B}6FT!!p=Xad>A`_ukzHJo@vYP zZYB@cYpUD{`{4dzo(GvBN}hGlydF2>nLAQuJT>j`MUapZo#yclUv_z zEpJ4ApOz0({s&qe(mR__^`Upmhb8%=kK?6Py(b`m*@?nzgL!@6LaYmpfmLm#_X_eEqK3 zxJ=Pk;_GXA;_F4f7hhlVM10-(53K9&UHjtYYaVu$m%GYKc5qxBC z%kH|lvfFmGbaw9TZfX5kP0g+?>Nui%569VUO-)Z6I3li;-+!R}6HRCwY;Ea2cu1tS zwH`chxcktN*6y0Ry@x-vXYXMX`=UA_wa{L(ziyAsRb2i+`)&;F?S8<%>y0|BJ2f>m zk9}y*BYT@96$j+iY@JQ}y5*H;I8xtKU)EGpv$v`#sdll3Pd}x(hm*~uys4&qYumoZA8$X@exSA8bc!01zpY79^gz>Y(y=#0Moc>P%wxUc@V;Mb z*Y=(d-)dghrvmZTF&@v;kIKtTCwlLpmi_HDd$+pdxxYyo@P3@Bsrktx+GQfzW+Qrd zo`_O9L*-l0TOi=uRWGkde6M58{-mC^P-a{s>|Z-CZdZQdtjwdlKu%oU>2|ZbuSfIw zQ|NAK>Ao%Hc>=i2YUk06Rl2vEX?j<54wTvIaLvc->glx%LDNN2PrTK!iMP9aOVcm5 zw=$(QJ=SuVxogoGTgH`i?YPpu{au}LYqvAwGihv5KYt#Tvkk%G{Xdh%L>t6-xF#M` zvXimR!@^0h+cMl*z^esJST~}LxM01vDdvh`&X(;qO(3?PC>HYQ_WH^^e%zj-bu!kn z(I9S5*;Q-#R`z5Lc0EN0Z~fROS`M}Cu6?YmW^ebF2M)CyXgj#Ssijq3F&o>qH+8o> zQS*S+Fnb2FC1GsUH_3Eb5pB~gTawJ`J_6RuYh&x zNm1d{8&l~oE@?aY$4Xoy|8|aLqJ|b#OFW#JtMW4*(adjfp}8aVG19|Lb1nX?$2D^; z{>vZQMC)|zGR7u5-PvDEBzk}om5Dd;LVNQ6=Z!&tPHhUVYS9 z>J+*6l>a3U0;3)+o*=h3KTUe((O)<@i@P#!Tgl@~!sllQjg>HYI~HTMu8X7IKTg<={%4;Sn{)cvsumsI^U$9Hqg#Eyv; z^fopV#w&~-8^&~u6>EE84;L_G)yi%|@Af4Vd%&C>*xNURq&-lIh5FOweSU{-uP<6} z-Ax}2==Ssz>;8EkG{qD1uW;O?mH$k;#tZHKEPCh^k2=~GvEFT)tK8L}=ZLslWX|!= zPj(Cyb!3hi=J|xfsM`|6_t?xi*W#RmsaX1dzQxP@}LRdnl+`6l?z2%Uc4VYtkKHUfE z_=?W~t~2cI=JQ6lT=8B$@)J8!WgE){qVA4E2S35FX`8)TC1)BweBcwLtLa1ShmY)+ zXg>M~lgN8o5ANr?NbNOsdsmffw=047t9wLh`%KrDG5J@5%z z!QR6UaJ_He69;0UJ%RzoI(a(MZI8<5I8pwdIiD$7_i#C z+}quGcsE_4Tmow9KGd?W`!I0LhbX(BQ|tR$n+|d=iO_eq);Gx&t5^p(yp@ZJhq*Sn zKs(Qq;`itYE7MXYhJ<9{A9c0v?=m@>lZtpVkbw{FJ@^Qxctd;J={bx;=`Z`{*ITf| zMYG=4S*Oi%INCyNbh)Z*N5{b<-AxA{Z{oD;6YVzorgl35r9QW0XZwLCx;vVfDGnZr z=SjR}R3L1+@u7BO7WRF$zwmHXZBx_krsx?VIeFK#@1UF|HL*NU5fgf(i4Ti0@(5`@=WF2(9%y2Qv!?;MjxBuIzPYx_=UCq| zr{w-QB^7f@w$3Se;OCW-GLsW?C63Yx4%aIB*H}7p{YL)Brwx1-| zCfkmWKJv47g)Lj-VSm7W#O*`+4Y!(oDbg^fEw;@mDKDE_G`BC5&+QE5b9+Pi-0o1m zl{7S&K5F*|5=W1e)kK;emkaCVKc|GvJ9cd4KiL>jou5M+mj8rZ_vcvie0}xjXZ~mD zoZtDPBaDS`3mm_`L>c}(s#+Kxj_7Fc}w^$uKWccKK zn063x$>qF1y~xGZ&6vREqBf*2%=eQR3kg|rhJRkEPyCjgaSy2ZiLNXnEB=$8g?{pU ztF&L@FZQkR7vIgdc4ucpea>d{ZF|018~v6m4R@6CM!}=sfu?NV=FiQ}@(tml%_j`? zANyRPe7CnS^fku=ULfV6VV*Mn9N&)pyyG$7J?4A$p|ROn@ZBN4PbFo2e3#1o9e1~f z;-7r`>S#yW7j}M(2Y>kP>@&aN^dEgT{R@xud4mh!9Z?)xK^niY~ ziU+RYf_&qNdwF?oN3xgvos^>3cUS;pKib5+!yu%zSm-O}xgk&4OIA$YAwz#Nd?sk{f)TRk4FoEI%4axCoyNox;(|9;!ma_v+*K_ z-t!+on}f`)hujB_>@q)a_{d|-$a07g-?lT)-_JB2`^DyYGq=w(&xb_k7$JTJE- zba!)MJ3ishKi{WcGEHi7oi2T1o?r1BG~IQ&!c{<-mt>)z$lP>0^ZoKpt1ojx$pq^k z?sH8GsptFUeYn@mz314G`C?ZWv=kdYsQiLWO?(>G?9?|se&m20$tTa%1yjh;Hw!1B z_)$&Vrhl2IoLEQavBQUDMSpW`nD}E|E-D9&l{InWqa0tznFGP+&a(yAC?3EMsbBoK z0$q}rk5<`QA9w;lesgWCAP-p&b8meEFg9Yp*gB_kIB1F=3C)eAi02Kn*ck}Qvx)Qm zQg1_xgDCdXrhX`O*VIAfqXD^4^Gm(`D?Wo@DK-Y7V&g1S^rep(JE^zB#ga>WD7gTQ z<$!hB4&T8-4pVJIP1_TPI(jaZ*ZvL^l&^2jA^=&W{}_YuEwSz?v^$xr&E zECNXR5|#yi@0BsIDjAGzgCc2PknK|?PiBT%i!Vop#JW8Dnp(*FS z(90`2Lw~+vIMnK#jX29X@$(n(b4+cmO7e3OKc2zQ@wlJMj>LUj_7`ygUk zNQ^mkYIkj-k2#I<&B_IQ+>DP`;yx~&z{gsAJa26+JCf+*9pq!#oA`Jk?&H$0yL?<1 z_i@<|t&hvzvOZ=HM|e-K+C7@+WA^z)d@KvSd`F?n$6|ckjgM!ot)*X2^05{lcjDtY zmyes`J}y1(^6|s!;|HvdzFYX{Q@h_x^08nMAItHvA?{*LZds*ep3-gl&SwsrLeE%JoQmNI6xoCI>(~@Jn&qik6Dw8_;^1)y87di5I%lnun$CxMaF&iIG#(m8Dp~1|2ng0Qok89P( zRo2IhiHMVN+4`9Oa-xqJQ;Ycc06w0K_s6_ieB6tVeb!dq50mnEA>!n><72~{H>9rw}ysLRK4^>MxRF{guVO}E

Mcl{SMtrQn#}2iXo#bO%#PJ`&$IiHqx$SWubN?vrqyN*^NB=X{ z$87pS_9eBuG||WGtBd%!9Ur^mKIWXq$0~emwzhKHlYC^Gmiu*lY>WGtbJ6%{_A7E% z#C^>Dw)HXhP4$ufm|d!N_b2(dSbyAsk7r#z7T{wgJ~mieId=ai)*lO}@lp1F8eKl# z8TT>gNtcf`>f=u9qpz23&4Akdi$ouNLyP3G5+85Iea!B{$NC*Do{-wQGck{=D(F+s z?zrfwjQg1VRNTkx*W*6sykvdM`Hb~3>k9MuHMP4g(Z{SCi}<)R^zy3exR1U`eEa}D zmRVcbPbK+CF0#Lcj}>trecy2TxIXS<_B+!xF-Q!6<)-K}XgZSv0BYh>b z^ZR!E(aP~1$2}#s4&T?sZhRikuENLC_#EjgkI&=2XIwshME&_7J{G&mtKfZxH~Yca zL9gSLL((#j_0aP6-9!J)zaesZ!X&#=%C+1Jx9vR<#D-v_P==La#pEu%uW?sP0ZTPA4an`=X z{;;}`HvI-Z7R7zcd@a5`T3rP08vj{3{bzN*e#GIfl!S@$ZfM=>0|r|6~pTbB+HD9se0R{?i%%={o*1lE#1f zV&lIWAJ4mdEWyWW=75_vkKS)2^~r1a!T5J>xqK{-&rx32_|N!=9XA;={uwuEgDj`j z?i-2YCT(PqIjRO9UE?ObA0O-R@rK$ePxNt3F@5Sqe4L5 zx_n%!K4zx6C#dF`16eM9~+^UoKUF0sFbp|@c(jrd+NMtWbhxn61?0MLx%Os^G;$6 zp6|wDF#dVo5M1g-|4GR|7e73M9#4dGOLbs{VpH)C9^?8Ea@mWt%lktw7e(SRc^<`{ zBlh}OLTf!;U*)`6N4n$b1wN4i zA5DP|rog*X;0-D8$`p7o1@4XFy#J=roX5O4d((X$Q`&22?d;iRXLj}&XQsoSbHbZX zI3B3k7YMa3xxQ!i$1lruK68x9IlWLH=NoCyzL%FweHDA5*6#$QZINpfIl-hn+TJ1` zYIZ!${j;-sxcs=eZQr5Ik8=wmbt`e+TeZ7(dvM+1V3cLq!D7BhFRM~7RZHpgy_+C1lKe*7v=Ypc_UAC2n3f^{_-DI=C#o4Aou z-w4gCZt9QbVe$HnRC4u>D~${1Dk?Nbn->qp-CtC{aentr{VC&@`WG-D^{0$qgsjw@ z2o}tl?G4FY!}v=VF~0?M#ot&>rc0STiPB;^jg5&)Vn&u!dPXQw)zl|pr_$A~nV^kc zx!ByIiCxTRmtf3BbRdZx>G@lkTPw;R4dagj9lpTLJiWOjM162OnMM1?~@m?ba6OsS{Vw= zo9N@nEk%OR^e$z_h3Qj99G1838=VnhPPvg`WkknYU>R?R&|+nb!)40U3axY_)yf#1 z^Oni*3!PA8M(AZ_ZU~)H#vs#{F*+HI%AAE}bSfhbXY?pDBuu{>(cm&fM=twIq?rxE z1e6I26I4dL&n#6YEKG$mMrTAB$!z9%Wv&S`uFRA$my|Kc6=g&xtJX4E!@_7hSp&j! zDAF%Xw=xFlRc2U_8c{d<4`mCBhWCk)Se0M^Yp@(@@_TWyE3MS!E`L zx!^{|l@XonkY%z@3KLOA9G1_zifQ?rl#|`8j6ph-F*;W*lT!wjPgjXfjyRlsQ<(y2 z4y7?9$FGd&&58 zQkaNE^16jlNAtRbX?7zW${3ximdP)J=4m|n(hBmmH*qIlyf-g_7DkYKzapZO->1xF zVFr~Ehx1P>b6%JcH*!`P(OFV#nI%2KR4CIdOjwylVQQ6W7N%YqqcdTdK#?FGGoxC0n03H6DFvPIJ~q}nTRkU zHxgFH=$y06vLJNnxFWZNxunc>VXnH7YnCxO%es{jv1R?rj0vM&FFPyDFn_$zF<~S^ zVT_JcR>l(j70L?tpw^n3P_yJF)RzN#7persJ*YQ^p*>hIX6${a*;QiF@h`1e zmsfHgVB#ffhwm*eC;vrVE}nQ-^tpKAD!v@$N1f#*R)57XCQ9Iot$vX-rtm?lzoJ3; zBCB6KDm<~0L%HX6dBD{hMl6exIfFzSiXq3#J;qq*k3lN z@+ZOTUGjaFFCs1@->Y&RiFsMphFnopk9r#u^RkTi+<946pO}|rbyk1PjMOvgEUQh- z%QEsM`q8{B!yn^!P-#FZ>QcV+rqb&|UvZX_uN6H}|G=jdzohsi^#`K(sIzp;@@u9s zNS>COykdv^x%to zC&s~vHIq?)slUkbYlzFlY5E&-unMIIooa7#=?*&cHDG zt~dka-QeWU;QiEhGU_k&^;mvQo79ipZj~dC32`P_MmXLRMoJ+{N$jfHQ;8WCB8})b8S#sI( zYl@|Q=HImX(Kz#I4|kmTQ`YbNNu}dT(U&;$&tk7S>JR%g zSpC)g z8fSe{oOMZY(jLZdd@?ksl>D1G0@!oMN!~@ye*gCsCy%_XJ`?qK)XAH+{OVpCXWlhy zCyzY3+cR$hx!AbJ&RAlcc^4An%p>paIP=a~{nf-H?U{ErG0r^N!`+^Fw1@GVycmjq zhIXlcl6O~}dF0*TEu{ine@tEaTUv)$30jE7=I~5(T z{^q2(Yt`?N(lVvw-^7EzhWdo!FJ@O4#Ou!`Z^Ey-F7T)6MAx#pc5>J@%fuhftHfZ8EX?(vw@iCkwq&YU*u zCtB!Xw>dG+9P*kFXM@#WRW0(PPENhmkM_$P@}CfArTUFeCcdCj@^9iK?+I~|cah5` ze}ZR|w^fZ%e@C6{Y0Iywkou9krgD?kPfAT3*%QbGqk7mGvwp_#3yE=NlXrKV+2^c& zA$~}l*=MbOG|p_=!yRY#DfPQwDeYk5Apa%~^6ri^o4gymUUBla%C+B~O@4(hBwiC| zSmlV>-JaRST)K~KXNj}O`WcI}Fe%OgtG{Ac>=IYN>KC3>-f#6|arzSD^vzhmeN#%W zC?)?Ar;oh5eO%TzrG6P@zKOV-sAHLev@};PoH0L zAN8G#`a9}m-LiZk^+=pqH?3UORAQW2SCNbL_g5VG?z4LylJ7o?pXNtgS(AxzW=&ZA zLj09Dv&IwS%oXM#mQ*KZfrXXUu*rKR_cY1;0OC%F+Obli1C$4 zagg7HI4Z3E$_6wf4)UE4M`=6V_Sj z#QF4_*3T%OK9d+{I(c`;DbIF`{vB7)AkOq@s~?S1-ml>vkMhj8#3kSNHuRj*5$j(% zd3VQ|PTq~&NyP_vEO#dAFZK0W{*FnhAG3qchpI{ zV);ABgT$G3S>?#1yFJs+Bi9$z!_HajCtB#ik0!>MHe&Uoai)=f(Z8cXPO>D zqdna1nKqz)cPs5w+N}PO_k=jfyR>H-`7?2bsgLn!eo|kBlF|vKI6Ws-jy$^C)6<2V6OYr=Vf{o4J?d>sjMLL>^;ZlF zPF&<)^jBO_zQO88+tWjPxZBecR=-P?7Aq}O|HyknocJ$s%3TtY2j?cZYkWG_Ex%$? z>Svi&xl5G0<{<}s#ZWv>c{hxEKhGIUj8ncn>~2rzyw#WY8%W&FIjbLyQ@)ezj#IvA zZ2TTj+NYHKn>fgOJWlLM-f7P;XXGhg5j&1VzS{CDphiBd@|s77JQiQo zczwtREMI&Xc^~bH-Qr1$7fjHOwU!TfdF{#scm=%XuV4hc)bfEK_z1YzA6NYWaKGgP zmEZ%k(+vEW;vLj~-SUA3@DA|H@D~)1fKOUp&aW3lz|X;-SG)wA|H20b!Aro0;Lj=U z13YQ@0ILN)aO@PHwfORB3Og+ynBbb&GaUSJ5)PJ&ei;uz+ucQ0Z#oh2yZQzq7a+K1fm6g)fJ{qWt~XqK~e^hUgiJyrINzDE-h-@?>a0DS0xyPpMZarc61w z~v;JOldx3d>jOWAl z+s%S`e#OejJ5fBpnV%(P@?H|pOU&#+;aLBYYyDzA5s{7{<$tN`jD^@cgvg7NC07xU z>EzFU^MDD*Z?9{8)U`h5TK_?O-IL*3-w!Mc-9wU*8&iO{u); zHt|)tb6-3BQG`@J@s)|Z?S;3Ox?ebIU#}?TKiexnphEM%@9%+ap|Xmg{CE!(FSUJqUr$r}$6Gp&$eTCgPY4{0cF6hP10}~sK@p)V zdYSj;`*m#vJMTDMg3D-?Wr;}M-g}@5!d742Ytwz5IX17)9J`1Gv61S%f1)2~W@@^L zIJ3($_1N%Z!;E;!f~nsFRXmIw^WpjiD1N+f4l2Vho5lQ6zX!_1FFMJ;Sed?Wh_?>4 z$UH=B$?u~o9-+7cKboQG_;CR$bEnM1<~P?y@;m$1$vk}m8xv4siTzwQt^^gb1g77{yk!8739=qBh@>t_6(rQQWv&1Mhc)y65BS_`>1M(CHL>J zksJ%A?2mk;crVs3(JwOp)^QroqT$X*Y(4cmt$t++*UPwL`joXXa+2;b-jUEQsov>$ zfLP>M=8(qnhojh{oy>RME=xJf0>3{V#}4^R{KcM` zOL(VMS82pq!?Sp4UwHM+*$X>{og(-1U_)!)32b}Q)4k)O^Rey6J)=ke=94@Fxb~a& zxyiLlXqtEf6^Q+if^Zaqo*@$zOd1pq%3BDmZp%%|M z)wzPsKCy@VK4j0Mvl{uWwvM2AX9)5aRQ@{h@=h!t&uVvzOo(97?Lco8&l-+JoI8K0 zx=(6d<5u^hPQ+O)&qRuDNOc`_pFp<|UHrfERn^_9x|6EwMfalB&A8>N_i=PrqRVre zcOJL8?=tUK;8B)m{_i^>zyJXv4jMGn z0fL4aHNl_*#2O^&hE2dAQNuqcAsL)#ASnzQx>3SP&o8}}UK?w=i`(eNv-Ee;HNB+Q z((|KRYVlXPjoY-v8e80A8#UV4Vi&h`m+sQe`P|QQ&&-=iU}DAgoO5mT<$mwy``mw@ zfA9Y>@66)!X_YN0bLPCHvKcPfEy!Mu>=|SqS6TDT6lBk;Y&Ei-UBI|bQd zWOe*!>-bMAQQ7^->iAEKjep7Wy~uizrEkp9@t>{ZKdnM#JIb6Zbo{5e$NxRIGbbTi ziL4p_=$cGlE5PTfK-Y!?B9E+&e@|@ui`~1aI|Zs!liKY@R>!|5HvUDn z3fYOs)*!3n|7sooY4s|52w5Hfp4j*o*>%XKBO69m$N$wj{?i&&_877{{ypyTe;2Y7 zkZq>#==i@{$3HnWbNPl7WzK9J|9lT4G0(0=HVs+wk)`ARY90S+ttvZ+td4&tHvVOf zu0)pi%hTGB)$xCoj{mfMDtiW59shi*EMfOfWTlPTk)31v)m4vcpWJU{H#*49wf)Me zmUThuEt}`bTmFo*2H6h!&TEe@_zPKU4lt%Jv+uNDwaTtrtfN%WlcYtHUHPj~a~bd*>!y70r>!4axr zo5d#nti}iNXSMZV&bK5MsUtoF_HE3>kG1H{V0@*sWhQ*N>`8Q{yL3)bofYV0d|dGx z)oJ>_OJ^3}c9i~)PFa&ZM_oEg(K#WZGwUm=vmBkL(D?<`Y34tdPCq(j{u7;>*un{& zneU@TX$c}ac-=oep7oi)(LgwC12M(5Oo zpI3%N$FgTUKHC0K^fCv|Ui;|ZJ=-GR0HsfV%G$Wn%s+v@*;s7*;;hx^&2jZR)4yZi z^F{~bd&;orvHf)BBSp?PqBZo#gzYQd(Rd!gZja1$^sQIa-fC&fK-b1HYwxnxY&@P` z@_xjncVQ8iXI(l!r#f5FdGPi~%p>xJd;;T#N3f1{% z=~~e?C(+q;`!%BT@>f;oTI1(| zjbW=Z^L49JzLV-4b?ID`r1MGD$+w}LPV{|R^?8!|M}+S}enxdNHk@!m=k!;!o&1UT zXWRH+a9WmmobxizqWcE%k#_!q=zes+24E2?+3=;hcgUFXmdhwZGX;? z@#UI#XU%2aO*8ZEiR5|L=h^dgo6ftF4rzX8CGvau>)LK|J~PO-PhV1BR*h`8&BQX} z73})?w$0H*J}-Ml`~rKD^M@>#k5fjs<>kB7)=q4l#FiQVwC8I{wwO0(G++xlp|U(0 z?M&#M_GQ&O#}&g|)w=_|1L!sLA9_D!#<1oSowKdZwDagJcIn)#I_D*H&U#UGegd8S z^eZ#}p|iluLvfwcUr?PreB0x+OJ^*8SFZVHuwCbx(Rm!58vm@<%)F4$xlMIeq4PjO z=hUyLpE)i+=c&#nbRI>guHUmhos?7h+;olKL;SyU#XmI`|BQs*%VP0wNAD5(p~gR} zAW5%}_5ADBU(dnv=x>Kz{!UbXb6t8rq5f_|FLTPwTH$FkbNnx3O#6Nodgb_^KH#Z9 zZ%0D!lrN$8cYKfKKU{j}sNP2Owxf57>fLMR$9QftF0(qFbLcE`>0Cc@KFf^7UxU70 z`i{nbSwTSN#<;#|+Wrphf8N#pQ{-J&*PNTVTl`tJ!f9LXafX*2llfyth&pov#m|RgDXXkkieD)bn7jr~s#|qEE&w4!FpMBla^XSSaT9(y%_Aj3&#}hN(-812v zErB-XzS1Yiop8i}*`l*6;F8nTVXTcV60oz#UHdohil4XN?2$g)_PWz2{_N@bMa-vO zmoJM{_Y2Gwje8e4zCBNsIV-R&vVnc~$=qJqCVt5G5p%xNB6i!kY89T#%_Q#P?fF07 zVQi#(+E!rSneQ~3{NR`PB)*tjncR4v#E)jvem3Ss z*bk_WbM3m7xkU0Lzg-eYBi^SS=KbFd*qoYg^4WFK9s1rgl=-BNmVdcC`kOP4KL0G3lV{4= zPn-u#|3qRva{RJSzsYgoYq5FS$Z`CJ{uRci-CrWdl9b&Lw`qAf{>xncOj>8m=JFTP zIuklGew#S=z~)okVl#L7*Eu&ab5F)=F`M>U-sJDvZ-vcRsQlLh^U}^d$Ty$b_-@lz zxh5FTY>r;F)YkmBiS!2gv zJskU{)&=nX6!@VOcxMW{B?Z1I1zwy2&q;xMFOJ`PIt6|r1%5aMejo+jngXv$ftRGf zb5r0M7su~8lL8+|fgeeMccsAFQsDI|@Uj$mUJ5+(;`rTXQ{X34;73#7-6`;WDe!O# zydnjjp91$?9IrZ;0zZ`kKb8VNm;!H4fj6eWD^uWwDe$a|T+lZ%lz#roanR;8_>PE6%6D2UFn3Q{X)*@ck+9<`j5U3OtYk&rX3m z7stzoQs8|l@ZJ=7M+`TQw>$6a&+Dq~-ggyWcz29nFI~Jkw5@5!?z=+w^CR}9h_1PH zaWM9f>Y5;5lMcqeCLO%Uv!eWVWWN3dZ!Ha!~2uYE9-WFUUcAofhwpK`74 zjz8VcH9T*}O6<2eiQmH=StlH;Qy%@VKE9`IzQZl`W#7;*I3D&r2ma?s{!kL%p?pE9 z<9Q^<(FD~XKv_>8VG^vC=pu5Kf@61{u*{(r4gM9cxMDHoMTPrru0 zHL>_aSCU+M8+Jy^y*qI%Ik}cC`IKDBHSO}~Ik~<_{{M5fthRcw;sGc{yWku z{#<1K;~gvWo7af;Es{sDID%U#A@1T)CV)>#iKl?%~2kzgd zwm$x6yswY;@n2u$-h~tQkEbxjH}Q+1=E&yuk2VU3POJCdDlQWHTBG-p#{P@jl4Adi zjs3lET_|>w&swfS{~7r_dVS0CgXG=ziSEaaoBO)?a?PE#+AF_5Q67DFj=2ZY{MRZu= zYyG5+b%{tT7!ipJV=V|Ff~9)(Lm)bsA}-tTy(` zqrdth_r7GkO=k`cGoHfoYy#t8t;y5V(NhwSJC^vEC$<#2SC6gx^siIumhmHV;E!*P z<-42TkCEqb+VH=%;~D5{rmy9;J;K^WS$Xu|=kC3Y{S{6t`AFB8S|6uO`l*fUwCO)Q zzt&F<^61A?%ou)(Iz01%jydJg;k(6ldGu%7Y+wJ?TQa}M{+MH3=If`JtGRa;%SUTX02sy;J&f>olCXZT^@b= z5xJLY?i-r5;+Nkw>je7&v;O^ZGr9{UHal{0?w@k+(9R`8Uo~Tuc>`ZQBWs9`S1TbIm4%v{*AsKd+rO@= zn;GT!AVby&X)jqHWUX+m5&hz~+>_q@xaZ@ieu>su!N(K_FLD@kXOJcEFa2xBZm z{KMC5qdSqa8p#=TvdnV?YL~uTv*+Vt_veq}V@=1^rcPe#-(64HncJja*!Fp&K;xWZ z+a%h|z2!>sYkq^+%mc}5nv4nQ|0CvscfW{__W0@o^T0PmkBlAUOfHy*v@donU*VM5 zJpE$cW6$s|06O-xnemb(eJAjgw8>CN`%N{!6ILX72s~r@iTTY(bOng*1<@lh$#Xe- zw#wM~#cG-RL@)Eb-2XSfi6v$5kJ~)_@*QGs4m{%c#*A5xU1jd$SRgij?0oU_waDPx zyQ^Y)ZTZjEtKP?zUuF4s<@nkh`@4@f%^D_omE4dcwZZd7PEOm?j46BkQTo{P9IHti z8~&GHk#VQTYKiqLdCn5w$6C)Hllk}OJYT5!AkXB=qkg`MpNaKdkKL(1XnYl(`E_J2 z-ZIa>a^A93+J!#nRF~|RMip|OE=J_((V~(}`?t5B3CGLYOKQ#_(jGT)k#nXYE4(2h{aRY7amGd#; z_h{LZaebPb`0;}1AGJ>Y{L{bRI{AjgPdlAnCG8=7bHp5vEgAn~uaiTwN3N4Un>ccv zeCKX-yVl8{f5GPYXRq1$`WH*eql4x*>B^%&)&Bd77i|1L-!1V=Ju_ZhIW_ql|2nz$ z;_KvFYt39?=FmZT{w&2h`NrNq%sTnz(!_lJ)9-%pb@H8t#5y^&+0My7-F5MG@|~~z zzhIsGvi0>RFOI!VzP>hTO-r#(zFC{d>rYJlqu0s7-zMq21ncB*1N}H@oqT7uYn^=2 z#`)UoA8eg`d+()LC*OMY!t3N~x20YuUwd`*I(h1?#5(!*ZsrEpI{9{k&JA+?<@Z=8 z-}tm$C*PhI(`)CEw+mEngYr6mzx~yV&aW3;C*Qbjo?f)w-#PB=EwY%vfjzDeCyL!G`o%w%x{>= zT)(`_JO|6V`QxwhJYiIh4OToA9Wp+0%rNF$t!p3WY34dy>$l?PqKC?(|8kkgc09r{ ze(bz3dA*Z!SUIlaSX+JSXzk|u;xkSMah0{nwVLDT5{oyN^B1aeOV$ zgmOGn9zC^4jv2&;9cMp|_dlDPw-?!d^41FFWqt1?haI#v@xChO_Z|4!Tvd~~O#1Pj z?%~QOz~uPc#GQ2Q%5^MvNR9(!!&j&6xb>?%`ntJ(EwagLZfhNFA#1#}#iJwJVtH5e zJkM&Lm;B4IhqMcMT=c=);tlB^7j28@Ux=QR^F6utBI`-(k?ULb4BKn;ocpx3J?5ly zUE0g_b~)Dx2M*%rGjdJ(bveIG-;@4Lb6#MsDZo?yQX4rW*JX097WftqV1FTcj`O2e zO^!`$udcRj^F}GpL7$R-p!^c}F3yFg%l&~GzD2Z$bE)Fzc_w)e$5wT7`f0Z>%Urc= z(DC4puj*lM(VoYS6c;~5&aa%%BF8q54t>p>KQ3S4EMNA59K-+cx3sw<{YK8g%{*50 z9di8YTaxQN-~Lt0qu>08mOUZ*z_n67_?gG{#?CL^d|k%so{7ZCF(=rUrT?INndmd) z=Og679B;h(IirWT&AG(?L0h65ncJ8PODqo$j7H2JHRn3eo6ndefrhANA~HH zU$A}m&CP9(>T%4|^6nAiLULwozA4WSdxfW6mfCZapR5*rHm9$8&)8UhD%YQK6Xy>Z_KfI9el~^e}nS}Pp0uL`B+!3@qQE8 zzaa--W4s~1oPMi5p5Q!ax;Zv_n%^-ux(DaV+++Rt$tUOw=H62WlpJ}u{#Pu%()W3v zLHg($(}hyTIDPdQxi{377CpP?o4mhn^!;?3S?{?vVCERck(K)i*B_%%8CN%bo@-IO zi^lZ>c@HA*roS<~j5$9s6>&{Pt|9oOPuM)YvRmp~Jp-Q+%p9K@e+C{AUj1LoewJX$ zuTY;jKl0>D4o%LIuOaAlPcu(3U%BR}4vF8|ea*a|C~?bq3$cGHZvuWFWA6HMr;nKB zH;tuDiYW8o#{qmOlRjYU|L7}io8^59t|!R*6rawN>nDx!{zB1D?Kll|^Njqy8#eKK z*F}Lr=eP6^^L{ATj01svv+EgO@7a0c)i2uj9%eUF_L`0L#4EA9DE}>ZKfXvVbK9mk zKK4C&?ZxCs<1+6*lt+KEOZn;a`)0|T$yL%iWzJ1yt>K=XdyJJwUs|I5DqCdjI`h&z zxo)QYL9Qj5Ycg^@(dbTEyPtnOdP>HCX$RJd<#qHqT`yXn?ZW8yKUk%56TpgG z80Wq}xIwXW>8~y<1MD&z>!e)tPL%#ee`#jkrN5k{|C{wj-m$6|In(al(&pC>NX}^U z`vd=U`C;b6MS|1r^?`jpuIK#lH@4k>^kpfhtb($)dC$Wy$_&3lk(!`L*jGskfK zXJX{~r=5u_o^s0MJ)?VH%v=_@!xL_ul6fQdn|-ZQrtUk&=cVDtAwuFrc8vh~DbERTM#LEB2c_hI_R7;W`g)%%G0S&iOy^sZLD6VX}0 zR>{4Rbo8{eJ>x`JFPuI9#Mm>uoCcne_4H-AKAyJXd1pU4 zG`_jpO>_7qYwIQReFSXrt(Vz8WIsm^OEia?i|^N(xytpPCzF^`nZL+YP^@H-970;(-;BRqqZq(m@P=99&j=#lr zE%?D(_**p6-|u}n;qS|zvi{DFFfV=8uA?uT?>E?f@B{7tFK^ZuW=p$EewC;H#`?iO z?Rtc`)sFwdLsDcC&x@axodT^s%3m*D%&@wz$Y z{oYeDm)rU6d+&`tp7@dNKU{aV*Ovd&FS2q>!<<@c`WEL7^sR7m{+ve~4X8a@P zA%|gd*vgvqjBUpsthfE^#mDh2Tdo00tjzB@T5it&>@n((-j$s549EeKD{~C;inPDa zu1Vi{mwj_?to&>6_E^qb<9}K2|NUs9_-n_`?9TG&cV6MStK7$Ao_K`*yjS}3_jrf! zcU{)*%b(*ICcZBJqpX!l$Gx&{#@0*Pz>#Ng%y|yyR~%~;lPft!3E1%9H z-;Dk%;W!OW0vNZT*tFntxOHnX;uajb-Fwg{!)5@ zWHg)2{5A4#CY!W~)5aE8bQnfDmi&1%ah_&6fJg0l`qAbI10&-(DoD3w(nQX4RvGyO zURsVa(rRf5hZCKKwqF6J_1NQ28q>!nPC6BA7;>ahohoGv(h4I+Of#>66thWH^H<5g zxbN`_CkYXm)4~j~QOzKdn7B+VT#D2!aXYS2qLZ-CvB}4#&4J(vVfxslnjl7P+^t{A z$kDhb4YD6|a*`30c#iT_#KTaJG>#uyEKCLepwd)J%Tz|HrTHzBCcdTBSjH$wlPIyA z)&@=6&p-L9I!zoDV6rIe5@eGyZNjwh4<1;g6DFeC(tR*!OBWB!*H*<* z@h!cCe=s_6P?$FUL3O&xPPa10q3K8EpBQq&GFHJEm_k)B5ly0C;z8)dO8&`%whPn7 zKPa$>xGu~fbfPg9V@_JcsGfKZCPy8eR0HFOkt|Kx$3G}A)h4NeNrQrjJ0RvyJ{KFW zHd%52VvJ7qTZVt>H-ABDft%CrF<%nZlfMAyd7|grQUY%G3*!uZ%%9DRWeih%(~+ z)O~J5EMs(<*qN$Er-}DdPr8t4R58`W&a`Z0YJ|yC#vs+o^b69gjCe3@pBp)BnT!%> zhNdcGzc59LbPJ<0^0SvthGu7amM}y7lg>Bg1(`0c3)3!)Dwr;^^1GV}q*a+yf^;e) zK~C>+BPT2~BVUkVWhBVy=UvE*9A(7L3^h8VO&B#g!yqkMO^n8W)Lx9vIOs;ysQK0U z8ERC%4(!ZOqXwCoYh`9is%91|(=JSvG6rc=W)LdB!7DkKDIUlV{2FFZm;uXViXHi> z0YNhJgi)gg$;?q?2r9n_VXBF&{0y>T3~~;pl~4T(a+!vGxmTDTTg@WJV2Y{M37v&O zQDBf+B`|2Th{$BbkbYauXq$CfnLMcckh&<4A8L0lk0^r|e0f!wZecVBmmd*kSdlYO zADh^bzlTC~e8_y+vf%1q!}gt_9g$$|E{TJ;S#FBI&2rPIw^?pz*xq7Ibuoib^h9jzqY=9 zM`-6xYVs^GTcUm}u2K4HckXPse>=)!HSXNu%HWPrWY>=Ep?ZI;2-t^=*b1=%YiqGzdB3$^l@EWL zU;0eUCn)>3vDp%#;_HJ-7n{0LOMQao`*W%a{Q3N+F;w9{TTExpj@7#w{Y(9~_&=&~ zuiLf7@HZ%5((uq)Q*e_MS~# z`Tj!U#UooT1(w-q(ST&bpHpF~x=s0s+MiQt%B51=tfub|W=kAzF>Wjl;FL+OJ5FiF z5YgZ*?K?6fCTx?3f{{6pbeIejnEa&3fUPtl17mq*@=sn0*cLlE74VhPo?B$Z(3NN=Z}PT#`i-l%`)rAY&d`6 z&iQ$a>t-f#CWM7M^ZZR)n8fKrFjK`wl1`(@rI?AYp}rPlt{Em-EB51B#pSI{ySCSh z@=L6Hp(q`%PCL_WWAX7fZ5@>ex64MYq#{fH@qDtf;x5P2x?=L@S)>axGc!C=EK8z4 z8vUmZXbx*@>`%%Aly^as%PT22D|S--u-5k`mA6s8A3gE|Rk1(Oe}M9R(B$$%l*_7~ zT;4}HGk}woq-Rje3zN#vQ7&<%k1Y3Os{Z8iT*_r>PcAQ}ylRZ{YRZepC~u}bkMg8E zc-kq?PAZ4@bW@%|x%FS1&74tr*@{QmkqbkfW8i-FFN90{g%`l_Bh86Me|`|W#pFT$ z@&2vn>9i>;+C5hqAOwT0Z)u&-hGzc4VLOGRmRJ`A@6S@{FYVEtGqypOlBR zj%f5-=f)`Sp?r7@{lss|-Tsi5w3Cz%QJ>ck_>+G!X4E9|mPY%3>->fB30dlQemV&< z=R70wJ|O^}gM6XjQ$)Wn-Y(=}LN$1R(xm<}LE2yBlFOz2Gn2|`p9$USXPKBVahUdb zYC^1q;#SR-mI)`&BkfR`T)!(_C4BKbP%oYKH~k~YpLB`eFBXj+cKDO}(*DvP-R1b1 zPWzj7D@nFHhM%IRWeh!19&3NMekqssA4;+-<1xx=c&5$xoZQSK13A=8%u8_@&Bcg$W-{ZyPjVsi%v-+_ z8;N;_^2zl7zG6xb#PMW(iMA$3lh06J`u_#`$CH!Qi)@$Q#OlqBMqkWE?p!=)aXX)% z81GjJDds-!CS(R#qiQZHe2DUC1Ptc`lk^8cg|413jIUxjnSM=g7yZw<^vCD=MDG)SPE&s$^(&J7SML)mq=|QGHubxy zKb|(AZ%nPAzVt2Wt3$Vmkr91$Y9shjN~Nz3Eg#F@5q))PS2X(F9O}Q%zB+XPxdX_( zkG?w18;yQ%)9=?;rR)&r9pO(#nEKK; z5_4{Rd};()@zFqE&0zeW7@&T!xWZvdd_0e;ZPv<+KI#uq>j?h8@z<{UBj)1R=r_mC z8Rw(Xm%_*-+AT5n;=^?M|4VJ)W{}~=Ev!+)Mq@TMa1WsNk0G0q$ejI z@c#9bznZEMXU}N!*vTsw*(1^D%V)7wFJg)O#CwBl9-2NBjSdix(=}n#GG)=|DgPrnEu%rkI(GL{L9PYew>-8%Z4QTzyJO_0~gDHFNZPxP5N54Qr2|C(_@8RKBV-x z(!)xbI}F~fl(Av>W~KCB!xt-MOc0{(855}uUa~T#dfvh@O zc%kJt`voUHpN%JzJV^Uy4lC7oGY>1@s+4$4J>oGGdyHl@u>impEqN_r^w-occXO{hpzI%P*FT-_zCa>4V6{ z`yb`_ZSVo5$CVyZdO+y2=8pE}K+ImRxf?G0<_sIJ+z>Z<)bHu)_jL7pdYR(Jf9&R| zUi{r$=+c{Q`ORL{t8vI(c%z?Up&5fp)!&T6%6AKWmfw3rPkusgMu+7$lMm@H@;HFe zqkd|7k(3Q8Tk^eU!;^cjNKgSWxM3?U-*q@RL-aMGc27(x%e?{ zQ0WPw&pOlkX{SR8J=2a^ek1;h{b@(FzQ#SRTlxJ;BdVtvxo(%9ddqJFH+pKczKI*X z#A*BqDD|rz;&6|5d7#78qn*;e+3U#FOu;vXt=_3;Ek1QfDe*{LQ;$>6HU6h+98*mk zz0TA_7T<_J;@{M6mG4m6qIx7Q*SMLAUGZmXjZpM#viQbI)l;Fkw%61g)ssy<*LaYp zV~m~*)kA!OZ!EKVrku0*6pd@jfbzs8a#Ktk&pK0jk#mjDDF+qr658ubIbiXP#j021 zo6@TF8kJTFMIUi&tWUJ#loHEt45&PMjD2`RbCqT(rJCrG$A~s=O6c*PvHZq-tH*oV z*7s_BUX9PI@p*~M=;=YO%B6?6gx`o=X*VzNi635#%iE@Wv(jqSLwp-u>yLE^}r${Nf4WF$vT_|x;eWPoAn0(gq8;M{1kw>~jZt}3wlS=!P9uoSjc?4`@Q6esR zd`$R_nW~34jh;@W`;>;2Rwz|}xe_P{-iH=I#9^?TBOm2Xrz{NI@2lG|kY4ftW~ zRcrl9rTHp{FB{IgOt8CUz-pRk;@G^}FPVTlfv#Do6ZAu10CG$_1$BYBzZl)zr%o z+UratKEXE}P(A4?2fN{D!d^OY3%{Ym)=MXT(Id}B8ro;&(vMT`h)a&Rh2KDXNj}qw z-_-9_O1bo}^mgjG){AuF7JkD%l_P#5*Q~TsUAaTO(1UJH{h4pn?U@g{!yh}DtEwf)^nU@{y1)* zK-|Kw#~&j{{6?-#X|>8#QSXdPuFUf5v18;)w7$kUAzS6LxXe}UlFP7sH9i_SugbxS z-Lyd~mv)MHI8HEs_?dRX@*5f{K~^5gHT5;lv>uf^NWBi19PtXjpVx0%Hhj~W|y4b@*Bv9ku!OqF8LLIJ!h?)=M42~5^|m) z%Wo*Oa-Ko0e^TiYl{-wmN|zjQ3%?;pGIFAdpTb4!|EF2<`O$}y z@GAI|inoJTSbjDAX?{C6^_m704}<4fel>dLhrxaDCloIO&#?UJcJMOJBhSM3E1t`F zttYSS^r`@r{u!>>LE z-Ul9mKdN{Sc%$Xl_`rL>tKg3)-VR=2`8E0A?cjy*hZPTl=UILY_2z}a(bIHD@iOoX z%dZK8mvLTs7QR>U++HW+wB^_A1J4B?fY_-@7f!1r5z%}MY+@CZEXt^E0Wz#A>U=B)7GRqzKCZwIfi{GFNL?cjy*or;IS z^DKWS)E@@-!FMQL2A*O0JIlb!IIqP{(|*NsId42|`8(^ubHNAT+ZFeM_gntXHgGTa zVfcL(zh)S`*YbCEInFi1;GOVoiuZx@U4pXfHzwHPV8RO16~E+qIf%a zh2`%&1Kti^2p>^A44!BC$_(%@xDUQr@iK7Ag|Ey7FXR08EPSKlxtyn-wtQs?crN$= zd{}WWc)#TDyZ~4jt;C3BNW6JQsWbzD#j1c)#V>7K3}i55t#OeC{xKujSWn;%9A#!8_rL74HMzZ~3(? z;CU7P+}S;8pMe#oNIvEWh>;csqC@e4*lD@I1?}?FSEo`{45xF9Xl8 z{MupgGR{-a!sjWT+v|8wTmG(e@Lcc#_*})k;OG_pEUIw0F`MdhS%Q(M23!kBQZm%=>wB_#_0?!2>fcGly1@E`~ItSbfei%O8 z;#UuYV^{cf*^YDdFnA}tqj(?qe#@^5fcJq%cpCV;;yvJvmS0x|-UANZeopar@CwVX zYX)xzFN8mj5u&)|qq`{^W4=5f6&$E0LdaeqC``}L~UIw0F`KosCvS%GR|KHxP zcrNG9r!8M~5Ih%r0KQLgFL=M@tB!$t!4Jb9xA>f4@LtPTopPKx!{D9p#}w}a-*5S< zbKrg85%{Bu_kcHA{%#+54|o;)5yjiVD=dF^K6pELA^c&*!{B+Azngkd)AqNo$dP-&*eP+wB_%q2hRl`fNxja3*K+}d)mOg z;D_P&S^Uaj@LtQ`)8#l<4uf~Xw<+FduM-G=&k^uG@CbOT;yvJvmcIwPSN4Ec!M7;h z4qjpTd(MEjgBQX_6c2;vS^nM(@G!U!zFF}yaLR?hHy6B&^Yydvjf&@Tec-g^?=1n( z1s{M9EA9pFxBR^|;9l^<@bwnIVi>&F^7pnn&K1Mpo$xh^_kr)X{JjUj`@kdcn-uQ> zZ?ycq=)Ix`yb8Wr@pkYE%intfydAs{zDn^hc%J3&Jq;cP_rX^xUIw0F`D!nC8Ryq$ z;VTr+?R7lJ316K9o(nzzU#7Shyx;QG#o%7>!|){*pFIrTYx(L;jx&20yc51y@jmeV zmalFB?*os(7b)HY-e~!1e$;PVwP z1JAI0^)PtZvyO8XK2P!7UdK6Y`St1Gx!?ovxr%$i`z^oT5AFp&44-3h-!M4;3%|a| zaeTwzo$!9e`vCV_etk7~A9w^lTk#(7M$50K+}8tM1)rsOJ9vfV*LQ%ogBQa46c2;v zS$;jczA(5CK2z~B3NtJ(*Cl*qj`{P_mR!g1Tv-XNQMyTKwbCl3l}al({*n6VxJD@B znF-zqfIah3?h z@8v?hym2U$_IVq+@T9$-vanz25qn)_;o-z}#*$6F&ca^H&+f!k`sTtOt>3M*Lus4R zh|(IRRZ3}Bxo)(uP$_ZAb*hEA=s#)mZ0r$_@UvUh9&wp^KCWA8dz5TKj(D22e;PSL z6a4bSBG>EWoVWP(16EJYX=^v%_CtUS2EI&J<^@&sJFCZR6hppU#A?h7V$SpW!`Puj@ z?X6K%8zN`PuCr|Enm``3!++IuPowaiF z&R|#PL-AuCaSQJwUg=Ns@JIB|8yp$`Jo4xshx5p%yB+5Bjf{U@yV`A2edM8fDAumn zjac4CJ!6-A7`u&0c59OCRwvo5O0rv`b~SJFa#e2*az|bEC4cZf^c(x+&)D}R+4m;d zcShRxpC4)8f70slldtODggw9H3*J|0?fLt(-tm$4{Ir8R&;CP6_Ilm+o^$-f`*B@g zOOL}B!)yB*z6d_u`eFEhTue%{vm$T_LUwWiZb z_bVkXQ;t7|;)kL6O3^F)T$P`DM)+r)x#+1bv3}h#(Cf?{w)|}JatCcScSz+>jfC4VzTY0ks=eTCJ3XnK&{m z%_c9xXPbDSgUaK(DOWw&ZOS()tx;N`6hBP;e5HO%uh#glKBc_sy_)!>{?)``Xs^<4 zr5#H5DJ3pbFW1tmPAKhDdQ_?EyGr$4)uZKIN>$%gt;%aWS7|&~X*^eH99PBcWoi9% zOXr+XdQz#{pQCo?XdH9e6>nBrB=lKlPJpk^>b&x?yk2Kcq2=fFJI=@QxE7%Ko1=E; zcvar9H0!L=Q%W_TSz+aKEWJ|wyHex6GNR>;O6!$YDJ@Z|@n50(ujsVpSClC&RvN44 zv;6GyO3x}CQmXlw-J!hNn_Z#2+Lit+?L3R$8sJLTR?rbW3Mxe6w1V*ZQ+6l`m1M?Ih11OB|Q&SE}uE*(T*R z-b}5RseWc^oSCO=y-f8t^Mvvmcjgi0dz2nfTCY^?Wae0YrrMdQc4iK0`9Y;!N;{RR z-!u0qul~YKWqrApFr9=5PrOir< zl&T$hPEhoC`;;D2dPJ$(@g7vZQ>p6nYI}PfTRvI+o2>OGw@NwJ%fqZoxpuwF8-^$D z=DZls_468wuPo+L!!Z0Ni?1vZp6BSwR8PK3&mr{Wx%3=DE?4!?ukwV?Q9byPcL+V1 z>Su2b>`LrRW{YsB3J)pEhsrq4`58}C+PFwD2Q>y-XG;X=>CH{I$ zJ9FLVSR&uo7Q-L4`Nj?B+Tvc`p|kj^)5?EPgpPs;`=T=NTs&<;%yN$dljZY}>!eJCVn(;D;Lp zhcC8x4*4x72jY+MOZ+Hw$>m! zuR6}1XSM#5@P}}vLirAOT-mnYRlkidPn}V`2D}wqk9Uo}yV3WY;!D6QIL_1ajBR=F zWz^SkX6nzQ{${Q30ng&=ULBTiJO}UN(xCb$^{2l_{Vc^_f+wD0#T)zJhp4aiOnutF zIHs=){0R5~D{t^m^L4Qn)z<({d>_+%H4@)+;%jupH=TC7?UdHf2PeKpohOVwKX{ws z4tO?St~&3sM|0d(X88w+C*wT0>J#~lSMW#k|KL~P`yGB#L+kg#_ffwmp-tT@g1$_}KL_5+FZOgPzaPGb`t7dzdmU%>NyTfyTO4QU zpz_u55$adD>X(6QejdmLXIwpyaQQFm->sU@h9l3J=O7vmC*^srY*EX6k1sUkOipG-&%uzNW6H{zHl{g{OZl(Rdr^UsEfn zpXbu=2k+MU4tTcXgkAk>${BFYNBG2Z=DCJ&e?orBi`dil3x5&(7*m_#;cob&=+pKP z|74vm+-K#(&G7rd8(sPu(6>zSRp2$$&sV+}eiQYJT=nz0{;lzaGr{w~GhFx-^krNA z{&&C~>PM8vA2}Yl|5T#Bm+?|Dq&VY6o>N$SMEPF$KI&_Kka)aZ;5t6{|B%>pzXia4_`!m&A+Li4c=_)ht7j%@wKyamKS`|IdGriC*g@dG~mJqIj$L0 z{22Ht@S`rA_Q^Y?cn>)F2-Uz0 z;6>CgR(;v<0qSdf#@<5eYksy&1Sdba%GZ*g3FN2tTta`^dB?f#q~&W*J?EsI16N-3 z$$JRbbt`@p{v`MjmpuLFI_>|p^q(~PPp#HB^7NnUG`?E;kG!W)+wPL5|6Hg2rJ}qn&Zzo^4>ztF&BOuT*q$>`SFmSnr;_< z5WGX>_knkVx4Cfo*R?VG^e+$nt0wHi>0j4s{Tlk0hyGPl>B2XGYyYe%0ec(MV{4jW?<%6Bzhrl~rco(>%cq{k;aE({mSI+Yms=vW{ z_%`qwmwY4mu*z3}hr!EScoq05#S6hJ!Sh{s5%>|sv%v%4SuQ*Wyi@UXa6h>EYy7*M z^Fy5<@B0QF>VEA*DRRV*Kn;dQfS%(k`V3ly)lZP`Y1fyV8A1+myB{ZBZIg+N`uu zX;^8!(i)|klvXRPQd+6BLTQ=O5~amTi1Dav`^`ArN@*WReD6}VWo$Z z_A2dBdQfS%(k`V3ly)lZP`Y1fyV8A1+myB{ZBZIg+N`uuX;^8!(i)|klvXRPQd+6B zLTQ=O5~amTi#Sz0W#hQOS;WTig!3>$SFka6J1d~Fs6E2=4{V=<&w}z5Y-a)c9w^srobRyx z8{5~}Q9A+*f{TT{+5mNV-BDl&rIlFuziF5X>81EOmvR( zBHM#(e?nP0^k3Q5vAx9heYPgbC$eR;O@jY3Hr5cQj_t>6|HZ~Rne#IEbm%;`U$K3S z?b~dxQa%H^lZ|sthw~@ruh|;dwy}MI?KcGW6GMXW5?x{Sn)fY`3$0n(bY- z$H1mQH?sX-Z1=)@p_|#h!nOx~0`yyKceDK^Jj8j8?Ne+&W&0xAZ`jVT{V%pV*}lxS zn{72)E!#r2MQo*P52NG1`@;Wk`+{c}Wufd;{1-g$vE7i|6__Oj} zEvJvKe8BGC$=tT`5#488t?bZ!#{J5_(|yM1%KzK$ul*VOFET;;C3^N>aqYh|gPDx) zNDWf{E4yEFihDSJJ9Dzr#xOg=^B?~_bDHc2eUv|}<;3!lzqRG}F>lP>W6M``aP9S0 zTi(d{{Yb!;mk`VH-`MhPw8h+ivgLOir+lxL=TQDzTfP$6F>Dz5q6Wy`~T99uTn@`dQR<|SJm+{8Qe8*TZunWW=IE#FW5H?-WLe6^NG zs6U|Pex~J8Ek8*AdqVY-tB?Fz%kwDzot6({w@%AT$lH%qPXIkHX!%j<-)PJ82DxT7 zXv;(7+<8&U(SKu$mUnY+{3$K(p*&N|$>-!3RDTCc-ZyM{O)K|at8IC1F-ycFwtS0^ z`$D&C{c}7=x>D=o&*b;CoOW68Z(82PH`V^cmfv`YYmZOb@~!BudT4WA@Q_C|b*Zy!F{x6)YV^HHnkqdpF4 zerU_Zyj46#)sLOhs8&@Mz4DAKgj!5>gV!a z?B1dJ$-^8SUrPtM$MUu#{WXqTKpkMRwfFFNO+VbUR@kjf~gXAZ>-x~+`-=sf)3NylbxUuH)!I@-X)rTV720GM!f&J87>+Y|t?bS)3iUhTI0#v$74HCw(F zJ(&k=`Src{dES=S4>C_~wB^^fGf&=Q%WLY%^9fsiT_bsZ)0Wq=Kl`V){AOagS;u?W zE8nWLp?mYR_b+9lWJvzR^_&-zq{Ad>Se`V{}m(YLy z!s=N@EVpLc@(1=Y|5VuW+&1Q)*t&oZ)4r$0lJ{(R!y(GQ zZOa4npIdZ(Xc(eDciZw?GN^xz)~8NpnJvHGA)jBg<@LSHKfku+*W%B7?LRfxo$`P! zzpkEqe$v*jts<`fu;t6qbF0p84;;qsd0T$VLF_)Nc8Mk9d$v5ck9j7|mT$rCRrjf$ zYV`ctmOp_1({9!JndD);+C9s+IPbCLH#BpPO^<&0=L z%R?u4w&lk&CpyHMbBX{$x=;DUMKdQ!`9kcbKdk$Olviq|V+m7?R!M{?hN5Qwfl-U2+3yJ-rZzT3_`r|Mmrm{o+q1_E+R5_KTy5{o8((*#FpliTxtUoBrLtIZ=N5_Y?aco0Zs~D1Pc+ z`s&1f@y`-Yg>XE)M=l#hrJos0aqv1o@r5VElLbf}?(?FSu)a1HX>9Gjd~HT`*t&g143i zO7d@AyrkfkkJmmJT5WzGj~^Z5C#6aqv9apIxACD`C@Cm?NCNqAjpY9UjNJMsp~xMz zJ41gUQ|lT&`G+u75Fjku?N&ti?L7HCv(nv_;SasdE?_wF$1?oDAItD=G0a?2kRJ@z zwY1c3X?Un$G5b3kf_07jwpuW2$%Z1TeP8e)Gil-CBEckKuTA8ObU*~L-mhdo)X zT&y$5y4qFiB8APh4LeqquiN=RY3T@L=SVhDaZ6IgNWsm)yS4-)J3^u0_NMw!l2X*H zTDLe@T6$MG2CIUmf!7$@7ZJqB1q363n6*{wc8>6WU4$;YF4V{`AQtS57^C2gOeoYW z6^r7=Ex~oc2Sd9{E6b^$>^T)o{?}c|%9hegXk}?Ic>nfYGUy6!-X3~5SligxR9DMy z@QS|yc9Hs{LrF9kEqe*INy}W+w`~opDruR5;JU~y_9umEwyzI#zxA8y2As%Pj`rSU^85TTUgUSgid!M zD~ZH~KCy~Hz!(}8dueIv%-vx#mry6|F6tIvs)k=`8vYjB@PSyvGi*osTevfEure0D zM1B)`w{1)_epfba-x=AltBzS>C;jrF$|`KpzmmGv7{hXDT}-r;UQYMiY1>Zb(oxgN z$T3(FpLjoLcXAnO;1``&t-B>yu_eE>G+|*J?l9Zqeqn3?#QTe+#O?U_CcF!|WUY+p zjxGwfTp|ywrCVr7W{G&C>~tk1Qm{C9kNJ^vGw2f2QlebaIUkZ2rb{ zXPljDydGFf$(?IN%!&M5s0GHmS`-vCHa#5L5!@obu3UN-OX;OqAKtIt@%mf1wc(Qb znXE5)V8{{W=<&eu!&nEI@exJ09Jk;FN35%nN3B95M)QYxWhUl?9Ho|UL1#zP?p13N z3-MUTS8_x)dfnszs4!UiP?a24>FQ?^8?3ilgSER_eqYV1mZ>kewYG6*$Q;i}KVBDE zTo{y#QCyB{;5WxV8LAJ~H8t=4AjVh#O9_BL0usw;qibAK>lQh)VM^Cwp0Ji*fS_`Zt*43y%g0A+xa2*2*)dtg7_+*IQHZi_!8PH zxY=5h2L8mZ(4`C|SvBF@8ao$EoJq(@o;x1b_?Kp1mrt}?bUwX#TWvE-_?D#8#1YM2 z+R%d3C2Q)%v7sfW%BD#^v~$n^P0#5SR}7`)KQuG3*@z)Fu6)u8_H=fP2`R2?^u?1~ zDw}pjw$d06)i&-j=Zp`?I3_f;`oINSQBHs>i0h{jCWlv z_&w%@@#?-*^TK%TB@bTr5RFetzwfEX$SLQ2&I`8L&Aec*!H%;>jcZ;QcX}?tyf9u{ zA8=k6ubKE*9%nw?^8y!gIU-mkC$$_d+_Ix~dwtWkU~OF;7xUs%eK1mce`%qqD2F#U zbNpwI0hR<4r?t#`_UOW1aYAK5scfaUm}8FZzwhA<2O2SRD}w8m##ZZ52Zc-Q3_Om* zGdX_cGM6q*qZQRPhH7`jr_O>U8kbzAdboB+{dkgPW8Pw}myMmS#T>4g#KhFO(Obe3lLu_eGY$tNDW6E(_)P>d@ z!tG2fvllp6Lb;sxJHc(W4cjl^;fUo|?vvaYviJE$do;2tw@PAFKg{#0#2wZ@lr?*k z^$%g~0=GNEe?;4nKceji{)o1B{~>J4Y8ta+ZnnkGgY-t98?^WO+$AGUfkx>Xbuy8t zF2~x*cl<^uzKE>7a5(aAVO;iuUQ|nU-!G-1@m?w%uc3=vcSyeb7xV2RBBM|6Mz+bw zTXr8%p)^z~g&+EDz|k>$z&n94g=3tT>dnAJjSqOrGNO;fbtSIJq%`zr#@YKmsAHF;_l?(y3--PdEi$eK8Sh1z(YF8-T`ayljJymt-e`Ug)#LR# zaYOKuc{_&6GjT`v`-%E{mc=r@#J7Ph64Z6s&ky~ucJ0}SPA9Okz^XADVQ$POu zCzs6Rn72?qH0>$wq9p9b4>s(5b$f#~0gvmRpx#SKNPW=8AJ^@aOJ*+R9hFOF$vqFp z@2gzkk}Ma(_1MXEIx%V$acdlX9rn`Sbxouq-fpyc`K{m&roTd@hZ#&v&xyfetSQ*~)(knx)P;4{d0ExE^g zd$)8xK&`~D=8@7}&Y>A>%G1J~G)d$_Vw zzq_$MxHGbAOK=NM_%>|6KNt=*Hivd_e>Ygavnd$nxr|16c_p~>?Tz*CYf4fZunR+yz+Mr)`G@@&`+{NrE5SJeR&)P-wz@K#!FLuBWwI(hx8j??l2 zd12?~;Hsvb!8@Bn+qdx$UQF+fP$ayg>0#?;Tyewr6vyBCAygN>o>_ea7!;J2e`hZ>?P zpBsetYjl^4UXzXI2BK#bUD-6c&CxXB^o5tK!er z$f-@Rp-G;gCl$d+-PWL)X$uROi6gZUCdByD^>9twgEDl@lgGUCCVYNFgYzdVR|Z2Z zb)n`6Ptt8^4CRk1DHv6Y?18tZRrgnE9wf;#fuQrXPcAIUZ!5v^0D;kos`aOb1qQeW7Kfm>(u8DV(w~ITYbxinw$a^37Dz7Tv`#H%;asnqIw4qIH>Ksad z(1wygS`Q@EgoYZ1w8j!=Q0XKgNt=v;q~xFnJ#7vp&cx5)=SGV&sDP=1{bX+O9Xf;a zR!fymv7h*g_u`fNzI3D`D$b3TDvq&IrJnb@_Fm69PyUcYJKCwtfhX%(`?vSnYpwm~ z`M3X^K?gJw)kTkjUCs($u~yM6liW6W3H%sCq?ejqr0`)`lGowBKKdD^_UeRO(VXnfgn0|1BfY8NiyZf{iaMwqW3Z) zkU67_}xXlSv9dU|=d`=)ttljeyLqo-mpTntYb*fqP`BOWpouY6JE5@~O zun*YKMkhEFa|(!4_=))v$0^?d-T4hxt76sD+Wk&Z|Fge{lJ?U|9}qm8i(H>m9lycx z_qTmF8s6cA;aLPMnWJkq5Y&*0rk;n=^B(j}* zMeo>y_`vda!3UHtLWfrg51_-RRHu)_OZbn-uTe0`^C^)}e#GmR{E@#)@?HHoC+oq^ zjK^;Ofa3`M(Z32j`QXPyFTc@i8hmdWJe~$`PlMN|!OPO%1vBG0<7x0yY49Uy@ZmK0 zKpMO=4c?FjFHeIP&WvYYNQ0kFgC9+UAMoN|lX^+rPSyKYzZHJa@vlp~`gLdk`ZP2M z{SveQ`bBB~Qn!b0a0=dO|J=~CyLX{#GI?5!Y?H4b z+4i1ETyXQRddBGN)ue~f%jf05L? zHZd04yC53-aMFK6vEiGeLytN`=vp5?Kp%7r`Oi4JW7(PL{o9J2k2>``V~!s@+&}O` z!d`ta{3z$`-;GND0iP!rHhuxRo4#*o=MgE7i}Ucskn~|qEd{Ik@Ayu%e|W6%5wM~6 z;allrL?2I|7Hd!Hbx8UgInc?8AG7%*^BLEFZaTusOn)f;^z?_x^lkLr_@2I-y73#6 zUixlt8DK-Hk+CCjUalQtr#Kvg9uY8Oaq4r6-M%Md>?LXxX1CuYICT#8DB0a2%1}mGN4c*aZ%zl zNpd4F@HyZ9jD4B8wT27kH_oknNHCjaBk_%vCVncslkifBGbubyxF}QP2@k>V(ePBh z1^JDVv*sq|9U)HBq_pMmCpEm@$do^-^IrdFvsCY*{1&g?z5r=DiRt&~fh?ccFL?}4 zC+joWDy<;DSEW$~z9!NfB~3V)2Hh2>1bmT1;^nj8V@Z6feg(uAIFN6OSBlej5V^yI zd3D66zGH;T{de6&c~eS=^7Nf2?g8R%oEUds=3al&7S}Vx&k*}h5Pz>fk$APuXf&bx zQh8lT~I~ft4L3AIc%+Z6~r&&Jx0JqVj;OH}}^HF1N<_LI$ z<+G21kAS1!tail*!I3L`_G$1zaP*v|`zB>}f(I?1eF41lamP0fzfsfIA9Q@@ET2QV z%zE&X@Ea5_1wU^2oO19|@Wb#;iU+_CT0W-%JOI8MzR}_tW8k|iFZ)7gjDbhs8x$V} z@3wr-0Qe|)6TI&0lraL1T;X%Xza!w4@O7Gg5WLLtIY+<;!3*JQ6z>ENT0Z9#c<1A0 z-;Y_oO9stIpg5<;3wg^RLU=-6#Tg50|ml^ABL|~JOIvr;blL|i~#s<_;QQ; z#sGI&o?CavHwGSoFH?LJyxa1DcJNW~CiqgtN5C5_ABcmGfLFqoC_V^YW_j6<(>DlS z2p>|s6Fg}7z?0yVL1rU*Qg3CyIzuT}Lqkf%PQkUFXN+4uV@#>|5j^9B(qW~0l%l7> zHz=)9ie4t%u~h1f@ILf5bhlEe2NK?^w8&D~Z(72|enYX_&=RG^N=-iO567MoIoqut zX0ac#v@2)K^0^n_8+ny7Zuy)8@I2qUIV`eT>WM60dVaH0;S+_aIMz{?*X@(n_V} zO3Rd%DkXm-k9-ZKei~Y&v`}e*Qp&^Nl!KvurKn_h-oH6>Ir2Ev&cG zqe6lZ{-nkqBj0N^{&|4+S^0j-FYA+5egI$lp40Fr(Jx2Ck?D+SIQ1fXfrf_&zgfev zF{{Of=O91hgbmN4d;^ki96Eyj-_-DN^nR-i&qb#HIt{--c#np+Bj*m4e*%5}QsqRD zvq|G0LGIscI5IPSqv6!Az#0udiv0K5@a$^j|AWdO!rms8PhQ!sAMnYnFZlqmkKe38 z&-nwM^RIi(

PbFRNx2R-4dli~6)d&>9Ait_c_`yw5i*Rojdt#^3m>$k3LoEm-Q z9jx)WJ|ff6<>MINe{|KK)bKZ%J2i7k`D~k->As>_W*Eub{@1hA=4#f)xto;@%u<`R z2;n{J`#kgRWrAHAZKhWx{c@6ZX5oX^G8X%?6~RIHgoUp7@vYk|OjYZycQwhnbu&wC z#I=|3_KYUV+79B{TIvD%!v397G6IIaEyp;BrnT>aijH#`2dE?d|SwVy*7wMSTJ}1w? zxV-#Qleyg4U#fNrkWmk5+P)NvIO%nJH<@s%$({~rhFB9EbJ_7OIgF!XqCC%(ju{nn zOT>N(Wxzt(`sj9=Zi+Wezd2Q*-)q;Y*}bv7=kzwdaUH0e|C^-`P3n`j+DZ#c#{Rwc zq^~=tNkdtuw%rNMd`j#6U3IA`{a<&lniAm-TfMyg-CIyo&7ah_x|vLkIKfY@%$dek zPCt&45nQ)=E^s<9YMR^7)P1ELkF>dC^X8rp%BZO+qo|N+`uocn3zQm)!X34aD+z~E zzvQ@*mD7(asVrZ)ywXH(nZ=4;_jfR!sW-JNO^mK?mF!*X zzsM_4on=Uo^k%${NNjH2)F+!CyT7S2Dx1KPdAjkuVd=-)%t42_ z!{#+04~OVciO9wHbhaz6nOkxh^Cn|UC2Z>0kkA2wDcgm^P-HZAL+4B^+crB+4?uoX zWz5I^Y~DpIDh2lXGfxSf4tLVGR+?yE0aW~>apZ3&(7etoZ(M0?_>f_ z(vKY~Lq;|}s8AV=@XkMUzNWE5E2NE`<5N!q6g~b#d|$;OZB8h9q#HX_$+Nt?-(AV` z`UG2K>=1kOii~t)hfG~3rfIK|WXdo7*r5qBrmL?aQ+!>-YZuX#&wec-+V?Q$QV+!! z^1~K$ybIdKA@8Ry@!KGN`^aQ4Iku%f<1zVeTm9#FxUI6G-U-&nYMe!aKmGm0k#L;w zVW)Hz0%WXp{z5)Y&OE0-)e7hb*OV7SGMXBzy( zd?yAzfc$UCx8Hha_QFTxJAH-YJp6>?ud1OUw6MAO?cW4*#&$mA)RWdv{C$j33Wy%7 zzVB@8Kk#BS{IuhL=--}-4pFtyy@jz18|6DOdbPyYRu(aq!8Zi0XU|yD2CMdQ9CdvC zJIy!sjmz*y{Ank^_w@p!??2x-N}fSIKdIl|E%t*O&nB@S+<30KpU=ymBYj(CVR+!i z3w#?tgpMnb?>zLwr^J6BmvL7$`zZt`Yfru7KNc_Mdp>!}_x!5&Iliioa6Ii4^nZ4w zrgm?l==KEi{%2)T|6iOST~__hTBm;5XC%IVB>onsus>ez)P6OyT=I>5eMMBpIfMrm zAUmsc75T2(@A%_yb^PSvlkr|vd@Wwpg1wKNacUS(#(1bx%l;bwq66Rm$Ka3Lat-I7 zbb|3eGcSD$g~q9ovDF!c;nj>Cxp-A!72o-*hAIE=I}OMWstsk!_9AQ8dy3dC3a!_J~Vefo31t@1hTRr8$&X#`=$mYDGrCEt{CYNsxA_GdjC4L`&9 zt?xTc)Q3;0--{W8(Z1vDPGBWA#A!+W@p|Jsc&C5g27KZ4F58E`Urm+a%8UirWy_HB z^UMCq_}i4>${Rh{jSJ4ZW%$r@{}}E6%O6Hz&L~UAx?04_il3{CW_B`7@vNtnEXIRF)C@*9GLULZU*YVXm*>{Qmp=%gp zQX}z{zmxz)C-E~rZm>QMtP~&CeAOwHHW(f#87FRes?BG8 z+O+wvI`kF31NeXAvWLC#7uNSb_lv01i-)py+WKbtjVvkuBjR(~Z6ke^6aN7^|D{P= zVDnl?JEvS}gZ-ZkJGDogG8?|g5qTnaqD=o6k=ZHnW5212;tyZ!-m4jNb>6Anmnbpz zF;>XfhwawBocD@-*hBx3F#SybU;L0hW>Gt`8r-s?++sHmIhnQloN&CAKFa!}#I5hu z-$UN8b8on9ehvLoZ}_cerVvw>Xc@0R@qc7N3=Q<=8E{rsY1 z#I=3#=NBDUTTc>Jy==(wuc~kYs|uvdUl|pB2@i{YBAfR53AqkXPnJl!{x#o`ezHvT zGi}`XJoDqEb2NTyc)oMq9b-h>^?#Y`rCduN?A>9;*~vAOx}xJ%FMN^sjh$`uON6;& zrJPIrlGo=>@7U9uN4#SLr;a_nc~=^|Hx1sD1`nsfi__rF%=k@b)8M0N@Pldap)`0T z4Za}_UY!OHrNR9(<4eZU;K$S8htlA?)8NrG_{KDNO&Yu;4IY>oFFltAKamDMoCe>M z29Kq|ThiclY4FlCcyMNX@%c3P$u#(rY4E*i@OT=$Jq=!;1}{s47tD+=8c&0tN`oIs zgAb>{2h!l3Y4CdwT4c_SD4DTqGYwV6To;Mdb zese9Yx6i`;AKTzOxas{-?tys@bBbdbnbEjBOMHxbtNn@bPi%4=8DlQv=;c1o_XE{VPD19ev^YHX3^+A4JWsAmyiy_e2TeOm zE8Y8pb%|e}mNYWQXXi2Q8Du>Ck(;Acj9b_HiedCCmwOP#Hdn-p(cupCaCuT#Kt zSD^m|xuD}=)X`QzwNVRgB%);u$OkMfZBIm1qG zxNS}-{M?)x(tS(nxA+}@2Q~h6wtc+(Zn>Cfby zNrAMVja82_Cyi%yJE!26-!^HPZ-Opgw_(3}!M^NET`|BChFuXS$4g&!yDg3hZ* z)&reS65GGPtyjF?a!TTqg`F?*^5&hq(~vnr%HPoc)fe49>9o}2$#pELqo*z5K1YuD zPU$yazK%SKq~2*cciFNTm*=x7?Th&JNtvm6RciCEmP%Uc{z?W=hN&YjSleIu(sVY{ zK4Qr>#XK7Equbs^zn#xgNB4)MZiS>?N*`c#9PhC7SNoVBWaes3Yd3Rzyz*R`Dyu|g zT{po_nHNNTLbsZvKQ$~_PLt-8iCj6XKgYijrcH!vtX}jb1@tA-rv#yaY5NrBHPH^8 z*k=|*c}Dk1S*YGaQa)8Xm_J3klk1oD=P!O_p07X4drUKr=$G>>y>J&g_a^6bO`0$D zHEAomb-c8H@0ckEo6pZX z;_t&=`fzEBa=nyyXVPxX95ebLneT-UZ=n4aO4;`>_$KeIc{dFI$ad1ww~^HGwqH{h z#1}RA;Irt-ytB#IYe^%AT+gYuVJ*XL@r_oW7;Qer`}d~Ra}u==n|?*&nd`S)%RSfd zQF%`!?T30*9KW76hRvLp+WLRKRr*0I|NOS(wbI&JZsxOzoxH=8GLiCIm-zWzynhOF zUGdSEnR#pET_D$)NB)It9%058yh}9oV7l^guLI;Q*O+Oq1LVbZAS%~^s%M;Pb1fL= zI`DAdxab=nxPB~r#(7-cBdtsP;yQCJ0Owjz9UjP~pFh9Q+V$_ZC$9y(m%@gF;kMkO z@N>De-CsN-bwKJOK8Z_wY>80j^zXFEeSB~D9M_@mQ3%$4pUL;Rz;W{a`*n$be^hXL z{mJcJm-yKec0S6%kC-8DzrlqoOI zwZ_y{;g9HbTgr?6D_LIO<+@FKGS}_UC9d25oKqYhcuN?6?UHwi)Su0!tU~T}JLmMe z#80Az5c}$=AGewXApVy z{a>K&B4=IVrR(J0R^BPDM9=0HOrCC~WN^f^ECX*;=Y*=J3= zk!yIt(DhuyKV$fi>r3SNlGpI}*=x9jiC-UFu+FxHNxuE+qluHTuiP9p_e8VY3bwnznzH`G&&#<#5fXY15{?`r20=|@0Lvb0eXAHUc#IdATN(8Z@^aI3~2CH}|od#}tZjqjj;LoV(0 zQ_}CEw@>^}*<@)r?{}SIQ}*mw9h);uMZ{T@=dFDzi+qri||2o-Xr%wrvEoO+xj8)F(-JB zy&w4LOZ1O>`X82SiLWKj{r1k=okHVd=0)o}Y+DY`{-cz`T~ZFQ_ZBp+`hm3dpWY>L zDT{8(;`qA6i}zOfoX%uf@a=*!Gxsn3emQ^f1=B}9oPEspJufb$?AnuMVao1jE5(<# z++O^mEr*;k()uX37Ktn0fUGZnmS^IccJty6EAuDMWBW!auZPY)rE{Er`XebXTUIZ= z*Ot}K-i<#C#ed4z3a@hczQTR3V5Xn-MXcX{b_3yDzkKF947TMdKkyL#p{_j0`*y#i zQ+~62V_28?$rr+WlQj3?`+eOzKhJ%%kGe#EUc1k?F}|8_uTro1jx~+X-*0?=uj})3 z&#TWjga>lM>k>cyF+OjS_Gs$A@%c-?6uqs_f6`@qej`4|Z^ZvHK5sPfrT!bAzw~tz z-`peoWM#_dKmIuPI_8^4s-Jnutev60&QqBkluf;qjqy2o(Cawz!eCavFC;O`f68Fi){pTmX28g_{C45x`waCUCVKXFd^d_6 zgSMQ}U;0||u+M~JKQ{O8@{HK(3{!@$P&UJ~iv#dO+>1r%yQB=CfsaGK9Bwh+T0)Yi z#4+V-v3=xQ0512yXXG0773nwidB|L&xObI4)V(f+>Hj?MPUJgf4c7(v#u}FEOStXo z1M3oFUq@bJ_1EY)BrHywLw5WNSMPobdEvJ2HQIaRf4eC01e0(#Ux_a|w+ti_e8Yl5{CU6veCwzO+Y_br|1bB~NMyQ{T#)v9|sSc#2gMU^OHU-^<>kDiJryqJch;_LSW~wuuZ-KlN^@yv6DMlEEDH@d<9Pfa{b`So>0?YpSn|Inr7p+L~Cz| zH3Mmu6Y4|XwlegBjZlZSUyr zh)~PjvS_D%NMCT@){c%4Gv<=Ux84__JCXLiu$`Ww3kbNUjoCfaIb98;35i7$lo04o(H z1XIjmvRDk6S(|D%>i^=ALk6rmdl4cXiBEJwtjvlwO9&W7%<&B=LR2S16m)aXkTe8j zihzuI{t%EE5+=%@5|{#E4)7-gy&%kS{vaUZv@j=?G01t#m^7IIWkS$Q@{lwppG?UV z#{4pCAdU9i$rJ^N>OTz4Ji;HM`X%#BhLMUo{z0f;q=lf}!qmtg{)-TQy)p)ASH`4? zDa3eEcFBhFPo>^20v3JvM~D{6;x|vn84-I%NAqWX2)>TmY09nPdDp2r~@L zYT(aV(g@9#xM*wyWM70qn)&639j@q{63ZAQP8OWVA!E3G{fWeHmG2Q6=a2q+g@PxP ze?Vwl8A!XF0t=qWA=d_x=f=Me-o)3i<$?nXE>&!W@Ny_#Dd%ziD1R%bu6&7qoACVH z_-_*iaj!yT%x+ltxcuR{gTu%M7yGg}M24h&89JLobe6n?moC81A!#J8{Jd1cB@fa6 z98?CV%UELxm$dF7e6I46hx~+>^Pn*NgqL%fdoDjoD`EM<@N;EJ9`X}j(u+;vc1&D*DQAtl_LAroN+iB7jj2Tx z)t`ii6Nw+xLA~n$NjPio{Gc2fm=vG2mwphM6kmK0CtS+E(!`fPsnvYS;D!^4Ur0Q& zjF0h_S*OTdS17qcQ6q6A-xKJ29vVr?o4T&isQJnC@b|0gEe{h2H)EZL3ORjr_?|sLKFa6`BGVz@y{Nyy@7YRQ)H9Vt`@Pm`W z(I=yf@I8d5^ikisrIB1=%IKf5k@$y*-#E1_G(}-@1uXQ>*hPG?*Qv<<*wZ&@((8xXM@CV!XGbxTN2G! z4w+|(Urww`mz%rVmhq3D@;_Tod~Z3Bub=WiOL<(Do+08>{%1E%h(B@tG?7XBKRZO6 zDRpF;I)x4XL&QHs{LZPq`fOHmEwrL!O+a72*f0J)FnyY2{VDd83wdP~ClWtuB;Cd7 z)2W83ROFRK`~NrkRNo=W=9lXwVfwl%=>`*t|1(6ojgroEw&~MVlkR9DF?JYQf2sWT z1pX%XuV;N~wrU&7KjYJ7;ACBzY$uWU7WwB$`j`J)^wmB_)~S=W<)+^qd?fFa`Jb3G zRPf*CA}jaK42c}dKku7+XTOz5Kb?*JCn;B_B7{(1#n(0TK|=9+ z#_G!y6I<7eJ7G3njD@{3ZNC^fhv@Q}oS>5?Ly-^0+H_NuA_>(8=86 zwTJ6zi^^+Kc@4xb_sFZCB(K`y3ofX#7>m38EVUx58mPCnwL+A-@Hj#|Ew{G}esdW%wz34b*RSN)ZTTC|sXmnZf?^NeV)+}-D&7R| z>DPRXmcQ|&;`Q*3Cq3mY{EgUU>j!zoAbxO;C_QZDIKwQJ zcGk`Bar27kCXapceoF8q2PJ=S{B={4Cw>I}n9CEX+u}E&pVU)%ry%l{oKwEV#=mKo z@ElF5Pm$_Vh~BRJ0O<=XU)ez10M`-XS8D&3KgM;0aN!r?$NVwyO882vPyQ%)ndKLD zgO7rXd@cX{5%8ep7g9g+N9bS2;kCcYAEf_2XZeK(zz4xk!fU(8?*ux1wMsc-qE;1O`GKluUhZp$w!1P_2W!53Nk^2Wd$ zEWfCn*AHXhmGFg%kAjz3ei8BVM!}I&S)lj`c+m2TI>ATiugBrFe&!8w{Wxd&MFZf2 z;3we&n!XeKxaAiOgLi@-hW9I84}Q?{i>P;b_29eVwSMQ7g732YqEq0d;1OOUUDWge z@NUa58V3)6H^E=9cyJ87!Sai#C&4lBO89ZbN5RW1zZe=E1uuj@ulNXf(DI9Ecfk?* zeezjxPVqsm3+F7qn0g!>1V0Hsrg$g#amz1`gLi@-hCi!#J@`S(FWw7Y5561zjN+x> zyDY!>N$^te2>fZq1K{13UrfHi0C*GpDT~h@18=bW;`6*V8UwF{KdJaAc$wu(gW#j! zh43d79|0#^_|j7F5&Hdc_~VKXa-BJ6`O-S@LGY9Cql$NeAGdsI3wWo!Zml?`cs=+* zaQM;~cs=-T_@j!Kg730?=^pS>@Cf`7#RK5omM=XF9sqBGf70T!#=sjaUwVSqU}NBw z@P`#21uwIF={fLG@Iv@QijRN?Ex#lHKEnFIafto#4kU zzoZ7d6Z|mz0mbXV4_bc7M(}#@-SESTmxAxI{E{emDR=~aui^plZp$wr-K+q36Z{^F z=Z=9lSboVNUh9p4SHkaBd=$LQ@=K0`kAfG%4=FwZ9<=-U*Ie;cp6ocY+^=A5gp={GjD;ss^tI-whvEycB$wsNq#~++LUGQZMDcVQ#xp>apSLl#-v}OO*O8Ef`lyy%N0Ol+xo$ zk0_@&RTQP3#-<4!>XTkB|hxW4yUADel;N!= zz0s3&l*f(b)(<9Kk>#_GX*&F5;s-39W9)g{nRA|a+P)>-9PAT52lN1Ij4Be zD|6+O?l?tLk61n%KZze@wSJ>l`$RwHZMuj!jJ&YY5=|E(p2uH#=q0@C zue>6SAFwnyZqo(N6R$XxU+}Euvk%$)f@d@yc6sYv@We!a1<}u2?}EoB`YY(S`Odzm zlzhdG+3K&^#5epwr3aMmRXQm2acA}b`DnX*O94Fobl;P_rQo15oAMSshxmr?wRlda z@Z?7wF!{8rycY0t)_xP8au7ZTy-fT@jaP>~^=>@!ts$PaLzAx3;%}i`3}0?>c^@Tm zW*xTq&Qkkk4J(g5qR%YVYnIUq-sB6dSDgIB{#n(?9kY5AwH##4e9PxzZxOc4LJuRa zOyie=pYX&FSw6Q{U!7&AFiTlv45$T;cMvB&VGN;SW1)hlb zs`C6tls}+U_40?6S9zJ5Uhd;Xk4%-5c|v&Zhp8uSJ-BKE{3yKEgR3@he@s4t&q2Q7 zpS1WK?7nJ)e8*9_2UXq(c!RA6CjMT_=Z|arJsNLUsvekpDHpdMm~=6V&p)sEMlCMa zC6llEKNCHSUF!b~^c6m1SSfN0um1Ka?yI-qa{nf{yazE9y$szb^l`oup+}>&XHFq} zqnF3%2Fow3<{DdwoB`^h$ZJWZmwgK4dv)lLrmwT|LWf9SM_lmlA=mIV$OFH6x9~t= zl~YN$-q)FU<(8K{7DMb$kljSxZntt*gyE65La$F{XWFF`&k;@t=S{#&t&TOP7zpA0_?)PyA2u{{4B4za1Puz6HDFx4ajg@?GBT ziGMHgcPm~Cj{ZgJ=jG_1h5pMu`e%h0zM%Fm_k$OMt9;SdKgMu}LsnkJarm>WM>m?v z&wm(PuL~9IN8!h}6`H?EKfv&b3!1(YJPxk@Geu{4ekS@CUQ`_YrJa_0^v`?-e|=E#FMvNu{1N5%!ed`K?Nok7 z9{w&=f0nbqMke-^cY1K@b)lATc{MoxFAsb08itLWQ~4#})bH|;2QLLbt#}Z;1U%ru z3&4+Ae%Uy9kWtF#Q@9KdyZWHwr`bPb9Q>3AKLf7iv+Nl7Y4D>S{0aQAPSbx1e1v|X zUin?{2Z%rDi9ZCc{$CaWr+zN$_24Z$KFa@=Q4f9se6Qk%!H0N)E9_u$lrxj{`&eeh8qZt3*klz)NNpIc~u@?QFuN)H|aFVXaV@M3Vs zg9pHiEx+^}xSuUi$5OaFH_uW3EPe9t8RG(e*n?AEA@$GFL2&F@I^e<4cTPm*(>|Rz zc)JJh2G{aj+6dkW-r&KpZ;sl#6#JwfU+S^XsRmbhOGDscaJ5I;lT!lj*Zc$U_+zQ^ z24{>_Wwqw_D~I(79p^#vkoWF}o>6*Q=_#f7#o+kEP|DTNQKiR}9#wio>61ziD?Oz2 zpwbbg2b2yg-K%tu(%njjlcRB1$MuTsjv=-;WdU1^KbjY>BtZBp8( zv_WaT(mJIzN~@KIl~yV(S6ZgDRB4IQkkVqMMM?{m7AOrW4Jh?1b(G2&MH$Dqg5!f6 zOF1@k{3!>vJ1aRpz#&@`BimWS(Z=z9jy{eq4t(e|bD)E>j^hrF+c~yztmXI!$9p;M z}zM+XOXIq%_kCr1^>pK~nch;r0&tmkOwh;Y1%Bg8?OILkP0l>axTBy-(};34sagNm&YxxOPqgFD~AJFsNod1)aKhOE7Jujt>-Tp86vn8#p z$9wzF?DHCY`HgJ zo!LTrzBJBxy**!khWp3eb8;NQ<`T0cJSQmUx3oLdRU0nvkc!7_xK#VVjT#@_O1`1- zsoU4wV8iFtbC33_4X;4vHP2}HFwN(HhF2r=4jX>`Mw(BR4PQ>2{C~6IaxZ-Ihz(zM zgnsxV8h#LaYBc;L_g9}(`E}&mW5dhGQPd}zQ+D(*nH4t9oCw2FpR;k6ws7tGCzW}c zCcQ(`k}7|-4ZjLoZuV(j1KbPmvEedAHvDlLzMS^;mY>=1BJz6M_cgqn@BINAK4*mD z8Mfg|5AnQt*oGJE;XChpZ1^q2pY=l^rFA&vlQKO>ooo_<12oy z@sFY0_cVSx!*f5N`O@#?#clXib$pMlw&BaVDbq()&R*oKQ#ts#@Oc|vc#&@CA8mL! z@(ZrE;a78B_Fa{8jyk0Bujc%gyET3>&$s{E#xE$L8|t&+OObiiVwLYF{soO+$$OxE zHheBRl&)9#LG1mth96*j%YV1wx17fRc{cpoCWe<^wBZ%VFIr*4ufbQh7Hjwr&lG=V z!{=R~e$;6=^}+YB4WH9Vw>Z~^FQr`kV>VpgAJ5;Z;b*y5eTxk*Y^00*sSPi0XV~*K zHvF1H=#!!HkMY|5F&jRYGF{Sa!#UDo)kasq^Zp)Opp8)cLA+c+Nwd>#th6KxJ1ZQsJvsrp~K8dv#T9_r(9V zWE|O)>bA<}cQ(9hb!|g)^WDwN#%oT_1Z_6cEGO$;|H92Pdy(wN%1w(IWo70ngDZ{^s)$>hk+QEa)RDn`Q1_iSp8Fez(o*JUfa z{EbwWongwG*E5@}EmF}JSA zjJ-rzUO{zrTW@d2*2#7CjlXDCGVgx7-8}Dujcl)2&i0CQ>83Kh@!GVmmn}S3BsWvM z?2Fe#7rM zr0%;LiC*DF#67UNx08h_9)DJqt?vo6@y zp6%v|iL#j5!*S)gq8_5c&383-Y;Eo9_%C6t=k|65yQ1=5Z|1(g{0-~|CcZOE-hi%u zn_N@r-|U;1ne}}m)V;JS73HZF+ScB^zWEKm((?k9h5b4r)a6TEMc)KEdMe?S(QSIS zOTPPxc~e+P&)BxLgH_J#)qu-g?Ui-8TZx5TTVxGR)A=VWW9oh3`n7VEzrxI}SYeHp zJ+U9y)*;U;YT=vUVP$#wgohPfXK{`D#PT*<1K(7NdKa0*nXamDnun{3^3<}Wq90dO zid-INHnT?Sf6`mb1y!iy}rxy=mafa_ch@S{u(wx@hjxU#N+!Z-z)zh z3yHf&?zZn}PAY$e7nHSk+S|tDSIaBS7uII|aG5mjP5eNU_S>av#GBwjd#2Bqu9{P> zw{Q5X*NI;+-;{dUkC?7%Z_bBp+mco$d&`*~-Tq)cWxn}c?taZoX_|aO`7iK6^GdTi z?KjOU&ESbQ!hd*QHr?|0&%cb(|0bV>rfBmf_;%>|zIjQfy$RHuSRt>BzSRB7>H7Uj zc`;Wp?T5}Q&C1LF)_J8_KJDjD*T^@)^G(_>o^MKBFZt2a)pp9&;|+f#yVQ42qoI8I zl#}-D-R;eNk!_orH?fHyn^-n?c62lAgwLYQ_eZ16oc8r>Y3=TcY;XQxxqK|;!Ktmg z=YEOM-q+L2UY6}_B&k5hR+F;tPJ!E^t<4Odh;~IRT#>vGG`Dv!v|=+m@5vauRIm)b zPfk>tfTR-e`h12IZ)^n1VYJH@;PagU!+B#deGMlosE7G^Njj_sv ztzc$US6g!rBmX*DH?M7D=<@non;X})q4j&VdxvKx*~T}$S|+X9h(`%BtF~nq0LV7eZ5<|wnXkL zX{cM>P_aBL;Zwg4uWabKf4woF&d8WK4*A@(zDH*Agx9lS>sCsanVD@}Mm86=2}-HJ z<_@dJCGxNDh>|}QXpNE5-rZ;itgY{pn*l4hr@POh6N<2Fi(40FEZXHOlk-A#{023z zd27d}*6!9VZ5^8~QIq7+ZoQ0}aOW|v761KS=QYcnL33A67X?bb&5^eInoY~8tZ1gG zwMM9Hf_2fVJ`C5hrCBU7Lr=H08NR%$%X#M=cQkiI+d6t9%@NtFwR}oQ#gvfcQ$kiu z38{2+>UM;&u6@lbZdtMX*2>!^1}-;&w@wVKFoBbjmz%&9rhNb7P7U9)ZA+7=MU9zk zKia4-Z5R8-l&9piroQ>Ut!xKcAy&SoLbRIxE~=ZyGa{7Vf{JC!!=co#V)=@uP4t#oee!Lgqq%SU=1o1_&3$~v>+b5jD3FL099tmEnf*04 zH?7&gN)!`+Ijr>|>19v88zhhK#2tS!N^^5>SDV#Xu2;0B$ue?=Nq>elB=(Xhi?vrI z@4d(fK;;+Wn$)wUFQrIxb6ssytp)AhU>sV?IvrvIc9))qy6HI;TZ|0;wsu>7ii{D$ zL&!J)MaB}=qcHw3E7@>9jf}~*$a=K0meJf}Q2dend1Y|LqQg~asy~9~D6a1yV~i+X z8OihJ=FL6rrZZ~3Z`&5R;7ztA|0roGgsYEO8B02$)Bz`#!~B|?H}%N^PVR523{xK@ z&E#J)%+?R_X!8~+ovF6uTlsrEkXT`DpzkM;3uZ>|j{D~?+v)fuznc9{L;N$yYjwiN4AeWhOZ(fu8?}5Q zQSZ#YLC)))z?YQ1R4<(}X_bFL@~U^Te;J;iSs>?ebbm_h!rr^%PDt$h>h}|;W3Q;4 z`xZoF|GFY+XH}d9`{)1me9gm7th$-icAjxs#7^|_Ree4f>VNhZ(fGi%jo~xSrvAqy zubgiPUKMAfp;o6QJP>Rm>^%|>`jYX}_wd1i7o*5%$4^f9x!@jbo4br!F1pw5_m67) zr|TX6k^TkWj3Up$j=PraV{y0r{zFx@PP_Q<9pu%2$9IsO`-IT&-rxbwzb<}8*Nu{o z(J=$Rczj&tb2?2KWIjvU?0Gi7S$E;T0@15OM2#+Q*lH=k6FhQSZoF*w-n{U=f`*%_|u#d9c zZu~tEJcq12i|2j;JquHM=6*_eTgP%gmc&e*%iV4;bR_-eBxd=0>z&N7__p8pAs72I zE5(ofe({U{!K%~21BSP{Y!+Kqec$O8J0AMsQ({N4*AD#E?eW(|{MB#?f5oi7vOX<1 z{%XKq=j)xUCF-xbH2$hj`OE*Fl)rM;T7Tt*(f`oh%Bz`Ko~ zjL!mVl9=UhHJI^P){-P<`RnRgt5kd_{-C^a*Cl>?SbX--S>ZERntEpHXwK5AR;O3{ zf@e(K`g~&i=8ro5nte_=^|dDag~UbCIn0ibR?nR665rMZ|4SP71>&Ac*`Fo)(LXpt zJ9iL{J%ZuOeLEkWz~@ybC~Il6l74_X_66GE|M~40zN!!(NnZ3@^`xz(ACfxXAbOHt zwb5%>)Bkf~Jp5eZB6aHdRQ<@fOZCe_mr$yHX8#iYP^w;KEHrsZdmYGYM8-VIzdgLe ziIDF%B;VToPN&2%{i*H$9NOAOsWag-4)r~=RdCXUk+GrP$@qDHo%91)Yi-|`xr01S z8&UoN__8Xg>!wVzTPY{gc5S-MPk{N>vB{{>+s3(_Gy&ml*=8?wdD~vHZ;(91E^L^~ zx#@eA_u0PJw>>=HS0MFM`rfZdU+d|6zc!!zPOq@nn2&Ic`LyR6^Oc*URY#@&O$@pH zuh=a1giZgOeIPzC_hk4CWn=o@jJpIUjr6_vC5QIpd*0fg@xY|M_wC`f?1AueImP($ zQ_J?#_dXY{Fq#~{N}o4uH6&yz|8oZb7}AsY4F2o@I7hpSQ@+~4PKW9FHM67XU6l- zr@>FA!JkZn?@fcp)8OrC@cJ}(SsJ`xW;|~^4Sp&Oek2V(oCY6AgLkIE8`9wAY4F0C z@!*9t_~|tG(KPshH27c|ygLovm>F)!JiS-`dEZ}@c>z2ilQ1Y2IWbu&15A}+u4|PR4d$vVF?H!x8-QR4&OWWk5 zgE_rDgiKjT`ZdbwYUfKv*L}P~3r&<(=FJG{xAeAeLcDVeiV3~DXM&2Ykq{51)0Dv^ zzs%r~s~VHn$a;N#{bTNjR_7iJuXX}McaUe?KHp7v#;2~`;_6hq`SlMb1xU> zKBAiN@KCK&y)Nvk!-)^=aAHG`I&tnf z%KQH=^D*v4WBmtTj1J=6SX)j+o|pGL#Jvgk7=mG!kNjfho|*gGb%_hx?R{+G*dza9 z?m1fI{!H}nJ_m~(#O)SazV=Mwg4_$KE{9quKRLuldT$!Qo=35#(cDXmEJ=f1gpU{* zI}+#3^9wq-HpzX}&LfVq^R(k9FS$Q8&*YTB|E_x4@%QgL&;53Sdp5`1J4^g^iC;Z0 z_g~2UgxpWUFVXO4G@ScO>({3wPxY$OGdK)8)O#*$@qNS^1ztADfC)CJzOAp7Iw zT_oZ0)j0#H@Rz@2;=1;FF!7`0m9qbp!OP6IBqje>^E~+mQ{gY)?&ga=$#6GMZ@#wt zeqH9~E%v&$hS86@NjdUNMX$;;O%3JfgNEgvnET*8>k==2TgtQgYdmvESR5Zz zgJN5_?WfdpDc_d^5>GJKX31OPb5HAQ8Av2}hKMB+nU!SQpa;Zp4sZlHr~+n}M2B`{ zfAWgYGNh9QwaYc2PVkM&IOsnC6~lNda*4E4(UUYz+4jLKyT1!+*6R<+iTn<7gycki z^7gHSm+KPUC%SRS){&0v7b%QI1Qte&^|kP)6gn=rd63Ov> zxUu0LUNhF_d=?8j3JQYeb*vZ{N+ezxftI*=aW3Iu!Vgaq-bnaS!u_83W$>Me#6__= zYQp7D;B&tH8M(Da@8I0phfJ94Uufj-K~9YG0*@TY_YmPCr^pjt4nLYm{6xGw<|m^^ zlJfUu?)85*>oeJ!Pf7kzHdzr*WL-p7jhuUA72}OU!o@{l6E1&(`7Jh?v_)SfcoU(! zlDM&DQeK70H00&O{#Oo?#_Jaej}yLUQg|uhV*dc)brbV&{gvOS`rupNG2-qe?jW}R z=6_0pq&^zIAgPPU9w+`dv7!?H>12G3Ta=Vd+ziV9*EMe3zrS=`Y{_UKu2eX$jbXyu z6Nw*Fhq7Xl-^Y?NTz`E!XHVd7ay9o*{!oURCQUqJIFb127&;e{_SHqxq}6mK`Mqv3 zH28!1txsQXMo_#>&bZWlXD|Tf!Dy>smskB6Cfl@4$_*trV)*0o|(}bT8%AV%O(Yx2` z<11oMbMzBFZv*}Rs7d!w58F^%7?6gfukCZ+XC$SPAmDdU0o$`lI`~e@t ze({HIgT`y{+E2c9#M6Gw0Mr95W`z?0~gU%WQuY@mG zd=$LQ@_E#wS)<_OQ>-2zb!)c>~}hwD)oNQpE@9C(c0~FJl9{~?qKEEA&g!VlSuh)s(LE7^<%jd_z z2f&nZ3vPCDV|)PaxC z4~)Z)DL#16an4zOP7C-T_(}M)ig$t^xBQ$KcqjN__%n*vgY#ebIeWnC!FR)-R=gB& zm*wY>E>H>{fj^~q0KD7sb54KIg z;g2gm0v@!y?6s9MLZL!^HPDdKV)n~wgfF726iWKc8YuE)uQa)#$rheplkmjK!P@^jPOCOp6ON@vv|n|S6re~v7pR?oTJ)YG$;&msNXZsMHLcqb>tJ25HV zsKz@&)@vPUZO|N049tRr&Hr?oD^@vq?$Qhvj5qT{t4|^T@fkXoToh3c_7jh-+w6z=?Q?A83{eGB|J2|^nG7(DjRJL-vl z7x$hx}tIpZeg0z_ol#`m3qWy^7DqR`k1lxTkLQa zaiA}ozq3&)$6Agx9P2p#n4^{>#DVV4J2+}MWG~&jINrl?6URLq*knE}+zGvd1DniC zR!p0aX1&g-;$)5_T8ybsA{iT0N_ zpy!lB-p6fx88e>uRlC2ejQ!3#q33%z|AC(W6X)Z4ev-D4t>^#Fd67LY{3ho&W!N$x zyZlw2^E*A~|F_+DR>p|uKV#45ZREP~#W}f7oUk$8TMcmM$N4__z(1x{zIB!{;60vZecI`lyS6JsN)l@msC@g0tK!C9M2w z(7{(>!{yyxpu>h=TZ5c`&~S7PEZ1=K$$XCupA#lu-4}M=dBU&LaP-Ogk&Qp^0O8MR zICVQm_jA1l-7;R(a4gDtLgUww?+P1UK-G9}gZwPrA9o({GyhG)@pF#&GtRZ4)N!1Tv9~Vg@~(w_b~E|w z1mT_M=VY1iQO@5tC!4?KJx<2^H2xu?XK4H(%I^PAJ++3;%J!V^@tmJXod^F{>U{Ro zp7U>e&i}8}dG4=L=fMx8&U3$!I-gydIuG9KIX~+;|5@sM)_CfCwnygds#N%_{?z&G zAE(Z9{~PD}%l&HVJosQL&a69A=fPR2bLSsY@tyM2c`zdtXI40Mp7H;s;^clNbw2xF zQ*m-fQsKF$Q{llsO`Yd{Fd2slVohr=e`JkB|C77fK9jk!(bi2}AFNo;d0$s^TQ`Gj znj_nLJD8nwUys>yqG|nW6FiL`Q%3$C-sKH8;yIa#23(ah!U-L|!(`GZ|sBimZL zjoGrMWuNR#!3uwNVe<8n+djxXu(IE2pGDVnMb|Ki87HOIvf9$Iwy}+rYc}0uTuP1G z(zA6lv%k6`Y(^rwHoZ9JTvy!M-gV!79a}q? zFKil@D9*HEl(>yO4cWyu?CxvGROBg^RQ7d!xWiVe^^uiKBHz+?A8N1lSTL*Z zY`n9pYt0(6X==tUvSc2($B(Ib(vgbg&3|ItXr_jze3=TDL1LGYz!PPPIZ13vt(v}p zyw>>3-!`E^*};5wZtdB8Pfrg!4qQg_qICK$*~F&QROY?A^KGYCG$k^fgBy85Elvhb zEqC;S< zJZ(#Ig%M$Ziv&B3XH$nJ{=C!Q0@-E7hY42t^7b&()9rt%_ zQKcy8x3%?b?rq&Fw|g=nUh2ULsRW|+gf&nmd)igYUHZhVIrF<&Dn?cfQC+00Y<2Y3 zP}OyPYud`ABxR^=;ckv2q}G}CuBud~rh#uFD=dEeW#ZOY;^Z@v{*rd!J-rLyfQt=9JZ4fLgC_#a!~gs1gc z{A4|n@=)rRZatC}6}Rd7C9FphX>I$!hg!Qo;4VUf%uB38vR7ZB@yPA3bl((Aq>Fi< z>F1rz;wHj#^q3=YE^{3cc@IQ-hu3mtyk~MAj>{)M{axNVB!L><>uewi>yVTe^9m<` zjDU&=rC)br&Kcs8Y2h9ydW3l&W!?k5hIKcL{mEAoq<4SGu=H!0%o!t52t9_Oyu}K) zL&c}^Uf=wt%9y;~g?xu~<|E@M6kC!%j|^EKW~TK&3d+cG1Q};#Wwz7;~OTS~2OQnFmu@-iQdqq+q8)y@g!l5P!=Mb%O-dG$YTWvniQuI7;P6-s+a zw}!~#I->DT^yZ7uq#rq#H=6?-$Vkq|y2KhHrk)bhv^7aG<(Ga9kqI)A^?Q;a(XYsH z?i8J=0}a%NTZTE8I@HJ^zn~t?&<}7>Z!h($6Q5I#6Mr(->K z^{f+=^+bk#$odY<7pdlpOnmj?N;9X0uPk@RncH*O=@wm_oX)J(v2Q_YzBqHl-FYst z=T}5y7php3BoTk`+B>4my*6tvRI#pru1mst6^l;DoTV^x=)=!l&)OWb_sN`b=8M;a z2d-!SePF4b_nl$Z;?VO#JC{B91Qn@3=0^4JG;{QiL2GLFIfYWeB#b#Vp?WH7HC099 zoUW!@(en-A7Wt^;Gi#u*E{a*_gfQly2YzYRGhjUeGjED@QTi7%uRQQ<^r0WiItn>o zLhdm$H=p@X^-eI$>Xh@erMb5Xrn3HSW?6Z%Mh0`K5{FgBmpy4W&zv^*Tcl+^TOz9Y zzTin)ktXc}GG|NXkX7M_s<`pjQRFe7EKyp;JUJO$aouOjBqC?B}h2**i%*6{2JAWK*yRJR_+;sz_d&aDLz`6^y`!k0$ z{ufyfVL;Y*SjGA=tc&rq^^JeqL(l$W)cVx_F%A2EoG+`g{!4t)8a`4ctVwYuzTF9i z9p(r5oF+a=|&d_(R2j7sK7%33N-@qLaz{1VwJX~U%V$vPMPyME}d zF(hrZJbs;1fZu(~;-)T^n0oOy%pJrhq8obpZF&2uiD%Z@k#KysP<08TLxa|dpEGB( zUg|jbkFdQ!bc=tPd54r!|2xqUnvg5?%eJaimea-zzNp; z!<2QF?lomOaNRD-Q`Xw~Ilc_i-&Kpvae9C8iPs+w{TP3+K80Dof;B51I`@?EhwbNb z-c36k5ZjfnHSNLJlXI)JF=r`ZVH3xO%Nig>f?2=h$YA{vgD1nXUm@%Wbq2rrCH)a8 z%lMz+PbnMxDeLK=YoS-ySi8IKNalM<6EN|HY1_l3qkd8s8>vf;x7;9os{d0`Kkb?` z8Q+lgO2U*Wb@>Ljj>`Hi4}JX~C7%iPOxEeBeK@twiItc6QSuCl9d_-L%x&-`QU_{2 z=~Q#xDe-DP`D%zTSvTdJ#I60LQzPs5m^PZ>_`UW>`WdhylNUBncb3>ST72IZo8Ygb zpBXk~N4!SKYlyscw>t;_5_mKXzA+76lLjwI zg9m2DZ#b6*KamDMoCe>M29Kq|ThiclY4FlCcyMOC_o(8W^ zgO{bj3ueZzA5VjyN`oIsgAb>{2h!l3Y4CbZV z4IW8@Z%Bhzr@=#MaR1EswPR`U<7x0iY4F`?@TiMB&L8cW=C;Bc6cA>bQ5Y4x8FJrq z%GgY^7RQ8VBJ*D0+Jec?_fz9sbIy&kF7c{agGKIl%KQxIeAo%adFwdDxrE96j66qG zJMTz%*1M>w;n{-qM&@x3)!4MNU{#zrb}frn;;A%$G)>}4=H*-CFwL@S9f_nbM=>JInvD| zZrIg#hD3!UWoZ|MJL?`@#!x~_ZQeLjE#96l6d2U*BIvawBK z;vfmx#}-bJgi;(~msmJeTO}X^Hj0tOl~9axadZ?bxAcX!_?q0IHgbyJB?)<xlwybhtj9sL0ff1ZONpd!N1cT$8rv_g5W@AcW(r6~nzd_uiEG&C~a@r935^w zY3FC9on@@=SiICK<9YIBA^m<_bcqcQ z^XzKJ;;W36m97D#<6C}fN?)tp=$ONfqoT(=>tIbs^PGd{W`ke%p4Z89x&+S-ITs?b zE)8uTkB={2!KNQ1zDXbK;kPtvE5`Hai!a?hAZvq;+~S0v|GKQz^ONl_{(*UxR>Rsr zzai(mS>Hz5@|#Y%UDqbk2)0)0_5i=p&|lH^iAclY=T9`U-e_d-rjR@jaXxkCznI^< zJZE`e^A@L>_APv#=M3^2d2oPp+N?YD+Kq?5{Eq{N^S{mc$8Y&Ncs9rHTYm4~&$>aY zpBGz=+^Z#@`ujgL`sBAiby@p7b&=onqK`iOZv1=jzYNc_KC^ZtdKd?PE;6EL$KsE^ zLmmekqz&Sl?{o2&Ii?ILANkMN^Y%wCB|ha}m+7B>_>t4)54`v(C;Z|qoNJZA3ffH8 z?6J?O^mk)&{79dDhI2V>y{EK(p^Yy;#_#p8j4LySIrjIt=o8GJMxN8|Si1jq#yw-i z&dYWj9_geVer1>Q+~dC_YduFfN2&&cA^Cmo9R3w^PF#B7ap_~H?)h(1NBV?5td4(5 z#_9k1qLk#M#qm_=#+k>*kv#-7~E*P_)6J7EgV#ngb4^nie&w;Ye zRA;Q!=#h1>KXpr=TQ{l0=HrW(H-CfuZ&+_h`rYV!_0Ns{FWK{4(oI|W)~s5={Q6Vk4eJ}Me^Z8P1cDe1DHiuU7+_z`P;wwMUxipeGm;TRH zI+tEpY78thKfAhrHM{PA`ag5(miF_FE9Qn?=9E5}|8ZLCvyNk*V3>4d$$$O*FW0so3A4y^r?St z&OTqiT9>xIrFR#9PiLpYw#}|P*|VR|n__!nzRwwAW;I8NbY&v_Bp0CMov4OHdF<(@ zp5Fh=)3I%>kHzGJ{}}peW1TD2=-BVAA9$esVO#}dVb1nFhX&B$`>pZ713%BV75-Ht zr3Qm5Sl3hJ(3MvI&i#GeUF`&wxTnW)AhC51#_Dj34SgkmFgN`U_l|b!Ql?MX1bYX& z*{<*(v4Dt*N2R=(HCupDVGwyGD{FG_($H>!qfp5sFYp7S{7WLI6}bR4uc4cuqCgfi zkvu_ZlVGo9_@B0D9^%&T4N*4GEf5ixB8J$V1iM8!m||~Wm(7?15||L?B>$31UJzTP zL8Njc>`othOb%o_!Jbrk(K6vGXrRV2A(4>v031>SW+HSY?3HEqqig$_ijsja(7tyuGJLHZ;;oi*iA70`3B4Qr0*+rH%bMCH)lXLeti)b7n}FflzO3kbmXL zb=<1pSo3Y6dI_9#S@Ui|Y;N-BmlgV63b|&9k7%G_aq*`jx59P&0=-(Uf4x5J4;;;s zUPta)x;cGKp>#Z`mnjKRndCsZr4e5DQKALO^BOl~6UudEZjZ4UTE8x-2^j{tF zZOEs!d9a!ER?@Sr6DaxU|An3``4XgeEt78yd=T8W0S9a`^qnMqlH<0d-Sn~ak@k?3 zc>$RV$fT{C7?l2>Aw6w8g`%XN&XQiOW%=c4>k$3Fa142GoM``KX>05WN&kz@em#;d z{V#gb)2089k{&g6bjmdgodU*^b4?b(*0 z(Tv$J_5aZ*QoEBnleTLPZ`6wZi^!iwekEfZ`Me6`&mo_24jm6?SS0dI$jdmBH776s zju@40kGJMz4Eg@W#aHW*^6XC?yCTDym#_9NBO~RWLS`J9!6nCM6aspxaXT1&6j&A7|2U0i%k#%Zp8r>y*4i;I6e4Zp z@mGEDFzWwp%iaP7%%8HhOF@UyU6$t0D`gA{oslIEw?m$MJXkVJ)z4=)!xuWs`U{aAhwy9AYx4D}9QASQ=Oiev!>hk3ZWoot9g!G;FD?p(FOlT4aV!E7khRnm8t%b~Du2jXdpdcipl_%;33KIe?cBX>Hrp7Mjp?PsZ%!=JQ+TTf@)Ur+LPz`Omx z_>(n9guj!1bU2^nTA#$r!K*EQS3P+7SDgs-u10HT+4Q6nskQvO2l$klHNPSi@C}Mj zfJZGaYhaX3utx4Bcpg#6RyH*06wF)x-6wj9sF*YQx+3_fZ3 zch7-0gHz63wVJ;MeAx1G`&(86-Va}+cm%xH@|7|02zVQOwZ%*4z*{U|*&u6xfY-z8 z8bPJg;I)>oWPFuQgIB;;Y5ocDsO2juw{(KFdN09ODn7)T!1I=`904B!pMkGXya)WO z=u5xfSxA3maZ1iaVstLcx@2zVQO z*y1H~;4PM4UBy}}bKv#xj^fkcwU%EU2cHJ7U`d=Sicf$?Ex#JQB@@iom*6ieKE!-H zZ~4`I;6vau@Qi!eN_xQ0T3+Vsk{<9W_yxtA!6z**^Lt4%_$d6m;x*vp6Mpp>@EY)b z_&LQR;Jub#JqsQIZ-c*R@#q|Qi{)2yenjWM>)~e=p9ZhB{LPi%)8G~G7ZjfWk6Qj_ z@L(7x-L%4!j=xwBpm`ueJQm zm%*pOE8tHlJ^>!J{2J1WC%6t>fe9|E6&pHjRB{H*2Iw1D@3Pr;v1 zycvAb@@sm)o54rnCl#*&AGZ9Oqu@2*{qPftN5Fe6zh(?P0^SBcZgF?bPvO^`!rN*N zydHc^@oDncT7J!W@M-W0_~VLCfJZIA<`Vb>*Cptk#}pspIy7(js&eol@EQ0~#e2Zd zTE2>Mih97O;71g12A{ONJkl*{1|NkVR=fs$*z#3f;5Fd=@I#76zm=`x4|E^ zxVz@3@KwiI6K4**9z3D=H2JYh_^OlO)8G~GgNjdpM=f7913tl;n3v!O6dz(u%z4XK zEr1V!BX?)N;yvJJEx#5$g+1U?@O_FmgHKw1Z4G!c_$Yj@;x*vImS5WhUIX3_-=la0 zyw~z;JHR90ZSY+dch~$Be(fMXu;#$)!8;V6CV#Ev*B%3(2CsnMt@s3Z)beYmz$duA zUV`7H_|T-|%v*l#Iq)Iy8TdBEd%(|Hel2p59&q&B*{XOmIDf+55&>@pABAsGyasUC z^0!oj*MRrKH!B_i@3s6bjo=aRHuxrsyK8<5f6H!u1I&TfgEuNZP5xTT-!cF`4PF7? zp!fuM)bh8Cf=@VRE21oUuDZ7sTFKYsLdo|ZgqABMpIHNxdfg)FVIJo}i^uJKQ*obC z^2_~IG5HN8pU|QOrE^NpD?Ow1q|z~^BT5rW`;}5}qpw+MxzMjVMPi?h!_~(oId?1{ zq@2~q7)zI|eBr#(3rc5{PAfg3lsr;SVO*)!Cvw{IkqM<;N?Vj_eIvAw6lW@FXy-DmHT%?r<9H=O(-?`IbY)3Kk4~azKcrN zTmB~OE#GC&rzBnvUT*PsL(7qMjxyGzybjTe{4VNRY1c}xRJioI9p7sybD<6i(jyoO8-#P(L z{xy2O+;JYBvhJAi@Vp-r%lwZlf5*#TbMh8AkMufq$1!;9y<^lTe;Pch@;%_Ez?r9I zlk)P8Gqs#hyb1moxXxP!9{|_--4O%t2e0zw|1kD^+49w_t(w=&I(}!BXKmFy+Oc}x zCtnFZqBv`*=2d{7@^BgF?`~CmxkGJ9s-|KoV8NJ z^m}!!FMk(!wc=6m4)BN%kF##!Y0KX}3r_#ue!;^-S2&MiijRNIJm0u|%!gxdg|^S_ z!{D>z*ZvXv$o@hsoxFLic`N3^}F3yzfd3e z8O1BXd%-I#Z}K;SCoF&49C!oEbzb!0HQj7iucz9Qx;upXHk%2iqrq{ z%6Xly{{!^@ss_dBf4Og4SK%wak@H^1Z)^^n{*PVs;g!snmn|PV4PF6$%EKM{xBQIa z^smh0F<<{W=fOu5Pk>Y3n6|grFVAJlm5=qn)8DZ!pZ*DOZI4(h_&9ir4?o29?8mBq zEjaaa`jn?X9r`m??vrmrpN_{{uYk8wf32Ufhx(Vds{BRpIQXnDe>J$;5z7z$n&hQ<9wDf0+=OK)><}{b~BXrGIT-dywW+P7nRN`y`YqKHTh^yL(eHa zt8`lF8KtL{(!NIiq|zy+CzMVqrQMC(xY9AD$CVyaI;wO;>9EovrAL(}lnyE#P};Aw zPie2x9;IDMJCyELx=U%B(pIG{N}H87DQ#5Rpfs+uUTK}uTBS8gtChx-Rw=DiTA{RD zX;f)MX;`VF6#a5X7ZQg-Yz zYZ=R$%17BL-|1ri-`F`PoDZ_Ui(S?f{semq`$6{o>`$`~us^}x!9K`-fPIL)iJi7{ z9%nzo{z>+K$NmBK=h^$&W9+xFKg<4J_B+{kv(tw19Mt&~`!4oY_6_X4?6k943wkT` z5%zy;2ip!Gr!DwO*7;?2UZ~X`vFkXC&&K=Km4-<*>%zRRuC!2&Wj&AgZMEw@%RTn{ zcBp)e<3TI4_RAdqnjZfV$7A;RmLiUSk1G(evc2z{-tj$q?7GjlPO!$rQ}#GE%kQe~ zWd%-xp)^g|v9e-0zKt2jd`TA#iCsEZ?x$l#?76ZZTcNom`8P;XgNP_`1??@F3uIzL;f2c_NDjR zawWb+#g}clw_ZT#VNGWoRy?QaXSf&tXHDn$rr)*cG5Vq?V$*Nvq8)x<({D>4{}q*| z9d7DS`2o@&({#?Qn+i3(gWs9Y+VpqT5woM&rmvgf8Nwk=M}EzRR6p&I_n=K*)h0jr zRi1VW|38}E!2R*BYkE0)VydSJ{Xf$5dHOM5)3I}n_SbFI{Qke$rr$uhw}iD^`Z{!j zO)sY|H=eQSv1Z!gfXerCpZ^h+r+tEVsyyixe`eEfy~I?f={KPB*3~xscI+?iP(8Ha zEf1@nS@ch7I_0kYyr!Q({!cWWe!1oUQa#i+s_lQndG!D9n!by6`<9iLxFMClY}3~@ zG7kTvO}`1-*1crYtC0`?l1(qaOnX+^^w>$p`C6MUvD0q5TjhuNz5lnWe}UgqUse6% zoG16#^wr4R@rX^oV}$gRHhoPW>EF}zb38i_*z}4j?0>_i-+q+oyxgYC`6MJPQJa24Ip@m(n||AFhsn&YCr+~C z`~~ZYC(se$IAGId{ieHq#FSuX1?TR+@Q&~LS?~BgU-gb_u6W0Hp7oCJe#kq1uWt?U zn)6=z-3PtnnkRh6zvVj)ddKhmMeq3TN#F4YyyKb&z2oZ-}{Pp?0n6Wx%(+Ez2+m{@txoFj-AhY@^^mGJAUs!crthXx|d$_QD1uM`rz4? zaZdFNl*OL2t=^p>mBYu-U6C-Cm|ZD5>l)8#%adQ#;^0?nE^7*ASz=pObl&iA_rCoH zo_&;+8uve~LhHSixesn{6{-52&+dDCfA7vieSN)qyAPPe4fpNbf9ODGcMEGGKH7b7 zfA1%{4?M)D*9V^1)7fp7RnO5lX7NbTUgux;`z<$$6>VFySXO7g>i*yXmJ!{q3vX|* zYe;9TxVYZm{Oj-YeGdM?{RjBie5tnH^zh!N_jVoH*SF1nqHf#vE$sm+o2{;_WBHW* z&iosk>QxeY$ua}{nQTHrmu*B&mS#GWGS=J2~N8qyNN8|uCw0Wzvs#A_u3q}2i*47wssa@zqg%5(=%6QmsQ6|OV zXSLkxVmd6j#x#vhGu>-U+_@EE*N<;%-?`10L*H&_Z$I=jCvE@UJ-w_@-(_v%obsI& zS=PkAn$Ge!lyp8#X6@M8zH^IM$Wr!pHnsMoj6q%8-)pA0h1=iOhVr$BSquFd2M_(> zb&kJTWQxkt%B-!sROEps6M0~ZjXbc8t~Jw+Z~63`Ce~$}8Qjy#7p@?^?m5TbCVwsc zXX@40a+|5;{kE1efYWQ4(-_A82J-pqlX?0~eOmh!i-%?v`Np8Dd-&RT0y@LBcw|l5@T|0Mc4B$hZ{kdRuR+0{ojwET=q$I5b#LmnF=aO1nDsKn zjHove+)%{bdn>t{xn6eP7*Nuu;{@exC}Z|8o?wRd~_PQ4$!hNj%Anp?=ev@q=f+xu(ZmWBVV_b2g++{DU z;+359;(A@}QDeB+v_G+@_n?jVBu&mOYJK)w=C|8KZU^)f*e30kY3g;GEU$XDa z%IuQog)5Zwg)d?T$aVcoKB`)o_IK>lD%X6foO7zmHgiflBwN_`>->5=vvO^F6KYc* zDdkp}vkkKUP|03Q_Pda`?BP{r?cU<&SJ?}^wkGuEVs1(03cT`1SgslN;%x4;{)L}n zsYUOg2U%VlUC+DGT$7})QG&-Q@JE$o`F z$nvu(spR@T(8+wvl`QB@+&`E*@}#1-(qi`k%Ue`fhWZuUNBVk;3)ppj>h%`Y(`WN_ z`#G1)^gsUcTFQNtx6)!$fBkJ}cQswZte1QU_9k?=&%s<3*>6JM z?nhysHP`e0Bj>F9W}b$*CSOB8`W}e6TD)7KoJQw-CZ;;C<|>%8&})7ymNe#__hc+- z+P{j2W7m76T=jJ5e?E4-jY*v(H!d?t=6p&frY#d6IeQr7_LNY`{us)sQHnFq6Yu%l zrft35dk)w)6wIo;8Sn2ou>ToeestNdbIfNkCPpss`p%v`2ip4&?AhCY@S#o~JCe51 zMik!9Yb_H{n76e&l60f;W==Hr8yOo#bXWY|><`&?tl#u-)1!Ny(T|&uGoOyVg`YQN zhKk09C-?7vvbVeaaccHd-<~dvO8w|+{idJo?pGVPJlu3|y&G+JiRjKxKSN;Neck)^ z?f*o#eZRhfGB$c;w6<>35>{fIFCz`O)LW=5aiTMgy4Uwz+RoN3k8WG4+wSvsn~{90 zJ1*N(T)(-dUshzUk$mgTT}jvZ#+7NrCC1g#UygdcO4T3TxnDk{i0|y?v&y~w&q~Z} z6M?zAk4UWjPuRCDgfd@AG-~%m_o7knNC`)6-#n~WPeXPVdeK9SlM*M>9y2ANtuq2d#i`Z@}Z?u zUsJs8uTSiFiMO}!-7nv>Iq7k;>kznJ(Y@DaXy1^LvN2hny~Mwx8&6DplaajLINtG? zwslc<2Y1&5{;J^G>eY(Slsyu#P*V95K4O_H@^<teM_d<@v&T7@q#g`a0xra z9_(LT5B*vC*4G}~qAVNFyJ(a=LyXT6t7DDyUs>uHd$O~$y?dauyRV;5t{=~=OK}x> zev0o7zCPKv_V!#c!K3Jqb(mI(4(hVzBDAe1Wqjm{30^u)o>qMR&R89{9EDb}%Xuf1 ze#sRRyiCexuMqjeT$?yUnNV%mOCbRijL%%NK+*CVXN_B zd=#InDZ1_yY103+gV{>>FMA#PgX}l5FR|TP4Ink3IiQxc!w%KuxiJi(zOzG3aJpR`6 zoydRQIh*)H=Uifqb7tcgiJ5XVFnTyK+qmVpQwf!FcY{qIPRunn9%qjIloP4@A`>ri z@ozbe8Yj5QA3s*&Wk~#+M8IjhTk7zVb3*EZu5!|vNDGj5{C?U6Th5c#ta2x<+~OQ* zEh;xodz}~iB^Cwsc}QZlKm+m5JGI2vsf~|?&k@Jt&yK8f8joyon&O-rho@g1c<~F) znHRt5Ouz7fK=lhB3)Iwod~tE`p}@=$Vq_dS;v>wJm;7-x7Fr4m`3vUNoNrKbHfa%7Gutfe+@uJ96MnIq;es zcyxKZa3KdilLJ4Q13#VvPvpS6a^TH5@LCsVU`Dw7$$gV=Gxvnb2M0Jvup@U>n_u34 zoT4Q2w{pr4z3n2LMaJ)Km<`|Lxh&a-R7>c|cxoaArp1&I|2F&VPJcOca=qAQqToE) z-A_E6-rnv5u_wgyF&RXM2VQuE#`Yhu5qDDLt@C192JWyW>W<{FdBtF-IGQ~F-Rtv* z=!~reN6mGW`S_89jiZ@z4Yx8Kt_*QFtJ3v6_+GA|$Q^l4K|_4&Ph%o0F|9_>`NHiI zukXqnF&l}ixOgR78D9SUEAg#w%%VX6TU>cT^oY(>JwG9a zW7@qC?SpM$U*0y_1)Hw4tgK#n7rc61A?B97X4raNG1qU}Xp8a^Gt-NYr`Heg4pY{a z#ktKLjwAKkoN%1YjVvNEXXB@C{x%CMabLjw(%6gJoal@6+l$W=SJkv_UY~2fjbZhZ z-+l2pr^4K$J?B)R|K%4y>cmK^mTMR3HKtuCFB!*5?>UhDob8L(e>GWuu=F-3hT?an z?D%uslVGddmn61^&lx+o7X;tOy@@0B9a$T`;_nA{tV!HAzh04FJ`PWK1ihO?XJ#Cp zaKgsnd5yLVeTg`S!y;$OmH1p5uglol;Uwemqy=IU6XZU^;l~WyQfSmg@8Y0^J!}&A zw_BNnB*-r^i)chAxus8vb|}*am4&T56JF#l@fWrlr@y6Nl)h z)zB5j=5Z3}ktVk>gE(Ll{lww;Nf*=~gGKb8AeM%-d55t_{-wwKs7^-O5k0f$sez{J zzf5`)>0zUX12*&r%1N)|xQqB1Z~UE4zeddPBAi(HMzu2|R*=dQbtM_Q2zvs3$Pc1F ztvv%nq?=Cj*(35}r1vAAZs$qTJ4o*pJAYw$JE>1#4*BEAkBa=y`s9y?B?gIFTb+z* zL|X)_$Ri`si#4VCq)3wmBQrUr*t|M{%t!y-o? z2d7o;H0ip2UvP+gr}+I}<;!=%;^AS*hn`7`M@Lo9F44o@YN@O@D0~3DhMrW4CBn=4 zeumB|ofZ03$GJc`aa*o4LLp*5eEtM^M%ayBov=I-epm%KW_q@e8LxYflq)-`4Pp3z@wHg zOn?uu-t{H;u;M+ecRg?U!sFmQ;4|=!;?3Y^Eni4`Z6Bw4!jNioZ{2qEtW5i zfKP+h!=F`r0=(Ap@~k^F0bT(=t@sdl)bhoR;6sc-#kL#`Q_ zDUo9zRXVJ+Ln*q=yok=SYOAMk3O&?I_`E(Iy^9XYHS^Y-(pjbFm12kJ37qoj!JdHF zBYG~N2YcjvF?vRn8hgl>Ku+sXSV6u)%jeS{g%#xMQF*mD(B#QSW{?;A$)8VpWCr<| z%14wsmO2YU88;V^*ZM~KCb<`}d_HxJP-j^m)yR$8`EPNN^g8m5Ay;eLDN;wi;}(B| z{Dwbf@%$^oqh~<%ba{FT7SPk-=_y!1&u)wVG{!tF{4R?ZGzgC#>SgSS`|_Pdu3qKP zS8&#z53YR$a=w%+eiVEHJ<#;^xE3A9=KjjMk8v2WbZ?t$gA-rS8 zy|GK|sPpBc?!t#hM2_`%f0f_UdY+bk1s*$s16ICNaP*ZPw|uk;{uhvcUhzZl*ySXY z?}cwczQ-pYqnxS1k7*B^91NIX@ybn%@DR zWlFl@!>2G*%Zr`^KLLK$haV@ui?d#}a}0dShaY7;&M8m-I|=aPKD>?o996y#oc@pY z`tSzwYkNd@fpcC&+kAL6_?YsI;4$z9AI|#0Wm>=J`>6}#>BE#EKQRq$Qrf7L@=QAA z7+SBiPHC;u8l{wP!0|11ZB^k*@3J!TzO;0gT@zK_dzOA&kI_>)sK>iF{xv;*p5rk+p61xM z=4z>L&DFAhUrOopKRU}kqsKkWw@;K6Itk9ZamL!VvZx%FA{V|>)9LG?n{9f@Ik`2^ zbo##V6-_^ho*Qj?q=WPiXnGCv+ox@M!5PNli#9z<-vxh3)5l2PtLc=LKWx*Bq}*Pc zUP@V^2Gx(A!Y5V#F49-o^g`OR@Y|Y>&iu`qPOS?+r|Cmn6Ms+FZcU*7H%VtJ?IQgd zn=a3qi({I8jQiIIRDKYhUk{mcNb-a~tLe07F6(**Yp$A_l2^s^ie)GJ4f`GyutsW$Gb=mlwl|` z?4jScYhC7#!~CfpCrE!%kI#_)5!S|J%bzFxd#a}ootyNSwhewmkDC#^r24Tx`app4 zBsa%TdB-J^sOiOj?H!lIeaG9pkar8spaq%-8>lO`o>CTtEbf?xkj&^!7C69Q= z#b5G{gJ1FFi$Co<9`PMddGf`le8(S4$}F`KWtJ!UBFfU1d?nX8FtF$Gy`NYwU(6lc z+uqr`=itG132je+`X}}q$NjdQSzb3Rp){MTwg0c z8?vmF!p9wEAY?RPMxSMAJHN~_&6XmTWA)MuJ2Kx|Ej7xsN@lS-U2Yl6Geot&vz`#? z!nSR*oewE*>ZCf^&aVuiY{NWVC`)yHBFog&FXawu-=JEl!&tqnWVzHQ=9%XY-|J>s zLw3jdl+VZCrth&=a2_u8Rq#91+@-(0W_jG?3Z=_PrH|-kM12a~kFc|h#dL+sh-S>S z?~ulKy@xV~OUg8NO>47c>da^bx#GAcT>JUyYFI&m?~qgUDlC>!dNtz9c9m~jFRwR! zX!|=Vvzarbm$f-Vdc`KMSkO1DGOhJBf}F8SH*UJ2%S&er?)7ioea_N0XIkO&y3rdo z$-RtUp5Ny##Tjo2hdsYv9$&U}_C0Id!B}WcZpUytkMG@o5Z}9l-SrRQSi#J<#I2&| z-s4`{uhm5_)9)?a3b%x$pHAjD@y~$S=MA|zeG9$!vfPM!O++&;8nbGVUYjGyc^{};Kb5jSerJLmfO;?!k$-mJ_!C*41&p60gxLH6wYSK82G{G0UT z;Y;@Q@81xQd0WztXTuVHJoOvv>Wp}*A5ULj=RNz~#}m+N_v2Z`b3^gtS=EG^0^NDO zBK`pKS)Lr(t-U?nZ$;9>gEqgsq`Ik*gk1@q)wx@4Kb~-cXFRh!n?jG1XCI~Vy*ckM z;bn{E_Twq&K#pfo(cMs4efMtE1`!R30B)g&&U@56MSP z)bFj$0O>WvOE`tB#X5 z>z3P(r&Q`P$)o%j3aHDiJod8Xp%uUzYLXF@1};IbWffTW&v|6dlPik)}!P!`9o!pdTUT(FCtV zr5~luTG?fjhyJqHvCBIXX_FtXX~$`NDNwh0kJFg+?-=7{{Lxk6!=2w7h|f9?#Q!+b z*zDweU;R58<3}T1`1!0CzYQr<%S*9m^UF@d;Ad_h7^GbFlli`U|9W^_d}hLjL>GF7 z@mKjlnx0I%jsH;iWyv2uBECf7P1d(0@3))zenavr|B~>wyu24&O!*@QqfX?%F^O4T zf+ttR>C}-b<69CFoze$VW@78A3iItOZBJhLPPi{2-$48PX?86B)O_RZ|JHgi)t724 zamz}4smiMGrP@Wi@1m@I+UDv@75s+!PCbTyP1y6N32n!Ie64~XJ@Ns@OMmb&&TJd6ME40Mew!wORmpUXr8)!=Eypyk@gQsd*kC%cmI19 zuRQnO9Rv5rD0_?3fbUPG>-&SR6z3K8bx_YN{yxim8+{eNO(o*nbdG*#qFw*q>xaBn z?A7rX_^#N8Eq>poKY+)#N!lUwKHCn#ZqK(#>g#-tHm-{|Vn5$q9R7~+ZK`yAz`%WN z7A&-F7WkIb)%2zB`+NCb+hI%2KRtdwrf3d7lxWfqWr_UduAfSFy!cWM{Cp1lR1SPB z2YxgM-jf4w$${79z$=!=i!SHDFXX^a=fKBv;6pj^-W+&q4!k}GUb#G8cqIou>*5UY z2!EU!{;i|malH~!j{|SVA_mIsG%J(#Ddp3Nd_iS7i+R3WJ zzj~1oTG~HKevx%{iY*VT1Jog0nx2Re;_J!o*b}Zhlz3C&#{WQ!FCdZK_O|#^MMsiz zNVEDn^A$>BYs6k#w^4WIvg|Si3$70hzCRg$LY^;F!C8Ev@Q2Fqr8=`RU#fy(@}El2 zFLqI`nPdIe_w2q@_Fj#-TzsiY7_eq8S0AG{WG=^#=QZZ?EWT7%E=c`N8Cm>#tUpoy zjIS;Bi5}6J@LdzoKa;&3^GAJo>+sh(OTFy`ja_o@lxkOlsoypGQsq0Y{c@i`J%2ULm+HBz@TK~9*5=puF4yL?(N|J^sY3IK zt$EhB&-zk5B=?O{Uwo-5{q=Rn^VR!O_Jb?~jb}3_!eq~Ia5oJW1 zd_%A0Eaj$Eg~auB;(7#qYOB%hbU>uCeZo>vujZ359qh81%1Zqzg{k46Z6FL^QlnHn zRpU@H9|zhL;(=is)@p>2GE)7yLV0QaT(4h1q&k_ye4j43oCXh5fT{FHsNuMOoM@!_Jke4=EsZUow@|TcLYtz6m{!=8U)In??M}9sn zUCKR0`gzigPuGW*x0ALA%%dND)~74(lV8TCD@LAv@~p(C3!8%U|0~0kHAH(~S@e~W zY&*|COXL&yfL%oYg7nY2O!AcXd z;!nbWn}69D9y&hhgk~+D*UC@JvO};Z050h^A(-too zRXq(_uG$x>R$lE3MJ;c>amW7Ppz^&+yM*GqM13Qtti3^e9)i?c_WazBjpAzfH&H5#m7s0poBNiH>s0+>n`mq zzD|aYDIHOIRB69bt(ROQj6CI=a_X_`q_3Ph%SVPWNXlV1@-a)3z8Uk#jd=OYx9IQ@ z+D-B~vsSAZ@&pux{t(Grn5}dt7 z?W)xBDrl!Bm5-pW-14g$kj2+Yd~#OlH{}K5i*wfUg|p~w2A_hjw)qQcz)>N5;T7;2 z@KN}f;^+?!TfT_$3q*fEe3ixX=fHa{UsTVd*E#Su_)5j6!CNd}M7{E-!I4{4q4)%N zt>uf*lRp7o0bj285O~z`MML02jGIgFQN?>0H}jS+8VBzIpMj4k-VA=$@z25+%^ zG2>2r2?O=;mlU4>ueE$Ja^g!UJ`?2&iVuNDEnnONKE!yr1h4Z;UeBcC%v-+rD0mO} z47~a@E6rOlKYxkq2v!WLL=(q#(9=6Je%=x6Z=Gt{ar#^)W@xnrT2vAJlY{NuIbnt7rsvO zV`r7{HI8$O&}ynAv-p5MV~##^ne zfALwy|4GZ|b@002EHYCf$3CibSSh$krz|tCqjObU^~BLby@Z$7BgNEBUP+jFZ%*l~ z((_8O!_1$I3s+AO_K44s(bJ3F*t483om-EhW8@noAN9(|Zt?33^k_M1ulUj><#!=3 z_KQ62QnU;Cn94_#I+iBq>xo zWD}o5=eWh+K;H1!DtN)L@CXg4o-UuBe)M$s^z@@=x9Yh!+4PLjXuh8ed(grr! zAt`*L#q-b`tp>s#qetv$^5v_ud|piC@NL7FuH?U4y!?0Ju_H9BJicYY1g4H#zEtG- zrCO3u{0Mv-<%E?VfXB}AexE$H6rWPO8Ju#<)gI9o_%Zq(Q+zG_0`hv@E3bf`M_#WZ zM*cg<-)H5^eh7Y=c2oUj7vbsevRSYEzy$b7l|KtU4nFO}N5H2Pp8_8SKjFg%z(*86 z4&D!b%!fCFH!F@Wq46c{@!{*RceUc%!7J(Si^}6$DA$QH#l;@VfuBWQ+uO*WMW0*W1@LL~%=`3Bfln%b9{dEj&f6ycad0iK^fdS}aBWY6Gad?i zH9zCQNq~?0^wa;*O6BQ)8KznyqS3 z{yy4bm*YG}8FGCxlw(6%l+quDZ&KQ*6gx~hsN-LC> zD~&3RC=DycR9BDjx!XwsWg7oE-o8pbjIUiO^h501*zaL)WS95HKg%wDa5uC64Et7g z$~Nb}JS%>LJ;wfX>~Do`+D%?dIUi=ncg|t`N@p`;`b*Z&E;=IpSxT*CUg7vDpD$j& z%Ft$|U$nk;^6f(D*X?l$eukyr(PR3y^m}^z7{@=<;{?Zxdi>uR`>VL(#VCxeY_0G3 zFRU+~eAiGmtH*uZGirMpOfSktkm;AgCSX(RUZ*mSv1E83v;kRGbB>EdT! zxKZ_Yp=VLkr%3;-rca`0wWiblh3%R?%Jub2>VFqT|HnvYE2kX-`)qn>nDqZw)5qjq zQst4$e<74?+we<1zr5X6z6_bbHd}6CFZEJC#8UJG)SkjwZrR>%?J1q3oe!!!Hb;V* zevb5dO($=`X-%iiL(i6lodjuT96mA7<00DNFZCE1*DtT21Nkpl|GNnFb^gR27tE6W zVNI_lz0LaN$vdCWw^a`|1n<&g+A#PvJ)S^*!TRMD&~DMs1}Kj-wy4j4ExOlBFCO%c zOFrx!N4I;&CBNc39`%lk|JFN>e%?DSzK>(wiof7Xzw8}5|Jjpq-s>GleLi<3zvamn zKj9q*r7TzfR^M@}@3`NSFaAs4@hwT2rM#Ll-ZY6|s{7p4dhTUanaxir^=(>a!Eb@z zUN+mZyyr_3bH7bqfu!r)l=<~?n$DH`>!oLW>%L;=Gq88Iw_f_Y)1^jr7P%~amnyYP zC#MN&A7^!|OBMY$AHDS0Hfe)-8JDj#$)!Gff4f6wWbpx5pKj{<>~4qe1XF!qCoI$U zsiSxqL7%#$gG1)jm#S_V!FOUqF74XmzkbQ=u|mmZeWB7?!0+buR`}zk7q_hYRl4x9 zRZbIrN1VP(caU!!FYkw!I+Xq0lWW*tmEL8W)^F^J1(zLlK8+V~Ywm02|e-Yn1eC{#^$NgS-D!lXBaq%NC*44+p!@Vz;Tc6Q<-9m0B~ zDBsdIP`=7aEUtfZ225T8cV3+{VA^ngM@*`A^uDtl0n=RrH(~TuxCXuxn_cF-H|G|( zY<#b!`~o-LpEbVM!S3EC`nwPI-?QI7s#wA=kmqeN5#X^zXu(RR|1aacMYx}5gS$Zr zbeCtYblFP$0_FX)fd+d4Gi+m6A^$#T3ecY%7RoCG}4}zA>5Xzhs*F zTP@>TC@wC}5XJHg)8Ua}rPSdT_F{IkW$H-xwak+?`~{vxHbJRNa`WksepxQAR(`GR z@1iksOM6^~HqoX&9XaD_Rgs6fl#W;(Yot-jQu{WSKVH!|d7dMi=@5=Hw%q=BW)0dY zbQ~iyby*|!e7Yy4O>_C%L-!`Yk*}}Icbl!abi!T=ophZU4{Ujki zR`|o=V-$W+eBh8dwE1PHH=f`{*jQ+O^AY>aHGV;BiLvzZ$R4K;`oiHa{^J10gCckM z`M(>$e=3gukXa1z@Ltgq{2_XpM%M+|S}ByNZ0tKGJQY3E}Ss_ZSsw_&zH@#$C1Sa z@kJDW!p&oR(rVgf@dSQue;&WZ!FEUDXvGd6pA#C5cQ^sctJwSvJ~qHc+T%QF=DX;G z=oft&=Rx%Q^nFHr1d;6`&#%P!mbs@B|3mV)@=lgbbeR66e;<5G{GUQ!`pjpeIpPLI zbHojb=7<{<%@H>!nj>ydG)LT^fAiOJ{e80cZ}GqRYyC=y`7G@D$)t?`qU+|b#Wj93 z%W1bxnl zF&LwFf5usamwDId9pdhk~ z_2UT^=?H}emTCj>;Uccq1o5!Oq%HihuyW)XBu^q+9?6H_my-x{edwrc9qhcR&()>Z zAMpnk-{!FRm2;hJAU!^UzwwU6*Vl0^GO+~R>yYHd=V;E=;reNL*Rm@QQ(yH3;sfTj z)O)QHmTMW^hg+Bd;L3-hF#y1ap1;iB<9nH<-P^EhmvLZ+9KPzW5-0^@R9fA z8NapkF+mws>G>qjgCCc;YI$u(p32)TdG3FTxSF>USB>_heC{i3o6G%!8^cTbZTa|C zdG*xcVd;Y`K3Or1Z#5@lWyj(_kBgl2yQI70$J{@1j&>YfT;yJ7P+gX#rfc1fTQ9j8Z`v%>T%b4r+mGLyo{%q@8gGOmnKFs}^6Y?bmqCB9U6b-F*& zMMTnkXN*76LY8#=QC`22CA|l~mPnR#{85aLOuF9@{zyjNd>}$T*(%t@AL%l*PO7Jy zq~nkDlX7T!`Yh=+S<)|)-bi{wsvZ+xs*ChA|ENF>@`)_zjietZJ?zs{ON;Kpy++bk z=$B>UOYK6w!l$PSJ!9x^Bi*ABUo(pCH|D5AvaE(xor`^3*ldfbZ2b zZCWnnJ|^XsmnI5-EAWNjOCfRba-H0;F~s=)(IgTb>Ft}WlNX7Meh(c({sQuLJWD38 z?O^_;x4;zj{xelH%H06%Ma@w*94fKS0kHUAL!q~(i`f)9a@!bcSE z0Ux$}@fdgyct3nt@n-N|%ggtip=R(lct`OX@D|I9-%Y3nyq;%`R}_zc*IHiuZbA|8 z3i!(w56*!{EiZmI!8yhsa&8Q;;Pj;N8xlT>p5Qe24ETcPp8!8=dGWgmPJmCr&nrFz z&Y$p68TUirqwsTz_W%xCKAHgU0q=*usCYAYujQl1!JEO`;Aa)D0dKK<^dxum9OpKnmFjmyeQSg-=lP{j>TCR;B76oeeAqFu!$R}45A#pxJmaawwof6k zpF%V6`n`N1v7W^LRPa3NW%#oe&!b+23yiUos%Oln=OlWL`}CYd&oR|AN&80uHKdxxrE#-jVHD5F1CUD&1;y)te#`Pa5#-ByTNuWXT5%?bPVappFABdv=s`x%| z>~Lz8?}BeYzQZSvZG}2Nm9~IagKNEvKHA0guPLnukAmy|t zX9~LFl^>wK5k0S>bKs}JFZ%Ft@G8qkr@_a-&-n0R@QC6kz=yymefVzL+s&T<-vvJC z!<)z-*8Dx-jo@8Ayq5FvoZ_wEjE|`Hm#JR`_;JPK;Ea!Gy_es)0Yr8Y@>0JB@K%-YfRB@Zw=aJ+c&+ly z;4$zfAI|%~YXHkB4E3`{#hf@04q|?8KVwa)F8rq_?S!t8fMy1$kY8aldkNS%H&~bB6QwKv|I-7n2@*Rnz-PZ`Sla(x1|F+NWTxrqjQ{ZJJJ9 z@_(f1jp+ZhO)ogdy!9tGUGBZ}f7_-PwlIIJw&^7ospMBw5Ap>URS(C30@YK89<_%d z>Nw{$ox{jYDnEz(y_()Z`X{yAN`#(N{io1>T;<0|AJX(`(obvpN$gkog5&6!R6W?> zv{?B<%8Cx!^wK8M*K0a;iGEDerA_`!(@&7zsOc5x|0|mwiEv%LOZ881oBMH1uOj^q zHT^WdiSN{O`mrcs(-&&j{yI;TxJhi=LlXd1Q*FR8I}^f1&C0 zY0>*s{xb4k)%0=3N3qHyllO|IV{>tvruR|bjha4B`fq4DZJ2*R(-%npo~BPZEDUb_ z(i=WAC|=;aMcxw;u2Joordy!4XIo_y5vi!+`_S>EOu51;Jmk7Oo$pP**E z7nD!6`6PxFPSreemG+XIp!gC~ygJ z8=fQ6z9q!vQ`&6RSwh@=W_&fSeVK+xfo<75`BGzU7_n3z!mD!S%dRaWbX%ramN&mC zLf-ILUYU*+Vi)dd?>ls$yZsY;5A+|})9Y3&Be&lZWNDwT45=*k`el|eH$`kYe>A_K zu`J8@PkxP@`Qkk7%h#kQ5b^zT#cbQ2RC|AW`;$)}l1PyI_CD0QBUi?qo7%l_gF832 zODw^S#1h=TUBbKE$ER`o5A561+rGEI`@o+5{RbXuYj0cMzJ2|suDwq@(S4x%>CSEw zU{b;sZfk#Z$0IxMZ-1z*u6^fL4M_ONwRqAT^v?g4RNiZ;{`DK$KhoWap(f-`&UTaP zZopD6+unVBy`H|6wLEp-&~7FOoC>ao0rVz1H@-=o*GG%j7|F1dIR}-tYMKG}e!}$3 ziaRA)a>l9Rh09Ei`^*W{X5Y7G@6)DhGL)o#;3DV$(ylG3GuyK6J^o2xd8H|mex1u) zG?OM~m9f{&rDc}5TJ>CYj{d98@$sw9@$Aw$q}P*Z#swnFJn9OsWH#|De<#hRZXK?D zLUlE)q!r}sNy=ZJSuI87Rm`l{*$j79dedsJo1&D4x#n5ctIxGev~KQqvG zydG|cOO~<1d-eLCXC40St=!0Z9Uz_V#iny_4pL+5{h~Oo?rb%`VCArNn;cpfHo29k z$CK$`|DOK6orG22+rM{D@7_+jpP|IpL^ zIN%3Aks-NWB;${EcOE)$aQ}gio1dU+nx2Mgo#nFo*tuuan{!`V!elkWXQQMn8UJqM z67laguCI^BWJ`^Icd&2I0e=L%CH&lG_0cGgI>H0)6OmL}`Ucn)p69UhV#4m_BC|3- zH+kPC`Nj9=2A+dC_a+=3vFVmO{#~e%tO=gUp~vA%-y0{Ot?1ynmDytIKcuYK)wHE; zOOoXv?==5vcpi5O8sb$s$BvtyL&;-&ke2gNn?sD}bwwAUqN4{Yen7?SX3Nx(?xU99 zh~QqbNL^@;%v!XPSI%8|m*kH1W&G_--y&(wSILsG<@UEr(UBYzX^LdbQr}y})<=nhm!J<$ zaV%{n{V7|C?sd=y*>7ZDVl%N1?@0&Kzr$|e8|-*z=_P#Vdd&CM@;&*fobm5Y$oJyp z`J9P=_mWc?=R4~7*1U1!AMsIMr0Tcyet$B)r5-b75LZNe*5teHwAgDS3F5lFKY$8vYhL`362d#>XN@OC!WyYl_c0KZgzL1;>w2Vz2e!H}|s0;kS1`zI4V9 zPx<#Wv+g+f9`TcVej9micE+FoWT577Vy^MV#u^Om z#r{g4AK_og_xsf6h4^n0qiv9VEZ7Xc?!{Bi_=^{uiTh*b;peBLug!I+mwi^cGjrczd1{z0p2O5xT7^w>OztG@>U)asdF|G~wcc6z@de3$K zl8qB1{pa%$bp0#*-|6#>{#C?qi^hrJ)=z(Kmj3bjGdxZCe`fnHuvdI&;QcY&h_5Fx z+@zg?-;uU~Zt-HcNqYoV9r*zD`dFaR#Big{MsA^gAE168GxbaQJ|O!U_1S!o`da@A zpYMaimOOt_{JDyA_zM>2i0@XMBfeX4`SSjDMLFWT73GNUR+J;YTTzbqZbdobyA|b# z?^cwh->oo5e7C|J@!bk@#CI#q5#OyaM|`)!q`x3TFv2@Wxvu#( zb5EzdtP$-b*pa)c%`fjiPEnHiqcqb`FN=(Ct)i^))i!zY)poXSc~l~-;UAar41wnX z{d+o}lDKHy2aG{PjbX1$`bM6>pea2S4X2G9Q{Mmi6)81HT z{l|XtV{=dNDW{xkTEz9IL*C4xOI$NfXzVn{*A_2`9?_Yq=O<=80OMPp($;yWeRF}YtbABp{og)lph0rHDZ zwt%!ErUe>>k$GC|G^WXiVqOAF2fLvC>`8w@IhNmdnva7KWzImwJHbQbw*;kpvbE(= zCos6B;PdaO#R8KliqEjXBItG&~*KmNjDAcs~7r>&tNt3;(zwW zU;6Z`_R6GozLAzrQae`~zpM}WKJ@$B4Lgm`;2`N?pFNU3hI~(2x|Dm8^fuB>{IZ9a zx3doUIpk#+j7q&W`{b92Usgq)1@dJ0?rB?iUT)^Q%U}zBZk$Sib5cfdsWK{)5#y+b z#4vmHB4x}=o|rFBvJB7P53#pnlkeG$p9JH^_({+PhR!NIuk@_alS)qr#eZs&M+Y@8 z8&iWF_)m>nK0FQH!9J#P$GAt+?~sEX8cq8Xuw)Q$B7(YX~@cBK+j<6g3$f4i0*BOC7 z92cJq8uzsELlyjm@vM?1+mCH_jr&Pt)kSD@#L z+9&=><(4nKge?9_!G3tPKW~C|>a~2K=$!y>gTG|+=M90QUwBzRKW_-U9)3ab9`IVr z7Y>2Dj2nVA@)ifDEYqM_16-AL-B_bzVI}74fqWFMb#exKWq8I3*Zs( zDfn57i@%}x!wFwVe~G_gU=;p>;?v;6mM^LRp9b%TKd<-%c(3J)>cA(!+u-RJ*}_BM zEtW5WhKIoG;k7@)J>a#LFQWg&-!MQqrDrvNGkDbUMMuG#>7PsR`u%*kW|DK+@nsIX4;^J@U@K*|7be_k?bKs-!rxc$C9JYKB<%++d@rOI9 z_yl+_ID9eVMEnh%Hux#UhrnAbUt9}51YQq+Lh&AO(uFT>2JZo{fS**n89ZwF;x2Gx z#J?=i2#qPNa-8=t_T<`nw@~tj8le%5gB9jH5uUACaO^YBVmV$Vd<&oS3TDX)HUe#%S>|G;xjpM8piajPi7Iql_JnS$OJ8l%b+;QG5lzMCsiajP?7l)=C zXi+2Q-i$r}#Q&yr)YiW!!uUUF`S37u)G0V6a_pl@NjH3lQpzy%B05XQtR9Ku6r^6l z=V52H+!nRWZ{)EnPi@!mB!&6Ve^Qm_MWr@F~(bMJAa{@gb zK0PPUv)kf7jge3IU8?7@@aUnwMo-+AZy33H%NJB3H>~G_YoDAi<%&0g(}vDb#)Y&) zhw7soH;z^j*EzX`Ej_N|iR+s2!*E`9UK=By@QoG^HwaHw>@jwU9eN!wa&?vu(>_J` z%}5-r;?G&VrHA0LBiO1uaiQd$SZR;ti|63+At~Ob_!fBVauUkprxa{KzTPJvV|?j# zrW8M?3j@-y&rJesGUWs~v)e}vtyEB@Q?rx+KizhoT# zB=S0bjQlwGC6ylr9|Irq=^F-LP`n>}2)xgS_k-&^Ua}j!4}6yoZvsE6`D?)&!E1c@ zTI|*9P)Qzm1@bYAN3Xz_Go`5gVz2mhCH>Ma!e0iT_4FCPt~t$r7JL?b+J{fkP*sW_ z2R{LR%!kwO1!_<9DEKjO?LSjK{a-Ml`RRWr0p8=w-$s4f6mI~h|D$mq-avkB4~f$z z<1niAHTtW;J2Zb3JO&=|<;O3}jnh^96Y9cv`Y>h4&rL&VZ$lfEQl8-{$IyDEbxLcM z)+nWXBS*Q0Rw=DiO8=Pja-~tF5v5_Jm}KO3aPWTi53-A$+t}q@($BFsvcHf0L3ZqR z@ELV(W&Z&C&#=pjNLkl$3;R~~53z4%muGYjv)|7yKVKhUzs}{9JZ621B!*&XnYr6E z@7_y&ep01(sSJHyy35A0lJycwKd#5Gb3AB|i)p{oU(;jSpma=+KgaR!ag~Zu2e#60 zddFq|-p0Esp5t2n8G9V1|MH*E7)xD@wQV-WQVDj3@3iTW%cS3|>Br?#tm&7SJ6_TB zqv*L&(_^H6z@|r$34Yq97a-%tf{HQ@g1@Bc9i;D7`7nBhZMxiB7WLZnQtA?FQ2ppB zd{WD;CViErFOdFiP47j|W=*Fqg`d-O+BWce8nY^a{@)~>t(5T_c*ds799taI^e(PP z52*YgI=>!Dwr%*cnoeCJ_gMMpD0+6-atkJ?*EejrvTj1)R<#HD!ZJ<2fc_t-JpB@x z)$}v8bBm@UQ!uaTgVgthvao~g`PCSH#2)97H~2p^ow4D@zREj|{O?;IpL}d^{#1_} zNqi&^D-*-Lk7z2j)7m$&2*@3{C&-f{3No_z7A zea9>}=5A4OH&nLxhrZ*FC1v;uD62)*O)5qzkT{bS6GX3o-fewk&OEk(@w z=d9eDDDw^0QlmVpWEQK_<(9ELL)2RTi&>*xr3>4Up6z@{d21)t*_p-63?a^$j8T>@ zw7keNHT5Y<4(e<9ko|F9BQE**Y{tOm3++~1lG@kT?R@rNfA_wJo_=CKDeLchxarY7 z&urWOv@E7>-bcz;qNxrcnsfcO{axJ;@9#R)+kMb{OUg&OW=Z>$k4PiMF3s4Oj)Y3>rStlpvK$`{{qerKtgzq^-~N*~cHQ%I*SRcyM#Wklbp zjjx~7W@*!uY0m#Sea2avBI$lwpS7PdT0u@u*Mw_7KV1!(6G}#b?~qgUDlATMbjWD? zj0(!6xU}}P6J=?^^r7wVsLW>0kmj7Z3f(Ir zXK9-=t&p$w_1g2n1AF%2=`OjKad{zNRefjofdfpoEAf6wb8303qFvz%)7fVn-7_bv z`_lteT@QbdlrNUD&l_+5Rots7o-dE?-2ceVy7u_aZaiW3_CL!#MCV>}iQIWm#;P8= z*SV*k*++`!jcHfE&M%lXpZ`9yo2Jv;xE zHnbT3=Dc_KiN9?8sru}GIrpuw$D^xG^X^S_c>=FwauuyRDB*TOD6I0WC`% zW4Zit9_1Nq@t0W2O!_q0jvObq+iGR*&|hPh^G+!JlFPTJPsV2@=h`gPUl(4$2C7Iyhw(vM#xKY8Es}D+X5VuA z<)r9Hj)^pFVjs5t-y_(@JCZ-`&WINm6U*|$H8AS3cAn|z;{ z@-6Gfc`4P|hhNUkHRjt*iTm`8oPIeY)>mZBrvIP4_m8i#y7K*>`~VIRAZXB_Q4bO@ zXwaZh4-jjRpobDPNYtoE5|ZGF4I#q8hJK^On$9I>d8F`QJ!w4Ib2Cw<3;}kxdl*jLI6-M6E>EecbOT#hw zJuKg_^8w$tmUa1^rO)eo9fiJ@WhaR19eH0v>eTvT{8{_Feb+{Qb4s3JrTjX19@hR2 z*QH+)Ti6-J&I@sN#`|sF2U_&Jl$YPY@H?08v+tB#G0)F498%u$m;X_CTi@mHgfZpc zFqrwxuFF3i!7TqV;eE7ddzN{p#49$X4W!QI+ZyaM$>iSeTp`azH#EyL(XQX};`h4D zZ)8mJT=ctmm!^Ku_pPNz$vf}9T)9$n&bv|B9>25raU17lKV0oKH!EH5(p>fuG03|# z=lsq^`^100bJ@$TcWL_l&IOk>KjEDA70M0MQ0TyS%)2ya+qXNZ?N7wNOLO_7Hg8wV zCf*9^dnRVr`!v$8zxsTrw<&mOV^g8CT>8KKZi&1TCVk!f=EpiGwPVSj8k#f4y%$y{ zv8{c{=`inxnLf8`*tGGmv(5LdE9qlP!tr;|R|@@3=Hr5|Jub0lz2bKkR5$%U^e<%a z#J`}J*nj`gD%#ETxy$E071_TyiQjlhlK#khU3r50T0(#FJLwx;zyFfi%u%-?*-2XW zQ77%AOPw@w>RCgs*Sz7#@6m0gU$@-yHOG147hf^?mEUuD>Icp+xlS@RKe4Rgz{lkG zXX=AZ!&gTmNk=~FJmjibh|EZ;6 zUoZXqwU@GQ^1Jwr!cRFl=ypfTUit~iPqYmdf7S2IJKjv0>v(#U_wds2r{t;6I_b1? zxA?)>ea-lUP5B)^d}_z1Wv2cU(vI`@KmAm=&P!KH8Eo7|dEWh7{E+b2%fQYjxf7f8vBk5SFLcf{Kghg6yF9tpNpD)1oYCZ5ka3{v zgHq3mNIkSG{`OGMK3k8&zH>BM&%Ccb{kLJ?FL_k#(Pv+fd}yDlL*EBi|sha zyt)e-BK4`pCpHM5_DB64r(Wz7%lu6qJJ%LEW^A^vOTw4M_cueO z?@7P*eRO#TIr`k%B;F%sj8Iq76Gcxq9!U8H_U3(}8Tr~JNuC4EeezE0HtcS~W*hz( zo6>)b9T~6K#Mb>%7GJF$Y+`4F*b%)0&+xDec&Q_uO}V6ley?k_Oo>V zwd+1(bhD9Viap`Miq}0i`w-)%K=$e5?_BpBYlG)zcV72j@XcW>Wb=wFRr32mliw$u zCW%$*wE4aG_mTY4r)_>O*g*Lt(`Wh3EWb17(=yLWywZ>OUCTq*+els;!fl1mUo?4@ z`PAg~f+Xs;Hq1ORXN%YnoxDPhWnWK9Cl7M`FT7529L-$=a*02hI~%{`j@&PreceHm zk3w`bcNxDk`)2%J^aA_Y=rT`U^sKZCd1fAD3`E+&61y4HtQKdF`D&K>wuVdticHk-MHwv%Ixo!io%F+LoUzU+DXsc(>D z@U^^eORk?FX}JUHzb%coy3- z7i?ip$+h!vQf|a=`V;X<|FwP-2k-0!q+N(VNWQD3e;oLWUxd#S#R#W1({-u6?VgXy1dPJDvJy<5GNEPd)~p!atk03!~%Ttf%I?#{SHE zqQ}__XIuS+>+mm|?+F}d>tFlR&^dm4kN5vWw26}@<4@)%>bZ@+&>x=9q^!(oL}==Pmp`!g_Vjgj9!nWS zC*A&*ar#QpxBVsMh@}f(v-wJ2Xy^A7))R6}O*v@K9pozqvDX~+oBFNaJ=X8poF7WwrQMxlv3{p~DeCw9@2LHx z*nB&TL#GA53#muv@&%XScaN0SI(9|#o%E8+?>_p4uK&|sP`|z6ck@He=>sov-g6t* zU&7z+c-*|Fn@WB8=D2}<%FFuAb#CylhXk|h-q|w0d*wV>`8OF0^v_h8AIun3exC4l z?LO~~Fs8iZCqw)v$KPb%tOb?-lAS*m%=0ZtYL|GMlN`^Jl}_rH<$RxadLM6i(kt%{ zJNg&7{uOZlPWXcfzN_$Hg6}FknBcn#4@SPLFiHLSQ-62j!OW@g2hJtHhZEo@65!nl z@U{eaLjt@s0q#qHXC=U$sqy;5`ZO_5^q^0bZ5>FGzrU6X2;+<7FcW@csn& zkpy^00=zK+zAXV>m;ldCfP1FK?;A~k4g=u4<*1`6X10T@R9_0egZsmYJBUt1o&_Q{6qr0I|1I70B=ZumnOh{3Gl20 zxHC0=_vr+9Ujn=*0p6Yf4<^9N65s_1aBl)Ub!vReNCLb+0e&O_-jM)rOn`4ofEOmf zvlHN+sqvE01o%J#yf*=UFah3_0Ix`Z7bU=R65wf5<9D4&fDb0Xk0!u76X4AW@ahD( zKLMVb08gJ9zjG`Belh`mECJq?0B=cv2NK}L3GloGc*fND=CcX#p#=Ex1o)u@cxwW@ zE&*PW0MAc=XHJb5pG$xbC%{i6z`GORZ3*y(1bArz+!w~VjN@?}dG62smwi0SCG#v_ z@)$gN@9NL3@7|9wGXBx=n5VquUG<5+C+T`)V8ZWG-VpsRWts0LtV~dk`{y8x(&XQx zlqX)Rs>B!jyK~;%`-0xxJH2}<>mRQ1?%ch{yEpuO%i8*f*LeBL47%$p>#quWAFc^{ zc_vQYH1qD1$Njw@t_=pnKv+s~o~7TtXFp}^Pb95bQ@)ws7T8;}CsZ*-m$?k@Gu~xI!8{BQ24t{vISL`E^2zS)hW5K(-L4F8~A2;wi66c*% zv8Sf8Do|6s1ar>1Ag|dq1jR-*KM$rq5f%yA#!12P^@gi8RYuG617lK8RNrmZn)6l$ zy_NQN0MWD`M2PB#;~Hnba_`>ShwCvO*0^hrD|>rtg8TN=*Hn8eZ4z?5J7}`XdT(ts z!?k<8^))rsC=sqTCl1(lkMe>db~e^m?dI3TYJxT1nnr%rL9!^ZZ3lDpmCCw0S}(S% zXrSSa#tpBU9SveLyJoMU*H-OVF9mB#D(Pc;9r&%4kJVJ)UGuPc)E2&YcU5JbFxT#> z+{&+zR0S9$dxG#)JG7M8t8MVcDtNbhZ}Ccf{I?e{wkGd2B8k)m>+`PEBBC8rmp32$ z7VGz9^-NyK_+}gtGuA7#jl?I0!(QSls3ZEet{pOj;P=*AT5TwwYcGmiKaTkp=^feO zZ+XhK?n!i9-#Y!*0?~`#d{z9&F7hxHJMx@dfpcq!?`$8bkZ18)oWjDdI-X6TGy8eo zuB7y-^fk@s*zafl%b{qQIe%}<{Qcj%%50D_S=COat4u?JG7BdtQxG3x^t-jU^L^Vt zm{?=KTl;_f^88#gM~9}0%#x<6iy9|9Yjd{Sa-0U)YuJ)pCE& z$&fnOPm_Aw_9Z7@lixVtdFQ51o->Wc+GXztkL{QH+;V?Ta!hQqt^7<0Gkl(>|H<@;3c0Up+9>`v1?1Ui?pKPR;&a%~SpR~9MFuhsmvMF1PA%+&$LMc@F> z`)vx1tTQ=&E;J;*nf6z|BC*N5@GNrzzfBUZV^io~YMYr$qzupYn|aGU{w0=)=gc>^ z*g5lzJpUduXPUl7UA``kOUyw$Pn9I|QMiw93cd3sdG0&>UIOEAhMA8lIS!dQ{Ox@AO*poNL&(ra!E0Y#O>j^7+nn&+-iBi_9mCQ=T))J{*Jk}`gQc*e4}|g?@)+uOTWkS4Lr{a|1{?s(pJ*Xz9PQ4 zeU&*w=CaS?ug(*`3V9CL9Pi@iw0xVJU)~=bcRzo*v}!>}p4FFmEj*{m{N|e1`o(W~ z=7QL=c&;t&0CBUQWApm<3TY>6`&WOo^TE&eX{>n?n~CxN<#;0PN1Ja7y}ge<>XSUQ zUqU~9z|4v1lB1`8!toKA$-`uGqr@FhP{asNq0!j`)|(nkxOk$INq{ zqr{hCpY2PR^RicpE%+xwtVP(S?owm<{9*zGIoCUrr=_CQ|Q;LC08=` zMFzh@=Y}VVxq)Z#GA4{U;cq^yDKqCXoMaNi55slX-$Honn_9y-_=hx;PshIcVKFIuV+v*dpvgGKkAU5*MJex4C z)y>hkM*bKZ*T~y8u3vAkagNCPDtcUt#@Ax%qW#xa@R3B`V_HjJ=9x~%yu-xUT>A~) z3!zQqyn^R`)1Ky>gJ+CA@?0tYXN3K?^T^K^Jxx13Ex)VvxRbRh^z#|h|ILSy)z;^? zJ{gIhdgF6Wzj##YmS;2Nd0u`ys=xU*U%T<+A!&nCkIH-`@tWt(h+*71I^nVSSD&Bw zSUmhC)6b_m7R%ZUznfmSbDQLiXX%>cnLUp8P3_M^Pnj{F)BHF&L`F=fp1g(qbxsrO z2kB3;259;uGMSfTJTZP&Yu!8>=;Sibyf{Ol7p zzF&M!kBwj56ncHJjr~_&wAimU+I7RvDoqabS-$u+(ATEDZa8`W)a!}BKT{rwZDSYg+>xMVp(YawG z<9_OOgPb$*UTk>XZRd-hzQeJFHO(9H{*(QEs7hJCyl&n<;h6T0)q8!mt>@>F>sRBB zGcv!*nu;~A)*;ViXE*cynq6=H?9HcM_y^TssV}abk1vnt8v6>q)C+J+~?JBlG_GrqEA# zK6?D`42I7SC1&Y^Zd*?sbDXD!oYYOBAItOC=6y4cX&cslmG$Ja^1OfO405l`;WocN zf5GNt@Fna28~auMNtH*gKf331$%A|S5cZ*+dfGWwS{rYCo;LQ_>trV@)vn}c+;1mF zY)#l#hL+jB^0UXoIk&ccy4m_X{7vO=QGU^+btLR7ufG=CSAIDA{r8pEKNj}e_LZM} zN&S@eonXEAla5F}Xs2*)ZHzw>kNPO9{iO`*Yic)uxR-YlvXpIq zoV8PUZKP}B$TbyNE6KSk=c(#bds7$Jm!EgqiOb(C*CS70llS*DuBXmdyUja*4{=}yaWe0MZI=Fn?KNW0jGxQNgE^0X zb&Ihh*LUPyaNdU$+nYkKy++@ZYe~hT_Y}F|Tx!`<2bs6=OZunn)2}X!?bENC-!10c z}ffuAPbR;uA6J{5kYFd8e6c zE18tfinhVfC*U)r46(jM?k*FIb~W$sNc#$J$J9_I*G)#zd*Y_8GWx=#=<{IA9EjLR{%9xY!#_^JK*>pS4{OJtmiUoE){$Y(!zGcFB?f0HpdklYR2j+)D=E4^wckKH% zg$5q7v7VIoqjI9h(35YPyfY74d*p{QQ!Tn?gU>Xx7os+4ni=Kl^3wv3~scZTf<_H_7)^7;h&ZlK08PSNguk9=~5V@1G%K zoWA;1^KK~LT{!R!-n*qP%9!hWa$U{LG0)lWRN(uT>z)dQxc-!J-DkO0(d8tg<0Z~q zc`p=Rz9rzL4GOp(Dc9dJq`%ob{qrKx*ZSWQ%v=LCYp>U(|7WQG^8RzCV9GzMKK+h- zRN({q0_PcdJ)=BRdw-_|=|)~6D;oZ}MvOSvideVn=LqfQ?=O(Gs?lLBP2 zwmpase(3{Nf8bHxrE{KK!nHWA6CC(>x{QxHd7nM@x5lp;@O|r4iEr5XBRM-IIQJQR zzLrx`r`{j?!7`B}YeBZy#`>d2!+BA@65cERL35gCI~n4aUbi$kvT<>KW!mk>uP9$j zzi$wk$yMBO%B(k~@5`~-HO4lDzGKhN~zr?_00;F^1k0oOZAFwG4Tg zCvLRIhgVjL9N9KxOAchqJo*aPZ<2XGIeCOSP3+7upCcE+Yo2pvtb5je%i+H7q_6Sa zmK123oqnx+D@ML=z<0R3G)W^{CR;vRA)9<-tb+DwU=7nKy38FxjfHOmBzwXb{VG4a z-{dU(5%cxQD1YH!!}mS8#F4gcXe!+F*G;!={83Y~Q-b^mIjEQ<2T$4@{P+#cK?U(v zaI9Fx@%tS0>#-`SRjzlLYxplZe(Y_V#NPj>_RRNp$murhHEas~^BXpQ-)H_vI>cta z_rv(+TJE<@`_oop*Yu4E+UiqkceVOihTVhM{kYnF5}U!Ub-$T63l#qks__(y+|E-Pdhi_|K#rS#_UvE)g&G(_` zHx1$o^~(24d>mWN_mw24zUPI1S=MjK>t5u0H*e7I@y*?Cn#0d)T~BIVe&*5aO`-l* z$YGJ@P;>EZbAMCTq1gVS=-V9jf6n^#^0PK)uiQw^PO_a~8?wH=vV`A(mNDdWeV0hS zY2y=rX_J>)IeyT8v)8?toQA)Jllc3O*5AQb)Zaq z-zhuaIsy7tAU=QEx4v!j_X9KjWt}1S?a5&q^Ytm)j^F#C=rYI1_b0OCda=YxT-hpL zggn!(e_yGUobw%rgQBCy9%=s!drbPlM)u9QvGS|oJx15uAN!VGe;TM1f9=>gb!b!Q z#1?+bJLf5xCmttvPfCCOI^*w8ownX@a(zB2a$No=IabE4d)@b3Xak3HtnjmXa{MhM zSF%R&+4G$%==0xxT-LY+Ut^pcpicTFbG4`Wb5~@_n%7tL4}1$!eh>TW!T7bXoNt?P zSK%a8w1h(RkET#4g_WC=!IsLF#b*8!#^ISkgUXRc1YS1tUj*HUAdk%o*r{L((3g6l z^2?ucgi4~%nV*M~uXD-IE;7IJA7zp%gegO`BJNvVy7#@sB7Vz5U^Rx z*~EtPISx$|H9@a}6thV+=5HJS3)3u|rh`3H?}U`FMN})4kqk;3M3ER@!$wYs+Mru4 z65g^q<*X=1#Fq5V}f*9M!wj~=UM|B| zppd6^V5-L+e|c;fY~p03H%s!IQa16_AWiH@B_^HHn+w?lHGd`ikNZg;;UpzeW>lEd zY^WJT5)&yC4i}NSC2mJ7N^}zTSvL8RVY7f95T=h!)C4hRBX0eR%oZB=%whJ!PR=w1 zC7xsaTwE_SNgBrsEfl7h|1fFPlGBwDwPdellEt^=3d2v| zK|xMJ#iIz4QUH^Quv3t2$}|hp$bWcXkq(%kT1(A?6GS=cFp{O2E&PW8qc&3w%p4X(+yOCv^6BY_+APUIxYAi(%kV$_ z=2Psq)?ZW+^r16{9vqy zmK$kQM!ZgGQKm1%*^3G z%FH|{jGCT#L>RF~8PkljN|cfIpCu**X%$AYFN{Gn>;(;i3|hpKF3d3hq2}>GXQ^p} zc=D0t;DNsuSb&M@+#IJxBTEb@G4zR{Qe(&v{fT=xV!vLH&z z1ouyYOZ?j=!E-5J77G3EAb4ZMzURLtJ(oP2uZkm0qb8xA`6c{MK9gFpSIEBghaLVz z-lg?q7&}q_Klv|heud_rxRVcp=OA_4lXBAj*~lj=C-F->>8|*toW!3$ zNjdNo54hwfFEtc;XT21T=?^J6;M58A3*M(hX119jQ$AvCGq;5sTy&HyI-Up!B0qc|Fg7z(rL!=+kYd9 zI=(tnKRZLc%bwq$CCs92RyKBJ3`ggjNEs~=Ggr(iMPK5Px#Dfp(9yYqx@QH!8^I3> zemKSlwHIyweDn{YKaBn)edd{2S}H5jYfK-QH53ZHTuQmKk$gn_cJ;MrDIdv54~70Y zll)XnStcWL{Nk37`6Dh*aVYft0=VhqiMH@?o$&ib=pQ2wqrZyDgUi3nNNY$PjQ{WV zQ>I$V{Ki!#lDY6v+_asC@joCAPBzY?Eo1uDY~mjv{`hsxY{vgUHgb2Lqc6^;{|}_c z$?sMq)c7bzJ1CLvt6MY0Y`?oGk2j#MmDRgx3~~r#WNj_o4qT$J5;0 zQ0P_Z-|u2P&8-N9en64;GM?skhC+kc6rN6==tFav{|3p28Bf1i8rK$)J`^*a(j3b4 zQbxwpZ?1Bc(agoQU0NRcBj}fjs#&+i=Q=tU;!7Iw|4_z9DfWN;=6L&QuJw%Qx1&!R zO*&qqt3=b6(vG8FjDD-w|67;+$oe4~f!IHT{vq^>Z^|;IbnDHMyo)YVP#{Z9H9*Xwsm_9SV1DyUm zZJ$q|zipa6`>3Ds|KmE&34-`M@~?3|e`e-0vkrRxX7*pt(H6*>-<)KZ1FUNn!=j;$6@d3jM^-Tp{z^TV~-D8C$Mn zK-T;tt}@3%q1UBMu9VpkQ%7Vy6CLrUk1inop+fu`*C!%gg`=R2I1$Q5pM1?KkUGq{ zQH)~8& zGOrn$t`vWTUpOZ8u(Ob3=ZfCvO%y2}aA`ci)WIsEL5mY+Xr@%ifS`~l_rl;W?HpWm%i{hQyce6>>iGI}{mHE;8& z-|g>wkHzO{ee+Cy4mT4L!R9EomXP< zv^J#;N&`wwURjqJ{|`H9MX}}OK7quQrhd;Qf5Oi_qty5he?s`f&Rp8r9k1M|F#0`8 z4=PoE=9+jY*AyH7+&Zf_XH2Q)YmU}8r%&XEIrpHx$awB?<{Y*BGU}6j&C&YjXuNYw zo{(!^<`A#3Qy5$SoIH_Z&l{WnIqB+8s-?5luh}P+?^lW+68G#*r7cPulo~${bDkQT z@7e0t>|E8$5{h1Ctbemjd-OOS@+18w+&?@6ww$M1sn+jlSDrkJUmnea$EUoh2f49( z*nz~f*>dnM|;g|JUy_u)2A2W@=T$ehie4A4B zcV?sV#^1xv%m8*yxa@AT{4(+({cUEM>JyLTX=bKU{4~7rk86sf!XI{Kj8NXye`gF? zKHPt2oV4X;9963R&gfL$_=%ln%5_KmlAEx?FYB^?&1g{lYNe%0{YndjV#i0hgDyL? zgYe7R)lQD;YaFR#mQNj4I;gZysqy!)lX?g{tx>zF2Q9x0za?*}9jdSSPi<0O{Z1_t z9y=wJbIt#$e$_Mn_wdSu#g{dz-5kZUl%}g4>U7VOgk#z##l+L&q|iQsFQb0(FXgD> zVWkc|PoGNICd?i|-n?cH|)vsXuu@=^>@+XR_v19z!vDbxPIGWc*y7W$R1M=y8(qQ}}FR zPtIUdKa-22ekNxec9Q*3KTSFHbE)J@?D#BRKd5#b&Xw>pX#}3QlZL=YZM{xzk9k5u z_=e*s=Aw5@^q@UTyOg#oZBZIjs&OS%C{O*So_ylTbk&n*`DLS84|SP(yp}p=Y&m&2 zY1x@*Ip?(Hmz}WXoMF`?j&S=qxrZHxb_lnh#3fH73BIgL%E41!@CM>D`rEkVsq>Y= zODvy#NN~1d^(#~B%b@%@^^5)>577wUFov#&b!IR8u*I{xS*M~Rd@=dR?gsCGA5y#( zyv_2(rQogLLHLu32f*trU)%s507tK3P;ozavE_@glkEr3hu3(rbHH;gU)&9z1D*j- zKIAXk1D&s2jO)dUfKuVZ~5YL;C%6_x4_<8f&FC%l zgJY-Rh?dU*&$ayKR`49~4EP?!J>Y4U-%NWi^{~zzgYUNZl_RXLM=ihkI6pZ*0zL?@ z>-a1C!22z~nSOX>A9yc(mzM7a@3H*mv*6v}9q^rsw}Q7>{>}{WR`4MFLB#{$b(X&~ z4?F-~3g4l)AH3M|cS5i9gXhDyE1m=fgKBo&%0t_`CezIp7)ab&7ky z(=2~iHMoa${1|+|;@%O?14b=>S2MQ;M!*N*s}=79@3;J2o#1`oz3>%^cZ2s>{;s3o z-QXSY+Z1mFZ?pVe*!8x82jR;U4}jNM{;o6N0q|1zQpNq?#g;Eg1NVdH!Y4U-;xdP;e2QeKF8vhkMuZmu`B$RLdUs$1bh%a zTk$^de#>v!2HpqW3-49D8@$KzTN=T;!8_oy6mJD@v-}q1m$!lk;WHHvfY(`m%MtJZ zcqx2_;(qXA%Wvri_k-udrz@TVo@@CnBj7pU8SrU}d%)8ye|IXlhx58Ic#p*|8{s@` z)be+G9p|zU@Im-g#rwdiSNOXN!27^^;T^@h!Fw!!cNus$c!%TcKBssqc$?+#4uZFW zLwBE5JOEy2`McY}1K_3bV~YF1i!FaQ^<3r$&xb#wcn)~3?Aqj~W3Vgg>o#A9%mzw`PI&f%n1>E8Y#>WBIK<@NV!9 z_#wqx!P_jqwG_M+JP3bM@c?+8<+nC~2f)$WJ*c=Jyx8(vv6JNo&xapSJO@12@>{#X zbHFp;`xWu2i|Y_t>?h|zWBJld@NV!9_+yHG;jc$?+#$pCK!55gZ*JOEy2`Frxf1K_3b z9g6$Gi!FZ-^b$XKK7704IpDdLzb62m15Q1=+Z6YJr&<1<7H|*e*<r25WYq6KJb3a-*XJS54;z?S@CZ09?Rcz61*F{1HMV|R`52<-$T8NTfu|y zjfw}r>nwk7I(PuQ6h5f9AH3M|_vV88!Smr86wd)iF8sZI@Eq_A_&UWs;Axh>w;J5T zdH5K7z~Y%BJ?46W@b@-54;z?Lh)|!9?Rc*6ucX}1Ad$0 zt>A5zzZbiit>8iUGQ|Vnb(X*P40r&%6uwk(KX|d_?@I&sgXhDSD4qkJYx(qmcOsUaV{PKAA~PbybrwJ^7l1?_ks7q7b@Nj z-edXu4uW@scfc1Y-U{Ak`THn$aVvNb-luo~yw39X4S)y0OX2es_k$N({=QLgKX^WT zp5i&+xt1^Ufaic`z~?IN0Z+4hSvI(b^ZzmU9E)ExVy{OCUsmWi7ma`qf@dq<2i|Y_ zvTfjf;Jxr(#k;|KEML|L-VNRXpQU&!c$?+RkYCga9)!L!>22r1DXdmU%d z2>2j;s^Wd%)GPe`1>k+)z3`6W-QYczzrPH;8@$7D>dz_O3f^Y<`-9-E;L!TBiU+{! zEPsDHcmTW|1`LV>mpIW6~gBM%=0qkV>!Smq<6wd+AwfqC!;5pzK@coK= zz|$=MzzJ~AVaFMR@3Z)YBR!5YYWW9-9p}Ok@Im+!iuZx{TmFG_;CDW6gZMK>gTD%YBY zM?Ft?{L2=~wp?hjw7^NaPAL7s$n%{fxwh)$X?grLc5)o&dXZ;4Nn(p< z^OJ58nyC~&t`5QP$l`jaHrH2JgjursI7ajrUJuVY>OazWB9V<5}LVyvDP< zNqLQ9d4=-i)Re=%p~NBaEHA(o^I155%YBv~+GhP&PJBk6c#M7y@n*a9vn_wBMfHi( z=o62jjxD$B9D2d zbt!FAihttIGLs+dHpa%i3_m0f;kf1cz0t2$YVt?9V)_L0Ms%#X%kgkHkTFcl$5P(0WrX%_cA6PxfhRKYN&Z4@UjSCNIJdowa^slNa$Ldmz@2 z>=UtmWFL$5Bl~EqAKBW!vOCmXJN0z9>TR|B(3sZStbSH2EmP`OYVt!IKH>2%pZZ<> zFPl8M+aWtw%XyWiX*mz|M)KPu)1Kjn`m7&I>2G3xDfw`>!&36-9*0ZGr@I}N4#&p7 zw9D4J^q|@!4_Eo3@h@$&{1CW||E1)^)Y}qQZ)04&4RQ6>#nrn_>(#t1EmXVotE*Ta zh5O%9@+bTd_Ducc&(xnASHCx|{>-@gGh*w%@{F}}CHcCF^-#FJE6JDeLlw5ZD~DBY zD7L;U2V(2Hl6Gbj& z<_|kplBZ&iak4w(sx2u0HIcxdwJh5cV>MtQrMt=nS zcr;&2hAltjwe>6^Pe$(~a^elob4&VT^Rpi0NcBs8}^pAz@^*Bpf zEk8tD(l3@Ys$LNJQI}qw<%cp=Z=33sA!nTuZuceRTlk?2)hkrJ0_3b$B6|6jA4*rf zY}F%vxsMjnqdwtZ$1md_`jY=8sg`;VDJ3qEd-2Cm{4mt76uXAk@?O(^haE3=mUr6v zHfHuXs2N_4QyZ!KigUKy6=OmVJ6D_mZ;$F$u8$m8!k04&^nTERBa>nlt`nX&hPM`tnqsrPO2TrDv3C{g-OJmueiBb}8Pfv{dL} z=h70|uf+C)qJ|#l(qhZMK|DnbTw~MxU8?n7>ecd@O4BU8WK5~%^O9!e3oKo%{w>zH z7q_Wg<6hjPe4Wy5N;UpWwNIBbdC9C$TBbCtm#ch+(lkpiKBrXkadEfuTHnQ*?~AqG zi%ovG#!#es1xh_i9ZN4#zb;a{7adW#+P|nv`GZQEl#*NNZx`h&RlhIFQeN#Z8nOJM zVWk5~+mx!kMTN@yl;$bTQJSeV-O`McO4VM*apilJb}3c+85PQ_oeQ=6gyv9(5JlS?}9Uyzd+-=K=Xfr>R(Wxc%G#TN0kmMZB(l5w9v1-#+$Bs_PJ0_ zyVTG0KC73m{-z&OUgJ(bq<{bMpXp z$iMKbsqf|io{v0d%SE2A)Hvp89P{u)?99Xeh#mZyC;o_?X6)e4JoRHl;$c`{W%)f?6X!b_oYOCcDK?(rJ9G?>6Z798_|nA$EbeF=Q@nM zU8(x(X;EI|miskEZ=2F$rI|{#o>?a?KTGY;()`V;5IOfL{G8(q*yBjv7<>`=*Xwq9 zW8AmEf5Cq{#Pt&43oL#s@#c;3oTTP^R<_ood70U1`I#L`DJTBU%(HaHIi=VT`HUu| zL8VzrHICFF%cl-1)qF&rqtkq(YWyi`KV{hJr)VBh`jppt7kjwP&B#LJ67Jmk&4@+NrcvX^~K_zfpg<9aoI@nCo@I-$Bt8qxSk-1n&bU&j!ce z739ciq3=sQ6>6`Hea@$3UA*Na|LYyci>O39_IW@{&pRQKMv*m zMgELFUmw5sHN`&--tIVe3@YCS--dpxOTQNV4#jK0E712TzYTsH`eiPC@^yRIULH94 z+QoIfNc~BUbI+LN>;Cu!XFl;2RVYt<^NFv{72kZ?wn+0)cLJRF>W)Y4%|FO5ZFAj7 z{^~lwJD{3RiFbY@c$?xu_#k+LtNdpC`Ih1v!Hf9SF!jH#5WW!o0+)UUxaOlS9XuU8 zEsD!=?l#TOhlao4%o}!`4-L8SUcL&d@qOqB_!00P7yb$S>9+ibJ`Uc3ey8%y@XhEq zx%5lHixe*bF99!h;VZHCmx`|d&!(#nEANH(qMsGjPa6Z*_#Qd)1>O&JoJU4oIQ{LO zI?F#oe@i=oewy;f;g6$#%%$JqIJav1Jkk!{4&LU%cVX{NEnf>>jlQ3fc6*Z&vRbEUyUd5GCbpBO|~r`V0_G>Jp!)rG3SfuYkLMh58mxKtJPlM5d0zZ zyIl1%UREDfdyE%(?k1q^Vd~$EJ&iB05xfX}ZT~4dQTS2Ed3eO7e;j+IiXQ_%2Cn{!f3rXBI9rDm|0H}H>p;!N z!>#bG=(o7+)u8`%)vp9+KD#+=zYM+%edUdP;=Q><^@(>j@jmQ|SDvf6xmfWW@EmY$ zA5%U9T-*EMbntX=&7a_&)2t)a|DD6|!;Z6aDC)20tN44!@;ko_-iv;d@<-s0px@)t z|2X<}ihm5e*>P^veC%w3Z$iJ(rC$Qxs`|y?#o&Gyj{o`U|4#h(;QvmS|FiJ-hCHiZ zGxP;#){x`WoQ#&AMgO~A^It>%n??Vt>2l#u;;-7Tc^sVnxN21G(I02gA8TCwaaJYz zvlV{`oc3C!{h_85z7&0JFUha0|5i1tel~nIxYzQ6&-|m~+}&>Z>fghUIoxAY{tWyX zUUgP~jQ#-jw0*0YFJ|_G_qpsH1y}pkz2LpzM_hOp>r%B>-3i_ae$a)}U-L$^{ub~S zaP{BRPk+tR{!mSSok{%FuKqf+2)s+n(_d#6g1h?bOxiCmSMfCPG;mL}etG}pI<2pY z^^Uy%QZ?wpY0vA@EMG-?&Nu|F^@)EoXs>H46mNiU0IzeE$Ny`$DUSa$@W0CC|BPJl zuzkkU4BD?s^DXvM&pFP@6Sn-0v+!pfXUAC7e(GuP}+QIlrJp$h2D&GPg(DKdT&EQQgycFE4cnNq3c(DsF0MAm~2kryUcj4LK znTmVCz2K^E{G+{AW+?6f_kgEH%cqQir(3>~{+n{faVke$IPJSq^IJ*#%6UiSpbI|% zuKl6%IQVgJ&6m`l(!qUZ%~xeRd^>oXt9%o<=D)HLyb(O;!mGj6US$P%1^6}>UJS1J zuk?fa!HZn@jf~elmakj|PJhX5QJ(&iLVu~ucIhudzf|#s;N&ki%#*(q@>iJ})lVJ; z*L+uue1Y$#af)%;g%5&j{wfB*2f+JXc(3DJqxq~j0)7O%$Ax!-Ykn#Yf*%C$aN*?d znpVqKkiTT|R}pmK@a(;PDzU9lwpS)*O?#iD$H*-yn;^Z%h{FS@% zmvjtV`)~PC@T1_pF8hZ#@6`IryTH4^J6(7ic%RyD1#bm!apBuIkJI|f%fQRPOI>&Y z3@D3N=0=p)_4-no^I_RHa7dd9rTt3#l%7y}TfJN*zmOK9_5l&Ue{9#kP&@BW#D*{A`b~F~>U0gH9RS?G(I$Z4LX(AI|?~ z`)jtZvoV)D{{VI~bO$t@Z7ut!p$nluVjE&R27d{(2bu=`d*}-26Ku@)&UUtMu^naG z!*(azXVAG8+Q@c}tqcBYw(HsdC$^unwZJpqI@N5yW*cE^MRpn6GWKs{W4@O;K503$ z19~yEiLIXfOWEeK|4X(}_H&^{& zmQ8G4#g@UwF(irWu5wM<`5$aM+5Q`{InZXdV)j`_IzhHEwg&i%pv2%j#`e!_2azp> zN<2ShyO*sSnHTzh*q&pbYfnk@*_N$5bpJ2e z|C;VI_U?F9_rJydo4WrF`)BR`z0~WUtNUE%^WW$FWIa? zC3pU+=>Ep6`Dr41h@5X+ZuiSecsF2Z!EBjBZa&U+uiq?4ll_O;Qs=9j{NM0(m7||B zqH^|cct+*4^P*2!`Atn+9~-suoy3?NwDJ|Fd4|ie^6h!ZH>;d_y+2ZUCeL{!Te**V z^E1?bFZJfA{bA}|r1no@CuHR}7bD-L`d<9`N0sLwU#D_;I>f?`lE*ZL9ymcKmO&@_Kx@;vOsC zNQ@uQJnuS+yiN7C5#pNhB`d!=m&3|& ztH1pW_xrE4@?3n&>9q1nVw`z{>SJeVk(HOz?laz0c?EWUtMYW7AIh@w)!4l8F)I&r za{5$h<*SG#@358E6muW{fR$fU!n512T6skd&jCEA^5Z<8^+%PrqyNt;4;AkV@6ceUS*{4-Xbn}$53 z@;>~$RrQ{Jv)edc)Q>yY|^8epdPP{7?TX`k=sdrlW)zrJ> z4lCbYf&LEFC!aY#P<`?+KVao6v6Gu(}dOLZ%4mK^^vdmuIfAJKcxEU=-;pPHgeniU#&c^i{;YaTY0q) zJK8QQ(O>a-E3X{EPQKdlVCQPJ~(A^iWPl~+@5*8i~b+ZZovZ?p0` z%3k)DR=%Ek3zn+94fz{ZUgSmoxXSV2k{T<&6@A|+D}Mw(7ca8%Th21qKWXK)=w#h& zBjjX(_Rs5(uYBIht2)WQ-|By$m;C(yR$hCSarcasucR$< zZ?^Isw8i|HDyL1ac~0fzHgkoQuMNoaT52a7d5e`7ke{1=t@1M3OUKa~bZ-17D-U2Z z{VuD29qqF6oRwG6&r`MEUY*5w`4=nSPQ9~ESp91XnD-W1c{%l|Mq> zF8;FBUqf9t>AVyeB|n#1`L*OH_n6hM@{&)L-`ap39e0o5fBJv5`gysGm%FTfbt=!> zUSj2i!{q<7R{kM;n3rnhE3tX?(^kI2&$!lcx)Plg+JAPipP}=>4SC$>(*9pVAISKQ zwUbXQ*I!}n?DWu|b-rCiEP4OS%4_O~>%Uw5Yb(g-omO5I;CQEbzMA}Bd7qVUKS@5f zTm5VD>9^fhUQR5R{)LsVE296;vGNb$|Al|D^6OjhQ|;Gu60hp7q^@f+t^STi?7XdZ z&{-2yJILqGv+~?h<||!4R64A?uCa385!OFVRzHw|T-SB0(~!TRav$U3S*yQ_xUT!S zl~r~O#vnaGnCu#h6|}Am+X&2um5m# zf1Uig6aVCI{R^)B?a}?BPeu1PtcmX5_Gom!s4Ti)=!#|C#ZmdXyy*V=Ue~@Sx?lJK z*S^c2TlXW^zjdLg&TU_b?iW53-FN;rs_$GK-7i`a)hQf}?%(>4(f#$CqWeXzd?tSu zx&Gbyov6;OEiSp_Dy;L8OUGSTMMS5({DIPqcdoke;oZ9*uB$2Ev8Sf;Lk*SHtMa!7 zE2}>A;mW!X)$A$r-L%0G#e45ul~-O~)!10MqxP{?*R#L3w!EsYa_`>q;Qof1^4j{H zyRGKd>6)CV?p3b3C#rbW%{VdLS|>C%t#A{EP_$~pW0II@Xy#2t`F8U z25;X}xvOT{1@om~WnEp(9$T(t)16z(SBu2tbHm-6wgzu{tfnfsd(TFYRe5!_^&hIK zE^i20-Zr@@yHOf)!-lPu8@JwEz9G^Ezh3${*H%OmHrmeu9u57+OL zxp>tL^)(+ZXO!=*s+6IPzdq$^HtZ_dWM`-;^v8!1Z7^E)JX({MnbNmiwHr%lnN{V{ znF`kQD2mFY#nfNFd(W=Qy7Jm!%^nkQX?f|Y@(rtQtghX;vu00CeN~M)8cC<2y_p1W zEZxO5tJEOU%uQBySrbSm}JEY`f_2tnSwyrDJ_6|>~k<$4)ICh4|!+Grvkq&Hz zOZkqFKGLN{!cNLHJpS`so2_N_4;+d$1 zn7pr=Fz?J<(X8f|%aF<^fcG+{icA*P*(|J|APWgyoVshcVt3`{{TZ!o+^{RYu_D>N zv1V68aK9a{<~YFWYj1GRzABCbdznoiD=8&pW)Nc`+8z^3ysN9iMK>^yF#+whqtnb_ zMUg{faMktY_nL*68NpJGo#UeN+FcEG(EJ4|Zy0X1vGJDgFZPlu} z-5;*mQ@&&OzVm8#x_(Y~Jw2J9G1DBKPfj+*50{A=VzOy8+SQ{6+wjzGdxFly;}=hH z*IUAtE$dVc^pBOw@;7`4OISO;nu`ak^0w~Z8?4!7 zE(ersT6N>*qPr_UtQRLZ(Jqk{^7Wf*cJ1D?|L&THYj@XcxmD{qncKX(dLL&{8;n-| z*8RJ7?5^9ouc4u?wq}nJUVrn}-TU@b)fCs(*W6vRcX!=mHG4L4;bYIv%BmW>xJvBm zs{bgi#vC+kYwJjxV#yGl{WwC#tR6Tq-n8|G1VeS&LmU>j9_w3mgRQN6Uw!SP`)bZ-DDkEV=jQMggXsCDTncc< zJ-)-cFTaFWkmI#(h+a2hV1}oU ziB`=~MZBHt@@1^Ku%ekB%d72tR9?BS@x9JTIw3KSmhY^r+iOqQC1qQK*XNf@%huNh zYb)zG4XQ4$+TF1K{Zz*4a062xQ=m^~!SR*e=^DB_I2v@hReCz7)5@}ptywQ%GX)MX*{DCXb+MmW7s;aB0+!MK0yy`}c zORgY)xN=YRbdqIb-eE3fPn@pnInbKKgw5(j^l09E7B2s@XO5N&uNUQ@zG0dvCF+VODK6SbA~Jd|@jaO5RQFtHZ@Oxq2kLke_CaIz^gw^WNwLImxt)aXHLQ5>nhr>-zr) z=VI5^1Sat|<_tg6EqdS3Ztw_3w?qRlg{yRG43_I9eAszfA{-usMR z%n#pljg;YVZ;t4!D$66nX&T~KPqDmdlpCiRzsiV-BL?L7F%Fz!T@bzt8;vD0ImKRe zneL40sw?KM=eu>vrXb&ytUr@uwj#-)%XPbairkJpZ`rYx=^fdK)d?$)uKQ$35R<;i zmQm9^7`Xy{&uwHEl+vN6(MIprvGdYK({*C~!sp##` zgeIpOHl1l#6*RphuZ#d07zgHCcMHCn;@J+@4EN9MelpZ-mm z^H$}A_htTU))U;CiPr0yfu$qZ8>>-xT9@|q22Hrs_^}Xodv$Wf*ju9R)9>*{<8-H- z5aM*B^T9-`{OHYFd0>BXXWdb`E)i}C-`i9+-F3%#oXVzK<$IgT-mCR@Kb5&} zG)J3pTK7idrn2|n_|v*M8Fg}!!{&5zm+=1Nd8;XQK{u`3y63YAu0*;mj-Nx%|J~<= zshIX!`uw!_>U6HncD8A~km81gA`d4VJLE~gWYJ`q)Cy_y%%>^d+|*)M z-fEEc?K{@quXBHQnCTGBsWYRfXzQTqR%>+#8pK6A!C*&m1vW9h(*?T)% zw{Bs2q^%Lyel@i#m4Zy|T0c$oa@C#ot<09+!n~f#R4H3S((T1&iD`kGSqHJTfu-1N zpd&49!w&f_W}Q+Iw;_+HH?)F!`RUc&JJRCO6Vg2h#w#lubQ9oEv8jykdUfvq2<3u|DZ#?CFKo09&f6(3hx+bcR-TQe)4-)1pq z655ptDc!==RS?O^X)DRpVH8&%CLQNA+jnF#U&?61w)+@+if(9SeG2`tbf)dL2;Z)q zn!@+gzIXMi+J=U8(?&jd@0IEMh5rq!apaA&p?#ao%_sQ{UCj@(DI!UzC}$&>uBI;O z##8h5;kIpUknY*cX=X94@MZ1o&U@CZX=v?kZtd)1rsw94*0L!+ry5^A)%vAV ztzSCT`lVB?Upm$LrBkh6x;$Mw>|@yffz@3MUmI(9ST^7(f7^9jLbD@hdFj%!Nak0* zblIKDR+KLW~c2}GD z^PIHd<$#gALa^Bh$DbByXy|Nj-eH#a$&)Uf!DJnt)0mea{v!m+LB{~J3?0S>+z}pn zo10zTLPJB%s`^zR>7TC=Cwm9yR;9frIT{*T+iZzhV5%KHi8p}`DIU_2&%SU@5N0OS z{2CfMni_0cWM3rmXR;lB3B&$vx#LjL(E$}d$ycF-+1imshopfF%#;1((2@ShPI2Og zj`U6f+t@f7esZ3gvIH^ZAwj16c&(6?T6DceMK&E$pQihXeb_XEG&|RkRb-b>Y?M5! zN8LSN|5>;ART@9W=n0QQUuyeou5kWHdp%FNqxi z-wXF8oQSdOx#aoyGdFj~Us=)}Z@IqP+V<i(oYKku%3@AvK^j|%b2g@&O4Xb?IBn}WOi5B|xDM;%Y;C!GAK*ST}mGfn_n zR{DgK9|w!B$BumU&v(k={<$LWU2%`&>G^cAQ@!5_t#*=wyEcD7(h`WSPbRU;iF+6P ziR2ef^OJmA{RJmySDW{RcRdPD8b0}HZ_%zNBwzg|U#GzXSH?YOv*5?G;D@r{`?BEi zEO=uUye11?oCObF8F$X5@MO}rh=Pc4r8{nE(1l#4yKlh};<7(!-;U>Fb+z|9p7^S~ zr{SIng=D8j)Au=%Wb$Go?tMm?{0n@+^Q`w7-+uqoIr*zh9HH5xtLCnH9E{CUx#|gX z6guEfCX+i{VN^amduT>VUc$W1pPcz%&QhlTF_ak0naAgpo>V%fbUQGs(Qg;1%$C_LVmPUSfG~06YL5h7a2Co^kM?<-JAJ%yG`9Y9gN+E$(|0ej`OO zto#{x;`g0aegK|uj>hMcv$`VSBQBhCO8iyIe*szSnO_H`JPakgp@cJ(rei4e&QR<% zG^7-J4NrOu^(#fC;pL1I!pa$2=6*>y^K2()(ahnJvtQ&K7S1&>_tdv5k3HUB%{F`0 z`Wi{=%-L7~9pK-4bpLxWc|%qF%_tc;3vN#l_!lJ zi7H}zVbovP@r=Ls#~v^%<2~bYzuV>hE0^1~52|;_<^OS)+qD<2=a=~F&-;c;W|qtS z4=(pL8Mo)Vxb1J+xAHsg=8=3|jd>YoEOok3gOrFYgSxUvd4Ox9*WK-WYM3(0QRaFDre(a{_u2BY6&3dVw{gZ6slJn5Xs3Ul_0bze zq#e>6z5B&6^*5LP$rs`ASNg2f`z+_^$a~V&ywA?$9w^}*-dVz9&`pWVV-Y&Cz0b}} z5OkDodx)^S&%RUa*ock*RDO}{@3XV3k^2YI&F#9m-e;Xi%$Zd@i7!a_{Qh?(5_wGni4WK3 z`R}UF?YoQj&@c!8eIWY$ztzdRWk0pMUtVa79q$uuj_-*W@0oetaJ+h6IG*bb@4D%p zaNL;}MkZ%h`}=X<6Gk?7*ZTW$zduZvy!buHI`@YO8*s_zyX0rMXv-++AqiZZ|+|8%%$8j9mXm-@7Zinis!yz8A=^;^^~^CtA%r`SS$y3Q&$wW_Ht^Oj=TJ1h`M{Uly<`sk`R|#%umc#%pHWX2yk{ zr9Z#Uf3(x~c6)raH=OV$ljsQ;KiWn7WA}t*+(`7qgT8LYGZvKY zcN{aGM85TWw;5Kh(U&AG?lC24uSb@2%NU4h>x?V)jC)_OV@t`- zs;_dg$n$x@%2%Db=&QtK#;o!^((#*dC3s|`9HtRA7jdARdPH| zA7#?;GGk+(zd4--GwwFZOXY%OqfLu%xUxyp!nhlDFMm?fg}bNb@8I)VZ8>@7i~Rleh07XJ-A(zPsvY zeC@8M-sSk~V|U+G{~q|e;dePXPd()1K6Qf=*!Px`zwZraMmq0JUgSJs^FD7CahQ5U zm%5X@AChvwmcUDr*Y5fwG`qOjtXWiucpv`yh0Xwdk`&v~4>2z%U z5x*5T1x_bc2Tl*(==b-wJO05B`j75;+&@O#uS;1-J)n(6cE95HV{bub+|vKLwKsQ< z)$RW#wsxlLiEGT#)Dsy`Wz5sq`V#eIzpI|e7%6QLdlQv!_yg8v&jq!4uGlPjfUQ;7 zT9wGh&WHR*2X7ENbN^J^ZnYWvB~93VgZh=2xZ^aeU zA?5Q{W%sTd*Jz)bJlIIRNboc!?M~VcZ7&-Ct7YB0{A;@7FD#L9^#bzNqc#;N1bamOdYzzs@sE%q;*BV$9bB(^3XntX`lVLrL7bu zo^z@auR48lujy&w{xEcFczyC$%Zazf#JivV*yEh++3!@Z+Mn!~?+(~-jC-qbMsEOY!a*n3P)Gvb%XTb-u;GJ3U`Yd=f3tpH7cdm^4&t$>Jvfv|G z@WCv2R~CF@7Q8A89?63HuZ;V~v*5?F;0Lqdd$Zu(DO|t#NHwP?w?BDN7iK_Mo>BFi zkBU~~krtKl02uk+U_NF{6s>TJHY(E%l{3xFc(voG)+$8>bT)Cx+dOZ~jx)p+635#S z74Z)F$1uS~OJ&T+{0ij%gzr|~rqp*UiIwkG=SHA06F~l@zgwlhLe=R%(#q!#D?gxgqtcjC(k$|UBT9#qDjuj(UiAke$_FjYyCC#MCvTijO#1CGZv_5~ zn;&uVPFX%L&Jf-R7xtNO$BFyYb0!<}MvyyZc@Oo=$R#wME~OnxH63}H{ygN3KJ1&r zH%Iy9p23bnH;?|XRs_hk*l-3_khZ2KFg4$lv57&7+P$p|Dw{fLSJQSoAM{)Eqof)|7Dh2Nxj0C2$aIrZQH@Gkg`7N0o|-eLKiPU`76 zIC69A6(0kywS3M1_!xKve4XOM;3byN83rE)55w0g-VYwMe9lqueiBLh@Ki$sN^yFs zzijG7s@=>jf67_^b6n|jipWSu@p^F5H%H6W*vDLmxd#+qgDCo{(II*atyLORTBEdDDecwBQ7;Xx zP+F$6L}{^7>@jlKVJP`)Xo1qO(vZ@i(tuLGQcN`A?!>W@tCDL8*Sopi#kG`c85j0A zmN9Uo>BEbjh>U%-#>!Q()V}xIPFcK+}+RGX@`?0D#`@E)GWjuA8qPv*wOlkEND)3jm&8j zU#w~0obhXT|FWfgS%YsH!;MrH9NO+zH^rbsw=OMX@%^lAUedbZn--zy<=hmcJ6FX-w*1R zmZw3t{}k(&R;1-L7wiI7NqyN4j&7CJtans=Xi`A8tkXd6sdFr|m!W-dsJojz49Xg& zxr?pk6f06UX-cQWkSb)I*qJ@5759^2QdXQE@sTa$nP{;yKwZ;9WyY(_e3g21x#^*k zm-3pGl2^K+WO|mh6>Dx^KFy+2DZwjgNcA@+{M6;B%d&+}_d-U&)J3%w6X(3n;3xB5 zqmj%n+d9sr<&2uV_}JWzZU<&-sGvM z2fW(x?~3?Kc5U{T?BP52o~Gn!kxld_&m?e9_}1`BQ_t2(!!a zFHN3nBmCuc-Rsh|D)Ed{Xmssz3edd{cflZj#1#Q6!f!c#5&Vkq zE5@$`zXkXe<5z-T8GaS`&4RDMzYIT?1YY_9?kMgm+^^%V!d;E~+qkQ7*Wi9t(^B)F zOUtERbZNd^+KJnb-T->raR+b*aX*ARh&zP)w{eGXGauv9THImWr2Ene+y%G`ao?sk z6<*dRnFF_<`H0NDlKD2NGNa-4B_2;6PduAEQTejtS)Y9CSA+0_@c5s^{}g^dfIo%* zN&HU3zl{4d?lZXm6!#h2AYP}+&1HA*X#MlAK5P&%gch*J78 z3FkSWbe~d<*Q4=zs?}fhdWw}VR7#r^Jq~Tx&@)PpD;-sONNJbSR66F*PWKMpTh(1a zy5CLb5J4|L?}m)q`5QZaBHs->Z}`$O>2*yp{PSG?zo+tz_e=1S(Bc5c;focJuLkO9@X?I{Wp;js_MUz7bzA0ne5Q85#e5cHS2cr&@18Po-W%qIPXlD+qP&B z9oe2+@*;?xCjP@vMxSR1UxOYi1Rd#KcA}Ql zGuRyN1I|r+kR^l-7GGbxwE80?3^;!oB6V-@QvhxToMoId)b6*{BkRG6y%E z{@tWM@o^>y^*Yh$5P30*`?RDl=MCm``m3Myj4&TRTIKxpCB^)W&R@Pl89Re-IsTqc zn6!0QIj{U>qjTx6m2azJ7oA4u*MFmYMV0e6zixEiyrg`Q;(x1rxXSt4G)|n+1o{)` z$F3@|OKilZb!rpoaB5PvB2$A*AZ3%v%6#+y^Qq6KbXAhJvVWzFzu{s35@*z=Yl2;q z?BID^;%5!VV6Ri%=uplHe+lj?!UqKF*&mU$N&RVCDBF}B$aE!|oO)T)6BYl5$TOao z@!zC*UW?sf<~++DDXd%J8QsI$hy9YL$+5KE-*r4?k2vA@-JZSiM=0C7S-xAD(tZ$btV4#vhGR}Y3G9{2eGq1 z5l`2RfNS3JtCF|W>0lIj|JE{G|y~H_Bv9h^!-#I@Vk01k4^W zvTou%f0tRuv)jl<$ge8NugZ@*p457to~OqoeXC;YxGLU{CT2)PbT>a*y_;vHTBkyM|#Om*a zOFwUHbfwe#Aax`9WZVfodBh1nd5U&f=mg7Np*=q1*(>RjbTcnK#yd{0l+TI?S2cND z=!8UePZjNYlT$#t5|XYd>rLG05j%&RLRWekr%BI3iHGtjl=PFH!|r+>f4{doavkZZ zPN&E0;bY6q(=M{4ss72Qoe=3LOr>M+dM7CJ-Fp`}u_s@0!j(gg^W;B~-c`sx=XCD6 zWqtRa1x^cTs6t0I`MnW$4frPbTKGozI`}r+9lSezSjrh)A+BJ&(U!sB2b}QW$4!0= zrR(u@YjB>u`7zh~_K@^(vi^p;NZ;UDMS9YGob>UsRwMeHyd(embXG|E z0c|T}WkntTGc#O8&t9-v=yY)gU2#hIQDk{G_C|~z*F4zt+}YHuVLO+E`LDko zCES_G@)PIH7Bdw%HEmYrmUxPj$^Yme+;Mk4$UNZmT;sy@Okk1U$lg6cX!r{9skzCd z*~9$ji|5e4&n=%$Lt}bgG9p*{<;wf_*LhYvt@Mb}A@WH4Yb>90((*a`l~$;K!1DfM zN+U{%RKok}ES342!h5?d^_)>keB$q+RE5fXDMM9W=DiudO=*$P7tMUS{ITZ>Y;F@0&KlP3_q4+-dz2GT%!QnWclb`BP*9nWWVe2RSV*Us_bW#^E0S^r$}BWI=c&+kKC=MPD_crPLzkr4QQ z!^-;(p=Y=1IScST9p@UR+)k-~7hzXge;IrCzoq)?(R0cA`za^?E9y_4dJ0s}8T{X& zdIr(IPW@}pzeoLJVvzdd^xdugl1E=rfAo95ld(TNAFCh#7c&02@AROHaQt%q!sTYE zTk4nVn&*`BY(^$GlyT?$!sR~Ta&N|&LhbBDR8>4WE1t6-Fg1&daf{C zX+nIuxp7vz%9sBR``XL?IBV)2sDG@p_3A$VPWfz^{Yz*0)qOF}{;8S|pe?CS)%TmP z%vr-!WIk`N*~Sk1-5=V_2vye1S?c;Men-WsuJ=CtFnji|y}CHf90zOX+YIT7_3BFF z%2Ro!)C(P?%$jT23+yU2T}>mpT2)ukj;>PGG*$m9Lr$vwR~f3jY+}v5+F;XE-m46H zx%zvR!ON$u!dDx3LM@g+Z+EVZ&Y_WsF|Lmw(r*7N-vxB4jeBBZdLOP%yDQgy8{gB~ zRlBXZsbkgl=C*ZPAKvyh<{_9pq^IsDy?ogn6%q4moWX1kc7AJ^b|S*`G5ku6R&nWU!J!myo?XeI1Y^@%nO5PxSH{NZ-StW+_TRh z&UpSz(NT+z091aA=QrD=Tb`1fvXAm<)LO89XVBa z_n~75O1Rl&(D~Rg6Ka0h_XEorMeqR6jYT%Z)c@JPP2{!^>M%OSpkl`b=)AVK^=-oJ zCtXW3qa3-zIM1LPxg!txcUm($otHGUb>3 z+r$JN=|`|hip0JGUfPd9d8VF++beDgr2kCi@a#`DIi5&^TXuuh4V%+Oh#&Q{-jkjOl{p2e4T3|d3-BH}zIE3-+eLt$W>gf7-L}bSi&LymsFev;TN4`G;-J zXW}2lo>v@CDsIv#e^Ptrt2Q1v)<~WeZf_Fva zp6Rql?lP`2CMi@bzvIp*9hTIsC%>1xDE&lgPb>O}gZ8^Bebg&XQB@C}6#YciKl5E^ z$oW(D@7fpbOCFAXBY8sF68q^m)kmht{h3Qn=3l)*JF1H}-(k9!xoChXh()71VK#XyXIUpfTsBe;! zU-2B^39(;9QdZ`r#>*#+6Nl5|#8D&?j7JlXr%l4-O$qZ<-oC&e=4*Tf>5v5c&HlWb zxQBn8t6nMTFg)d8Xo=E*r83V;{5|7JDFDNdDLtZeP-&;qMx`5-ns```9piDd>^YMt zPlWZ@#4Eh4)AvNU$Sct=6~)lAN>3?0p>#y)KBWUnO+19JR=!wip-{V?KCi{b?;o@4 z>4lg5bp2y?J$+uI;=^`5z3|?{;KO!3ecmR;`|Wyq;l0@9?I@;)lNKLFkZAG6_o zY86^h5ek6GS#7CZ)yo;yM)0z8I z_&(ZZNO{)#I|*J{&M4mk{~+?C%D)Vc{i*K&xrgAfKlh+Zp7?UK9_99fN5K1BIPX(= zZOVTXRWWWcqO(S6wNmoI_>+D^Nw=Y8N=dijNw1;AYbfy@6N`CM{VfxH_Lha+bg$Zel^%v`iNPLic5CxCIXl?ompKuY(QSK(D2HB_FMC+d<$Rd4XS*7KXh3_UIg@)eg1RqD58x#$RCHwcq#W0#y*@07VrO zriX`$Klh`V<52Eh!4Aqs@=xw#bzJh3cvF{zGvy(`)Zffw_=$}ZeyR7<`0w6q#N<0&EWmGgUE%W>wfWtC7*D->{%WuT)njmEzS$cKJ*EA&S{e|rxLq&^QG@Z8+k}so!8xaljHB*jIJ3@WY4Wm;U4Db#<>5= z9`5nlYs{YH$jUrLvku7pZY%c7{9Vyy_B)MvUy%3S=xS@rz1VWYO-@18J=ncEw{F+s zdErF6Q*d9xbsipLk7gY2*$Lx#2NUFMZ?m0qS-syGhc75iI9}3lYRRXaHPz2JC!n>Y z_t=onxurBQSJEf$rRpAi_g5X~i8W3%@m6lUKaV+ci8`4h7mE6vYNoB0?1A>?JJk<( zLo3PSnx0RGL`Onoqd$bV^0lSZ7|sWf^X#ftkk(zYcRS$+;bm-qGD+-oNfZA9PlgLbC*+)V9XA49J$={w543WD(lNSrp;USy{GKg=zP}w zo_*At(&}eCgG)Z)<$MB9|GU3HzWK26Vot>7TXibmigs0#Z)=>Q-dd;Vfpz2?XZtbd znXyPuy~yrr-yGhxI8;~pBJ0Q!8g8ajV)E+-ry}u?Qz3h(liy`MPe^`y3SDvRm$~I~ zMqo7PL{>z|Yw95z<`tXp_)W?0o5=6Qk^wB&U!HQrq;GoPl+pzOufmaji&0&zc@7}Jbsrg>pU&%Jgqmx zv!cqWm3AI?YD-pZa_Wh{_KNi;)#hiYt{JX+gAGO>dZgY&sW&SgXWc9HrZ<;9;bH2` zr)X<0P&Xu<-*Bp!Q(U#D$;>&X9yzjZAytp+df(*>Ua=lwtE(PGFW0A_H(=_|L+HDT z`r}OVlR9Pk{Wka6oKBXpaVN{zxRV|mC(2Ro(@k70+>*Hmr+*i5rS8?@S!5CKMyR|? z>Ms?>FJa~0t-q9iigz6L^6cXl-T$2N^2gbulZP4MeL)@t&9&@lk#y0#X z-Tv&U$upBXoWCZ6%Xx@0Hj|21&P((cT0SR&K5!ZP$>2P4oU-wFhur>*we6c2&Rd+p zJwb5viJn}Zp$yOSOonId&hM5d4st@$<7spIGp5xzF`OgzMQpw~$44Az-152doOJv} zZZ(Lu?7a#7E&_PtId)8U1Y#+LqNf3Hi4PSGLt zS$>i1^DV64WIIy6LbK1eNJ$$z(p5O+D>U_9UN&9%-5H6Lmrb3=v~2kux*)l6M$2Q2 zNwhaNv~Ov8q;-cay#M_CrSdcM!<3s)Q)W_bGHyv)ujYL`P;A3XC%c?_!kQvm?4kl4 z+14Wms=3W^%{+iO@10Tfd5Y2DF1IZ6m*yrU4BexoK|1@?FYV4ge`($@!?PC{o~2I} z9jn@)&tk{Sl(Ovemu?wCmM7a={i!gMY4-U`x11$E#?T@CGrMJlW@U;?KNy z$k{BMy=LC?Wi8`BE=!*=CG%JKCO;T+g7c%NnQK%0t?u}v%q#k9&T5KKv)3e(yB>9p z$H(fz@&CCl9A9%ycYO7w&RrcJ=-%}x^zMT2u7z{MJyng-_U5};K(ZvhL z>SRt-JaH3iTj!L^7zz&@(Zu&y+nK<|QTWy6#}b?6VIuga(FLwEtn^%(`x2Qk4+$fA z!F+>8*O*UTB|7a~p!`2J^AdQ>6UV`XyyLmn?3ujw zBu_`Hd3WKwJIOy2Pa}H9?U``0PFeDM&r04qSMsj`jCGIicY@H6ta0A`dD63q zFqAs)=MghM;;VenSb%-9?zJzpKl*&=K=f6yXLc`kL`!M(F^TB%KE!5wHQ#c`<$T2?0y7Ln8mvK9zPyN$%RP{;S zN!1&vGl?&f$Mgc^RnUwh{?Y7s;#nskbv4>NyC1zf$$N7K8fkHQ?bu?VcQtj3Izs)a z+Ox{3k#}400`L%Hk72Mnuo(W#D-3=ZogvjpzmT&4KAd=kaYP%>5Pq}pD^#95^~>H2 zwj3s<<>lv+hh#1taY+8N57xz9CT~9B3$A$8sY>wmly(^2^^G0Oqx+8s;#;KMd(VAh zmg7%+hO+UElwBH`(ay?sZ1ki{M(uecD7e zvES$|w0eL27IP&luKS;@n+~cqPzu55W@9eJPg>wgUCaI&Vp7r$Y zekXA+aN1V(I@K$mV{ZWBV~uj%lMBpR{1EHD>quX9kMHX;*KyjWw$Ai6Id#3gPJQnJ#-&)#+|yAP?paUY`uNFE{GsoJ81Ip@FZb)1 zad64*IZ5~d(JMNcE86&Elhb12>*buW=bV_tLmbOBj=GfYR9w`v#`uRC8CQNV+>+q7@5ogtY`kv8<6Mv0+68YCt^sVm4 zUwDyn_|-bIH^Ez#vX;Iq=Hx&4c+1nKj1s4)+pPOH^D6)6kGgyBlzt_5K7B=4`kr|H zHFEDD3~t)Gy{7~o)OnsCmO3MA^`A8TXU=oT6>8rS*89)5HOxXiA1|n3|9mAYl$rk- z?D=d0+uz!^>x+-dywhRo-BaWrbM#!^`L|xH7)zVir8T zwtRa1i;iXqKb!?0$bxrf!Rxc&(JXjj7Tmcqe#@CG_*fQvBnv*61@Fp&Z_I*MWx*p^ zaQ~I@h2vT9V_EQnS@6AC@a`=5rYv}M7Q8469=I}IbT$iqJPUp(3%)N49?ya|X2EN+ z;Kf<+;Fa;4&t<_+WWf(-!S`pu6It+9KYU9=Q%8p#acyX4W$F%em+suLy_B8fO9h8d%@b;9V5Za# zR(=>iyVkOJ=hjEJZu{ug#rQ4kB&r=VoR4g2YH8VSjOi3(Ke9!vF?>hI&Kb@QHVCk6 zmr2Y=*m8Z__LVCe?!^RIT+-0Avs=Qc|MpfhNz1Gi`KmmV^1M6gz4u^ZHw!V$yXU2` z^~qoCVXtDp@+aYY;q@K(5_|6c;=}Mk#V^7)!Rz~Ml6S{n{5E{p;z{-j{>3VJ7Z)CX zGpB>KC1t5`9q@=5PtbRAeGWg^NE+l~ElZKSb1`NRK=yN@i?Ndl@Ade{jSd+%kbR~Y zmq_X1JtZp7@x0TnsQe;h4(9p&7jKFl8Jif4Gfu(UHs00J^9j}`e|hZ5uQTsO;=*6- zaPJR%U&4-cNgP$qyOT2R(a2ovo<66#`em{6=bw?V^}9nWCA_?I5dQ_)!|-0-;S!7l z%b`apJ!UQo;~Qqb%DX6ZW?L#c%gKdzyF3~aKJVyE%hurM%)MvE@iig z=Q=YU+9q~aevN#7=$h`Hul=l>aS2IJ8TQ9*e{f#yqklrS=MBao8Q)_Liz97L{3K23 zxI88<+1pambmYl@)byu3Ame)z>WAzNYWj*C?7%H~ zle(rU$AjyW=bn-}BXxuP4M-ky`N;>H-o`drboKKV2H@^dvt7kzK4?ol5)7*A>= zzdOjI5NU5?KAE5VZKE98Z2kDTsUM{MjKn8#yfkTC@~dxK=lNf0eqLUu^zW{5VCp~z zV?&){D|Mq&`UPw*Huneo)+c|uu=g(7!z!nPIdpzaN5>xg%-FPTQ@yFWDQS_mX3~>o z3|jJ2uGCsfdw=@*0~2&;o~%#)JAJ^951YIez1*LAq|TCW+&hM(e(z??ZTAuB-+%la z(h!h(*Yhmx|JmdP!O^ioY^LsihdAsQ(_|Z^-pQW(nYJ?+A7WqG=a`q(#Q5U@+Q89e z-Gi?>d*iu2bp7~~yBXWu%_K63Lu|tDw;AuW-!kG+v)Gn?o92SkfJRK6#P$>EHbqa`wZ|-g@$|l)a~zeEO-} zlg<5D+UF~&XOmyX$h&K$tXB@P;Ur`3^*ed2**#oM9~+2Y>yy1YoyQL_o=hE}pIKSC zz=>6^a#oNhyLP`qouO}(v3BVP)+gUwEc<#s{x2_?zPTrdu~pWj(;t3^vGSOeIrm8! z^EUmr$=iSb9D4jFuS`FC_6N~Z@aQpntdc&}@fnfXO`2(=t0eB-&u046^~tk;Y|2QU z4UFEOK4i=2+_h5oC5@ynKwiA|J42zBPd@JWKYNM$);qmn@+?4^C8Uo3rId%OpOQ8k z|0MOt)y7O6pI9#B@lU_aIItf*b*4?>p4-ec<-SRxD?O>2R zy;kmXW`9>x=YRB?q_3y-pSsOnw&V$E`fZ!mpDZShPRVBz&!oEcRrxOYd97>G-qPO( z&GXuzsUP-vO`l!Qb5_K^{~SC2wCD2$QYXy*4CMcFi6hi!DW{sh>yAH$F4GQw)}Cs! zVx!CExzo4bA3v6eyUXUMi{BRst$ZJIKA*%te!VvwU;U5a!9v>4CR0Y8CS8-iuS%OI z&!nAKew{X8`w)3n3^P72eZC|2ugdQxFG_rTN1}b4-KBlpX};~H?h&?)PVPf^-bwXK z^sQCg58~$D%kvCz6mj3LlKYq3%aDt%PyTQf{XmuWt!6(~dyn|ZVvX}SBh&m+s)fU|?XS)38SK`L54!)Vf|4_amgi?Osucz9~gf=OALbDf0 z{JZqqdcUAt;`01Mzn(xxP@ZGVvo$o)k}C6mdqV9$1D;^b|3&gPk)UstK4N|H-%{y2 zlS(&!J0%QxDEnw9u#IP`e|^>H_tWqC<(`q;PrZywo=DqcpJ7{%+8=5@%wvgvs24CGv*s3a{_gL74a?JdEY0PyG@?Ny|3RsrQP0e^7iNllgalz!F}=+_mB@-z483l z(UUx2`bEC4*MA~VCG$wkUO4oT@ssH?ALRMfD|_RR{+h~H(DgO?jxX`15ij$#qfsoj1~XIi&rW*wiik80|Jb$a6Mj`g7JPI1)z`yW*|a zcN4d?JJNmTDJfr5wv+lXP4f_S=3+d@*PW;f_yk!1_qHr>BUK2T>|_wzw{7NqZ>fBU!gO59J<7fPLy zK2YuzGRJ3q@?TQ#e-Y_RB~F=ZBxy>>`-sVp@x`frQ~Jxy^Yp)z+jfyWm-U-sr)jPCPo*iYb6MftBDH)SCTNh$BeP`O`*;wL}xl#5#@rMsE zFJVC9vi132<^B|+3|i9ZoBSMdnfD;-oW4tqdnCW;b89kX`>$J~JRgy^pczkTp4};B z&AY&PsT0`LQU82^G8}&`#Zw<1oUR_QL&+kCX9K3gRYB$F?ckpuN;m9y<;!#@m%{*- zkB-a{F;J(5%c)mJ-14JWU{J@skIIbirS?%N0g5D(KiUV~FB*)REAJ& zolr8nfQ#-pvW3u&iL%f5_WP&o)KY=mNHTe{1#5#-qvyQ(Pm=cr@ed$h zJuzNy5&mWPM<@AL;a`V;Xp({>=Wu@_C zO3K9JVWV)A-U#l_FY%}SzbWZ+w*~Q!sy??r>Gsq9 z->g8sW};2c_@*x>e_|RvqJN+2aqExZe-MADt9)pKU+_HZ)dnmwCy5wOyv`{`{uuI;(ltdE+jFS@Z=ONcZ98%1Q2*aNj{m01#u-Z2Me0P( ze&jDAKQvX|b$&r8-P=_W=6Evs<2KsZWy08fss3Qb=Vq$qnbQv#XJgto_5UYh#Mv@2 zPL767`frzg1!?pk@|6R`Y`D}JUpQXFl{QA{_mXRU*puU zYG0;x77^E}Wb&tCU*`To{z_eW#+T~u9pv)-$kiY>n%0|^+wWIN+E88za;K2XTOJ#@~Hp+et<9sriPi4Ch{$h`v0>6^Q=q2#X6 zyz|yS@2v7?l%7;Nq;x=OTxqA$Hl?*n>649K+ODAyr6HvOOLM8ig6EDYJ#6jBQ9E+_ zt$z-6UhK}HKN9&I>=xdya{d#_k0>2f+9L9--ECwWtIp?4M)^irySvHqvky{lN6}NS za&`DOy5vZY@Uw?hu3F_t-@H1PT-5TjiPz{Wvv$gwV2R&HI_JeQ@;>rc_}Qe-Hwu0V zzRHD@@50ZHTYbL0s;|qY%U7g)$Wm{KjYrlJ&(nSBJbkPs4p=^PkZ^rmr>&ev^cUOs zJbkPkCjaI|Qao#i$1EN?AmQMTT0FF0_0*}J82%v*SBRb(wg$V9;t5AS2_GVToqn#gyKcRRGJZSmI0C?<0CvYDAxZ=elPT;KNBg5du;3weq+?Tll@MD&b zkUw(+;D_MHZ1~VP_=x2rO>ODum=8F(8wa^-s!kAVj*e-nD< z#Mmp~Jp7>I#q1?;*77&Cffs|HfFDpi0DjE!H}!!Bzz@OqTYUC7_=x3i8e*HgaqzwH zeTt8P4_N-DBj97;UGNFThrv56e-rI>_Aq!od|dH<@LJ2?bRN7PyaK*k@iy=h%ikOV zZvzj*cPSnN4_f|a9;$z?gmcMyF_!xK>e52yS;2oB~`7rn}cs=|k#rwf)Er0U~ z@P6GFUftOhR=5yd};9>ZB#be+>%NIds#kfzLhp$t-nES+8%NG@c7lRW|d9C6B z@MD%QssRsxAA*lrJU9+MV)>#*Ubx4>_rljGJ_bHu`Jy=Z7i-8Vq@L}+J_(H||!D}tQ5WO?|!7Jbk6mJ7BvHZe=;BDYx_^{$J@Sx=v9s`fD zx5jz+kmAMMKhIiz;W&6P_zC!+;sJ2N34e_r{+1E&829h<@aGgS=6-$F^0$nE7u)BAva^Z@z>k5$-*N^#0DcI5+~WD; z;OG^8k;8NSIQU-pGm4La4_JOtA@~@07yN0(hrv56zbFbm3|I z+#I!kj>a>4-1^T}duAV2{(#a!rBS6C&uq18);a4xYe=ce&q^pyzDc~Z%9IvZ8l*hM zKdANu4=LZNbfcv+Rc@y0ovC_fwkckxRPCEtth}-FMQ3J&Jm2@6Bl{=caA3rlS!nt5 z=Y^+D9=Gx{#+0fZGc^5j28`G_qt?=V!U>;$M(HV~$CMscI-+#1(mthKO4a^+wLiZ~ z{ry6D4tKCKVeP)2E!zU*gYdtMv3)RU4UAj)fW{xtcmt|0P_4M;i|o@OcFXgv(7Z9F zqe_RBYIztPJ3 zODy#rRjT>vQ#oHX??$AbaE{D)j})t0|Bu5wY8tH6KIC5QdOUplFB#VS{Xzt%I8-iYNdjfvcso%}Cx zT+z2|e^~Z8_#x_!_Mc^(dn$Xdmi1fwmb35=B9DFYD_aXsI{b0vtKe(#kGkYbkS|oc z035r@!WlepffW-~mM=Z?W%K@7dfJ5_WvUYGTYjYn!AGGZE_?`F<15A90QQ!;>0N33o1PCL0_ zujOxR1n&e_dyW2T@DjyKz^lNEUE#wF32S_}Ip85~*%vc-&I$TMl`k3nGT%ACkGSw5 zj*jiOe8~VfpKCesZuK}+IuXf?&=X`x$E1~}8P=8BY z_1Aw9yv@ol8D|MQ^?8ZPOZ>9O-h7o`aulBQEE&z{_aEYOsq#yxAO3^j`&~HcDbVyT z=?C8j-si%pKLv+1e(H}u0j}j`;wL=?U5ZzO*MV2L!c!gvor)KON5P9+IQ73k^(~?P z`y=2%7aj!H{Jix7IQ8w;^BLTC7Cd74TWKFM4tVPc7d}cKe^Bue@FU>EE_{G3`0Et! z2JZ*g^ho-Ao7n1SMDZB>M(`R}_!{s5#mm5}!Ao3t7(A*t_0Jb_oW&P2xc9tlC1m-< zr@zd1Wbjii{1nFmoK<`bobq0L)P;|LA5eTB_%Qfh7v9M|twV9@r?&&#RX@F?=UTOY zG4<0+c`mMYg(p4N#x;BiIOVxm>$BvKjE7#U`LQ?*PkAm5xx$m)YyFllz6c)VbKr#x z?zzAt^Et)opXL3i__PZ@4SrJbW8maR@t6xA1K0d0=KKg5M=jR!7W+I0!ACSa{foRW z74LI}-v_SwRon-@7d+v@+rTwHitE8!z_q>@{dM3as=o@n7Ch<-Uncv4DP9O(0$$+4 z3&77S?gtNpI~iQYYdt~BFFNsM$2r5%c*k8h=}VoTv554^`_Lj+`kVy%`!#$AcpSXV z6`u0GM$2yz?N|1@TI6cK@*Q*Du!g67IuUTSN7656Qk194i)S7W@}EbC2RTCvm6A@w zlRiU3N`p!RO8rV5OPz~KsV5Rn-X9G;r}V5+^2zw0QF>Y_^~Ly~RC+?`aizzUjwwB= zbX4gPrH7RsQhHD+`EB$MD?OleNa=p1`;_igI;eC&X}{7wr3s~RrQJ%qly)lZP}-)n zMQNkbO-eT^tyfy7v{q?MX^qlqrBzC!N-LC>DJ@Z2th7jJL}{VY0;OT4A*Dg30i}MW zj?x`CKF8I>RmnATno6~$Msn*o-bvL zz*H#8`;~j zAjh6zvxs`?Y_MnBTtm4PJf!}#yWDr{SvVa$(>`X;!dXmv%Wt&)zJpZ7JFWk%2axZx zdalKN+V%~(&!yh{}KGZrvAv}zH0riJ&XMw>%VxE<}^>`kMa&6<&xmuOIY6v>VFdd zzfpf=0yWnE9RpQB0U>nYVw*!%(OUl76mhgJSK>2<9CHRnn1HP&Co zCueB67j*E>H`Dqrp}x)7qf4BOh(_diy!{kZf8tY$t3i;2dd>8UNR6dIT57hrK z{+g~OZFFTT)c*+G(?XReFJ@h5{pX*dE7SCrgoyWx*8f^R@qS0+B`rC3sDBObWRFt8sAeoa@&1@ttk9^zg20o7B5zuJEt@h*H${p+#+gq6QGPWuX2|Hatj`5)Fl zjQso|>o4QM*Ceg~%|pDi-D>?y@t^m*)_(zMymiF--@cFM;LX-wzBS$U2P!{|o*CBv zCh~1bsmfDNX8woupC6`N-n9NpD5F4^^?%0*^>D5AzqOk0!$+Anj9UN5CT=6AG+ykV`)<{90soEaj}5_I>p#DZF^`W}|0So%pKn?J zFgDEpSLGs6@r zOJv-opH@%8l&#J9m))6hm;Nf_E}QFef7s=opK+J|nall^jJvGK(DBTJ9jn&uF+8oLwqI@yTY9*rf3nN88S)Gb#YUAMKp ztG%g1&h=to3T@%HrUeg%7+^y&S)`!=w<*+f1<0@}3X0Bi- z=&d^&n!CHpmu+qRsB8_ht(o)8wqKpDsLHpl-9l z>gpTrUteEltlH4Ew4$M5=hpUg?zXT$bLV5SNzA&st4ZXBr44IQR^PCpqG7|bhVrEi z4G%YUuo1p&pff4qtslNhon3d>?P=Dboy?Xv_-(#_{e2r6%I{TTP%G_kV|MPhQW zz5x@~uHCR^a#nYA{r?@~miDWRaaqHL>63Z+G*Wuy%UjwXez(*wQ#ZtpoQK0v2 zxU*p$xv*gc88Io}x3*rTP1756)%i}1EN?KS(y-&BO`Yp%Hzwjs6LJ z{n8a{nmU?yc5se{?Y~!TZTTI$H#h6$*n1!NsIKeY_l#yF1`r@XfCK^$ zw!p%cK>`7TB|8FyGZ@)bgB+8DL=uwhQ7k}_L?TjQhFEFkM(LHGm0QwaS59yuKP$JS zRa%l@M@~qd`a)WIFYP4_X_Z@YtM-u_oXRapu=T!c?=>?={}>57cJAkM=cBE)*Z%Fj z_S%2XKKq=rSAPC}E=m<)b5*Ki5-F?RZ*5`5`=JciT@z?DZZenYE#CFq)6(?E>ozl9 zgLb@1$2DDcS6u#-6w)Rrkn_JLt(4Ihw;6zFsH2sV|jmmzwI@Dz@Z%j2j5g@baj)PxfZ+o2a4Q`h&QRhMwa7EwL22E03**# zw5(Wlt#&iI(h=Q9T249F_#N5J)zKCX3=K2WR6pjrxw|=0>+>i=^uDg53R~2&{M%V( zrl#E+EA}(=HociT+N`I0+C>_}W~1EfJ$i_xXKhVIJ*Lm98ueJvU+Xl&Wi`GwM~zKx zHSDpZoP1i*bg+^8Sl6ZKEx1XTU_#M}3?<&7tmQs{HH_TBnj=}?_Oh?%HZ9%{8mbzx zIENCy&bpToA6-_(E+)Z>iv6`Ubyeg%g^M=h4G9JMr>#gy%z$K--|*|yzfKBZJ2Cf~ z<#toY-es~bJ%mZTcSwUR`>P(S{k3PV%K)wPJSzQQ!>>J4t#Z2-k9V54BkNJ+-69jy zuf4RRvdmv^MkQ0k+cYW0?soFcyvWMZ6uSQ4!C&vN(o)A-x8Q9muUUDFpL9mwzpl@d zo#fay@O=jxWmkEMH@~dM>~2G%T(;*=G2;5kZ^zfxhNo1biSNj#np!lSJnjU~049$- z>W)^{ol}fD$&-M|Q%~|RVDbcGy10FDQH~&;Xg>qGTQx67W zVt%d92FBOG+wgc`e5P;16N2%X{zg0`7_Zjb@SGr;DSh-e;8B4~o8O?P1#zu@LmwE# z6}*`ncX?(Il`#I&IO@6(eQYqr=n0=3Oi>P#^u!MjqUqza_HV}XgQ#9Nxf!gF5Ta7X zH_GTsqU$L_G|4n}^EHXwI=%fH`mxO4&OQBTC5^AwQJp=ytsjkkla1-x*^f$!ch|RU zb3ZD28tb0e3U8`u+^a&m%Uiw6A1lIJC;BbZ*e(;-N0*83#CE?{kBrlIcE>-a$PJdG zzs60&8*ci)C4Fdgueq5^>X`2GCU*bh1-cnMrvCuo&E@x|o&mhMtj9hEcyrRG_9WoV z}vpmKf#o(IG=d1oI9#PqPcUt%ZiZQPWP<^B#n7>Miejz1fSsq$tX55$DXedas! zgdna0SI~FrAwf)uxAi$eELV1--jPQIF$IEeTZdw4L_^epPkX1g&Y+SGh#U&TJ&d#gL}C{Lp58)_S!3iEnnGfyNc znriDGkrxFj9&Kr<0BbtP(`DZ7s`zN0Q*ofauBq9nXpqCev+DGNu*vMOfjZG$8 z-ed=_-QQG8KD?DwU)^xnsd%)uxq)~5<^4o=>Z+PJS5q5({lTWIJz!|{{swuPQBz+= z?#MObD&BwKW4vsN)F$5cs;O$OdZh8-e*1Q(#AZ3eWMj3juRZW+bGV|mvGHJI*{*8m z-P^ZU)V5UDHZ)h5HyQKBh2%RsLKL)We{H^VTmHKB!9e_%zkb8!4O{Xz<`I~mw_$_) zU%yHI=WQw|fNoyDKF>t2oMm&73JUW=M}2MMTKR0#{@(cMFaHYP0%hfs3O=8cv)Td@ z1TW{0PV`&KcP!o>zHfs%Gt|kqs1&@pwxwBo_E%A1ZO2A=OXu=ki==mw_{NEEYn)RN z#}|vj6kS){ba?;1gZ0wSxL}TzF*m?>QW3rp8Xyth%-+@s6&c7izX11$w1{$$s9oE5 z$ii;?WV$2-MUU}6TbAmBJoP*vMH;Wi!jlB^UD1+KC^FVaSvYLTXX*k!X&$YvcD40* zJ<>_z`5H1#tBgu0bszunmNuQ3k)}c8^;pC=O!Dn+rl{#IOUz$UQ5&}X$qE@SV{tld zLOo`lu`9FLhGqtQMakCktyZ4>pDFcmitp~UK5}#5b8*r~gp%d} z&yY>qP9kGzInmH%`E_VafBaZtb@t$p5qrJ!V58y3_7Br9K}_G0B;$U%hrpLAMg%f% zC}UK6xP*y*8GI)uy4G_nTPok1!J9fO(|CTUIQe#4z8#luuqXN5)ea!vX^;8^E3G}v zD2>`>3`RIe0b6mw?xa#{hvxN4Y~%#R_Djf_w?DGi$qjOLobbe*AMAD{UQw{0L&=>* z3xk99WAZHlYa<7{IK?4n&TGMyN!G-eRYRe2ra1?Da%#)roD$ zh}S7VPtQ7Z!$wRb#0Pt#H?+BkFU1S{9VfCa^Yjy+H(_~V7fSSN-FAO^e}pBe(6Myz`e+R!8#2 zCS3t8FBr9dG}gY7+N2ZxiQnheKjh4P4LP$rk2rav@4Nn(x}h#2+cK_2UUKq`4Yv~u zO2nq4v48VChspd;CvQuNvv z91d8)1~%=At*h6K{U_QeWc9ypY_!1#rCy}mk!?%T#Lg6DJ}fq|i$CFHbw2Lo;&RZv zn7VvL`khOkiS1j_PKByZR2LaDCZBDKBa#Ppnt~kMf{m-$cS${p9>@)0yDIqbvy7F` zUtJq=X5}A!CPOf>{~K(5JdLo~_h`Lm85?Ab^P?y1I2ogxwFx#spP5{@MVCkGHY;kg zZUWtAerCLGb6378-Nb$wHa^8pW8uq=Uu|x6(_f7pSlZ<|(>JNRkdyiu+kfWVg?&lC z+WoA=j%a%4hnzI&Cv+J{oZG&ztKYq5`~J-DN9S3CkwEi3C261dkyF18`(w;MCG=0v z(?7!YV|}2#c05ORdcR2j%Md$r zV$=P|9nKc|e=7DfJ=iwCa`Y2>9OC8{{UiAw)p?|w597a^UKy;OH-PPQY<NTmWRkQ zXH0#r(E7Y;>vP7dQlG()*%hBR0r*6vx^lo4z9RVnORn?-#Lk9cWGUwmcZ|nfYhyvz`Kbz4GMB+F|R!%jEg^*gT!U(_5V~ z`dH}cD%u%2TvO7?=gZVZmX(|Gik-9khpBUPz}~ggk;yaVdH8fQ|5^Ss@MYwirTLbd zd|!3~*c44gcAD589$juHPxa2R<#qzL-2OEp*XBLrb=xMszg1ogYWby3q>X5wPSZAH z?fYuKkp30FroCRw+_M)QbA!c6(e-Bv>rW@xpHwOb7_ru@+!A2knSsqoj}s0#-l)yr zbL4Ye%Ep)%88Rn`|Gd3EU;CPsW9AyQrThAixOTPb5CBzc&1*RGLk4>2x}N1k)KO`m+lk@0Xu{N#hJ#^KjZ zotW#5ca^!ey=>OG%tI*~NmnFwC~<@R=s6f)XNR1m&#*=sVvXG|ZSC&w(XsaOk4G*Q z-o}BW(%-Q^F7{|!e;DiUovpuQY%kd^{jpB_WtChP?O5_X#N6sU&DsDv+F4J3$O&-m ztH))FJ#uIcE*F=FE5HSDrrv0S!{}#hc0PXj8#6sMDHr|x>BpUHbe1w@;IeQNmI?dnb<$=>vyGkee=%i|ab@Hs&oR0SZ}RfJ9^*|} zd_T4I>G=+2v1=w*-={1=Qx@s}ze^duL>Xjl-)-Ak=gDH}2ekKHmj1_A$RoqdhbH`& zFK8ZBuCULLU%!Np?He@fgg?>4%w5el`K#lK}5X zfHx$-%M;+i1b9{g+_^EHaybD$5XG64AB@exy2h4u^*wjU+B)Ubu{9}u+%NgJtl{2u zI|oAEX7}@A*AK2i@pbj5L6{gaWEuYRyN-(@9?476hyXbb-(icDA9=~nb1u$E zlQ1c)Fp`bYLYR}nwBn>VUBaBj2@(^M9Sgt{mDr6xR?tpiB=a;}1Sgx^aUr+E|4SdPf6nNxdqc}N&gOzTTNU_<&=$#yj}z? zu$6<)79>0}@~=|q{U%)gx$Hiwtwy&!PN_j`JO1l&=peQoU*A0{&A1d2{~R`?sV9#Z zDzsG>%R}P_=0?dYfb98)-8@H}nMjYacZR;x${3k}ociG}jk69Fz_d4vE_mjm3}J zmj1(;|9MulZq>SM>fDGtc;QExlJc-G8^mvPyk)$Oaci$;C?!=Azn#2~OPOwW#kclv zW43HF=61&Hi%UM(Hhy)8baDH{s%xw+`eTMwCH}z3$S<#<*SNB2e79ccpM-7WpI;*W zCG`5$uO`szxc?7lYTB%rl~YqDZvpmRBcvUWGWjM*8%r0rW1G!$v3l&V${1;obn_)$ z_S}BY7-PGH{%`)9L!TFWBy$F-XQ3CBA5hw_l!?^DV`4S&nw8clEmvBi@ub~E9yKR4 zmG(AN`n2#WKlPOIJxY%&ZCBc2<)zjuA66>;NaO^RW>`A=oYG#UCzN(tIkVf8HVDPe z&R(8rmp^A(aaIp@b|{DN^GH7noo1J6`k}opss9o2B(Kt6upUrF)bT zU-X`NUFne0L8TXzYWZiXoSBt2Tp|>Pn)K)?<@X~u zT7Exvqx@PQ3(%9TKF43A@zX>O@%^0ZIc)1I#RpIOF0G03*j+>~!RKA&@vRSj*y8Er zlR{jvD@>XiTq~ix&KK;*qtK} z;iVrX72(cHJlt8Ol+(!RQr@&X_Up(es<)9-Y59x{;)$GcjqeD>-rJRU`^ietGiY(o zC8g*g`FiLFhHCy|hry)pbf-sNTReZyUhK!UT6{qXGKAN9$+#vw4tY)c)&MXp16 zqvdc;kQw<4pLrU^PvA72EL|nO^pmA(*I{A1wTmgd^!tU_eG|JaOG|A(T^P1@F@;aL z436EmWaKOjDbDy!&b7R(0v3kA)8R`L&#`tfg`bfHobX81hC+rjHC zKcfe{9h`ikc5W7g!AmVa<1Ba>yZ}B&(}%!wEk9!rJOrK&pRITfc&g=RTnEp=Zsah0 zKyg3)|BB`P8Q^~K3-DPMpFaeC&hmcpoj(NL2cMz%0C=zE#h%&x0q`#Pbj5qXJ1p<7 z2k!xIhEG$x9h`9C{q5lG;N|eCiig2VE$=@G9tJOf_bVO(&$YbRlM=hf-gJ1M;yK`{ zmKXbLV)r;{7~WCb&-lG!dAYub-D4Tgnb$2Yc8`PgB z2Y*rV0q|bS&q@Oy0Pljopm+~>hvjGGg7<(o!=G2Y9lYN1vqIqQ;N|e=6c2-!T7Fgy zco@6@en9aMIC6#Ol{9Bw2s|DBtl~M~sg|F00z8NLY8bv>aeuGlT(SJD)8Kya3-D(w zE_RQdbC#b)_}n4zKKRp$4}kM0{H&|s1K?foeTw%0c3584O>=v|o8eC>-VR=G`Pn(( z?cn9`y^4pyOD#XU1Uw900NaPp9C5xE}8J-eB| zv*`boHvYn1(lZY%-5cdek37Ls`j{Vk;b~{V#h%zgSlPMQQHH&x!>mJ|wdpcH4d1|8 z__*@e`;l>;8L|9g>=${r690XQKLj5{Rc-goQg|t6$Q7S=AQ$Ppl9`EpqwB0i85i=) z#9mI)HE3!)zKq+2+D|jY-qQd@(|#@aC($3G*YS)~@W;Wm-VMH=qH8^890RBS&2+5% z4D44WRT971mES$YZ&3WV!O`EZ<;}pJRZ<@DOXBf8S6MR+YkaXsbOl`HOa7jI@D__N z!5)$44DV0sxH0%=$uFq*m%%$(8(mlaBzy<)yDe|xqpz=0@n-P7;Hs~|(a)>nW=RQn zE_kskJ@xD@(DdjhTUbld;<&5>l5&;53{L$o9(3U^pl>w(OW@t~!&1fj;AxM=r(E&t z$*@ED2sr(AajOe2r+u}bFAjs3f!DZj`lS=iF9;q0SN)~DVoz!59*r-%TfLaDL59<# z^rX^mrRZmH`iY@kN;{QyC~a5TrZl3oRcVXTW~B{EDX)=BISr-18Ct1yuhKnADZjzd z+0as@A*Cfsi{D)sK8UNvQ72}bco+1&xH?=Vt_JtNo4)TuXZnD#Z*(8@0p|NZ zu=aN3{p-2i>ZkqZ{;B#K@SjzG5B|Ti{zbIy+#&TNckVCM|18(Y)VZ?McH~{^q`$Rx zW|D`Q>t38^!k1hpyvBz6@cRoi`~=~5YIr60!`C#to_Xo#Hhj);=Hwz9p4m$L6Dq$2 zIR`cVIp!g?cd_syb8-ve5#~<(o*6d2tQlr3vhl@shv!ur?mbKRH&jj$;ZNA`S>!wO zZX2FKJviU9;d1Rx`8$<^4o;JXQ=ci4FTcfk=+j`sd2!eA|4ijjx1QZLT-Ina-lOp^ z5&p6bmuuXNPulP$sno;QZTOrnxb&9TaM@EyJ{y9o#cC6;rDAe`XpDy!;}75$SK)_4nfbIUk7oQ(NQyIbU-5?~D6ATk-2}){k8N@5TLd{x}{#^^nWI zFYceaI_{tKRs2zzKa2b4{AoPS?9a#jbN(RipZ#B4{(Iy8IS1nY)NOJ9?1H#|?&i2Z z^}8wQ>KPuf_dyo8$gD zF8}Nw#=}$l;{LfyT>f2g|LkAH{j)xW-~RYwX@XD4HZ|$DEAj==emQK;so2+8TlH82 z-($rdOjR^i)nQ_zshKnK6X6wgHJq8ww_tp7F=387%y&`b7qTBLt2s+o-Yfd}%O;xA-f}NvN zn#01&ce>S?s;rH>Ynu->OegP$tLmCL`!8A(@=@B8_$X66Wbd{iA{?p?u5PchEgW~ig#RJD53vN zBRYp{N^hC0-KHmLR1-`i>0}pys0jDOtJi@jbd#5Y=_DU_HJC=?==490B(7V4QO&>5&@&5AnG9kn+@^XbTA+e<*Ar(#cO>*Vh99==YyY_%J=*ASt z)!iO%V3tAVfCCNL-}I<6c0pm6!m&Ah${BH@GFRu?#@&aTnrruqc_|Fb$p?TX>9P89pY!mRQKosU3t~ENTzyLMzgCq%?p9!+E)bI z(vy9eJ?e%E+rS;<7*_MAQ=VOeGvwqwe8XLxi6pRbmI4)$9 z>*Nh~j`&S_{>GMx&)?XXzhQmA{3bYmgYz+(n(ZMRlbpZd)2%IT&E+}FM8A}N_NxNy zH9;NOX%iX~evQh>u_5^EZ;ZNm|TaRKLSNo=xF*Ldam> z%KQR}&#dqb5|e#plLS3tznDMq*%`^3NcD%vkp1Zie~Hh%NIp-(Ze(1AlK0#QbU~O0 zXi)R3s7Q3~MGE_wvVT6a6N-#^X;9glmv#|KohCZ>Lf&PP%8+NxA|v)o!Iv#u;&U%j z`X!#Wsr8QepZMI1lzyAU^o!W`&=@hIUj~nmg3uMb8_P!HhpuE z1Wx>$*G>59v6#FcAAK)ASb2LI-=;mqcURZUd-HrNJ^Gu&U*+*V-2B4loW4T7=OykZ z<&1$~#OFl5t=}*{?>j^I_vKqG=ueKG->>y!SN;FMP!*!T*AMe`~%SYXe8S z;CDTHf`jJUE)TeT7i_6h! z=aKc2%vl+9Jn#Ed z#&09rd~d7#R(Sipt^J1XBl^ABlln~^-`)Do$G$@x^ZofZ<=hOuO^|wS9evJ6C-t;N z>e=Sw`K-t@_4yrBmKP+PI8xpZ+WPh!GC1M3zLP$QZl(@Z*NyNIZJRYlUd<0Fv*&}+ zc#6q)du37&rtR9iUBuZU^=7_*=iAFjb#iX7&3l4#FZPiCJu3eY>D+Zw3-79%q=#(X zIQwngB<%?D4I_2qiO4s}t}{d&{l&id81>zqH}+k~BzSN1yOBxo&IEXK0(?&byeI)4 zNPzopj3*5xz|SSXPbI*+65uTf@VyD};skhh0^EON+;b(0uX~8)eABvBP3y3o_*nD7 zhIPDPu8SvKsygq+()Xi*=7WK1Y}tj^u3bBe2e*NH0;_5`b*P4O$@oR@SMCn1YMLcq z#>f*~W@qzFibODvh-DgX7bb#(@#G29iwna9pdLvRMLfkYskqo@GDUbr2+{3>U|~9i z5wRt>i^8182{I(iHJlY9oYiXdH!IE$qTj4!fd}{&K;mbJ1S2N?_J1xR#o$1m8s5Vn z$&^U3?;!Ne{j|B~XY%<2h?K8^PXvO*&yx6sqvC%qSyN=Vz7ZhFTlq_B<+{k#N8W2Q zv|j06rKL(sgz|nGb)1~@oKeBk0gvt}r=vXYt5GJwy(cJBhkd_I@MP*n-f2n7Q90Sf z3%Jr{Szg{hH1X0kUuwj>w@N!1dPV6arRS8MReD-!kJ3t|dz6+bEmn%YMy~4R37|)Y z)yv7|{WJ6s-Z$)+HI64u;`5#wdL{d!@!)}@^&siwJvG728dCVH7EkH2a^$@=$=A7T zy_?RTCVBK&_~|~GUnREi!^?o(lnb+-lIzCv-RW~(Eb1~?@Rdx z?E8)>rxfq8?>h>gefV;~o8eC=?gy{8yu2ss^MjYeAGf%72)xwtNwkM| z2)qEkOYs5lT+7S*ZQcR!bofrid%#mIFYl{+duZoj_zuO}d(Hcf!h7j|-gfW{;O&Zs z!I3MxHvk?6?}KksJOs|4@Lt->8v^fwk0_o4*kO4u{lc3A-VCq(#_I>Kx4f5duOGY| zzQv|b8Uio1yqwdQGz4A%->momc&_EWc#{Ue)8QKw?;$YN^44)$?_@7;Y;YBI-XPHy)pVlN}4M^{Yb`<{E~;k1JJ83 zocGL9&M5y+L_*&3GH9_<>e28)rIgq3c}gj-;d7LdpW(^J&@81HN~sSMo~D%gFg)YI zP@hs%F#Iw+i*a&qory!9GY2;hM_OK%=EX}KS7meWGZ(r9hkU7fa}}NseXHb9UvfX` z`Pp0#KJ!aTo{QGfF0|c2w7=zBn|_}9#nyEG?-dggr=E0el% z0vax5ly?L)H_u9!|NU{l^COr4rMTboT-@(`FYfpJh0A|A?ssbNM}P7Ti~c z$Krm^pSb+4_bi;xxx#10{m#c-{uf>T9r*2!E#Ep$fUS6ce%=Em+u7g}GrRKmGf$rU z$xdh80o^;FFvg8{vvmu4!ZUK4>T7E`b5@S5{n(*8PN*HbYddD0SkZJ~+#)|J^#&X;2HP=E!*zAS}}H;@y18> zN?#c#L%P9@_7U^*Cf-LZ$m1m6fcz?F?bo*&=o0!+!tNnTN1b>d(Z@9=ATZt8dsRH+ ze?=#`&NAm0b%DuVl{lHhsF$hiBQ8a*q<50ID`5`xUvQlDT~&$m`SQ+~Uq4F-Y^mU=MOQOBmB1uboZk6cn z{vqZ0x&&&SHbxH=9)F&&>0`u{aWe5Q@!sqx8L_@OMw;kHnZu`{f8#ifZJat$ieKtX z+C+Y`W)T;`eFi7j|4Dwe0{~~nf@Tkvv#;2TOly6av#*}HEqaDYS!?9Z!$A^o##<5l zx53V1oQwIKQ?m6FP8VnLWo+?qKH85tdy??rbDRbFitN8;edX9nr})@br=&H^nOsi} z6>ojUse#J5Y^g_o|Eloik*z#u;2gapzn_tQq;7t?oLLE;UF3Xoq>|gfqqG!!dR}#! z)4I*mg$|)k;;(DB;SrBh+UmTA^Yomu5N*o-o}3?hityOEgAYcWz_AkcdIKzwIa~Nh z$!^XNbOMp>oVoW&sjN4CR_XX&s^JVw&XCREOqVS343tMw?k)eswiV@1w%yyh&D+8` zF9EP@Nn8FY!M+9dyZ4qywykL0wyUMp`9KSJ02wAuv`(XY-l*n?lXDF9EZD4&v-AaX zc4S2MsiXU^QhzJ|rm){}WWSd1EW77<%a0;nCv{!KN!t4C$VE9r`RKDl4reD{)^gi( zN97E&==qWCxqnm6Is2pA%)W0h;;fUi=b~r(NxQaw?ar32mA|SK-NaEZKI%Bs`fYQD zTLb!+;mUD)aC>o;w1b>IU4skb>e2T(Jp(gM&f+WleC}mwkHRmYBYWHIEr&u*<~_k~ zZb;7+F*!4*?AS`Dw5WJ@N#QF_^HKJa zE4S@_kJL-&Qm6E(yUp3B(nm$laLBoJzF=}z9DP#ymK_qWrJ+qXJfo?PkN z{UrVR$tvgGCq2$R?LT(jRlY5s&kOgL3{L^`2+;{pAe8 z&&JRAra#DsC~|(X!+v}vZS+}bzkA+=JBkzkEp*Hg#?`mhRt8^KyC<@3ZRN2wYxe{{ zwYDty;kBV-kF6~`cK_N?Vb9v)!rxmPjHEceWB#?pk?%OZC#oHv=pH$V|AY8xkH|l- z4L)&(KDL#9L>)Y}l0Ni`Q~y+z)4;sa{M1&b<>@M?^(l`Nd3vkU*7;+n{pshNj*zqB z8SM{O%sIgH)w_S}bUyuxaV5x-zIhyX0@scF5UvaVNn8)E7k3KRhdYfsgOh$7>)((6 z(>EAzD>rIBX%WsDrmoE#gg>>gn6s${4YIKl3|BPkRD| zzvFl~OWF^fdi0MjI$NI^IZobtr7tnxF+QDA;a&Z&4E>px7X1XQBpR3UrE2*12|J_d zizSXdzjD!6UEz#9r$}T*!z8_}=cQk^{d(E+%0DCX81d7T|MXGsw>hhnjzGV5pFJ7v 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%0DKMdtn-r_(kw&#B50EsMq7wchGOxu;% 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�$?<6e;)edx0lbK`0=EP!y0%pkmpqz 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%0APreUY0VWH8$Nu%V$jtv}B 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

VuWhpXi`?{ww_OlR<3!RX?Grsn0? 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 V!Rc*yan{o4!71FZaVc)3~bG*#ni(R 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�GR6fsoWkhFL)TNlpbct!vAI$BI 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
m&%Ag9D-9J3{N(%(Cb%^dqk3IJ=auA3G(%(K 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 z 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 z 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 _#F^o=7sA>QuJRZ`bxaG?zCF1EX>IfYwIZ^uF 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�J{3ZpEjF# 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

FRVG1S6eY(2g9;jDzKS3dNf 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

U2l_o)NSqebl>Ev3O>g}25wCK62mkbh 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 =H?{C8Ij_OS|eHUG#Xlh|m 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

1H9;WoXnnSx%)b~2Xb!h&NJl41kY>1# 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

t|HnXfbyI<1Jv*Yi!rv0;lXi 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

X3#gk-jq5LGSoF(uNzEZ$9$%GZ3!|KRW0~J3I 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�ij6Z6`bUld5$SF>d{gI9| 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 voruY~ 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¥k-t4Mbb4F~$KBaLJE z!`m98LjO&qM{#uD*S*dC5NVug*0yMKKS6p#0BpxL_jASLc7hQcNEzyt_HA>&Hh4d- zVIx@Dvd#U@;GTYPD9UrM;Utfuv|jfCH#)vyl<)cXz#GZGBi%hTFx-U?Us za)VBy92}$n0z5NMEBrqt@IBGS{{@^^h)*(UtZ=;sLce{o`W8gdF??s`%>@> zBF_;k`n70zc_V{3XC;fzLR~C=R0QuZc=ZVg9ErpSMt1ZlPT9Lb$m%2?z7@j`3*)xK zvNz(g!=NkN*+|R$iiRcKUQFZ7***yQl;P&0yn^GZ9-i&KprtpmAM?GKSMcx~GseBx&C+BD4_0QmL{LM&Nw5a4DJ_51ha zVSw=|XkT>VW-3nH9ISK?N2n)mG7{FuDeI3yn`BSiur8ttXH=fD;qjCHK71)WvT=N% z$xrd}5R-*AJ`82EzGvL}{s_e5zCRLa>o3wB&NTY|5eWH|;qrZd6lmG^k7Qo0XW#{R z-1mfA-_JulrOU}g-^aMn_nYhTy>Hz2bHOLy6xRPo1Gl|^^g3`1aCsd#7BD`QI)MJ6 z4m?Wf<|9-cC`hU7pF$f&x==ml{lsfyK2Amb{uq?U`kis>_s1e0_xlM*TVIjxc&5?s zCnDrihRgT+NuXuFpUk{kr@#yFxZer4eqV@qN|%#~evfgX-%G~)0`Q5O!TS6Zz_(`* zzQ0ceJm24o0OM2H-{=qa_i0ME7@?iA6Gv#G{wTD`4)ya8&U_E`HgNiEBTl!)si>cq zpd8lEj9WjSiFn-4%aFFdA>C4@(a*~f@+rgR`}r);vY%HluhuE>0zB?#!mXdrMLea; z$wWWLxQY7tZ19Pj!TR|ez_(`*zMof;K6|%GvI;OhllAj?O1B!J_H#x;X@3;jBU#@J>i5M4jLhdBX-ttg$7lTu# z&BRZg<}LwzdlmtIc$&Ku@QKdgHh|A-&Eiy)6kqggnY_ydCj>3wA7p{ znOEx-cmW=34&kN|gNUbeIhoLi7#B1`X9H@B-EGs4c(x(9-kjzJ0N&5l`uIGSUAr zF7*FMUA(}!|DOatxwgPMcADD``1U+P*P1Qh@;Y!0V0&-e9B zfbps9YxVwaR=VdQH2W@}RNCB~Cepqrv`5s($5pQKu*EWf1If4w%3{iqE9VzNzV$8R z*0(Q4Jnq|0bs~_U+4=SL+gZ0Uq});nugeBA(Jk zGEsh(Q_4?%=x5Ts3V#`oA;L+yQOlqMExX<0706``veY< z^Wtk`ZcXtnJC;Pb$!-;A2l6WWvVgc(3odt09eR|Wz-xfB$L@Kl?9oE2`n#K$pS{g; z&1{vmezsNFib7{C%sk8wK3-dD9d9<82{i9qz4dlIf7^ri-$t7ER_4DBe9Ld|#P3G* zQ)$;>S5{(+d0+3bWnanSy~ws<(QpuJ6x0}{RlGNkDQk%+E$Sy_VqNv*#5++&zOkV% zY8p!#|KLrp#_c3H=^u%Gmm+P=y{Ck>oNvv&&uDS_m74r+q#3?f!}l}Py*A1$%1hh_ z0q4VhW0`FMwHfHZaIVJF(7YO}MYhx_p5= z<2UW#@ixG!aBrUg_l_!D>7C2{ctN%qcV{y&9Zfp!1P|+@uOM#Y`KvMST%9?dtIA6q z47glA_E#xx;xT_^A8+--kVhmldu7``r#rAsl;!&+w$PW={I|etb+ZN>-F#=j)((SS z-y^V<8%z8cCk<;Kj5zY~z1ar{Q==rePRd%Z-F+yA_wdS4TK#tSkr;k@PY-UQ(RX`o z?z0ijW{%GRw%r5>kGlIj>7u-RUvmdxm^tKPYVTLLFDk4XhR^tY$zZf^%J0ht+dL-k ze!iw@uQz_S`ntkIz^H#;_6>#gbZxVDB+g(1xX5Kwj;^<>KfGTwI^63X-qC$C@EdCm zjbJf>@^KdY7T~^>uasGlBMR?xmQpP7OwYl)8ZXl4Aq>A*!Ji);>Xt@H;TOs8kEU?W zoZp6w+-#h%?W<RI(&QC#0 zYx*+{e~z%g6Zl|7)ta+jdHEp2Q**xpj*pd-v@uVQP26vcE-I(t(mG7-oB`mkLCf$S z@NtGmHoZ5Xa^XK1O!uIms;`@NJ$NWNQYo+aF563l4 zTQ`3~DLOqA-8hSB0yoZ<`d_1s#@bDI@4JG(aImfsC)0WBuPCo+{@)O{(IL0qwo*-D zop|$`Z;!JCf2x(n|M>^A%yE^?4$p?+-E_0N4?n@>=UBfJeir!+J^ zijEv@j5db@e7f5>GBiGnI~CI3+Sm>6IB|8`_{d0Oblbp&p?;aS@l6}}bU4CsCJhH- z^0>Vnyo5%%{QU%1UWS7NS1iXI-0CvgH->8zam)t?o!FZ!!{KhQxv?t;N6n9ta`%pO zbvJtYHsXR{D>rbDbmj25Zn)7s+8D+KO-=l6j+X)YqX9=dH8!B0I6)M&X&AV9Zm=}Z zF@RU)IhOoT33SUS&sa%a!0S=W6T$f_E9ltTK9PpZcV!-bO+0?nj{TJ0Yo+erw7kXi zyAG)Qw?y!iVY zo^HW{z8;**=vkb}Cieh6n)SZUw+G`kyFLc-xh;Wx2)h%IrZ;gC`G7C;1-^&}KN0;)xReESry!ov#qw)1+Z)}fN(WZ*1b+EC z02^>&AMa%3Mw4OHR(A^!H$Q7mxJ4XR4hs2BNi9`*AL?_K0s)@9(%wJ0uMbs??mP)lP*XpVK^ zW>#q(pJxz0wurBikhO?th%aERaX9@UZ#%V965A1tLP|T09z#bDFNBnH-G2LlA7insq zj6tQfov3qwW8PKxYsbi2iI5L%=?cW9=XDLanl!38ArHp-`B5Hfii4KlNRAGHJeUPe9bKj^q`!v5|dPZTEbz=)=klKI|Av;@JnO-s2jjwTJ1D7hv}!|FRzJ)lLiHkbk0tMhuQFFA+KnHjtGv% zXOo|ngZ%wdbI;MZz0o8swT&aENMCo)HG0*|JYOj{H2$U>9p{UfpV2+f=v4b}Mw)Zw z^AXxx)3WmT_NloST7LcBo^K&(#aR!t0*t41ZgVfTJcag%aOfAx6>EbydD!TBd4^v! z7inJ_-7QMz%Nn%_NbM04=1qhA)H7>e!|&n+<)sD8|WInlDkleqt@UHo{RYT5(ouGPX=G` ztl}@VvV5;#S(ZR1PEz;8i!BPR1lzW3U6$g&8~bS0za`k2yb?V4 zR9X>g9+8XWLU>=e0Ud?h?zI1ff zI%qAtmS=DGdSe7<- z&9}JLm1*Jy! z8~PLDQvYo*H*;`>@;PuS`>vCv#3zvB{rbJ`mq8adw6~bJ&j#?W{w;VV-_S1gE1jkcU#BB4SP0@HF+MMG zyLns?M{E5J!1LCf@~f=7$4zG4_e#DA9(>BIdz)Lgt{tPS11p(tDc!dbs(+ZNdFd$2 zYpGgF%A4Rfrj##wmM;zLmk;OR_2$St+rU$r#mkrGcJRK3^4ZAwKH{R)&_L>hXdo=n zFycn@Bhs||D7Xu8PlI23LgP2SHDH+kHL&&wm8f4{(=?bZJh@iKY80-TTCMaS|^oTttG#`2(yEWefU zw}4Ao)Vlu;X{)>W&e{65x!)Tvw8bfivn}ii76kpkKJj(-dr$WwO$$VNvp}>YOy5r& zEZcnu`Iyg4KiJBVrLDO?8?EYI%qLhuoGhdj{1a%I|1TQ;6(QS}ywmbWE9*Q@(1p4c zaM=@Hw5sIk^&^`v+m;bd+eO+7{Qraep+4xX&@Pk>{fTj@<>U!6`rNducAEz^vTS@9&>-+-UgT!__e zcYi0Zu;QQU{(-bv?`m5^t6X#clycbqP^Z+V1NDRjm)j(0^;xgIJ&e_pnSk}%&%>;m z0%tuB@^Gy#j?T){{6bNZ}MNz+sMYYMXs9W(#Qu&?ab*j*M4S-O{+oyTYn_Ydo{%Ed?!+#cAOzPD^QV zS}=*1jLKjIFuFJ<%IP9YV%CZBBOm{8_3?K@9ZfF#!s4?cIDKM)BR|Is&z#7c<e~u1GkzCcKi5Q&L0yX4c-;vrWQ}%a$7x9 zjI{Pu)3CedJ>tDl!dzV@^@oc!#cd1VV{_9!h|d*G@bkyMNSnt?y1kgjoUtE5K4rL| z0oa$}Jg`4#IS(Abys9yQ7vOmtPnBcAfel?PfI<5F9FH+nMOAEDiy z4NhfV?w%-u>?WYqc|*v7pi32nwqTk&2(axDkT;P$46w#U_@qbnHtNa4k9()S+!gd~^`|Yq5hbY~l2+gw$THs1_ztBU`+Z*)45*vfjUcvs+UIFp) z-8OV;IpTb**Le@Zq4;YD?g%z8ao~BT@kIPEz-25~|Gu-dxLhwMZ<{5#IQ;%Jyse{A zSJUWuhzN))cnk9NZQ`Sl=HH&s9+sDJ@;L^7d^0*9As_RSSbW+V(#}Vi($?H@ zM#~WZ+@q0Z_!#n1dCYGz%j7-Qc<4?nZ87PKv^964(dru3%Ed4(SK>}KIxW{pNV8lE z$hQ=hNcp*Uz(1CuD8KGbHNKO`Kh5Y=)*_X^nDW&dj%CqPEXr$hXBZ#NW9`WLmY1>3 zEwwz>o}^X&4AXYPue}(pmh()c*-pz5+UcIW%<{5MaVv}$^n{)}<=7KjH|l9@dC#RR zj0e)ko;%a4h=UbgiI5N5h~-Oh@%)-S4|zWMwU9^k@B*agBd?V|%ct(v1R36%pNBMQ zR%^HxA>}iFTDPKCAIb*0Q15)XF>2Fqex`QPd{9TBc8+oCDOdKqE!=Qi%^R*G!cn*I zPjJ*P`iU%OWnU{#_Vpai_jtq)*L-Xz*1_9@Y#j^-Qh7rCwEv`EA^URWA^nHCX8I46 zOxq~l)xSko7@f#%D-2TNCaQ2>AZwLhad1WN*AjjPJ05xZ^!tkw5FhRC8f*Z-l|e}3 zN-*xfaK<|YG-E^FZ((|&q`hCl^yx@%!3A78)43%`H!dWgA?I#La~5EOUD({);#VhU zlV+6wKt!*+-JL_&1gnsBz{e(^dDb(Jt~PkShda(=JhJO=a}#g>LeTixS?3B_snpy> zBF|PEHAgyp!y|WvvCNM{8mk1Wy0pc`2J_Vy*d-q3n?QJXN*i$H(O5dv5Cm#To|k%B zZ3@2^#kM#~X+6TX8&^b^0Vnm5Hk#=gNbB49hQYZy;mKjHPB^3MzFX1-+Pudhb*y;T z>2Z^J9G%Gq@a0qRIIu!#mlevo)$N$IkAc_Gt+YJ|_lvyLiDvC^3L2xP7x~0WA-*w+ z&!ne+9Y!+XeFiUBk;rO+j^oC7QHI3_B6vIbw!DSNSU~JehdmGQ;eX1e7^Zbd+;fah%k^xeS*{z%w-lE3s#pffr{|OMt-G6yFK~I8rx{N9->fp9N0~WK ziu`SM&&p_XFEBou$J&nbiFs1lHf(b*vOLy?q{ScWz%Z>t&Ar5EwVW?Tnr-t^gyu=* zWm;LYa;LbL8!yPACq+5-#4|2+Q^tz++pUy^@j&|6lVbW+#KDt#B|<)|1Iw4{^D zLS5euc-juRK0!rdT)L*etHe7ZW$Ybs^u*o~(|Pac>BwW=(K8W`y`zwhyrbuW##{u> z@Ha|2^^Ts8bnG3y5b3;k^fJI=@8}hz$$3Y&5H^8#^jhG{&A9ijUdQ~=zU=FfR<9^; z_u)0w+#5um_l{VvHzCb^SnsWMI<|$rL9-@8J`aaNl2+hsD&~K)&u>j7p3_?lrrs3g zQk&p41#gOZ-|FcCjB?nH^Vpw}hsFHVD!_t=#r$vc`2&pk*~TYnevj~8SD80u`@c9d zg72&R{_i`GKkr?!O{?~EJZ^ID>Yd=hr{G=9n(6lN-qpHwt1%N}HlGg<>s?C!ZiI7U z4=dlR-1wz?xHy{4ODs#+wJYEv3usofh0z;%K#SD_`T)uz9!E4YnAfu>D+h1tL!hx4 ziWZE2^bU-UY1*xikPhAs$7;xz-``zU`9+LW8J}M9IBd@8RA|^SqIXm4_yo&-9j#I# zar3A?1$aE0e46FbHe#MnGL0GJGYI(}4F01>U$(Mw0 ziQdMm0`wDaBKxw^-ia_?73^?771}Cl+vJc~?dt0v z#}(N4`a&X$4W&%5@}vHI9d$DOVchiRn~2By^DU&U&q?D$csyrF1_=c$Bwo*62IdAB8rFzEPI%m?r6S zIjg>&|L1#K`uc8^EA}Lr{u%z-acC~Iy_O;1Q15_)z6g&N@~D^kOXiRAu$`zyzXF^O zai_xTWj=cXKjuUKrLyAvqZ{zngL^zbM^34j?;-aKq_;<>@_&sq&S>}HyIr3Bgf*Dq zQka|*71(c5I{R)d`f5$`5Bjg*>d8H%&7a;!4@`42Yrh4~9{uJj?PV!fbq{wo`iEF19WQ_=o>$A^{yQKM}DzB`aRRW{N-{z8cR9$t37`%m4kZnbOFU^v>-(+UefWGoSgsR zZWa8xguFD1<@~Kwj*#LYAq82yAW8Ne{+^Rl=eHxxD+_Y|St^I5J$)k-qtSvCt>J*K9b8L~W3X))@0G6_i5GXe+y7#R(Tr{y+9E$AgIdNg`7M{2H|Y4IB1Y5CA9jiI zjPz~X#8GW{e^$l+y1l`0EHvaF>K+U6P0g(#KHA-f^Vog8_^c@K>h0T#@90wApvR4| zT^acshKBn6JNJ|hdfn59(PQ$vdaf8B9qa9D_V)yNthG)IfOhwkw-c@5hOu&0)3-esH zMel`v27}H-;KUKU$j%wdZ`L$$X`jqO{xn73z=m;LULC<|IN3D3t#@Edq5RUbt`?Z9 z3bFcq>Nzf0;Im$Myo7nDfc_t6B=NI!Cz7|>@K>$I&>&pL(B9K)n+6!^rz4d5!eTS8 z`HM3F7e4A2w38n5J9&}r_xR)c^WBiV`+i1CS2AWQ!8Sbs&J_wnQvP#QbQqCYh$8-M-&#XMd z?MHdq4pu*tZEb!KX!uN6F5T&Tn94kue53X#=UsDijJM`LMDvqRvHcPk$}&lr4>!IO zwWZ2DLS-IFnPo8Wm=7N`^as|m8U0e6v{&v6U299A!`FP9dg^WZ-ZvSZx~cS(Vc zKCaOnI{{r7TiWjPL2KCT*tC}t^HW=jQLrf z6RKok{TIeFWM#@2uPN9kX!Dc62Vi$H<(y4RGs${}b{8*Q<<=^T=8YI_sN8=w8LwsB zHWOAF%X6aFChfqI#qD6@=v2V@&~}}Ixb^92h^Kv%xX|~xHeueNcgn-Jf30I7ct{+1 zxL!*8ESrb@X>!k0x#Y_y@TOd~r&ji`E^fW9&999AfZlJz%sT^N4V*Yjj)4p27Voj6 zWetW2MZ9ZEV}(38Krc9=8C8#!G#nZDL9S-kz)&xL+lsI{{ydESnuoEaZFVEg3`;lg z{aL^KXqx052fse-&`KdxCSfc`Lki;g5yo=h79{x!kUY6NV2gaFx!R1^le+^3J|kUN zJ=z!Pdql7~n}_;(=FFAz2F!1?hoBBTZM-jF_WN>NuhJrq^!TC@e*n^>&9P8+(vT0m zG`63m;iUx`;(SFocxc#_uDb(~uer6mIXu=kGzgEHyJ8Oq%y*dIB|Fs1liyV%@57MB z<|;m?_w{Nq2`VP4BOTC$vI!1MES4S9MU8DrE}V~UKZP5eHzq%FZURv`D`~YMr9rk_~^F5ZX8e; z+XPjh3(YeXCj!o|Hvy45tj3WS-%G>C=1;=;Hdz3gz)sq=CURuo05t3mj_B0jco;`z z!wiSyOWY#DmZ0*z=mCW-7CKyg2NPqk(+Sh_8QhbQa>9zqo}T}HHGBn%vk>^rHqq_? z!xy7xN>`(N+|lRQ#Mh#-h^7pK;cL;==uY|4lr-4&zmUH#NBkKm!$D{rluGEAAU(&I zUdm3Icfr~m4j%06^cEld0>V~$_x_92#u_xd^ur9dl=WIcygz`?x-BD&G#*5qPS}r) z#$<00_DYt6j!$8~#k_3nke=f<*UnP96$o>?Yq$+c+jTLtVDaMAyKK=~XTM`P7x~TV z(l$suIu#0Z<}R>(bT8{aQba zG-u)|*w?yPWs#en&bL;@-VqenrcaCJ=TGP)>(dF|R`1tiBCt4hPvW}LU^(XlMmY1y z40s*lI%_h0IdL`YoFL@Wj@uAv)4Gt3$0gf=d?srL%0oM>?#0TLUPBw|y+L_1_ip+1 zQxLMwV)8QW56OWbE zw-M*Vw&d=;@WWRCmG7GTZ@^+^=RBSN0t4e{!26x^}XXLHlx2=RJ^8A^YSd!ml1p(muX|xTxR)gs=;^32yBIIKuDaA!TB6tjwM=RyMh51#p(maXV z8u7Pt`Z7XR* z$hrowxE!IaKqtD{O55WpDvx2D=Q^bMaAqOg`s#Ybtxqh^(*VotXK0BOU4 zZ2MS7+U6;)iq|uh*Rzxt*SdjMyq;AZ;=5_eWEkjBiyM%iPmHUQ`COHGBV|VK&4)EV zL-O|dYwqSs-ibTSESK_OTX3CI&_(FR3nD(8#p3d(Yn%~1UE^0#-j^d~e7c6cjdWOx za5T^h+kiQ-193TxvqVm)N}8<|pS~f@O&u6@V(ikd9}fW?c9}f@b0X>L_`|9v1LGPA ztD^v;e}6UTyiMIX>HIq8TGIIaNI5n045Y{U z{O@W%8}X4I?(=&;|2at88iM?8Lb|svz0d!7Nb8XoSra`UX@7)<`EljD0yD9t6a9>zXHFyX}a-`XbQrsq|N6W;+aL zU0$q|FF~kxpX^HKVk0_a-+_6g*0IdIPTT}qIm_w%kJf6~uh{S0Ojp8a@=~@wTU|1~ z+8iDqD=kfluu{6n9m(P0!FV4=#VlTq_AOyMaUCMxCXxBW=7L+$=kdIKE7E4qXn6*i zo{H0g2>F-|y%c>G+rE^x=590Ec6aIZp|bI+?ad>z6<*?{N# z4HFAr?RC;ir8{gH7ckexJK(QjX|V=xJVv(ZQI|M{H=Y^p6L$seLc9EidBwhBhS$!N zbW{rJ*86ZLN{2a@eH8js+ZaJ*`wLEe6R%H2zwLJIzqcYxc_;2|Nc;TWcRU9D$$rk$ zy(33=Ix>~fy=w>Q-jkzST*2>sIl99t=su96!w@Mg--mK^hgQ&iBuB@YxU9Y(%h8Qj z(0w9DH&#LSsT>_Wg)+IH$j-1s-ypn%_ctXU^LU+QUC56i`F)#d@cRzJ znBR8^FX8t+$p;)(!u}1~+X12Vd#8r)*6_U=zF)%+YWQIdKdRx!HTFRVm@EM6S9?M8OvNJ0V=6xgn;yKrNz6o%h@5CE_GtxuD zy<5HaU3YI`dNiAEoJRoLX;1e9q4#f97B2K}34R0^Tar6?KSg}Y2s}<*9o&s{Z~yox zy>YG%euXsOEs@yWA7ht4wByj#;4$!%P!c_@W_9s6r?)I@Ad6! zX9llayKxdHCE5jRaeVt-2X8@Z9c*>kK>(aRW4j3)M@-*`KRI=akPpXU1_xLeS2|uo zJ{>QT?=ruSdO!H&d!McSC&0I75PaWIcisxis#)HxfHwIvdF0PZipR*^)xT&-DOK(mj%EalV$ficml7g!I1= zk4OD~klwBU>c#(%wox~SN84m{CN4n<3~p<2mLBgR&b!i&;G_ncqMp1ID~suFuvQ1w z9=-2lm-R#ozDxc(`z>z2(6>5rWj2oEI-|Y>GZX*V-)sr)6!{0|Wwovx{VxVwc;I`P zS@yjQS2Do0gUsujuBIEie z3&<~Ajn|=|3FSr$A7;F$Kj`0p%k1aki*3-EUKrhxloxwg z;6XWo2jZdKC&AITD9xw+Wnbx9J+gA@?&zoHX5x-D9yxD#KI`5}`|;68 zmzM)~+ZYejmt|(1q@8kYkr`Xi-EfvCsxR~NuP|PqStpdpk#U-nV{K6=gX&qejG9|u zGN5N1izgz@@Dzm9Gv<|cIXLOWFITx!0p}m@(2e88@=tY(K*xvY=*aUlq#5pu&{i$% zALh;X)9IFX5?tjNMZPR98dJnUZmNs^CINsZ`h}^+O8ijaR{V&Kgt}WN^+sD{c&UAE zZ_S+Qe-mIg)P^4a-U$6v6yD?egFhsN@xYgO@rN5s&i{MQ{s<5AuLdyl(a(4UVDb5* zqmb?!Y;(Brr1Ij)6y}+W^yr51fnhtd#59=rb1QW>59!7l0Q8<0<~c@b>@FDL zF^H2C%HvVQW68pkXvT-_J~}ouIvUFv9~4RCX?cwPG0MYaFh8$8SHDR55x>NPgECj5 z9yND7@J%`T#KDH(kJ$AaHRwu|^-xOI!=!H<~4{F=jL z;OS3d`Ih5+kJPW`G~I`0mhxyCN5}~Bc~16uqW-Bl${kj@)RBc=uHNRad{^Tah?KAJ zSUnhcFwbK0mBV_J)9KDY8Uxo2ZElX>Yltnr4!FMtaNZMucIm!Szg!?a^@d-4^J|iU zuEA}-yq%&e9Ps0)rf1~&v;X%dT$ppTxz>WvZ-lg$< z)^fn$Yp>iUTIA1$aTdT?m*u^EBct|<1BBt+&*~V)83E_YRw$vI6C(`g%2p_$z?c_j z%a(I^uq^T(4KSQ9TOGrgcMkap(9;oyGiED1p@(q>#JjrX`Cml9ySmjG7-ZmG-3lcX zxtz(4CqGXpFrKkG33=tjSySvyB4cd_&Y+!z^6@FGPx4;5oEJGCI|(Z^$Jq!M#ybhS zVu!yvX)ckwd@Cn*EpL+_w` zkS?B7_SKWf3(dEqQbUHxWy1$ug?igMYBl0>Td8k!KGO8TNMn9E{T8Oz5Qp{J1qk_= z|CQn*zZ^WyBac?fdp+~3AC%_7uZ#wMe!pQY()8KZA*Ae!%JKmouK_Y;MD6y3SHhX|KH_}q}TwgT- zw?45vz2pJn&=y*!9>Ccq8;M7`*!HoEw9Qjo6|X+!b%pZcIxXXKHRO3%b)H&on3N1 zhm^4&%-)urM)(-?lQ|lY4mJ ziDMSxshcfIw-sUG)Xl^_5a!<VWb(PFB-7;ck)F+H(cnjqoRqZ_G-<6% zL`+<+>=~J*6=!57oUv`y4QtFXZ8PT+5szoiCn3$*K&lZH2I_&g1tui*9YWOk@U#{V88onN(wE}0&vQobhG<5;Ez%|KokpjA_B)VfJHHDd>6tH#<|HaZYz;v7 zUeE_R)I2jYz%0kO^pwc`_`NWm5}`iEr$k5{`=08H!VU1JMDo7p)ufM3i9CVn=#%oIzIjJOs1pL zA56!mKi(kp+0!3y0?bZ-+>UsB`r~a#$EQEujdXna<2^{nr$63@bnJuj^vC-F<5Tbt zu|vYMA0JRWX-dz2Ox)VRH?(se6Hk1cfhYa;3O^gXtKVKJi^=ziFn&IS7LfICYl8FO z%5c}ugO@Oxyp)rj2gep{>C2ZAVWo7j-<7*@GCmIuF>)Tfgzdz2i1x=4X>YU1A4A*6 zGvLRO7JCP6WWRivX?VDwK**;I7vA%uFZtFew(*}vK6+Wjd^Pu(z|(uUpG2BA_fr~v z7GWVD@bqxy_T9_z9WNc`E%s69Z_Hca zK8{In?5{Lmc3vbr)-CD+`}0nOX`aM=1!+F!R~(C$Dx>>apsRJ94*Hn)H!664bAmkI zuE_J9D9_@YobOfS`F@n=uw0%WR^<6nl!r%U;`;o!BF|5vJcs7;++C69XCaUGUguS` z?=J#ftz$gL`&Sjbe;x98-n=8Etncm#bTxTDAJ_GF6}*2R<>6WLIL{v|^4uHcp-#tn z?yt!6C(Bc!oAGKPf2RDel%Jb!|!VN0}b!e@TVI7T*F^#_!|v>tKlCs zyidbFYxoxp|D~bZ*Vllvg7k!X>@~pcjCs}?)Lb1nKGu4qEvxO6K!=khppSccT1B4e zmM1zjLqD~=EOj^2=(XH@*Jvx2e7ScsTJ+2z;F(&u$SNM^PkXh2mi;nS!x_i&N&QV=n{<_=C=uv*sq~)IoS977>s_o@%nYeu; z{@J#R+6UTBkHp@FSUC=0JD^PAZAhVv5w2uan3adqb5@qzsxV8JxQ82^t_lxEn*BD1 z#lJ7(rm+z4h`U!n1p5@r6Gu(CG*ir4C9EC zrT1gn9}bc{`y(v}fwW!+BE3;hC@}v)NZUycmirKanAjT0gfm?!}`^z zpG#^T)DW>nuuIe;vrDuAOdpN%^UXPDYCd8U5C$CLvCZO}#}pUcDy`o=%mcr?rm}~Q z0le(H2ihy-z;{C!U%t1JW67iPyN5>sYft98hn;Tm2YIE0Jwvv-txq3~^2Rg!aY$P$ zlWs24=z+&*y=-P=%h3NT(&7Y|(ZZ_3XuIQ)W{;jgUg&Acw4Npp$~lQR#6xd_PUN?| zj0M1l@}TsgJe(zzhmN6w(lUQFZLb8iI5Uotdo(pQ5S#ra7qNP`tD&N zXrgZ@l2ef`>WzH|u?SduGT%Y$g5EqB>(*@BMtzI^$&YG3!o5#!-$2k?Nxy+e+!C!P z^?)rec_ur{WNom6J9SFF1Mg5LxQj@cWcI@*m0yx+2TI|;vafuT%e}8ua*2ot8}D;5 zp1JLSyIXvdTf$=EQbuobm!bd6cC0`=wjF09&3+|~jc@7?)8`V0eXes5@-e#+*HZnYq z9e9(wgQc3p4oqGW*ip89Xme;le*dZpm+60Pa|A(8V*Ozsv!5P^Fy?nL(vqhH7xt`5 zaA9w%1Q+(8N^oJXsRS4HluB@6@2CV9_J~SwVPB{O7xsTjaQDc}Ro-S{Z>J<**uyEo z#d|gReu(#KRzY^$cUQ3Qu(!gH7UD{#VGH^Z$~e}Q-~izzat9?J^Z5CLvdNDj`3*A- zepexk`Hc`>!f#aa0T=daE&+tv_;?L3)$lS68ya4&VV8y*H0;)}N5iIuy&7)RaFd38 z8V+eVhLAO&Ws{au%eEQtVU(*_i<;X493N{H(iZ6ww=K}&4FTxmo_Rt=o+nx!-K*j6 zCvxRcUY5GsZuDAiqc4^RcSad4dWJmH(Hwbrx>vImwCtCwHGGnWPuB1n4X;ILdo?l6 zJW|TxUs-vcioASmuZCrh_iD15UUyG3`a=09!bSB~EiP}%#62tGpOqc84|Ihytj(m> zjyC|7@stZ?jChpn)nw)2J}xUuZm%Xw2a9iXx>s{E((JeAvpgsR_i92v=k{s{7o7y% zix3ZV7}*(*0R0l<(!HA7b+3kYCw_xZ>Ugh)c&^u~-rz4MeY97TKTUcT@zGw*1xRPs zyA!(r*bkWI)*w%AUnce6N<6d&402?4SYAaQg&h|9=)76tHp#(U+$EFqt`A^>yakS8xhi< zpiJvk@?hRK6Nh-{InWVqHu$ZG2N@`RC{JE~%tL!W&R5(`p>Ei2%9{|6ZO>bfw(%41 zrraLEt9Db~2AX&`fBfg#q{fNE@BQ*b= z8F24G*=_X7D)_ooFPMHG@YJEOTGl>GadE#V;%}OMeh_(M{rnJl74j$U!+`VQ?p6c?3Geb2Jn9|ApYfA}PL^D+O;P9&PY zN8cl+|8$`D?*l)DH2dQ-2yM(U4}CzXe?|%?E3oaX zO|o+8?pskkvbd;@IUhMom$>g5kK8HO@3Zc$v>$(fba^>y?uW($^`+0xwvcwpwFPw} zZKvYx56o+Sh4BK-`bmi#8K*fpR>wjaBHf^zqKumRxygW@aV-86X@W4Ay225IvC1VUSTmbY=@ertIPI+ev$j#1>x;-WD{9Lf>* z&BZ**gGcItx@B-3ifi3H#oy-eUX+gSTtAA?y9xeHDfV?I@#OjL55HiKd^TrsZsPk+ zN{rVWT;+MU9=}_yH2E*kcyj|=laH4R;zWx~1VO z9+tVK;cI}w|HlW{{ypp0kG+lgNrQ>qmhf%h^S3m7hj~C_Hz-J+ z=$3}>5wD8?{I=ZFdF5u%^8kml6X<$0Or9sls zEe(=Cx~1XA%pcv-@KdDYTN;Eux~1W6;Nx2wG#zeJ&~)aOhM)O7;f4j?EFeR!Y8_=L3reDX}E`cqgxt&hcpIc;g*Kq173DZ1NEltmIn422Xg+F2Ez9yJi4WU zI+DMofx1+7O9T6Q4)SlM(&#M>e*o-oz_=FV6(+oq;g5jjZ)xDz$luaH9jC`_>q_Rm z7qH_2vo9~JZfT&k&fn5NSpJprq` zh5Vive}yfVJ##;W7f^NB1RWN*;OA$KTO8h4;#U|^1M!t7`fe9L8^#LoC$)2>*r75; z+2#9zxG-p?#a15Z$=Q{6ScFWu638#^1f>1C4s{Nm@f6g~`hFVX(%rFc$ohcqN%R4)*-o= zlkF%Py(a6*d9L& zX|t`QYhxNV_+W&5%!k+?Y5o;yYi^Fw!mbA!p}Pl%0>{6ye20a6Ne3;ZmGKC~rHtwa z&UD%0r8WIobpb9U}%z-PA7`p!eTTwcu`lk$+WgrqIXO5CH2PU}HB zmaUv`-96gqwH`)aY(YKazJf|2Fqn%cJFq^Au&&-HAr8b9Z^U6L+%F z=^UNvQ8edX;debB4qDFlhiG`XhDT{QSHoj9oUh?=8Xm9V2^yZH;Q|d$L0G5@CB<+yxV zqVZOchkI-*%UN?l_e=5xeJbE0Jy_t&xlGHxT*I?8v^uTO^w}Cp9d{+K>Z{qHQaglJ zT?u)7Y)77SmG%ep=atY?H%tfEC#eq9-T6kZY(`!fD3@@sRw#xIvA*2jEXZmP&rtq*PP3d@rlBjq|#cl}16D_6B%w7Egc zlao>2&viF!^pPI14inX5#PUSCO8TmLj2V4S#zghlYVLJ-U+ndKBhu9KJ`Jzba6rQ$4X@I0RKsx%w`jOc!zUo*I-B;!=CLOsZtH34CUM*G zmw)?~9V5}asB7paGcU^8V%{Z0-(pT83v35Bg^zv@&F1;6Xg=XguQipE?%m z54zx6ARo(Gh0F5H&c|6?R5va2O}@Rg*pN^zp4zXzxGwAwQIJ_b@xKZ;A8eK zrZ3Oa=3Z=hbiSi)D=X(qjZSSc`>mX3&Ar@c3+)>Dzgj07_vO6m?pEWaa&64BjM@6v z+^dZCP(OZOfi(N)77bsi;cW=Z^6yZ&cR=oIRL*O2a$oll%YB2&dt*-Sn;v4hZ&7(~ z&B?v}A(s1gmG_RE+;=|2a^J1;-jkF2UX@Eb5^M>4%5J3jQ0KT89&mWWmCkK>T-}Aa zvXC!YqZV+{yjQ^C*MTd`673xv=f}?nSPzu)0>ze{D(*MYx=Uhjf zu{qDr*ElVO_Tf{+Wp&lx$gR?u#Y^d)@r~O8ZUP{~H?EIAbf`RIHU? z7Zr}*b)f}0%X8HE7L2?acp!YM@?78;-ieU(JawDWN2hLE2jEvr_-kH#S7UEiNEx3` zAr5IAe`(5ZBXZ2+?Teh>;CU9d`DowOP5+bR>FsijrG34;vw$=l@jZRLz0Hy4V7F2d z&YCpV`d^V?dN1-`GDd*pBYt=YHw!dJME2gm``uQ9dj7MS?}BEKw-3@IO%>e-!MUq<@T`JHjgL;u_7DNx|e)$VQ~@Znt1L-GpL z-$8IHg2mHzTc-LWmwo3h*8 z6OkTi4)=F;`(L2H2I&pWjeR`R!?%mqGCzbd{#4R>q~NZXyg*7FYVO%ccZuAZdk*4O zpGz+FXPs^UY#2XRiJz_RwqJ7LXzgxb27)}Eb!WP#YpjbrnZ6O}{^sDuu}z)_(;ROx zexPe>!(c4u^FTAw6iDFF-8J0R-3L>oe4p=Wnj@S2{TDAlx;Zc`Z&fMxMM(3uaHD?- z(v2km=v@~tLwa;emz??8183`BjdX9HwMCnIJ<=lrU^}+CH!Hp&KO@o@>Xr6wb8j*Ean`>8ee72;QJ z6Z=X0IBXlv`r!V1DvZxV7|!~v+y({FzD>T$e1&f&cy8lmI1%$TVC^~R|AN<+-V(Bt zep$gIi9B8GKpcen$QvZ=%p8J>$3)Q>!IgE zT9{{bb;}bl{9`NgBn&+fK->?Ir#+Ifj54A$PPk!i*WE76dbW~JB3}Mf%@p@z@OA8p5zZZX~OjZSxTeup&s@ekyKa!^KGj(ZhO9wwXgOy5sj zEphiDHXDsN8a`^(3`k!QV!7m-Dq|9 z$9P&Bc)G;>)9ADf{(&^h^e=>LbM}$7`F{YD_K3>*U(%J7^?!i#u|A;OA{~Akc7LS< z50;Vj_5B#N*TvLr^W{A~Z2wr#f(602d#zruV5GSLb5pA0J`L55&wiPrVvi5Iji(vUch(#2NtbnxRtevgQFZwYa4X>QTc#C}N6WF~Hw)`j_}pzY%FNE$F& zo*4-FkS?B8t^&+P(Oy;`eNSRDz}|pUE@uO z!teEM*85?o8S}8zk^_T^S-f=VS$afAX2ktj#_N1NI2*~R&sl?mNYnB(4@2D3_%BQ( zerVD;4S5d)j(GkZj6Yfe{yiLVS{TZ*wmAfGv#gX$+@Yj%)7%_{eDYT5aOP?GavXv9 zMCBl!e@Eia%JB%qX_@l!jsl#I?YXla6X$7jb1e_*MSfPVd4Nl~w9k)0+S)|=ydb~L z9UFMzu2##h)_gwFW=+{f2QZD<=g|oH6md28=lF{l(8T#p3^?o$;vLa(;KNzqF&Z9E z{wO2M%6$HT-x>1xeWSn=1o1l<@=9^|UWT9M;o&$TT-pZwPeweZ%hU%t6XVjaNn4zk_s-LfTerT;w{i1hY~3|vv1 zMEd9}3YL*Zpl7HdD_DM2z_RY`VJtG_bUK!qMhSFQbb+(%{Q3cKt%6wmWC7r|n)P3= z*Atel?0hWRKymV`ijB>^V_h5in~iR|ns$g*R%@NfDd54Uu=61=|5W~1dCz(d(Umnj=Y zON>iL%hz4KlRm(5Fo-jb~7D+<0R?ujnfQwcE~Rs4lT~WdY}Y(*tz~! zY%_Gqk=mEIbHOv#K7JR&T}_sBY^#jOWF_V1*RaR7&ECx&Sz861J^Iyu`ENXHi@!qW zR9b;}zF)0;@^j4vfQu%n9p`*No45vWo4X0)+`Ses^Xkc;#!38w+2CHU=VNCGdXQ#0 zH<6w`8RXgMxq>*PrR~uQK{m=fA9+H#fD3%%d0j_z$|Gv0)&k5)oO6WB%5CzSxEytt zKx!{`Ll=q%=64>u0FyaLz3vT6<4ZGcnsOv|BW9L69a*igcv+ zB2`ckL=ZtyK$;-%d!M;8yR(~30*lY*_5I^_^UB^kGiT16IdkUBnVECviqmTGh8k9= zXs}g#atYzF_1;Bz1H1>@&ao8f;%cVO_spz=>ZgEF*sU~|<1Ng3sQg@`rKHvd9FzQN zk`M z)3fN2?}~WPUxxB2?LGWk^hl)9jK-9PfydNa>q5jPk>>?a;f_-(KpW-UZtJEm;I9l)Ti#Q?JeBA|F zr?I9V;$;iBKf>Lu0Lii)NN|#6OEl6D3d_{83Mh{(T1uz)gpqDp6`oFYq4$N6ZmJUH zBifzScyqOQ9!h(R;}q2+dxU5f>++<1@T)`@eD?>iKj~h$86yb+7St;OdHhY(f z#}8)ZXT_UXin0lw;<0w$#$2wG!%)Nt?JTTtMvDz?iS~9-)9SavhXF5LHS8x?;SI?O z2Ti2Wo`)4aoWqX5ooipK)`JQbF;*H)USnZBgzOz?oR5J^^p-?=2bJ4F)N3iMUNw6y zrHw{jYt2U*z?>$}D;=CEUTD&B$SZ5Q@q~+O8&iI0x(SG^a|ckI+Znza5&tjnTk7IVi&<0 zhxi7Mb-wBK_&1MOPe-p)FE8?u} z1LCo**%a9aYFhpF!8YKa%a(o6gssxGZQGcA?~lHjxt&Arz};D$pZz;bR}Bkd-MyVe zk5ip%-4z#ZUoWtI#KICB_F{V5ItxyuzSQ2nG}~rRTAh0HU_0j`v$1W>j7A_d8e@|) zqhh0?#HJS6Rp_0h6`qlx23GcTA4{c7c!j?RO zI8ipW3Z;EVaCkP&D7kH6Dg$dB!P%&U0II0^EhfPcy}d~Vx$l=$on)|?SK>`hm!-tX=CQ6o=@_a<_X7N7*@he z!hFe#EB252PsQ(4r&1Vxe&|IW2@(?b8mnPz~7(a2Ykt|LtUL<6-ftykUPIGFCJwxS2#VbpV| zJT3DUYs6L|&1FlglEBH9hD>xhurQ+qX)S<5&PQREW>rs8MWUWYJX4;A&514tX9}zM z%yhlL>53vy36{d5>{`>n`}ar>_Xd9G7-}O5t5?mrKBYZOv;aWXO{4?OX_j++if447 zECqSF%&=X!M+q0owaAZg;xWY2RWq&TT;EhK@>$RI9|s=7{RF>1N#${V)0g1Ma;NrX zo?4tf!3#Wr6g zK(#Q-jPQsVFX0k1Uc%?hVF>4A{F(5I886`$GhV{41&mmIC*4KzM7oOVMPVUBR0ChY z)799+L80IpXRdOYl$Xk@Sm|gS^a*Ngp@(=|s`^iUgD2U}S$R{GR@eR8}3c@@7b<3F5sMSNp7-B!%o9^Q^p)Mu&1yCT8W0G(LF7tek>uR_;eM$LANT z9*=kvjfE*$wdaB;oMcW9VPSK+p2C>`hpkGp^#~qTPmXoa{D+6xRzzMdo6)~WajmfV z!tyvdv_x3gnqsw|+NQSIyqZ@3Y~BbQblIBCKfq@5nV9p@cjde>n~&nq(YQ;qc~tct zWrNS=fr!oKZHQOhHl{kE)-?97buOQkQB_%3scEa;1w2l2tTl(pBxcqyyrn>$c^W~} z|IVd_xmG_`Q-2$|)S_R-#fiX4jK#^JI!Ve1@Nn zFyVcf;CXpsv}lbuQ(nNx7O`cTw8Fsgw&i%+FuV?|9%6)j1#zNIfxJ$y5}aH{bvU2( z$09|nQV})(=B%H%&UM0F&+uD;E*ttpQdqVox}>R{G{hC5b;S(7ofIc#_^%-@KfAC9 z%A3v3iCf@6yc(s>>ZzqMgE!6U)tPxy%*_9b6mjvH`P~x?4QeA(-C7gl7s(Q9=W4TD zF{?_*G>f;KiD!XcwGTKt(=&tTR+6yf$Wo$9o@I9cEWPJMrY%|akZ1PZQyHEqY_tlq zcdw+GFDz9H_#z6|?$Hi2LiMe&I){`NF+`f_3|!(vA=RZf@xg&Ti+<2a#G{|S13C$= zi0Xo8xv$ZVwkZvYMNT76f17D2m+-6nR97I&2shUWl;>>^fek)$UB9_z4`&2`0Sj5y4uwLnmX11(ItBpi~ss+^VE?DkOIcbVf zx}~Fusvjuc(!oTHFG0M?u|&1tG^L0$JC&$#6ld)#(;0C>Jgp8eeMz+j8*91%Mp*3R z8Qv9Pv)_!hyi-|@nr@Uw@}VKx!8o#XEvv@pRal*AZisZtD)MxyBh6Q7|4R6}kPi*j zi8?>x&DG_3D2?W_gwyQH;=t&y&xeNENcN$j@WVEIXx?Mx*Yu&GcxxY;4-hBxyRfQ> zm$g~dYFhnPb$8&P%a&Db@}Ys|A|IL$IczoV);=`WEm@o9GQCH{dq0KM6CtE?Gf1PO z3{}H9I`^jMYV>NvuaT@5>fsbtubMra()u8;we}-zVNSDLd!u;K!v`R*tnCI8E>5>8 zKeXK-#M4zXt>)UBoX>jgZ7}c zb-s!98tZ)1MLzCNGZJBv$B+4aG{2AG z_i_9_f!`y6jKWmtf#8LT`v!+AIw<{g7tzr?DJJYWJ+M z1t(9BEYtB_4Xo?2vE5PApJ=ILWp5bLX=M){8&+n`ze|oSdye8rDlJ$28f#{PCeXut zac1F}Y#HH;Gl%K}-pal>^LU)>i}NMLNxnFXBpBg~vjlP0b_TUiZFYv5R==I`6>!jH z%g!+S;%vt19r@xc<EA&Hrom8q**(%RPaJ6)}- z>2l+1DY~lHj%6JDcdR1r)RQLxo;(RrQ3;$>HmfFW#I%CV6}h_ncqpg!iX7=`TPt#E ze9aX(>(jDUqRlN=9-U4B-^BQNk-`ql8<` zMhU+b@KgtyAqsh+(tVMKF5%ZA%bW1ss6x8jV$yFZ#Px1$v!N7?3@XoLCe%O6F!SHlMjonan8oZ znbqKb2jii6Cj1-GQpZgABGPFlOl}kZOLEBWqL#C^#YoC5XTps%4bWPkhxxzUhiA-$ zDaia)8X_$FzcgZDN+x>Zx68n?b8-_0OQ20WV#)X3%E;7n(tn|I1Sxx;gIB3>sDapEe|)L8BNpgSH{A zbz5DM?d9lPEcz(72cAJ)$lf8T5aTfEaSA_2X|N5R<@L5Tm(mgpwL)UqwXHSJsp@lRGa0GjlDwlS-j=We<13>WE3#;Ea2HYLu9`r zK17OV>kK?T%oH!JOaoqTig$FL1*u>-dH7BDE70W#o zHAcjDw@4tr7bnd?RxbJyHJUnuc8DSz*5@-}ovZ=Qig?g58mZ#qCp4)Cqw{93+jS>0 z(t?O~a>#V%KF3s#dkj{#X{CiYEHp|iXj3IZT}g^VSZF_jdy&H6c08|xtu#|hKr=d^ zq6vT{&6sEl7vfE=gVv_w;ag= z`E}9TO-aCn!#>dT?5!hBGQ!m5mI3_PIj_U~0-l zAIL-_O^IVBQpLr!$z90=C$gP-w?htiuaS9WYDcsSd8o-fc^kq$c$x(2L4O@#lJhqR59g-|FXBngX;vs`6!QBP;LUJS`Gf=VYmp{!RQvN$ zo!%HE`K9xFsg)Yx*%8m_cpk@eEY7ROy$n#+ma?rk6KMz0dKJ=%@|RXvjO;Ww$6;5d zIO;!dq9%9Mylig`-;_Z<{>=u_&UGt6)REo_%tk)ZA62XQQHKtQqpL<=gG4?A8#jli z6O0k-vp7Ndu1Lo4YzbeVMAjk+R6f0Je5d`yE(Rbd)oz;w6-_syDw&02c9Pc}w5T?FUOn5lQOn4D5_Z^BCeWwi1W;m&Q z-go3Q(*3OeRk!1PhgRZ6-ysWD^qo>X%YDbzEYsGCzYDP0+jmM(6U*kZ!vN;}sT8=Z z`_tXakJ`uH0WRx4R*pEjYVAM+wO?dW6Y_;4(&9_e1>KN+StdRZALa?o?j3HBM`tZ=xBr zSj#j^1I;A0jAlHO_7~3&!avqj7XX{j)0fWbM;`V)0je{eTRvjW-xF;qaM2fT#PdfY zzFn>FcUXO1!AhcSet|)3GQ&3I-(aBLC+`h z7=|$E#Sw%D^idfy9iw;f2P&L{W}<-OG)+L5XqtpO@toR7@O%p5 z7(XOhKO;Ea_f2(0`BM>3muLf`uO^&>=5qlD97H4GP}@=BR|&~{J>O%nl0MUy8LZ;z zJ0$$u0SOl0Xb@e2=4sXcS7zN)*a|6XDZjfk0C{9j34$4j zI9uOn7-Wh!=OB3E%AJ0rVI*+K-)I;^VbeDntXZM1;EV%|_4gVkoAa5z*Dwun*57NG z&hla|UaEetVFtq1-)oqOI5W@jmPNAqy@pwc7gvq%HCU61;mA}E;n4%T)Rshyt4Rvg-YlNyqHOle_a*2%4D?UDCY)rKo6l!<(#+?y5}t-I#s!`)1s>_m5}>)z z*wsm)^@>F-Usg1Z-eBt&w66mx%A{{dHLjkB{YytpqlSwC#aDn;qXZ14Z>iA?qUL4+ z#lECQn^?j?;Z%V2iaNdu7;EJj#SaUz;BBli*vOZ7)f0q3v8XN8Mtz1Z1{Z{0SZ0cM zbY3n!m!Ynzee3AFQpAH(xsRyt=rB%!qpL+4*CX;5E}EbP>0+FhT63*c9<%O|^agO# z*Wl!qrmtF1D~oe>DNNR-dO2w}0xw-c9}h&DfF-?XhQ(L81T4y-FJ=ioZ56bkuB0Vs zHx_72Qn8)oGfM^OMzd7Vmn2Clb^ywjR9JS6n(|?pUPDr>lIxS1TC6?`nMp9q3|r;G z$Sz3@)mCtZ%`z3gWzqcwC2c`HIB}r_p#EhV=~=+|NHA9<76M+-V{N#)*_o{2xAjt+1tP|I<8+y{A0y&imZ5@~p5t9x8_ z?~~%q=LK1wP0>h#$q?-gJZ7IFODnC31g|yGYWX#@rV@;^couyF@$A9% z>^_aWLR+&kcsi9q>CaMna2+c@xp<4cqEgeYL$>q z&`2;$2DltjxCNzQHsFdoT|!3Xv>YyX;@bgkfF*f!r@Yp<5HGLX6COqj;Jol`!V79G z$^;MOG}FwtdNyB?k7HD*EAk$|B$%M?#N4m(L>yK(IFHm-3U9<&u2MKT5L|8h=W1Gg z`{$23=zxQ+8Y>+QA4EI0y+Ezl2w&as;c&jVHxa9fwY6dmPC95zoR_rp16&J}=3x?t zmL*Nao?F#E=Wd;sQ&o;n(6GbN`4?)l3ve`q?F24cWVx#EvxuJY7^I%0HyCvy=~kup zK1~RP;m6XL(V%e*<8>!KiFvr~qV9kOltbmwMbaf`q8?AQh_8$Ynkb&$S21uJE%Jh2 zbSj(R9i0>?p2^!%Jd<~^c~T}^C}`EGt2X$ zL{QUK4jC;VjYdXKE25w3!g)dA)>M|Gq;Z1P@6k7?cF^2znqEq}!4b2Y2G!08r)78R zkf%|@8i(6WU&H5LA>Z-$1483ii8g2pd=_O#Mgl0kRL%KHs5wxB#0!lh)v`63^wOxD z9QybmE89WSDlZ!+Bv84InpeuCxTL{A!|#&k2(BjAdR%3&m@t zJOUTRyII1gs-K58O}1ptKoTD<3pG#16iG@+(bEzw-dE(Dr?I&dF920B{(;i zov%#wq&%4#AjvJPEG#WyJ@yHWqvLDHBd#{qeZfMY>glmIMWopu@Dk|B5xu)LQM(!Dq z(v@PLl#{OW^&M$B*)ttAK9)meNY`|w5bLfTf%KyBg$->)v?FYwxpsq zi?6mMGv4RaZ**m&&Nl2rO=Hkcdo3L#o(LQ7uIR^FKJ(!L9=dOV%^_w;w3a2-vjUN3 zo`pGT@_4zz7NNBT(o;@PQ$kZu}nf&4rJuH}iQZCBRuBa$1U|;5J ztjR|>?;Y}0QlE>MM{{FMN5top7USbPc{pvav8EZU(IR!=WUz0u^s;U=&QkhFa5XEY zw5(eeeQm9=W)oT`AK#D`=>%U~+L^DrbNDnwaQIkosNIH>v@Zx@t{c+-|R;eG&X zA9?Rs#*Ib!d8PTR>`o}Fq_i@N!em`O3F#|BoVd93NwXVUyNXh>yf)9J@KN9+DZD93 zA+5iNHJCu8nb#K_HKn|KA%$d3%WLx#Hp4q<-m!ugumV4YW%vpK&n4QN=AikzPAMz{ zrLq)K*jfrnl1xp2mLchK!hd}pJ+(<;38Z~?e0OJP$hDJ%zU4unof z%M@@$mcmM;%Th@2vJ^6SNeZvmB84y8kisi~wU)wZC|^in70NP6VYDiRoe?K48&XJY zXFJTY?1_&bG=9_8YEMCFX#qYK+X3gmcPh(P* z<)e9%)v6X*ePaI9)kL?GrW=12Z%&autU{#-p6)gCG|;>!^6=G4??-UjKUUcYHV}Et z_#HJL2w1+ydxXQ$$qptsye0gh8P1vF#fnxBJnO1~o9FL|Fj<2HBU^(M?oDY}(dvae zT{7)znlxWT&&Qlr^ATX_-iPvnep=l!;li_NMXN@dRXO0BIiKVcQoRPNSfuCPMF|zz z`FUAgaw>8lh~Doc?8V+z4nBOXUIL}Pz9oxVUvK6ZT(S5qX^ zH(B~2t-FmxdW)q$(kxfV92^E9uExq1B=rHTXbnV~xbXGQe@{|vS~6J`Sy`>xv`LD= zs8y6#nU~Sw?Yx}I)KZ-Mfp6%xtuqe#%Bobtjl6{}^0 zz~ksV6nNOm%ztg-5wsRT3nmugbkFjfj@>K}*8_o)7`?*(SwX>?ws!`{_-S(< zTB8_qm4UskRE85WH5&X7+UZj~Gr7P@*%&+%@8MB+p|MVFv$2eK*;JE^d{fQLMY2^W z@BK_jimO_F%=Ja|zj33p24OSa^W zT0ADZ5<@fyq+(Pdu!!PyMB7gRU99b0ZQ{yIi$!+)BFBZsyx-C&3Lcb`uB|M@!Xxje z)F&ILeUkO%sf-Vm9SbXB3oFWsvUAv4n#wb>*dAjZHW}q|zy2E@4$YX&6i;8(rR5xa zt5WT^(Uj{AV)YESRj;fp zlv`O?oR^iGU6~Dmu?Vv|0>_uY$#7I}#;llnG)XJ-Da$FXDq-L6QCFWEXs8~gx%dcd z0ewAJtVcCc@#ib=R(wo7PW0jiD>PhfxH96GsL1tjJEElA0XiU#Mdbt?=?Bc0nuQ7WF-=X~OtaKxwq~iA<$Vk zT+jd-O_$W{l7cF-plK|mI7dyF7_zkKEp-vsfZ}rVG6{}mEi?umlW1$G5p$KAvz9X8 zq<)C&uH^G4nIDmAnJ1(&@il789)d=DlqUvP}$bX|gcsI^aHY@1+rdEWL;Vv+iG@oaF4B=3ONlW-r24DOsnHH z3$l>fAhJYQxq=^TZg~g%xLFrJxQ@Fe@x%F!blhFi4L#jJ%uhPlT0^k%G>b1SFV3!1 zH&7*yGn>)2{B=;C!?PF{dYktLDeQ=U3(vE5s^6It;%(yQ;{@%i!h5x{8(-6+a05+S zto#v~aMOz_!sp?z#Z#zyS2RW);XUfu0C>fPxvix?t?dHa+KjeU$5yI+q54j%Yms72 zg!Y4BOYlhZdRHTQXH;6>qcy80nl7eDTJ3D0Y2?^YqT9KaHKhO5YNzN|_+|rJ?R-$k zjUBo$sJ^i=sHQH&0@q#X!p7j0_1M@%;@`9N=)yauQBi%o=*^hYN=&^Vn~m}QvV*3X z_~=CX_liJ8#}QPBzQY=Wz_n`;1VX8RNaN9V`D zDOt-=_(}X*Xu0Z!-1F@$(_`Fs2+XQ6uFj;7%Q5>H_$>QRtxBZ_H zf|sSGvhH0L*z5SKs2`{A+bjTGhQAb_1O1BTkq1Le`Z91eAZN9jRcj+wRxOWrv0OErsK77** z`RJlFK@+PBXfmZ)wOcUqF#0&|5Got_sSI;{9WEmqH= zWFEjC1gl!N*jmM)Vj9z|RUjLsBv(YM^!i`IXS92vJmED)XQ@(syrnoleD|EZ()^@2 zI$xFI{G~WQKeeubQk>6=Y8*+PD8q-BA;b9rj_`#`aDE(4FU7t7hKkQ1#l6VOkmFoz z#J#}r$#CL(7;@YTHuAp2;u>orP;S<%@Uv#PM7TWLGF({FIlH_-*xMvOm`A2{E5rF4 zY@FGS6XD!(zHB5?#Klj9{J&~=oTOm8DC1ooy+G%Q+>r%Ea?0!`de91MNebMRjT8$T zDK;uP_6}?$((K9T=juqPKC4>P(fI|mfIO;ExF!BAEu>%I?@4Db-l>IDhDNSx832NydVDatoQJ5?6I{pl%kkvtjPTyUvPZ6fld+h6VKhR9mX;>frn` z+E`dPaiCwcYb>5AEgpAU77nG8j1Y{-Ln9r9lUN=HO(O1e2@59%VcEhl!NS5x5wLv3 zG^f?HB2ocMWu@URdPPDbb zU0664aaI`gh^)(J}$vde$;35mhCN89jb_WQ%%ofhW+`=IZAuJriB3n50^=yRU@O5Vv z&fVyV6yTQiK?cIIJ|GK+R(tHRa7dc!vv3k>g;7W3WSi->Eu3_MwQb=r%~Hdzq1YPM z42v{<(JB)-g@qxkn3ttEVa2qS;)E5`PKpy&%&StIuwqEML>a=0k>P|D^QHtRte7k* zPFOK-NpUZ7t3!?xR*W1ctQa{?STS;(uwvvmVZ~&lT-l0I!)7Z+4O?0b7F+Xx!TEl)F4u4D)+hL+VVnipDWlqFKD_*tP`pl@wqNsm79#$=H`xmF@)8 zyh=l5C#z-W*DSlVsuEwuFxmNPDK;X_`1pDso%3m0@534>t@m}TiQl~5$2yH^m5+s_ zvk7A@&L$KuHj&LLt?j*C6F(O4?&1AZi~%=I=en7F|L%XhdKlWOw|20$pLTJ?2<>R? zV(nMj4cc?sP1+x|SG9dzhP#|IOmewu_}t}7ml-Y_T=u%0blLB6*yVuB$jE~(ry>uz z439kPa?RzO%ResFu036Qxejsd?K;TyBi8}0eO&vwj&z;qI>mK~>kQX{Zp&S_xvp?s z?YhRbPw-yXpCkLYEzyr~o9s5#?Mt^sZtL7Oxb1b@@Ak9XDYw7euDJDf@8dqo{S)`k z-RHU=ai8zr$76x}V2>}|M|kXZAMJ6_{i6F7_Z}WM-LFS1@VMadrN=stO&(i4ws}nT z-0soGbED_Co<}@;dX4a!>h*=!DX-gJOT5>4@A2O2yaWeYg1T3Et_u!f&_l-@bc% zF9lrp{XX=D?}pI6ejCF3`Rxr~={LiFwcmlTHGa#(w)rja-|qLd|7QPj0bBe}hivuV z8FIjXYQRDNg#o<+_XT|vI6SaV;B5Vvz?G4^f_CbE4muUoJNQiGnBXjyx0EBWy+3>aauMC&PaUzZBkA-(NpdKQwZZVXk4J;VZ*F!*_=7 z4aW?}4L=)xGW-^K%`hlpaKy(ELnD5U7#^`Q;**H+5u+paMNEj895E&0^N6Vt>m#N| z%!-&3aXeyPMBm7z5#L3uj#wM9A!2jH)`%SuJ0tc)?2kAU@qNUP5ho+gMEn-R>n%IX$90s&xr0d#AFhSEJ#LMl>4P zXhEa%jV?60)aY`fYHbf~Pi-%4Z*5;l+Frrn|4sokahM!QeDU;C~02xRmZ?O90cpW5@< z3)+j?OWMoYE0Ei3+UweXw70a?F1=m)y7Y4y;4;um5mxqR+29g;rFWsb{Smw7JpA@_?R_nTd|xNLLT?y}Qm zx63!^1^dwh4!RsdPdI@daTfA_&C~;WL;6Yf2cRDe;XU9p*J-ZP(FMjc#8=wmbTc?Vq=S~Ew;7T-eO0Ki!Cm-xZ2`Yi`y-Fxb<}V z$gPiCU$=p7gWLwY4RIUlHq33f+X%OjZe!ghpx=Flo;S_y3%7Z!|1EY~>9&UT!i{d5 z-L|@IbKBvz8$EI#`s4w(LvDxNj<|jA_Ji9|x8vxeC(%oPaXaUB9)0yPdh1oUTW&qv zsn7OxAL2fo_1w|!W8BBPPjsJ*K0MuhhWjk{+3sJs&q05lhyJ|4{Y&?S?u*^Oa$n}Y z(tWl2*Y4}xH@a_f-{QX2eVhAs_nq#$+;_WwaT`G2`z za=(oJf6e_SbU;s!ULL(Y`grv77~nC`W3a~%kD(sJJVtno^cdywvBzkSPd&zXjPn@p zF~MV^$0U!*9#cF%^O))}&0~hg7ansx=6fuF_E_k#0vco^bjW6=MYenF@Yw0G+v6LL z{T|%ZJV$$u@f_zl*>kGrG|$gHr+d!uoas5sbGGLfo^w3sdd~Bl@43M9 zOV34~OFX~wT;{pTbB*U(&-I=gpuaYGZt>jdx!ZG(=Qo~vq0J6MpMCH7gXfQ)$2^aF zp78wH^Q7k~&tE)$^*rnOo9FMIe|TQ>yzKe6=XK8;p8t5>hVJX{HNb0-*ATCvUcownNk=HV>6<%w+)_QI5+T^v}Yq!@oUi-Wb zd4213*y{(cAH7aMgZ}Du#_O!t?_TG;{_y(K>%7+muZv!Pd0q0l;&s*QZ?7BBusytc zdiV0~>pj4GkoOSp5#A%cKk@$5dxG~A@2TF?y=QpO^q%EC&wHWw67Qwn%ew zy~g`%@3qj(>%F&m?_~OUpZ9+6gWlhIANKyv`zSQ^PteuBLR+7MzCQ1L(fhLZHSZft zbAP1kqZ_CjtQ(>mrW>XEME9v~jBbK%qHcqJl%ZV0^LI0BHa?* zQr${u`Zc<>x^=qsx(&MRx*fWmx?Q^6x;?sYbbEFCbo+G&bO&{Zbcc0EFe?0@JF5Fp zcU<=qMu(HSQ@UStr**&T&gjnSe$)Mq@!}8NpStt9OS-GN8@iji+qzypeSP}*4D=c1 zGuCIk&jg>DKC>`-%<-A)bJXXA&pDqze9rq^@VV&o7e zdMxPzNJAHTg?#9@&-}jL3cfLRP{^)zc z_ZQ#OzGpEaUH84=d)v2=Ixa7^HYz)69#1Lp)T z2wWMsI&e+k*MaK-*9UG0+#0woaC_j%z*~VsgN6kS4;m3PIcRRsrl8G1TZ6U*?F`x# zv^!{D(EgwUL5G6A4LTC^UC<9fM}vM0Iv(^>(1{=#Pk#$KA9OM3ub@joSA%W@^$PAC z+$XqiaKGUG!2^N^1`i4z96U65Sn%-R5y7K^KMDRccuerv;H4OU*9LD4-Wt3ocyI9j z;Df>627ecPF8F-#U%{7yuVQTeJNQQMKfyPHZv}r8(l4Zc$iR?6A%jDPg^Uat74mV& zCn2Ll#)M1@Ssn6q$hwgAAv@VfzCYw($af*%ha3(0G32L^pF>WDoC-M|awg=rkaHn_ zg!~zDKIB5kUm=%5E{9wVxfXIg=r5sXLeGZ&9(peHkI+9uFNIzWy%zd+==IPWp|@aL^bG42);sK@us&h^!bXJ6 z4x1A;FKm9;a%OX^4O<_!C2VWh_OKmcyTiT-+Z(no>_FI|u)|^Bg?%6PL)g)es`-cw<9~3?~d}#Ra@R8vkhmQ-N7(O|CTKMPT zGsEYE&kdg!K0o}+@P*-v!WV}x3I8g5Y5216<>4#BSB9?&UmdY@t)IhE9k735)1*_?7Uh;kUwXhga)+=zHpW>3i!x z()ZDmr8HDOO8<#|wEk25IQ=C33|LOH^X+!h(l6Do(67|5(y!5f ztzWBOr(dt%px>n5qTi<9so$mFt>2^nM!#3TPrqM(Kz~qwNdK+=u>Oetd;Jgkqxv89 z$MrwyPw0QvpVa@NKdnEb|4sk9{tx}1`t$k=`iuHY`pf#O`fK{X_1E<`^f&d@h8~8V zhTevc41ElJ4gC!L4Fe1V4TB7W4MPmW4I>So7(O+OF^n~gH%v54GE6m0Gkk8C0ZVV5 zVZLF3;Y(P2i(&IEH7qx*FswAJGORYNF??-UYglJkZ`feiXxL=fY}jJhYS?DjZrEYi zW!P=lW7rED@sQ!L$xi$Umf|_XRl_yIEkkt#S&KtpEe?mx_z5h<@!V4U43^^O%u<{U zTX9~*;)o>?Uqvj1MY)REi|d)ixW!~Meghkm?8fhy<#-&{r?4LXG}({WBW^GovO1Ei z$i9*NBKtF2a%kl6$dSyVT*++8pCeC2!t#y$EwZVRj=%6P%zdD1Z_Vx7v`GmEytVg@czL?u}%)j^k{MU=M)yXPPZgSd>>D=^7K+KC`^E zpgg-+8;_WZ_GyJV<)sy+`IXvsg%wrVMcUStRk?+w+6e!^_U&TYM<=DX&k6R=Eh=)= zHU(z(B5Q78k;X4y16&p5Iqi!}@`?*9+Emr;QK4#5a?)A-@FZNFDEff~QKL;@|fm%a{Fg+;mT%kzrz z;IPxalpR@7Q5%U!);!Y3=~7;>gKn~e#vvFj+Ei2hKv#z@ot!ky+C5Z#`*yQx^lQ57 z*sl-!^<}>-T{-qZPGoz$Th7`gpS4S|sa-m&?NVWGm(Druvnz{=^K;r4mgE#w<>pZk zj#mC1HO>yB9v{*6%Z`tGoGf2)Uv-yx`O5Ks0eN{2!#(fu4+4%CT{*Jj$BfDkJT-4C zKixHML2+Jrc}Xcl+B31_uQ_Fgn*k{=-}ldrs_&GOb|a;?lCw*)i@H@nAXRzFF2Q*} z@WaHWIxDS5TAw9Nnjds|Zsy{YRF5H}m7nb{ts=XKp}f>Hb)jR(bMsv?E5<)u5R#_! zeeiCZQ*b4xyb{ajdBrN;CYMtiDbrre4DT`Tw&VLxEB)-o+c_KJp)z3YrHcnjW0SfR zKjd(#<<?C*Dz>Y-}$RirLa7V}aq=y7hWZ z!%Z#E&+Pa|ulENleeK3d#C9lPSZ6JLrvGC14k^q$k4CP0ix%=kM2e*B>V#37D zRoR?$=g01!-Q%^^>srhhS9R52xm6d+I&06~ zs%Lbz2!3wtfYzK%_YefQ8FH{;O& zeT$YmT2EAN)}?D|R|^;uN>sUj?3LA%+?MY-x^~|07w0Vwo}o0++eIcY!dNO*2ZVxE z9U8Tr^}YVS@ZEw#X_+q$yQy5xu?r>6r>Wpne)!O*kx8>hjd|_o zhd$Z($hNi0e!HnG&r{8mq{RPh)enAq&mX&T08E~E6+dcy;ganz^*#y78US` ziQl9_o&MAO)apYWmt6S#jh)Kd_8}~KH?M0Mj+Ib9iQ zAJXFD3ix>OiP?k(0aLdOzVe?RA2mF(BmL!NN`rE{s$S9|B#=@0>f_hP9Ql3O`;R`? zzTk~bD`S+2_8}}UQ|IYl?Y}bc@}q}(Ov&!6oXE_7K$&7UzT6yDfFAyR_9x>inyo#Q zy<(AbWR;)Nv$I`w28lpf#;X0vkcUf7ObUJNn8RleKlS{VCzbTB_Tnt5P{)X_A-Az#=@ZCQCmN42v?|MyVNwl}sFT}%J(h8T-I1-!46z z{!eVO;n|C)6Vtv?x-GSn)Y787U{?D#T6G#wnEOe!KH%frhJmZzSGw1Yvd)!(qQc_B zO4Z)^c8ybD)BTNSeBb$@y@r!M9h4950WTKfiV8b0dNtF^pZvH%;@Nkvjx0-f|M6)` zqm_2DpsJ)(Nf$m}82)tHqi2@~c3wX!=!use|4XU17b!MO3Uk%QN*s0bSd(89lzvq= zBZlNPnWXgHYA2;Rw2;GU|9hu(Z??~NpZlrnlg}03n6pQDw{EW1KC*yN(-b-R@M8tN zyH9Ao_sEAgT>I^quV{AINh!oiRDZyi0pGlP)vN!hRhy?wx_@>nC4G;bNHO>9jP0Y& zj03YaSDpO2ok#S!uprOu*^W;r$SU7*+gFRe(p32Ai_Sl@sb!I? z^3X{;k|T-v*pvg8*#v7-62t18uvuhZv#S%1^}Sei@g z&9^_^@zfJa|8sU?rQKA_qZkMLP9D6m?)1!A*R<2tO@8{uOhq|wCswRt;smh^RJ)dqg*%{g6u`D4)5#g9IB^L=IKDrM_MJ83P> z>B?%~A$#uDhkjb@l>K-4mR^5M8m8Q|7h_?ux(nAk?_lRm$?mh?UYNcC)q6 z8zvRcoUZ7v*GZ<$@wDdtcTQ=!I#bnrT-yBfsx9Z;rbd4fJ9(_4?!hZ({<-^7#NJs& zmomKGRhjQ!SW<*txwrg|E_|b~+lB9&^tp9pPyg*ogdH^yxVz8`8BBJcZ}7F}PyT66 zy29e)v!A@YP`Px|ev-S;iQk;wn_a$`diL_Uud}yJ%6#D6?j04wJEnL zSxBP^Pc2X1a{Bs}pOhEjv{T0<&SpajHqa+h=oLD~i6M^X8bvL9?D&;=j=g`_7?7>J z-qZ1}G20Lk^`(DS#DAah>O1Var=wopT=jIT@ayj>?f;b`u*;gqr=yKB+Pu_c^YG`K z6VH6M^Uw5Y${YVm2~f&>NhZGO&E(?8bQAuGu39&Je{zPBWk&&m|1cnha(a8>td*Aw zi~i{FNaFdTjAkR1Ts!dAtTBh3-EOTQx>R)4m2`p^^MrAx0C1P@Zm z>&9ubm)2}em>fAp>Y`KU8&BTq)@S(#4?i&aqp{jEsY=oqJ6SxHTb+WY?F4c~MKO&Hqe)Jrk5G=<90&+0^5yA)$yZ`w<3^WDXT58XaF z#O>vb1|7T1X{8LYA8Sz;v9{T&&(OFfuN;g2*nh>hhkrJ_<){f+;HYtL*)l7}m=zSA zVvJ5oNJ@>1Nx=(^QBhI!lS@CH=_i|h%IK$%enRLcn0{J@(k}xnq9^u44@OPzhMEQr z%_qBSsts_bb;Mt|xxm2aC}V0;YE))oLY%QxUO_C}1uOGX^18)!eMQaQld?Ng_7{=e z0oe-{n(0k5rbMMDr>DlpGjd}nPb&Sirk^DGiKQR<=cF_tT)CW-LJ3!fF+MRVGcz?K z&5WyxGM3X1UZ;(U$}>i%$UySgth6QA@5Za;~(LwDgS3B$aAw_Q_>! zlXGQcrX-|B@rH=5qpTfLE`4fhT3TF2vPvQ2F_STC`DsKoEKzH?OUfUeWK52aN=i;k zOl5V9r*cc_hc#LbJ+Ve>WqK+$fiRI~sT9Rqvl*3Cs+P1zE-A*C5R(D{iDLz&o3Pw5 zW`!`9shIalm@|yYv8fq}QRxgZ<2NIU@qj&5nuwPOeVEWOv2)aPTVn1K=(!njDVZtJ z=}`l2J6tmaJiSg^!|l|8XST82?1%fi~hTyg;=m^sV(KO?S!66l{ZP)BsVhEt>< zjPFWxMaLM^Q_|AX(-NenVra}2Z9{mv(GMfjx@}|*z9*xOGor>(@o6z?|6pCqTq%Zz z$wNM&W)(9_hD7>fMEZYK(%+Zy#~9P1l49Z#6OtH96HRCsR;Kp4SjN>w`Ueu~h{RNM z0fv?JPsR||P}Ue8B;sCIiR&(5&}XDYWhA91s|uT`2G$%5om4rw3w~MJ2|hMa5>ANo6w08kPy`U9>|_8FiE~IVmwQDK1v+-?k)?4J@pII#@Bl zncAkk+BVB2tP$xkiK%e@H%m7ZO%f7)W^zVyW?H5-5^Ex4N!upnkH}1qPE1SARHeaOlT50B z^*AFFu}emh5Kjs}F~O=PEPq`{_R2^y;*(;Mq7xIXkg$efKeh1mpoAnQ&X^e$lbD$t zFKGqVG)$(vwtGQ7cnyRhHFVD&z?& zq(Cj?lvGFz%+JL1bg17LD?zfVF_Ul>$C$~i6vhA+G}o9_kyV=kGk!3cX8d3+#GWMD ze2KP>Ds5*Z+M?5piBSn@X^Bay8Bi+&7=9+Ktn@o6^BF3$P%ZPERAx+)F*-UqBPu4r zx_4UfgH`bkB$2@}MlsqL-db-((Hbg$j@gd4dXI`T#9)RW2k3^U zENQ7R>O@YRqE}L8#yM*n=0QTk>`N3pUP43j;^>6b7_Lc~(6TPVYQpNIj=RBDgjux3 z1PLRiC`s|rDbewwGAt)!2W!uF2oY=JLV7BvAC|xx|KFISP+i#^1$CVvQ5GA8^^e4; z)c81cM%t25#_Cv1RIq7@S@2jKqpXBd8FT+tLIa7=RD2!QQKS5L*Ke3v^*#hmTk$== z{`Bz$1I5LrWTeJNtFpsXFl+NTswe9UOnoys4xu>4 zC{@OoG%#rPL#bSaSu6v^nhOj>IWbtp$w*6#HnuInLJ&?q&ns_(wXoE}4)}CKTkOrN zc-VT-Q^b}@U<<7W<;!>yjj7QYX=y2$$+VnQHrl~>^1M~MO^+lzVLwdTCEf|i^Torsg@)wyU6Wn!9(2@4CFJE1k}n1D0+Vn4O9 z?i;y447%y@DG6BVVVa?WGIgXMCW&TbcV1RAVhmdY(I|UX-m}&ha;I+ldCzeDF!TGg za?dBcMx7mWUZ-ejRQcb(0`2VJs&fyESrS+A;KbriAGR4cLz%t0&brmUOp8|_;V-JX z_D$CBckT3P=am^hc~0NjKO;%0+*T*nnv2!Bh1pt^WqKhpr!za_m#tVwH45weTJ!R` z=U+V7S2M&ZQc1m6>?lp$K~6vLa`^9mIxjsmTEFzK=~1ne7Y;MR|E;D_cOtW@DhrD$ z{LuESKKpl!7}9dezJ4R7glq~py5&F0i)x{F_1d;r+E+`!Hpdi?!zZ3SH0tB1-HQTm z&ObR)G2R2#LcAjH?C|LE=bYYnxYLl#L0_D1_4LXrCHfvvVvmO$)_}JEmL@|+AM1a# zVel^-)8{<3T#2~{wB2x2vbwP`b3@{ z+FS2@aPhVM)8FeIP&)QapM&$2LHB?b(v_E8+@UHTh-Z&V$yn9souh9>#yNY&kdYw#r>;3Hk4)1%veD2KyjUH4+-UC{aUhM7zZO)Vli(h|# z9X`T3rrYy*&-G9~xd*g)9hqiq)ntOw^NLIH{Y=#Jw`uPVbLw)a zV)nJrQVV_}b~2U*r!y_)P4w zS<3c*0Wa(L3x5gzA>iAy?VCF54)=U$?o4IJJz!S9O~>#)nbqrs@0VO{GU~(60zT;J ziYeZfKg-tI2biGx8DDf5MYTTE+a7^Dh}HLA+4)Q z*iUYDx0WGkm?_Z@3$&@qYZ-!{id>Gc9ZfDK;v{66yIq$MCM6mZGZT_iW61X)Bsm*M z@Kcpt4wUhE9oSE~8cfSBM+w;+V|8B~sYF;OajZ8btYL62$Vg93Fy_Nnk}KAba!lqq zG=G{o6PlV4l^h+L5^Jn12k~t7%2;t9<(R^AJb&JtBPcyO4(sn&{%q+M!*&2TWo&7t z#dB(1=U@M%6wrsVm>{#C%rOjpg zbwLGOAXR76feYq-_e$H3TbzKqHZ(MBQT>;H&Y_a7_*lPb!$b$$9fHokq9+_`_F~miK_RRJC$} z_K_;L!?%|oe&auDzMHpa^nLr3m+k>A7GB7B2HNzEpDzAmf#%o09NRzN>%KT2rD1=k z|APrXIlujRz+vZ4H$z|dKc?AoDWlVFW#qqGG`%g8r4Ex!;W|z0-F))n6DUAV>EAx`@r7QYOV9T(W)YeI{S+RxLt=TDX99bOoh(}wfJ>p3T8N6pw zu=O7wm7ZxVD$UM~&92Oj$0xNib353iimeMZa#ImKBO^*QX2fU2rl%yNm=Tqh$91(` zJBx+4780JARAXvNa#Vae_J~acm6kJl@Gg4GFjFL`jN{ewq3S)rsq&Dpf#X>J&Pa)Z z-#}ZugjL!F%9757!!P^7Z0#)9$!Ow?(CsM+30MHfH!Mn8!<&%oZd>if_Df#pw2YRK zBwI;umb3=FgmQSWmtLVYzu-cxIJFN6%%F5%t%g%PDoFw4Hq5Z z2E2JC1(h8wkZOrp`#6D9WTdginAFs`kVKmu^f;ijR-MjvfZt_^z}IV7fsvC}i1(9wJN! zIi^JtCUPUmOvp@)O-{raq*X<^B`pnT1=bYSji3;c8yv|}8A+xwJ~kmUE;Y4gVf=?V}9J)|5o$yd~osWbtIvtx= z$*D<+ah5GFaDcNaTFWMSmhheD_yT2o*bIw}fuB?g*{EzJFlz=uptV@Cjg$)a5e13O3LWs}())4a7!-fcXIf!5j$zrn4!rX$hI6(+R$ce%OXx zC({$FA=}Gm2@+c7U(WpZfc9$%Z5SM@65$N5Zmp4oQ7%TGl-;6QJEiOyM$B6hlcUna zroEa!kn*zny-H8Dp|#-m%fn3FGAPZMi7O^HPTgW;+p)~Wi2bl8WqYs^iA{)c!t4Ew zQ6^l0!EsR;F{vq0Fx*(X^Iqyi@E3GyFU^zTqhn)JlasN{S;Tm33%*!}PfSY5%!CzY zOsy4vl?)$~nwXHDnF;t>@z0mxqobn|(^Jv@#74G1Z;PZy#+a)djfIB9*n}kbAQ%I2 zpmu0jxZV(v-2vxD<-=Btjbn|>u~^uu`z0(vv9U2p@d>a;*to^PEoS@&WN_HVX^Alz zF-Cbw!2-Ph1T&3>xXk3##H8c|b#W#qyF#AhK0vK=#8+*dlu71nfidZDvV@Q9|Hs~Y zfLB#)ZNPi>NdQ5&sMtXxqJW@=Vi!pzgc_32Y{w7+L?DStsJ5eG?+vk6u88d_Htb#O zz4xvt_Fn(@U2C_q&p9dReZK#Hp5Ny_bCW~P`>wTSX3fl+nKjZ0T$v32`gi&3bxy}0 z@63W?@ufY+3%2B=I@!5E-EDss8*SW<1XrcGf#r{WC-bV$; z;W69!f;c}3@vqK1HP_5{~5PY75{eAFx z68d++=SleA2A?NM{*8WK7Ulgq_&kaCtKjn_-ZjDJNxWYMpC|EtA)il3siD=u=SjSu z2cIYLeinS5#QSORd6?JvxU+>jNb%z8SyfFl@=EKt1^>gxyh+GqIo>7wyc6@%Z;$~ZebCBCUfxP$lFL5~DLS4^UwVAP;^#K`3 z-7;K8DPITPz;2Mzj&(8Xbumt?%l1Qu=C)PLarwo0Q2)4CcGlodwlRtIRm_p=TGr4_ zA*SgJ%tO0cL+4dDRnKUoy~^@S@V}Bg{aOx`T8vTI%Ci5OY|5;JW&UQGdMkGPzIG=o zVJ!W1RPw*T{bZ$l($zAFM{q7C@mdxhMqRa;ZO&ZZI43H5W6Sg%{uTPHPf*L|@RZ9seyEGZ+@);(3IyVckzCbu;$% z5+{06zX7Rl>}r+PF@8|mRD1{?9w-@KT4Wt(va@nvf<3h%bnT9BJ&tb;MRi!tUHD4o zKc0#BcA|3!%jzzFe1BI9?`uW?H$_A{F%o~X3G4T+uEzPKr&ZYy#Iy>rJvjv_af|Eb z);3~)_vnt<76qzPf%fQy@1u?&(C+9&tNG=Mnr81?l`|05n#yEE{udkci+68_FAl&L zyRF(CntUDkVj=FR*3D@sX{?{q;D5DIznYK5QepwVy5*|fW0v!K!uHLm+k&n zU2%WujjtZIj(ip3{vG*hIj*fvtZklwqhkIyo0arDbgIO4_@>I+VOuC#RD&i~zra&A zgNZKhi*JsD`&wU2imX z{({e%hrL{MI`Iyyfe$HI$4I~KZaT!RG5805p4|A{Ptf?<(yg+SyB>Z`)AimRNu%H~ z(Lt*=Lru)`#hl&XYqT92y47hd#SHf>U$vI{Rhz{AeH6s*yNP8Lh}ehwVmB;^H~E5p zM*FVg3f|TAn}ba!+IK*bg*~SlgUj`$#4nKwXrtMwvq$HnL9Ym!`w4x?o@1ep!F9x* zt2WCrgB;_W;;A&del7;YWSzSFe?X@W$;}VHrfGgQP97!h_w=3vz0daa#zvCgQNCkE zMqA+E)Q+-WW{!3&w|O zFh+(jMq(Ks$YH6|Trmq6l^9nP;|IZjCWZBtRZTNT*UT==pM~vD52h@ClA>U?m4k17 ziH3y#dwn*FH-Q3eYuMczYXsVSpkY2?%#hy3$q7l79w{Q% zdWy6|Gm!rD<&!MZ8jZG_tvDvMy90XHZlSO%zwWE(5gQ*!~e3{YbE zEdX`0K*iD4aJ;;B+JcH^%$V}$A_QDDWmZj|EO09FhZV>35n3$FkC%?du9(}a;@J8@ zrP$dfr>m7XMZ46bd7yX(6mgi*uIysY1A}p{6`s;M9H>V_o>?=scs`O3;q*XRJ+d*? zaJq}d0Hl_JmCdC@E*i~Ncv~8f*DXM?2on-c3C+3N8|P+U^b$*PhD4+VJVaHja28zfjPvHc4%G;@7b2gMw2gkV$zd?*k%)SZqe*+fr2C0U z>#Livm&)O6xVt2DS6I2UVk|P$h8vAPoS_`cj%H@-Lf7F&H9iD<<7LYoF;v5oE zc$gt=-PvU*DBylVZBL-KHU{p#9L+G_q-l-QBq~=9EF3$kI9@!7IzwCh&+Gp=_}a-> zEr^*ZoY(&Y_0rh(h-2`zy?3;%t};bgC@i2DSXh~nsP~2>->S1^2c7S~^5`vnCS#X3gzd#D}I}4{TqRiG%4wmIr zwM{h`!jK>i5kYT2)L9v4DVG6o6{0)%zbEcQanC-MwFL*RxqUDj5SXF4g#e0RFpM_B z)sJyBE0LgvRwCgSctZkXkbd6W2citt~2;R5~gj`!f_ zOYr6GPFP|YV^aW=&%zny0Tnhj7xQVFLMGPp6iS*iU!q|5-wUwM0k#k4NfadJbd;f( zt9)@8f>AToL*ZNm-b1E>GKB-c?HfTWZ#n1n;@yoChwB(%sT0ZMJaYU6P|5(?j)kg6 z>Z7&fINCH84!IwSmE~Dh4jea~3yllsA|__oGlOw_*UA7DAUDMcwcQw(q#s28zhsQ^M`4W1Q;czr*D{a<5R-^h zkC3*}GiJrvwO7%h<~i83$twOR+=hAc|7w!)(qk~mkwtE2InHYz_aD#E18%>tes&=q z#jVBKv;z4e{Q)Fp59LYqxLdymycfy@524=&6lXwdICQmxv7KWjo>H9GiSs*fbld1b z!NJ0ICKm6RMH<0H6gux<)XUQfRPa84dX1BP3u7krHO@nVHNK8(yY`~JPqfh<+P*-0 zSkM^BZyVNTzGR6HfHfCb2!R+g0a%X+R%K1&?6zSAT3+}eupaW{ngOie1WRkMqH0== zCJJn|E-mhdeZB$wo|WkGDT;&2Eo;|RJ&esJVOXEW`CYN4R@;Ux_1lT{yIQeFd+}MhrYwK_@KT&1$RAT!9FOM(`;eHX zZzxvZ<7<#iuH@zkH%!kGd~EiV*XVIl@9=V48NfIw&!47Qi4B$J#&1A#Eogdis>hIr zac&bX&KaRkh2%x{S!Y*Gukj{HWd-9AwZKHTbW900S;mepFDxz{osW!^1CZefI(- z)}Anf-Df958yM&H{{gwbGYai@SN3Or0{b$s58+g0pvV64KW7iC`V;4`nC<<7V(>&f zQICcdTLKRI8WuFPaXOsHb_{b5!$Ca1*4=~he#J*Cx1c09tk&MD)-`{EsrO_QOQcev zSU~3#dQ9wt`HhWL3((r~tDCVIJAtpaH~8%gq44oIddZkxetCKRyYF$7>kx z*%;OyRr^`ifo#e~I>Q@lnh;~>Dg9A66C~>fPaV&7Fy1?p%S^0*y8!Ee z129~0`C-}LVhyw#;&*A_Cf3#s8t6m$k#b;7BbM#1i@o^)rwge8lo!Z%4EQ#Z<&Kcu z=8<8fD{F4d$Laa$-ntFJzVW5**?gJmfa1{w^*C7aPACgIj*$rdgd35 zk8{&LFRbw>Hu3*AXnfat(0HQ*Eo&6L88qH7(D>jp*(TB0%kaiW4O%)+;AtJ_L802F zhAL#ahh7pA#$YkR?En+<%S-deRI0}A^agLiV9zS`Y(;pYn6}BW!cf6pv&1%6P=(%y zi4I#rjoqrS3WplzVhC=W1`)q(&i}diVHF{JnqD=v2gKiTiYxy4B7T!+{nDbb)5hS= zW~79Ink*{7-E@aVrRY5`^YPC6zh>&k~t;USMaLE5eu7&8?qVliRA`Ei{{3 z|Dg(Aw@=?}7Hka_Rzro6VHG|V6%G%nFreKkPfZtAiVe4e1cXQT(QVL{I3@ zX{z+#EWa95hciMtFh^wwfAwD>IB!a2tQ z;dbXw1^hvSONwB*m8)~VjrRcT-Prx#2Fooo0YJui6s5Pum#DQj>;#JvE(YU@@FEdD z1_F0>E$8WsU)HS`Ib4awBr@dj`|S#?e=!7Kvu0UVF=q{TFuKjqt@%jAep#6Zv+pH| zjg<4bSbr3F6H>$zY%5XSZu$d?Kz}~YC!h-KETNYOdq{>?MTSvwTTqtjAwdd?y{%kE zA!excE*u8TE$ZAT#G_Qnc}+kH7Btti1877EfC@dJRRZ+7TBIOikpe6>OZ;=L$Umy0 z{7QsbK)_iPROB1_<u`wL;O()1nF1I@m|?;X1)+F$17>t7X7mq4qcKd=udgV>*ROED?n*)R(HVD( ze7~SLK8F1n=N8zS8WrHkaR7J{02>ScCu+0?T(zB=D!_>Rf(Zk3dEkzphl<@=b@yrf z@)qSF{sF{@P1t5Nc#ZQ}%j|A{bg37T`k(B9y-f-BJVa~ImL1VGA_j%Q`c;e|y)j}* z%%-*Vc(aJZ|EVaSS3s0YAqtnBF>w*nu{(aj-c6}IdD2u0%;KH#V#O|?Fd0sBd()Nf zrgNP&3LDkvJfW>>KZ>jiF)X_<`m{P2B{rG>>B}22#NNjtHapl!R3#7)vgzh^0A_ zavyP&TZHG|j&II6l01OG$B{NJ~p-z|ujP2*A2t{#>vw@=Rkw&Pr zXq(pqZ37$@k~8(23&uv7G1y={L!YijT1A8j9zqX6*i;dAPa{R9`s#ZKVBQ2w$TSoO z9w{A6T4lO70%IE-v5C|d#W4;=%Yc?ft-qRp^(e5!&*;#wwIaxtL}<9hCNvH|adp7! z95Ummq;1+Y<9MJMd>sz8tP*x*?&XJP9NQ~%<{3wb9y5+9?WW)IP|%-(qcjKu+F9aB zqB881*?y|N*LzNAH~Wo8g8iez-HMYwCUr)G8z)zYCt?q%rm`L}VI(O@=gzRyaQ{)l zGOoKno5Eyp_uf1h^Jz2<)8fJ+@iyWWiJ~JctAQ1S<-p$eVp%*?BpfIbmg5ElgM9yI zB2GC5B7O!D6R*Od+8xjYcc+j?vEUTPaGu~!Vs{mpM3#EuoRQ8yR-`|74XC#tD`v-Z+z;5;b%`fhgWkrJsbOhKc?sz&u|cX<2y~ZS>rV z2A=n5yD3ssUrg0``XDTF8&!`qx~vqn+)qMk=_g5Q-FYI^IxL}GSJh(l-Z*TVvPjhi zS%JhgDV2*Scx17HW1l%_H9?i=!5MvjKsvn>rB1Sq8 znVI+DHeYWA+4(Gh`~eWoRLv{+I*x|4BnhIsi1;T3Jbl03i=jdy^$9@L2scsQ-gP5q4U^R9#8$!$HM z#zV|{Ozk)SteTieMSNC8lu1W&9qDv4+Bm%F(D=3s`sddW^tN*?YZ`21u3yc`I?1h} zybaeVoiv#mO9w8aIi^9q38b6O4C(MPao_Zc;kcn3Aca##>2dc zk>|s-@cE`dL}g#JhRWgkx++{6aRUcYTTM!pRh$bfKeg?)TE7GO&l4Buyv~+(#yZ0F zOOYaVRudINVyMxH4P-coGI&$WcFkl~c7#X+E(FE_Hu?$9>1N3mkxXbL;xBgE;Y+m3 z7g#V%rz;-@M{I^G3@2rV9^KF*n~EhU#-p$g;7>=fIE%&kEG}l@@b_r&u#C45nz+-? zSzWO2lpI2Qk-DN=cZ1+xUF3!k%LVkfP&|BKyW`=x;duCcj6tun7D0)&tadSr2{&x~ zni|}|aXRjcc?}!kS$?83Q?G^-)BD2+&s_#{EQgoN#w5?wxf?YSn`U)nae%X(qpx8@ zFR$U2O(E{+H;tWgFiueEHI=aiBSzkY&uo}bAD!A@uz_`gpFf^ozZ zmbE=c(B6;JT^;K}>vIil2KR4s5k6Pp-xvh=qX2&}x@Z=LSJ|B1jx;y1r8%Dn7t#wf z*33q30r4zyX-zL3<9JJrd!DzV1oIi$E_1K34BA9Ai0=l9MOV6WfHQC#<}<-8s#$x? zHN;%*VV(ud*O$}WNmskQ*tmPcW_a?>F+4Br@W2)#Wqe?Aa~{Kv9(gkQFtLj=JKD@G7-$T$?39isp%3jpu{05q!D zC;)}C>YL!sBi|1P6^HA$&o9Kc&DECGkL_fm9gMR~0NfK#Sij-?p8Vpg;Y}T3g=z)4 zbr?WC0Laz^;bFOJ1jIiq*Afg&F-2icEdflIWtO!IVR%aJS%J}$Z8&3s(0$}wl&=wl znWrclj0VaZKuKJH1(jismBy*(#GVtx$de^sEt-wNSz1WdJ|v8W}~6c?pfj zI4`sZ(w(Kbz4l^rCCkwHCjo0z?llcg25I#DBSc zplKB-s08jB;AT`nxn4^$RYgrBF0^GbK5hVoPi(jrJ3=isa{>tex>hb#$IR2B$eXSr zjqZCiYXg6z!dFZL{6W{b@XrgpgOce&gT^%l*>1iYj${WpM4^7i1-V4U^%f4y zC7*^|U-1UCjHj~~E{z%$?==iAiNk=mCAZ}CVCDAL(e3!%1SgDI=qAe*=lcVJv*itz zwJkddk0Tl$>oO0CvV8?Hf9h1td^)jCa+XR}r9sDzF;D*`|1HlKc{f_wgP4f`|MzAb zyhY%}b@-ThOxSi1w&MBCjaAjn$tXMznaUV)gn+zWksmw=$V-8Y>yri#9k6eftC6+R zkj$ZlN|Ph37b(;URe*X1P&~q#6&zvRj-cBMa)lym^<_j3s_zm-eqsuce+KgQYz|U= ziZ@DZpf_eBwU@lH`mF*js|HZcjZhzl<$9QGIj(vNYj6tXt7b7An8q0`$bRdHfcqX4 ze)xNZ?lK+FlL>tmJt&6vkO#e2v>&6=4q)|!0g=kbp9S`T>qWbDLHiyI&>H~Shl-1M z6wEkd1xm-8R5afQ_kkRVA5_5YW&-O~V99vHsfKaN1jZY2S_FcoF3`^e;x!@x;{3um z;{*uDtte7q{TxnST7+BIhkJY$;Q9hi&)`n*kV;A`aZoKSj2y)))f>*Tx|xP7CzWzB z*^h|!!J)XsAFBH7I#4VJMdBES3$sx-ayagKoO3XDbN;mitj3ut+{I1RRSh*2wRO{H z)r^}{&pYf9RVsKPIq9MTtkZ=vFfX}=H;El=a;9PzsmW??$2FG!%Zrfv90F4{-(*=+ z;b|;q9xMX?9WRNR0Bx4Hx4gZ8K8U*}HqtrhRSN)d^$OkKu;*Ha?cO--Vg69i$}sSe z*4v_mK>8j?(P4l+feS3nvn5$ABST8yLq1llszZU*{g$L5;Lz(i1Zbo$Q-?%vjNRS; z-v00OL$};dHJo%LupR~$wqJ~02NbjM4b<^)0i2FxwzK0icz9f=@N!z+ozmhBS{@|L zbTIuuWoSx(VGS5?Ind}B<17+z^f47RIGdh232T9%N(l-PB}&|PtM)pV;4vW>-+**^ zH9A{rT);5DcS0FSm?Ko<^GilxZiD+=7|W3Ith~6yUuxy~`{22KOm{4Nl=!ZbL0ox< zWo?ejaF+ArT5*=P&WO7o31wV#3K(DU8J}&1v10AD?1iW;kH3xo8X-Av}+Lt}rgM`*X%f#hWB!C)SRa=*$+_-$HzNGeuwIv*!R%vAQj0s9~ zhRK!PxynE6bnuto$tmq-9bz)DUIwkr0B}tqiA}3x?;wAcwZpW8EZ{ z%WuFzd4D+`{N^p~MsjtDRrp|-VWol%xe#C<-iHsCaxTyrOZ|iU8XSmuWQi-6?8RvcBL?_oJzf@O6E$;Ew=m(M9AUL>;t{@r*k_|+Hn;?ezw#szi<&bIE z0}`c&W1oAYxW3#%bo7xm3;gwV^0eto{jPN-zWWEh%Soc;EX?#>x}A~5lX?Bb8yMuS z@@ES3@l}AC{-7+nv1&h5VFsiVLEN|8VfsqHd+kzucR9W*n;Y-qtHwD(0Sb}U+UogDTLBts8fqHE!bMgb10f_fsxfZ~|BmwfG7!e@$rjTV+ zJBXo3`(X-|I1@<7IR?9Y?TR$3rn#nK&J@;8vW7ffqbKjUzQfd`pW@8NsF>L7Vaqxk zIGr%b$?k2=+|ise#q9K7+{VsDku?Z~y(jsX47G<(>W40vwiI>ejxA`sIA-Wu zY4&n8!iiXYTP_oKOpc=BS1b%ToA*Nh!0Duam&<`fGa=Izcy|n zxWxM_P%m8{m$_djyKainZuX8;&RCpyYprU+rthhBU3nWY=RRRsQ+W5iQ?-kEuV9Xw zQ`3mdLXDVeXKsL~@8n9|oXDL~sToYqe@V83`w8s8$_!Q5V6)*4Rzu`oc~Ie=Ww;j| zs@v{qzm>A5of-&_h?Tm#pZMTWm}|}R7&&gm$dP3xR2%1Mu@!D5!V_dRQ&NC`D>eRz zmw-0!Rm-Yg)gvp5F5l4UnoC%)&l%@Dl-5vy7fl>nUX&R=T(!*02MIg84fNG-TGrkS zN}L8si7Q~O)oE@RE}L*(GCQv^hs@oM`V4(5s70^GxSyaEq}EJo=SrORF4WueZP~lb zvXKCX8eZ;cC}H_l)%1p8G`S9HwBz0f>X>(6zD20un1}nV;3E6loW>^i`f%I*{%xNF zbF&YDc^9G@cE_iun4qrNd$rSXTrng9$rPR97vgRMZXV|5 zdUJ{#@SLw>={svcyu(NM;Cc{ecjC>x5VbTjwq9G>+Vq?8Q!NYURSY5AuL<*~%uIQi zfXuED$$Px=p7SkuD?gTrM9febAs0wS~s+2?9!wIhnG0&}QN|_<@SP|yf#ODS&wb%uDhO7>* z1M_@LsOh$$!Ke9FOAS8pD}$k>tGSZKn0+C#Ic*7NFKge30!cH$U=_VYn{Od*=_K9< zjs&E>fi=w505Z;20*BaVUSTFcW~cJZ%*pZv3b_mJ-XuDIfe&^xtG14ejovKQd(0v6*~l(TTi?4BejuW6Wt7!arFNGg#@0zWPWvI~`cvo2u27Umf3a@Gglbl~CUlWmw)(m1y&;(%5WAzsid-c!Kux&rV~0OD{hawIYt zq;rP=>LKyG)==3tJO{(J@qyxAxdCv$25#aj@s>q&Dd9ar=&e9n zsZUIXyd@3P_(aKiYyq;V-&j^}S&7)Uuv^I7$`6i8+i*9<#Vs*%6YSASdPUbhh}KxK zJ9qxG-?7^y{#JrPTY_LI2yl%BYsV}hKwmGfnU)UNTM+{(%R|Cz#P~1q5|KK8>)mMS zAV}pkI1I#{SG3=Vj3KB_5vb|i0X4{n>L^f%<)wfG!S$S2HwM>@%JLfl_6NY;h~i~! z%Uu9EMYA4|%n%k%CjrGReV(2{IInRI4i!WhczHO~XKh8V*b3;!0$q;uG1G=|@&Km+ zkW?YV(bOE%4M)oq=hL3R>GgdO`k*pq z*;$BT7MYQRqmC)`bhI)t2s;c%sgLgs>i2&D^*jtF*&F=nrMNhDM}veD$U{kC>_|ss z0)wnWDaTPP&Z33SWw97V*7^L&*$5@4ESea^6EsCQ4D}SQ)He=9>8P@Owlie=?q|y? z$820TtRr&J2*%koEmOt9OkDm9iGjFvlL$8r`G7_O<=W)FSI!;&ZI9W>g#hxH+{7Vv~m{`z7bc(gUFhC3T zj?q;OY3isLO%Fo^J-LkeRwA3oJUo{ny3x{HGjY(~kmp9ogN&ngNS?nqJ#uzXjq7L6 zuCE)0r{Oa8iOd!*-3J6c{zkh!mvg^v5A`)~_T_<^&bcl1)mUKnWV;{^Tq}&$fn6s8rW7T~BU81{&ysR|qi~!9VT;-i1L;010 zF&qmGiXCde$w=Vhk1yv*Wt7H_k7pT);4K4-Cpg>$)R28{}5G)_!o9EtjrcrBT_yg*%|iR0V8Y6_o8 z#8N5Eg1^UD=v$X1`r3xGY&J8jkt9eSwm2u&jJgM1dw?JCmRnKxXl=e;2E<>0h*M?= z?4BoZrA-wLSgNGxj9xNa^mW${&nU)CG9sdopy2h9O!r zk;NnwvHkednJms>aW0CiCH%=b1%HhpuBvWWePcD;JzwJRqEwMe2xX#Xi+NmIVA)J) za|yCA?S(3~;Zc^8-#JZihgUV}ZU+|d5x>l?5%O`Nh1?SgeAO%f_gU9iMF2Jf5vaRZ zFe}hcG^LYn;HBb*FDi$dc7|+|q3R4;xfft;y_N5O2;@8zX^U{W!nT7NagGpi%NlDC zrmDsh&Y4&A6j;&)gsi{^L;MJ;*SJFMHI1kmBM&0t-nY``n$h-dWB0-PGepGcK|`VR z5M7$9TQ@X8@c|Cn@t!eErZzaEtHGkUVO%FBM>RKLuShf)iw@)@=%UfR9FAL63nhRZA2S&KFxtozqXQvTn#=5g)(~8@= zF>cAm{HV9h{Z8`)XK7Edc!tGuEa((Fb6~OQ;cU7isS}%Z5~C-Hu}Rtv&v95oGarz_ z(GmX~f)__^(*YUo4`|T&m1R(S{mr4a!IhP)&C$tD-I2Sv$c!iMUeYiy6~B?w&Jph) z97*Mx)=Z+nJk@3-YQS)Y;SxWKYfQrhnc0oS8g!!AckD?&OLyXjh%U&)CmfOC#K(_6 z*+^Kku`XO5UID3xcQ;5h(!+G<$xw>KQ{KWs2o0*_z<_R0g&z{U6y6xC{l=_RcD5(-xqlnfZ)Z6Px1ai%KN_c18cgE_?xN9XB~q5UkGRb4_a!cDDg+0>%TG2GcQ6YfCwnZ#mW7W<=!9mt;!Vljoq zR2I!FoF7E>AmGwI<-JfXR6ko)Z+r==zmL#u;y~8r`YmfrJ!8Qhp(rMr_%?;bL9*+~aG2OK^E5436^mE<7opS8>HV=`v`?;haRXfF%i!jNjEM+O+ z&Ys4XdVlR57-lZd6X9;5zy|MusY8F*@;uto!Au1$2@Y5;*)Bwe6*~w9v1f$BYE0^H zOIxDVj9JObzSk|l zeFmA|VM4P`oM7c(fp%k8%!DPEo1Ssb=C(|__AfFsF?-gS^C9!qD6DH)+{j`D3u!A0 z+15Ga+H5dcY%n%QTbpC7z4c1`YflteBl*+*EM~E|2u18-6!z6D9R3R&Vp3`~*ut|7 z&W?FU>-wf_Cd!QcV^$cG05rpw|o*BIM8PXx?j3!!hNZylF-cEl5`Q|}r1-;R7?G3ON&z3V_ zSG|M-+IO%xAI&#(&y^|3bpFl0WZt7WKSW`#dnbPC!6F}pUBtrS@6oFB1kF@!i&W{E z*;qd8zl&RKZ%eiDf|jWLkCg7;0m#P!IZ;KW;SX(9`a0@+HudFu6r!}vfH$4xmLAg#Ls`7GFB~EZyc2CSL?GaoUI6Rx}-GlQRvhRZZ zI3nPtD%?*y18!gu;FbZ-pq65CS5z?ddeTzCM8gQ*myVt+g5g3#U2b>}nrAl~lbl&x6{VznKWurA#-uC7VdcXcLJxjEhnv@)}8~xi)!YxZekpuCETr3vT#Bl6zH> z_YQz0c}O|AFI=`^>Hr*yOv4t*Q_w0`Xr#YinLdewX=CK3tUwnu%zt2<<2|N{Rkh9B z@f?jvBA${MRbSuWX@fYbJfaD=OAAg^Xa7hQ&{i&)wG?i|Al3lEGj56QKK z7sr^Qa#LAu9Ns>a`t;{oh{h-1KXq%=zeAEb?@GP-%ITPQ^Ocg_sggZ66Ox@=3CWJ( zS%U0q`WU{pW=HFkH&>ITN_#Wbl`M3>B_bOwjjdBkaF0rGPaPyE7!L^^gajrF5=6=G zPazkF9&OlZsN8C}O{q3-0@XAmi{z^j?prE%d)PWOz}B4F@-=v`O8o}vU#f#GcP*KO z1+u?JhB~{dn|Zkz94|8=<$o<~xn?(Gg=?i~#0#t1X{%<Abtk`@3LDYqpey z*=M#-%| z0>T9K)p;TxV^pCOh;qASV+Fcq5rAF>5MJ4_V|NloB>Y+MzEwQYIfNJ0_q1I_-%ScaT!msBK~kPFyGkExX*3BELeDtbb9lQOj!P^sI$Zi zCifMfO-}>RdIuPJgV=K35uiAe7U7++3{vSXG4b>!ssi>^ZKt0O!1Dnp=XVeP3+n*q z3q>6*Z^*9|>V0Pd_0(JC@a%&O^P6K&`)9?gpO#Ta#GE|^`)lQXM~LBo zaOAz_t=`Dkgo{E=xF}!JmwHY360Lw;76a=jVBvTp#OWhg)%CL*sv4ta_rWk{EXvj6 zzFL`Oij}3E)UIfe|s$I-Ez$_BXw7w(?sp;=j z>08u#2VD%jzk!E~hOpi+0c)Wb_>ibrZtERww4KfFDeY|AO8_@-14Vd<_Wg1)IFZUJ%Fpx*7`sWWSm-KQ2G%*oB*s1ryMO+%-ac3btM1RdeR! zn1sKnVWcw?m|7#n>YZVnxxNDnOo(*4t= zw*#p`g{;7E_KK|ZfeHq-3vJ2*tkMB?|)@KYz;^)XjM9$ZRLsRpD-6`fSv zw3|#S?os$FZU_9mfZq$V*_a@QKra%|c{8e-^HOoyfQq~-#^G+8$cg(Dcl8~>{S>%- zw8DH&Ii00IlX*%iR!aT|1$$7zj$H|`u1L7;%~Yr?*4nPhQ|o7=*@SB%qI2wuJzTAq zcNbUi_FVwH5`ePxCunyGi2a^C#)1xUm(Uq<1N3@qGY|H-sg9USMDJB+ZB$l~$n>_bTxC`vH6cfIXX1PTV+m zrPV>IC7V9vN&2J$UjHBfw?sPgz^0!Hji zw|-7@ynb4|v8oPFB>GeGf3FX|u2Nj^Fr+vGQpjYU{ohEN`BQ}XS%n#pDonH)zUZ0k zO~vi;C~#j*GMPgD4M^!JX)&WFQ`p2i3cAZ<0JRzelTkjLt^sM}ikQ#-a1ZfZUns#(kAvWB5JWte!a4#go+}-4 ziti$JVvQmXdlJZZ13BcoHU*y4NIJAs?-9FuXq+Lg zq;qg}vQ<%!+tU@*QOrl42j<}Bu&9NCTI`9M2{tOLA}2Ob+_zrZ# zm(Y?)7khGUrFcVL2HrPGa!wY+{X99-K}Ka%)WkN5IsO%3ZaycFkrtuS|NISne-XYfIb7{^MshYYip4XS&18MxO=+^}tjvjkH}|u642A7nn30alFA3GD z-LT|RzN_B>-^=9VjpSG>d}k!_;m~MCzJETzc!G{oLFaw|LHC?ztod}75wmbUmURk+ zb1qSl2EcP_6m_SMfqEoR$8c^Zb{4F&1nY9aiX((rU4__A3M3i>=GaN5#VlBn zKmG*B%YZx@X6@kDn~{23OnATEjB|w&VI5M(w;v-!1;s=2*LuqAE>&nvq}x;3mVO4= z)|+pvZBOW7+rc#1xyqNLT7n*F1Q{PMLN&y_fzE3)j+-y$XJisW>c!^EDb>C zVvUttFVqc?bDN`p`zv7f7XbXq1Kdmi|KkJB!eVW1DkQdv^N-V{)_en`iiNsZHh%)ccCPi2aP_gRKy$tY&|w~s^)-Pu zP?wsUW-Mh$72V5oK*(s5V;_arJ#^eV@jHM$1F(bGPwu1Vh%AP5^q&P9EYS*Tr()ew zU4;z7-sDhUh*MQps;Vn~0q7HlGtQ1~5_G<1fEed6fr?8S=4p9MEy%S{5~l8o((PJ_ zpA>WHZ@^q|gh5suGQGB9U=!(EaA0|$j`_h$ut@OOYd4N&&yFz68q>g`*# zBxSb6LJZujsCD>sX9lc89=~1x)Apbj}sRM1KyG zYcG%33o2o=W`foTS{TEEYCJrupqzVl0Ou@lGGJ*gB)apOt3ssJ`wdi1=f0y=SkW2Z zpLmp!7gS>GJLVS_zY5Y@8IVF99yaL24*$C1z0w7Ej{&bgn}pywpD79=9Z9{A@`yHa zJnTLF{<%Hy{S6lxD<5G9-cexxGp7^5S*lV< zIIId;SEWh{e-oZw=U~quVYHc+_5phNalyn|dW7?k2bQiw!&^k)#9<_QDCG8iY0MBL zJr8DFkP;(FulVSynNWTTFK@crV3YHUu-y`j?-Fs=oGzzm06Vq=FjoUp@~jkK_%zP) zWWeefjR9T>0`^hJMRvBG1IAG@NxDX1rEmUTpZ>0;TWE*iE^v)vO)FS zW{D~L19zyUa>yvrT6=$IU|o8m8<`3G;`@Mt=Tg7{ses|J3?49*=YzfJfz{LjgR$qiaw;*#jnK7L zMqWwL@SrZ>u>EP|fTWtiNiCIazz_i5e44RFVTq8%sx_<*Gatz2LKeNq`}49V^Uc7fgE|gF>sDzKUM(j6M)To zx`q>c<0J$Y6_1>$X<$*^!}EDvyl4RO`AW|jo6^g&O5cp34KXC=x zew-)lW(`HvhPq&S z$Z#K2#CeK%cm)u*T zdhRt{&z&LWT__%^ipAE3* zFLC`NtJknn%qBoJg)E#6gg`cMu>pt16sD=jFU0}K0(Um=&dYeieZpXIYR9<;2%c5C z?dw6;|59TehWS`0J?15AB1X9k<4Q6sGgQhH3w<}C=go{H;;3t0I>c=x&neT#hk)q_ zFzv?WwCJ=c@l+?O7xK?xjau~0&nx&2O#r_d;NqJZ(LshBg{-Wdx*%#KLVC*r)T1lm zuLSu5AS1CTun`fx13}Tv1qE)PxgNoIoSBWPT~J&kZ32f1;HxkQ-=ZQdo&&VKFLR?p zdx}WiTL+U-q6j70nJoQs4A!eRE9Sm)fw>Tv$N?NPin&#QIR|fTwW=xhtSzZtG#rt3`^%R_upyWTonQ%K|{%0Vqw0*Sj?o z%7xQ582GnS&ya;1A4a4A*k2UMm~^)y z?{O%Qo31d{aCfwO@*}psojrN$s&EouURt$7?WPxIS&H}AVZhtxN;yCRZ!)-599KRb z>IpQ@!R|frZ1)j0%va(dybu%-k%mgG73GDVxABxC`ly=-{tvMg4drkk(u3 zomeRaf;YM+wV>3IU0q}1O~t7?3OF^u@kVw!Se$}5n!ji_97 zFmhpA9E`S6=;4b2{SKh<@SAPRV5F-BsSr*nQ)^WghQs_?m4U>q*M{=|*YkSABY811 zPW<#1B4H*Z-eJX&%Ch`nfkQxt?y2GxE&<*`;Nhk`az_i^RvuncbyZz@@qjptr~xG0 zeoP^A&j;j>fW%vUS%xjwI6adf>*|AtJaF#A?YEFz*szZuehTK*iiiFfrgI55`{WE+{VH zAR_jIOIcSnJ?v5dEd|gHT={C4DAyA%EfAV>0F-0k?_H=fF9XyDH|dtOp)|%B+!~ZW z0*C4W17;VMZph_;90y2mXy1c)j+AMK_Mk2T;LzaIAE`AId5`t#}=;0^aR6OVk>#?@A>P^^{K!1w)3Qa?D^KtmjgI?X$x0 z@t>HXL^xO5Di|9KI&t!3As1Cb3IC1B!n+jfY>0(SWHMP8L75yW(@z${)!_>ls*l}q zwt&+8A50d$`wx`a?iOYzz+^!hfEs!dlu8=xJta~HdmVTZ{j>?Zx(tZDZw&@}4qtfF zRVvOO#NtyH$UcF)^7O|t?9w6Xm38Mn{^F`YVIRB}u+IZlR^T#$_)>tsiU^vD90`8= z;E7^|e(O3w{}z&%vKr^apLAL=t*Ukw5BJvAH$}n^h^MXXkyl-*`U$DWsU$C54@rjI z=7uihOo1G6Is>90=bH+I4a#%^`2h@=5Lbp`PwwL$N2*Zli8liKRA2`urxf;jfvuK@ z$WwHjG+ed zo*dwTkV>+}N|5l0ciacTqv`lM?y?F<@$f!x~yHod-nYP4~LgW!^Dk#MuNPed& z%d~zM>(}!h#@Bzv*ZZKASk4nIem(sC3-tSCkKp?U-mOyz%Xvz^j{tF60g_tBMGA2A zqX2jV0NlH`oTmk#p|PgAmaid1?U-zWOBJHzF+gl_k7t7C1Ol@TTpf#a$h2R-V->!> z-2eIunZF(};U!8x?s0toMSNd1cu~GTy`~wVwN!qbS@J_}-ii?|{0fEY`vjl{-irpo zjalw`8*W--LrOqv=hZi+^cCg}7$G$y=K!q4e-x|ZGr-#EKDYm8!-?R5B!Owj1OrbW z23n>-_Yr7zGSJ%s)aa&pj$=Q4)|9I1nNfYw?8|n|pEPkWPDbG-3AT;h!(n;*lF0K| z*DBGxXF+rwi1OhSV;XAw6-0O$O6aO_iErBM=2Q{|#c-l`JM=(=l{ijee|rwF+4sZS za!4r^#tLz@`tV`8*X2Qk!p_#JEF0m<#hA0vW;EY~T=j<0~@6L4T@ZR}3O z*iwMLP#|1*sc%A@r)oi}^f)S)KR(wJoiD)Iko5%x?)@f!A9+A#)(G~{99*l%hjBKT z0WE{Y)3LmvEIYjgmaQL@Ne5n2q#>}pEkvzOtBblJ9tH_jXs8-*SFoJ70d@|+m=yzi z@5W){10E9KPlePG3jmLaFMRvJ5aC9+QbFgw1JJGy!7$kS!o^r^9ki}-SY?2hIBs%< z<>$+*?QCZZfZVBAf4>i`*MZf{%9@KauToWK0ZgWB87BzgnGh}jyK{uZ1cklfBf$RW z;b7**2?x@hDlE=3rJHv6$JT-wjhtI6Q_Pb;2IhCb#1S()CX*SSfipVwn14)+5)WuX z=W1jOTkj7s8(vM-?7Wi51tNC}8tleOgqsJucf|6sS0}p$eD1Q=idARiD#GSZ>=4EWMubcPEMnoXWWD3TN~Buh^Ty*#i)yPXkf(uTW~QVaFDPum zmVhk;>^2B&nIb{l5+(gzd*r1N^uYKL3j7y=X90Li$m@!_l>p1DZ*9evvq4^4cJIPv zXv#@<;YxTHPL69%9Lz-WNH07a+h6Kfc{7jG+GAAIE4#DCAZp?VGh^czQVnFwW11s> zGgilQF0-wUf4yK^R>v1nbYZdJRrI<~zQBR%ZE3I)7B`@Ze_VDl-in=_kV9W!V4l$ypS2*C)ln(cHoTXt^{e+A-19n5AU-()r|mPLzY zH_%Rdzk*^oi%~4bu*iqjrU*sWDE>5?#StvdLt$UU;&K-MVX=&b!+%a=qCmWiCOWg1 zm}sw^AZd>mT@&pCIOFsSOvJ<&k}R;@R;pMqdrJMRB;%ajQz(BXPqJX;nO#`y#$p7E6*R={Ebe9T6jgYJ#cwRSoQ%R@ znZ``1H7PknTt5@M;F7zY2!7En5d5f@Tw6U!cxOk5;5H|1lk8FLX;d6r+{SZ`+Go

J5r|TOm-Vc&H}|DpkpZDnpXi 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

G^pVK9^CknC*a5lhY-Uvqvi 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

+to( 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ⅅRw~CZnV`J1i=1yBl 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�+ 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

tk52}BaAkRYHrrwsIXcNV|9%RtK%@%&Zw~C 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 z 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πD*Ajzcolnx+##&qRd0#5 zw#Ab*(Wd66L`}3I@yj^5VjNzTlDOK|M7$~1u%m%zYj|6{rlU2{zGJeZwZX*Y=(yJA z=Jr@~O-EzAsolg)&~d5oi5ebls;O^oRbD3SIg`BOO(F?|pInnZ?!ng5u$E|heX_Q- zxlx!={I9L!z@CaC62=?LmZ#$y6OC?pCu>++ymet*^RbSB)zrruql&k64J^^_rd?0N zV$F@wM3cgsqG1iqHPQA&bCaou^-X$He>xHQnyTaCZ8g!BxT3RxhIKS)DCd~UN$3g6 z+ZIP}pyym_ELtO3;T?NF1kG;rHPw0i`tJJZy_xjgI)yBq&FH($%|_~1;}e9*&)9>w zn~NpDD^~Gndq-!%O|jUe#0VWPRUP4b@P!efcHXmvw8*|;Ft(%RhKT!Z>hy(-tmVVgHJO3C9%1Qvj! zCZV&Ii(|%5HHxTOdTlq(FrQ?5E{yMxXliSZHkf?!T)c%Cv9V}-JlO-fRJ$Z||} zaa>xpiH11&XlRbc1ZN!=CmM@2HzlpAkWsR(8*d8gFUxvvJQv-`4vd_pC>pIL+Sayx zb89TAtID+f6c@iOS{qMRqoLZHRW}iS)_3DOnrf15(S`9CdB)hQSzu^Pb#dzA?JR8) z!zW2JkpUPaA~IqIe*+i4Jz8BIk0q;Ho40RcuTgEbp&Q@U*3hwo@G;GWnYPx|i&30x zYwl=@sXnn$8eT)ZE?To=vZlGQ1=ZeWjrxsU+}h^Wns^d5-kL5zntE$wDpZ06!XT(^?_ z4v1}x>gq|;uuVyP`Uyw^%9KP?J6bv3u19%8qOILg(k4R;gaftVE@*8OBwJIv`4*b@ zoKt)G;h%gzrhNv5e%lT(3;4!{smW|d9OB)V-I52wUU%IHObm&TRTLB8QFNv zvL;y*i`O(Li4b78v8@Ip3Ro6Q1C&%GPSl5!!*p%!F(Iwz^9h92wzxSeX-B*rN!*>o zCrO?y+bcGVWMdvJ+uMAsC3w*tIMVXMli)8%O!hYq(D8^8J^lD6@frU)0e^Wdg)pxVUjm?Apu6sDg}}$Nm##OqFB*1(^A5x^g+T`aG^=rJtrv7AXrt(&9sFlL@R-C@T^uxoc5W zXkClANyv=KpwdvQ`vw-pxaj4IKY(`aOr?owu3Cul15{a`mG=5~X*WzyYCVTaf!6B_ z=Q_JeI1kn@TIsqh`Z(|Ew|=dp4(KKIY1Fz7dMtXn4r+8A)PURfdCy6@L|iRP>0EX% zZQ%DyD4)TzVy@(aK4z@Bn4aCb-%0peJ!@{SRhIS9uU04TZ^R=kA&ZQ~XC-yL<2cs( zK8rt7*9~pj9)xuXzojmaPd;eKjDhdXt?z~AdnNe~A|GE{>%O^5dj1{ty0JUzku&?| zw{GvPRBSmWxEk&FAHeaoBdl)$$bj9`^QdV^v|!;CHA7biksI4|>>W?X!wR-8z5q)ds{D=d z#%g0*z|8H%#jp@=$0}5!)r^N3+>39Ew{tEw8arlhU!1Y2sHL<@j~U#aVbcYWhmHdeY$TS=R@r%K;>O8Opd<*C~oc8`{Y(bhy1W(uW0T97JA{FUUB=7%a$ z`5c*^kC{i*EHcZi!V++NwCyxH(mk+Szgp$MsyQ&!)zj@lMeCd-vj@Ewe*|sFL=!Fk zP?3r@1dQidYrQ7;z+kQs*=%wV7^Vs_SIW95;0P?*4r6C^hi8$_R`B-t4r<+&qrx?u zw6GLYW@2#3wbcX_hqW8c`K|HVcq^=EaXlNTJSEPZ0R)CR=c*G+J+O&U*rAA;^_t+o z66W!`mdeLWRziPmKP=h4BkbOque_AF+SX{DP}A{~ReV!3OlUN<(JH==0s$`tfQV@)^?@bH-9?w&jz;WOctW}077nk~mS z_J?5xbQnGn@spf@a{~VI$2fj^an`;vj8MW&UMB-l^3r?ZPC?l0Su^Rm|Ls(ZHm&Yn zoJE_r3Siit23-CoP@vp{bICdXqjwf zTMX|#cX(~;{26hWQJrWvHnQPPVFP1*wD$D%@bL-WJ#+@}5*__J_jBB!4ROjR>ny2Ld$om*K6}Uh zbQ%5`8kA7!G$uHg8yXqC!jLa84Yj}x6m4u1vFHV>+%jAV8j^Qqrt*VEe21ENOQNZ^ zSxC4cP>?#f+N3Yan#%U&9$WH{{~Sy-&QaMSm% z2VDB4ZqFMKHhtfuXWzfkqz7&GeJ?J(@81Mm_WhelOZN@Q18Hvs%uNd}T)MaeTiuMo zk>Nl}ut#42Y*>CA?3*;bq(=Pc(vvrJE=4>Rt9HDMoGSpwKq5R58*X0QgzW>|6GfWW zA&yxj`ga|mx0|En7QhnR9>X0wf|s3j8(_Xsvi92O%^e*bE$Er($-EKccHr=L2ma<* z6gpgDReE)D>?AdlWjS=gCwC`~bla=0y;JK&%&GB{x4z!KQRsl)ZhS?OEju|%tm z)bcsUPFoGjA02bzev+k=o_j1BCK?$ChNd&orUPHJL9=lt**Lzu=!_A=WSc2du8pf* zYsk_VY@9X_16FJN7aj0Y$~-vPj<0Ee z2MvzBg;;md*N9%gd3qfihwf2MmL8JetZU;48}yBF?dTzr)_OLc)K}Y%@SMSNs^(JS zOtEpmvL8e7w7!iabUIq-V6@w2s*R(fO$!Up8`$y4$D$zd8`|;4=cVh&wCOY(M|^^N2iqL>|4z_A7_|5>*` zwsA17+M#_>UN^TTsLMc~Ll@HYHnnlloUos_##>+;H)YUxo7s3`-NL>O>EF=a;2bt} z^%EN}(b2S^3B%Is9#ZF<+c;`ubD#?EKegjpquaY|===V_!;>2!JD#qK zmiAU!NsM(P-;S?oZeEa}_rTjpGTk5F*a9y(ocZukP7&!cgj>(#DlejMY+019tGh zd(;?h#{iW6G26y#>8OU&yB>1VmCh`~92wpR* zI_XMQ?e~J7uPl1iexENN)K*Q@nAmAy2S3V+#`T=zEE(cc z$pqE!xF*7l93yN$T5K5(IJ@D%SI^L{J>3;HJja7q+VF`Ue71oPf(}mC;MxndpEfAr zMQ#||OcCGfhM8}!Gb#Y`!F3z<_qy@y3Wyf~<7u@*`u-7OXx_O#B@G2s<>A=Pb#`*; z&|d}|0gz6Wq*>f&(}@bKdy!IEZQLBKVDt^zV`9)!F4dIx3mH0f|Xp6e{a7H?8kdDBX*V2j{#_Tc}e z;D9Om^z(w=@a{y>Wl{77cT+$`FRA(H-`S(psbKUs6DVb%JOVve9+AHu0~;9X#0G7_ zTcTho5=h1MsyH#}8lHYFu&&N7UA~=lcvP38PltPT{8AI&t7!J?u&JK`6R-Im)M0aj z$u1^-CzXCkhtU(H9foxny+FbvI?NtmcplX-)dN&L?y6y3%M{(+3?23YUH`w)Ft;aY z_%aQb&Y)qt8+xWgX!vh6oV~)({T~a)USZ(>tKofvL{@zM&V}tpptRZVHH_zE@W!W< zTlXIs$ZYGN>QB<+80KCI^app`a-TWEY9MP~X)glI9lJciK^%L0aql|m*khOW8KI?s z!XtGC!1RDsWufmCFg;)uO!H+1tfbvT$~V~EBc)Mznm5&in%_MYo*Kv+X7XS&vfO(q z95X0|{&EEy994rzV0&wr8AMFGkA|rMp!lG70cAk7d*g2mFup}0?1GQH`4gu#;^ng^ zAPlE)&d1zi{0#QVkIp6AI_=&82L!A9$T9<*xMl{BmaGzKzh(wlGXro0c6F|q0lGTZ z%m5;d|4(OtyhRhHH8{C}r>Oes-zubj>Lg&D_~RrH$uJAl>REvLI&KGX^}L{j{rWm? zHF4vqufv1l&imAbaodO+ubB4h>vAg!G4z~DeVsJyIiLDEZbxFc-|z^AXH%szb`bbR_cZ$wGe*Rk8hr>`TNrmrJ!=v6F+n%}9fD_FX| z4!BQW2fZ|X9k4WgoqVL~>wpwvWx`vLV2>gxha(boYRS6@e5n!b*@^Xcmh z+xj}gw!SX$mcGugsUPa=5^w424BPs;#9R70!?v_$*w)t>PSw{5OV!s2v-NeMlcKK^ z=Jo{Lf2pq%o~o}4y$t#~;i>w%fu-u}gs1B33g*|>2}_mMXe*z-j<8Q(N7x;=)YlPC z)7Js>>FdNv)z?YK9=p`ng;t8b4wxRWYAjHf1}sfq2h0puS6?Sys=f|bn!XNLnzUwG zTVF@m3`$pD2h0p2S6?U03?iei6PBv41Lo@MdB2`Gtsc7hGZ1`Yvm9SHPm$6o!BovX zl0j;3Yuj#iYrwt5qg;5CSITABZ^ZM9L(5Vo!eG1Mk%AWDac?^Jjz4G3EEBn&$aES# z^#ug%eJKpTgnyH;+vP`%7^b**xve=flF_FD^BrqKBTw(Rlw+>S2xzG_b%Q7EUjuWr*Ln| zJBUm5x=(=Dy@hKfQa~+ z{Vtrl%{~ziFU$GZ;OTphIY$wfc}PCGjlDEE&Zj1g-h07dCfc7HyfhkiTV_q=z6|Ec zf0=1zJO41WGVaB}c;VKBw)Q&NiK4%&^gfiYkyd;L`bN7I2$Nho&jH7ojtIt~epwfi zPM0%)xb!qxPPUsSOWMTr`3ZpAeSV@&pAGt^KH29dne@8PdvSI>sr^~Gz-6Cbi?nnf zFnvA`FgGpwyi0fN1HDIuBf{)a`3T?KYtq)!v$N^-p8$qJ12!TDYB&-;0}PkQ;f~P3 zW$goM$JQ5s1qHTrX|LR^xT*6cUC|fRzA-JFs?c?O8%sii|G8%K-1_ z$E_JAMvuHKlp=ySTFnh#Ie^Uptfp_EpSMnM@5|bNCA7rj2%LGqnFIdy!(t7jp^NI{PgnP*v&66WfS*X<^3asO)s|d z`?1MyyzjJKoCOFzk(Wzy>%g{JH*Kg+|v z>3mLbA|~Ch&5kf^IBs4L$NAEx8jMMLwgZlaQR9lYw(p38_Z-8F!&p=JCJu+oOy zjF)YZ&d8+g%(u?33gOIsKj1`7etIUPJR@J(s4uUM;Hgc)qa4VD7f-?C*v*7j=i!O0 zG&5@gaC>H*pCLVG)&(Yg3a@#A^qI8*xSUxVNlVLSGqW}WX3EKzVqCgo^Kkcisy?|9 zu&v#nyz^alcWw$ebxOS}RHQd&*dXAXiFwN=t}Wv!8Nn|E9G!;ng`GnJmf5oyaL&kp zs|})h<}3v~sNmRJ&5ftcixaqtQg*a!oEg9=P&g*4wy$%E+`>j)W+I+5HfX2qKrKfc zXKk|smG~8aakd72Yyh_sVIk5f_pa&uwm>{*ZpQcZ#rsFF5MsJ50pCi&HLtRjTFUn` z#Nqx2?h)r};mwO1dzLQ3U8PL-bHr64t_FKBM%1b7ezUiH8^pyF&BlR2-cpL)aDde- zm_GN^+rNYr!ttSbi~*+sIC}p%W8F5ZMO=#)=WCyO#I<{IZW~cMX+oU4EnKe=S^)ED zC{x#VHZmHD(NZuAZVWBu7r^DO6@MW)$9>eiER5qx~e?BM)~!2~O%{Bi|i-`KDZGh@C$yuy4p-^1(M;h+B9<+ppUU%8)x=cFI zr|ofNeDna<%sw`a#TE_jUl1Dlj%V^gx-831_~zftbS65z79F0O5jt8UW4fIYPa33` z&IfLyGwF32leekQOlkT}nzXvfa#Gi;UYV`gBBOSkh~r$Py8^XCReI(fLcUTy)cdgc zw#sVSZUk|e_#QQU>lv73OvlS|b~AW-RwrI&+<>#p;G%zWKaA<0zXjZG3#R`c>tA}l zInMujwB#ObYC7q7S&K?Fgt*rvqIz3CqiQ#=Y(uBuAPuJ7l2$Oa; z@-Xd5&0rskwm;5lYkekaU*J+R*bjfH8IX?T0lEhO=F&wCx^%}b&~GEymZn9(re>gK zFTM2CvrsqUs2wy9_Vnu*nGKf!PVK;?QH}y-rTR7Ez>H3#VmRw91w3`lJ^)w{xV$u; zmlb2C#&TZK8AKel0;nYJdVUwcs0rBX`CS2{2EgvFX}FrhZxBaK08)EoXkeL+R_p!U z5l1bcwTBmCnkbd`?+~{Y;$U+yY+*;1n!U#mM@;~6atE@RvG)YLO2K7wT{T{FH*tF* zj#_}RA8|zr%+8178&Q~P!H>2|j|k`eKH@x2 zMC|D(l|)>t~s)i50i zT~8S;<(U0>T~M^OHM(OpuVxcHzz@>tQJ+WK^|`xkj$Mq1$sD37ZZg2!x>@kFbP z(^s*}_?z%(ZexNRm343sLeq?!T3nl?+6HmB{fD-SET^Td16O3#Mmwzi>omN`12_dC1rSd+ei z3$Ixl+(gU5ISzTmNn{H)S7137EQY&9^X5*Hdl|^v>EumcTg8;P$*K}2lvEHngq-;n zeMYVn@~iE>yM!v|f;45AwUWSd5#OlKoP{!^_L;M-K9j$SKC{|9jy(#CIY%S)TX;ft z>l)@#Tlw(v0m*SjutHH``YkZBeRoh%pPJ$h||?KtoJGtw~Dyld??a{@R$SHBwNT)+gSJU z_PukhTB{dnGQR(0f8-^j<(H~X&X=@9OW<%_Vx$(Wl{t`F^wsuuv#z?MkYU0rt(mAF zUwE?9Tx{j1XA^Vi zMDnYNnxM|lnrTt2)tYH9mAuE9X=~L?dzr;YPWtWiGSRBrGSVkta3-V5NVz%W>sxCi z?yC~%8TrO@MWxBtXdcjPSF1j*T3LN)&EsmTKBlae=J5^r*6Rb#z|`pvV;@?s)(X&| z9EPt05A?)bt9dbN6fZ8|6abGu(%_hseyC~Rh;->`vYeX?J&k8u+&$V^&Mhf;w9aRu zcUuaceXoE`?+zCacTwP5c(wKf+zA-ZNP9t&EVS>Z7)B(E1Z%hAN6FX zOV20A`I|{&)`!R^bNvLI`wXtG$HO)6ob5b5vYZDD9@l}O=fzoTJ)IxpGnXgeJZ$Jd z3nvY;=6n?J@EH4m@~}OIFw2&0@xe9c<0gGtoW+M;b3OrFt~sA1E!{sQ52Sq>FjEFv zqg}dVcV}30UJq=pIa_o$Jx35SK6wf*VBWzkUX=)b;2F-g>l!>wpch9(@*g z{5^-iSdUs%I;;R>GiO!Nc;9Qp(p+*Jp7#`>yt?-S`1KA#=#0Q4wHe0I>&b6bykCrVcB`~`l@p=E zPMP>3B66J+J{%~|zQX8oW5nd3bBlz--d!inf1dI-FRo--+BpKV3!0y{e|fdr>BtDq z^uj6fdjfS2@YV{mJmY23`kU^TX|={ujtIXSn)hT#0rSh1B$ESK7PqrjH-7zT>h7^IQu* zb$g9nf;R!!`dGB$_s>5AiA5fIPoKMwlHOJOOk+^O{yokNI^x7QhTxII!v1J@j>XAD>OM99Gq(Kx##%BIoHgF?^0?-V%hzSGn*VH+rX zRatt3Rw-E8-qF=L>-B$euImt054s|hl%Z~udajG}J?eTHo`VtTGbrus?Y(Dzw9mrk ztFYUT*ui-g*0V0t^Qu0OQ~^6#(DbOtW#cAnD>On|Dqt9y=5 z)xqGdYAR8Ekh&BsQvfNyEXU>;V6b+3XW*(QPOHQ|+qX~&vR2dg?Aa4a=JRhFk+aCy ziEBpwnvt)1uWyGqdU)Cnalq1ch!bY-5MML$aUx&UXWEGXN(~K^nPzoHK6S_noPB!7 zn#)%*+EWLAhI3E$=&#kIpYt=$EV*)(^Rs=1DJWt8{A{0rs*?Eh`5E%+pMDle*#u4J zRI--yGwg(`JOjk}8F*>)GhpMM3*r2Uc(-miKQnC0f6mWei-!qhO8Av5tngf@N!%yj4^i#Wja!AFINpC0g!%(sUDw??(#>-^*KF(U&pY#!G5343_F86l4nh>?8jJr{E z3U|{q6EJ`T;5GApa-_jqCvFn`jTE?{{#gAcr_s37&AJo*6tgGNhgYfdTDVx< zN5Zso0E_nFVQcQA(0ma-*V&C0E_Y9*p}m!}TVv<12ZnH{vuSjx$Jac-d;9(HPf&)f zosn+r14R~{E-#+~9&>uT`xwJqkS}`x>M-yb;>@qX^cmjtEMAP1(+PTafRdGdzZKgf z2lBH9XC`Zxs`BdfBSGS*W}ex|^9w7_$;{LL(t-b-gI2Y^SMn35K00CA&~3(c#+f(` z^kic${8svrPH9JKHItp)Tp(X#&4G;hhs6gplZ;(*G%UkGP>mwdr$irca&~7%nQsFS1i_fv^3wft!Bg>c|HE%6Qf<1O<_nC$Me)vQqd{Z?`L)ym=Fm zW9~#6aszB_(6ehb^GZ);nwPIye`R^{eR9qi0nj(Uaq>ycHg!Hw%%QO6H6PZalTwd4 zDfP&BsYhMT9PlAC*0(6<%JMVioM@GEoP1WloUlJ`i*`5mM_L;g&P5(PBeIFu6Jd+g zUJl0FULp?{=c+Vc^g2+QiVf9DHyQE9b7QAl$E4G^8)3E>FOT&M?zr<;L!#P~UOIpV z<@^P{)<=5b3*S@SZ+*53;dK6Rp33A24+=ee9`9MskM)=_yJ_h`qSuN4Xl=1QP+qzT z&c=qO_M%aevF+`%J|2Fy^CN?=cm5iD))TdGYLn@_PjEIh>9mK5Wi}orkA9Z(6Aw@N zgYi)P6man#>GZ)2>FJ>gne^I2WoY|s*xEyt4_tbvrjwTLf075%76Rs`g@?+eJ64^+ zL$wyL>7jzR$9RW)w`J!co*meV7f;i=fYVcD!DUvYcV-IWsIFLX&5OlvrMx%O5U)K~ zI0+!z{l%-Z5#T{DoqI-O6TtBw>190U@MA>MlaM99NtfYFOp3r$3JkD&JwzB%9# zz|DCB!vH-)1&EW~{_gpN?5rZdQawZKXwQ(GFUHQeb>SH*1|EMU_^ZzhkczsV9$y$g z@0)Yn?4@!JHb=Fd>`z|q^*)AYfDX?Rhw+y`hqy;IaqLB`x$|;+h`36<}^! zaN*LGIY0HpPZ_Y;gPVGOZb?{d1%2H(c2WKh&;I_blf6&JW+=ITbjDTwMHVYmzP2vUU z3bl7G%h6%zR$M0rB#g&WQ5Ln|PRBz@;2JFlY7pm%D&z}=1CibmO$Ssx=)I$>T0KQU zXG3Rr*|02JlolKU{Y}PMIs7=o%7OTsIlE!3s|5%(b?zOl25s{T%IaVx^J|gP)i}yw zY4Po93!>1lI=HKV0BFZ7+M>t!URg2$R0ZemCR6u#jhT;nmPd{y)^X;YC71*&<@$U9csY`cV%j_+}h}ckUdBEA286?9>ZwwH+=B$YI0$swY|f< znTz*%2y4N+8^(=P@NxMiT*+aufv!S z`CN&gRo6ea7R##8yllB3wGC>b9o2gOT1U06`>`Y3ch?uTC*!y@d`D&J$Z`;F;w!PL zL;;2qY7}J4x7u-+Xm5(aHO(dfNiH-)f7h48k%q(MOAPgP;L zKbJH&P~kZyenUyC$~aBMZDry%k~r_4`HfY)yoF6#n=rhv84pM*et*O;E>CachGL!n zj|szl_9nb3!``lLDd%Q{)yS50DZ@_~?!fEm*qoeb!ZqNU*5-t(lY5fxrz$Kb(#TH% z!`kGZ`y@ijCK-E5 z=d#_J&v`dp3N|>Pq_t;-Rqz0B=W(~n0lcb54_a1o7X~A{K9rV98(w7Z+L4A=9lH@!m!8U;rJbr zHPvQBuMpaa20SfO-;9xl$10L|38A4u@Gu2L+Y-Ojw)8AVH59pNOw=b;n%0F;U5B_g zLK@P<$LqZ~+zsK2s|MW~c?3b#3F{PPmog-!oqcts;B)7o{dGIo__cUE1Jg)jv%e0e^1g_)UC=5=JlZ}#**e;)s6kC!#}!xdiJUWj1PGg5-u%&EnT)>&HTp~E~#8V z%8gBgeL`AeY=zby{qHI|Mhi{iSr|PBqf5Iz!Hef3KpYD-^_Zt+lxDeUAr$b64emzK zquOMJhY|7giIFTg;iJ@9*{Rv;;$tVEhIfFDN!;N` znFlSt)M)Xu>^Ujj@5I#*{0i`8>D7?lmH4aFyvOr=Ausx3WW_L^rBZYS*Kg*AP%&bu z>_lFYzDe==-;#IVpm=v6{a8nfG^~?;9SzF|?>PMqU&jbKu;($z(R(Agvdcj|c1c=6 zR@Q3c>=W(Z1i%gYfH@WVZF$J6RUUvIHrw;e@3(qY^zz5FIn6oOdnPJqO z;rVNKY-@?vB;`daBj4Kpt8BvJQO!aNXw5M;g*h-B@St< zB8^ONVO#@BMy!llLmG~(lU0$QNY7v z%u{&_c176O5lx=7BkpF>YdfMBmu^S=4RC2kTt-^DERqM({uVGdEx2&$E=s>QXb8Bp zB39FLjb2FW;0R!}A`&LXZNO|)x zv=}vJKglFRC)&j4y%KfS>wCF64)ZdU!g%}k&8-Ve9&72iL>ue_d_q!>^tC;>ey5^2+AuP21JK4@tFq9l#$4e)Npbh`)T5!zaQg`dwH0tr3TXXA;`9#n)GAlje0Xl(MsieeVT}N7LrKV}GPvSYr zq|~z8OMGcnl;$(fpB}F^dgY(&k84B6!|+k766OuRl+CXwl=4Ebri~jp)8g$}Hzi)T zAIGNZh3om#%kg=8aN5!;9boQn(T}WQ;!Eq9NW>-rOYe466f|wmCn4b ztI|c2Er}iC4f-Af^O~-St7&e4r9!1MFX&2KbDPw#c`aArbI}6+U{GOCGq2=IoG!PK z(Ppomc_~+L@Lnneyu9mX>dw59>&4SQ&YSMyG-{%>9wFtBd+AZa3o#VQKpwbDaThc@#W#o~ci7m>zZa z(;bSOCp$fG5^+I^Esn^I`DpJT0BSu<*x|qpI@ofpy^h=+%9jj}0Nnfv*#E$~Tao%3 z#YnLW`+39ueIIXmI4=ad@WelWwyYmDom9mxefj8Rm^V+Yqq#1}xL^TkZ;<+6`Eahz zy`ASzz?qCYDa7_LOwB{>TRh4to4nWQuG$@T6E`H~gFL1VKOShCM?= zJ>4MHm*|%?)X+E6Cm30a+@E{`@XasC9unUHuQSVBFN4j5q!!1naM!>)G&XP`a?(!n zgYsO>09lS5*Uq)R%-I1S9NM#$1~;o%^kU659TF+&a{O`aMnj(9gSRBi=$`0YQ1MePt{m<>U3^TrltWjb>_JkmXH-lE?A&Y@+=#n_C@M%-Ef zJBNF_l4y1uKgJ#iZVK(`4i4{x`(DZfp=+nkq2$O=C+;~*iQiTsboO!kEVfmrMh7** zqVF{e9(aWxX}f}y;#DmK$jZ5@4meg}s_LpxzAB=*B>=3lN`rC9NU}+N%UlGRJq44{ zsjvVp?j0H)N#Y6`xpX!uW-=2ujJpo{yHg?|!x_(=SGW&nv~NVEQLTj=bpoeYJsLY< z*R>_%H=;;XaA8)m5$5l`U?@YjqEr_kfxU+}{tJoR%%O7_X za~Iah5*GW1b2h$>{iCE5@_y_=ht`Cgz&Sb~W<_GHT>N62q=X6)@R8)YFsfALus0rJaLDnEY#qA1TET)}pBrS8^Zh>>c_c`V$1( z@JLXxU`y5%x&Pg#jo`MJIwJVrym`qcC@s>FQ~Fm`heTCvhoy$@W9;V1cCUwh$8Nt6 zGXSQHf5rf+BrD!51FCGZs)B-=>hC^Fso{xE6&^>jSrzhIG#h9# z{5G1*#Te5Dhu;b(FeNiwd894}9yOxfEjm|{&T_!vQMwG@jJt|>$mt6F<&Ue*ad?s& zxvwQY(qEI3{yLMMyW&CTYJ~asdg6m7^VVe(IyY)Kc`!T?pW&Ms2k+TU_{*R1ta))M z-ZS9b0$irQm1(tRNFGNsrH2N1yP<8JN#d(?cG-jv;Qqzn>eafTY3e}XWjS{lJY5HO zB21p{#$UFD-KO^dCiP+Q`ZwZfPoY~@Hpg|r~UvhWvVog|0aP(E)02-a@Ef0s`+ZZ-_>c8ov#?>r* zw$2@>i|!s>8?fB4e*Ws!kJ$8xcOPKVK0G{)HY4l-NeipN0N+%}b{<4{Y3FZ}Y!_KA zkDZa7Gi?KBYTzNnn4ez%{JS^6_pCeryRH%ZD)ySy0Zd!GC|4E%D_I>(RjY&ZU@aLK z*$HwQ>-_!+)3TgR0*|b0?D}nmSgH;6zyjBuvKW-5n~H&P&0Yj)^P5Nu%r4wL4mlBc zEIrR;M}N0$DD6)6_V@R|8i{>r^wc{Y<3@Ql3({^?w4caG8}~bO?c4*}n51aNbSY%UqTdwEsW)wfjFMXT!;W<>X`3en2Yu&y%u8TGf(5}!g%*%}tZ&*Go&G_LGerB?7J zbRb91=Gkx_x;1I;InZ%@i6~V=$TV|vmRIoMkxnQIYCcyp{nOyW=n2Go24PP>P`i0_TdHs&YK2TYr8HTj6nC6 z0j)*<9k@*Y7XF%kE`1wm-vKNm--u)WtejN;WI1y+XxsASdW3Cx!u;vyOeWl^M^-WpPafQ!$F zn)9pU;_x2mZ0C)P@twnT)Fl@W4J?&eMrrSF6SqxVc}caRGLkrDR{riLTG9I7MSjNX z5k|X^-}fxo%xx84A6c*&GZgG&3pR76D(j~fY{oVU#-3;Ln4$Bq@n!;#E0?beo1G-L!JI`Z$I`! zxG!6<|KLT2#$|(e##82*yPceAh0aESEKoB)-0v&%%n#J?G_q&R>KnT3;H$o3jW@}1 zx6|n%ExE>pWQMDC$2v$uuf{>3Y1Ss|kq&8MoiG{SjGIC{V62P3{4qcBq4HC- zPDhw&rlzFXz@*V@nDr6n`eQ@K4S5{Rlpda%%?#}fUL{jD;RCpv8{8DHk{>V22^u_I2R}uaJcaO=bs*AP zx8rocq&_TO3y7CmR^(p@IDf{g#C+57vYcXr2O2E5*QQo|xn8Ag!B+Mie%oH9NeJ8X z3fE&l!ggDG&6W$C)HU1MfMxP3<+*S#1!% zlhM)N&~q_jZyQ+XLiNhk-bL^|N>ciD&k3w)9d7E7*7=w0fSeHY{*>>fFa1EBRlGxQ z=B(+hZf|vug_v!g-oX$B`Cb=H%5CujWUQ?IPydDSN z?TD^#)BE?b#E@R9_J{4c#+o2Kg!g>ds$1*_ZH4{`YENsKSb&sYli#*qGu1vzALOPf ze$8^E@w}9Z&b`6Re$5DQmA}(V@lE}jTY`ptT5cPL{eI1VO&fqd5w{)6o9erad3E6W zF6#kH^uI2iFnt~D!8@$!!8l{O#`^b9ytVS*b?dynU|!?v`2WfBrzIeFQF{`Q{trsP zU#^jWYb4-5_uk%rR|&Yr|6#0sRsNfh$3HXl1NuL-6g;ero&1H{SSa z7y%#F?OBV{^Tice>b9sPOQtX1cJH{#9Oc#N*sCkKdl-f7{E8plL%2y>7BZp23! zn72)5nTC@G!xQlt{w?Eh&S7`_<0WQ=3FVpI?3*>P$Q+k{o_`RW> z;hcjhoA3eLJq&KjIR`&pma~_^(>(2oFnL;zzibQErD=OA7CRfcB06++A-vt>YLu%-nY+LfH0A=Z!sydxdyg>%oXIzs&x#?_0k6JXzmS%TyavC_mQBA;=Q9TAvO#jDe(yVv4J%Y%H3xMzL_(y zaPf$jc5|nzjZB)fEM3rjb*mOUd9OA{oZSde&u&p`!5d0=={0be)zWkLwvhVG8rR`UU0G_*gD7`S0KuZeSbv$Xg&)=Uhb8rqEdj! z9ch1+0~tGpIJ8_5Q_Bd5Bu-mY@_N!y0w{O^4m=3E-NyqX{ z&61nld4nG3#BA$s$D`dInC<*Yf7|aY8+`sX^NyD$$2r!d(Q{cThR~_-OB0uO5qh`* z=XisQILkfZLn6iX8w(h|2DU5^ea5DZ1Ej^!lan@Xj zc{&S7rvjIMPh;9te8Am164T;R@d&l{9kJ$4E?jAyD41`xNs+uG8Dy$2S8} zUdr|JQKnpHkn@Q^%?p7SSY@3eZ`-Zp9m%lDkMwctZW?`PP9FVQ^#bBWk}t|(o}^s$ z6Nm;AMTEqlR*fDfv+3Mb)lqy0dDqabrT7j~PoQxr_z)VEstlJ&xd&Z_dw%21VL8rj zGFPfe3_PH10+4u@TXiKbb-VfabCo=+RX#tFy6PL`%q_}%Y*j@UkiR3 zJUsMu%}JqsW2c8M4xJggHS|E}<$-Rgn- zqqf?o;O?p;3jSPhYQe1rHUxRPai{hXtP$EHB)r@DGJY6`o#re&G{^ z7Z&bQbW!2KMHd$yQFL$N(M69Geo**H;T}a_6<%IeCdm&Zkb+`aYLGd`Jd&Wz<{e6bjvV(s9W!Xpb_MQ2`*89yI+veJtXU@8Q=3ZOhF!S}F-!=21S$EI8an>EP zjw}DmtUt}WbJkZsdwABV<&Vs|r2MeRA0sD5E{a?bxh8T|%So$epo|BUi^hi9A*N zY2@#9pG7XI`#kb??2E{ku`eSh$Nmx7FaA~J(b}&g&(yAn91$O@SW&ls#gP?RX$nuMdcr3Usmold*9g?%sq7WQM0d^ zefFH|W>Ue;^sMHTii0|?K!v3 zd2r5Ma~_)i(42SYK0N2##5;42uKr@q!-<2oICuUTTO6|B+AZ#%d*R$`=3X@Sin$-p z{o|IO&V6{B8@9Y@%jdRyY5wzDzB2#aEkEA!nys$e>Zz?BO}w(z0Y5wYXSe!0m0 z@8fx2&iiEE=kq?D_rm;Retz-K-}w1kKi_AYKWuZNl(3tv;gWsG1jR-mLk1 z&AT=4)qGgNV-;aMCKd2POd#NaYOCd^&iw;SAS^TAL@>-d%FJkx|8b8 ztUIUf%DQXnUZ{Jp{*}5n>OQG^x&G6-=jsoyzqS7Q`p4^Es6RUKPW@F24on=9I5ctL zf|C=cCeBM-ka#NbLSnD^`^-OY{sr^zng7WAzs-Ma{=M^`n1A2=r{>>3|C#v@%ztkF z>+|27fAoTL7M#D}iUpT0xOTzVUb)c1)}OjTFqA(%QWYKCWn^@(+{1H^$UQRmbbRQ9(21dwLMMk#37r}`Ep&S549K&yL+6Ih3!NXjAao(*+a;k( zLzjgv4_zI)F?17T-R+?}LVpR}6}mfgPw3vzeWCjy{T_t$dpPt+2y!p%k*2P-!}cu>32=Pd-`9e|84rc(?6L0(ezKJe?5K0^gRmpEZD1H z?}B{__ANND;Glwo3l1qbwBWFU!wZfmII`f_f)gOCPl2>Pt>D~(3q)pLR&YhZRRvcU zTw8Dhq3DlAM;HC6=$NA8ijFTjq3Fb-lZyUabaK%tMW+^>R&-|3xkcv}U08Gx zW}ZumuEFec8|I%oWCpss=&wch6x~~Nf6+rlPZd31^kUIVMK2eqT!Ay;<~j z(Yu(jJ}COM=(D2Fi@quvE8eSkpW=Os_bcAN_<-VriVrD1toVrHKNKHbd`$6i#eXh7 zwfMB+(~Hk2KC}3&;|L@?$^In=lpI)cP|3k1hm;&za#+dX zm{X4|Ikx0@%&e!CoKbRS$yp_5mz;xH_WY6yOD-+Bs^prI8%k~}xwYi>lDkXpExEts z!IDQy9xHjgB*(1mYz|1X6ad_XO~`3dP(W!rB{|- zReE*lHKo^;-cWjD=}nm9Zz;X2^d6b%A1r;S^pVoXN*^zMvh*3u`7dDBe;xDw+nD*^ zEB&DKMczZ4x{@9;k11H%W04+$R@{zLev@SnoRgii>c7(O|CYWVc<8R4_T=Y`J? zUl6`9d{Ow4@TK9)!&io{4qpqc;fC-{;hV#^gl`Ss9sX72&;R>^oz>83)cdY{s!Oj+=4(j1y*@Hsh=rXG0q~Z^rpEo|*CDjJIdJ zGvmD(@6Y&P#)r^SzMS#ZjIU>`fUdH4**<0ammN@caM{siXOx{?c23!OWfzuRR(5&W zm1S3zU0rr<+4W^NmfZrK=C5VM#jUT8EAl|54SXxWoxPnSJg_F~zqWv`XJS@vPs z$Iy1ZDEqQ(McJM+_nEox%>8B_F!R8f=ghot<~1{~oq65N>u26D^Uj%f&AfZ&UuXVp z=DpB?&YE@3taE3bH|zXa7tOk2)>X5vo^{=<8)w}#>*iUv&AJ^L(O+iWIqRNT_sx1> z)xo%=l${#9!xct%bC(55Kf3Ez6@)yfrDu1Q?wemO0-ztBn{G;+u z%0D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 h?kHS|xE1Pz6AY_`!*?L|8};v5xm zj*K`*7!7USTx)0xd9;*AD?F@u5p@JwcMY!+`NnsZ2!OUmdc8F#qqWxDh&mF)?rc>L zoLhj%eleovkV!33bu`@+Wr>#}YOW?$N9ji?Vo+)umWt<=c;c~@JhpLTx5d+XIcugV z+-2!HkfSTcrV}aMt;;vTWaaMM(t3roW=gq`Ft&3mY>TJ;24l8INZ8Q5>kEwAfvJla z+A&Y+&P;uiskEhd3Z+Ar^cq0DHbkT<{-%N3L8d^$3G)m^3P<05LAsrtW}s=Kjjh_QuMo%dLEcc~iT zP+WuEGa~AJ)TtfH8@NhduFaZ$1c~N$$-#TB<+McN!bZ9kk$`i_Wc3f= z_6n~=9W6W1KH#GH13w#^=OI0yg>Jl`BC2I{T<<%|v4$T@59xa0CUT?;g#2uUOM1LX7$LBQ~2c4?xIyTuenxFd%vJGN8H4^D;iCG#7vr(x_-% z2U9&|(wZ`99sNffOoxgbeur}|vD-aOlLSsqTIZ9$=J z5%np~W-PeT$ux_qosGskOtah}N~N)&NfHmP?$8p0K1nCD8$8SCWOksx)a_(;jRrdz zH*27i+11npL4qmiWOgANyZG7I4E+ZiXFBSCz{Uc8Kw>=E*iqOhafqXSmBqJ1df&LEr1noi}Q&!SYu3hNJ?)v%1mgUR7V-(-wpcianIj?yiiw`;C zyO5*HtZg^3Zb*7e8Fh0qzJP&`FqSkp*jEqdKTFGfPe(=?{p7TtC+pn6C#RFUQRcfz zA0%|>gBFDPPWv`Hp$$qLwL98i3_mvnA@*~2k~YY_YCi|Kn-Og=ri?v&(^u{1X5R^I zFo|t2Nw+~0SMBHK70gmKnqU*I+RrH~GZgp>wRR53pNFX=ndFUKwJ#hAMV`C&vI}Uc z@4;33d$7s(i0Zo^B`cbIOj)?z1CyOATk5fWG)y}-uJ>e)?bF!u4@aGcbmN2OD$uye zWQWVvugWDfqW9P3c(cE{Ts_R4=(wM-R2je(+0Emx1|M`@xR(O-}3YAj-ID|TxY>Ex4>}UCiZTd)>FQ48^ET9$>=?84kK6IX%_gEKBgq|z)uORox79E#heg_ax%p_G^Ca2;+!Ek5e|#O2>9o;7G^gA4~suHC+1o1rB?8sY%x z*+!rDA?oKd0#?rS1*5+~zqhCwU@iF;AhA}le6Ly(Qkja-&1=vD3 zEL#hOtrw%J+OYL9*;){F<{O4yB|{zmFeCwnR=5gw6!}?T6im%GA?Yxa1pS(TMmQ|! zw*>U7QMI=L{USjxj5@DGotLA|O9uK9P#SG3Er_}F0S;a?P12VvEc7+RD~1X6GGeE4 zf{)45OPR3SBt6L8yR50OVX3ar=p9nR^7?`B`c_n>46m<}*EgfiqNwvm)OkJXyk^*4 z0pg+MEn_ZifX`PApS9%kO;7a}`8a;Vvc{(rd7h^|A8X(I)=2v}DI(YLWKT!O@33 zW_Ms@>`0!M8lJgH=k{_q89385tMk7vu@PScJaxC1=PrUcMPh>@V>jRAPUz zxk~&Sgh6E!s{G2P-h(3fcjNw!OvyfMo<7n%k~_P3HpAHnUHD6y=ffzz%olY&FrDTG zMyn5iB(od0U(Aiba==`F(k{_YYkNT}-P0H1;pNJB>9`v=kLhDC>ALd$WBO4S%iWE; zv)PTiE@wCHy7IahV65Z#vrg~EU8i^BdhuH6OQCjd>6#dQD0C0q-y(E>XT$KQHwA&+ zxc%AhG`1Ue1?17#ZruHtF=scfiA7WAbwuaejcXtv&lKIwWp!P_-MB%HVf#OpTieAV z2qL+qm&h_cO|(&?o4=4oI|lb<$rb?4&Rz0&_MF?f zw*g^t0Bv|c>>qinvW2z-dH-oQ64j;eNG zs%|kiIl}=%GQx4ISy^I`?tXSehTyl2rPyFT-g)#rof-dz|1!8+Y9|zcx95k(Y!q1k zH??YHWr@Rd)jPB5!MpJ7KtaQe*wlp%XISwOvAkvEAb`0I1yb0B zm|EJ0#q|D_Lpewfr1%Gh7yoW38U_b1&yf(nb`onB#b-u)b|+UY+)G9-LJ_VmGk|*(kCR&U6!-r!-}P8V;Xh4QlPM_%iBzVSsl4 z4Jz$O(&X_mdvMJ9!t>#+Ev~bVkEt(U0c(q)0#nQJB`^G#T3(tMLad#T%}ow+FBN8U zF9mgPLt&6rYMN7@%dpeHQc1D_Z@ZncjAyts`dJEpAp+-o$X;&Kwbpe4@ z>~C5j%w}$NlTCXvaaR&|k&SRz)ZGO&98ISg)VgWcM4fL8@I66;N+Tpqo)NRpj9K3V zn)ZyC`o`b1Yuu(ii&&$`<|YTZmkP7Fmx7vZ+B0LeE;^Pe+TXONv)VY)bkpKjSRp0I zdA$X%)_F!q+Uxb5kx(^(e8+av=65~;@I!oPBZR|Nzpqpe|I`JhdhN{mA?mD)I%^Gx z8jxvMk5C2H+d)^)I<(K#rE0By__mAvpc`=zjZ_H@!XBXxyKC+X$zd;42o4br%V9s1 z1OdZMb&=sv`?G$DIzLC9pQ6rs!{om}iK_RLM}M79{lW>7`boH2@8haN^`#h9q8uXX zte%}@tT-2AMY>LJroA-An^RC;EeZmQ9Y_qnc?x<35ga545Dtsr zP(c8f)|CcseM917|_w6Pv}p`5)Q8a>W5E9v8sl8LKmT< ze~}^mo=d0^>t)elS6ixc_JXyDIn85EvzSv9a|&bbJq5>s z7_}cSkHI>tY7wKt7R5B)Lj4dHJ5&#AQelS~g&l%|f(o0bG_90UykB8;?K-VFs@4N? zKw(cn*)BLy*sCeO6A=rAML4YdPS!%OTE*0GBfpQ_RR`)hg|$n985?rmk%Jp}d;sp9 z^5h7DJ5|6T92VRe0tc9^(Cr4n(jA@^>)fKZaf>0e&5UpDn-<4h0;Y=MFJ-3&g1%mY>r8 zM`{)1;!fflTP3NH)JDo0TO@Cb1$QsGS^Zs_eVeICdOC1}y9RIN4EffOY(OAai~R44 zsdn*ky|1<*z3Xgnb8pPK$Jo?0pcz{Hz9B&`a~yna=Boh|RgujAbL-q^Kr8K1f* zW?qErtrDeiR5eUwk8mj2qonHu^n)?g-hduX(4%6`12N}*gZp~oZvK&>3gDh-Lqmqy zB@Gh^d=xb2HuiGZ2k`*H!)%0y+3NmGm|8Tt!*X)7a55&QIv7rFBqyU| z&ciY1A;ZZ?an9=Eb?)e@PTkxKJF1dCd5={!^cRr$9TiR zz2so$uS|M?gOTCZjYr5$hzMfF~lnj;4UK3!?HBg#M5~M>s6>F#>&ZOm#8PwTK@#xE~?z z(r-9OB!w`>KPdUtLX@v zZ3ELXVe0nPrO5~xn#uAD8x$W=^ZFJkVcDC70x?r~E~cV}z5kHCXJd|vIWuF0fwev%D~-KQ^?OOqhRX!j5Q-Uxfek%5YPyR1-(!}&yT4p z1Nt6fG#+*4Z=LG}(4Nw|w>s}mp=>r_xV|vef$ih4b+$@pidhE7r^p#594FfEz(G3HBpw^CYECc)- z20o=ExM3g_N1anPZo`0&HtVgMw_#uv%C(jm`J(92Hctplu-y{^6QC2Q6Eg*O!@y_A z;B6TA96yph;%Mw1as94cn83^2(RS#@Urm2|qymijvSr zyc<*f<7^zX(|Gg|d5$GE%cDlRsr9>d$vucgq_d1q6Xki=o;xu33u&}taNo86M&K@J z)=;e9Xfu>~ADpPu7VQ z^w{4BAL9l#^_jk)pcqCiX&JD5YrhocFq8LK=6P#BfacK1Tl>Obf%@a!`t~lbz&y8i z9jNUq|Lt8xC@^^dWpaRD88@#-Y=Od{jBueH1bJkmuKIT>Qa&Mk2hm+o;MJ0-E*`OcBoE0(W z1H;3XAVa-d$zy9gtoC>V+k04PLBnjaB)PL$`Vft7+;1xo9)?~T|I`PWu%1PhCI^zO zZBQ=QLO3j2+oL433mj{M3|rd$_DRfH8FM~1Y?TNtF1oKkJ7~9aSJ|GuT=O{eST7*#Z^ex*qN)4KK49Y)rXVI9Z_5Iu(+*%?1Ud~ z72=dRgd{s7R=;$`udt%njm*_s@XZ|&5XI*)=d+lz%7|ijkfG*1NS!a`GN>-CqOscIkKaRh1+XpxO@SeO+8 z6Ar%P4NUEz`a0&UHb}dG29;KlG&v-0pAffJd(DL}f7nCfYBkzv9k+=LvkTPMZlj$@ ztPZld$w79d!fbY>AYNd{OMue)131YO;*c;y%=6q+6R)YqW zCP|t+EpDG4x4sKB-f405oxkzEcN^~vV%;0r+~gp;Qeif`QczaoogTM!Sv@jk`5W(4 z){{b-Zan-7+ju?6YQ6PCOr2$yZ+Y|~Mc~s)QWUdr zR^Z-Ghe9yMtS{zly^w1HYaRCln(LvhbD0bmxUQ*;H(NDq*Z_f^8%L0v%(X?IO#$>p zjZg}N!?M30N&@@v%U%#*|3|}qe=-N@_><+GgZ9?`XnZl^t-X-wY6Ts_VbKi`ba234 zWYB4E?JqIs=a}=8!FUkJv@cVr0uH61FY{-p>(!;|C;jm4Irs$;?kfl-G-wNtP={U5 z=EdajVBrwqupAyD9KsKKiQ!N?Z2uc`{)joh$DH2`lZS#5RUamg!*xFOU%Cv`@50q@ zKCU`cUmkC2U(DrkcVEmAEGT(p+`cMq{iaQw$GNXAwf^wgJ&to<8CO!iTU%+Ofs!~9 z+0`Ffdejn+3D}TNOC%?b>o%0?EsXkXt8~^^#cf^CQ7lO4#7}-Hi$5B%+S2hWtf-G8 zr}b7rTwQHMJ%tm>4Ke30Bjn>jgK7ukVO<-v`5}^Y0+RyYh?CN?js03NcJ-I()2(5g z`g?aPlD@E1ZJ_-i2|wEwl;b0*_^EB34(V$sf)i08Y#rgS0yr5ZK>%=(4-W{SDDD)- z-OVhgkUfaVPvP^O7sY`~@5d=*ucQZEy&-M{p`I#G5e^IWY=H`2_;m)V_MNwiJ1yf* zi@4L=06rI#+LyPnbqHEYp_=({PO6V3^iU^sVB~mT{*|+}R@Tv^IQS3S!iLnLIAnS=Cl?b_ZK% z4pnRY@H5(>`lcp3g_}&La0QD?j*Q#4#I4p^H+ikYFx%Qv|6mV+YfbCyk#V;cx6abU ztrW?X$gZ|T^=pf%OCC2cH=i!G@uVzBgER89?D4%NZtEhiVv#~8v$z{sQ3GOi_kdra zqz|*$Ev{~d*tOf{DfSDuX;IUiBk`V}6HXnuv1UBx;kX;II%Hz1Kq)O{~dldHt#LPv#qs}kB+O!;AS43P;Zf&hvUve!qEHN+3TG{ zT!)j5bM42<>3L#2&g|fFFUdQI1@J{h@Mw>Em<;O~%#d#Pk864U>`qUxZ=0#VQxW_G zhI$BU;JysyRYACwpLgR2GBxTUBz3bOt@iJA#`%d6kCkKN)24BPisT4l@D#~WEUb|C zntX;LTr?n{e?6pW+;~aDA^p!I7*KA^;5bu(Xd{g%U ziq>~|9f^|lU0#bj<{nih!bb1%@`JU~RaqwWA*7L9Sp|8otkUoJgd8TdIFw0gQLhwH z_p4H$7*W5U-=vx~$%5n-d1tX82DLHr^%v5pd|iY3gi`sGQu(wh%bC7;O80|E;@~Q^ z3X)hwrTg5K1XOZ8QmsK%ve*7A7?Mkcw)(=x_<{fWl+{m!^%-G(W(q<>tqR{zzY4ti zD)o6Dc)t06| zHxWo)t0+)IV0o`qlqObJ@!ew^65zQdo-Q4=r5FwboH-X-iNI$;DsYkU>lNAsZ;qaC zg?!fi!TR9`A5l@#u+sxXC`<8CnHB;_sc>1T>}{OUxnX;ZI*Auk2f2 z%*Zw@0{1=tpw+b$nZaLsJaD@6$0{4q_3Gp*v{quhrYJ)avosupKu-({I)7kj(%nP{ z7SS^KQimR~T<5`QC@A`;{kOmn8>7mUgD_kuB$8z~qKH&-y7DVQyiEfTh{ zSng-B`0rS3)hLUt8)wmE`g;})=Dc?n;bp62RCd5xVQ!Q!t)UrM5H}Zzsmn4aNvDf(0)bEC|LD4t=LrVZExmJ`Z1% z__iXxt-|BmOYogprM3Y+J*eH287r!g>L#!c;DGKQzx8G6+a}Pi2@nDh!ePgX9s=l` zDz%*vm>w(6u5!*YGE0$0on^)b+^(~|?l1O1Jlor!Gt=JcZ1(UtmfjuLPqyuDfoG2p zJj(~dcjjQN#DN|hR`@XeqOAUMd=OAE?V&lTF~c~pDa z2A0ya4TQtm#=!#XqAFFE2Ufic%S#Kw(rrs@g>AGAXn-9EaG(H0I4rVHYEJ;t%S7EnU1n_d zG-8r8g9)p@%h+Rix|cPLKOI>(_<1D;2fs{VvXtah-WvwbK;C481|JE}+}Xn1l~rml z!<_Drt}x7$%+|wnlG<<)2muJ;u-b5`0J^$L?QH}$isMy-5!huQuu=&(*}#(Jm|6E>9(_H6XBhC*0%= zaB8RFY#3;O>RLQ<=yD>MQCo<*CJ*Z}`7i|!XNkQ%-g}Yv5r_lt2#4kU29yNeM^vf( z4DX}as>7?CYYqE1g2t*%xD@%>|2Jp=>?S;N=yD=5><=gVTWe9YQP+C1P&!_sS)Zsx zP%byKs#;Gj{VA7`h=W`Z4l9@2P!i;FeU&=M$mJ2rT_@AE%lz z)4q40pya{qH4Y9B`#%EvhAMRkVC%{KxJ<8cH!({BF_)m%Si)Xov9H%SlybZWgaCwa zSUKJ=fc{;j4l{Cmlybb$$ngOXSVtt>WCJVMYm6dp$)6!mH&UWTiVu?H2u~XhCl?PP z4qPA{mWwec3EFT|l{zwySRY~Cl0bOeMU^AgqX=lM075t{pz#7|WR*HPAl93WSSNtM zIyT`Z8(2ZHP9$#0pCM2;`^7qmB*%JUJ%(I7hB$~7;jmmxK}itnEmi7xBi4yjj^h%p zi*+gptO?!KaS43Ag1g>l;B#7dFKU%E%)mt#ZZ?AN2%*1Qfm0O=EcmK$`$hK={hqL_ z=_W5+A&V@!*gnO#)%9DS!MrKsC{i`Ab1Q%od0OY>U^4lHFo|$jCZ`FLw^gYVOjAuF zlebnmLkyqOg-`3GgoiVWQ^{*MUFzo)O!_lsF-X4ki_96UAOyP$G2m_9`<0f1VN6^zE#Z*+?t( zIl>=tbt1zh4L{-?B4t{nXRFqX0NEEH(>nKse$&Vtx=CiC$orA$l!UdYin$Bp_{T1d zY)T48kUo0WGn9!y+0a=f zmfgrAaGX4gQ=YTJi}-C3FpI+Jr- zXs3T|XJ$Ohg84X^3*;+7KL0et_4LH=Tr6|vaie}Gb^@GQ}(OK6S^~xCv;~rwnfNNrof<}dCSyUAq2E`gTaJSKlJdj1q4l1E zulS?6eIdNwC^ECB-~zI}nu$d=!kH0a^LDFzi;^(PK2W8uHr>@Uj0l|Yx-nu3+|p+) z%idD-9dcU>-0dP&l(>|F=ABW&-7GU?>h(S7lGm_@y~YoDlMgrQZ4f^QyiU>#viD4V|FO-Ca9aE*Q%V}7NX{uoh ziqK%!v%#)UxCLPQ(YOBXN1NAp%}_94JyNA^$c6=ZG)JnNKy)&gp_`lr+4Dce+#*QR z9DVsu`dko5dR;(@mO%>Hg`v4MgHEd;g$#0}XedOAp(+ki$&f~>mWHBrkU|EpKuuc& zDRM_1;B6D6kr@}b_IgOrYzZ1Vsy(R%9M!r?uOHbeSe{4`ldEZ+Z^|=uYi_1)(>l8} z=ys=d)GY|0GTzEmm-W)_cn{sdndz5BOwmq}YTe%m@<618W1 zCmE`}A#Z20IFc-mOt`c#kM}AT>*4hT}|5a{N_=nx<#Y5srSe9E*J2O1^GQxCMc)m43c9&+NMjUl>ep z17G^x4F=PG&TP|xcO!vyN5V}fe6a)H93XjT!oDj(qC1+HDBPJzmWjfD*wc1L`Mzx4 zsQ+~Zrwh2Kl!I5M*sSToZF&IKJ(pmQ=Tr!GHx)_MfwE^qC1hm)8bo=aOL^JFg;n4|69GJFrFap@a>p zdUc;$J6|z3jS9f7TQjUxrvE9{+sb}8p>MT*D1kk9 z4h{`{L%cmo?dxd(<{%*Sx_^BZeHl)JiVZvrx(;-yzUuF(Pz4)Yhv^y=s2;Ueh>5g zQ>g8tSy?Kh%M>p4c%sWP{rkKMcM(nKx>WZ1BIG`lMcyKPqUlSCG=qsiA2Ji1%`=hx zP!>i8ERe?;6Tt%6xX1bm_ly%yAHur!ObCM4WkS)vhElamtmV+j&X z)cPy2_N0WG;M3>Q#N*WX{fS~?CMkDOne8o^S25X;>ymX7PIiTjX?13|TV3+8gsp2i z0JY>m_Srmp_5+2(gEWUz{2be25gDR5IJN+^SK6xHjDQPH!Po4~# z58f}$dw6CB^kohGerqby_`h_M4$1iIhNSKpQFs5OX$-vLWk*3;B?Gp z^i^ns6;WvXQ8;8ZX}bZ1tp^lM#G@q-S#2_J%-Qg`94Hyx6Xzs*x-ZHm^B4&> zFg)CoE`WPS^v2c<+1|K2*wTtq(6c}vm(+gDDWG?Wffy$z#`HwVQxOZ`2!|LeG{&b; z5}IKwFg{{1PD30w8a!e!VxxgzZ0}**S}+P=^e^5LYdQf-P67NV0nZS?2!{ncQvi<# z;Bf}9asiKP0&sUf;8GvpXOUS+P60fDfS*GwB#dxaz_U>jBs>X#CmO&nAdV8A*aYB! zgmEI-lkgm5c5@2g#|U^XVgVT8uz+7gNdP<#19*`OcxvN-=fDp{p^6T>KQ!Ps30QIp;3ohsF0fN&>#;f$uqk?+X{-bB*G|O2@_bCGiQN;G0E!UkN^h!{Yl!@Vx+h zvkksAF231~;w$y=eM@{oDEQ_O-*M0{C?TZYh8f4hy)o0A2*ZZy3N^xPaei9B^RBX@F2Y3GFz6;2jAVljp?-aL(j8)1~i3d_pMr-X*@B1s}p;@%@kBTLyef4Zhu6d`la}m+8`X zCq5w*eD4w89)b_yu=sd{77hMB@GUp^%3OTQ8^xFD(mN2J5DLBzh_9pILpUtH&Vuhl z;9FtvmAm*>G>R|NrQ5_Ogo5uQ;;RsR2#3Yz2)>oT_p!m()y4O5qxdpidN<+|Lc#Y5 z@pTt`2#3WN6@06J?^A;>=HmObQGA&$Jx+W=DEK}jzP$t=!Y;m|33=AQ$Fwcpt$SI^ zE&3L=Y13?*Z5vAQ@$rJKPj8#py;t9@TNV};;@;eC2I#B}M__RXJ-nty&8Wc_jk)A~ zsY?MaQ>k%R#7BYvH6JC9qw%n2k$6P!@4CPZ_I(!)kjF53b`7WM-b=`18TV?9wX_C4 zg0)?^XLNWa-7ssrlr*&15$w%EAtNf`Ul~!Ewq6TR{@KO#Cj5yBYx*c=(mVZ*N1^rB z>!d|_8%V{A0ydB;v8;yf@4+O&a|r8yuLhfq^$Ma|?)Mp4aZ|4776>nWwmXwQj!(6*Tnx9H8rD0+j#L$1c%3w)sx7wb=5!2 z=!1sQJq)7_93b_{t)8Wc_qDW#vT8s$8PDVgHTH@c$Xp9$TS%tP{-8$9=B`UEp>~N6 zMMuSM$G>AMnHLBo9*nuaS;+e3iubL3z! z`2_f>f!U-04V4k#DlNdX^9b-<3b5E-4{7imUV}G8d_MZjS{)?d6e?hfBA6Y5% z3s_5z+J9+q|6hyu|6c74tG-tI%5dLgs~IZOYO8gtT}XLmsr^NW8`#=jU4xr7KCiLA zKF>J%CBqO*#V{)BPwMVzmCSs+Yy!6$B+NXrzx&0kj2}HR%9bC z#MF(msfL%E!7%Hs1-sca}8jAZD4*)m{8uY zjWioo-fxIb$V7hj3VQ>jd4;K)2qY`+?}7iR+CJ8`Z=giB8BwcE1qadO?S< zi>_$=<}ag|wc$8H`CMqU2$q?CmB|xOKpeJ=61y# za&FhO6$@l}9$EAOsvgL}W!0pvdRcWcO0T!Nk`@IkQgK;TO{zq)52q=okOa?D@zjfs z(}-w~K9-elUjCf33G;FSo=3p*x^fntJ1?JP=H(UaIB|t|dy46F4cb3*0-Vg$xkn#& z;n3t9!cdtxL`pMz26>YfXlAC)XCe;Mhkg3kLUR^=s}ew8<5(xTv-3U>m;oU;F<0ED z&%joIdp7fL;-n*t7&ms(v3DPUI|twf+k5xXlaBL?98ThV`nz1TS>z-NXMHaD^@j~RZZ`fwr&YznTjmBGn=aA$=td# zi)$utAT0`hoK)=09w$}eE)8xk7hDydz?dMOyZc%<$1tb+t-PS&GHi#!acY7#-iGjE z!jWtgKdo~~gN^CZ{XB+yUtjc5I3oc5rgcu^0CFG}!pVQu8V8D-Aq!4t!!lkk*Oyp> zjU?F6UGv^#&w8M*HKN+83an(ls645NjcwFbuRqA97szscWi|EJ=!vl(sP`Y1yk<=M zhuH$Zbi;YvUCBm4!&vQLVNyYa{{vJUC4T9aPK?$i??W+z&3##esCc0nEqWp@`4ELr zgV4aO5a`9gmdP=FZDeP@-pn^Ts_ur4|Jsd4Q10q#l=}A^FmHEuLBsDp%xO+xqt~|I zZofhJm#!YGf%Nez>&rT}w#W7zxYfWd?J<1^wn;wN*M6w)z%2&0Zfd>TEubZfLu$!K z&=PH#$LO_DBkSGP$@?jvetT_*>a`^&QyK`d`K*L(e6B(dypN(;wCA zwRj6)sU?=?_Qid1kWI`0BhCZelIIh39TSUegfqSN=8ZJB^i_}cW#DItVGp;Z2j_do6j5Gtl zJw}?T7-=S(k>)_eK`;l&qn;FbMjFl@HesZh4AYpvso?}YHOv}mrfcmV$f{8DAUv%Z z!I9<=#$nn#lOs)I(`N0BQLM^8ZT4kpY}$O7W)jopnH*`drp-!&JKP0#1fIZnB=J1g z*P7QC-RPg)3K}-hxN}FEaAL|c(#*~~(wNwd8)+W0%}8@J*w7=*F=WqL(AVl5dKHk> z)El)5NWR$Deu?IIEaeIq-TuG8uwT?|eH=jq)*}lz(zvetSJ(o4k_$U

_Iw#>P9y$Sw&F{qxw5D`#aC{m-WJ_)}7nPJg8`AEN@kRY{o8y z4&x)KGyCIg01x-5XAtXtH;wx-&r3en9{`{0Zvbx2j%-4@1dzr9(hL2a+5Mea{hjAs zRF_$ETvT^qcBWqNkj(bso8`qmAH>&i9o+oMxx_fv!&p>`?zrQCqIvxX6ykdw^ZRd> zAd#)G;cgTUPlrggkk+Y%GsSXt$fbi%s9J^FD<#3LHY<2xsO; zo4l&k;(Zt;LA;+syr1=VRvGb*Mzmg^O+uijo)h)DKp#F+pBed0F6GKL(=PQGE9-_g77*`t_*J=$40Ec&1UuDAh%vjC&$!`d1 zzJNkFEGTXehY-I5sBil_YYeED3F>PoTMp3ocC@L|!zpJs?MwL~xQB;K+MWsJ6I3ho; zmYuKdJ-Qg5V{M;LPR*N4QXGKja#YEg^6Y?wB=VWs@uX(x^r)`tFwUZ+2V zhVPtWyx0p-NG{tC;Q5}ZKz|c*Kw-if*hT$`mb`N9rUb?-zb*Yz?x2Nd=kP>A=Gc8CN)cKx64-B_F8S*Fxs!S|FYWD zQf+%?scnC%ZELh-<7#Wl%B!|+)~3}~h(v9-s2xyP3$?}5^u5%<{n_bmvJ0ZeF6hj8 zCLbEy+g97x@-ru}o}bIa6Jf0_*Q2cK?*3}elZwWdDHy!p2_d=QgjiNam*8q`wDZbJ z8dk&fbatKq>3PkLv&;BP?-JF~ADL+Q`$tB0tA$1167fjj>_QG}M7f&^xBtipma4z$ zuHn`QU6Hp%@R^`pVBpAlTSRiCyI-@TD&s4ny}+3DXNAiavdSl1hMO;zwa~W>_PPLF z3C_L3O{}Nt`j8PXC`gu2&Ly>Oer%9jR%T?r*~0#}2>Vc5?QVpj2-`Y z-O3}`RC};M#RlVBRAzhuf;7feGd9=Ul6m1xW8DQfRn8 z8M=K3dN8fq*ZOpuJ$)qE2|azoeaHrg2o!Jps#+VgY@&L z=scuat-A!$fbVlC>nqR)e*XCLvSepsIv=FKgm7p~R|}@&D^$6`v@nC|8l<`jG#1`u zb!VizrHK|)FkD^!I+^a~I+Ytg_NM4SU|#FGNkX9uD9`CC^oJB5x>EI9f(^9D)4#h@pS$$(G-v8_7q2Os6{+G-JUck`xvRVN0;fJq z#ZWwpQ=bVDE^S`WQ=d8LIQDg?K6CWc=Ps;DSF0_&slw7bq=I2t@Lt{!;hbxcOZxz}vV9#eFvj;JW~La&Jmu@7l1h2(=_Sh$Oy` zs~(WVtCYlRkc9JH-1#={tcg3{#GS9>&g!`HmHE1TM`Tgo#Bl;CqE_SaVgww&7*XFL z{BlIC!DDSPqWBehK<)%`3Za>Hn5Eb?Scn1(2xq#6P4+r!_+144FLAYxf&Vt){~ULI ziaYD$&W~~Dhq$vY?yNQND+&KcfLs(&>+pDk@ZX52pAmjDqSj}@cLMPDCH$@eAK|d@ zBLe@wan;knUrhLa#GT*c&Tnz&SA#lA)PD%X-!c#>;8*}*4H3o#A;Mu1Rtv(yy;LuQ za2XL6?B#5TJAcKUKMlepC{gv^c&LKCFs!HzzzMzhOFx?F8ERSMNjx%@@%Hv68$E;# zgfnbx@({wyXeuyKIIUXs0}Ida1^!(31-=`jZ54BtpGvK7s&kF__3eCgy!7xZ_VH_U zAHNoTytdP`*~QB{eE3H(9!%@pzg9o?tMz41AiH~iHq_3&5_3Ne9Md|>6_*-Jsr9N{ zjM-n3fcbm8s2ZqgC9_P-e|?x9VI1$yoRM2tOhrW*H?7ACYp9o^cG_cAg=@ z4bIPWgGAPs-p7qgGH28KmdK{=M(Us*=YUf@Gpe!4T?n~sxCYJ*a5}PDrE@uL7=~03 zT`P~_@)&^!`7b2@UaltjpWq|>)Z_ot4F7?>PkJ}g0d#F~&(m;U-rzp2%5lLBP$r9P zfYPN5Fr_rPbIMS;JEyDwF}1+sG6;YT;x)?twAt$*8#D~UVH<{LlhH7G3 zVn_*w`PJ&MJQ(&tDyrL;Q2cucwFMmET7d3hBzNOIOtwXt%sz`ca-%HDQ02F%K;Jmt z$5h_F!LzW#Db$|e5)F%RSfTbsNl@*Vs?||OsLQC@FIGDXjCTJEG(&fL)sO@vx76*M zm!ca}FIJ;Rl$mX>3-ATA4I4N-sRh-X38If*TP#cAqsha5!UMu#c}NQn0C=q7VJUf7 zSna%0?YwN**dJu5_W*eu$V}D=cu`zrB)nQMy+8m_=-DtSGZ9|uqX(!Z5+BU$D9YgdCClda3oW56j19gX70k5Y4dr z`qI4-=SXtMt89;Aphfb$S{qVCXY1bwe0=TD64iHXGsD{cl z)Wik4L5>EXq*j7s2(4A}!dhEWj>T^_@NsxTW?EX9;jS$X?gT!bt^#aAj$kJ+C3ZZ? zMdJ#M6bCbIA&WS_& z>Aao^sn=i;e?-JibbVfuHOdD%%ep|1ZjH@*K5KuiS|E8A^g%bKUBI-%$A zwZ`qz*T7-}Gk7hbjC&9UoIO;UqJ0)Pe4{MTP#Fsxq1*E^;7@8Dx}2=FN?uoMOUf1a zO%AWb6EfG*Mt3E`zKW5emY$t8Fz)rBo$)KE+Rm;MI~ztjyQ0?CH4a0fy3Dh)i>b-i zG6U@lzrxzt^(YH=_I9uQ)+#&FnRja2B{6&Pn zwAy*sbaZ!u#!ZIYU+;#MC;lg&A(FcU3BqBK+#^Wdt5!1&lEpycE^+Qfs_s2?f3H~e zeNr{TVXGb`Rli@Yo;6jkr4W`I2|NgbE=pk@ZFWdq#L7| z6c@}*Nr*ekj|vxzJ6{KEj#$fY_~Y!6ZnDaqQOi z>7gYj7!r&LH&+@L%%n=WZbu*M)oT&#LrczuGM)xb@eHYmbToBNs(HCwW*kl6(o1iW z%N{<$=^mFcAD7z>F(ezo<$Q2SM-!eQxipTZZb`Kum(#yxxw@iH(-rXX)mE1+FWmsA!$dk2To?dOOdx&R$UQpuxwIl2c#8 ztPc;KfkMHweS^(jgochU=v}KB*QN z81o6^I0Hj_>2hJbNf@q|4&kscTrb_=qLpW^Ju9ps-+dHP} z%y1!Ix?J`b6NBreLpUr3*Gq?CWJw+jelMN>{FUy6mb%@?PLb64 zLA-Rj3iYwL7(Umzw3iOlI?1>gTrb_{bTNEOFCBIxH$1{sna-Q>BVcCYA(NR2dw)GM z!T38mN-rIbnV*t0Ub>TgjY2~?cXCooD^6hrPf>nIFWrrmyaeVP&r2s7=Xnpb zm+n*+k;hB-gLn_Vr}yB~T3ch$Ub>Z@_h1E;)brBeS6E|my>w?L)sM!QrqP(rNIIt* zOA2`De({^oZ>|ZQAtv-Y(fPb|Kh;{8)_4WyGoe4U>;qo9pKH}meiITeovuRtEGG0{ zolAS^K&_LE3AtXn|K^&I&g+?wIvo}+_PVeSDy^tPAvVq(!`RrzZuHXF*R^ zdS1F;Y9-BBkoMA@;bt%vq`h=$UwuIfaxwcYDBDZ7q1J{FJujW#kn~_!P$x5TJ?E3Q z2$)o(b3QGhTe*o3Gse7^Z`Z&<&IsC>=cQ{_r@i4DXlK9G+PX&VrTfLRv-Q+u&r642VeQQI z(w&=BE$Upa#RA&dIZ5a2q;po%XaT`wKNVL5QUbQdI5 zYs0~dy?u6T3cOD2K81>w71I)uZ*cfE8MC)Jh){#e4lDCt~iIy&v8 zlVsS;m`Zx-##AP^A`;h2hj3UVu9xnTq}tjbnFu6#y>#2KYS&ALaM-F{FWqHHwXLc8 zB?{qEBLVHD+pZ4Fx$XS5`Mh)+xq*}4>*C?=F+EgURP|^SZn_y!;gX}DZ(C&1*l44h zA|)?2MLrr$ThI1Dt7JLz>hvC4b79Ks)=9agxd5aPY_|HvqSyOZY=P1BE}aqmnFBSgto71eAnbANJ+1sA*o3{R0$+Co|2m2N(zntC|1{Q z0_C=4=P|uiwELLtW=1P{RZtE7C3m2fjFV+J!g;l1QxHu=Q9$%q54B?+L_B@%CJ@n9 z`4H_yM2`s~ghL~mB8VREp>{EdCPGHe&ZgVp_tz{Ou-X~j&NDc{(tBh_wla=c;qc8e zoM%{%b6;*|qUJY+*Og)*d;_P2amaxaW^=&E!nqT-9Oh*?IDH~Ia3MGK<7DahGMp?G zB6JeZlqGj1$4>~y2#4l)ns7Y1huYn6Jc%6dW;mYia=e@2c#hWAERH2JIp&AM=S9Ks zT)z6r<=8E!X^w?RINpOC&k&9g4$bjQ;dn|9)jq&+so_|;9G5o9v1BI4JUY@8$8I@I zb1X!{u|9hCtZkD)@c1jI~9NwZFzM!g?r<~3y z$4WV!QclN|bG*@m(?JjMao2!#g5Dgz!OZ^kLIR&fP*%$Qnq!_%8Wi-zCk+xO>NzL( z1#s@kMFt*vNinp}I-?GY@4I3J4Lj|MN^bF$m*=9TQ#j|%xzf+XLYy0MrQf|VbI}qP zFxJtwb#@(cO7HV3&I~bJ((o#}AKpBTL#wzH4vTx)w~HRjPoLFWF{{2NQEx1`fus=e zf4yUtm-7hI-96M$*wuY8B%z}L`*ZL{coK%Z``O#QMjp|_pqrcnJ-fmV#Ck}xYUYtB zUR#KxjQZ4|;qe0Uc(V)ScMr&=e(o}dJ@vw=5!m-M4f~C}uubfy!q$tm6Y8v`&<-rg z8ro4gj;RpQKhuE&g&gl16>|^Jf%j1{wi7->gNqS5r4aFO%<3plxjPYR$2FaIHIUwY z(LA}V&K4ED6p3be1X`|*toP+ih*5j4kC1ewJoJL-gF5SvBu-?N6*P1p%=hb1_4;D# zG@q4y!*(Vk-=LZQPRm#1)p8U2_gdbBRnmtjvKi~j2G93cA9kq$HulA6lI7%KbS4P| zSL@3st}ew6l3tI-3L^Y(w2X_udbJ!{jSW@r)s-ebtW)pTp)L*%_>4P#eo)5@QT{7z zj|j?{>qPV`Zkpa?X5@SglCYiXL%o3HCH-{+n;{1miuKl)b@CmPa*A8G^hB4NiLrFz zD_!<*P^!-8n-)b0!n@IH1Pg9%e}(eu)d?QPvczhg?YdyLB6H;=SCv@AeqCn^9oLSk z9L4|O_(~~_;FxRa!sg?hgc@XRL9h~5yNAV5hGsiTIa@LteX@|4&mtjZsYR2HY5n^IVW0N)VkgHdd!yG0gUSz7C}41cW{zFJ4E z(ulqnGg3cl%V@-iSS%NwS$eIxfnIBFsMkMf1-&1X%E{I12M`a%`$_Bd_qsl}+IH2y z)Ty#P1tH84WE?8j!zt-75Yr2Q<8^|9fc~{`U zP2G)(Q+ESyRXkEuX6n^p3b+y;X5LlPp4RiLSkGt{{f$^ph2MH4PORr!if;_D71;=f zwVv@P3Dy%&sXvVMd`jzyrJQKWiKLu8Q%?7k^SiO037`jniSn3)hqWPSJ&#G!<4h_@ z(|Wv;bF3%Qg!L4rp+7lu9}~NA*5j3*$9nd3t){#C{IgN(nM_uS($=4iT92f_dj1Sr z&lHixR2I-I9UL|{xYkpUHrDf(YduA2jw?-A&yy%G%X&07upZ3~t*3dKBhFKxRMA}P znTB{MUh_0Zg}=mlq}q1XEz@d)&w5(o>{hQby;WW{OLIKaN?ev`k+xgvN~Q-Z@hoVD zt|ZwiZMV>LPm?YNFkd>2%Ti27DsoN7SF1K1%y-a1^}2wj(+V7b&u3Wl?_xUL{iY*v zVmkk&>C7akA{*hbrZWpA!F2Xcsn%(Caj}x7lT10)DJPL~s#4BgDW^E?`rl@Q9spjD z#~eJYt>j#snFP$0qF{>)qoc3~`ZCGD$vb807z+}rL1vR~9GACR3Zw9XyA%`q&*OfrqbtTmHZMA~E z1WHw%tL-l%9=fuv*7hy6b)oWh)os&iD_Wn{xzfaTX}hg1=apbNoM}eN)apDJPY3dZe5Zqnq!59sm~0V+kJCE>V;L!S z&Fay1$>^q6YmRR2(}ZsRPhQZVBw>LxnB;6h+I z0L8*mg)n>#@__eiT-wv=FKFnh*GU;|^y?`c9$ zX_5lkIN|E4&_@0@J>_?hLzXt`N}!Fp5^7_)){gH%sru$><66W+JIb{-b`)*w0Bx*D zt4=;`w9|HlE@xe^98Vj6(B&k%q-|T%{YbigsPAJ(S!rUfWJ^WxkJ{Kpv~fMDN<|xc z`L$8vL>tSfjX$ycA{*hb+W0$4f;R4-QjXEa<%Bf2^wJE26%GnR=NTZE^fF1z; zD~~_%u=WgU<6n%!O&cwsjn{N2Xy{ID+%uz%UOhS5Slfg)M)PW;iQPDD^vchpjs0CM z+|PaD3jo>Uc6YaLG)X~iyyi)2BmNt0EGo*;MqLTCQCC83jA`v?21-?ztBuVO5ABF) zZR{@E*bUmaS6c1q)5dt(-b6jV*OK$*Qy+*L1B&mqvXn92H3ub0u3Uf`8P; zD$&MbQdNpJ?&sG=i4$$?N^NY-@{4SQ!)oI;C<)qFpHkIE8<$ZV4^BA;rJMs(&VZD2 z04A448@B~L0Bk3Zws=^npf+wVNhR{wffW0stuHaB?Ax=TAxhm$xw?6_uhwsk1Mgec zfp=gNy18#&-88Wqp_>C-r8~fV?j2A*J*k3!p{>=!)j*RT(7@z98#S_6BC2JQ_F?3Gq2p9a>X?OwW^U4!L#8u&lD zoMi8`U8CuCBi+HMZ@HuPNfUD=+arR1)WF`NfxD9`AsTpqUjrphG!QS?@hy3lUt}X3 zRs%brBxvB_Db?3#;Jeho!&1(nDd&)sGbrT@#4v3%up{UJpp!f-Jgojf4eTsQYeXd|)uFi>=pY^%k=7cxpJ?E}pn(UZRezrb z?w_^~(B*Uumg8w)H(gG0K-%74({(4^VW@AZqiWN{T*>x`;2$+`fN0>Jr0OFYIMAcx*}?WHfLwHSm~}b9Bl%D&-uRa*jY}Xf!YZdH|@F zM-mTfP*4N+mZTo?NRi@@w6)IFzyvjLP(}m2T5~k;s3tV<(7YOGVmCqqk90Nf2=`gv zhz1UHHPEDIX`s>?s5}ka7u;rPpsooTsB5AI9;P*-Cn(j?xf)o5cxc37S_21)2G&CZ zk4URQJ`FrPZ6Be_=@l%;)4<-koaB*d`*2OyhjhoFzQv9@1RAJ<8hE5=U|&)lC>nT# zUjrphH1J?*U_X{$WFs6_1M5%{H1NcfI@)O9+tk1lQqGW+GZ-(7Q_gWvMWcaf&;!8! z@;Cqw>-eAs9wbQzGik7Pih3pI%mN2Dp=CqzYMF`sdo81NrV_kUEZ_;v{#VR zIGKRb&36p2WvRX97HY4#rP`mY)$mwQsv)^*e;neW_9tt#KTg#CSg8G}X?46$?N3SD zr|NQ!50>Mp{a{^A^0c&lil!Svx)V^}l!~aHVXG7L6f{Z(3Y!-}GQ*1b0%lk-JL1#C z3{GIKqr?o3^P7Rhi5VP2GdPj;71;=9%wY3&k(A(LF))J%Q|e5Z!LxjS|9mX}M!P>M z8{I`Bd9eZH*;v}L_5pi;yU{MEG#7vr0xfT9qg}%efSo)m4H=x3ZhRlzChQ{N2ah0! zcT?&%$l)c*;a$kVS(0)Vr<`|E&f6*HR?`>oqef^2e$l9&FQ(ry)*M`Oi6L^kNcA0B zE%-g5p}W0r>cDQQmty8<>tcRN^7?p5Lp_EnwIqd?u9b8&a!#xkr|>F|n>O64;9H$h zq25l781Z}MApTRgLTzq{L-04o`Of>sIKHlp_&PTMx^qK3c{_FIRDi%cum7ZN0mbhc z@ihWJFl61G&fUD?ahK=y=e>FRDiizneHFh)c~jiXr1)7QTq?Xm(7KKr1eUry|Kn2Y>Umh0_<3nld zCZEEO<0nda%-h-lI~%o+y?qk|`j7-?KC^M(fMP%!cfjkmdO$Pzi)Xt1Fh^aXb{5K-Unlq2V)3lw@pb^ zZy&-|BW*hVtwx{twixr`^$FF-ME#Dd)YE zvn=H-O*!MtXfd43PfSP0^_tkZC$<<(?95glfml4QlgIV)xPheG?2{?=W3P>mWgEZR zme$s@;TG!M@)U*!d`PFQ)!LWiL!E>7a~;hb7@d~oAD#4+?I|{}*#%`i#$VohJYNcR zv!_;~Nm(TBeb81QUcKjyS5mo*S4(~4)wpycADd!!cB|cwSYUcU z9;4*(AW6|`Ua3vB+Nu=ZVhp;zV0+q{mm{~;K53%W<^@`9PF9oTX|)%!NKC5*;?<{K zt4Zb3YAb!M_FQAFCJEANv)F16K_+N5gu}MlBPa>2wmPL2m{xm(t@c&Q`7-5vk#asy zIrB}cjb&53l-+8NA{Lm&$>aYK_Z{$2RNMa{1PD!v*!2-2j!u$+NC}(O?9%k9B%9q0 z_O4ItPknZuWf2XCii#a9fJjrZfa0hq*hTcIU;zYs7X(C5Q2Bk&Irq-a%$96e{r~-Z zWF~j+J@@o`?wLDhr^{sqb%oR%sM)0UZ4GvvklLOkHD^Ss)V|IlwM8DOz3vl98mYbJ z>!PLRX}7;|q$ZP#)V^{_?WIgolLsQTS4e6z!4pUg_xVa~HXuQ2YijJpT54~S)K=G6 zKjL_0jrDzv^`@5Eqa=#AMQUd`>)K;z1x}C4+Ch?!thny=IJV_Y5#}R5z`(4`G^Dj%Od+f9>;OfEpl+IIvu>BtO z)L+}qqsFCx0g>uJ?P+Rz-`n;K+9-B>mYy|5QKgDJ69u5Hd*Fjwdvy)+vwg>m9aO;o zeHtzUB>YxkSbppM^%w@HN($#gZ{pZBNeg9cpAj5kER@B-{DF7y} zB*x%txKcC$-itDeqNC*aNri)p3%XL~Ik>#mD>9SwvJ$U=9Kyd-Lzwblw6GHJd1^#th!4NO1T?kcl zdV?OmD-&r&ScJCW?SiXnO@_0W{%niljvvH zzHg|n{WH714Ltf=8nwPgMmetUd$hv!ZD7~;ORc%FmWgoO%rAb|$CLI5Y^t@_`uxf! zQnw#u7Oy`M*SE3Oh{g>*?WYnMk|7pV0=_x4G72IKR-J~gO0qtCCUaeY7dx@gy@Oh^C8l3>@zYQwHi4|Th~b&l&31jY6JqOdlyRit1e4N^Wusso9miP;56m?e<28 zxxcWZ73OYmG560*%#{bi+=4m~(i#+ixwua<*Yz5v86VA4v4ev`cB{H+L++pi^wj?8 z-@)A8KjS+X8H?8^cl56{PRQvUObRrGfB>n;{to6c<4}z-dfw5WzF!2|@}c`w1Q$~5 zpmiNM)VeP7OPXeIDKQlhF*p?s*=@k7yNFYFD^5Wi58|nMKs$sEdruuQy?^D@(rNwi zCC+&TDE4<=u$bhgiXGrSDK}RlusIm1Vh6F1-8KzITAo$q>3HjK5vXv zv4eQX?w~Q603KQG>(n<2y4XScx@^S`WH4dfRIvjE$Nk2}^#(*0JCIJW9TYq0NEEAL z2e{9hVpZ&*A!K*f6i+0IJ86o!*a3dDuM;TdA6=f!+UotSa5b1HreX(=^~dYEN9m1P z>JNu2IQl2@(*JO{bOOcr;qWd*u_|_e`@AVu#SVst>~0>4x7QSNu>(-NeO8KPFj3sC z35pe*>=a8Up?C+P_!$@^tRMGDie3J(8Lwwmv4bl@_D&%9aWecl%J2z&cRiTrt&A>G z#=^Tj4i~w17_x2hHFXL!g@6Eo{ui-Ho6|xqGtT#i}qL4LQ>w&x2!Qpkps?=f!i$hHnJ2;|_LeX@^4vwlbPNBZ>U~(BqOXAPB z>)gc--eH%(#SRYF&p1h-`K*c^yi-RRF6{3X)wzltEU%Md2VF=jn40m5n(C*UdVbkWW5uzR%sufrr5z3UY&OrJNUAW^xA=(qSx=~)gX=c{wl3r z>(<=#+JT=&uiqtGhd#ffuAh1Inlwv$#XBHP*O6&$U0RlWZ3>n>?hu z*ughG!~a4I-~N)cip}VAF(dnHwu}r$L|~=Zfk&^I8t64sLwfx!D<~H`SdyyOs@TD| ztk<9Od}`Y6)!*0IUpSgxfTb>?^6 z&t2?bDeytDgN*ECH(<+DEi1U#f&9Vu#9&XcgCE3txY)rev7UF_)+23VJ)e^GsA31W z&)0gUgGy`>SA^^}+Irq5>scPMmW8a3Le_^N>w}QBT3gQy^ald&Vh8KJ*5fXA@H1PF z13ATdKFVS}8`4^jZq3bl9QbLh=R;*RAE@ivjMl@&4t}XK)@HOGc>?QM>$M(tv4f31 z>sha?=V!-y)+y`xr77!?Vh0}UVQOGKObuDjCRSQ5cCakfdQ`E4O>8~u#Cl}f?$y85 z+3Q`_^Bbtv#SS*I@vssj^IB*A#*=WdgXAQR1*u{Oo9oP9x!+S{Y0H5OiXCL+rI?OP zq)f*(E1M329(kdNb#k+q4i`IEEvEB<+jOK&Oy?&u9aZcA_xYO6d@-HRLiX?4bQY88 zd>XPo!Fm(2R)(yPL)I2;I?s#gxQiVWM3`J11f(f;&?4e3c2E#;f-Ps(6th~D#jFY= zaLXxM3f-EUSvm02nAJ*UP9Ll5pB}T~Rbs2?xuG9<*NF_p4m{ef64LgT5q|MW z3ie5=w!emU=t|27#XwtG+cA0f>Q)iEAfltTl0Z?!Y{hV1_rh@$S`|BJ9Wjfz9~V3L z6!W3jL5oOAv4hr_4;shC4z`GHe(cswX%pT2gLG3BJHUOux~YmCd=s*ZBPu9bM7sHP z$oeW|eHpU82w9(ptTqvqzs#bW+ojb_-I|+j zI`Grz<`+sQKUddwG@o}P(4J_(MnFIE>Sl&w2OizzNuZlN3F&4h))g*x@KvgAs$vJ7 zSU1~8ct_DL(!IJ%#O~nI&CU_C3&Y`J2T3@NZmwh<4|a{1ow?sC(&4W$ABr7xj5sxF za1euw9ds4l;U)q>ZU4ouo~Got(&itZvGgueh69L zhpg{H*0&*Rd##(_fD$0^tz5X+!OmXY(exF4fcTKB}x-~a# zbl|7a#_yCCeygrKrfTC(N*nbfk2Yp1cHq%Qo&?&+laMy<#@fNf4t_}0Mpf)!H`d0T zL>qU6HtrFzcXnyx?h$hjhQq}Ul5iYtRK*Vd5ixh?eq8L}N6d#}2fIX4iXHqzw2_M) zY%kjQty>$VO|)?b(neM60QdQ7qbhdrbI2~y+W0DIx3)iS?X{t8vskBi) z@@k{=t(o3*O0ffvHu5CUMxKPUac|ZRE_SdkRU1{YgS}ZB_Y`d`g*KWIyQfPV_lcM$ z!{K5FNjQ!+s$vIa5py5z$HflTV?Go+*ejA!?4V4vk&7L47j0bQ)<$U)ZR|nXsEQrn zK3{EA#SVT8*%ewFUnXt*HDqlHSsO#vFCl9~$ST*`n5Ni4rB@r%6g${A;w^SisdRJ4 zaB|jVI)S%LCGa+8(ak<-byK(IpqsxarQ4vcy*$c?M45cpW%O1WsGoZ@FjKJuj|TEg z&_JGvG_Wsg1Q$Ell&XQM*g;>`z}}*Py`X{pBX*@r1N%kH{tSnU9VFp68mNjLR7K2w z+>eVL{EGQd>|ozWO0k0~(LgSCP%av{!L5PPCK_mw2C8BQxX)JuRk4GuAv>To@I}(V zKSS0ZA?tVSXF}HIkTpPSV47kF`+GGoO|gTTh_~3m{z(mVW=+w+-?M07D6IzS)*Li& zi_*N!>Ke?Tf%_>9)XzN{n5o!-M+12#Xdur-8W?7c;9>`Vq-vllb`WL_+)p$x2n`$* zvG;dr;J}DEh~aRtgCrbB168qu!4Y#H_v2y*e_}oqJE)1I6gwC!8py>C28af3c59%t zi3V1a2C8BQxX)JuRk4FsVSA|7zy+j%MPaLD*eVQLEy7ko*czfWFio+8gS;A;rr5#3 z5pS`BgOVEP%$lNsh2hMVZ4XJSfx0yZ4QvsXY;J+N9+*J`|EV-kKlf>1`eFwj4dj`i zfjkpw;4sz*E_TooB>LVU45F{6i_BrHf&UZ@JP;aK7qJg=X<%){tYbJ_>>vrp(Lhz~ zAQCZaxgQrhD8hUwc5pB>&{ymrA{xlW4u*&Z7KB}|6r@cw@Bq?4RqO!w`D&mlcF;a- zN3{k%Pa4=RY_$zr#bK*W*lHcN>a_-@DRwa2tAXxf2Zu)Jm4X8~B?>IgqGgAr)iT}M zw3bo2DOv2GjZ(GN>KgZ`ocjer=3)njN758K7%tXiA4>YcIiCilwR#GV)}|IaXdVF0 z3Z^S|;8A;~7HZGblG-25YRJV7+NP?#Dt2%*t9^s0eH?0kY{VY!Qu|{f=CKUtM3{-4 zgyX2aDt2&O#5{)kaj}DTn9nJ8a5#sc8HyboCuYFK4(i1WTD#3a+QbZEWCp6(0q&D# zux+PEy5TS+-VF>5+b6;dZlm}2cT}Z6Xm@XU##1CR76(9XtEx2?=X8oB1)4%YfI!Q$ zo+8-+Xa`S<;1tP8k<91ln(>Blgz(|NVfz~JVG{A-QSiaKENopGwk`=<7l*A;+83OP z&XB@sG=^SGU!twqyXO)^97x3u8d)u**g-7Ve;MBVTX+F%Ul#Th zJGeBA0~>T`LrsNM1jP<64mUR5Q;uQ>_mtbCpf<~^U~wy|=#<3@9GRf@Vd?>NXL(id zTGAa=?BKeHDM)#W9gK~n9$s;%OY{2khP1v)w>IsoaE4*XO6Twj7dseOZrm8bNIASh zM?&bnTcVCmMBwO%|0y4=N?*HaUreX)< zBUFdLQ3>xi6#SxtiydU>fVWC0WN=)C$WYF_OrkR{gD>osm_!106+75w80m{0IN;J4 zsk_+0?W`}JVh0z8jaRkN!Z9qYqEkA{aK390+3NTR(C0JkNi%hsCaMP9Q+@}D$7`B6 zH39pCL0(3(ACFig~qcE8vD_ik!)P$bM-iC#D?WQ zYGk{P8rfBDkHTo*nFZ}D2yGNQaQNC(v4d@AVJ7b;#SX;vxjbA-v4iVmeO1K{;02Sb z=C++jQN<46$tUR5;t^Uct_oXMhOH~Y*5zUAZoOJuON_cF;yd`?h*rpVv|Pr>g^L|L z>4G}Xk?{bMv8ULu;HvT}La?JJ%2N+y@}>T=h5b$6!qN*;(bC(?SQiXGrSU#X1)lM(A&8@4BF zsXatey9P^p*t$AwjSO3pwA8rR!2^D&-7IptMK11Q2auWrHJj9~3F~49keV|hRccpf zk(#&I!Gk`Lq>f_EjbUrLmf8eNYs~UXZK8bunMwis4XOfyc5UI^1si|TIxX)K= zs@TCzVf#@nwdo|aabfGmuysS&x;|{p)>7kQ2ao%u_MpgVnp~#KWd<$=q~<`)Cbe;4 zUF-l-b4H{}?S?E;^AZ6PJJSK8_TrTcn z2hT>RKEW-T*J(pXELTp4G;vx%iMQB+)7J}(as~Rl&0Il*iyb`237ekwv$VHY#SZvB zSyO)#G(SeP=x^Tn?eJ6IT@Vh1nsXfAeeYgp!SzW7ze4qil{*${jwV!j+P zh*al`-sA31NM@)v}6gzk|Ld6b**Nd0}E_RT@>$fo>zW7~)?%rYt3nWl|7tev8 zyV$`)E|Z+=1cm)lf>%%G z%0W6E(zz3#gLL|4c98C32TNGbd)n{093|iCkKH>FeOaT`=Na3|AcJNu!^{HY9AByYS47!2e7Pce~5=Ezacnzhoj@7}O=PuQ9m zwkCwFFSP69Vh3OQBlkas@MVUlgw@QYnYk%<#Gc-_ud2T@4(n47056yuSow2=Ix4iP1a600_0uP zw`g>u#^UYCl8Ra*IuQEg`;hmZ0pvasRc#6i2GZ+;5rrwxJV1~$UTsnZgE=T-$|>!> zC}LWB41iFMeedA+^!nxdykEZ%{ry3I?}7FYn*LRw-|98cvIff8<*EkT8mP%F39Kdu zGr%Zwjrh1iA$iP>NXhmZNUu-uKYrG`Yo+mT7wOZ6j7v+p%q{!_(Rb;}tveIZy!;6Y zeA|KlCB9QdhXCH3uZH^y{zx48(X9>5PA?KShJzae2HNYujju@?zE|2%-{Mf!NRr$K z-=}|Cg?C7w&}*L$Dhi;OA5;X_Lop8n8o2%iN_oye`)8oBp$uqjDNC=EKb2)vN*N2L zZYZlY?#f9iQ=lmX1W1!gxq(Em;V)CliwD}jX!^H;e(R!v)`dx>ywIhTn?x!9;~MdY zwwx=VMD|5ZDP=0@GPjVPK`9x93`)6)lyW0+WTRUfwpl5!8fb3;H%6BOm+Q+#8%Qao zQ7h%=q?DhLQf?|ErQB2&{9P#}u1TfbCNxfmZCo?Z{zId2vxCMNs*%vBL{*V5t5E0U zi>hRulRtsPncxMkNhDnEI>#C(Ghm@%U~%Rkdn>S5L#FX?c@cgArb`2R*!{@EP8;$| z$%vM#%Ti=YU5d2pc5ZymTmVDvYhX7I4RSm4`W6F&1@$1Kpx#A>iA+t(}I#<7LQ3VQvh znsJJwv0^BkU1LSCkkIdlAx^>dLKAICpR2JiV};$Z0AuJ`u#IViPS-Kq9f@9 z9sh;n#(h#3TV02?SCd! zIfj6dw?Co5xF}zxbYlq`yh<79T5nwL@m`U z*yP_k9SDS}!z3O70-qBCm5r?ftINR4lc45Zq2@{(*qiP>WyoX2e>00!G3AqkT__mo zQhzLbx58l%DOSEZJ_0)a<{*1}t>XwBoDd5yJ#x@U87f+yQ6ptDdwPS>W*3PKPK627 zR_{P^J;OL(rU^<+@NGI{B8IcSRH({)ydFSm4{HN>n1lv#oe6R60C5Go5!<@e=X-dO z+`;)^)#5?+j$qZFCSF{Tl6PSAw2R8L3JGAacPoO*VT1iK@h-&AUEE}B<1$M> zaST#|gY8{4DYGp2SN!-XB7C@Uj)`~ouCyEz?^AE|qnP-+DvF8!WUu-i4p?1DUUgTj z23xD(Rkz}Ztm)~w5j~|mAnD#Q1i%#&mr-B9`;~gpvU>?@Xn$V&I3^ZcoV8EI#8vgC z^vNC*FHkY@#+?x3OdB+%M}UIOO}z_@+p3X;AkidL=fBiHWORG4bDw zlY}_CdqNx)6K}2BuU_dkV&bhh%F8h^HNyvPt)iHCYgKT!G%+#Sl0Ih}ja9|Op~3e4 z+E^cju_{aDm^kFM)J!q4*DX03?cDfcVwuiSZEyHd9j-U7$=iB-Q>0qY5^X(8U_Ck} z4zq@HOe~Z;enG{=VTy_KR2Uy>DM~B~6Y?kw$He=y7ZjbSamB>APwIjzCeCsFnT}Pk z3{HE>5PKl>;5iGvRo@zgM(=O8I*yH+(LVz zVi>5fhT4Nc#jIYSVnHt~JrzT(@}Z>DM(I#?$SS&jrPqkUMb;aZcE}Qk$XFmcs~7p$ z!~lx!AL`XDk)U;`d?*eu_ktf?*b71Afp1vGp3Q`b74D&4w8A~oOZhH~^bgVf8y2lw zwF-M))g=_2IfT(xan#5GY0#z)srbW(EF?C(X{p8UO-i0r48=m|r1xu8C|VaBLNXX4 zp{Q^Hq3En$F4c0mncQU(g-m)4wTD6`PZKgWWFj6WrW!S=De=_-(D68s!Zoda=Z-`T zkl1smeISr{h>!sD6%rwQgW_3}Xs<(BuGPZvVa|=unF&yq0A4DL9Kc)`6~Rot%{aC` z$m^B_4kAYrHiGH){(s->z~@fAWbQ;!1Qc!{V(Nn^rv4|%|DPFH-Aq?<>`?n)@Om-v z`lDXyUCFDxwk?zuz_8H8y=sluQe4R)M8+W*$jDt|5_h!ZNcNAR_ApQ~Y5*v?Wk82? zPO<3f0ozK8fCeq22GklY4{*ChRw(0Gk9)bN_lQE8OzWnYyc-DI%VKsf;JSoHM~Hi& zt(t&rKbWriRpwg=!LA;#*a=IE3AQ3x@B+xK738t7ClQciNpN zp0kKeSUQDGZzb6zoIlgE?_L8(Gk(Bo$I%GqeIVDA5lFlt5sixPEVMOgpDHme0`#Sd9np@_EGpZpGOGU3|aSQlBo$Sg`fp-n4v9;pOwb-rW*Y zX!&eBpmE6D-tdicd(-l{w3l&ZGhu?u_w^>0OhWj^+rCL^`CQsdmQTTeFfEeh^Iu{@ zYWaKs%V!GOEFM;TH~w(sbBPTf&`M2v$HOp{J^Fz3%V(725S8UqpkVpDx3|k0wt4xy z?f^RmnLI?uJPeuWA{<#=c@yaqx5^^ z2FUoy02xOJ8FO_z$VgXwdzgKMi;Q!9WC%zv8RyokncQTYLu8zjKN+_K?ejp!jg(q^ zo!)mGDP(le?I7buUgUl8p?#!_jPreD2uLp(=hv&5++_TR$oNnGWGvXLWuyddax7UPEM)5!<+g$hahbGAcs$ zWgz33ejwvV`sJo$gpB)YR6EFcrXNY;Is8ZOzv#5y4u|fuZK1td^M%rH^vX6C89P!+f0%u|i;Qc1WT>GY zGOn%H5M5+kLu6c&KN*J(v>QPNpGVzD4)+8h1Lstw9b_zFhl|syLdH?NA-7L(kukvTpzxeA;a4fT9DflZ1>XbUVnn1p;*7NCN<+T}|_*13qaA=uq#(6dex`9S_vg3p06$ z>9xah=l;^k<5}0M1wa0R2kJHJ+ zon;X^1U~3MUjA>B2fWfW(4o@tijL_-$Mkvwxq5ks>9x!1;C5N5deu^L_c~kEfs=p& z1e72v|F=;B$20?!sPwj?WF}EEv)(}NTOMM1?X?so;dWh*}^vP$s{Xt#gBRSEub{~5-rhKs!Q+~HEBH^F*;k4XX z-L5m357YaKM>y~O+rHfrk6@88e%c2)x7h<~E3e-1`BEee6UzWJ_$XofXuX09Y+o$R z8(aEO1IT0jKK5f8+wqh{T<2gb?OCw3*X@Jz_I$#$VDH8uj}7qQ{uSZ=IN|y=gxI-0!XgAMYaE+u_9$-rm2ok80PrKTe!}f;l~-Pq)Mq#OZeU!f(hN=Jf5A z4yWf3wsY#$cwl>XW!{{=n~sM!7{{9STwwbl>BXWwf$cG-b+jP7b|3d5_U*nS3a6La zrP@H{-JOhufqqy@?@ORrIBxJ_X}838^m~l727W@{7m(i2U--#MIf|TErJHeveq5iY z>OuBReVi`%_!c8zmg*^z>f`#r0sO{4ln4vOQLBO-$TR*Z zQ^aBDhouw)UfWZ}fUUX`e(K{~I(o&YRwyH$m`FpP(R^`+j@*-G{S~y0?1GH+F{V1N zW*=<=4t>u{KRY>{XTJv^f=`mvo~&0WKx!Yl?ZXw9_1-wJMBPI!+o@iUS=!Lu8C)*_#FYoFlLbQEVQh5=pNC*QSfBZ?0T ziZ`0Jtx?=eDBhq^e1uS(=z1)yB@~&pH)z(9fS@wqtYG>KVLDqd#eLqGcE>nfZvuv-Pq=rL53+HeH|{$M z?m+H&jXRJ#(0bgo9y6^+H3d6SH{--I`%%USCh!K4KqVL700p)7W2C*MfdzbWY-gf3 zYEaBkkl2r&lR@l4SQnWK=K&jN*d_rOa$_#ZU5pe#xDy^dktn?@!=pv+(BNJ>mK8yMyb>7FB0 z88ehP(w%V)zEW=jrv~E}7d9iw!_eE-7UW^HW0Cn;l>@Ib86^Ng2a0lNitjH$Ca5wfU+XOML~x z!&Kx}#A06{t>26K6q>ltTkH1&C@_4UX}_+uehc}Qr?kHBj}Dl!1{dQ=SFfv?dt|s* zgBs(0oEwJoPwYtiehQ{>Uk`BNz8>HQl$9F3!b*pKl;?Sa=m-fNxX+u8jrgblbgU|~ z7lDp>d%`Z)ll87Fvpz1fR+L%G%OnO({6RfcFA{Axi1xNVmE?EqLOf^G{+1B+R$ z{zUgw3*L%WSny)DEtxSbtd{l)H^{dbWI-`NuF#mKAIFBJEx8Z_Fxy+04P0wU!{4qq z?o~&%pG2G^)7UF%vQqaSRJ@Bt@NtlaSfN71ZFS?*omx1MX+fyz{|BKp_$KK@YofK##C_g6@h^aaP9SJ`N9#7i zl>@Ec%d9P08&07<_LegEmFo9cIwQ~mJWeG%ih@h(O*G?EW<8@>FoQ3&5 zJi^*yc=IiN=DRGo>r zsZW~Flm*AzVVS~-QU64Y%5LpXgs3jMlRToKE%;ZrZNWV0B+n)!$nX7|Zd#j5#qTX4 zzn3IMKoOChv`w5t{DF6MMCEUW75xwB3#=-&k)PDiV>8sL$485)%^3nh@8mtCil?IoQ#UwBx zD8qfyVw$~^=2*BtqHGX0u-sk_!e-Nk3l+neFr&Rmbm$D+ozRf+mA6&u?T2h$WE2!* zb|r0Iuvx?AWo+Io|0FBRKiLMB^L`O5 z7X+Kda^5e_(|mD;euU!njYIwibvl9^&5`B0ivJPia17-9D4-nA0_XkWDw5i&dWC{t zYTLLOQ~Slna{E&)wk5C;>spo>%#rttH+UZd@0SO3OEeJP*OpTmduaIRDvE_(9uWMD ztXS4 z`@At#`^AUK?XNVZ%*UzAKm4GlkikNw2`Lw}rS30{8UPpNuoRz}muL*ax zU&MXhxU0x{Zn^!9#{E6w@*Iu3J92)))oYnU!jT}sI7CIxuTmH{2Wa0+k@L+ea;Apo z;AZiU(w1+D4i!1$K5shy)0&nN67S44q(C4g zWRNMG_3IIRgw-M>lk=yIB?a>&68>0noy3xBDVFquA|l&(V#%LeqMf1xgDK=>99|`3 z$u+dJtjVBPxxFgsxKn+LlM!uQQ*HkOmEwc3_y$oa`M*xB{764QR5-6UB)y?zLgSDn zy`^#of2GLVrj1bbQ-BVxY1KS;bWQ_0*H+t`G&)NibWX?j`z$nLrtA3^`jg2o=8_5SQ%7V2P;P;GLS)!ip4#mt-Ni%UQbplX>MF4=Hiy50N~$-7Yo1gl zCLvW0N^h&Sf76uW(`nS@u2zOT8699wQ{?ghE<*cU*NAMiBTijg{CmAI$JJk0Kxrao z0q_6pTdR@t?t}l;2;LeFRqQExUJv)M=SRh!AHg0k$8W8ckrb3C8Mm1{;Z)E7=HWhH z<~ z*TiajEAV=Uj+w7Y;`Kb9st1Hr3Eb#AwA=ch?8dQ*tt}1~M1j-`=n0H)pD(9g6O8Vy zwp&C~F?yXak_UuQ&$Jj75=L(bM!3%xqjv?PN!4~sV8kBh6H@&9wc@`=NXauosuD=O zOB~uzY~Npv23@yyiMJoI^F8YKO>gOk!N?zVBCe94m!f;HCQ9ysT&;Oh%B(9sBaR~ai1^hn+5fUs_pig@vQr^wC-;q?By9@-_ND{v)sD>ySE=1 zuGW3-#|o6x{Xft>*nxDvL;gf`lehU;hdQR={| z>bTF7{}k!$6|_46ZT{#4708m2&ZYVRRN=-79qG)haMdW|NT)MUqDTkVJkd$0Wh@x9 zyJ(c~rHj^Ny^P5-Vig6z*_N@cB;l_4__bUkT^NN!sdP$+_jKQS+-ZajO|Q< z-Z_6F)G~HZ(B4H8@pMwqyo|{M9|iQMcNt4|a}mI(V;R#*u`7u{En~RPR|IMqJ2+_X zmIixX#^gaZ?0FeWcJpJ;d>578ov>HS81D1MUM*vX1noVvO4~`^^D-t62z$Sg!Hr_; zTcU<)`ZBuFe-P?w8N+?PsH3&K6L~JL^*zlm;LlfcB{Z6!u$paq+^rxfyoxR;$1Tg9@-7h5(bdi+| z_xXxIEy9Ne?LE_I4==*OlKZ7fwU1~2M@9p5o@maAx(>IA!t|U=Gc%K>9%Uy@ItgjzAnj<7hHJj0C1}|Pd5`XITOg0WcE$IsI#{8l z-Z%*b7wL@ASbW@#WWuQ8%Bbp0T38Gn`-oPyktGluzLiG$VN|i|hvremlysnvz@csn z(!%TGhSwSJmJvL=uOD8Ys2|?KwD9`5;ZX`V1H67I@LmMGU@vk-y)y7Nw~QAVMB+@m z-UDmTtg-upweOHo{6I!=MvZlPjdfa$b!v?@qDI9PXQ8t(AZnaF3J7NI0fAU2lLDq z2??~cwCJyiEvM9-5pzvH7SlHlxvpQgL_3Nr!Y}Q7puDN+glxv6oGm0~dr`M1YBnq}GDA)-%q%i+QXIw6q%M~#%f8>6oS2>dww2~qP{Se|>DWo){foj3016A*y~@ z@J4DbGLM20KxX4;;7Kmb3%V!4x9h$eVcjm-QY`vUtvmX)`X&N(tZAI0mIZh+d^~{D zGaur3>LP?sb|ebbs(`=2x%w{Wl4F+_^R#HVM)?*E0>F#L%{0LXFcODc^lPv2XlpP| z)qWX>b?v?nmV#+RRt+fVL;sRx--=$r)1v0-(I)vl%sefcqY|G%f$eRC0Is(aa=Y#X z&-qA6L1G|682cnr4(GkTeE^oxwZ+DHYB~Be<8qYEkTvsA;;_rP&TkGG=SQ&!k1V03 z7}I0zd8C9YlH)N1GiQNnL|fj=0mtI?b$8y zGU>>OD8wrVVcbYvRT8*}XXb-7O^&5yyhSJcL-Wx=8lZ9!F9P`cUi!OL@ZzWm)(|!K zp#hisacL%6F#F4*_I^pnN(|)2Y(k_y?m;DiOQYsxOx`5m5M;%gOjx!F{x@n~%1@@? zZ$kC~!g8X=V7yqQN$&uM@`0JI?XCV zkw7eP1!FS)QJ`YnL_nHZW z6N2!SKp42pMvn$#WYjp$6HWRK2P3*2Su)HV6%}t3xJLYmkXVX80qIeKWRHZsjx4F1 z(j|cn2M8nTuIe7RmQj8TU4q>Caoiy)YK)qALIQdM4a_S|QfDx_G;m!s1!6N;RZ=}B zYF_8YwR>Q6UJy$$-WQ_@6 zz28CgYP`s=A}yIuAd7~#Jhm_~8QZyG*vz3l?MAs7o4JL6is1U(8vACwnOjYpxpQi) zf7e)N*H~xio!pD)X^i*pJGqw`v~QOs zsFT6auDuz%tXBxyT~YfiP~qBTy-Lk@dxPWG(dOHE{Trk7&g<;teQjU@tHv7`0l6*0 z1s-l<)I>9HW2kR#JFi>_^X$Ct<(c0k{O=OOaJ1Rkc{$T(+<7e~lv@Yyi<*GwtnDfvHjRK_-7G%?4$8A6HyHz$G{>YEF+T^qpN& z6Pz%o`J%~;Iyxh2-;sP6Eor98Lf&F%pT3F!ihemneL|DB!{+E=*&NM6AQ7A%HJLk~(!*Bp z5VND^R7UwTv=DBe6R1a{l!kIVsW%PfOB#Ji1F$7}JkypaO{_+nAyTB~PYXA^<{X}p(2A_$V z(!3Ub6Ta(k{Y%w%JpuHo@6R;(cEdZG&qRlJ7~bA|Iy$@^=H5U!P)zxFntjz18TVDs zFB<^m>fGjIs9B5xrq+XWX!%@_E|@A#XL{e!T?zRG2Lx$mp~q`_j1 z&c13ZP1GKt??MTE=VK`h&W)OkMFD*eZ?jO;zUn2$rUlx8Od);GUL1TmYN9#0ugX!d zrGZx%SW7_hV^u_u+XY{Zn$o8g^^wp@3=9arDhR&}gn5$qTAdx8E2(}vYW~lSYxlrgc|k12c=K&0rXw)+uozTqM`X1Rz7sXy(gIfaL({vq z@NKW&WjLJ(&TAAEaneP$SDgt^NAq3r1n;mdnv1cl1>cC8i#Yn?AJN2uX3mzJUsnui zuqTsz0`GZ!+`S?uFC`jzGJ>FKZpFo9|$^9z%4F`BtK+MF(kpcor|7BekId`?QP`HFB^h7XA z8HZi)m^5)$b=?iu;QLYYgJuVZ@8`M%f7m1g-Ai-#z=vdKy8|!19(Ja1F8D#z=`!T~x10OME|DX|R1+U>ySSZyF&=v9hN33DPTVc8$)KX+FC9dJmQv8X_p11^; zMa|{SX3nx)nX{sqk@JdXF_RcXk@E^-X-`n&Qi-0WfsdJSdr>={8@PHH*yM8Miuuz; zuX__f-}1i?+J?8rY-M!Q%KVrTcFUvY3Pzj(3{4)cC7B5D%-)nG?DiOa7H)y zIiuDGBY;_7T;Qd@h?;0_GBRyG<2`AJuXyHuM2z3On~{d-PbjwwejPOd?{7falZN<~ zQLajdax>Bp0|?~~=C@If#J-lm<_kEj2J`z|&Ekh9wbtu=e;`j0AjDl8mmF4};P+9J z$5vykUZ8(uHU!hL!C8^_BO=?HKVsD^-Y>L{yA+734;&zl~NY!=xWG_uzCxUHn(T6Qc+6R7RR&`D{ zihUNn2Rh&g`cNX;4CxqaX_9^5tE;63$}+sokJFc|21@#>{JbxQ}LOh4TLPaEvb zHCR-fydz$@Zsyr{^beJedhE_J{brheOEgJ(qM)*%puK*JzYBVS&|T%STMEc6I*3aY zl+Z~OU^2pXH3Aklp6G7G+i7k*g}R@rU*ywOBey#yvNxsb;2zX2g2fp@d~mjrlAVh-tJ^b1K+!CWDW(Qo7Oilndd=c~>XhSVn+a z$Gl;Ph=|;D4zGFKXq6MR;+S0!qF1bBdAv#UylO4)p7pUMXH#0x?0mq=Q{u_O1ki?F zG*8=@o}hVqMe;AblK^N>?gWqYtTOqmP(5?Zr;p6vm%6lz`ObwDh13xT!u=F3Mj0XvWyq6gu0|W& z?shRs0pOJkt8Ol@WJ&^^NE$dLkmIOQ3?M9mgdeW^5jJ;tRQ75~0B0@KOf6- z^~F(fIYM+Oz&DsX$H1k-aBJ_t=9N4kLOjI@u3g0TQy!P%iMJ6r+B?Po-7cnoTT%}I zKb+>l^#~%TDKUEw8G?H66mUY6IhLblx<>DjGyyv()fx9G+1TA#fsY~_cHp%IDSvQ| zbmV9>VkfqHjKmk*IcDx65nrhh@=bUO0S zWO2Eft+W-OjFkOHO=IKcibLt2iS$n?1({>}Q;<2fKb@-IT+xUAA-c|@DfWOaxnAa; zjW(9uzv-qZxM$1+UJX8Ey9atQvge=^A$=}g8ID*^X<#pYex7>%A6$u;om|9x87>WGsfQs>gw6aV)vdL-1fie@DqOVt$iLR!J3PO%xr0U4X z5?GD2Ic75oJ=rB(OE*QPDT>-i0REC)#%MtD2FE3VO4iIV^aPrD9nH0G%oiP|(af>b zv3Z)gZ!3HQr@8!aj02oGqLW~y7OxXsb3o6wWB>K3{wGAl)^#w$Xa;aa>~uaPC`u^x~G z>s!^Ne~IVu z#QV|q?QygsO^o||Rr*Olf=YJ^*+aBSe?ls~UC8PfvO0vU_93fX$Qm3|y8RUT1A%$C z7zf0>A3sxexINS;Q+D{D-LpzPg57{RP~*JuxFqY-Bf9UlJIz{1|2W^m;ui{L z?p@G_{v{tfAJ}p#k?G7Wl{ie&36uiKWmIWk7<+@~X(~+l0x_tTGbovdJ6rJu)VnTb zZ%1h(9eyt)P-Z>p_KUc+Yt!dFqJn735F7`s=|Q#{sH)G^#RS z%~v%TUL%gAorl~ByINyA*%;ENXdFbnPIR)KD84Xs(l_VbKxrV(Vtj*0tref=oSoZ&EuYLf)dAB6FBH*|+f*8vloj(ZJ~q#}Q;oZ)E5o=?!MKE4|Tl zXHRxY~zl=a2Np;j!eOD!p+y^Y48%;sctkU5El4 z$Cvuj8x5q9ywB+ng6McF)huXBqOo zMr0AQHnZ5pinHP;#qZ zVzy&jIG^vKE#JW8TR=o$vVF)tK?f#ZP+-zEWOWHyokP~~IwbjydInF5nJ34LuF3qE zac!;9IfPX{fnT(59I_Q+76KHQ-o=IxS1wx z!n9Lq&Q9pbOv7Jknbyn#Sv4X1EO6{DI({&*KR9-#ViXEwHRxxR)S*(<!2)hepT@f=*sDnX_tSU&fBp=y1?D?$v+A3PuxIotaA^Qrb zRAUvOPGFx+1+pf_b=!}{}TG=f-T0Vm~qj*)UP1%9T6%V()yJAbX)&a0>$op zRG`)ejSFO5i+2{_lq-F7KJngIUMDq-y3iEcp~rao^_cNhcE{v>ZJ?23y$dh`*jEZimp+88IU_C7wm0?QO~iZYSit1+u1)awK=^*J2r6TWp-MuheV&A>(qC&5&s&I~4yk zqd?XptRdb4SvQd+svnKnf|MtHiUL`)W2W=Wo{pd*Ss-gRL%WNpReo9W1>(BcdGKPP z3S`ZO=QUi8g%;)s#4ldXU2Ls>gU{T_7v_SX##Y1+pIFMF8`w z0$Gp8Ot6Ohm#;upcF-QQVD@uk_Q<4TB`fE~Y(k_y?m;DiIWcoClg9B9xGT%L0n5Pn7wei{fvic%o! zS#Aet)N%e~{^CdT~-2)5rf>?_2=8H@W7szt+7F5h-tq8sx zGZ$*fD*VaECSRzLF5`oIhVvxG7|+s5=lX(s9sz1+zJf!#h{Rr&NNfQjvEcle`FyNF z$>G(QEl%lG2K6+7@&|s-7h$SE)@v~ny%mJ&*LmPGGSDBVs{&cC%k-~ddgc0@WIcH% zT_EcXwII3+WW9k+oGy@cIcZ6n0$FHJyHRe&W^N(yM{vDk*j}VJbIWKmw?o+K7Phtz zTV3@|jtgWh_V46&NVk*Y0$JF}EzYo$dppBUPPb>-$#H?KcYM1nL7jY|_sfYUcUiBH z^xlivUA?<3E|9gv8yri4EYHrXTXMH$Z=bxc4J>8V@D|8=KW3ttw=vW=x1Comgn4#e zAM(sxAnQFbjMSZ%GkwOLmnx9;QOpFqzX4^>&TBcN%muRiC_6i^rcqV}vX+a%eIz@t z_i5*~!YjvjNaP~%R3Vmmn)C4EYPkqs3Mjib;X1|k+BPe`uK&MFv^ay;;JDhBN-0+CK^qK$X z=Sr%J<7QhouH6G| z@`6~3@n$g-!v(V3ECv;-KvuiB*#=~>b}RgGpR&Db&v3XvRtq5M-d?E!S?%NO3EIWE z?qlmXO0Tqxn?-TTdpiZPzLlJx6v$dZ@(FZ^dzR=9JP{Yjayv0HduQ{d3S@PN)7P<{ zOj*X*renORRon<>UQ;PD>>lXIsO<>5!3KeOz>#$GK6<9~U)E)jb62WBR!5@H!=CLJ zhqMKpV-@#Y4Ho#Ht%uuGE+bcaFR16|0@xImU#4?Ba2!-AdTCO?q^Su367b!nh0 zQ^p0d+}w2p?+y!@N8PCaN3q$JHH;I>szBCu#5K(BE|9f--0aqD=4_uUb9RWkiEm2N zdIWZ87Bk5xzp*N)Y_Q)N4l0$I7GA$DifyalrMh?{6`GBRyG<2`AJ?mROW$nrD8c>&zCUsMIM zO5!Hq{S7F4(h#MLa+TlTll+>IhEN5vO5aw&%$~WL#a>Nnt=o#b2lgUQ z!3DBh8n@PBcih~k*`9arTsdPl z)AO3m;-vPxCh=1WWI3J}1+vPRGoAujZVol&%G@$b=Xtq6me2G03uKi+pMv|uO%t4_ zNDFwX0$IDlCpV}V*oxaM%j$}_X))4VAS*S^sS0FOV66QfzbzzfcfQ)u1+sd@ZC<+F z1+sd@liBGvX}_LQAPcSe=BC@zna&1dO4#llpEhI?omF|F3c2aYVQW&@x?d-zJJ1Qu zedG51-Xv~EX-kw&8cAf3S{}7W-O33FzyXQL`0-~IlSg^ zqg7654UXH>Ae50MWO-=|WMzA-Kj)&^vlqx3!lq3VG;gm+F9drt|HL-{fD=5@v&!VN ztOc@$#(n2PW`&Wor4J7XcPWr1ltK&j2TC~hM_+U}S(Sd640HCUISmyYOq`Z;C7P?z2Df_fhlbDVd2>byf}^mMOyhN8_~AgdN(3e^*G zQI@GdmP45>EK(+#wLsRec(Op2Pf-pg8hzB)G4+S!MfEVEuuU)$Hw9WP%>(tQBdEDi zIz#hPp{FS&^~_ozD+ew*a`M4;4ud82rk*gK;gw&MsG}1(5#el%`uJqrKyCG$l+A2M zj{6u+y`yn&fvlvn5NCrU%Okl!RydAzqWJ}~;uH!ThMDYoHm~GIjl@%&;A#-tPkCI5 zC*DT*8ao|*YA<7(+A5Kc+NSc5hl;BKhm$m2 zUywH4+4BXdyFk`aaVjw40BGt9($l~;Qk~OrwU5$4Grk}_I-dMfeL;FO3-}B*;!I-r z17YJ;S4_IFias%0hR-Jk(J@XYi$5iNFpR^QbU@R7Al%q^PdUCIy{8-nvhFEAhJwr$ zRrI~liYhu)e@{8SF}tUnLW#3zio>Bxt~K^-v~gZl705a^ZUV0cAF|y8$1$?!C}hv2 ztGsey%P9>U&(F_O&$&Prh?(yqX1+sA4Tzz^QXor$2KEXm)SQron)5Lil$}k7Ed%Px zP@PXnFF+4>fvn?UFMk1xPt1bUMTC@(#TOGAt^!%d#koYqv9J;dZ^&r2Lu0R&V`JzjlFF4{1lWvCMv>B+-2Z!x{kqI&=`BXleluyaR z(5r|&+07!k3=Z@m;Wv&EStd#}Igz8X^cE?@#we{#o|Bc#QK$5 zAj@wx|IUCLEh$_e3tFX_>eec5bF}IvV9Z)|3*8i%XNXpDfvn~U(7W~01+x5DpOXda zTNU^I649NTWun_?B7C&(#1C0M+UEjUSukp1^|z}K4KJ@sS^cFzmOMl*ZFyBNKr!we zz|2)33vK!4)FuETa%zu;?f>YU+LM%1n;o_u30n{AwCzM<$pvxyVQ<=&3uIj&aW21c z_oQv_BiQzASK9VM_80dHFpdG7QBK-+5}rcSE`+AJ2BSdMMLc+Ny1`D`c8UzXhzCEC zC4+@K_NhEa@RGPG5IhC4{LJtc$nrn+7Rd5HO)ZdhiJ0F*g!85G zBx{>2kmUw#U#cTqcY!QdBfeTJad9Deo}ajooHVBbSrs{J@| zwa~WIc&bp0!HPBbA;Tw&sMbC&Jd_Ve7H5b(zi%KZTirz&v8=6=|}=k7vma zUqx;tB|EHJo0}cx0$KD?HJFwzJDkXn9oFqxvcqW#WL+J%=dd|D=|EblQ6MW#tInvV zdxip8GJ*{nnNSZr6v)c*w0Q-xn9kf%iK8T)KnciPMwJFeu{U@gN9vtY`m!f zE~lZFA@6HM-Yv5>v)ILov+?lu3`mnx`kXL9tnDasmRS1>>bva>v@Zia>0)gzkR=Z# z*1nwF>X(@9*kpk$wB;L^r~+Ab*uF~#CeKn}@^sjm7q*@XTX*V^#+;hZ^%ZtyTyXw5w1cYl0Y+{WPsgrGa~hsPBn| z7e$PVJ%D~hfh-0D&}+Cr7J*(v8KQZJ5bUZ-Pnt;P8y1`xHyP*;0BYaK%(b5iPitIS zCCN+GCOo~HrvDK=xz-c@%9op}Ko<1jKFv)S)PdG3Ve93v^-|cnS94PeWKD{jljFuK zUT(gWk(+%K0bC$U_~#m$g?}$=r>L1WIc_o}E|7JvFzqEb)1*z9c0bMO z6v)C~c`$8em--fE*y@!Hv>yP&mQ+C4A6I~3=0IzofpSu!yuL++aryuX2@+Lp3JL~J z8?xFQQTTSnyC%IVrgr402VI~b97kmi#CJEDTLZ4Ts84qYqpmZfW@>Puty zK^dfDx+wg^-I5;pv2pgj|8*g(IF z_D31maNa=c-0W=lsm#v?fdDpaC`)C-d0sY1U(JTK#D+~}V8f;|u;E-k8rY#39nYi=E^8VTD92yOj<%4tK^4S8DmI z8(Rlfm(enI6MEvOFX!TP9?}*k;;({%JR|>e3?bYCzpp}FZ^kqJ>Y`St zPCWPoN%aXgJ9n8>P+yYxv!K3j$K1XWCvFY{Cl?H|p9Ck@kyO7Xr})AkGH}(%I6ouM5R>xL-uh!vu{&bx5V}G zOEskYC4qUw>^h@5`2Tcv;B#k%a$7s?2x)==5hR}GAw&v3MY4D*t{66mSm{#pZITOp zVz_XS{j`?L&yI%2^JcpMZ6@2FA+|Rd!Mxettl87CeK^?u46)rNw%cwK*g0teIeL`o zuz_R1>zPCBXTj^|EX??(1sj+#L>9SY8;pxme8{s_vwVm^h7WnpBE`O$*1xWm-4dNi zuLJXmv&Z58zKP(X;ebZL0gX`>1czJ_c%CLa0j}!roeq>{@_;Ad zM9TBnPdC^zhJX{*FVGg%O*uL0{Ft2Ts9UrTyg-znjQ{^-EQlK~9sutA(YqkAbtic4 zoBm=1()@hti?p>#$^Yrr-12`L2B_1aBWRU7)p$8>?48ag^U)ih=Y=3=!S`KL+M`>d zjC@}o+`|8z-Vl5xZoV2P9D4tM!NGh5YvLIV#+kcHVY{}#4%lD`8Cx-NYUy1)UMG%^ zttc?g+LiDxNKC+iWh%&cR}VVcdRGrmuc17!Ht+_i$(i{7EaPI2L2f7;QJ4>7x9Z6E zD%c|z?W35N6d&g#(Wj3o2ekMMbe-1rZc`K@=2hsEB<3bEfQVvjM~Ne$VrhyO}wC z&YU?jcV_NN=rlf2cYrk^v0urXgCmdzqD&0mT5K=J4B+?9Xpfl@8A4_@gvO&tIowOx zi~LxsUqKV^qRaB?9h<~I6e|fz)2NZ=QLk4od>7DJoUNd^W)DAh|J5hvySWq&uM?J*L06E}G?a&WjYL_Ml ze3u%iOK=YOzvB+m_;SD!xWc=XjJ!k1$UB3j6_Eoz+|JQ1|2;7o(aU}h4YP_GW^Fq( z%y4d)0ajpQ@>)CR>|5vE`iEz7BPb&=S;f}&Bqkq_m1Sa5?23cmwH*~AR=b^;co=QO zaDwchZNsY3G@caEZzLwGiQ#GC(jMXeDLYv5(I^RUWwc?{qa*-L%~sI|CMhvl&56nI zUX+-u2}(?AX5_%cWDRL95|a-Hhp#S%aDTPRs5+mbyFW3hnE(Na$wz^Si7MT_#ALfC zFv~2~}kj(!VY!N=&x5 zuZVp{ZXyzs_AbM&u3?A#OwDaig_iA0jdNlM<69tz=?S zM6UZB)Ws=poTSMVi8sl?<9(&?-cB2J0P7a}qFoD!2y21hnjo0$BM4Pi)3)R%aK%E==h8n0#_~sf1oju|Xd0s*sf^@LO&BzP<~)&nx1!ei_v}mwZR6d^cFqfhxNSYoZFRe-42vtp?Z| zp~@yYVfinuf3_Szs)UaiK%$CQ8yJr}j|$C-&Wx&@M=TEuL}XB#I+0uajrU;-d;Wm; zVSm&6u$BYx^%%Oqe;4i3FPj++H{C;;7<+%{M4u1YjF))az+>qh-pNGFLNlKhG#Oge zc8{_^re%%kkJJ}{`Mj}C}>XpvLc(%Wu!My z<7c(Jr{`m}1Lm81)5L|yG|`m9OTH)n{(kT&R$jT30Y1K|Q%!w*6ns1~!2Ut`_#g0b za&YdXyXBDrRd~74Be949Eyl#dwHk}nn9<~^T{cs@o)K=)gF91+coDNBs57xV2oX$jq+e{JeM>5-wgK5dYVJgRzYxiG=Oopji53skuRNIN^ zpVCwVtSPckdBx(E1^3in)UqwwE`#UeKVjIL3PJF!!LWA}!t41EVsTVq@>)|1Pb#QRpW3`E+dZ#w8mAy@I{kH?S-q0#KS2E@|YvHrG z5i+WJAYHZRwxaEt^q$Z8IYWB!R`Lr8`O980#Vf7sUm?^3G}1glrg&MK;y2>*+hAD_ zQ#{}t5Nc$KcUsxME3S(Q!S(G{(N$(stb!@F1)Jgz67mnHDI9|B=4*N~I_V_0sl3f!Ku2J;_U2!wlQGIDMn&!?eY*=+^J+#;K$ig1m^Yw-%-bKZ` za;}Ns8>`JRPF>x+0`K_d7MA=8Z?0NGH*c* zfg4uU0{M#6$z*_d?eRC+V>Q_$E3yMYCoYXCsZms*&o=#Dy8sL`ZRU$Fw{FkR$m_Cm za3GWb3I*2X$Nm`{*~u!dAr%LNDfVSl9f@Y7*jKeyi1H6a!CxQYFNAa2^U0iXZR6nZ z?+!ywSBA8psh;13|4l0y?M)^3r~oxG_B!H%=X#RptiEi!jH(M8qiNiB-cblw+EM7x ztdX{jqtIb6Vw0|I0H-@HM!A*% z^Sah8cw^3y%g5Nc6*;e?R6I%AEh@GQamV?`qk?0cDvh4|m zf?Eni8JvUL5@&F$&BiPMO85x}QBQDtQU^DIOdUv5HwU*ISi&9bYmq$)!41Z$4P&um zXiCAc!`9p@Vs%*DBGM3qib-sDc+jvmNvgtw;6VPJ3J)p}Xzm_8Qk}gcv4KlyNViL9 zmfYDpk#e+ayEFaBiqs*OAVa9m&L)UaWhjE*HFk;aAO)9rHe&CqT!K5h9f>}pT%rfT z*w0WaI)`RlP|Eh~iE4kZ?oBdgMe3?%N|9IY;{OXsE_iVMifW2Pip6(M&qxa#$tM*ho+f4ByLxaguA^V@v2L4qr$R!3MKarI3 zn9^^kCZqk1Cmw$gVYhQuE0lI5Z6mLbvK^%F2u0){PKQnLaX2hv?iquWb8aVPni<-L zt)Q*+CxOBZwF+)GZ02&qzW~f`_&5E?isX?S9`10%BgmpVs4^76?;5+|LG)2+`VgDl zT)81G{V9tc-&)R0^BKTCzBP3)0ps?fye{E5ZZD@vPI>s~7GkzDiQb8o)1He+I8J+I zA$1E-qIjbjdE1hCh~~rTLZtGzTCfG_8>UZ3ha&i0V|}~h&@1#sd$dyeqCLu@+myaN z01%#ww_h}A+lh6s`S;YjEw6PP{&YuPMiKpyQAq!~%IP)V9eJdkChOHsRHSTYZzGdZ zU(zb4{HrIVD2c?ObYw3meT+~VbA~obX$(JQ(cfA}e^q)POEBSK4iNWsLiVpDZhkDv zeY+1?$u|V{MJb#%$`MDfB7Gg5P7-OyM9PWCRtLvjYO1k|rWz>%sp%$%c_yO6d<8Qt zX&;Y(YTW*1#uxSg{1@Y@h7=aKS1KqpV;nnu)Un}uUeT6tFmdWf~f~G&refF zyZ1>X-g-nkqBwaPK(ghObcjbFfkPx*tXIe)4J29MjJjQ1!GVLSR&)>%s~stf^LK1J z#QC0@_OP{xy~4D-pxKtR9ZcY%2!7YN)0_)Z=rr)|BIQ5uZuQ;n^H9rnmbLCC&vTS! zVJ%@PZ`RCcIiu%ubTndXZA1MfJ(qPRqlz$4Od6dpG{Wy1Ya|!su4-d^HTE-l)VEs}Vv-36_dHVxjBCHjo*s5$_b> zn^#@f8`G{vbb+Tq5yxr-Q^=1UiE!H1Axj6j^0y9lN-bEG!~^B9nTR8?J(4AHtw#Ld zp#C9Ir@s0jwZctpuvL=JDKZ&qi9jy85AkZm&klO`D0=r0y^=U6XkhPZ#E~=@cgA46 zqO)k(7`3cijll03x9q_f*U`@&ZDV&;Eep3Ri!N>xUDPJ}h-%zJ2rPVRTl*3AHTdpb z&;pV-thx(YRM?BCY4c;HY|2J}_9uspDTT<2ltQI&x9W-MZ01nnZ7(JUb~mzCe(Y#w za~QGdCaYA2c(~wlG`Pg2P8dgLcEY_7EPB&ecSb&fkas%N{*8OvyI4P-Lha(|Z9+l8 zA2So#2k8dC>kHD6VY|4xtH2Q-vtU_Edd4G=iCtPZ!n#107W~;;V!c?6T#z7_$Rl;O z&@wANc35>UEwi$%2sWG(O|{#d)NVbOLCrf;4M*ufh!;n(Jx9pk4yjBgJDPHm&zQ_M zEQfzaWDtC|iDlJ%5(Mt9HF3MU7K#U}W@G@m39UK($cgk4BTP^7`mPSIKZ;arK`@~R ze%ILR@*ZR|4T_3O#&A8!+VOu4*RgZr(m14OmSdUBA*;7-d5p!l+aiWttjK|)@G zLs!y7JrVqI@?kQiL=MBE8rEY`z8l`!N4pvTy;1%c;we|+jwOGmps48?JV?t>5$nT3 zyH?`d9;9Je-n)ySEc`=o2=))n-J?y)KX@e${-Gh={-Ig2e|T5o`jBIgAyhbI6Udb~ z{I0QM$d$OIZR~R87(CED-6r~!atyH&_Y}t?N0ew9>&Ny?yAsz=HB*Ybaw^x@Wixrv z(fc#mGI&3=H?PEDc+v#i!_(7xc+wO&S7TB%gXWbu*k9wj?XR%{SK|7U{mUKpuON}+ zN*sRI-2Ni%gM0&&{UKjj^ryBmN#eOushlhAqPfz2`B&u)qPfx>%$4X5I;(LNoz+N{ z(_Cpz9(6ZO*5jbEB9*b&KT+3HbEOd7Q<8FGo+}NcxzfPBp!7vTX+-J4Q2H8ri;pO+ za@~tjTSPfiZCR~)-b$RDMRA^^n6lkVVgx|h?qx9?t-Uk`(=02qux4|9g6K zzqL@NToW;nu_rF3eF90cc(Uel?T_=akZVa7yHd&ZRZ6Y{P%A4)sA359KFu3`t4)7e z{7EY)cc2@rIlw+3u#N2jR^RGK6AdwwIF33=J%B@c{N77e?NVYN59zON3wzH%uz?)X`95^Qx0NJW zkmts(_7Ek{gR~Ly)VMIwz|s3XqUu~CJy?Wv?V9Eds~)7B?o`CyrP!2#5(-DxG#7VB zhcAq%DtcK=TL3*DaGm+u{rOqt5(sX&G{59Ds5S_y;Tfpf?sar(`KqnBd;{7YQfd!} zcCQtK|F^}^?%>ksL8Z}#rO{zh&8lq#Su!#n8HJCHm(tLL4uur;@``Z7QlM3Jr1W%G zal@*rL*WwzGiLnVwpaKdK%!6aeM`80WTagCJ-8I8`LWT|zkUJX@TC>u%Up!M!Q`0< zf%JEL{Rol%4&z3+*Fdq|{1f~k#irik{-nfK-m8QagM&&_S8UNPb$TDoo707eo1R|AT_B(~UNV>5Lc zqtp~{7oj#PC3n->!rkCEvpQx}jfCIWXQ^4WB!#{*J=bnjN==cZe{eVU-)$#R+AzB# z^`zMyMMH|lf~Fa?blkX9P-5@PV)uiQM47&S$)e?IAtk3;O=FXJ91WqoWIP!!lNOV6 zB9k$@iQ9*j!gchuB-jQ%m7%kUAC$^e%8#(<|lnH;OQzTWj2tN}61Ahhj>mI~r8Y^&V@-#T>%^lGz ztQe>&5D0JXsK$z0I?}n-hE=yvTZlykOJ{r|9R>-RKV}$?`W5tC~ zjm8Q*16AAeu>x1ARY5!cnisB8D~m4c7JaT;^x1CFi&dNwW5p%$$ffb{GWX?5&l)dR z3O~nJRq3(f5;;~Z6IU%=MxM-L#o2sSm4lG^swMa5hlJSvu>uP(2qfET+t2aku;Mcm zsj&hcOCbg~@0VN}kFXp(R$Po``nZ$*tn;EKQ3liFcHZeEu^ub%S4|s0jup6|ZKi4f zT+mh)eW_b?dAI0`-J&mai_TDOAjXO-;*r_$@QV)1hL@)r1Y^Y&BxKN7ag}$hSWfNW z9xGmCdsR19Tobpif~itth4{-B*mA63>b|k!1-`jYYwNkW?;1T;2vTCKc)@eg;I$N4 z4c}4VvEs#UHdAtr70YFrXRKf;wlrf-w)Gh1{e3ewGLn_me6?K)= zE&O^s&HW8%z&V(2%d4brrUtzZe-De?951T3JKQOGj(uA&M@yvDTjeB7B^}Mw?#|qiN4|NSP3G8&=h$G=UbpzM_eD zR^&EXx)Q92U^WO|8AFVo9cxQ5nkS$0Nz<& zQgI6@Q0b_fL!#4rrURAeKLG@|q#NA%ide~=B;e0NK>V($fCED;;H4GzT@dguY6DD? z%A%K4$YvNs0AM*7PdwsyNKnxz3wvG_Lw>fSxQPDAXxe2#JnTHh%;%Etp*TaQmv872 zj10Ex)yeGjIFV>yQh_Gn8CF|5-JDTK|GH?=f}T7aeXk;)_HeX<5{MPC`{I!W>_-W= zP8ocLi(jeBlU7wpK)`|SBL}(*jqwe=iu$=zg`N~#P+@VlmsaRMm8TP~}x7plg< zWLR~G6G_a44(|68_mc#7{H`hYQw8_SE9?gXxDO%j4>-6#NZd~o-0{1n++{GpSHK?v z_g`p6@M}tU5e!6)HyAvU3I=@@Hr(xM4hB21n80&}ovKI4VDJdFWr|=<%lmp>8^cYc z*TndPH9Wg`m{gR(0KaRhq6`N3`uAd}_#>(KM@mHw27MfL|3GvO2LCA0IT$QP8(dAn z;Obb(qa>gV2KZf50c9{ayTAPy1bmYYwBf?mvgp+QX@Y?ORl#5m1%p+cis&B%gQwhg zE%EJ1Pf%~AJC-_@NIo89uzghBAJra*_w1?t(S(%1_-D7qq;xU|gD1&>9z$bnreLtSbIIe>7%~{(cTF2Z27_t+?Wa{^;9_1^FnHR* zeJOF5!2rK&%3TJ7bNbuQ1aRkI@Qj1IP26QL!0#0IJ-%Q_T{3yZ0Q*^R{(+njr=-iG zhw~w8Sx6p37Yyy_Y#+{NrVHtI7L4_{WYT|*e~*p>3$7^!@Mm=-8=@G_@h>Ca=@)#C z|9{6F^7zj2(mrT~s?1JbX zn*BvGdpvwg(Dey>WcEGc9%Od9Wb#Ea`wL|D7o1(-Kc0YGit|RWH;!j6hrRjqCeHJe zMX!%UuZu+IsNLGn5EwqmXwTs@nUKx1gYr7D&-!JKZZ@F(+j5?zqfJ?nmmz=nmFkIQ zs#VzMh`0R;O`h%R1)CMjW*M=$J|e0V^z(wt3UJYJ8DG)oDnkrA|Y>7MBKa zLkWhVz`Fd{tMSNdEXfNbiEqp3av{pABnnT$mG~?9xP&&i;kd*rX+Ii8OdX+m ziHx$6Dnk+cPK_D=vBS*3;xsx8HWR;r4zskG=n87UoQc}-Tk-H+t;mn6*?vh9HC)_|j%{TgPm?lSV5wtlEcORw}=qMa$=JQ77OfmpuMg72s_# ze`upSs!QG^jjy0J^iTx9Ypn5MV%GqUtE^HX0>@R#qMKVse{3E7L2a^bLSXifw3C`; zYZ`lp9rJLMyEdJNH{yfoD`5 z)C4Bl+*(fQgeb}-_kC2v!#eS0q$vKgqsb+9Y^J!MGj3NOP|x=~!? z&G#r&H7AWeh}%C&{ihtTpYnhfgiem9u{|;P1M-gi*lIR=*hxr{Xo*7DZ%sS`Aaavd zD6koi+%Yp-(xyLBot^#)W#`8}j0aYy6G?~~L@qNA^hkt=6f_7lke?8Tx7AVvXiYlh zL_Xvd#K;;nTzDCR#lXkt&N9oa`n$^3)A*bAsPDTNBPu0FQNVk z!Z`m=Z_2gxES&kqv2@L}9SK&=Me6NI9@X5cl?s%!9sUocEhK5P(y!GOkvuqEpdHY4 zx`28;0-E=nKrxW0$*KlnIq7IjHR%s`1mxwjj)3EZz^syW)Ks1DH?A^^%f-Qus4T{1 zAK^$2@v?uWPLdy6&wkVeb)FHA>s18MLVH3DriuFWpQkPDwHQdY)<(3F@uvhl5FOT& zlkKS;js&j5pS|Y=BrokfUEScKHwtG{esUCPjDb>X<{l`u_H5o#0GGT^q3r#=5XzFE zhERrsL|Xiaxxpfi4(k7@d6s(?;gXgq&&05~7O>7XP!xl$_s zz+dt>Cn!kXd9hF9k~Tq}*TAcw%2G*nGomIOV>!jm=dGTBh9JfJ0Rd5~BP(0FZ=sixnh1_tH!wr8RH)uDCa@g62D!!A-2Sq zMK`sLe&05_QEeO-^Pul(Q#VB*t7+^nZeyMYIX9GtH(`gE+%2vtdK+z{prc}gw5gm2 z{T+`8+B^>$LGvJTm_ukDw259Y@auRMg@X{{#GWw1==V2_3M=wF=ub)>{@e?Olt*@P zhGd5_B;qm7DYuPoRaO*7c854XJmQ`UM*NrCv`ZsB=Rp4;Ul|S z930oui3xg7x|WXNqzI(^m#k_t5$%@p$nLIq1XSbpHoA&0mXQ!pa^T_Vs z4z?Q<+YQ8)sRuI8Pg6%bQ%I!1BfC~20twQpcTZ%UXAL$#ay_^yLkG z-1%)fkAMwnf+k@(>o4p1jymqVt#(Nr(p?^R#_vFl_F(Trj(DGp{SEs-A>R9d{S8W? zT2u>uweiHG4jvMYgrs*nH`A-c>9nt4I_)bsAmQIvuwMdxLHi0W?-GoRMFIDX@7~=6 zih^S|L0v^O?QQ}ErFIkSpNJg5&azLCCPIlqQpF*txGh%iG~ffF`vM&kp92$-{h8c; zZgMG<4BngoS3FR-VqE~1?3=(yuy4)V?m!U3EE1b*>Z!KFwi?xT^-zm8t4~09HV}U{ z#6yA`n($zE6NVckaOHn6im&15QfDAI+Nt4gwUdHU?Q~EgaxfeApdfJ_?L-On!GJ+y z9Fm9}#5jkzacBq8*4pk{>l-AJl`9lr;!^o)r^+fW760SA!yUb&Us%_ zed?Qsk~pCVe($BeiR}iB(7wDC0ox5!`v&z*0jC=F7V4W@I>KCAI-+kLo^X9qiC^;{ zO3g#B`NJiWi3b@?{E&Lh&!36%er8Egpr(^A_YYG<)4tqSPy(?c)+7-*Jk>Y7ng}J( zH@9?j2Ea^7Y5^eIRBkMUa%w)MBQhB<1&k9TVa8uJ;Xh z;CqYb?x^IzeMzzr;)l?*rRLe^ePbzs8Cs>>uUybxJMIYb@AHV|!+HF>bq97w&KT z8cPvU?JQqol_VknqTGOAV=*3C5wEcXZTcfM+oQkeHP(@d!0K=sk<8@q8tX_FlwV^( z&>+yjLLrX#HP(@09#w*v5$*~PrwKgLO77QK|3}j9_G>K6xP?Jr3fGLA1Bid_{2yLpl~TtO zudzxK@-@~`R3=_y9hHzv)SJapMmP2&evRc`Mdo^vh$f|4X#dnzFXDOH((ald4?^IU z%SZAxRyT68J+%YB#!5N4bDlS&=i8knFYU7Y8Y=}ZdZTbQ)tmV>78V_}X0AmCTWgrk=yAPzho31OsP@qN@9s|qu7$?X z_+0}*r{N0#xQjOYSQFgj)Fis7iP*+aKW;B-GNb34dG=y{=yJeQ?Ec&&fu-n2(2_tQSs_#9y?a<1N3o zpic&U(V}71uedmn#ws{Hz6Be8$_4fvz<7!DJ3v*OOc?aJm8$PS5|2%Igew#FNoco? zVKnu|FxCD@#lsTeSV4F-9aecZEO$JWG;r*A+DuTx6Jfi+zOoo^m%@Pjo*+S`Vb$pX zwTF?5a~7&;)9&@SJ)9Y0_}m!A!RHYiS!oA5m~X`+kzFz}5kYa>u5>|;V#sZRv#isk ze<93TC8HA&fW^a~;=%;%La3_5H|3;+hzl#iP#Di&!WGo%I6rL~8^d&eC%Ref=FfQT z?$`vf^#VRU@K}s&y&%@GssIrtJdtKK({m}vOwYwhPJG9N?63DvgwG`Uf3{F$93ML2 z`Qr`}vrfrbiHP9(5B{bkX(w?Xp73h*FBPBUE6%_wKzK6Z3pjVKg`FGNYabq!`EaZ2 zTfG_fC9YL50rEsF5Jd8X*c-!ih1U}?+9tD#oxvhT#}?R=(GaVsjsHX&vrnBv-a!5m zB9OjmK{9F4VxL5v$XSU*ZG3xfbb>Ev9f?&`5XeUD{2BOo<=H|ZDeYgaf~6JSBcz3# zf3-T*vU*8;w8vkqdSTM@S1TlGpiK*qr&v{YV@grZtF^SQfzFD`8U$8nXMMSMS#&vn zUk>baXFX^4I;#V0cRK623Hu`M5!&myvtG`fbrl`lO4C_qaA#ePPu>M}*2_(ub%v`8 z&J5_Rvl0;$$L(`nkXNKS>x_h~(_+icIy(^oSUkK2A1|fOx{x}nkPz*Q&U&uDvtH%v ztk>+F&I&Sy&U$SkBDlIbt6wYbtQYx|<<5GYue0t--&vQSvj%`jOX|+LB%rfiSAAzq z1EM?YwW71m7M*pLtF!KGe}k*D?ra|{t?(Y*S$DRVot5y>S$DRl&bqUG$+UEx6_qvU ztn~H4stR;_INDi#%c2wdM#uM!j_Vs8+gA>;{ZJWRs}@r_AJaPtu}-kPx&GXb(-|>CTFxOxKwewI^HGJSzejL!d24Mg&(^p!I9T zfwrknSq`*?Nl#W3y00irPV_uh`+NY>ifm@eh@KA!vee6~$%xW`=pb8=EAA+ikr~mv;viXt-w0XJ?(>Reh$U=<*m=biV&@f?G)lsgO!*KhYuZieWg1*; zExPHN^62XF=m+J|_f>zTw`e#Y26Zsb^K7`JOEOZDlts9w1z&cEbV=H4&~0unwmb70 z4{sT5m63r1`nMH3FTgmGbfGtK@#+v{J$#~mhKo|uSXXv%dMg)RUCwiGmI9RNJsdtD z&=svwQj&}unGBy22_Hq?{}JD+_9l+y(C>y-Z{k=^5nj;oOma}68e z@=WY7VqVIP{IC3EZB-LeE8LAuWeHOqos4u(sv;7SZWDMPmb!~_KHMgN;C=;eG~0(x z2^Y+mv9et+NfoQ_-KXGYmZQmFhZAKyk07o+lf2zly?Sg)WxX8j1Gro&>+LSfCmJPX z$;dHDStZ-9ENS^SLE==f0VOg_YZOSqLDB9;TnRY95Jvr)b{SNyaoCDYV*`_sL99X> z(jWZW;)zETkLuMC;!#hzIN$M`-rn%-8T`H*)Y=iXQt1zDKIPl(QIn_(kOKO#Ur8bv z8A#*O#&Yrb*H&;~`vW-kgT)AF4;HhN%ik4UDyvm9jEh8czraNz;u4Tr)Gb(!+*mRh zsbmXufCLbvkYuga4;sp z(m$D~12H-hBBsVA$0Q@%b2_6SZug`QI>b&)?w)~SCnO^$GT#`mOL~ykcVWVj6OyzM z3@a<$lMya2LHT@it&@^=DJ>XK3yFb)$_nrohK=r1N;(mdBZ&yUrJ`rjp$N)rFktZA zFWd*I?aQLymPfx*Lk0J)WV!tny8(LVwbYLEMb87sJHAEn3o&@d3o+akTEC#=WRj3O zRw#nsHIT}gZJyQ-w{rILW}Bz(Ubg7~+nsE4NYWm`Q~ zW}DMH1<5M>M#zeGpWaDkn}m&Qb9yJrHm7$gIfZ(qDceM4O}nYgHs3%uUD+@CTEFP4 z{h}*We-+v01yDz4n-?V`7bnA_Nah|FCGC~yHnTg~7f=tOA(t=s#tkr6baIaRRiul^ zHmgC91c?-9o0?M7*mQPq&Ng4`7nE&Ir)=}$WTc9-%}c7!Hec(f`Zi^o4urJX=B3=o zo^10nHkHgaFHc5hB*U_ZvrSxAvjUd7nl9qNbv4M9e(%_@>JJ)Lk!?O7?G+YORknFK z8O)V!&I-sjuW+;v;5plz?Jg79=9S6FRmrfZl5KZo(wD<_LBnxMobCMDMLuZ?p1Z1162Zv~Hws}3f43CFbaJIRd z=$>qIZZZN&I@=U348z!$5m%LMdR*VAU(+r(R%;xYZO%(ZZe$e<*=Blmgm^OBWKsEd zaJG4=^oO+B<}Jy{JQ|li?kBR%dUWUWt8nb=J0YN5--(@E{;udUzgjiJxT#9_3*1yC zZkhVkk!{|ZjLc^Xc(TpCqq)pBZ%;;UWhR_$ik_yk&D%w`d5g$4=X$cutCA7!IU?Jf z#o6Ya$=x$h?2csQPUg$m=1lT>nQh*ovdtOE2$!pD^RA?QsW;oa%aLuKPecN;O_bMQ zz;I@pA7j8+*Dv~^8Y;MV9ox_Tklg_BZ3kVsMcL*K%39W;csXU8%VoBCH%Tb7P5iEb zRGe+ng>LZ3UIWXbJqAX*4~!l?Q0AO;kCT1$K$?JFQa@Kruy`BrJtV=&l#z!b_+0}D z*e)~^g9Il)g5w586N)`Ktb5jR+`!bdERp(MaVTfu3rH%OOhGFAu7Ol+mtI1uvmn)k zfzk0ws@^EJ#|Ic?A+awL?D4w>?43rrWe`4YHYj?-AlW8t6j$`PX;3P9+>rV$jq;$w zDEM6isrV(vXknBl@v`Wl@o3|Cv{5{Ih`OTpbX10)r)7R@1Fh08F%~6_FEJLmmiZ5j z%WT4K98bN(XrxOIL8<#C#zUmt7-4h#-b>p34()!8M}LV&x5cAdUE00xdx`Oq`6b3n zF71BRdi(-C)Ju$Qx^yc_-7hg-aA=3$HPDWBGc`vSizdpVZ4%Me3E@pG;&y9#=~{&U z@FBd_6iUP4)_AR^lGXuMOQeKrk`dJLZZzJnAh5Ct%*u~_L};zT%^PFG!S>uwX|nSY z?^~FaM{AUS<~FRFg-@au(RKy%riJx1A>&O8lE$UHjq1|c6|`xg4Q}xGD9K02)+Dhj zZ3<<8fT((mws~kJtSruAAOSp3yyyA=Mr@0SfahK?;IS}ZSt8myWx(DJ1AZwC*xP5o zuaXheISj~HY`_rCth)@jaW5EC~w7s?xf=s&=_UZGL+6)eT#b~4&H^V+Mq;q80Kx-BuK z4NxED%3UbO(dT|oCSn$r@G%pYmpc6(BnPLZq?k*eaNEXk+23+$C+}~$?sl35SdG{>*jQf6p(cqR*pDL>t`QwJds9*XW&HMF_x$FYfG0@7>Tnf1$llKP6=W zrqUa!6g#Avq7;36(g16+hE6RxYzzmy6T)to6|vuw{P;EL?ynR#8gWO3zAIwkv)Pgv zRXt!yi2&v+sI^waU|Reea+b3ZbHjIZbrzyYUKRVKiW*k+#@l3lw3VY7u?wHxe*TP{ zDT`Wcqb~LY?_;}^{b(`vv1P)K!b=P6yI>C9p7Jg4C8ICij6~IZ`f$xwLeyWp!JOAs z3f~YfXFRiC9O7=?6UxkKUJ)MS5dk=hS&)@#r`$^3DL13%Gc5_{nU)n!Em?JZQEO!^ zysT^CLU;@9J6aL@l~z7h#CmZ(%};ucZ)Um1?Kc)o!PIJtm!wT7r$#OPDms>9)I^ z?hom7cm_J%?u|5@J<}dX1UszZ@4}G5m%3vOzbu+iOZ>dxDl4gJ>A01;*WIc_uoK%M zar9IWK)*NL>rRWa=s;E_U2l`%cLRdrC7NO;Q`|*6DM3-dq@hUbx}cZ|iV%c0KsqF) zL&YkTg>Ch1Uf)1l@zIgIC38I=%%wpbz_;P+l?8ccYzD;J6@ zwlU!?iyouq!=hl&TU=|Z?4u1i1+mWdkn`vz=W5$Nc33yLUFo7s{Qwe8rE zJ(E)P+qzqdiKa-Fa{gXd>S*DbdkHH+BqYq8{oa zYP7N**hJ|m?pYK0Xr-D+Xeq=DpH}K^q5;YdV0dFkYN7?|uKESEaMrWb)kNJf#JZYj ze`=!rMH2~DXrdcCI-2OeB|KF#vDF)02`+Si>Pm2)vgiX{qxZ|SyJ{9-!u2Y{XSKKQ zXWxPN?;{1oF%smW?^6zl0rR~Uw7q>cU?nLs4t*GK9j?}(=`>)b=Mv17ZkPiBvz}n= zB7(7t2!_540_lAZ8GhwyK+@Eh=%!?z(kzH0Y) zi-whGvTIt=od23uH0#zeWpZrO8tZ3<^fI~T&zz+(M|Y!SfqZX!zlZS+bNtMxvb7_ za?{$xPWcTDsnTyCmw4Za)oT7=i`ofvGem-9x8UKBs_vdkmA|`EW$lJk^C3>$et-s% zSToK*Zle+idb?ZD|I+VTq?HuskJ5CqJKXI5L+iCl%bj*AwsSSmooW63Wh@CMvArfcckcle@7ktQ!o^)d@%0lp8_^{p%y+M`WK{a6+8N0qJK&v zp}_0*N9iOg43tP6*QMyMu}#t6X;6;-DT#zZ_e`SV^b#TZ?~z2i9sQFI z=e$oPP504T8`rVO%lB%q0H==)v{eNh^ zqXN0BKIVx2(i9y1Qyl+8%XF)jqm2HNqc{3@q3GY1qJLXM^xwU8Cw@QL4a+1*{a;O} zWB5m-0Djn=)^N%y>8w_F`lqB9b(kJvQ3bzKGk3?Rvj=?X<8k1-7O$t)B%-Sm(GL>Q z_Y=|gR>v*v4-)jb1!TB)Uhpmov*b2XE%2(RzkYri(pk%aRGTI;+t)Gn6<9AWeFbNIAadlbhT(VU| zTCt%2>;^E?9J1A%JiERwt%m~lyW4Vyt?;|1GEWfg`#fZRE*X6`8MTwqXOhvSO6G|q z^HZ+&eO60nbJOxa_A|P4DGJ=}JCI~POSCV3?fy{5uv*_Pl z%Sb`-VF-zUh4Zbo=^c*vKE*Up!>iWw56L(H*CAHg3Gm%oTU3`EUl}=}l10Poc>2IE zARtVA>^LMM;e+*G({phS=Xm^y*ZV?<{Mdo#aQO>&tCFJew*xp)$hY z=MuP(LA+!iOhnFSAu~uw{yIAfMRWAav^LjmnqgUWEzA0$ZpM(Z36sVRosuylGb1xA zD*%p?Wr}{*RgKjzF$|o4MkB!Tx5eSg7+^rSAT!dG;k# zzg6}@u~&H5MF?L9l?Id5MwQ=WwNPp{S$!?c0Y1Vom}rar%_OW)15}#4q7mwR`Zv`q zn-HpB|HDvhQ1MVynU!gwDdz*uYeL=rd1m^#X8Kkrj7pQHZBXaav`EWSK&XCA+oRYk zrf%tWs5F=%iYl`i?vZTkhR`P#Xc_JWQqPRbsJDmEanIuF2M$oqxbT3CA^nD)<9DD1 zsEAJ*uDTKABd=iWa}HG4Qx633(;d_;YYK`WqytX`5(ss%#=C&-s>0+;$3Ut-3)TI0E>kzNZdTpwoXo5#lG$X*Y?5SlmSi?jGaK(?HjYRadT3kLSSs$|DXtq* zEUk0338wi-o*hhbs+Xj8;OUy!#Xe#e1rxiF03n}aw7tMcf0m{{!$<$}VEUICiOtc( zuJIAOI+)m11n3s_N)!Fe`LYpjm5q3dY{Z*1-+4a1H=xArF>{H&qxn?UaWj=qr3#sF za0MI*apZ2z;SL{%+kG5v3*-PY0}oPNs^39~)9@|Tr|Mf)1r@;*x`-p+xI+}mnTHtS z<{7APhZjqA$KH(;c8^9JH#K#1;_fJN<59B2Tq`tQAHws+O=4hK$C?SmHGzSC#skcF zCu+Ro2*?{Z1>Z_D{xFR{1VHZKaVkoBrtAv~oPv^pXFGf$QyL)i<3=2$to54SM}X}& zbkdm=EFE17Ux^qp&^7o78Y&#*d?P4jekmz_t|@*>6i1GmFzH;M1Xkz^7dzpRQw7nw zIdyB*tqpf-+*q}4oyJ6J^5mhT^*DhnL|Cg)@3&Bg<~#q z);VwRv}3illqY=+pJ=7Oi|W zhrq6=sTeuRS#hQE*|RnN(MJ4ketaU#)}5yDdm8b3q`^N&;~xVkf4*IY(y}p=CQotZ zICEI7-m1!(=TH?3cCIGeN5MIwiv~MSgY^sKU!jow{L599lfO=i&ewzo2NE8nu>FJw zqKeYtA!Ei5ndVD~2Pniqwijr&mBjXRht9$ol2q(l>PRS}4tQ;&i!{v>1CdWq$bMCh zS5<++UaScZ2_$@~!uAtB1yyDnovaW8*-qDNhZ9@(L~R%q`Rp@P5p>u`H}$2O-bjG; z8#!gD1L_v#ke6ww(SmDgtkb>eat(6^V7$GVNLkhx)OdQc<}pL!a}SuMiH%Dm)|(pY z`T&-mUy*qCqxVt!X|Qh`d-K`&C(_sse>w zqX|D5NO+0D_7i>rRVsk^ZS=T83}pMEX8R1WJw4+R8mh6_n=#R{mQs<=K2Ixx4*Te) z{z%h%7GRzLa<6j8^%`oK;F<~`x;K5IVO|7`H-Hc+%X$Gdo&chGY>@ce13uNnUQQ#{ z+$JgmxuOYjqT!f_IdpuGSzh17o2D*QTFukwH~4@SE1(4$=sq9NQwr#Q4RjL((P^#D zu%2d77Mck>s0rMXhQI@60uO5f^FhFC{pXnfLuT})8vSWE5Yla}<@*}wJvR{2y$_Tr zR%@UY#y0uDjQ*iUU*iMXpm=fELIm(dBqYnF@@w5i>g?xtF>6O z0ar;AV=)ioHRUTLRfngGmv^%iQBMuioU3Wh37~ncpXPx)JHIA?Ce<*_TQtoZ18C0k z)68X>Hw4h68m9T6rnwMcDuVhQctHTi`%vZ|_U;W}r-!}AG`mG<**y}#?%_ao4+XH( z7F(*>J(-r>k^pv31hRWPfSoqxkDA^003%oQJLyJ6z+d&9MDjYRWqqrVyjA>K8kPO0 zjsrdY?iuf+QP_PvvOq`KW&sEqx)7^%6)jW<>(e6T0W#4*x6^GmPy_Z01k{tG#Tsx? z3vUw8P<6V;G|*jv)EaS@e$-6hh^Uf#|EO=35hG)S2^=2vN|3K4$khaznt}2)P@WH{ zoum{BN5xWP3k}>X8n_hM+($!8(@EpDN~2CkAAtrqFu*-IrU`U50)@ItNsrXPU4kVo zG19OqG;V1cNy~i%nkz~BYXbd@K%v1>(m@({K(M3(jWn!b8aI(f(xE;A#Y)l1Yi+GFZ}4MjF;R8uyGel1}px=%pk*PZK!T2o$fGp~p{031LE}D_M$+ef1g0rTmumtq8i7J9q@=HC;Fp3Wec4FE zTBC7aOC#xOAAy-l(zTkvhen{#$5PVu8u+7NN!J-^SUuaTF{HSC(EBpW>e1die%z#_ z?5&YI0ognCy9HqQP>UJ;7>!>zc$$HwkBRy`_QPGy}b(f!;O)y|01ZgVU1(GL~>4T1kyT%j?Ez#eAGf4E8B<^G@)csQt_g8I~NKUpi0ko_?6q2`!C3>eojkui( zAW>=)0&l;5yTCiz7Q(RzvDWGW9;Gth7fGG<$M5E6%&S^nSt*kQ?Jg; zsQQJXs@SfwMpG&SoLT}&O@Mo`Z}$$Yn+@NWFl7`l&>1bJBX&PS|Xkd8!Mgx6q2Kr6|Re)ok@nfb;8ac}Sn(13J_V*fl zqYr47G@|u`209%q5|f6GpFDBsq>*^La0%@ap|>ps*tu^eutgI%0|dM&*;U+-o6YDy zYxHrX;s~`thJAA^iUy7vI-EB7ix&)tj}=VvCnL$s?b2<3k^Zqwv$z5DdJdg3Zs=tA zrDNyTTtDmUQB*e6xdU17-Rk4pU%D7=GnKi=Uz+2e25@-54h^&bymTK>+fk}cVLksg z6WFN<+z$d?%f}i0A0v7wtHZGf9q1VyRCst8WMCdwlK2qHyl))@=?77R9`0xvQU0%i zCE3Qx%I-i|!_LTvMmmfZIO^*{7~1H zXc5_KckqU_R6AK&2NbD?q_{)+ zw7a8^)ClfLkf^JWDDz19ERhn%KwRtxe+CkIf<4x-u#Egp|IaDenBVJ)bldv;MX+G1h4J_nM_8x4zv1w zwaB0*IXKa%2TmlwIVe7EI7wyU083uRSyt#=6#3a_-z4mmbz_HpDUryU*MW~RWZlq# zk1}LkBkD7+7WJ7|iTcbdMZI;Y7QYG%f^2j#%1z>5ggWWI;$Q}E_$3WyiW*J~9kVMd zGy@gK4TsG+pOCwXtOPPzpjB_3-0qP-87J#X_3z=R9Qu{LNx7|5zhI{7u@OdQQ@7sir$!q8sF4a zROJe4&WXB1|g3+`vc^3%&WnCn#qRnXFZ7BZP6P z_8nulmclq|#N;uegz;Ck64abhe#_KaN@~uUZ@4C`sQIf}pek6kNoLiiYSjvaFit6j zYVD;k&KjXwJ0*<2Dryu4J>IjmUfX$^7N#T6b>I;J4hM&er6f+>MT-|HN&HoX0g`NH zTb^x}0z^u&kNXVdk7op}tP4=iDvRyT*p8LGWYep9s_#tz; zxKPYvFVdus1{FH*>F{tdyY5C66Gu79#mrjHVPA zzO%4lMkth-bG!U|K2{)b3^4mv`MgCuvu-S`Pw-ju3hQOSw3#;)@>rWWw~)tL>sm;Y z$;SoDAx&V+=}TgIHVKHp(g!t$m~*V4=5!_zbB>YJoHfD&%M>+#Rc}-Ucg$;irV@R@ z3S9>r{}?+5rS1&}oY2xlpceg?lUe5pVbVH}i)XFJlV>(t$+?!NRN*4dsH#?D?QpU+9-KP#WMcv?^D-gZ1_d;D7%|2R|x8^01Y2ID7D z6>P30Msq#GI3A^~(9om|uMxf9J>8GD);Pr)p^UaUlG>|v`!UHD8#9Bov zZ~P5%`-a+_B5%6T0G*1{vN{^Gwi#$22}Bs7LyN>)*v1<3prSx|8<`0<(YOZ}VSeU$ z$5Y1R^WG4Kte-i-Y(_6pMrShZl>3_)RpQ`#`jpoE*xjW<7ofaW5*U$2jtd_7v}| zdr-k0##eKgK@eJi%WMHrFpKy zOD)MGCP^MPO7f6Fl5iSHthSotVxW7PyNv-8ovNM2d)y@HV*!$ip*d=%TcGJK@ypZR zj8~}fo;JyYJ8OMjBjo8|rdzD(J_B?Lg|0IrMP|%S8gm&iJq|ATKIa!zEHytHAgZY8 zXl5AG3}2EAhfKy{MAvJHP(pQIyVRQA)HZD~RE!v3U36IBD|=3O%mY#Z0WL zCiVsqb4Lnc$k&6otVCg8_;?K!!QtabvlOLTig%?He(Sy?YaC%o$oDo?c&)Gsg@N+D zg^FPLjxx%Z*`rvDJV$Fe*Mf|1wEK`G898?36dZOOHWtq8cqO+6bqOv_EnN)efZNT- zw?D^snvQlah8jWBQ89BstmvghS|23RIur^5o=Is>16PFdGH6RLS9@#H8$cy+Qu+y1 zm?xzJG==^~cGe&b^rcDIfky1?<3-bC9w(nk*;ENlHEuv=6RHKslQsA^5W>@cPV!OE zBk*uJ0uPge%}_bmoTlk*B&C7|+V4=|^+e&(Lk#?AptVldlsEY$9c{owt4@%Tj+c^- zlah|r^fsF${n04tnFf9==@d=*ClK(3_sMQtq_4`V*4Y~K7hncPrEPv;9*X_{LkZ3DG1fcCyni}W|hs5c5S;%Cs= z%D+(V@z@ItbV2W8O>YjB3RTax2Qo4F++=bxf|G_mo-xY(Yu^k;MQ}>xf4eY z!JY^bUd{|JM0m$^<~nJDIhyV@#evfqd@0GZ<|+mVG-hr`HKDkLn7I$_-;AQ5?73-2 zFTLqJ;DBDfrguA#J~BlJ}Vje zLzQh3tdF#tCsI=p!-t)BYl{6>m>fD zju0d$iATWgrpdk+MD|_Mfl)o_d#QmR620ynMf!fUCcPR|0@L>osKS`OXO@E!Z8__! zDfKb1rF;e2^w)rEO@j9`PyqH|jlCY&9tU2BqM%qm$VX2PW(iI2Qy_aBTMT9!NKAL8 zAcm|@P!a4SaU;Xb6FQ1Du;V+5<+$TIisiUUEy$N9eqR{*eU6$S#ghg(cs1@+Dak2P zl9Qz*CuvE(HA(V~QIf9>lAM@E66-Y0aU;+@jXK1D2`?TA4d8p3Bcukyr3S+^y&p^( zYzojo3CbhH5zl8%#-j+K(0DJ4Ba)BD*Z=}$&U#~Aprq!TseZ6M$r zG-=0`HNk*uh0a1GqHR0s#TT|>S)oZNbZzfJS3FyD_|?OKZ*!Sy-~h~XH0E|-dODqG zg+EZ?>2zZ7{T&tFPA6)n85w3)N%LPU&3}R(1t z&ozjurgYqbmuR7O5o_~IiPa)vLAgUt5SMHedR#!n-7HjiT|m^#G)j>8EN3+yLre7VKGRN-x)eNY%Ee;rf=%YTJIey3lAZjchs)e>LVF>p?Jy^os6H_#@J zYTUaZj4xBUlSH2|Ja8BGA|KV4)y(h-P4#gjQ0QqX{!SV`QtU4LuS!vP9lFhBc5a;PXa3h*Vka!VX>d03VPtb!G!$J*&P3o(Mj@&zTfpj|nLW z9QLT^Bc8Gcl845UK_kszQXrW_(vq=`(CAZA=ngv^Za{|#^E7I%4@lX;YNmnm%|ItdkkF zM5A``0cn$U)j(B3yiwz($gTVi_c+o=KnQ4sj*8(V&)5-8EU|t_yXSjo;+Lc$-rY#N zXFB42H1W$poaP>sFKU}!mWJc8Mvi^caU85U&J5x>$Uqf_I8I|$`hav(oS=bb3)v@5 z8aaH-NLw(e>Y$G+1Igl;rkl65Qh>!3QSE7#+qGLzvP`nXM zoi05KLZSUeOV(od?dbppd+#Y!z@4c@oC^{Aj5x<-xibvxfjCYh&I>>sYet-)5pNDa zya{CkN5OxxWXGr~;1PbjkzlQ=7|&>HT^!@pfm#>Ecy*xG1#*NwUp#Zp6L2}_3b>qe z1YG9Xa;TW91-lhOcn|xDL}Q9U43TJ9+0$TX_xY(FlwF9CxlY|$R;>#GG05@Kq9^KM z&Pz1&=>`@6x>N(*4ha#NC!afhxZ`cOXza^{XQ(=HF0N`3Icw%+Mn{;XY0oqZFk1s% zVFtQJ11*G<6=TN3?er=enZvRcpu+2GSNkX)Po|@@D04K$C;b%3fR?oc6$8hQoaS?! zCjwYq>tl7AWR-cNaFWbLmYAGb#67N25CUaAE(FSYO!lEiq@WK=K_8NW-mlHJ&?wY{Bov>Okniz?RF6_| zv8Sh4p~X~O8-Y ztY?krp%UZx zaAA7Dhc)1X=>ZpOz(>*pKCS^DO%M2_27Dqt;8G3vRC>T?HQ+Pp0iV}^&!q=kt^r?2 z5BQ1(d?`KPYZ`DxdcZd{;L7xXt2E%7=>gx>fN!S<{6GV~mmcs#4Y)cz;5rSsHa*}c z8gPAjz|S<`hV+16YQWFa1Ae0cze)>OdsBB_D5&*acYb+M>)Y-kJ^7})NKd{-J$8fb z^M!z`^QnNVvq8Ys`9#8fEb6n@cRv;}CNuLR@wfGKcNGqnbayW;=2_NL-Mv%$@f;nj z&>GNvJ9ghsn2hZlTZk?X z6;}2-01q6ByDRh#ex3QyDG#~V9%nx2XzHsyl>9IENHLdtsh7{JY zuot&sDw=PG1uW~}UfysyDgQec06v>!-+)q=>Q4|7 zr{q@cn@}0Fm#Bi)4{hrCZ0eIi0(fVvLWu8W<#=ZUXeoZyM7E?OvNIUE0?uKu{n-*b`&(bt?$* z`l6hpSU0WUA3`9fr1%mb6#PAqvQY3hC6E(MRQ)RGIVHvS13~YXKzjYSZkwX#L=#n8 z1JQ(nrDg@YYXx@*ft->G1^*7DEVTGb3FJf*ReuJe34x9_3)E8!l+g(zwQtbd1+w%8 z-Dv^Q#Q!Q;{8c*xWl6G4dzfW8M$1y>2Eyy)r84cY$~915Gf+PbRAB}hq=BCA;^;JD zA&$STIM9s@Pt{_?HS&uFc{&8HX5Tv_d2LlCBfSjC4*Qtf;lciuIWzY|oBk25berdzjg+<4TjswOefunpDebNYHb4Jz8O!$dv7%wq1UaA?dbuf@i`5Zw$be4;^7GNy8*VAso&K_%P z!q2#YoN7O(fz}6d5%)$uYbNl#Ca}y61X1d$6_b}V&~h`-D;nr!GtjFVXoVT*4GmOW zg8r*d%Frco*6U`xw>93Wz*7#1We7T-pOJwztW|DgSW@fwu0}r1fc%ab`F)N2o*8Jh z2KvAZ^q~e?;|6lJ$9fGkiVP$MY)3F3iBfkk7rQyv8A;~+BBD~xHW{UU7SCGW%D=x6 z&&;o7)cQ(Btqod~GXg~!BSi5B^V1D7eqxXjAL|YdXP>1BXP^7SnHBmJh2F&mQ!vjg z7h_yVJhOI5v-~5?vO}8XZ)ujlq*;E`W*HY~ma#tVJMiM%uSV^+2W$U(8twn^Yi|tZ zIpu0Dd=^Agea9KbCK}2o1eGJ0XO)}g&LWs+m%FCJ&c3*h7G_EiaRl?pj&g4>uU!q} zI%dXoHREXx22LxS?JU>9Ty(Gf+=QJy_5e+Ie>ad*?RpyMyg)7@m>*~+&_ENY?*@V> z3oy{}{OTYL)X)cXzXCc$108GzI#dHSGMZd`2cof=$Pt=IlWK?@ZYGkiiR4y8B+pEw zg(lM62lR?GOy&@}fvxm;Q@Yr|q> zuSa=rzKxe&8=;(2rR+~ooE$qLbunpG3uf{$flrz=9yO`ebV|!9rqh2}*t_|sY?keK z($zPA$iIJ=&9p@~Q#;s?FY?!oAzqtAQ6Ah(ZBb)trZ%VxY^K(z2yUhyt7)dqhGq(d zehM~d=vS1xcM!2fLqC({e1;DFMr6i2?yePv4s9iHkD;y5Hk9_@T?2Z)PcaS2K2V1@nH73hH4weaU12mfsKM0T$k0Sy(x1 zRg{8As4jtfeB0&5O{MXUkk7;Avxzk3!P=NdLrb?YH*hrXhVo!zmZHXF%%e~jXw0st z2sUQJYK(c1(U^xAjM*sIn1?E3s;i=9plDp3G22MvwU*C_e72It%-6;&gO+Y%e$FwW zH_C&J*$Xu$WA;Q{pfP)(BG{O@)fh9+Xv}5?V>S;qW>^|?7I`LKUuRUcXU}X=oiRI0 z<8_kHj`CS7joD5cvjSSWjk$r1S&s5xWA;Uj$(Vgm7ii35Q4ws+w$&IjYBXkhgE0$& zjajISNuJ5Z?7+tCP@OS*O5^pA&+hVhv@~XkHs)Yx={DwiHs&Cd2OD!BYD~r)fVx0q z_D4mqF=N#jvy0J~M>>qzl@hFuWE?BhHQ1P?(wH-{VNALazN(mwc~o`A93YL?Uq1WE zXN5FonKtI}(9&(pwQS7eP#$c|O4OK)nM7TnF%zf=HfFDCjM>|0%wr73JT};veWfvH zkuljbJF_wSRAKI+8zXE8%YM4L%|W6d$z`U`VWm4OwvbwP&sD2*Z3nhde9 z8bjP~FoYF)ko;omD81e*M~nw?R3sF7NK}d`|Isw^Tt{{Zg&roujKk%av=)#<71vV* zG=55J{F%~Not4bDtWSe9-jGJ)PfQvwsYc@`jT%3lPUEE}jh``U{JhrqYpF3(LR#Xn zG8*7Rk3kxLnMUI;Od3B|jmFE28o!WE;}=aDFL!Fp3s!Sw8^5YG{$6QJZA=ad|Cmet;|{* zM19UDsK=s7&c~uYXT7M;StkSJT0Bv2y{#>{MOiRgTClriZ4R>Fk7+FUgUNz#Rb#b^TpucGSz-urCdBy2W>4u&E^C`Lp|XdwxK04bzV6dpHQl7($-Nuh+LcLYSFH#BAgny2x_+gxtw^UE;6V zFnr!s)5FkTe9~z5kRAd&yP6&ZCa;pM*-{nzwsMPXL~+ z`Nx6D)BIz=WorIWAhI?8_8^*nCs*_DQDtdUjy?iBOY=*q%CzP`CYub+zfba%=05;* zAk9}ywXUjM!ZHa9HVnUVntvWDiEG~OAw36pw&tG&CQtLv0GFxxr-8`U{1=00{>xm= ze@&HTX#N|jEUn>is%Th8h_Z(i0G`xvY!9hkls8<$ItiB(WmZqsam6brWn7td59wvV zvz7T@VDgmt5^$Nyd=ZFjWmZnj>x@SjKVLO9IX190F$T8*MZAa=4(J?D|5sk%3MBI znJeTdbH!|Bt}Mz-?jfx-m@-F;^46DdJqdpx%3RYa^L>;uu1vd!v=s1cWxfYYo-*GB zE>oHB0FkZC?+v2NQMt-oD@U1YXDjpjs?5ZC=sJTbb2CxiPbAz_!XMi(+{h{OQ4(|M{E;X#xra1nFlCMx z!DWqt`vo-)4xE>oGG1Cg!F%?DBD7P-nCo1@IF zvX!}wC^NZ-wDn-hoGQwjBH^wQ?jp+E!6~zByQDJh9#R4DY-L8koES5ZTI{ zFo-fI<|=bijxu-5R_5fCGVLDHPJ=0PA5q@k68=oWpNcYfbIPniDdU!D_mHXq&sJs? zFnP+X1TIsV6+mPwbJ`%voSv)98J;pnaUIQ`(TiqgD|2^MX2NIA%1~w)%?5OU!Dl$v zX|N$B;PM!Tm_4LlS#?*OEa6E~4aZ7&lnuip!OZR<9RNMCI{ZDP#YT77Lz1@zLcVIS z2*A8rSO{EV4`~lGGCDk0*LxZK5vih#GDRuvAsq*`WX*^7X8Q6|fz94SIuV%6nR0v& z>1?OfLqrk&9@3I5MI1bUA`Z$^#F>LA;;bA+gwZ*)i@deJb1gEtaur4AQ8Af&NEf*h zAE71o_K*(GD)C_hl=#rR5??S#i7(78@oxqy@o)1={JY!|U*<}Dtd!W_Lpmm_#77TM z;-m6Pe90gszBISQmk(6p-{+P14}OVD%lBBeyxNucBrUPGhje0AiBA}y#K-5A_{u>_ zd{u6VuNkPs*XEV@y1Wus-enzI^}nauJ*0n4wR=c+PPKbTcUXMI?Z9&n={Ae6_@~8J z{6ie%EeN@XbiLEyFI9uy9@42<8a!nH4W68*!9NY6!9V9}@b6So&L+dnz~yW*{1vF| zO@S%$bJcrBM)m$Wt9nl#pn89mSH1TPQoZ-)R_`NJcuw^`3S3V0 zJ_uBH_5Ozp^Q!lLi%eJV13+X}??XTgQoWB0$)MF6zU->wT&a%a9@05kRdV(KRdQBd zmAo`amHaoiN?x%_%0A8UszoMyVmRYBT;X0%v7U*uXdJi|-WJ1r%Movk+t0FYFW(4o z87F%$Ilh_0ngc1w@V;ZaG)34VGK3#Gq7PC;y>b&+;S&+`V@JFoN6@}ZK|ji2ErNdO z*nW{BJX&uf``QtGl}{8*)Ahq|QbhKyHhk{AW|~>iEw7xm6ZUHgg$f%ll-n?j9FsF~ z^;+rWTQedKrzMyD^bWYfG_Q`_CVd&8(~?)c=}1?$&2jrzVL4>ZK4_@Rd`NCi!!mNR zsw~tCo8gYlzj@bO4_`rYuk&1C&hOQw_`hd#Eu2P*HkNmsMhuuBT+tD(kRtqAYjI^q zv{H)b5V6V1u{P`S&831iv+=@DM5I+6lPz&g94g2^_O?n6-!NJ&Lv3NSX|jS2=48aY zHRZl#&kEWOnX`hnahY$Oo71)#Ia#%a+q>lBQpxQtbZEH~9MOijN^WXr&wj04vB}y7 z-i>r}Nz#4hgzNYeQ@uJa+`%!Om?GLj?iDHQBr4v~5l>1HZ(xX}JUctW$tl8Jg=@I0 zBibcJbhw%Oq0mzu(UcU?FO_JzBRU!vre$d6D1Z~Ux9tfr!f;xOsoo(M&Tve3OA-BE zH8Wc@Gs_XrOc9^wX(rlN612JmbEaWSA$>va{1hL(>L_X#9&L`t?%6!{OYzV74f$->aJod`w(VOC-Z|+8mg~uYt zWAG!s9^4<7e4C4oLCPW4qBI!efc!v3E9)gHt^81W9z5@Ho`**e9Du ze~O2mqlk_a9!EGH#cUpjr+Db{QFM&(INI^}c{Y!uQap4d6CE!+j&nR3vUwbv;-Q0# z=p^BBqT?|)o5u+$9@@1>rwEUe9goIr9=}NO(B3CHO?dp$@o38CacYW(I`HV%!sB$u zqdA+$uTnhJX+~!Wk24*QmTVqpqcZbSqTi;7R5#%zj_BePkrqC@%n@ChB66ksy(79jMf928U3Y~e z`a_CnJ$Wxayvh;1yB?-$SY74W`jAV;L(S`tSEkaA*Q@`oacP$#ZSn%capnTUtMijz z=aSdpZo*jBTbrz}O{HB~%l0Ri_Gd_&7)e@t<6*ErtbxE+I}$%5FM7_ZMy z{uh`0gtRa>=BK;KrMn_G+rQ-|FTcY!lfvy1{!_w#NO+44!<$_;*JLW@YG&Tq(!#U7 zc39RIhF9fE^!FTz!su2EAgA`VduN2rh}6B$Z%3vWH2vF2^k-xfzwyT2=lHLjOfaOq zSBiI!6z^`w?3vM7_5L)VSy?;<_|!46LO%)6w1gt=N=ag`zQjpp6gPHar%#JpQK)*< zN>~1{Nc)h44~oRp2BN1N(UU16cRS{@j%d#fOe^$vVfG*>)e4`<=k|i* zb|jJ}Tj7T09O(1;$zO8Gk4+2nVt%?;T)NA1vwb-~`D-rubx0mJG<&`1tNDrFaEV_} z5uK#I?kz|3W-d|H2V!qa#m?T7@LjRDcN~+?Hq5rSPXSNc+uNxuZSBYH?fsO!nTwgN zy?yMm{wT#v$NS-@j_8woqR$=CFL7&H$?Ka>vVNAI?rWFst9+thx?6=w5#6tI!pISY z)00aoj;PELoewdML-E$X3aNxn2^B73c|K8g(Hh?Ywc>GUeBcSOVUiI#UnBT_``>XP6Jj%Z{)(MpbJ9Byh#*362jgig*? zT*8&}iB@w&tL77};fPjG5xK&Qazwji$oaigLMP{1F5#N_MC&-BwNpe+gdaGf?@!M= zQ@FVq;;oxv;;y6Gz%f~W5GJGZnQZKsY?LC>Id792$8;WR|_xS zS;EOSEbJ)ZBpZgCIi>E4S6H&XN7o8CPkFSoHn*8;Snb#lm$=Pmiuf1ZUpE8xc|gcX z7Po9`F)hI0bZKcd*IuLflT?N3)m3w+%3Mo*t24e38N{%WF54z<2?KJ z8b{aec2|6+0>&^8$)=k-{zVVZav@U5s`#>-mxOR-P!^UQ%ES<}fU=oOBlvZ2Ltyhm zpN{wCn83s<3S}QylPY`PhSl%cu@viTLBlqU3q&9Cxti?4Xh=2!8k#aBFH@r8#a{X+=Z z1Ru2FkOwTh=6(tPBjJ4#-ir|QRrlC<)!jC%yvxc_`EQ#~^&J*oeY@aqlklGczg5Cp z5Q1Oz&4RzlhBbe);gG*bcq2m4)!ZQX>up&1XA7_Rla%w1QqJq7oL5@9sy|5hd!fJF z#w#wfVfm$2{_;y~`tpk<{qHQk@LL;JULf@6NqDZ{&zA5k8-}MiSJO$y(doMZdo^N5 zo-R#Rc>)WvE`!+0JN8oEqxF$k6oYic+ zV&&b;7^PyR-Ru};d4Z3xVRgO4hf7#z!@_b1!KX0H#>20je#&r2Iz4AE06GgFCvP)` z>Mc=3K*UdXxb>qDsKlWVhYN`7!+Mh&B(RSO!*8f^T(c3Yhpz$5JIwhNaEZg5_Ck;^ zb4Q!@LXfZGl^B*Panx=oQq#VDJ-u$+;~Mcdtl$h6VlD}ZDv&bfDt?YPD5I#F;Etx| z?jC#KqQIrqm(U^O;-(?MP3LR%T`{vU+K8%%?8fj5-{IAlZ1B>38Niv1n%RZX>Of~6 zGmUD1*&!>V2#5jvP`RS99iQc?OhYvdH!L3s+Ei-~%U1wc*43;s`;05GZJ1twj*Kzu z&@hNGt-jRq=_@3Q(cm?yyP>hOrKP9YzmGr(eguLY7ImfYXlUc40cm4F&Yk+j?jl4m%JvAe|<2|Q=9H8mBhbvszy9`M+xTddD%nQAcZu6!?% zeoqN^M@aWD!^SJ7i+h-6-9up)iw`HdQVxUI>E=EZ(0KE-gY_XSWU_hI0+`o4YkAH#7MQ8(dA*LzU^88V;x!k#(;94dy-Yx`g84 zajah~4x;#<#})7Fb!Y)n?kiHZij?z3%6U%8?`2B42BGoeF01DW*gS}UEdvM`wmU)g z%VlG)6KIRGfq}W(5B7IVItO9WmCvNtG3iMW=~jB>zic}#zf;0HZ2PRf-Nq|#lklGs z{zJlB5u%-!-(utCH`}o6@3y^{-6X?-zgT$1je@^H!s`Y8Ckg+E5d12x6Z|zcth`#n zt0cS$Pe+tWnvGPT6?Iv(BdmDknns7&y(<6gj}*X3n9{1o?zkS$4Pjs z4GTw0c$5vpgPc<9aAGoR9fe97Vw(^Q56kzBH{m?6MqELj|ws!+Wt z;UYBn)RM))bPgF#$y|~U9Z76PFK{^E7)xL~CB!E%V4hE!&ixkvXDwMA3b;2WNGAIo z(78(%7b`M0$~Z)!Sv`Ijodk5&+$4-n1m;^TSzLl--+Ia7uS}eDz@;S$nI-s378}hl zBkr;dZCE|phE?m&FeB=!^=6n6b=41M*j2c7Exz*mz|&;cvH04xB>gA}zbAC7OSqa1 z%T|?e6@*-}Si!~%BW-?#4zd@6C7g0A+;7> zQzK!ugjEt&A_RR^g^gF0+px0C%28Rc`BVoMUj2=2dX-;G_>~Q-zmV{Agy2{GnczRM zVa>-j9P*)rA0Px>&HI91YQxI+EWF}f>q;u#5!dy$btQ$@EM3(r622_-|F!Xomuy)6 zqIG@cFWB_u&rAB}EWYrp4J)4%`o|@FOz@9L_^=JbyPc~UNym|~WU+jnLm83lQ0lWC z%3Zk*@;5dAtR;)L6zO>~H=`)6H4M6B5zfeRC;vA~7Mt3JR`{`mo7gZMGec)07t)?m zOBNRZnp(0rpQIVHkRQ%S&O+>~i(&L57B$0$eggP_OBVZzyp1-jD%!AoAA#>J;ZG6L z;mon|ika5YRLl^EHdWwLY*@Xk#CMT!XB!qKBLttqPBtEH;q-Gk3Y{JqUj}IAlEtM! zxa5E?JPd@w>z`QxpZ-7h8iR}BQo6X3Z6WRAqH;-2$#spf4 zd!e%O=0sbvf-_u*c_%d*2W-q$Y=L!&D4IZU&XUC>GR#}D7*Awkj)f(QZ2`_~)XWYy zOaYxe{hA0&=90zMKn&oAwo~*nELltgZEElkmQM#bWA^r~mMogUYrrLo{XmejWU)vZ zz(NTZNZ2P0p~p3ZD`|=;M{xz9nM)RbAbEzf=#JYNrhsZ^z0_2OvsesxY}B2(Plz)WS>E?bNpz-Eumn^PjA-QDXH_vMT%xj)k z1DDx64;Z9*9vD}f*E~;xdh(j*!BlB(^E`~$M01iQi{pXHZZrMBP2B)hrfceYK*fk;$zn^h7W(Ie;@1rNtzZ20 zAc{XDu6Sp!X363rk@7;3@&b|ad?)4YnNr?HsQZ4Qd4=kqc>Ca z@20Jn`EJ^8;!I&~da6CV+_Bt0hhcAxYwm;%aqe=5wV|5ZtqoQE)0VU1X3zm&@pnsKxXFg$-ynd!xZ=_YoVKT4hx%(u zE_<9@)WWrJvmPE+-GX*Gp?7gtbK+}VAEN0Dtq!Yi13vj>L=Jd|3>|9zhGESStf1%r zh;a8g?W~#iQr5jG@%&e)DqgUhhCXk@+UF#E)`m4ti`t$NwLK|ndtB7^FzBeZhb(>J zK^uk-IJGrqzeRR`N-lfAKCQM#a@6*TsO&Q`6XDtyIpIDThwwz?CEo8VtgB|ZdaRm^L*uUmbEuQ>)kz@f{;JCetn*XdqOacO0V zBWegX@Rk(jO~>ht0TYDpIKsD6gbNL492kDj5gm({0o;cu?G_)r@+ao}?z<@l?sbLt z9fQ++26nqK2yiC-mw?Cn4%^EwjWb1Nj_HSv=|6m?PO5dyxup-{4B$=O`w<^I2KV|5 zJgM$UNoBt(`B9uHq;gC@bxcpnJ!bz&JUL{t2fa~&-&j*9d}S-L@TG)bNX32*_SW{%2dzW#q^rd;97*gVx0 z8JnInbMt53)i%#UmE>KCysZNMn3>UaISQ!A5x}?>vuT6OhDl~aC9@%}pf{!qdP8RZ zwab#v^572#S*Vx%hD&~RF285e`8}PP-&26fxXx|DFP9@j7>&qRw(4L_k!h5K-xJx^ zaI$@qDah9uf~=k+h*P@BG%R16VwK*Lkd0)VKU-Ha|Gvw7kBs*?))^=ptPR73t?w8t z&3Pwdy&NWZKYtS|Mfr~;9D|V6_d^>mY%JkMHVij(nSF@NW_7o=$KLb!AV-1?awKrt zvYX~+;D91+>T>yUPC^iE=7^5ZeFNerspR?=NMS1}>6TKmEgZXFr(eW4ouJfPA)DuL z52La9#)y_*K2fwfLBj1N94FznHVn6MGF_P|z!fZbXX4eLKM>eDZ@zyB$i9ZMb*{YI z<;zPumLm;tBa=nKokYSNA))nI*JMg~HK6g%&%RwUDMu7%5Ok1JC9^4#*{)6Iz;Mrk-AN!-p@(BD&+81 z2>o+-t7H~v<(vYolqe9!5ccFl>mUW%H@84TaVWYIt$I36XeW+Ehh_T%VYgQ0^*ue` z#N9^Qt1NP*T$swkojN$c5iQOqI@l2%m|GfaLI>qCDI6h{akx~*VNw}~I_7`NToU;! zpjjsLm%Me6Lvm%b3)=lD8TCR%n9!+WLMMv}9WPQJCsH3PQXk`_z7=wKCgd;p-I7_L zn{x{E_e6nULUtwUs6h&JbZ&uYLMP;z&`E=v(63x6PfO*|A}>IdooQ7SoiWp{zx>)I zIz5%hzT9rQh;p+~c8*OPp6wEyl}c2BGYC3~49|Cj=cNe0(K+kyr1pL*+%I&A4#P)V zY}e|y^$Sw07W;W#;*wvSLx^7FGDmc2E>YnRBGB(0@#QJv_x-G|a)ei=2;Ve>=w<&T z#r>mjzs4o%!pLx|$u=!kB}B`W+)1p2EZUOjK^;4djI z`+71JZWc~|cbsk-IKiDrz+vzmHeum*32&3|A2tkcbqr6_8dn4L~|QpDl0Rb@Gd9Mzf-KPHy0p;(cLLlFoOR`!S0iS-Rl^=g&}=u9&FxO zeUqTnX!s34lhd_(Qc~CgnKsN-ohKyU$8GbE9u6LPTTa$U& z$~)Zs4#3`g%S{~b&yggI9;J)R*dTh4dTL(S-Hcs(caqr(ZcgbGyv@xf?ZTbv+Nt5p@acK z8um9L&({)uC31b~x`|D&3zb%yLWM|EZsTFuEVb4TkWt)P z?ZmAxE4kX`zgZ90UJVvuI5Z5ysvJ_7MxErpoP@(9|5}&0CY9Ls&#qOhC`nh4aHO!P zcPxhIu)tc;EZKSRme7roAle$jZ*>V*6TT}uzAL5p+P>6@_I*jZj)ZFqi&2in_i|W- z(V8k6x?G;3Tr*fx`G!Am=}*V%ZQ4NBjdS%^lz-@wZk!@|-(1-cMq`k*W9nK?xT#C} z<9JdGG3^95jDCWo@$Lzl+)j$W?JP62i?*?0`Bs3l35*r|mZF}`T}E%QrKNrQn>oh6 zSxPSTR9i!?xNkSB+|d@4cUgUVINk~NpG>`PAJ5-kGvC=Iotz?C(+oJnXqQaA7p93? zraBf^u9o)Icba#Qt^j7&<`#d+hX_0F*2Ite7WZiw(<~C2X=`ILk?M{H9qa8JT5R zXhe3?%?nx9TKnhm#fZXOfG1

pJbQFdHD8hm^ZPjb!iFlXebS^fWAR?;S&Caxwmr zvtj#&k9qGetm!csws-n7>RmyNn{$3)C9gWch84$2c&rV}j*;+a8-@#A32(ukT>7l0 zE#XlnLvQ|WOL!!}i4raXD6@o%$zqvHc#6p|tAydNoWz|wdyc}5usQ%WXVN#JymCz9 zK(kZT4%E!#O+jr+|09o{TVvcf44-hhy_uQY8=BhB?Lw2=>sh(Iru2Sp=DHW;RyAg} z>7}bSvSGyr5{|ZE+4>T$XTxx%+1knNw@ZHQ{a|*ceXa{|qV`q>D6{rfA&X_My-iGp zS+!TWmzBJ7Pa6*1L&7-{&bDFgED3j$aJmhvr%E`*hE==HHs=efcA0I@obNo_tm#$k z1UNR*Dt5H+ib)n;Hr~R^wzu%IaRT4k@+)j*@rAJ#U)a*(!_AzgABLvmBa+oIg$=`p z07u_rUVJn|b!U+evTow9PpoQ^JOD)U^$B8zMmY8d9h&>Gc<}}3=*Il5ohsNhBFCf;KZ!M0b`Cw1Iy!-_5mJ8f9jAz`}> z!@XU8``{aPdA_WTJ(`WCrfMig|vnfr8S%&t>JjF`lF>a93`#cNP!<}`4#%5 zH5?+XVTrVc1D&Stgr?)Ip$01+VR#4N*{$Jr)=j)MRGB2V0g-GC#IQ9S4jm?2!(o8s zwT6R$%We%v0F&7ojsqgy8jb-pqct3x=08|#xX|hBaTGM!8kRFEc!au%w+13iPjrz> zKOS#Vr;mu-!a+y4eJ0MH^cV-+_{F`=-W%eE^Y0wz-9eF*%(l~6z$7Hob{byn(syR& zZYApgZo>Qqb0>`46JT<`%%%P{UO`CaZuN2+Fp1oqUM_d(SHYy)O&px}T^Z1v@xV$z zrN#p*D!t!ByYax^U2Y#_=Jvj(PLBtcX65#t()+pTc%b|-X@?I>_>c|52b~lfV4#$? z1zX>vflKN`2FYd`j-7&+h4G6Lz91Pq?=qN_nSni|v%{bngl{=UZ=lH(d*?U!lY;}y zc>c}V$+`R@Gn~h?;2p?=Ia>I(V{^gQXpn8OcZwz&%RirpF8^MHZVsUJ+}0<;>0`%f z5_iF}IPE}0KBvMQGe|3hHVlI~ItZJU(ajAt-P|{+B377QPS=f4)M{Z{DQqho+Z{9f z#b<_X`JANYO6%@qjZS!oV{GJW`PgYwWUb0u}HC@lVWOS@u%dKbc2)>wxnUS(V$X<6D3#n zk&{3^v$?Ua8xEcm-!M2d=nwk0SdA0Ia7QQK!(NM)`-(wk2{DY#XwzZ%AfP!;^Z}q! zPV|1I_uZOvqC0s~?>wN?yEv&w(tWgacDM5zcJ`KKPwM4?O}e@;906!bYCAcr2P!4? zaHaR9R%aYece4BybosLU1=zGKH!5$xW3bcG8-Pm5a=p^~vN#Ry=4AN~=<;Q`57@LU z_bP8+7OR(gfJ(`7x6=Evs9p+t&9TQS_MBsnRqQdxOu@n#PR5l`$10=D$%CNZ4hvSy z#MusP1>oX?OCG$StPGq^Yi@?P~H!{N<&+7Ye!3G5ie2oHTDLx zQ=oCt^Yp*xET4?=a4` zq3W(4^kN_NA$X5qdeqgLrU+rMJmdW*1y&Q3DhP^Q=vs^xSfgb@v9Y7q#)+>AigR&s zWI!zuKO`{U4{`B2#9P}+_~nrv!)nUrc&-E~ML zuK?-vH!8>|VMU03&z6WK<8LKX!mu8-6|hCbOB@BOczD(XEtwi&h%AHE5_s|;p0vcT zk-!t~<3}-$R*J!$Yo%)e=GVg7l7`kms&z8btgC4}%b|>#*0#1nu%4u4T)o0*O$#|_ zbqe25;bLh8^K%)O5h3i@!K#iI;8%XUh`m_I^2#lHKA#p)T^;2qEKtw z6Sr;I$g~IV>1`T2c5Xvcv3XHrb60O`XGbt6799r)DAaoJ3E)$61bA(h%gf{A9!oqb zYEatQ#v4x}uYMzQ-41wG+u8}wqb=N&WisOIp-5x$UZvXDBICOd7lpyj2>Ek88D&J8 zDS#VZQa4i(H@Z*ph=OU3ht(lzYg2S#u$$7QaMouSIo7H$UV2y1vfWIVaE6345o(!? zeBd=3FjppM!<8wS5BSkH@kbuim+FOfLmqqJuNL?coh_5G8S;aD_<8LGdj4wr?}7)f zUOotR1Z269Wx*_jt{!0p!{M#x0M^;nY;L~Y#=u4dy9RT0zTeFE({f>TYfhkWWaS#iHpOiwjzM8|Jn(7aMWgZn3egvxmcf z@IxNqPbKeSaY1wA#OAh%ypfk<4z)H|>yTjG=x0K=H^L!-vHX&>bKGOeTH*C*@oJex zJo}dUbHvp`NH>vjSYrc1{>kSL8m$waav1L7Cqpl+Kh}`YB}>j@A8MV zE`PC{63*ixR#3u)LCFfPg%t$L7mSSrsNv<{C7Y2;%rlspuMAoMUlK>qO2YYo$E~Cg zwgOfxHnp_%#w(Ka7B_fp?+YIM<<>U*Tor12KcQhrL|NRG(YLYn0Qj9&BoEz8u<2DMqg zZ5}-fj_MY=yh8J=*1Q;S-D<@p7{7^iX=mwC>=OI?^rz=@GN2_rwF9e4mmy$~9Un+xsz>I}kJsayj z46vki9}d{E_^Ts8$6u}mqqb?mM+)6h2t5nVukDmJJ1+D&JT+_NW_&P5^~GM?9NXKobzetM>%5NU zrcpifJG*1m91*J4K zQ8cAx=FEs?J`cQ2T|rNTosYQvl?4~bGt0($RM{>9T+2pyDUDaQd=FLJzHd>nu@iH@ zIqtDkk0|f&z~6YoopVQ(Sm@~JZD{Ri?lzOgVng2|a7zO{zG2-Z;Hzc0RP&G#@@0st z_hJ4QGY)TeIYRzuyCzM)t!vUKuPgAZBd$N-nYb(Q7aMVnFVu6a^n1Wvsb&0h6=6Fz z_ZpqZn23A;owArfQ&8*m3%F_LYJ(%5V<}VrC6-w_mA3B61~qCLgt{zv9{Pg}jch_cO^tUhgu|mjn{?r=B(T83DMuYr=b zZLO$9(1P^&4m_LMlDX8Ki1V*BzKMc=F%E5$R@2?(J(Hi$;~vEM=kvIiaqysil!udJ zQoe_n+-qkfzJo}?)GLDj1LS`M@|v-%Jo`FY7vP3&EX>a-#yLBT@}H60+ZAVbG|q2s z+^@N**s2ouHq67~MK+@3(H0EMv!P=ic&2!Bjjd>I1u5mSETpA;=M0oDw%Op7QI-z+ z=2$-2s1o0O3iWj(gWzG*12)VPDrs!!ZJyWJy*OA(nnyBeT+ss3JW86$P7G78g`h5a z3~>F0f%Tp_wKsUZO536BJcz$qEFQV>Y7!Uox}mW*?LnSGTE7P&zo*F$f;xV%QPP?A zB3|%W(jcEPpev;bgXaL}FO7@yGd)*7==#r+vF}4BrS(`(;5lK~bW0rX22T<^^XH!%C(Ad;v^%6aHYclB~EVyL-sNFZ1 z4?U1r4&!g)FJ@H(I7rEw~>ch;yaXqfu9&Sad{T#lpZ(2WNjyF82o%oWd5cWqC&m3v>^Jz%Uk_cX3eI% z`&jPmOHD1aHu3zG=7ncd%l&}wmG9$cu(wF}E4DYuN0uy|WitG6!eux$X@6R#d=}^v z^N}U~`TbLOLq}6*d$FOhvAL%w(cR|bw58f+TGm9)$)e61mAp|^4&RC*Vy)7 z*wCFE7-T_}SLW`h>El{Ey83z(vZZ0lhjnCl1yN{E5pH1CsaFH7E4e6xdtVhneY84o`V;??B+b^F_-|KU zFme7nh4XYVHh0v});X`WvDn<*jlGIFUPNjN?FRmNO~|Wt#b>RPwejrN$vTLu-buF> zmp8z*dU7@a93l{EH$X(n-EQqd^cvg z1Rdc<7UVw$&n|yR>$FSRV6i@~w5D)eYLz((HUuZH&atjg8EgdD5+8_>FyTK0+}}N; zrf^nbCeK!2R2}{Z@%Vbgh;S3Y_)D!L=#Cidk}J$V7P?Ilt{0eU_a(@-%VbSJ6Rswp zS;|+_4^85EbA9f}wLTUEhF3&0_KYvn$~@9>6BFhH*~fVnmEZ1^2`7&jIZ5t}sgIQM zjTPNckIr(&+rEt>Xzq&*A6Xl01-jxMd@tUQ!}Z7FtsM&*y62hM4P=9{L|c3Obu8pb zlP%k__H|9&20%6o%wVV zl}>#A1jI324tB_*2i)m+iPf>yzxDIXqqu!r?_%hb>vNMBUq-_j3VNnD9AIU3*BA#y z$s=PgvKF?=zG5enhUus;(>9hhOX%Js9n4nI-*%Zitk2&W`D**|pGjluDl+u?Od9jt ze^I`VS8-Zp$;oSKG#A}|F{U$spHH&+7QVj!%E6_yUH$)(tZ`=FM&bwaCGKwKieR%F zXKx*|lkZRh+pi|skMk@`ng0(78_xI({$B@JG-coyHXglJd(sA8736In~+ z6)^O5roZBNSbP}cyfuZsZVp2J^laB|i1RN^8wGnREqJ3-(Yg?02( z>YMk$vuW3|)5={t`ha34pF;3+5&&b1?+1wr})z=z?15*~!Gc0gQG z7O%af@{0o3rZRBO_A_wKo>Dl^4#wIt93ry!OL(Y+TBgG!ez=6DjNc`#*sJ=WOg{vz z9)qcX?o!r&yO z^L(8zL);Dv!O2SR`8xGKaoQ+2RcSrmzE6qM7lPB2UVIAWNcxC)nzG<@P2A1b$MY zzFm|BmuQ+q9@+I=2rg54&yHAzfy(iFP2<@r>GR5Qh0-VT7^oaqX&QM8M`aq=#><0i zG+jcryz*bC^m|!5zW{OC`9%``R>F%Vyi~%=CH#YgS4w!bgx5;=M}*w9qQB98?9X`C zc`I#`xa;v(i$!AB_odp1hm*PL4M;;-Z)Dmm7PSx;E^5YI9y55NDX zjk)rJ&etzx&BMicM!{V0;g4mD9f<61rKN%>F?;BJ|q-m-Z{!6QnGGR0-|#=lY~ZTH!{3c=&bOY+q= zPZ^WEpHy0Tm*G*wsr$zyd_uyf5N4%cCb^d(-)AJBXA}88_kW!43zFZ9iF{xBKhF1M z$?ug!zOVit=liFk}un^YsVN*G>5Z|z_c+yA{U<@-Rw4<-Ca!jC2V1R>iK*8-f3 zu|A|wAK^3&-j5tVds1=c^w^(#wQq>a8U-227 z-EY_uDY&P@vxKC?X(02)8so$vZuX2AXWPVn1mC(b^nFN)w~%EU+VWsaEKY32C6T3g zQ)^30b9Zw`qfn9;OH!Q0SEVi8F62F-*StHec-{48d{^M@`lv!}x+zSDi$^rSsfgpV zkTyHvJ}=27SQ$ ze&ky?DswJ-0r=o8o$t1nE#>4J4)%={bEMUrL13M`ZAlAWIt+ezA>bWdojok?a)=*{ zxW6Au*b)!6!8SanP#GLSeqCMsUWADs$#@T6e_^~PI1BOCj-KXjythmq=OK<0&e*lI z=iXS}#jY^G?9J`g-Q$taamlA`e@fIY!{cn;Lo>$dji({|!8L zN$2&>w>%hUoAL4O4U38jqn!7E1{Z>p%JFDy=xS(eg)*NPdcV zV`qC;173V(xjsXD9uDL>n}i%}qhA0X>!$_&RR(-Gbo@2oys*rg9_uO!zA-Q=&Bi(3 zD(+xyoOs@rz%QCC6nw<^WW2l8MA>l12;TZ~sOnj{70T z^BoA*dlm6h7R&t+k?FH=|HG8U#uRLtKKLx$|1f1SZ;ZD(3#*wf`R;@{`*L=$SyTh8 z{#N^6>DPG5%6B>6VhofT8F(W{%;;x9^JYf|&+L`-c^Jx~&+B>cI)&$-fWVPRykMk9 zkNlYK4I;04^5L!+R#^C~D=f?7*{m?g40j~rrhkQENjHLV?3}HDkiRV4Xvk}DoYiAw zyCP^g8d-^HMIVkA;qb=%afO3$lRxNI#dC=+ktcdpALq{FblBd0O(TP~ww1xhSA(^t z%3u}1m&6dplZC4Rt{zd|e-Bp&jK7ric_(fvaN=eSq5B>}IdK!qVU8cu`bg;{e&U8@ zF}5&1_mmBfpR~2&P2ui&eeKPB6)y?VyrAQ?A)D4cpSAA4k7vK`*F{|Gi*)NSj=KK= zLjJOF$+}+;w5gpS8{)Y{m&g-!@8ewEFDRJzef_#04L(U#X#H;h z+>#X1+Q3G@C2e41!1&9x0n`s|;D(`e$1=)A449k zcRp*q{{+u|y>EuN))nbCWgPXsIYR!jaLIb#0<^66Etyuz)o%eWN~D-`fe@ID~r2&J2VGs*jXT zmZ_dQapt?TrHIpK^KiP&k9qYx0dinQ*P=UGZF^OXP`q_HhH%^UmPot3m5|7r>Xq5VoGDkUoC5NjMcS z{syb(X+k$0q11CMhs^p&>BOt&{L_BjeI326c)?1}567ZX)AlskOvs{j&1bFa*?9Kr zdJf`RKct(*IO=+Lg#2aUl6AcYXj#{LGOd)$@dDhhYvym{0v*ralI~|rm!KnDZDJoh zm-r=QgH8B2XA|a5viL0zQLq;{#dK!Isg=P`0bdeFU_4wI><#!pXK;(aC#~k^fbo}W zHK<*l!EF$_xd_E-;u6e>MN74t((p1_PA3kmwX}6ERMUyaJulG=dDL?Ftd=tm&%Wi% zM_g;0bS;d-a#|7cmxW7O&c2|fwgiR{rX>wxYilz7BY_dKL8#$Rrmml5D$LU%Yqv4LbRa}t13-K6y6*+KpY&oJM}~Lp_u3Lj1)>3?9zNjZ!)r=-1ml z&P6I!kR1(?hwP@&6!%V~U;A5>Ns{6gt3}AV? z%B{C^_$3kEf9qM^6-<8w_-5bUiLX?&(P(F5Rn|O><9)pwXT2qheUZgo#==1?kDx{? z&EvhGS6G_|p+)(OOf0LMoVXS;a>s^aQMFjo*dKO!k32$I1Yi-OkonILI1#tdYZBxT^=iU6Y5)ymPq?8)OS`cQymH z(Xj45@X$K?51zF>-|zEIl$q^0PhQ%f!zI$OzA|wGxB2~Ad8-$iJRV}bS6ufA+ktOl zUbbF*54}%h-vy@D)f=#NbI*XRytLe}xr;FL9Ohzb zJFW=s7FZ)3pYpp$Vf1gp?_Py1=rwyk4@lhFjqR--6qw1N$L^OsB(SE2#kxllD6Ab9 zxy(<{wKTN3{Y9n2z3y(0?qSETx4E+$lL^SjUhomXt(NyQy&_u__H!mOTjCiXg}oY^ zrAYq)Iuiqrg10@maVDmPhrzpm`&P@=Kut_KK6Yl^9u*F zi+;4!Z+#4T)$%{Vv$hU%>urC@QdlP5{ATqL2A_kLt>Oz!lX<%dGo8@Ti&s@~AM`Bv z$nCqk8x~t((r`$Hn-s#juRNK)R{mHC;@1bblg#rDcoBVWU$5OwCj2wdl?7exEgiEv z7RreL!oLK(D(ISIZ)=&rJ$bp?x)6K=+>oFvEeJd%bqXVl0$%AaKb+$8m6)wlX)&cf z(;LgAaNbN2x*V!yUCWkrEt4>-oX)z=F4Y4U&c+o{da{{J3JeP zz3Jx0R(uY~-hE}l?D@Ty>5cV}N0?o=p!YhwuZIB|7bUw3!0 zXL0-7&NkC;Y5@)jC!ZdTW)ke$#I~rd@Rqi$&|RcB1iuyE}XiJ-O%Ek50rZ5^;Q$2lVQZ zg`aqsnJ9$W6@rcKE|#nP{0?aK=35NF?Tlys=*ee;&Xfnw)hLg7miLZ08}a|X4}2-_ z@?c%YW1b|cTQ9+*03QBdlE-NBko>44{%M{{YrTJYu%Sn5Zhi)>@=nrjOxlfe*Woa5 z#pir@tq((82{AV$>#16+Bb@N!_ctuv*s-lmIG52hE|$#P1N0-7`v|KKK5Os#V?2-U zH*hn)+mv!ieUWYx#xa)s2}1sKjK(r&(QU4D7;9l79BhU-M-y9+5BM^jv&rtHB^RKTOk;WXB}saa<_=X>!D>1 z$Cztt56?3@9EaJO=htvaQypvz8pQaSqGC&5MCNp-3K+MOm?FwWzU)VB zf5Uqhd6sn&xN|Ow%U1&zmwBkh(IYhXHsEGfqaB;31BZ&bTN_;(?oIpncHF;*5r&zA zDj%F%bo3qINqUxw-)q`YN>457-7CvfDzo=BU>h?t_4Y2A=CyalTbsyGI{i)w_=~mE z7IYt2_b@>^J=y|m%-A@dch(w{mBw8Wr{$S8D73l~wF_`eI~9MmXn9i*@<(4f8PBHX zWez!=G-5d}4chu{UK(19kwfyHi8%cqYd)Q}5X{oFGVjZ$je+vT4Jl=aKy~t16 zvP@(_vsgBfR=u7wuHM&xTl0am9Qw`&k?4|iuBH>AALsNB9P5ZU{kgoD z&c}tGyeXU~BXHCGbYSfBq)touc{>_N$1x9awr%*UhD$J7HYYrcq;|ECR@kU_NTXGA zb&x$0`wKp^HK{9LoSL)E+ODQeBOWVwfZ@b^Wzc}Qb>gY)u2J4fX|HBTk9q^#=4owZVRf&uioCud^dPc(4gVKT+ zUx>ft&LBN+CJsEjJqUs!p- z8%yRrjL_tnF{gj~}q7|0v+3%OQ zio<@1ZPeZtSrHtIXS-X3F{t?C;{cPss90J%t`1J};Qa2L(x2?XrHeAH@mD1{T6Gxw znsFhZpFflFDGmEIqai7;vlO0s1sr*ta z3XwI#@T^rW%C#O?9(8T3)myniKVsf{RnMX6O06@hqqneD9>3k|G7rwWQSb7556=2g z_!SOrTZ@$iU$KLwlZyQuSCx9|>=)`VV>A8tHD0_@qfh98Wi)xG zcoc#?fa8z-zuC+0FL|X>UfwJvgNK{#q;S4Rj_T0)SvkC$K=w!8z0k+sfGe$9l?693 zj*+-q%Y}S512)>oSNiTXXIAvgX&&Xlt->>=@BEW}jh$GaUC?X4raZ@w$<&8Bx(z(d z7-_7|syg>$TjEUuVSrZ2`4ieNEG0a)DO#WJLBk;?n2047S11s@eIk`pk=$chiRb;=Aq+7 z+CBN+M;xC0*$CT89*+E+JbpUSwXN^!x(C6xM3;~o_T%G9~hfk>|&h@OP;_lbjNTZ)iB9W!$rta8L@qu@iO72EUq zI4_8kh4g|SfR^b$lJH}M)Gc|JEZO5o>HIb!OU|;t8`uft&43Uo6hqj>YbRs zH^yH_#`r@}M$MOXq0hrSILE{Wj`VCZJab}pmNU;3*-<3ho*lu?ZgkIXjEMLC$^Qt* z)X(o}aAaB;Hnd^iDKMi{Ja^4+Fwdg`?B8{_ndh>=92+ptD~9vB8@lG3XWX3ExezN` zO#4{ag%42ln&&#)YSPhYpLYuEF#*zGuMju2So;28k!6aORy(y4t7~>dygVdKlx5KI zaJrv z;7K1(octFzaLO9x4u=S4H33@Z4I!(7 zu4E|m1(m^SfGzQWyoqFWz>0g|l^(OUQ3$_>c+y`mU7o+NxWW9zh;S5m@R#xzy7CCy zuZ6EzQ|Q)0s3S{f1wn@Gr)tRCy+JKZ&^G9;6|C&76%cRU+lEc;h-dz^)_D)YTKKC4 z?)y|Qap1Xw^2GDnfSb0Q|9xkpadT^v*=;t_aqj!m7;SBUvZ_UIh-W)WjgL$>CcGc{ z%WmQi5$E4uqqeBl3Zc1rP7I9TOdxk#*%L)EHv_S?SOxjA)S9A z*hcvdlK*x}CwXlv`Hy4%G8*>t;z%)_Us*6-`A8boBg>mDV_7g!)2Kd4EBqOj^n|ay zD6Po31LD-vjtKR1PcqMJS<8dT$_sYFkvsFzpYPphr@rUim3g5(klr7;Gd`6#c;P7s z`J;{~UkT^;ukrJcyOCc%(uf_-Kzt0+s{C<2g$Ej_At zvVqQ(J1I9>ZRwq#ih8;a+9=E};4|%%Gke|^t~k!-6<6osXj}MaaI`Ou6DenIT?8K}`!TN)E859Rn^K<2s`ZM*4ynik{O#Pv(vHC+HOFHsb_0N+TMmYUd;|Nbg;^CC-t|TYoOu){b`}i+r6kY2Ev=}+u0>H7>j|wz zSiNyZv=4BmJVr+~K@oA;jV~&kvlE^i=In$$x~#i}4WLbqI7}IH_Bt(Yun|XnI2U~R zON}@%L#Z`0l-bj3(Q9vnQAeZDHX&Te8>J4^Yr9j>Xf-WJXS@`i=XuXH9O)l{mJE2S z!c$(v^ID)|yHQ@uL!a9{crE$%TMrTQfLNP$YaZamc4z3knF_q8*^TH{9O&wlpY%4p z&|5F?rImYlNX9`+xRohBa#`fyQ5~O0Q$C!PJpj)f-*D%G>tB>fM>_{89r*Iu@Xf!U z!8WV-N}xBU+EM01n0FwbL%e+Y$=lRJeEsb(%~N`p!x877j;i=fK8NCuqpBki^5>7L z_GcV*3cY%?QE-&fO0Rq*;;gHq$;%s6X`bYf%2PK%BZc3!#prl6k7E@qEjJ zbCehI;Yf=4=+EzQX`804NWGoUywDyG>OsCd4vrxI{F>(*>2p9t}bSJZ(a5h#AQ^J^!pe! zMZu*eKRY^Nxh_YX>#%mTRv%CovV*27LOKhFL6X+MsVb)by-lyGG9#xyC`?9E%$L@L zQIi`@G3^zW&cT=u^|&GH(;HziJ*^5bH^O52t897)V|wa%3rTMgcGQ(Mn$q=OoEgFU zRd)UN8l+E-uBg+z^&E>Ed~|g!c<`4RT@9-Vmb0U)*|VpkCq{2R1|zKNg#M2RNBJYH zWUX@Hm&3zxUT>b^S=_2!3g>x1^`iY~z1|3DoQ!~Oge+#n;q?qU>KV?$VKntu&}a`u z55_-^4wQ~@`mLKthtUq(s!Nw#-<_2EMvN&kUcKUR*uc6L9PWu_Ag0XxU5L$+SscfV&<*9@#Gbh35X`o zZv9yS>WMdz-7B>BA@pYj%Un+>U3t3Azc-?_vq#RV=#z|VYmNP6zP+K8W5>2Mw6^u( z3T(W6VIIaQN|<2gNBemYWm5a$v)a$Yc=qk*5yZ95N%s)ru%AZ}@|T5kcb$m+JO*0Y z&*MxhI&r)J_w9#pwV$W(T%t?l3H$MJ&VJ_FHFLg=r}py%_^4XA4*n$KIHha#WM;yJ z@M*x}wlX4o1~C3oJ`QWvQ80Tc>!Si^-JTV?=Mb)EeVZzM+3F*u6Ym{m^B&V6b#Bh8 z&*A^c+BS9lBINQ%l8nEEzgircbGjE991i7nIM|Ef(T_ATN_~aty)@Jlt>{(2`6F%{ zjCz?)e~us1q5evF`Rhj~Vb_CeJpV;XQ!raY!OMs*@lNHxhB(e>x8l8Bp8bS3s18an zb57L2UN6z3!5dWl$5n37r1qovTtU8@cjp-~psHHITnc zP@LS^Gq?0g8e{H#G@NX-dwLgBVp%_r*r=9}WAc6&Y*`sW@WGy}*1&E1_?KbTYrzijvQmS*M&(w4S{ zc|FWgpEL49@AW>?8}B3UGp)!km&?&u=A&Qj`7kpdl#{0mn2kK9axoq+totaD&o{VR z1z(pin`VAKpJe7^NO6#m8R>H>C$sMGX(FEj-yLb*FO|>dnfZ{kskNKg$YUxODbE*) ze8$=Gbai7S%Y9eX+gDln#J3RBA1+GTMgLuxw{ZXQJ#h0($b9*OHRviC7ReRP518wI ztz8STf~)a9G`6{YE#|F8;>~cn(SET*X?o^&F67IZTpjdb=36d4Z_x3hB1+T754(72 zx?AVXXRB7cJ*#5BZm%#L3w7x`8++aJ{N_dOxu>xe=doK`@LG}M)zZ2M@6nZbgB~}= zHpKFu+u7M>_uNZ#uwgBp=sZ~p5B($=C&r6AIokbrF4e51)8%rv}Cn*E%V2K z&Fk!Jn%ip2!FY3L3!^4K#@Xfh__+;++~INSMK@mPYNc0UUDJ}Cu}gVB1B_>PSOz}x zaEm_cTd{=W%PkI$8GDtTTsg)w zo}c1YVt%3rEuZGCI$sSm{0%6VtaPp}d9Fdeo<6d9N5LrNE$P>k^yHJ)Ul=%929bFk zY0Ktq?Vo_B z&rj2AmX{aif37_vub7PfoPu=%oo@j?00&z#pPlJx2AR*$?_$%{+*+lNNhd}hYVN-p zjMpSCn;BN}l;p%wo6!R$^Yx(ZXdA%!qwm@Z&swM3;ki^dVc_aMp%bQcb|*Zn{-e6B z!NWWw4d+XxI*X@aeQLftNWSFDpX1GZ#hcwO>6H) znre*~@%~wx`DmI++XsHFSfMpSNS=gIj-nC7@*|9L;1(qF79e?YbwDTijB~c>&nJfh z20q;lm_6zn>C1VrQ42a-n?{W`=M9)%Y1c#G8Ph?_1Y{SOiE^5UBy-YsuBm#Wt0Mg7Z|2IU_S{1|cmmgp!(^4t{g zp2Z!FIH1rwAEv+|G|yCQ4mjW51jO87)rYirUm9aq{=4)0a>S2^468vq zkjl_cKzx*y-pEdx>)>tH0S{Jo=@uV+0bvnG_x6p{;!G&s)I)VJk>#39ygh)=vP~k4 zG!{gg4q1=I;$S-nBf=d)$6so_MMv3KA>Acd5bY#%lMyCX*Kiw@=ye>dVBEOU=(3;Q zI{qHZu1K$5m%hO~d#6Hyj@<>eg4rdA^VrSth{I<(cvQ!?I5i*Y*yaB7Ir|;(oiN9>`}fJupA$VR{Q@t{gR# zq1OyouJoB@(`U+Mo~7*01~6W7HUM63 zgeY{hU$YXAnbo6s=8wAM>b>EIw*YeYn(PM|(X+FkPQHPGb~JXZ-E8h|z=eVd{I;Xa zd7BuEaXZe&o}D?pXOig7owP}79qlYBYq|fh!6bwAC34;HeJT^)sItrJaiG+?py z3@Ou*fKzwJ5D&Sidq0no&P%vFUdIWqCnWwjJ-X-Z7lDADC1*hin4ukE~a|s{ng7ch|Ey6Z_wd#r)yZ-h`YH6TLVX7bI~W(;n|$VnP5(+nmD!PpS~f@DRpRd#@UtLeq0lDSY@^V z^ogV^;19E&7>siy%#Iw4%$(>n#O)Cp zrpLWEOpl!d9bYqVor~#Bm9(7o>{z;+Idgo=mbf8D;>~tGKp5+C3`P*hzES2pA@#N_ z*+EW4c^=J-;pmFw>G=_dNZZT$Sjl28;&IK7{S;vjAS!zN9Z?$?Z9R5#x|kpKeR76 z4|VSM+vg*${*0cdgYgQS7DULO`p~^mXTI+%(MG{VO6&LC;xm5>Twc20X*#YiV;$~7 z#M$@!M#75`rep)2{Wn}J#%dRvTFP8uiwyx2I$nnH8m1OAvE$LbSdO~*G3Idr!s=z4SL{+XcTNFgiV+Y@xdbLj3&&}sWm*6+U)bQOqmZ;v5I zuXi&J8@mUgKOeZ4@CLG}dNW z7V=|AevdK^evcva`8`f}2EQjvI^Zx9wmWE7148e2t%QG+@Xr$7AmLvm{F{V-m+%$| z{~_UR65b)&LLT+~GdpF4Xx=)9a zyB-oaj`$r9;5g#9J=7`~@rSt2g!Xtg{-`sKyh-hk`iVyzLnwQmpv%VHsQ(^T;+K= z;L_ij(fIEX@9b(>WJlkH;17)V#N)+j1W-@IgQpC=-BsCoYr9ME3}DnGSMXlI^TKY7 zIAwP5BH}G=eLWnFb9V45;@rvM3MJ`ZL%g@Stxe+L8;JX(f9xEDZvw_&YGiI!!8X8% z{4Jp%)fRTG@4Hr}8At&zU``m^`KE5wQg1r0B6nUY69C4<4f^pPTeBp zkL@sq1I)E6X)i9Fv=@_ZAG?nFKKLYSpW6Na@Fg(>_Ztd<^}=S>Z1z?_8-7S0$+MDX z#K_gvk3>@DDtG*UM~(k4j~L-$sde?RpWxZnhV6eoMO?K^y7w5z8rx?G`OCtwk1{xT zLO8nMbHrIoUofrInBxVwt1;9%^VeEue@?ounJz&`xRDe50&G!~_$6e6d-QRoHIl<{ zzLvL&&_48p^p|+{Tm4svFA)Ik;v2-Z)s5oOHq$!8AcO=8*SR>Q$3Dcg{cH;kBhaMn zm{i{%~Ga z%F5P%2H=JV-j^As@5^u|16(cWlz$gAuXaJ17#|8eZE+tCi1Aa~D&c(F!aX8Lqjp}0 zw8nm#y zqF{ARFZD{=?7XlOue34(T0`<0#k@pEwyy0iAm4CRUTcBI$qfy!t-NSIs9%SRt>@y6 zZP2M*DBZfu&mUod2lH_}@a*(H2##Zm%yd#;`j)PiBc4wo*uX1C9OsoWu`V6YGYmFX z9*NQL7?!=iRF6MGJX;RjZKFI;Udqfe89gO*5o=qpU3ZqpD=*XYFV$XPS(|0#W7=sV zAJs)l2C=jJJfdK%<^elnTihIRhFc+|oiVM^%Nk)lzFZY-133S9hpzvemcJs{7Igga z936RXhd9F(5$ddk^~1EudfHyo4uZ>VqevIWd2Na~RS=eyjn}|ppjf^_Zj5CvjtT+35lZ-l`jJV4vpyMo=kOYi|Bqjkx zXPgKK2!e|HzAw1pz9Q}$A}+Xq`@V0uD=Po{R@LdQ?%OvD>U`hxKVLu3z13B9&Z$#X zr%s)!K3z>e8TJS-vx@jJ%>AfU1g-UL!As}Vi8R>h@TDyHOfQWNU&@NlmNe!6uPyr= zou(fRVCJKpk%u(f|0o~v*7k>|AFa?GdJyVDiL%e(9)G3|fv&1-vXup*drwH+e zeUV_!c_B`*fswOd6peOxQWzSg%*T?2o@hdc?cUwf(cNvAGqqinM4Eyl@Rf#!ltFwR zeQxX`)sOfR4;*Cl@ob$0y^YcU^BC?}R|=m6M4F@>>*w#;*pw$!r&8 zhvC#M@`I0<*z{UDNkGHblD{$V?@{%OIwszVW>)-|I9$k>q;cvrj@3U=hvjyfaw#L* z>2l3!{)X;Ye1XW&RW!!7yEKS1l5~}`9?Kc-?1(r9uG2BCr3-IE9IESp^J|dKa{|yV zO$VDd7YI+e;alH)n`BC3`*h9ka3w1o@KaGuO-R#c|8L23MO>#*MtIJ^VH75HTIp~l zOX|Fw{Z*nl6KJ@@zRpmv5E=tJ8fn=`lfgm0{){x9L7-N+7#vLF*x(!D=o>z|QuU>b zmobe(uH=5Wvoq4FkS5R4_&jS2(qL=vIbBJS_6_4K0AH6elUlpF<%2} z{K|GUfXYvdY49uC)c~qA;=;FV42K7KQP0tk2LH0Lb{cUrNKYkdIHtkJY*!7a(>Md- zS>2f67ZLERZmcg2W#C!et_Dz*%bBc-^faJKqmNZBaFxedi_$j{HP!~;gSHF!?N!Zn3?1peVdne(?=wWv+!6nlFZo;&rPxk!lCr&Ae&tsSx>dP}a;LBsq zDKs;vUZ3oNx+^=Qy&oR<9D0D|^Vw#IM=c+*y@4N>d<#dVrX%eS7>drqAwmt`_^;m{USfX~a$OIBvPDYJuRnl%OK1!-&isB=hC z+KK)-Y>P6(hhJ`@PLD;0yY)8z-rm!0A^tgpwC!N_w%TcgjX^t^qXBVur=BN6m=okw zK5G`Vo6k+hswd!|!+B>zcFVaI_$zqOYPElr#$Emc0B`x?^sNIir_$#62XJh^n+C*# zem9MTvHWfhL|puC4#vIhchiQr*b1cIiMZ`|(}lS0chily?RPVk_?F)d%eL1rv;!y+ zLBAW0u%O=!`zYvl!!{a--_10@@k*GZ#ZMfw5WQ{=HE@R^Oz^tty9eC)cR;gHUmmO> zjwJohMIlK2&qu~Lqn8Tbx|FA^c+hyY4k@BXK5`*?ZWtfnFnu~BN6hFS;@=ud&jslr_p>ffM;tg8*ipdQ+vnsBF=J; zGT|(Q3FRT5GX@kKo-8jKsCSIl54>y8nn|@kY_LH+*XXmsX`QF_&i;wG>Sq_de@-xy zvF+V9H*JR?X}hXCBMVwa60Me!Zx03mj*{<4t&i2^X30L=&E5!jnySiV06O;b|s3-GpbD@Jth)Wx@+gcqu|@ z1=eUoX z2p4g#6F6gMUyC@~`FezeC!RZ+BNh*~HUQjBfOp|gbKlGWwQT2kULv33dtvkvp*-4N zB80YWPh*S14A5R8LEH0i!dqSnzi z-}_qrmxktCq#M1DeW(=Y7{qPwk9mw+-XDzH-XE7Kc)$0@=<3_}7?~j`iw{1{*f82sJUJ3Rgc1Y;^ajVHEOsMZi->vQ1hT`YZ_r%8;xZiiL z@Y&!W`|gz?(f>XX#?S3&0k!_^?ZY435d87};30(i=dwS4aBRVbK70u&EELYRy8knOt;*8W&TwYTWxJJI&`40spfO5Z^m*)K~OhlP7LLSA8c?sI_+fBy(hlUTw7=MM80`^fEY%vn@JAUW<~n@0%`MG<|A-_S;ElzvJR)+B_p9tnc1);iBsKyj|B1 zlFu`~0`QB7u(KDH#>1jAi zD^_T4uT;RYUxt`)6BDMH@E0cB456GHW#`GxIeB4OiR}}0wg4_K@kk@@9M$3cr#Qb9 zc<@gckN>{%qK;c{BkkdB8F7AP(f7BV)jp7RS|su`MELj(+W|bePeT%TwDLk$h5qv3 zJtw>bR)v1Ji1P=5GpoYiBhG%yAV1)Nt3tP(0;@u%E13k`2*A5=7}-8+3jJc|aaE|T zn`e@|J3wfARoLIV19uSKS``N0AYR7&ygSfn^B5O1~KEqIi1v%2KF1QGPAtoC-; zf!;+!oXwHOmgEzSbba5}+TNl(frcZFZ$x+C^lL?bOT-)YX=!YRp9ah0sK>g?J$-2_ z$?xu%f-f;Cn5_*AlW18Ik6NM=E>05PhH>p2q;P(XxN-zC_4+O1lZ}T0@wY`>JUPgB zCgY$t*}!KZ&Q&hse5%4x39pWw4)kb5vH>G)p--#&Wh4h_yb@NvY6ZF-*1ow0f>1th zg$=fbc`T++cKb2TwZ{NQl%8SrYE;i9(R50P(nZiqlp@hf)B%haf`2|a=S&vs z9`0?O#V3zmo^`6UdGDbJ^n#Mg9x6t9*n1DuSHQq~Ll|GWw<0B^k@UTXQsm0zd+%X` zTl^=lShD-$lpIC`Mc)JtYYwhZmRL|Ax$2`scal(tiaID52) zw9wNmQ+k>-SWYeTaPRge;8gj&x{P|{yZnHAmmkg&hKAzRrolW&gpKDti#5q8mkU*8Flu14}Y}MlfCz_9bl|?C?eYfmFmCN@Y#E+1hpJLtWZ(FNx z(Lcdatw*@F$>kjgS}Wc=5D{l5Q%}kPTVCPx=gTB*FuiUv zuY{5DP5EJb59VQ?Yj=daL~q!6_C6PP-j!?^Yjbbl+4{!Ai#lUnntGpWPsCa7UMBnt z!i4gW@9lH-`y|&iS>G)^C{5k>HZm-a0X)eaAXok9f&Mvx9%b9RZ4L#KDY1 z7qlT%*$dYz1e-XREWdR=D0?+_o>-(Thrcj>js`9-*{dP%_Fj!& z(o>u{0-wNtUwKx&jTDEsWyG0p(f5~awGU*4Gpx*{(vAy}=ChO&c(iDQ?A7?o!+Bi7 zOJJ|Y4+o7eaAvP&5#sE(lgJNv;9iZ}&w;%frYo5Q+^M*C;V`m&76JOj&hz$at~Pr$ z)I0VQd_voMHO%LFE!h+NF@(4FYJ%RRyD;C{tJw!}-+H%i69D@G8$0^~C$KN$*>52h z+E4LBe;oPVH}Q%7c%<7anhAun_F(oy+}?xPpK)ssW-8*c0+KzLnMjj8m|6PX-GiA; zd}|M8F5>nc3`euQ2Xl<%TYE6`42-=8!_jZ=!5quDwFk2RaeEKuIK=HenBx(*_h3$D z+}eXV1@Zp&U`_*!w1w=!oQ^bJ2`f9SX}AM(hRG*P=nhQZl9906(zmgucUw3n^c)#Y zXa6e=0&PMW5pBYe%lJ9?aedGEm6saH2;Dr~yK8cea*R+fFL8(ET+j*1A$M5LLweW_ z3$+X|d^;@XlSaZ03vG0sEOCLtAQpGYl)vjB2Ix<0qhmLPEi5adi*Rqxy%!@cElRkv z8Aoehf{>TYU2KIi#@WIMJy?9xc!K}a7SqHJu~Fp2;OD%s#WkTPc9h08TphU zceQN#%*(U;J)-PQkG% z(p(+@<C zIJ5y({eAdR=Rv_Y_7h>l%ZfS=3#_q=9x`PuXIZ9=RDXup%_{)o@{JaLRA`|+`L>Xo z=X+Zyn$CW7$Gm}ioaNbe7if@Ymj>=#eXyZ<)>?sWCvD;{C&hW%s)s+%s$;-L_QOS- z)j}iS<@y}!-s|<_^N5G@5p`Y=8mKRAezt{br$Ad!HoSI9JpF;V@=F*mkgQii%2DGq zP>$3wfd@-ASWaRYQRfXQ19HZ(_$uNI-$Y0`Bc5s(bNa*ENav65%-Z*fw1+tF0FIZO z{_rm1q%-Ud}jQl8XUp{Yq0ObZxX?Vm-b5ChlDQVUz4Ug$G-zg1GAPx3EUbxoJS)W8a zcuK=6LrYF+cnWd*lm--mQ z2Eh^d7Yz+5gZTC-4JvM(((n@U?Nb^Uw@+zc+&-m2#jR5s6uxyz!^_0CPHA`*ar=}8 z1#g|w@EY>%QyNU%Jx#&HeWx_Mu5sKG7I?Y@%e7BwcuSY-p3 zl!gxw$AC;YrQt)Qhn>02`0I;DX!5DNS{2gd&C6t`G*DXyPibIU z@RSB>?%*j6ObedUK-}Od4NME3(m>n{^qPH21JnLboYJ7i)&NdvSPTAmCD{8x>lx<* z@Qj8}4g6;aeQWN4YFu~K?IQI3d<;5YtjY@^xcqT;qHJ&;&{x#?!tlk}`U0e@*&6pn z5Nds|_r3+c(}$1q{Ve=(xHmZI^fwX<|2sE5n$G)JFL=Q|`VR_MpPj_=d!{IyLG=g+HW)EUP3))9WhNS*N|Z9&=|T&lAv;n04pr*8jfdIpg6eMEUC zs`{hO>40G!C$i4HHz^PGU@Kbt7ZA4A_Q`{FrPpVBsBg0IOLhTt-x(jefMgCk5PFvi zKH*a_(tYZSZ#zkC`+D~opI&1H_*wD*7X#waLRar#*vz1nMhZU|Yr7>q2gF4RaG<_g zzR%?t-Rkc{v*2J7ob6!iYh-X zuf5+QzbD;>=1FZm4NVZRhNiZT?x}FG(_eBL;tY@eL17V-?WiRB$1nmxw9xyL1@s?% zOr-xZ!HbMb`<^hmUu|z@_{sxbrS~pNK0bvV99yhD7a0()#N%}WuNVzV{-uyXkJH}e z{nwxgpO5U>;17NbsviEL249;`lh>vT-wy5SZt?2jlR0U?pS+j!nFztcM_TeKMGvyJ zM$2VIK5xF+yHq zljS4MpXg){HtLiKENHs=!tBOWAdkN=yh;}@l1{BD{8r;$=@VmD(T3lH zDO2FX%B&OEfX@3P(v{9LG`2%Lyu7Hhy+=d&W)e2BES&u#aHbxFBX8k!Q=Cx(Z}C9* zMA}hjCxJEg7WSmQ0BJbalqDW6ft zmHiMrSDq5`EIFvxd`>XD?`OjOO(=ExtBD_ALRH5fgKOkfbWo@sLaY7*=RE0@a0s2H{+A^1vU@&E^H*~GzqL3JHoRcF5iw;VZ;}qv$fj2sZd<1obzl>C8ir`rMsQD#9j-pP7!0w~v z=%0wQjsIoBi6(3|;Up6tXu^X`*k;0Z6LunGef(`}jT4JE)+w>>QKuU;c*$7oGPH$< z9+qL+g?(xN66vKn(}Z3C$Ck%nTOO7KC%HVNI)@8RV2p&zM2hoofe-MNTrN_bBLyc= zMtDD`IK2XI$r0<&S3PD3jwP#vPgajv0v{-&uX@ZDoZm!-Z)Esk8GXz6M$TNp3-Fe# z{__O>04?W-B2GD_#YGg*MvuzaHa{5HsKr-9%I7!2)X8_zL9xs0q$jOP1$7L zLi~bHGyP-4nitJ_`Z(Z_*W-yBmWFW_LtZla1tw3~k@k~RL+eCC|0IjPFU{DH_MFT< z;ut&CE*CXF4RKzyWvPc14&cr(aEb>T&hT(L@>$0-5lS6>X`sP;)=_BK^FL+Gtv}#g z+X8sxHCdjYrhh*6=UH_#JfClPzJNT3@aMJ#^2(C&VB}ZcvXyrA^PJ*bf--oCzO&)O zaZ;Vj1jo#G)NNsWUM_G(C$rzeX-1tZ1va5wE&JEhNydFRtrTa8&@$!9m?w|^`bV8> z1vX2M->VR3|6FatYfN|@!Z7>+@jZZYZ!qQD7%2CqpSj#yOnJ8k%DwGpE_bOZ?~XvZ z%YNo^?=t1x9VqvnpSj%oOnLVQ%6-6;OFiQ164;cUjiS9$+&t{~dvjYbFU4`^O2{0a zNqBhH8Z{x$n)ed&QXF@VOUSeK4l4BcdDzr%xd|UJ;R+KzYQmKWIi9!|;PU93LsEuE z@yr9y{B|6_bHl#79`I-EpssW_hL6F}C~NivFn|810rmCR8ftHx($ZYq(>QqtXTK_6 z-2J%e20km;TGw)8>`d>m$KE?N>^W-R-MP!|tLdu$KhzX`?VtCo^-V&aCI6N^&$*5= zBXgdfucOYhXdhmQd48D}-LIh&*9@d9bBdqWsPnv(fqid&4^+PK`@fLDh8+*XQ;Tsb z_>ls~_vFxmoaH&{bPHNm4J;5oVL2Ch3|~S>czQ8=@Rk>I?{DxG7=9gXOVvL5Nedxu ze;?){4tJs!^{q*cc|3_x{xI|pVw-oj9^Rrq@$Q}0*D$(u63>7j3`cx(>!e97T`lcR z29oKlNy9k(RSw3pNPDLqCMZ1ScXr^UhL$c>_6X$bomWZK^s|Y#Pm5b#4&q%crZ~ex zu8ZsCC?3EY9so@>Y^ic-d&};&ysto8-M{Ord88d3+$9$r+TR){0Rm64e&OtaeAiFw zXL%f|&ve)m<#>KrKTAQX-A+hHUk6Sir@Xk&BDIjL-3)WXUPy1JHx{ItK5OF;w|&o; zHr`4r+@5D*Z0!7v^g26R+M9L!?~HeM<24M%hdGBJ-rC;X($&LwiZc~)JjgO%l1Xvc z7T(F@Y0j~TceQl3H8!=Vb2d&ud}7PwR{BWsN#i2oqcGl|Ojw<%@=j5>$W(QRI%gr? zsLG8xXX9S#^S6I!-?4L$)``!5;xph)@?{*3)}{u`Kq!yz4lv#fF9Fh2?-C&1*3v$? z=Ri&4Jj6NP?EEQ>hc!qV`MeM?T`elbrP0*b+1S(yRb=R1q+wdRrs?xUE=Ig%N~e0l z%5pD7oTsk~{9?o#c0z(VJLC$)yAN$tK2)3IU4`orpVTUCk?P!xc$Z3GJEl6foBRg# zS(b*5NveHQojWDHtq~9FkgVD=)wx&FHGF%A%G9(TlstuFvP``mLS8q%(nKA?GgKZ! zys2YKXCt2CvR;oP4mZ07S0;^qcoOM8>%gQx6_QS$vZs-bQ%j8Kv9F@eGb)XZrsG@# zHvC!3IP+ICKBlYVP?Nug@m<@yTbs$-Fy}eO$3jz@{1+G>*V;^a)KxDsuI3Y-of1`X zoSm|x{vIv-+?c=TbfrI;KNY$SzEk*~00l3+(bC6 z%mfZJ$Rla!eze-_0Lr%5&x$Pmlx({SRZDe!eOJpw%mo`Q)_Pr88hxShE-3upI z(;j_KwV2j*u@Yn9;<3@cc?6&Q_)_#OKp=gW@_T4O`qffZbVqPZF*j9gV+f?IoJw-UKzihY>0%tT- z7UI-U*`xzLScZ=elTI2^HsKl1XCAb49ztHCk-R)hrc8MSfF*v6xJL7lN6JV7J~UsE z&<@ekQa8m1U`qrxpr!qA5vNSx3{Rzqlc#coY;*RJw0R}cRC`#wRuRsO3%9N)zZ&Vh zL`$>WM7W3(7dX&hy-7p&qt#yR1JKd|X?OK?Af2PYXp}KN%`Kv-H1`2UbN^a#r!_9` zZOt7VDb!f3rL5%{-xfHY9@cbzhqN%w{d+gv!x*gQ&H)Wua~Cr1YVKfDXiZ!Un4lJ~ z@bKJ~Sq;*HTD(@_dRn{=@t_v3N1E5>(Bkj_rWXGr(&b9f;z3q@`dqpSb1X(FC1zMJ zB`uo1J!q=?1c|hy$;R0^sW);{2fn5{&79uFIj;yCH_8>+I>*qmpIGsN5CzqK#NC z^L8Vgv$3-aLSDqN?X5kC)2n&i6Zd`b!F>Mq!cX|v8}}T|!Sco;otHepV?FxDNpR`gd3f4@rv(Rq4mIcBO!#-wH(HH&`ob#K#nZdcE=>T~PjpGk%fs7@d~q5V z<(%oNZ9u;f_colbK9CtZ&wJvzyL%dY zWRH>d-0t84n@q~K`wQ+nruHbiZeQGEFdxX>Q^M_sxa|LM->e+vx2nA__)#G*$*=?6 zH0PhlZy1C34zVe<1@=N35I-^r0{18WMR@BSH}VKG%xUguQ2Swg=Zm~O`I+lUv)U7*q7Ffos?kO9{L;OJ~%^>(uWg=LDQB#zO~3_B;>T`Ff}40 zQ(10sN30}ut4*EU=rrWXWzJ+VHJYG9Gs%f1cQ%F)Tbx?JUdbG0=mh7Q!;!8e$>?#; z2h`t3AYJKkys^eKzCZSFq=_X=`czJot`uk@nd2xOjQ^Lg(WrAILSDij)uc#-2N!XU z5;$Y&_99MNGf2ls6U$7%g(S=pT+C6VDWhRF(uFVLGH(v);og;0Q{K@?XL)m(kM?8T zLgA6eIwZ?ux|@fyCER)icw2yS?2)?Alz1MV5{fvwhyOnDl8C|_zZ>!Oo&{I}#14l`|!ht^^ z3e+P)ueTQ%4Uvg-K10(Nz8GkDqlU28mFFSd)(~7pO$E~VNN31*IGIKbaRJh}59B1g z)2ixAaT_eTk%_{+%e1d6(kn8_~$)UXPn+ z`-=3Hhjt@)n zeIb2x3(}Rmpgl=jwI}$v4fkGIRvWU8kRLnGo7<Oz^qvDdrgk^BH+MI5w{)8H#Ymsr)iJdb53tRXE9Y{g zO=@hz5mxZ>F>p-l>6)sOFk;oyNu-Hjn;mIrtu*Hbq}vwqjffu^0HkGnGvO@Dm^^ZT z!Ls#N0p-ymWnrL^i z;uS9;+7|sC(Ruw_@k>FMSAzWoD}D&Ac<@Ax_6Jz;cNo}Z2#xj*^d3~Wqy#jYz5A?2 zh|+G+^t(YzM$0ZdVSwpo)H1HG#8Jz4U(vHQhs`#gS;^ zL(@HsbY6*hiR*8-T;RD{if=JNODzW-(tgB*D_9;h1nn}dA+-1X81Tp+J*QRzMtxBY zaO79ohWRY(anguv<3T2vKGX9svkW0(pnJjnSSu(YimKg z)&1bf7uSM#&j}vdkI$X^YUdXK%RUa$cu{C1XJLN-nItSNp+}FRlg4 zd%Yh#`GQ&y?@hroZ)H4zIOTMe37n2Im6tu^lWoa4tUlMVaNr~ z*x`s{3)qst)!nSMt-(r1@R4Z#!Gf_UV0t>B@)tb?xaCh4Cc-PKaig+A>DT6UgigA5O`L1?YO z_E+XC?E|iisN>ao0Ny~H@9!gw*%9;GBSW0~k;l2e0q#M{M$jh!gnU54%GCyr@_EyC zh5EuO%EC!xEX&vo^v1as-Hv&Ar)kDB?NQ|aG{t$lk+!|X`cty#$tX71=4gYrQ7)>8 zC)H`rJGiF}f+%>#8Fu6u?bAA`&3rj3;(Tb*CRu5pFm0EX!}n);e6zli*$f&L0%x?bP?G>xte3pU-4 z`_2f?>`(fHTAWa~Q){)>b{ys9o&(VUm-Zs|cM(_X>MkRugIx72S&&DLPedFEf+I(c z-firt(W6Gm<9^yz7@f2g)#!9jVp&Dy2MduBH3TC{C^ukZxn*)km-wd<(|#6CcK z&xDtbg}UnzY@`@t-hLwZE&9!Sz6TCfdu@y-?CVU=k~i}_Oc?v0winO0RqbW=#J&e# zqSeJd;{3(2xSn~i#eOin6OJb=4(lb3-VKQSMr+U@P88|9WZ%g_oG>Ybhc+jDu_ZS` znv~66VcrnJ;oe*&e3ypVs~d`Z@-mEN1bEpLX?FYk zf-oq%4DcRb5oa@`^J1Q_?nraXL!Q(}wWXccyU0AF`9`&_mM4~g89?ogQSOKx)RMvT zD+$M5!HTw}aSFeR)WgFrmHe}}&6J>1%}m3&8QX2XG>5a#P6xI$9o*9FjazrnsQtB6 z)OyfUj9KY!3|!H$F{E+7F3n0SEYy2*nkZ z!nw*LH@lQ3SPM8JDt? z=ArG6pdOxudPB#sj~Lfi;#!}1_2dNrwr--{^78y^eWoiuP}UB>H8P`~;{A!VjNWtc zF;9#{ILA2^iBFr2;mz@fZ{;f(DAhjJT+vriv59D`vv;{<0% z{f6ck#MzI#ns9d$?rFlkP52iR?rXyF2-7C&6)$N(wJ6JsbY#U#TC(CLy>tUZnp>KC z(v=l2Y0HY2^fLe>yYJLplqc#c){AkGA=Y4j!1GGWjSOe`whU6was1i8VB0v6q0Rw9 z!@OC}GKib3%)bk~S-IL}5|`yAma~!bPrr+YQ-NpOCgP+zlLW^qgRseXI#A$^{!=;${dEx1U3~(r<tjb3tp9{nvUtIE4IVFYmj<+fw z>P$enC=;vlq0WA|$EuuBwJQHBdER-_6zvNhasH;_%+~hYKN#QD%WqI|FTaWLu>gmy z%GG*{iR*L0BhF+KSC1lEn$?QFm1+Cn;fumai5!f$*qXB2&%Q~vn%8;#ujbo8gICyU zeiOBtAB!~~zZzPA)%+9#-Hy;&&7-P6QZ~$L9)#3tK196wwlVdB+DR)(x|VO)dumT> z56%!)p}^ye*`ye*Nvy14cw2!xZyCYm|Fn+Q=D=TI=^uini{2lXVFDheNqGptcgBY# z8d6-J%lWPLu0a?2OR5vxHQ;;}+%;fY*sg(2Puw+Ny1i?_xPRAx?aW<+ZX-befL_z9 z5DZ22rpC|S&YS7?TMkh?psgS+5t!an6L|`k7HH``pgU~K@lfD$JOML4^R-Ws#&??jI5QjwdVa@EgPH#%X^EBqtDSBO5b6jsIvcXIN>n!ao{mlNwvwpuE-UoUMfx*jXp(RXuweD|mNRuUF=qV`V-YIdYkm z`QRCb1`R>#TWezeqAaO??)BtKSydv_D&4;lpAUZZ7>K6xUcnnHNh~>9O1$h<_Cmn& zEl--ZwCo|z>aEXC+%rBh5FZkV!&3FZw=tgFBOYdi_N@tV&X+v*bZ)l8$*jvPwnIeS z%Q!ey(lJgC0iT3Bjdj7jJ=XZN!_9+YvGe!_Y-k?JC4JqVdI$0>(l$DQIHxcUJ#sce zUWs{@KTQH&iWBsmv1z(1RpUEz4$6q4jB^oE-<)T{^AWOKTC&8~SK`Xtr40bP{-ovQ z`F&;Brqb4zfVRjV;Z?h!+{D6c(tv_-9~btwSfMr zj{n(IigP+j_dA+s{lIj;gNaT*1L>|~iMHUJGm+*wm1sDo1$|{MK$?hW!aHh;R+@7m zV8mjlXZb~ldww%Pd1qNs=VIbmJ~ZSV4M$7YUo}<6a8+ln4UzA!qRD3+xnAY-EAe%q z4-MefY`dzGQ zwq-J_TIcm|RbLJoyuz$%*M|n0i#{}07}zTj27PFPJ*mxPrPX|zi!v>vMvWk)#iHp; zKvU9}Sr!UMG2{A59L3DL7PvtT$5HI%`S;hDE~EHH;Hr^po~hhKT1GRu_|RxKBb`@b zUgG|mjpu4D<4bc3=#aNtO?aCsPy5f@0lxSP`p=L@v2K`8`gafy{xeGv@)G}!4vvo^9^QLB6>s z7e%#d?}MYGtUdYtX0tJkQt98>OLJC%C-9^EZJxqC?G^F2d6xA-+uHs%YfPH$ zZ}S4vEPtDqEEw^(c?D@fTY~+Q%$Cr3{o4|+f(EZJTf+0VdB92CivBjQ8R*v$T03+< zcZZn$I~1e7p%eCucnscTx5P~B7rk?3?O$Co&>gu%x0)iq=xWa#e;Ryr0to~4))@nD zoiU?E$;;eo7bQCElUy6N=9UAN%d`){Go{kv{#OYXY8ZKMJP zgzvijU(lAfi-t8ek1_94!r|Ut-7?)RBjCrwbeTE60ImyX(=fbzj(qa+ zCCdo#@-@;F9aFz=2!r~S`S^-B-y)q?Lfw&O^DOmIZE5HAUSf9i-c*$Ia};uI@8}WR zUNKYq^4+Q6`Gf2g?^%)O$HU$Z^W(_`-3{^M`2@U%Xr0hm$kIZAd`@+GW&RoHi8hy= zzptz`+4)C3|&w0(Qnws>3I_3cqKLw$Qrf!3#Q z&ku?!Dfj8y6o0dnL#4MTz2`qmAEL4(__8 z3LM5Z@AcS@rWaakU3YBRmLcFb5qM)I4n>^5sVHq2LVH&-jd9?RmXu-NQwL~%^%osC z2Rwha?@qd*q4Y&>BE7Szn`R*$AVv264%}~UU2RGThJkI+nVrqEYGz2S>THnHYHkoTgacZ1@lQe zgE;VQ`2#{;Vfdq%j(P-fvNixGyAPZZNy^FX14n#Yg1qJTfx{i|u=>RMz@a4&hEvoB z4z)`dPKn?c-%i5b$P2mM-{?K@W3lB;d^M&5SAM~EpdU*m=<^Dr|97Ep zR*p7(dD4+cb0eolXa@9BEz*^aG5#T>SBEt6mq;hYsTVpHywocUemjA;#-G4*3?|~F zIy(rCRR&>`@ibE4p)=VRO4p!oc0{_XC!mdd`o;8{)@!!U%IpnX6>o*olC6rjMxN`l z5;o_BJSYno0t1*Ey;bqA$V(rq;@=~mt75uI{G9C224l|!?J`Q4e^orxDFaX7NBO&y z;~uMGMwNd`1?yw^yHu$-vuPVeoNC4`f0ww5d-;E4e5~j1vb~9mzssLY-1c`F#Wc&` zWhcbN{*s+}_G_}$w9e~)H9ZV3v{V;*dST}{2i)>V5D#@G`!&Ypr})-t;z zPP%&$-jpZ0Vl2{JT)^0Njz2HaV__dd_b-ZWMAbuVpK(Z&I&t1(8RH3Om(jahh{pmU zf6Da@Tix{Apgk7$2FD?N9x8Huo9}up!@x6;l&W90Q;^4Mngzz^gRNMXM>W5UQhni+$*xL()~~R|BgB+83hdQ1zx=)MEf1- z4OY6^b1>k2(CSmsrNhx@r)rp z=|}o9=;wlyY*e`zOYAhgnvP5%jo^7s*fUGT$@Igb?Z}nOoam%K%V4^_Z&#iAdLI)L z>=;hW^ik@^9R|DHT!pfQMWb|rH!Tr*SLqPMMf(x1m2tFom#ITop4$`9j1g3{8?e-j zJz=zv?)DCPo8{XYjb$E6yZ{{26`$zs>Bx6^Lrr|Vp||Zkx3}R5slDSU3-sgS+e}kI z35R>2>(yIE&NRf2GzpZA!w?tEk}wtvaJDgwO`w?mKFavF=HAY0;i)_zAx-HvBBQEkwoSBRdi8!+n^1|3q@;d`{ z3WJ*~aI^p*=yMRKoF79vrafJ{NT-~0RVX}){2mK<56&u|G$6lr9_3fj=q)j`I^Pha z{PHAo_R>(?M{&Ow?$1;@7Ux4F>;zQMQVx3)kxvtYJCZ5H@96f;>|C4Ua4a{C<7Xaf zGN|rV&)GJ1<^#`sF-H2iZ-GZ0`4->;;K_K@R`V|-3z5bvVXQ$Se*qi!IFnD9k=U!n z30#9>8Pl^LzCVdfA_**?Zx;`AoNSOG5#Y4XXHrTo7ol}z?C@U3&Plkp$Ii)!i;NTQ zM8+|8PC=+@X2#A%keo2M(*(|pol_C#*g2haOpCd6k#3J2rpwql3-=zJRlXTJcAhtO zCYZ6qU3nQhv|wfIbl~0|J7KHLu-*SmP}|V4a|UYS@2(9nfX#S16SRWkY4Gx+$Jp7R z6&z#dAdOeT7*q1hQFg9@AXNA$8$3UWBd;HMP9jI-Nn~sswC6cy9_v(^6nU6K{)+oy zy#@|Cn9|WsS;mNPZ3rV{)Vlx0FD#D|wlql|HTNE->>$mc&UbkRFF~1BdEl8+t9Zse zwZGhNfj5!ex&YYwT8H)365yyWtFX?v|I-#8{?+J9p*1o<%R5uvI$Iz383Jc^+4y}0 z{-&aQwmoMV?{v}>=LRD$EPDv17Afy0DcgD@7-ZI_Wu*+K^?i%NYuFJljw@@NyOfa2 zvHTuWTJJg7jgLA*hujJ%v!9`dn0AQmYmU)7V&38GoI3Hi4AyraU)UQRc;;`8x`5!i zgm5ZY#YnSZq0hen$5LC?M&CzND~R^J!%c^0j&;vDUDif-Njh4p8NJ8-cGXg7(R(Bh z_nz;hwr-9G5PO6@L!G9th;u)1c(F(L^)%s;UxkwUhlDQ5q>gmUG`+K2(eQdlpAsp( z!>=Q;>Wzf&$yokzW+rU*82^p4&GN7sw9bC_1mZGeBx3vFuyB_=i4&6Of7-T zrvwJy-FXxAd67?gGY9L%wh^8veJtS}#gl$=$u!Al8RY3b=7S#hzib`|OCEx|aUWVd zOmO**rXT9!>m5hwyS0EfbkqNfM?ErvKSO$~SC`Fufhn|LzO-O?uVJF;YS)9f;Ey(v zy?bG=(YO<#a7>?_iT0P%po!<{+oa&FfGhFUv96{EoAw^a>ro8sVH%$T0OWsJQY!Y7NigB+^Q=F{@9y~`Z z{^>7a_n|5ixN7VoqzwNCxZJnl+$+3qEBu1q@8sUdf#So^ARnah2hynMW9`w5_a?i0 zoCy;f^_`irSZ*e8rQ9ss$9fe%YOOqibio5*lnfY|Wju#@*gMKb$V=qe&TE1ksywr+ zo(ovYV;*sXw2*G^9g&XW1#mIkyL7>=uS~Roo#)zKy_cIkp+74w^qx>YC`lvey}*r~ z0;IvdHf^NsO*#`1Vkx`Zbg z(Q@jw@T5o7Mozuq(T9tXz;l44?KYLsjdc1#OFDhsTiH52cQ8!6Z2$IxJ0y@_YjKw0*)f!!>8``N%A zl5VsoEfk*>qO=h9r~t>hyd)agl09swtrcxbe73X9=DN*OoPCJDSC|}5Yielh!CP+= zr}ngT*Vm8jY8fR_XS^L7>4O|OQt>m6{Lcby(-w@6XIW88<5cMHv8VP%ob{XU)j{3B zuh6IVrX#**`&D_71Qyq( z)$6kHw6SAUQxiV~sLGBw`?NITom`e1b@uDRQ*gxtS_(IN+NaFTw^%jxVA)k}zToS& zVqUGAr*PeRZ0Dv6j^WCpJJN+wxV}2E-$pwIcVB#zQa7Ng6U*Jj&NKbQzTHFh<+zrv zDXr}|sZpKi$$AoJtOFv=tv#(B?P|ns?L?!01CCtdf@8raQ2mV9(3vPOw#MRlgRKJW zXo7I-_r(7J{%kG4_&@RUX@OpzLc>wefE<4z|8EqCl>fg`ptavvXV0nKJ?e-?ceIYP zM+PMMR~Q-pf-K3kf5OPHMHiEq9SxJ@ox|ow_1uFW6vwGR+Cam`SPQJ9V3KE>_3>rX z@$KEoEWTt}9^K#TugWx`&LKvdlLr3zh0|uMO~l3vGTSHrSW)mP@~=RL;ds3F(wqYkZ#jfd*Y$my^1(}U4nlfU#}s@Xg5Rc3a~?qNwCRaf!M3UV&gq<&nSUZ$ zrD3Oz&gl*Oo=}?8j{HgZ{Wpkm6k*NX=kAPmX1lP><*OG-qF**IIYoNL0UVJCYO;`Yc&*jvZD@Bva;n}FjT3a5ui;g^67O5sH)U!-t4%5tS} zM=gbiBTcRlDP*%J$etX}owirl?$G3pj>-5O;zXQOd~jzYo}G^wzw2nc-NTRMOz`eU z2H@1XO7He=hFvS_O+JVCxA2E|$o^yQ({`XemF66YI0=sH*w4_{Bi~Ekclwlx9c}xz zbWLmN@?gj}mTA%d3T-q1&YatDzC-7|hVF)jea4O3btmYoww9ijy(b>j($uqu{sudy zp}w-w7?5f1q#Xqw)lOP{*c{!!RoLj3?xwERPJVfCd>}#S;6x+PQS0~vLg@%IZ5RW) zwBmTDuBHR0`v~^~fsz!zM+?7Lv(J_?r|BngSxV5lTPMTz$L5c+ZS{wovPAif!3x@XP~|seh%`|oz9)eyv6fcerbIp^z&Tg%Z2k!q$V5QFO$OB zFk1-k2s26XGODYqae8(GKEB%3sMb&o}gfxVdMaSB$q^e>!&)pJno z5h}ac0h#wTcts@(@Jmeq0IkBYhWc}!Vf~>-*QV9z`WHigVpf^3^Ej^1&B_`xCA>0~ zB|>>!gnGk6k01P6n+6`ae{-VM7Joon^vS|NdE6mP?%3lyHTFPLgFzOfg}|3&>WIES z8GNa}&kChAcF)m3$3HOErkQa|I~Hxw#l7pER%}z5amq27s>h@n%crV#=sB>pdvt4e zXIo>F+Ii7!M$2zYryE-Zdw1F6`WrmS-$u=tJM*i5T>Rr(T6)}`X0_qAYTWuNmAsxC zASc!R^+9!_oL~wbl$@NY+Q%;^XIXX3>_<)p%p-K~P{^%}Ysxf#m`*XS!}=XZckZ!M z!>;Iixl{d*F>xOFBW^Zvk0kEgD5BQYb0B8=X7!Y!rL}z$)|y>Yn|kW&VZpMh&BZ;C z$>O#q_moZ86Up;NhLZz3dW>FR`1u$4K|Rw^DOJy!uzEE#pxmC;DJ>1njXjMJ7++k~ z5i~9aO+};k0j!BQqA9KF|PAj>1}QNq;^xM z8V%=y>ZVLT5T6Z%>LBd-NXup#_BUyXvNp-vLXVsa0keyu?|s`uc)U!dx3wN@G!yy0 z(wQ=`0S{LirZgTVBb7b{*8sMoeHs@jZ4KCP)m77VVEzpzpYLV4*=D3O{}z)!rK3F| ze;fD+EY4X=2Zpd%(J^Oyu2X@`S&OP{)UyPK6+8!|~j81=8B4G^#UyS!bp_ zj1uA~DaK%R(frz9?t?pin~ z!%6stX~O)gi~y~wXbrkks7luo7)ieZe9DY`CGM3pPU_EU@*ZDEn`NQ0n2DxNaf|V^ z^;Mt?3(C#WjA2wkTcS&%S0i68e6v=pq#tJyTJ5K-iot8<^16OBb9o(FF))Ke90#SD zuS4B~Gx+sZd;GR<%{*`(@kB_*F4ld`m?rgjLBnGv^~Hxe(^NbSGc_%W8!dit>Ysn6 z-f)YwhRtg_+bRpMMb*ICqAIa1pjX_sxO)(7agWs&8x5!} z2Fatn3OZ7cNm{e8a{Y$7nd7t6_=H}?BdQ)eeQaswP~kVeQygve9(o`iVyZY{w{#M9 zGgqnGgsoDs%Ht~aeyh&f+V#yB-jZt|tGvPM*$TBZ_1E5~0V?2>8q~Ac_8gR+eF$|7 z>e+{_djGy}Jv(q7(Z75ytmahAK{7VcHLg6aQ04ZcvoObVW&5bbW5k^s{pzyMIer8B zqpY8Kuc9omKeilXe>{$Q1^eR(tFGJj(;oxo5j%DqD|~iAokMq` zrOmhMBrTO`%`IaI$5jjGz*QD+LmXMFB(7RIQ3}T)u0hG?({_8*>oT9Q%EZ?){UZdO z?oTj%l3dsNmaxhO^Nljm>HUG3a_kj7=DjuGRaSk^;ht@v<|EVodR^1*BhDQhw)yjb zPj$?A2tcHvK2fy)3szffs`auD@~5Z|{RGsw-GDI@?{Cb+O}jxSh>T!Ee^4^=3iu0- znOCiL8PU&}84QoI_E6(`1KLB)ihcq0Nn3?AXG?piU4lXEe!Use9&cIgkH>!+Q8ZYPHlsdhj&Bj|DIL1I!h@lneXmVH`_tEwRpIPI1ES|A}IkR^~ZwlBFCehpP8p@MFt^GajS#9bZ>Lzlx zGu0Uy{np|;J;@%@&$Zhr;|k|ZtKH6FA~zeL3(NbP8_N@QAvU-Mr3=@it%7r-^E>Hv zd}XvBT{vJKhii`@zTeQ%gQXW_Gp(Jr`Zm$1Ri1gG?Y>$U^s1<@?`oL{pO9d>gSYf_ z4je7)SM%hoTh1BuE>}-}ooH%enGNIHn_KXtpC8(7Z#SP-<0rDAOOs`J9#59%`jAlC zO~H@&3gxg2k8ba>OV9K4qDr@AJUB>P>X4H;jCWL}(-n|+?n`O$Lzqya~LX+WsC|b(aa*U_(hiT4z z3#505@q2nt=`rIuf_-J42gZ+Xxz8yeQ{1DcPgL++V%pJR=MwAm#B+%^0T=eyz=k0X zMT0E^d~6)$@T7uGk!Cf^&)Wr*UnL7eo#D}6pk%qsX*2&bMljHB$363gBlMpbqkT`9Pgx?2;9%vcaJEu75ob$;yu>$fbHqP}G|9UF#8t4- zsPij zt?^=b`#ti>TLwb;-n%c&oaVq0z;^J{i#Q{I$BTKwlj;NTq*^cO(X<>`=Eiar^L8iuDsP*0E}`@A&o zs|ECY`f2q{7Rs{qNiO2HK2drL_6*Kol&MEOZ|v{;@5G}tC4M7*BKAAA(iN>zTORA%oJx^ zlqYZD@$5II{mx1&#&=nHQcb3n#`EBqmSv?C7wfuaTWN*c>oiK9lu>BPu;GdUM|v>} zuGqj8T4{g#ho)C#rEPD@u+uU_(zY}7Y&bc~+fLgq1a}9OmgW?r+=l((->7IwysOb4 zZ*8B}*fm+~ZORYUk$X<>#0d*(o>`6)Y;tfOUI}vKGACI5uR0#@=!X|Ia*!|e^Tdd- zHJkR9w=5{isj{1RlOfiU6&aL`G#WP2=utb49)OL+nPWHDGkPY}_gafa)638U_N>Nu zC4PPj=`Hh)>p(4}PIT&zwUEleg{{#l5VtiNEu<=>S;m4sn}epQ)v7T&(svW9(?2%C zo3X>A)u1d_hz0b2RbT3UjimnteJmDE9r%}it;Id_>Jf%nILxPv5Jqq~(=ooi!ihNB zA><_%P8@OD!f|0?;rvNp&5Y^gC0Y?90n4&RArv`PvI*RskVf1DzLCfBljSkpEi+)@ zFkR@6F*I}?6M5Si`Q&XEgks_N(gGHapI*e-9eBKGp$Jc^F5t<{gN4I9>9@UrqsOMU zaQ0@|z^8>nINcTzXROdR7S3M~C$D=Ncz@ej<$)G0oKRZGlYR$?x;zVKGh^XULx_b# zDz=5guX`d6hp&NIID^p>yMwl^5B5gf)(5myxZATK77nGUKMUuNNn!MiyhCVyxP`ML zVZ$vPrCAc}8m1;#Gb+*j8pmkR6bnPFm_J)-V#VxgrHK`@o0TS3%pO*nSTU3?DMPFn z8?G2u0X-<7#AP&=Rp=e(*?gRfIo%!ux$uq+cu1MFb`+T zv?JtY*GcF3Z36gxIGuoHcnEQ=c2n?3cjwE5yg)fCzoAF`B{TVN1e3daL^MuT`wdZE8tGzh$+RRHc@6CK7^Nq|^ znX5CO%A8aGbmp4+XEKkje=qav%nvia%k0gXku@`GVb-jyW3!IVnwK>@Yi`zwS?6S( zpLJu_rCIZ{Z_Ro*>$a>rvX*5nsCXjl+4|Ypx5XD_pO<}M_O;p9XWyNDZ}t<}tFm9u zelz>C>@Txt<;>1GDd&`&i*v5ZS(CFQXLjy2ISX>H%~_PYGUwFXr*l5d`7-CI-0yQf zs=Fq4ZSJ+Xcjw-p`%vz~xfkXw&z+rjU*5BMYw~8~FUr3#|BC!K^VjF!Sa5g2V+BtX zERQ`|@JhjJ1s@cARL~on89S}=_So~WrLoszAI3f`{5W<-;U}?2iq0xrU2}HfgEfl_ zzbw4Ga8}WSMPF5{D7vk9Wzjc9j}?7h`fbsi>UBjQSIsH@xMptg_cgZ{Us`fU@%rjz z#cxzUTzpN*^5Q#79w<4p^udx7s~#%(y7H-#3rn9axvq3(+1#>4Wv`W=RCZq3$z@9` zE-PD7|6=)y_s!yw) zuRpo^s_HkZ->IGvKR&)FeqQ|i+9kC&)ZSA2RP773FV?o8dZ{1OK z$JEWNd$#WAx+Qh<>W;6QU-v-W33Vscom_W%-Kljq)tymycHMb(Pt{#ex32Drx|Ma; z*4gU!ktiPuIrutXwzpC%8fZJWl7Q=s;k(pK2c}UOHnL|$)x@hQ$L(d<2!O&}l zelm3J(9ef{F|;@1sEipIGc#so%z@Y~$T%+Jgp5TQCqwv7&p0#V?2L0W&d<0wV{yh+ z8A~#*&A48PsGrr6CA)_~QR_2_{xta4a=Vu<9xghhn%;O>6CuW|U zd1~fqnWtx-k$Gn3S(#^No|AcQ=J}ZyWL}tgQRc;&mq6?nXI`0kRp!;1OE3s-z#w=a z^TEuAGnZ$s$XuEEIEKV342P#PpTV$r4a4I-42G}W;V=tBfdgS42E{@%94^SZDC-go ziOaGUXI+tXRo2y6OR}!RAh{{)=B!(?Zp9$ET@91FvhK;cH|u^3n=8GQxOc>TBOV&@@QCFj9vSiJ zh|foSHR6X6>qi`wJtO<*?Ah6Kvgc@%{@#vr@^!|u%6=w$b@rO<=d)kPelhzM4A?g? zWZ%mEF#8h>+%GV6zsmk0`=}fa;5j)9b52mh_|%-!bI!^+C+9p2=u2`g%~_mtdCnC% zS7LBqjlq3Q&b2w$<=l{SQ_d|px98lEb7#&yIrrtoX2yX z$XS*1G}OU!IWOeAlJk1bTTla^<$Rv=1(d>_ zMR^zJU6OZc-eq}<^DfW3BJaw)tMabSTatH8-nDtx=iQihQ{F9kOY@fH-IaGw-n~#} z_vbyBw<2$4-eY->=RE<{wi?Rq`MekMUdnqp@0GmQ@?Ot-Bk#?;xANY}doS<(ybtm| z%KJ3$i@b00zRg>g_g&t4D8gg%=j9)pzcBx}{NwXafLc5;|BU>zpd2sCza;3X|HJ%`@;}c1B!6xGr}>}df1dwk{#W_m3LcNW|QHGNOP!v!mp zvVO8)Rl(B*&lapMc&^|@sO?vwxZi>5{t(LhlY&nRz9{&*V4YIqN5^Kz=EoMq7RHW` zofJDIc3SN8*x9jjV&}&$j9nbNB(^wqW$dch)v+b9Yhu^Mu8-XqyE%3{)c&&AU9r1k z_r&gvEss4CTM>ISwlelu?D5zWu_t4zVo$}Mjy)4w9b1Db;)U3Yv6o`6#9qZz@kZ>; z*jur;WADV?jlCCpKlTA8kB?#>$3BUD9{Vb`F7|zFeQajooWi+<^9zqJJfrZe!m|r6 zD_o4Js#g`W^DZZ`v_Tr_*cN8xxeyI52;^oDU6hB(L5>wV? zC6||6QF3L;RVCMy+*EQ)$*mx%BSR$4gh0K2`cm>6+4)N?$I0 zt@QQMw@W`L{k-(c(yvOtEnQdoed+qr8D%rej>bfIOxgUh1!W7%jw?F>lj4bGCt*rF zz3ePZjhB^OS$1{VZDmW#?kanv?9sB7Wsj9TQTAlnsBaZ<%86{l95R>8^l{EAB|E~{8vae2j671vhWiph9s z#T^yPD(b9z-RS#6Hs#;U^eASCpFIT-%^=j4YRc}_k zUG;9&$5o%eg!mLj#FtgyRIRI8U)5VZvwBYT-0EYh=T#qDy`cKI>f@_Vs9scka`h?I zr&XU`eMa?})#p`TSbb6T#nqQoUs`=R43Dd;msDRL*aHK){^S94X(bu~BC+*osS%`G*z*4$omN6nozch@{vv%F?S&Eqvs)I3$Qx@Jwy zb2ZP`yjb&6&C4~f)Vx~rTFvVuY-BN5yBvXU6BlP&xso(uwgiX)eVth+i1LJbp#|%J^0BtK&=J*Tk=lUl+eV zeq;RR_-*mq<4far#_x*X9ltkzU;KgigYk#sE8>sFSH>TUKOTP~{$zYr{HgfU@n_=C z##hJJ#GjA95PvcLQv8+ptMS+3ugBkrzZHKw{%-vJ_y_Ti;vdI9iLZ@+8vi{0Mf|Jy z*YR)S-^SO)zmKnv�YQJF9kf?VQ@Vwa3)XtDRqaZ0&;Dg|)}k9$$N6?a8&L)}B^- zdhMCD=hU88dw%W3wU^XhTDusg-Ziz?)?Qb8JxsovVD#NudwcED+B<5O)!tcqSMA-k z_tf57dtdGSwGY%jSo=`z!?nw6AE{kY`)KWBwU5_6QM(F8;_BMxTto47n2Kv_*VTSk z`-3tTXTVrI8YbgB7>dUmL-7@f?_n7t~!=x47i5lu2JUVP0C=r-8C8S zgNaGAaiuaGpMvoz#^dX*`S?-Y$I68KTp5w;>b|S{UYU|J>yNIVqYTO=%A|a@eog)J z^)J@Htc=UeNAi@AlGf%;4x8nyU(fB@k&{{)drHd6xS-T2CCyzp5&~{=xR{y}*^Rfp ztE8#5Eql^rl?I;y!0w$dow=c9HBVG98!MPcQ^~u1k?#KoTE9RWQPqv3C1w=DkN)>U-;>tE%hsb$9j5JgvA} zU3I&=cB<>v*2kNfm8Fmg5C{y$AK2IyL13^<2&9nza99rGKne#EAjx248LzPbgAKN1 zK8(EKAS4C+&dIzt@Au8B>Z*RDcjvvX?z;En$&)8fo;-Q-HqM~GC!ZNe_|*9`C#$jYyaYp?kw~3bw4=Rxr?7qe)l)- z@Xyb@xAV#TC+C5t41E2cJ>1EE6c4`XZ;yBIb9D6ZXt#UxaMBx2jfW45g^Qzym%Z7r zZ_Vb@;rQC9;AQ`&H?`)|-f%uMD#mO+Fbsh8MkA-+n>$lH+c)InJ@+re5705YR?8XK zcxatZZQB|<143b)-}WXh=Jjg^sUv$fBg|{G0gVZ?ZX?{;Hy-Yql4*i<;`1G|Y?#yu zin|-Bf6p-9-Pum(=Uq?ZMGcJiOV?Yb7{IoX_mEx>Ju`DfCbWNoH18TUaAk3LNoafxRDFqZIJc)X`!H^6{%T@d^WL?g zs&>Yh!WR8G>dgf_OTf9?4&;RN%zWC(MLlBC1Qho!rs;PAvR<+;7uVKkZcV24z_=q@ z#5J~7vu9w*9JmJAGt+9_5mD6km2IqDW3N-F)a1x7*%+kGt9*>6OB;)Ut330;>B@AH zRpm_ru6X4WK-L7{6Rwy+9MwXF0pfC&TV*6Q{9Sbv8}(8FJY zJ!iq6;5QSG%x)@Xnu1*$vV*qE;$&E|#(ZW1Lke@)2HllYQFlBX59ijEk5i#83u|HK zUQEZPRjI{{*^A!9@Y?XyG)t1m1p7aFTR)r4!>`>VN9Cyy%SQ zz2O+bON$(@5ZukC-YY+ilGKqPl)-x1}%ej6Kofp7M~GHH&UUm@uUlQZTDh0 zzY&Ya?jQrOyQm5^Sz&vqR{kcWIJWXl&MhSIf!0EzLPqPt} z@?G_6U<%&GC?zXBAF093FKN-ezJ2;$ZNsaOZ2@=mK{`Rjk}~ zd+=Y$6)=-_F_cR-H^d{?hCyv;wUpezkj&YY7!t7u>kizK()Au|;xsKxgGFp7?RH9q zrZZTK?ArLsF|HlwdSqLdQ@i(k(vzz@F=o%Pnf%;(Lxq9}Rn#P;?s=9%4H zUO3#PGTn!tmPPflHxQ1$z&Q7&=9t%=f-KsnPzBGWm21%Wb)RSK!1u-+&)FvZ97)@t ze(}%aFO!4t_Ki+~d6MliAZLg7H12&oU=PE)gPR$d<4Y_ec9ncSpzt0zr2D93$r%X9dz~P5@Z5 z;=TLWb7p-X+X%-bBFyzYe2&=tT+piwk`3|OkjZ1QxZwjUuE-r)e z!$>+z$~UbdC$>Bj*psAu7bu-cdfO^~zUKQ25U#uQS9#{4J8kCfdmS%|-+k|LPR}(h zpmjadd#TRez1)kF?8OO5cF5t{^$gtHZKxygN(txgifng<8067awvxKYLfLz@kFf2I z`4lH7pR#}GK!kBW6&tLF_ps14X}5%8tlZrTBI31L6h>R1=;!!dS6LveotsLZ%>Bb$ zJ!q;2W*x;xE7#^>t}8NiMGV{C%4JSV<_cx22YFq^N10ZOSfg3- zVqZ=bV58O&0LQmPd`c;oS50}{K$r%bXr+9D%9x-EW!O%4>vGr^I}7Dp`n9CrEFY0k ziUVkDkmhW2&)Q{$xk$^32l{a?Y?{Ir;99O8Gt{FA^~i&hrR?->4y=g9sI+cF8{^vf z_uPnV>rLI@*2e_{r?;&)L!L7CanzgPy$SE>%NIq%+C@xbyHPL;?Q-1^*3r?!Qu7=i z?W0F?$2od5a>mz34^5LR=OSg}q}{4^%B_k4yYy&pX3w(4nlQzR zMf&Z~$AUh90*@bg53khsDgD`_k1>5PH8#JNSmd9aiLXd1sbSbJJZGZxqZx&TaOrS zxL{Fio9jlWT{$VW>!w?KO^_(qY|)nveQ+~o{Em6;HHN?O3nuxC1mZH;#dX5vTmo?D z(Pf?Z^I=f}`1n#Pg0gn4UNA++GpchcS*DLu`hYZ;CO>O?&qS9r=sOoV^I*gqmL3Jp zc)A3`tyC41=ozG~Ab$HPYZ{GerC2Q%1kYGHxW#>fWoG+2UGZl@uP^C?*~QS@am=`h zSJ)?2T!bCWC8{sr3ORQo%P~I_EY_8O-{@3BmXR?A)hPmSswi(7&1$<|?;KZGkrif!BAU4r zmST>GxV9K&zQ4JDf5B9GNt@g)LoQCS#bk}_|3YL z|5Vz7ODY`vf_seFAh5B1R~_MNp46SH6`1&{g?8zrR2N!?u`tU7bq7osfAVB_PT!R@ z3R#g8JC8WlW=tQW;txRp|Cxn4B)VKDmr?B=2B@!@#X_~xXt4NbRq_6zzG+lT)l#`u z5f;~LMt$4pG-}miqh5LqdEYkLMHpCSE#B}uyT{SXYJ~Mgtl{lRe-#Eoq1G}x)lBip zu+jYE_l8=o^b2LZGR@UTHe+I)z#opH9>QN~R7%yVm~4dxJfPZ+_UW@jA3RpsIAQBv zDFN0KLa!VXAnQS{!lw)wPt$wNtxy#tW|q!>}e*vu(AFoJq|>txztq z;J-eU*NR5FP$-y<#_?-Jc_ohq%8mx2$O`tOT9uHW0|6Mmmr-v==zZAd5qN#Ni$sIE zei!2{a=TEGix5e^H}=cEJ)vZ0^7w};6Q$HwED~lS-|a!2jEGgtuZFGufwESdYU)a@q`wIAW4pygmWS`K1qIf$j@Ac>ZP1X>PtX_3CU z)58!o-t%b9>Q%T;_|3&Rlw|RuH$6wvbv|idGH_-dxtc14oulYmq-#ofdz|{VlKQrq z`nHz(_9XRfJ@suf^=&KlEhQ&S<3|U9is|puIo2`LdDb!0xz;h$`PMPhIoC1MdDk)1 zx!1v3J-z+eEyU@;T4^|&^yd8=LO z#%s~uMFTI))0){j&uC=^IRRoUbKp$oMnVkUQ=GmIAE}$!{l(O#dxdZ&+bS$xLFHrz zTi_I%)#B-%ir|tV@5Z4#9ZfJD4LFq_vE_ZYq+Mkku{FB~hnq|qk_&12Zfh>2S)mUi zvP9o_ z<|)OGSnl;CI=qH5qzfDPRESlc(uG?2fR7#Uf>Ze|CddYmY~1jWt@fsatKM)#l2mhM zmk2pzHL?HXkiO4*bK5{5B3AWQZJdv8T8^ZuQGQ8EkwSuiLq$4a#JRC4DyW~cOAga+Ojqq3ssq?Rf$S!Ze_>bf*oL#^k&s< z@@D19dE(bHj#T9G>)jj6+4 zsoZ|fU7r;>2Od3Cw;pLP!kWG3Heb1rE2Vg)^iCn{db$Yh?#P7ZRN}lpzMcU24z3=GA#Sy*KT1c`}{hW{ap5;_u=|jZtnEk^i2_A7n&7v z%PiJ1!*rS})>OrMz-fZ4<}1pgol8-y6p`Pdd)J#=xm>2orQEe?IelCth=2%)W;j-& zJ+a5P6m2YnC0fqZo{V~ZE#UTag4+nKTRSm6nm5WN80F#52S@DSz`?_($j*a4$R%1w zqC35*JziDfa%s9FY05VYq(?kvp^BL<-!RbIFgSIbTqz|e zrCf}3whP$$KF#-?$lcFoWt>9d!wGrFJ-O5p_#~H+XY;|(iCaS+-_EZ_z3Z8~hCCk* z@-V?9#pOniOD1WZ3>NX`-K*h<+)G+TaNY+0dncTpB2|J`(Ync%^#-3`%;r}^d&Hq! zVXr}`$Ki-2xo9|jzM;fDib1<*(nm|~1m&*HM_bBh6N-vIaULW02QVj+RTH0??@cBo zfMGEWIk)s&U`RG{DNetH(c!!AToH-7?f|*8ujA-Dv+d`D;Z*8P0OcE8Liz)-=k8Dl z9Va2<=5jdhO?j>f_f@FtFCAyp8^K!{*9{?U)*tm|H%1AaJGQO)jcv_d-CjB)%R+2` z)vP@&mki^;mof=AYwR3}LO5!MbEw1F9NsBwKp2LU2+4A;;*nULkqt2tpcK?0>g(N7 z#ZzZ-ed8?V)+=W*wI);N^LBrZ>#MmoyO%pt6Q)@A6kFdJjpUGzo0)j?Z@K_W{Zmt} zZ&UTH7@qEk#Hrq#U#a|}Xy$iBG7btR?az^Sid0anKrVPlhc#Jnk{H;zMYZhSe?(|= z`!mJ<+&9>y8XzY^j7b%mD+l&$K6PjYR@Qy45>iz{L>hB`rSeO7AL0ZpAI2%eI3i{_ zw^Fzzgv=HP*V1QT36!6t)?K98&Xv}J+Rih>B)h4xs0poqV`ADl!%oh|6mP#48_80q z+%j5Hdo_G%>-b2oMov%Lp?d8&dQPYtn+`BU9A62UEm;Ce5u+3<_( z`^vRoR14yaMU6Hze0)+46?ZOqh`ak%&iD~tV+$1!tu}ji*`w8-&3f1NjI4?{f99<- zw&!wtChq+h?~}@o7q|9w$R4P;q7HlQv&0J(2arAbGaP>i;Y=q$(B;xRSFzM(*7d3=2xv$faXf)9el7-A8UD_jI zqI}m_q@(fMTYOeeB0^co?7{(n^6MeDhWe26I1pgB+ta z5AY&N1m2z3;>(=Zl8U^z?G4AcuWq-9jfI<2d*V#zXV|^5rw071*CX4y#Ie}tlOFbk zB#o=)ofDgFSie>5d2unN!-*vdJ<_PzER?IX@+09a-q`);tg4Q&p4KXDmaCmYMa1C@ z9TI20cj(ma4HPy_ObF-cS^*@IWpiBwP~b;^SMN9L15(MPBDY%!X%S8%=6 zE_*j_dlQNm!CW!yTL@Mdj<1ahR@D8Q-qe~;dzAJk`wSrpjIi8Y6BF7LNL#Uyg*_ZV zkBr@pd2#rNMFEP?9F3el$s?YY-P;+fz42faHx`6ie}>R5E$|w{k)siPkIGo=?19Cz zvnGxutE3ZTpzWUO>{{J1q-T7MM)qmM;2hbhg+(Rrp-ecSFnMJ zJf=2XL1AXBCMa=@+~uhFWhA5n>tl)fW27U+j*;eMwq@+fMwhxvS5o0$kPZ;72Cp!& z`0PL2x}&KR8EpT+*!3C(qgEKRER3$`>o(KRa{J}nFjkOYIh~MsEhvGDhE7oRMsT)? zL9#44>#%dxW~^i#h)xvxu*=Q1`dBneLrH4kC zfS}G_g&nI3uCEo#Ormf@?XI>W^yz%n0m1gK)E#%gfTg=}rBSLFuuGmpXFP|?p2GO( zP;_tc(&8W}%f6k=U#+>ihh?-12HJR`Jp_ln0{ZVy4Z{A#`K9@iZ1U4y|0L(4GiYdX%F@qG^d6?M6?=%$6aNMrCdxK?*^$y z;{}eS6XzHT;U=-G-q~yF-6W;H8^BLTtB#;2yBX-+ooaz zjHFD`TM)^$wW5kr)uPrv#>K9-P#i0xaYywGh60v|lw*D60PmOJOQcFXFt zYpwJ0>6rm$cAKTs-U|`?gTAPZuN>N;M(hs?7AlYS_789ZEb?a0P;te8Jn-2Lbr(ISj_qwg)L z(f9OJqi9i7iQs&Lm`UEcSNScJaU4j-vtj0c`~5^r@va1m?n_BDBDjM}_uOt?a%Brt znAWY@)gn=}#zK;*EZ-|fO(eA@b2d!MRv8u`qH?eNKun`=l>2DeDns}hK=g{REvt$n z_ejMvMa8{1AcUL>j`(QVDo0#F6;!;dIC76vSZ_w>%*O?s+dHy~hP7L08m;C@z0~Qn zjo}z3&v0<`NLUR=4@=E+e6)`q%@&ul{&YB*<6b?}ExT7Ri$=XrYL!kpb!-Nk=F!7q zP5#E5W11FyH0k3NeN5aLBykrRS1s^9wYohj9gY<46~ro!>{>6C@fYRJlqtr(6FRp-f%0njZ&pi ztG6WcRH+OS7%+r6cEB^iN*^%k*F*y=iU2Vs(>STs%Vww4W`2YeX-F%H1~ZmhLZdV$ z>wWS1(yNJ8yHZ4=b|y~ojQlAI-MN~X{)(Fb7!y;bh-Z4l zG^-|Mce>;HXw@7dhAa)-j@Vw{hA8>szqp)g zy66gTG?gpHal3kQQiY8|?c5UGtQi#V`7ajt&@(2U1&sUcQqf&As+C%)(I_^x=~lQI z8A}pB^YM}y6$0dEY8(n^{>}=GUo$cmE7ddsC=`hz92&G-J#N-ZOER2Up=f5bT=izD z_XvlD&}tS+C7d^7j)%u7k2toJ(u`PXoU#`4VW@dyR$&NjJ z+SE1*g}T`)i`h(!_XC1C+NaMBeK4oFyLl22{Yfua-3hXe={tA7(sJBa0uMKeU$ZPL zj10rLS^9nbdEsGX7?!l2M|izr6btQ=S#7nrGa{68A+CpO6l5^LEJrNi{FSNlk;)Y@ z48LJ@!36S{VT>%{heV%1%Tz1gD;S=fL^+T0R^2#hRNKW?Ma-B!A>c-^7%|^N{m->9 zC0v0k4sux$Snafkwk~}%ybl+?%6)P4Q2ve;M3<(JNQVeIdc=)_NNv@7jNLYI^2e&g z?^DK|ZS@t3E_2};R_{-DaR4_8W4uKx;nO|SINCK07_d(sU-U*r?1AfHAul6k-4b!p8f8o*H+mm!^=j^!iW8-^S$i>WUv;Jq z9emViERqjcEn-o3GQgSF76Kz{C5>{#Br5h~3O7^}ap!}@?L?y-Hl{><%N9Jt7Wm!t zN};j`X-^W`giUzbcHbv~4$yt@Smo1P$E zZ<$7MrO+Qs*J>3OlnQ@)^8vzltQM;iL}=YkaFR)uxRhc%W`$XnX=6w_6|H|h0#LO&|Kfh-KvQ#mc!RJ+4y%80GSe}CX@v#vykWrX`*mL zC1shh-Q-bAEyNX?si7J5$fS8|Ho0my4}AE*w|NIHW1MvJGl^IFktSZC!T1=kyN{bvyS5LqN%YVqL&WxYEQ@}b(d zC)69RbVVGeD;w;cNz0r_@Iy4YgV1)V1I! zyU`eDSV*kxHs^Xps^BduTruGMxn`rAES#)0`WTJ&GS13;ubh-M3du=XDfw#5E1U+V znZ76|zB4iJMYR&uMvm6_sg9U;wCnof<%vFLgXvq3_*8}#)nthr?P=1+z!XTj_hzeJ zDYUD{#~5ZZsE~JGd9RTksh!fY(QK8=twINzZg}xJ?D5JjvP&3c$4Ft@p@F8sBkAUc zre7mZD@hC7xkYRf&h74EIMA%Q^SHtreidYur?ZLFS-?}eyuPtV6M2`7ULzpN2);Ty zH(SNBWf^R)0@dlHKb;@m1t#9BA@1t84Jp>2)_0?OZn&0O9bHt1H*2lq_G!};wq^jP zdsaTR&dyKEX46WBg00#>#B)6eBDfmZY0_x{)B~R{t=E^`j)}IH5Unp@M-Pu^IpI6n z8L_l5TK#@rb?<6pIGbBzXTWES`A{;S4UHfO8$79%i4+>XPpQCzM5GfePp2-~wAZL% zDg*MiiKZ-QTd8x`K$gqy-o7v8Fcucm1#U{(5(VN!IMHz6B{5`Y-Im%iP!#9y|?DBrNy*4;|2KE1|0vz1Ea5JI%CRTvIL zKASXo(9dMEE;_a&iLRo9!R_VaHXb62BQn%ue%aLA;w=k=8GileQX5;t~_me&UEVu?AWEO{gPZ{e!eKq`LSwvC=!uJ%er-hV$9F% z>3eZ^#(0a)HT*ZE;jzor#g5lA%RE0ntrfcGWy&J;n1WjoJRN4jKE2sLzzbS(yt{w6 zZ?zr?ry=5n=T6@lH4!w7OKRg=&YeREeeT3ABSiON5_!!)?VGX^ygJ-@X-m_7q~80Q z4?RLQJps{B3Rbqk86{fThNlR(Wn0m^;Z#ve>s^=HJJGWO*%Ats3*eyDy6Opsp^yc| zEO?1y3Fm!iDo#E^o8!opBiE5c%63&s1`+q9Um|@(dAhdWM_zs|**!RD{XU=qTVMVW zm}b7lO!OkmNsWD(rYVFpY63<4@=3U(MP(JGd*U8DDATyanuVy_=FpP~y)x-4-wW61 z21-^-A}i5-5h1k`cM#FA%?^@znM81g%zIQYn(a!vP&JPYnzAVy&N(MucrgY9Zrt{HdJ}bCzbsDZ zzfPPl)r@AT+$dE#A|*~Nce&?TURYGPTe*X|Z~2)zAnp?uF2ZNp`_%so!-wCMByeGM z;$4Xn74YN(=blULidm`4oI~qVDUPKxZA_LJ1FE5lY9+}`Iyau*auMc0TAGz|5ouu> zCyi!Pnj~J7Yog zFnbvpV^B>KfJ*+jGp-fk6{FB;Ra>2!P$d}*=hBL1MjI9e{vK*3KT}e_I`tmm)w)qC zm&?sYQ{)7T#2s~rEleQS%eq&wfu&QBvCXU)l{B*gt6cbx_&~^!Rf(Ew5lhckz#I$& zYH^RXN-Lk_3Ugzbd;|$&x`^<~@nW(ZHkHUg#5IZ1B4l}{O_DV010=!S7Iu;eI!lhE zR2#hvy;LT)K;(}GTLKrKiVu+r&+;0cMRExWmSIIT#s-Q#IGcO-vukxJpS=v=z(wMB zfW#S}+Fw{;OMM9j`DiH(u`uE$tw#=pl&wGrR`P+4Qj9K7r_OW@{>c0mYhXAmykMg9!RtuPKCMRS{{+D>TaEfv%JmE99{+lRUJ?D+pJhd}lbZy@9&| z1)Zrq=}qlZdop^ZTijeqWuDrzi8CIYLv!+7BbrXW#Hj+pGS$`yn5<-a0i>Tmc%i-F zP!Q}wZf`T*>>eEAezi=G21y#F-}o)oe)0pr0q3UnxDSV*Na;cQYapdI?$5+&hD|!~ zAz{K=lL<36EYKK0oFF5HyYBU5zF96}EHY!7z2`PZWNeyNPHG-@41r8oNO7K8>1Vf^ z?#PG(+HmL?IbgRExOX5jvNT`OCe~&fRW~^YLYiD`snNpLwkXfl7L=c8_f~onA$UUj z^8k~nVQ4ROvprj*EJhp=yxk6jmGa(ijv4Q^}mIwZoebnY*;)#u%s3=X`*mRevp!(Au z4njjrDTpks5X)%z@UZl_2{B2?C9{%6yVuOH3znhlL+_0ZUIiwUk`>*69>R;+lv zY#vg>Suc7+H(gb_Trplw4o)~+@v>i{_zF0Vc0=A?A=9z#!J)EBR9&WB7#!ZBi<1fC z$)OB$Kkr@RzTbLG6($bQla-(j`e)wKjDXRYdyL`MfBcwcrlY+j+D+qFy712(^5=*B z@JURAi=0FMEA={6>fw;Kpe6|d3lUM9o!Zw3WU{ArWHTd?2HFdt!fsJr;xT4|1!WET zRCD$NYPj5-RDQUA3hOrqb=^dC!(dg(AJ{m^siR?OW zc-&I&KvnU@pw;ie&V)Ok;!)vJxVCJU*sRHRP?2YEdz5`>t?EZHlWzI?iM=EUFXE=zv!(< zvh!sp<%8(cogi)@Y+EdrD+N(3^kz2Y0@Ngw9dB#I(jeqRI&)^kq}$8c+ySRFYmd9} zqSQTl*uUvbt@)Hitt3_@fy1OFZ!#zXvKa{N>kxuBs3j9 zD4ja6LCH)l5tPbA(1=7PLMnE+(wGPulEh@Vh!iG+1|%>MEFgU`P)c*9%#lhM6u7SV z1WPEMrHN3mjGh>U%4CXCEPSRo1xsa$lmgcgD+R6ClpZxmss~$0K(9JN$ty2i$f~6J0|2a&<4{Gah0lgC zxX(qw5T~e~3ctbm45_+R<70*^6`*~ImILeW)V?|u*`5*Gn`jHGgR+qdlDMl=N4RW8 zHE|59Da8P$c9kbXU0!ITQ3YD*8lzg!A>HF|tQ zQb)i71yd>rYeqflRjD-8QAMhW-Cr=Rf}rZvMD7+!K^#=ndU)M35^XI;BZUXOyUu1G zovSZ>g2AdS36bhxrFdzdKq^kED*%#;ET|!3=?Z|PBlGk?JRfLNFCV6MTkHMir+$W^ zcW~KG**q^>?ZOEz+cBs|OdK4V-(n+62>yNzH|P{c4*Wm57Akwwi?|7aveM)JPrmB~ zeHbyRVr(|Ee1c6_OC+Wz<<=cPA3HDL6La?=ju&ITQ3wZy`p@|?>N7f?p+#KLL~8he zr75>XM521$W6?r{l_TwqbOG!uDm>|MPzyWOrIcOOT4;;7A2~!IX`M>PAltg)F+4JpTynDx45fO9?9rn zKVe?Pajnkcay0BqYhQ~qyiFQn4fP$PR0>%i7pWjoSjv+gZ_??IsAfyx^5~#BVVQ!G z8IhUa;|h48FVNmLH1oti`!B~*xyFhc?W&iQ=blwXN*Vt|=}p90g}m8Ozl3i-)GrjC zAG7ER&x#D+o!K+ic3OOvdWSADcW?aeP4uMARaw^1xm;YqDgg$|oR8cHkB&VBEmENz zVAl$-CwNbn+KByPd7B4M>IWo#ac_}zO%@D+Ulai@pGlwy1g4)L1c<`2{hBnX=$8ZJ zzoe^60(XuW?{b|4+{NMYF!)n?-M?(v2*EDF2QbHmW1IrLwMIiE_%(cla$EP^`3PvH z*RwCCB6_FrPN4#A%v*)nB^)omp~^=aXe;&xTUKfSLK)fmsMvr7rVgmPaDI&d{J`x1l+BOOaaqS zRkbnVjwn7x9@%%svYemXS@{c#-iSuQj@76YKt1^07+&JKC3jL*>+Y3b^;?+izKq`+Ec1 z?marN_pShIO`OZmH+vJ_Xg?lKXY=sGMi0-9_=w@;72jm`qBk8_&V&-qm+*fVS1k{m zTdUWnK!cdv)MEFRI*`D3chd^&8ps5T`x3DyjPqVWWc2Q|H@?Pwc{g_dIa)N7iO4w* zw(t525c)o*uf!K>P8=8k&@*z+o9{R%AtFHJDxu33=-N%b51o#~1;BO*E}e~}*3fA_ zEU`!=7;Kagy${x67E1Cxoz@{*(9g2h-A+Z2OG^LmBIDyb=yQptiD1>0M5t?Zand4Rho~HG{iz( zA(*b9gI((@o74#*e34cPQ6$O33fW6R=+BIrGTOOt33m;YpgAs7=}U^5a9Ird%b$>T zlhv?$g(^7hK}HRiGNHO+=tu(d@LV8)kTZp_2d-dA8P1{-B$xCO)>|v#ppjL$pacB= zEZ?|OcrmpR_RV5J4VB2#zO7>hBQbzUsywjbGoZcWB zd`Ij>u&8LhRqf5>W!32H(4u|0NHfAK))o{Ds|5MQa88%GQVh^t3EE+DPCby_z^Pqbdh{p?ty=7DM9~b)8RboAYR# z-}WYMG$M2;`g+*Mb>kEOYE(keiWPx3plU0go}-J!Pyj)6Gs3(ECZG(|0j!hWaB4h+ z6L>w$>hd$x@o?9aftDV>a6IL1>k^T?M^)9mTFQnqpFoL<1iejFI@FVCIwmAx&sIVr z^W;iGd^oh45iHHV{aV|oRcp;!xs;hRms8uKzfF@9L2^RVP!322QJGFvW=V$Qx7x`t zk?xo3Vr)0`7w6WTddVWOS5R%Am@RnBp=@P}UalvS?e~2~dA(^IS56A8N~Q4HP+lbS zkiGnH+aRDgZB``jIlHZ)%hpsqubmPTs*4N)Hw9&LF`5r)FQ?!v#)IDURR-_YjgqG+ z#;sc(-6}YPtXe*WyF_H( z!%LYpy4Sv$p1JiNuVoTe2!bh;N7Flom(B~?ufsu@^~@0(wr9v5AcsvV`_Eh@w}xT$ zfmM=+#x7lDjnh1GN40x?{MNbiWQYus>HT~MG9R*qmmH`>m~a(Qx3>X z>h~tS{&4W-$>n89c@b>W>Y3%V26eof*JlIh zVYavmEHn_}Jqk!mOnQY5JumMjgP}ytnc6a)u2y?QQruT9iKZQ$VlYQcp^?T z!=Y6x$v-2>Mb6B1r+P#u$oMtlm7wAtYJTH0p9=ol+dp{o;H^iG4iAIRcjec;y}h>& z-lQ*|d*iq5?Ckv2*@t$1{?|UXbMvcj?411A$9I0X|1~>5VSi%hNB`p2?hJnL>vq2J zyFa<}-p_n;=kU*d{m%Grf78zRLpwWPh5sJlzps?P=`Zp3SM7Wpf6>na?=SjB@S==> z6%gWY`gBW)=fUscX9BZZihjSb!hdcX=(nJbXcpfDr5|Uih<5tV{YLE;|G7`x-$V&P z5-$kCZSRAfkMdLcPHp)xem)M0Kf3b~JpT}WQ;84b?Hl}rpxip*e-r#_Z5C7!jiRlB zBDaNtZnt%AKZ@R?r>Y&{R=D&B=~a9XHMnnyb|EQ5h3H>;N6(2fN&gYu1RvzG{~KW; z?hwu-EL4YRH$ka3yX~a5P+8HNqCW{v!BQFV&EMOC4(errQ^C9K7H<>;NeONNuL-VGYuxW&1!(&I5r!8}-(VbH#ZMIHKLngqw|YWwf*N`!#sK{$dfk?;`uii? z0-}t@82v{w<#LPY49Xk5cYo+z@U5bP_^7@`|8mQU-+nymiFm5&BkB}a=&jrH#BY~o zdQS50ju9c(^i z!4|tu^?wT~qfh!Fxge@ZG6@ICtLRaBM?VU)pAzD%&?kz=;x89oK#M-0XYOA|M-Pw4 zdytkF1{VE2rzoYXW`jhe6D&8;mu%WSBq3eBVRyWjCqhMnJXZXm9aRfS>K=;I69N zTjd~_fPikKca&6b1iioW^R6ElM(T$8{dB!$jz$gw7jZPmyztVf$tdM$NR1$pBK5Su zYYZpPwO|$PRi?zDft-u12{Pu4z-Y*TmD_wm1@R|Qyp=k44Yawtx9^1;$22)tei#ce zz9S`Es;hEdMR*kvG2Z=0>@J6%!KpF#fH4Y?j*TPrcQ$0Axu+j+?rGK_~$jLnn zB2PPMDN0w@W=1fp7A=K0Ki^d(84~Bumg3y&+auzX*@!agBey!1ns*WP%tIK9g4F_i z5NUAW9yxi2SfM*2il)MqY1%dRA_x5Rjsdz*TJq!$T%r83mwXYLILhK~4jmGfjSzk3 zM<9bIB{xSiZH8i@T#|P=`R%7|t&~|Xl-ahyYQ05rTyt~7Ct~=p&I^oR)lE6OBJ7HY zm*Un2g*x0xTd6dqskvZ81S7eNa%M%C6&5X#bRc-<%suqYj1{>Gb|Z&}?+{U17Kq>s z8b|FCvv)w*YWT;)t=6kbhckMZ!ji33YE_~&dLb)wgnX|>CV*%qu4GKB)Gpsmrk3zj zBSNL&7Oi=XQVIp82xq+nBB>Zs4*u%qlJM|rwGZ13tFQ&leTNG!+2-xgbO&6lQBIO* zMvhd>oQ*{44_|q$HoJ1Elkr3kp;!qp9fE2ST5{*h5uj6(ms=%>MvDN~6|_u!T8Q1; zC7d)Rw) zP>biUe~d8~ML{j*xs6ZFtfPlX3@%*tUmaIyqY+8yD>#$xV3R|kW75RRL8NIH27JZ=czHvYebFKWyAlL*gT0E4t zdw^)If@-kHhG~`ZZ2k}jvwON>44_vESpZ7r03%q(IT?ay#fS~c<<8@$=_;j|A_ch)4s`?Jog6!9tW?$t70%JxiH z_wE>t67C%_8K7}l?c>Q%?C@O)6Av2AV4naNm$yCvG@PwI9xR-rJ`7dJFM_3kAWoIf zg5snuGxbK9Vi%PPic~6iM66PwqoS1x9ulu~*ocUwg9pSc6*M4fen_h@93Yb^bX(d{ zJEYqcetvJd=IKOap6&WG&#sHkRfm$UO`Iq~V-WR8`GGwqkq-yn+sf!weN@VQ|w-XHO)JWq*eU|DqUHCU57 zcTvq+?a-PO?s{ZpwfgRf@_4lA5Y@;$m7%o!7fCQ}xPfU?cJ11L+K zvk^}f{vl40&{U(9_alWwGk@fuxvTyRpV^`UX!cg`a$QhmW3G@99kv9<}@Zk|4u|av$Qa;PmAuJ z{_A?*o}03}glokccpo!A45#!Fc(1>T;W@~j@x#?X?x1JB| zC1kXgbeVAH_ccbnI~%G3`e?NTEPLXP1d5+x(k{H2fLso_?;&#ECN7-ytA?CiiP=>5 zu$q_G^Fq32h(JX`!`^h-du4Qsi`m?{t&Ojo@_3HR{vsD!M4!-DLU=>Cr1I*@8h90+ zIwwXd6R72N;m_eN)8FF1)YI2>`_u!^U(^IFkt zSZC$pd9B@oSCM0O2vN2n60CUDTd*mtwQzQR8V=V?liPS95_iSGHmpB6w3@Y6t<-IH ztn+7`vVq}JCquhym7f;N9cru9Y1dlk<jK2lui zDaOigL@t@oLM4VCecZBHvAEaB?Zv8_ID)?KLJpo;=K1+)tNr}o5|&goJ_Tt~SPnq_5KYEwz4o+Pi$%Ew6B#&=3C zC1l3CU?>U}Dvxl_4^0w#;?n5d*N*I{ls`f&gqWp5Qbb|uQPsRbap{x_O=qwe**vsk zD-t>sfFhioLUW%$nI?&`1fM!{r|*oKxHY|poBm=kKRJ}I&wJOKR!@+?$B)Gj>FCfV znsJUK%g?P>&cZ0!S7^93zp@gQ4=dSm}zDn1FKkN}^x|r*l_tnku21*^_E%oL-QGZI^3S3uwf+ZBs(nKg&MlofHGMSdwc@58>MSu+m=i^9?Gw-LnBM*oWv}L9Fu-a%M}+;g zYo9EQ99Ufmi&mV7nBOTnWz{;e-M6BSHEY^j>_rS=u7_+(N4P!KyY=4JfycE7x#J#M z;)G!;*;(hvbPnmQRe{#l=u)TWJaRUDP|a^`Serh17OiZVBo8}^gdGLOLw-939R-WujR{DRl^@B`kfi*KOFENeaCpdfpAu^x7_9N7 zwWg0d3Xy{MB68YbN$Nef@;%X=5!@fg@GZsi`>Wncur_)#57q_~?sB8u^YOZ~M;;5U zvrp%bg?2f2CvmLMHI>Q!_j+k3Z^@`=aZg(jv3=w+W*M69SgiDSC890xIyM-b%^e_wK!n#E=2M2wQUu0P zob2ZFN2bXV!?riQC?pjP5FZ~>C|fNycH@eOwDVqAf(QE+)Y|qnELHDUu0%z=Z!XO@ z=3x<|Ga1P?9A#l*a#f+FDm=EypxL+I7xG9{tSyhpNbW%%-_GT6C3!SI*dAU?NTDcN z?IUosnz-1P@xx%FmTwJLlZoT*g@kEOMenJA#X=cTWR#l-WQ$3z>HC{=*Dnfy&OIPHT&!{dG(W+mM zS1_f5Xbh|#et)?X^lDW3Oh_F83lvPLARK0^N4+YQhB|T&5k|5O?MhzJ=(GxgalD$y z-9jmdgHgYFc-=Az?HajQxJsW3KLM$p_daIpMc|Ju9$%G)Yd)!(Xi>L{+%(cOjo`Gq z+r8d>F{_pC$>`^+MttHO*`eY|ov3piT-)&c72rLAdeWjRevyLG+525<2DE@mx8TR?iKzB`WocQIj=q#ZV+h0FJ%h0XGj*lZC= zhwh6A>3L-#BpSA<@I80ASNr{`bxDhumx&Sgp|yiVygz# z;<-~}c_nLdfl?8Ae$!Y??%PBZzHaeS!+Om2y-Y-)`pa{g`nt>iHW7t#a7NnTy-F?| zb$t5jSG{WpYcEbx-2IR!1Kc->wY!eU2;uUDC>YvG5%h`8l%~=NAuXA%8DwaIP;aMq zbA^?NDV3YmtM7=3aJ^?MHOw`Ng~Ck6u?@wSNQ;*8&Mv+EHoU9)#B0O$sj%ME&4c>5 zU|`y`-V8-IyN{z0sNS1!o+kH2H2PG&DH_&ppgZvqd5(|v(WANJ z96cI2itJ*2IDh5tf9qr9*je43!t9eo{ zbvkWhIL0}%;o#^|q{7+aa@L;?C%~s@+|S5BhOiv-kE% zwb(gnnhl1Wi1$ToEE8O*MZb|&KU}EMEHxUnO2=PF04EnJm_?&rD78u_ojR9;Q31tF zsEgSAmBc|cn&vC|U|P6YQ-*rPpAU--^^Kd;rteqY$B~39F(#KB_o-JS*UaTrjqec> zn?9IhUYR;Q0+lE7HT^VY4(USyk@(OPu9N|K z9solLLRbnNdcz<5m7$qpZptOSWp42^M)RDWF)#V6q(~88C>tfSQ^fRN;a*X6y$-}z zjB=?|#>f()_*xNPG)j$Pxn59%C`Q@?BT)!KbUYS{MWa)wA6Lqi%uZxM!48RE(z#xi zDi$6FVQJ)NV**y3<+m)tT#O}+i?Mu#P$kK>lD}fjXk){r)h=ar;rovCx=}lB)tmKd zIcw;=4@t+h4Yg*mRDIn@FPo6{cC*!})?PQ#+eWk8=~UZoCfuF(c#thT6^ zwPKvK8pnlJr4?wPcI`|Tx0Kt*Jh`PRm>8yCut-`A!P@Iax!tMMYK;@FUAtDs%XKkJ z_(L$A8Nn=3$U;glOhTt!IVrX4rptgD0l0m{TA)Ku7^!b^clD&GmtSy|UnF3+pIuz8 z9l}-<-Km8dxc9`Lo}uCwh_+FxG-~yh95kvu83Mt8p*F`VdL|%6N`1tXOyi_hFPoi` z7ziP|i)&*BF*?yS<^jtBcM8L>nJ8Yf<-;&MW>jgxJ0^|`@*Dn(*yatG5+=}gyH+P# zj$SaU&*`r+eVozy`Qq0 z(JYl4rAkMrJ2h<8lq~Af?JA$xaS@h(HQg&FtA1uU<}p_`MRMeOr>Di+X4bhLpfmyJ8eNt!k@N6HCYpLE%;_UNbwwLaZ@bSLeE)@N)I! zxLK%fN~PQ_+x>(ex2q>7RXD~-?QKa?lq4(FqBBVSbhqopO51ESneMyS;VBGP)T>F0 zM|-k%RD{=z<7&CuYPIf_aBa5x39nXaaJd!*;X0CXpK4JNjx|}idfcqTzFtbi?@7J* z3GX1SO{ZvzrL4Y;-xJ>z;mzSEjMWb zt5#s`UoEstumQw;#8{YYLEQlp#GkxgIH&JQCveTKJAic@&%{h0qv8)i0RNeVIwSyG zCzny}9tNndnZ-i2(hxgBT2;J%sK+w2R4tWj72)@K&8Tl1okpz+)3L+@;Ps-uZM2K< zp_sLJ-`5$5Im_MlM{kYl<|&0|P9{Lvw*yc5;m2<^3%sEetATjzGznSS4yD|AWL4wS zVN65_LueuwqZ(!6cO0qWY@bAhz--kfY>^deEwfY291ZZ?`?i$!Sl18U;YK7Fzujr9*x%6?;|*jV=ot{xLK>vpcfr{Eb6 z_bR{URw#@-2$iO1rU;A|9!7@Y*`cQ>hbpQxDy3>w*le#6<=Dr)qnbPR*=3m$Q5 z6~J)(md7Z6Wh`o}hfpP{D{p|FRE%o-#B3E#-p{+YK1J)Nyje19CzaCcrWETi@nIXA zScAupP}Zc}rz{0R$Fmk^S>P_`uPg=(EnrytG7P_A!=7bGO;T)rAClCGA}la!KIK{& zhF#I3oX7Ke(>Si2U~98d(6Y_mKXTqG8_ia^+$wa0VHVLX?^~X?>c&Z<+Ag*#-iCRN zyU!mm#s)x!=q8NFi`nv{>$;z_=43fW~%0I4LtHA7ij8X{WZ47taqFoAw}b1U*%Mp1HOXNW; zkq1dc9wZQXkVNF6E|D@M{q!(IruRHbl6n>HXYWmvEPjQPD^~HeY@U~`HtgTxxk0B@ z%t>!LzqQA6aVBQJX6_szjh9gThGt@VM9f$%OisS(LL@*e-q`);o!+!}YtQW|a*v&# zce<02(;Gzd+7wMb>hb~3P)7=~h}>!8#bi1D7b|tBSW(=W*@kX%{-<8?fspU(_ zmLu7^$Yc*WLOVKzNHFn7*!7U8_g@1T+_;`H=K|!C8z4z3HnAeY~zT&=9Q1 z#-G|>SlBbvJjkl`gFXx3H2bPOerW9NL92v{m$20B-}I)|eA*k%XNJ7?8DPE9$m#dy z&J@p}$PQVTg?g+C{bNrzEGcO7fm{2Wrkxfn2II+aJaAsjgu3d^hof0k=dG`^0(FbQ z@2OhW`#yybQJKiSNR|)jz4FsyxpQ7?x2#UP);cerp5dG{kAS(rAar?cU}zxZ`LANn z#njwg3}#J$iHC-iF0XIw(WL1N79(4?EoK)1#%Jedt5~)yajqMvNQV}k@f_{RvM8Uf zF_`3phG8PTFY)KJJ+VDrjQg|-J)8HW&3iWdqNXiYG^^+|%AnvLM3<5y_{H4UHR?zn zy8!kT6-EkJcRJ}$=ZAOE34%_y%{*MS2qY^%)KnTim5#|L!9nAbDUK}j#H}|+LgK-^ zr}f<@hgP%Js+GFUj&=U5Q>N4uUG+$f&syuaecCi>tcGB^XXR7t>>R74rj-m;#GVaK zw$_6n#=A6Pgxv=5BlFF0|AV>aeQJ2EU%6DR%)FcU~hhtB2VN?6w& zXR;V!jukSNZKk@TtTVN-61Gw4=#?%Xm-7jA;BT21oq^q1T#kl)Y1nBQNpj^MF$fu@ z%GIQgi{xGumPV?c45ZT`QO%aX<9`Xrc;oZ7RAGlu6j%Rx@=Q8T>2*S^Gr$0V`LRi9zW7s@TV9`q(B zx1a>n)xBbWfIZamc91wPvyyDX%h1I}Xi6C+4Zf^oS%ti0W7^dy8Cj+p_fiBmX;>Cr z;Ur@cUar*Vx&p>4DQRZMc|cQpIdQfpsbL@9Dku}ZBSP{A=Ww9Yyc!nBq$$nyjfzq{ z^2O{z9u1aCF`ekJ48nb6J~hKZkX6g=i!I!4n&fLwvHH?i9EXNOxU1B*rsM3paX3wQn-9=yo zJgL565?Od)D6yV78(xpGRwQe>{2qp)IUYQLzc@T1laz-yr(&r#jg(3n$KJ%!JwJZy z+<7t_WX*x=Zc0SQ^^*Sa?szH}AH*JPD6-;W6%^sEYTjf3Bei9}oMXFGZ&^nMMt5e< zc!yQX)Z^MZ7)dn6U!2nvd(oSoznWlg7yFkbxy4_>GAH`Boci`S^=&2fZ8i06E%oh5 z>f3ti+h*$9R_fc1na-^a?p^0ueLtR?9b^_vf1l1X8p!G8)A`mh(>aGkP#O5sx!1uN z$#nYQ)6ImS1OEs|6IJZmika6nQN^ykE)sh< z>?mx)Vp~Sp2AmNB!*DztP~1Vbn)jxMWeeVgx#W89uw%Te>yKubeVSx~bZhL_$SLY+ z9fy^db2mm^iyU$m+UwTta&IXdXaYP{Ua#r)Us5|F{ArJ+8&_-uYv7lwoF(0|p>BCH zoZl?dD6Vwb-l4`?=D?ZE4ezp<;Pvwe>$;%3x#x&wvZwscn%RBqQqZD-i_b@{d!b`b zVfskFEPTrdO0)`#SFmVO_hPwIYvgR;jgVjwSjZk568-6c6_Qp78FU;|^%%ZCP@G@< zgbsd)py?2&Xxy}XEV95aTA^C!ST(z`Dj%@LvyV+2ZFq3FkG0(ft|u$;h{KS|h18YH zTu28vT;dN3Q~NmNg_6TJz$OviLwZ)q5oJ@SV@hd@;y@i4uqisDfvQ+%WT04~IyLq( z@6-&9qu(m+C+7oZ>k&c&^BD|ltbo+>Twh0W&{95!F)xzU0}l@zGr=OC1PS&Z2Ca7` z#lziQJl*7&LC65bM<75!*qDlx3%rz>gjH#5PusCB(B&9qmO47TG1fF~^D&+=8rN zRRjXGDiTDNu@R6jU*@ohVwAt&X1;zQi!sqOWZjQ|-rHADED3&rLOIPXz{9NCn+~pe z!x7CNHD`8-JN8%~@53X6?;KzY8nCHhReLj1=)%Pi?}#8@C8Mp4bA?Bqm(&SdOnk1w z1IuO<#<*=ynr1YOM5=I^1;xJM8Q#&lw2ZX%Ru1VjZJw`@s#lU*Kb=}}e_4f`rz%q1-5$lA$8Fx6q> z?OY0Bx`lr%*Jp|PEElH?|DW97Zy@Ov zx*>n%MQB%+wp%DT!_Uf%`qP*qjQkpo+jFic+O-E2$xgNieHwewZY|P_=6P)6H{?a_ z%X!=+RWBiW=6uu`-qPV6_ml-4{Rc~fFWn;+wYZmVoc~GOOE<>99{19V$+u$5dNKKy zuXOIWi1l0K*5DG>Aj0!gWIyyWDEpz8LD>(z49b4!WmxvZuie5@_W5-#`?>7Xs(abc zR450EpB8%G4N#5S7uxK8Hl}pHnrdt=Z1uq49pR>EYshZMZTDE)J=8n2$&?>N2y8TY zQuSVsV{r0)xBz>20w&MY9p_WX_f;}|6H>Dax!mL$NH`u-4>fE_#mni85(#YK#6{TQ zy1}_C=(ub-{VC<7CpSSj=C6(XVYhT{3~NwYUbP&g@*4FxaeXFmdpf!4jV+|a@Yb`T zV~RY5O0da1KmL&5i^qj~Pfe5DJ$}j0r_YF6M~>KlL~T-6#dpj`M=tAO*}!RUj9U?O zjvo-AUPyd=>CFZr@yso#(5gtp#Uo=R<*CZe=~#0*JY(bvAx0ti7pBNV`QC5knf!Ek zeUp!tgh@0XEtw|}f_C9)zM&m^4%?l|@(u0GMI+nyr;d{=r39q}izpW(O)<*jB4|6B zwNK0*1)Va;SBK1QJP~IZtf?pKXGYJ%dK=uv!OhO>f+ZA%Y(KS*cr{@8(64EU@fqTDbDJxUkiK#MkdI(LiR)kruluafy z%EP)Kw1L#)YmKZSrN~Z8TP7j};%-8sB_-!K+TNUw5lf3Sjf|FJylHKvUE<=xty@)Gcm*K}AukcK z_|biUcf@O_+#oUu5X;hoGO`Gld1E0NVi*? z-OB?)65PfZX1t8k zwoiO(+yX+dVufXPAkL< zzKhT$C}*OanBDtx+^v+TOBOs=gx4y;rNzLGb%kh6&7t;Z=Z@v2U_y;s(KL}!vXxq; zHz2d&`7n(P)07U&xfS7-Cun`r3E_bsGU5kb_TUeYp+UaitcK@;6%nk+FwA$=nI-AF z>T!a$l?f-(U0bPD1e&KeIv-ovV@q{b&aDWyq>$lyJL}rUJziK#4=ng(2BY*#X4#hJ z6*yguXHCUT(kqo^n>)j9r~91YG-}mK-Dbx+f7U4*>|M2QC;DzPktjS=M9VT?(_!i6 zD97E&afU>21tEb*R`c7lf|ra5&#&i}mLB$;VPfGJ6R?-IF(KHtVXq$F0UEn4A*$DM z^a&)(Y)S->Z)1e>o*C8%VIntMw{Tk6&Xv|SDwKPE0f;c=bap*s@-*>*v7C)55yDXo z9m7UiG`d{87yX0jJT7erg+BX8+kkGOilvGO?G`7c#R`a=q-e8Bg-6J}?Xf0vXtS*r zT~F82Xz9|c;Y&N#mJ2zBu0~EzJBabxrfsTO-!g>(Rb>?9S{ozUVQkOE-M^`qkwctuDK_nzg8_1RgWclG#kFO>?AsICU7l&&-wfi! zB0{0ToyMRg+gC5z6@imYavZ%-D6uk|S_qHoKesd}-o>!-0>n2vgjjJPayLk0e~P{P zes4r~L-QuS4$)of6hQ*T)7p8hXf~{~a`C*@ZW$D+9K=2x5A2s(d^n-9_RF~SS7^)v ziifQRsE8s9JBCB?h(q_5lsxZQ+!BRMXE)W3y4VL3WxfKAnyFR`EZk7K{9I1c&c10` zwwvym+yIo5wV3m#QS$+loqzjHBc9rGo^VV-WP*;EK(s`_P?`6}eH)h(E)b%oGo_sr zsTf%-BI{as(g;mL&s&IIL;l)^J-(jb7@20^J{@&=e$g8(mM%4tHxy)0G;&_pQ!Bqw zW2x2e+V@A?T9pr+_X=+oO=NI~f=>w2N4Nr{QsprH2oTtKag()%dnsld9dQeW z4WCP5p)IU#u!!T>>sxy^>s{M3S|Y@So!&ZFm&!Qtxc6hcPbxcJ+}hJ&Kk2o@v8-9a zD1={yR;LGHcV(b2Vx;4iJfYRhgp|x^h{$YmN<=4Mu&7Q8?aA%2JiA%E=uOWNSI6)r zaV&KIopkIR=X12}^qx8;!kyxZ0Tcn&;`S@5jWR-ur1ZJB5oG$ zV3Ar{5jQt?u*gYT5jW{}ut+_vNHezi&9ow|*dnd8A~=8^TL{n7i^a=8$4r%iju|fp zc%EKcyexFgRB7m#@$!J@>9xhnM8`~(ijEmC7kHjtTfA&^%v9;MSIf3AG zaubNPB&p5>8EChE@Rr@%INsEUZL(Yh&t!r4c}em{?L8P8TK6^k3EHa5Ly)IorNh9P z;_RE)P?tM4t8AyxzC?68B?0xyTPmWK*y3XUVQSwx?~z6NzUcm`J-efwFbEvfci4F% z_WDA#h~A6kQPc$#c>?bsY6_n%@wTnVXB1Z-Zg3e={G8kef#HFZ;lW_Xxp*5qnT`BSTo^V}%59AvEF zTn_x5XYyU7lc`oYl~I+m$jo|Iwsm`nP0|1j9ad;;1g85-Oi~tJ)#Q7%qi9qGER*wO^vn6)VOy28$(YzHwe~{vx;) zvU&xe69*3ExFvhYmpo%wc2;Cz6Gt^$LnOhK zHJ?&0uNZ+0`GpqnQeQ5v;vhrfxR^}rX5f&y*P8hfbB1|)Nea>|x(UEn!i$GcA)UnuUEt+qc9DB@9@$(=m!EI; zCLCaPJe1YvT6Pvgl>90Xe*0GlO3h$G;*HpZFG5om;& z)(nYIuy;M8#4Ilmo|VF^oB4cVWpvN=VmOdyFjxD=XWXur{hlNtd%L@jA3y%orw;cY zy}iFrz@K}g@u2$^)dxRa>-WEM=XZQ$hyQ(gFomSNXNzw;JAeEuc6L7dJ?=O8`;AZR ze3}L8;hFnp@THxdU$b_0p1l2lAN>M8jh#;vK0O`u<~rY2lj6RxHS*VKf2M-#5A3HMAB?t3)hdYW*y zCfraH?p71-3z~2XO}JN@aNnm1_xm;B{uNEQAJT;TH#On@kS5%}qY3vXG~xa|O}PI+ z1MZ`+2mVY14)#XKE+M!d(}er;ns9$P4(@U`BOAs2NA^qj-w%8Oc1{Q`I8%xeKk$i9 zMC>7$S3Cbjq~3UY=w~(H2;a|Xz)?GXK?9EP{WT3Z!uN|BaD?x_*MK8@U($dhe7~## zNBI6H4LHL0ziPk{zQ3mdNBI7M1{~r0RSh`8_kU@?5x#$<0Y~`0tN};({)q-0;rn$B zIKuav8gPW~K{+^@lGY0!(tsm;AJKp#`aY%sNBF*41CH>0jRqXy`&tb+!uLrHIKuZ0 z8gPW~pVojQeE*CF9O3&`4LHL0Z5nWd?{{jz5x#$31CH>0hXx$s+tYv}dAnK1TzN@O?o8j_@rs;0WIf4LHL0 zy&7_WhO65rupGd?|IKo8&V!(Zhm0>*pz6}vlJulE3cLj3*H zfP4B>z>+=vsZW5uke~4X#_RtWF#qnmzIs0aKVhgHyD0zp?|!iJC-Fo7K8zp67iz~L zp8q_-d{)4H2;X@=5Ap8?&%XsQKPcfmd?EV&G0^-ZVE)s8QQ%{~B+&Q$)`OiN#}EDU z@Ws&gKLh6LK9^44*8;~rV9FAXpyT-WcOfusz#Q0qe3E}ei2OIj?{@(6S0tQAU#Pu* z7ihi=m@i!md|!=nMofGESv>#ln+H4Jk01I+avRqlzX#8M1Tg=dgrji~*B|6K{@(!e z_ArDmMBjgg*FC^|^K$|BamE*w7ozXq0L+g|xHS6y24KEoB=9BC_cws=cL3%eN;vAD zxc>M7p!w0;2Rpyp5%|8wr7yI;{M~r|QxXP$^1nE{^IP!dS2W<>1KdX^qE3O0_#9o= zUf|{TYry?p!2R_ITy)*|{eb(#7h>uSjkm7{+`koqi{oDdsD1=+|Ibw5Bsulu4}ZJ= zz72mooITj7;fMZFzs2GEIw1HSzR)@X^IzkK{(1T@qz@W+_l-aFVCM=y^zW$JC5;an5C11%9{dr3k3Qr2 z;~(Pr#{u(CB%ILCQGG@DKKVxS z`1cYBeiAUde@fu<#&2jodI)?!1DIcta2~!G{{2%w{9xz1@I(KS`1iZ;?i4UzlyFJy z{V3@BmjUw!{{8g!690Y_Fn?LXCE@$WAn0cS^Oyc~I=*iLzApjh%MvaL-){il{|A^~ z|1;_Mh`w+5kq0}!2S4;L3Ewwi{5}TE>3@=rkLa5K<_}1?Bz(UCe18lufB4U(<0JZh z0x*9?!X@GR`@r`Lfcf)(Asrv}?=J%8*CkvMzOO|8e)uOJ?0oDmrQ;*|ekWl51qqjg zkN8&t%;$b89Ut-U`vLPOC0r7|-v<-+Zqocqj~nKNh3oSA#?jCn_New4r2z?`e$BJsNc8Cn5M`Zv+}QT_^m zaca0o{C6;CB`<1HO|udR--){KlaIYJj=-2Z@U`p6P}7=|4hWaMD3? zW_}_4Ir$Nlz--ZQqzB>rwIe{^sbLW0BV7J|r8_^xh+lEi5y}3|#k~`LjuF@3q(kK| z#D5u$+m8VA(=QUI+HXjE%LI?YUtuS4M&p-<+qVI;=eOwm$X_=79wSc0NeBH6SKe{B zQ4Y*)e@GnFn`&pp6_)cJ63c`isH-*EbJ66lkFIak9`X~N|%3FTb@ z%ncnRzewf12N{12m@|)*xHS>@t%IUI+b32mJXzxUaQ>Q(r`LnNc0{ajkCZrSN1VTq zeu2g_J2VV}e1sc^F2bFmnUa?VgIv%rgtRxB^I8ksv7;nb)(6I+A^JQDxJ!U}LBkO` zocsntejfwVeyrpdNq+gLfHA<-kCQm+7sBzgV_`CEh=7GPemM$aGhADwNnq94v^{8CWAgMlfW96f&* zgUMOIBu$aHMEnj{-gCgu56rLAB~ICc5WPPR@yljN4CRlGaQ@J}5ZHxHa82iFW+Hy3 zGn8Lb+!)}lY=Ud5FQmV3h2X-KHx=dG0bDz`OgmEjy20-hU~bfK%KnA)M>)9h955Yc zOMcP(s|~<>py3q1koH0I5v}ILigcWG(BE+Ol=LMBm?;`AlK$nPfKFiUsFnOseDG^J zA3^@mc3?i!aFO`Y_;)ujJAKjl(Y#q3f2>%BlMYHZTzym^p__ndH&5aswck|4p9D;u zhKrQHRNOcdn49KHev#^T5cs_bOxyyAi^OjPZgc>~xG*|DnkSnN%nA(`iJu)et_J4Y z)1sG`+TpO%B?du0!pW}(1UnYEDT|}$kLKr=YZ#4P*!m!U;}YO*IV(Cp%HP`>CK^A= z->1O+eopiJ1};0e@}3M_;rY$;J4?efm%j^vySY9(zmZ__7BHPIlsNhuu0BY9#{zTm z#nJhZov73>(eg+9P6O_uOQZ8^2i#_0o?j(#eIw+L{GmQq#EO^il{oU_l|2aZ|L|(N zcxY{`=()o`-?Hnq>Yq4x>*#fqQqm;Acx{6g&MD^RRgABYue zo{%`QbK&wg4|K=oSn(!KI!M36<&XTeep_P2T%2@}UlPuqlD)qNn9f@zj_gLb`W*&2 z=K!SgU4{`M4Tp0K}fk}T(;wT^C_`QLSdBBUYV&B^m7pc5t{~moOR{RGi9g+Hv zB;1RCH&%4VNeBH6*H4pwb%KT=936}csbA`k#sD`vlwSyr(p?P9MH&ub3d@iBnY)2` zCX`>u_YmZ#e*nxM8jkEK^0ztEe5Kde1)-9LyGeR0yE>5tVB?L$HRsqZc4X4RPdtWrbkH$l119P#4i{EYW(luPPbaQ~2)eMf(^#gN`hKrOg)zd}5To#H8(SzB*T?b5? z|HyJgvM(vPJrbB{A4^;`e=_cqSkWIR9m*br(U(GCW@tE7Zz1iM+WA6YZqabWHDEUa zdO&*h2rw^(;zG(x{mLi6{Hozde&O`~N6=$G#dr%R9g+M$%HQbEVnqc`I_PgWeoukE z2$*r7OPnlkQ-Ak(;AR4IUJx!EKbpV41(-X&ko-u`!r6P$=eRFpMIW4WM9SaixHlA- zBX&rfYUd&Hqw<=7snc+g_)&S61Cvh=3UNd#?_AuQ1Iz~+E|UH&L3umwgdP7{@{2Uy zPX)i!Z(>CrPC8oQWch{Bt6E^L)o_Gny$UJsRiLi}#zX^p9Ha-~>f>4z@M2(2+$(XB zQI;kW4g$X|Iv!yw2< zIDYiJY&&qz?~Bfl?A3k^qp=H{zuUp4!~R(D(1GauXgsrnF;vpX^BYrfI}ut}5+`wy z>Vx>L1m+$M7pXpSz~*6K{)msxF9rP4+Qf-`oODFuHx9R_0CPoR^ZcF#W~YXW#E<3= zegNi(j?wvDi9DHr`9#Cfcqv@{)`Cr8r#SIMXUUInY+pj`_}vg}S{I1{gpY9Zj(NEA zE)BYZ4#tJFH}b!aIWkV1jFXN?Ke`2&Pc$6KFI;&^@7rd_i9R^#h@=Np-s6EW20DMmQCl!5*fFel8CJe8b7>W!YKlmT<8OX4EQh5U`DfccMxizMf+VDl9)`^uv8 zO9z8N<#A$Wg~U-i2q)(oaJzS9oY+(qogd}zTVN8ZB`#Y2IsU*;Fm zj_7%J3NQ;aT%>mN32-+6bJjA+FOvQH3J;oI1?G{J5*JDD$-ggL6(>%|Nr$q3A^Dqy zdp7|Sce%vL`e-`8M)^5O!yw2N{NfAba`=Fx?)KIQkpTo*oPOP+%r&xJdOe z8VqIubL|GnkJ1h2ucbo}F9GxCqY_8s^>F%93&CEw33hFZ#L+k-od0|S5{lg_F@W$9 z&VSCuog24@!G-wGC!l~|0oVCiiH&5hHskg-V9tF};#7Tv^ly~EgqOmk8-kE9CEUJXp2|43XUe{v-F zxq-P}!x1`M{ifo^CSX4PMDmN2KjPQ<(>O5^CmqrFRRYuSMRb0rgU1uVWPT}ek;WfX zzXiZ_{9587%@2(QzY1V(({O|iS6;GzPXm*&SMrNgUa}i54TB&b;rM-kioY1RIp0U; zNAHJS2h0Wy7fD}oz-B8j@jplBN9}L~Fq1S~B!1(-W(F|V{1%-beb@COFkfr9Nc^UP z&5yvC_ebYv0>8z;Y}as+_`$^yuL5I;AqyVaAF9ATA29E0IA!lc`j3_17Z=+~T+v$c zi{u}qf?ryED=`Tt9g1I={$n99w`jOX{Ri34M}YY>2p3LY=zW2off>_YrW;BBsD5jK zS+3zC$&VW1Wx!n4N%D(i4<>=%yTF`~6jI(0`K>?!t-yTRIfP$`olFJ40bL{pK|aFu zThzaqfm@g}|S1 z^_BuTZwGG2k7e>$ zy$Zp#Cps|ZW^lcMn+43GP+Z9KOTw)H=57r~?G5Q}4t-DXIMCMv^Fa{5aOI`v8he5H zagZ#Bs^5@yMCHgF+)Cu)qyu7-m94J_^N!_(Rlx`~XZ+dZ6CI$z?Baslas22$4$&Kk9#{19Ps1i`33H19vqr z(}x7hujzP;>TLlq*K4>){9Xa>eqhcXD)~jSL)5Q42+Wfjj^rG!yaQ07F9P$^@aX); zA%6dpTZwXGaN_zeKRqkuE! zM(0QU?|fiZXt+q__2b6Xz;w)u&My=E#sPDhhKp1mso-}JF!!6H^CS6vu3-@5BV2ju zy@x%(?U)dqALZ}JiLHbUCmoUUSB(6X1M{RgIzN)%Pr!7{m$*ps+Xq|^V7eAW=XWA- zxf%vRKEjok`qjC>-BK8xA6^R*Z)+HhU08jg{Cxu4hn6t>QWv`PxHRtUG)ZD~TDbfX zzuv(0utw)c_GJPv(==S9`q%|rHQ{Vw_~{wJm7Z7B19PK>i&P)a0CzVqe!JwS>_JGs zMe|{o0&}&7qx^9{9nv3l1^r%Nwua(D`d|8f;Vod=70Gldf876u@T2~%8!-JE1T8l}#u2?7RlxNE<~$7-Dcy0vtp#RJGyF(j z;%1>7IO&L#KPral`jLEzQ`^G!3j9HeysnCz11 z=~Dit0JFLo9LePYVD^N^*>RhXS@;|0l4(i`^abmlV}bR-)y|sAGB>tGaM#i@`8BSE znSK4(ob{Cc^DAqH4(Xpl+vS|nKfluD_4qtx{y~$oN2U+TahKGUqZjC(GSBVxVSW2k z`i~rxK4?fr`j8=mM)Xh7w#)H&4cM3i3(C9vbzX2;Fk(3F)s<9Lx+c08+C6jJh?r64 z8c{N|WTZ30oiV~aw4{IEl)*X1TtkuBj$JJ>`_^GO`9avs`rydbzIm=%ufG)N|38aX zS>vjzD|Kg%9XoW~Gy`^V!p1}?gPm2p6TII|;?8t9DywT9W5=eB%|Ez(k}|Y?sHTP8 z%j)2G3>h~r9sj1EqNkqEn`QhREE`v7zHKs8Cnuyn3(YwNhJ2%~Zwe{ucQ{|ibkQsk zLvN#q?95{9@lsq}2`PD5}NlDfc?7Q*y!7R~$%oa-|O&yrkItb)}V_6g05n$=StOrh;Nu z)ga?kqi|K1inQF)mda+H3oRM@Kcu9&QqpQX*lER+k~Y11NP0RhuFUyz`?ECss7y)A z&nZnw8*fcXGv@i|528#Nnvynu=rHWsAg?1vrljQ*6_~OMbBqX0F%=9Qg6kx^!)&mQ zH|CnmMu)A)VkxxRB^leH(8e|LM|Ppr82Dw+vlJzjT8T63uJbtp+x5N@|roY2ohi;ZffU55^lNyt`&#V$`Zb{{`Prhf|) z)hQfeW(W>%bBR_QD0;%s-78K{>pjoNrzHJ!3L??b0``U%qg;7 zSI_a)x?Mi(u~X)(t3u9mJuOx6-~{!}dLXgB;CJvMhXunfRr$Hu#ioL6b5V|wg#MRV z9AsS7t*=_8Ywic})8TMeR5)u&(E+7u zdoUdve7CNKicyAL+N#`s4Uw8LR2&3o$iaXz4hEDi`Zk-Vkq3bpaS)i34+1m%ATTE# z1ZLPlV1^z9X2?NcG7bWh4uv2c`2kMTi6TkY5m4|cGW3e3ID6sx<8UV7PmJ8QtGDQ! zL`tV0fzd${;E5tLdGCP(2fAZyMB%6QQy8<6qFpknsUN4)Tkc{)d;B;Lb8;Ze6CHtQ zg_v=eRIBq=iLMj_zi;Y+cON{ZZbuoM9FYv_01Z{`DXjykJ4gdHAUw1ZPnCpr1KkYz z%lH})jvm}&c*;J}8RR)2lK^~mE*Cbr7F|HA0Lil3UefRF@~1cwrJ>)iYQHDrQ*`>xk5oX*K1i)4EBVu# zB6R5T$IG#N==`)7Ocnp9L-@TJ@>_dBNzB*E`;~V8%VTAI#%Rq#um5)1Z$15f+HXC- z+5;t3{<4t!r)j_S^v(qCCu9`gG^?YFMKFKNH^{Ok_--3e`*4*h;+$nQxZ zzfTSM?GO3AB;@ynA;0NOwczyVNn`NudqRFc67u`$kl(Kc{f?y$@_TSg&>96XCY!eb zN=cs%?;`?^YlK)rcJNwUGjP2QS0k?1<4RMJH{e=|>y5ackLyjiUV-b)xNgMt7F^%M z^;TSyk=7l!&cgLBTxk{DyK#L8*L!fK6{POPbqw;b7T2?JU56`udHx`-^d;m&xZ-Or zu^!iPP`HP2&BAp9u1;JZ!}Wb!AIJ4OTsPyo57#ZYc14A5#dSWe&*1tPuFv91HvTzW zLw$==ksq423-&Drh=6bLGw#g`?x_R5#n|y~KaEHy%NZWIhc@lJ>L|dr(}%F*wcLYq zx>yvPZey?Iznyj}bsN-g&VhU~MW;snCdq67?&aVbkB&heG2z4kzpQf-$yYy69oiAD z8(o2Zh`LegsHjG$lcYY0CVjX^YY*a|N1#fi%(=yVqxRnGR$vK=e-Fx{}>*0Q&5k* z8Pt8Cf|s_{BlmxuAu>9CLm8+)q$lHaP=BJ@>y?tme@WKVULgo^p+?Vz9+Uj@a21sfG=MzzS3@_wlW zzW`=M$HQqSJVVKOej6@56;F4b3Hc6aUBE+eW&`vAsONyG+!|K&0Pu5=6ia2nsKt-h z3aEQz^bG_Zy2r7Zf5FPZco04gg5?7Oq~F@s5#oF8{`K1ZuX@Y-k7&Pj4~^ESp+omr zC!jLup!C?{NFQOHr1D>?H?leO`P0oBeJk3@wnL2$#dQX*uw_fm#PwoaufP?&mfVKxCAi*?>!rAE#T9mI z$!EA;jw`JOdL^!;Pgmhe{Zn6@DWXmCX9%90kf%Du#2pt zbnOEy^%m^~=81D`cB`piyu(sxvpcd23n!Y4qQ3@63I^nw4dWdY!C^0SfT1zluJO!7 zp1L8*)MG#p1(?}&m}B~HLIJgw42t#Lc7W()flmCt=&{NsN(5H z8|?<94h3Kd6FEW08=2f&L$}q)7K1&{k!vl?=N#yF6Scd@mApwXG)0+GJMC`1DL;@- zdyQx_S|=N=D)|mNIXlmoZ%`~c>SPmiPA@?xjhIuIZ!i@oAtq^Lb78hYsT>t8S!bdP zQH!Ya>#W^Jdo(~#NE64P)uG00MGo!ZCFVxjBo9EHrwGU7ER)@ad9yaj%fLNGYkLNJ zkFC8^u01?tK62u9|R zg`s41c^(;jmx_*?lxm&G?5KJ zhXu94fJAb@>SN%LZ^-7JlLXScQG7FG1q01Wj1I~GqoeE5QNch{QNhFlw61_|Q1?ds zjt+*&MoL|=YQ}wn?^_L1bm=OcP6-B}8mCUnG1|4JPS%7HIVKom$j&xe>{dg;c%zN$ z`TV2ED48G%Yk|@3u#rVII&$q6m5IK=@ue$)ej44q-u{nm49K?_vh8p@;H6NPoozHt zHs&bFq&5bVW5SPmVFYb}k&i-|J}w;04iP(K2^6q@M4;8k&Wz4+Ktv$qmT$2uX|!u1 z4dhJ>(lRzEm<<}S&154j(tNByd3EWh2jkgPkltAf&5C12BSaIW)Gdq9?c$JNJZl8p zDT^7MTfWJbZ?Hpy^|mrJ7-}iXGMj99ush10>1}gZFpe68*)XlKH6w55WwfeTfrs@D zw00ZX3);p6`Za`gB@@+#m#U30V0fG_T}e1F*?H7@$vGuJi~>wY$KZh9G&#`y5&%my zYaFO(4sO-NfSL^5k86D2R$$6SH##0q)#QDA`l7{0(?@rO8X;Gh-AWq^hPbp2pp03C z+0a%?ktN?yU>Gkw*`6A=c!kS?fthS7wAxfkZPYzTjJgL${zQjvN>xe;3PpC#3~K^; z;BAM(?1|Kw3KA^ksI9{3-dh$78h4v?J5k-%%Y%ksN6VV3^`R=k_DzwbLVC{)b08D! zpm6B(xh_@dsmG*5J1U4?tU$g8YnV<7lV`VE97XWdNOK$(bR|;?tvL=&IBc?rX_AUy zGvpe1=wUC^1|HNq5hht-iVCtFHUkU@l>xRXdm;v*ZIb6f72||m4v5Hh3Qm` zqK}73BX<)%9K0>FksZ?_cqHVu=CCtJtXgTTNcFh^QR}6QbWxn_hO8`Ojw8!jIEDNR zJhPIBt_oqZnTw{fKS(U&HI{JQ4K{Whh+j8_)^!HGf@wTA0SCN5bo*>p3ERC1)@&Sa zfK4R_h|DDol&GZ>_y`5gErcuSK%H70P#_1~N4T0SG{W^zIE-4T#*~H~sqW}mvm4FS zCFpgpiriBnbB#u1SZ{j06g`X78@{Whh@->0+Snz2q!(npBt{(QRN&!`S`v~#$agL* zadX!zX(Hx8r)h23CXv6^-2yn=OS+v6tF%vzDcz2YtL2U~? zNG^I;*=12|WHAuiX0#K^CNi|-TXRgiwFpxI(od5^9#$lF&mHJFSgWZji6L^_h@n0% zl(w2WekxZyGsf#^@CVGfu(ac;Gn9UiTSIHjTjHW`?xFl6CPGNB6(`3S_8!CbiPs6(<96hA=<59*3sW?=-(=4e0K zDdvp5m89e7%Q0fsrcKalz@IuT!eG17V2q*2o>xfYYp!4d#5M+y89@&U%VScIj*TH& zI&iq{tc1j+b7Kf~kUWYVr?QYovpG2hHg1YUmI*W2WSKmSTgzya7wVMl$cFE1W)4Jx zj$}LXZP_r)=!dwKD6&SQAuiES`+ypBD2>pGj2eV7w!`N|%b^xUMATfiBiE9Pf-qeN zqfP*xMroPZC=wXe2*#EvGG_!0Gyh4`5+H2pTXTph+7-BXVgm z7^WEwa_Wg1BS2-lp<5QX`38qH6U0%P4h(>n)jOq z9NE<8SidIQ9i}1bcf7#w>}hPL>3#zJ&Vn*?6%(Z`QK$iMKT7i;L`^1YktqYLIWKr+ zgf)=vrP4i&6W}cHJ-lDRdQA633ho)KR>L$F%j@YNi5z%6n$OK6IFP7(nDu3?q#17k5Bqhy+^BYJB^ zH)KzQ14+ggNpYTT#1pwLA|d$(Xpi4nj_El=KF#DpdlHgw4j~$+qTC6|H%c-M1Tj*B zU=xzB2gz(vu>tG^DzzwTUg!=cqh=G5pMzRitah^_8;VA=hH5^wqsCWfO3}$nq3I3k zw3y#E5OU#gF(C;E%C$-q^_7sk84#3%-p;4lU5<7&P&EI^raL`_ur@{5W&OL~R1+9EUq!W59(XV( z0z*$(nqa`n=Be|#+~&#}H`^kwI2mBqL4q?g>A7RB$6M|6!v{@B-T`qmNkw~0Qaf>*xCZDM2?>V2A0Q0hVpnO=y0sOSJ9 zRkYbMxe#@ehM(P$e5%72uA);NSm?{^%v$Jo`y3g=IrcZGHcKJ&#LP*OCMh*a1-q}% zPw3p}g@3$E=`JjpjZaz39u(Z;WqmQ~<;tdsAm%hdC*@?B;hHBT|A3TI9VCw&x6kFR ztVQHTIU05nEKfpmha|kK0p3+^esb^gd+S_&&MWDt4YU6aJEuTD@qTobyoU)A@|2ffK%rhdOKxI z${0M}?8ZZ~@QVxjYACWI9TtBok zPE5We;&6MtP-|-CM*WVrt_GjIxV2jj+(atN|3(>fON~ zkL9_YwMwrz64m+Ym*<Hl~EBlHUQL+QU!N}mPg_Dk*kAFS%bdi)nnrnD}B&aH8DbdOr&`A4jfmez4&xa)lq z<7#fPf!uMAj^|Mc$s6>pHRNVyrq^A9Pm#1<_$WZP!Ks!8KN}8#13o$2L)ihjaNDAH zK+2n7aAi$xoxid1Z!DXERi2viP_ONTPy)(A!KxzYtM%-9|9j+#&{zy6Gcg;I=6P65>`m>lQe;4jg#X&%aPwmO!Qa&zfBF90x(Z z^hz`ravnSek2k1F143Z61)j9=JzX1{)Hvq05|U{YDjgwDSs72kT%kvx_qSY5pC2=Q z3CZhq{rA-QLlu=|7o8YG$2CyWtBG^EA&Du-c-xtjaTAd$yK^h~MZD^?|=s(lGN11L?_E$e%I%=&nM4=ty%E?gcJ4 z)~)l@;02q6T=Zhey2fp&(71-4y=GQ}oG(v55F+ z3nDg}IJ>Jw3>r5y*a^^CTKgVU)sV6h`P=4vz%>*2euW9tm`ZYM!n? zzIK>AzLL>+31N�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

  • UMd&rQA@cW1u$Z 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%0DcA2jet_^TrPw@IEm)9$-{N9Xa6rU(8`fgK(P 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 z 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 -#include -#include -#include - -#include -#include -#include -#include - -#include "client/linux/handler/exception_handler.h" -#include "common/linux/guid_creator.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Signals that we are interested. -int SigTable[] = { -#if defined(SIGSEGV) - SIGSEGV, -#endif -#ifdef SIGABRT - SIGABRT, -#endif -#ifdef SIGFPE - SIGFPE, -#endif -#ifdef SIGILL - SIGILL, -#endif -#ifdef SIGBUS - SIGBUS, -#endif -}; - -std::vector *ExceptionHandler::handler_stack_ = NULL; -int ExceptionHandler::handler_stack_index_ = 0; -pthread_mutex_t ExceptionHandler::handler_stack_mutex_ = -PTHREAD_MUTEX_INITIALIZER; - -ExceptionHandler::ExceptionHandler(const string &dump_path, - FilterCallback filter, - MinidumpCallback callback, - void *callback_context, - bool install_handler) - : filter_(filter), - callback_(callback), - callback_context_(callback_context), - dump_path_(), - installed_handler_(install_handler) { - set_dump_path(dump_path); - - act_.sa_handler = HandleException; - act_.sa_flags = SA_ONSTACK; - sigemptyset(&act_.sa_mask); - // now, make sure we're blocking all the signals we are handling - // when we're handling any of them - for ( size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i) { - sigaddset(&act_.sa_mask, SigTable[i]); - } - - if (install_handler) { - SetupHandler(); - pthread_mutex_lock(&handler_stack_mutex_); - if (handler_stack_ == NULL) - handler_stack_ = new std::vector; - handler_stack_->push_back(this); - pthread_mutex_unlock(&handler_stack_mutex_); - } -} - -ExceptionHandler::~ExceptionHandler() { - TeardownAllHandler(); - pthread_mutex_lock(&handler_stack_mutex_); - if (handler_stack_->back() == this) { - handler_stack_->pop_back(); - } else { - fprintf(stderr, "warning: removing Breakpad handler out of order\n"); - for (std::vector::iterator iterator = - handler_stack_->begin(); - iterator != handler_stack_->end(); - ++iterator) { - if (*iterator == this) { - handler_stack_->erase(iterator); - } - } - } - - if (handler_stack_->empty()) { - // When destroying the last ExceptionHandler that installed a handler, - // clean up the handler stack. - delete handler_stack_; - handler_stack_ = NULL; - } - pthread_mutex_unlock(&handler_stack_mutex_); -} - -bool ExceptionHandler::WriteMinidump() { - bool success = InternalWriteMinidump(0, 0, NULL); - UpdateNextID(); - return success; -} - -// static -bool ExceptionHandler::WriteMinidump(const string &dump_path, - MinidumpCallback callback, - void *callback_context) { - ExceptionHandler handler(dump_path, NULL, callback, - callback_context, false); - return handler.InternalWriteMinidump(0, 0, NULL); -} - -void ExceptionHandler::SetupHandler() { - // Signal on a different stack to avoid using the stack - // of the crashing thread. - struct sigaltstack sig_stack; - sig_stack.ss_sp = malloc(MINSIGSTKSZ); - if (sig_stack.ss_sp == NULL) - return; - sig_stack.ss_size = MINSIGSTKSZ; - sig_stack.ss_flags = 0; - - if (sigaltstack(&sig_stack, NULL) < 0) - return; - for (size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i) - SetupHandler(SigTable[i]); -} - -void ExceptionHandler::SetupHandler(int signo) { - - // We're storing pointers to the old signal action - // structure, rather than copying the structure - // because we can't count on the sa_mask field to - // be scalar. - struct sigaction *old_act = &old_actions_[signo]; - - if (sigaction(signo, &act_, old_act) < 0) - return; -} - -void ExceptionHandler::TeardownHandler(int signo) { - TeardownHandler(signo, NULL); -} - -void ExceptionHandler::TeardownHandler(int signo, struct sigaction *final_handler) { - if (old_actions_[signo].sa_handler) { - struct sigaction *act = &old_actions_[signo]; - sigaction(signo, act, final_handler); - memset(&old_actions_[signo], 0x0, sizeof(struct sigaction)); - } -} - -void ExceptionHandler::TeardownAllHandler() { - for (size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i) { - TeardownHandler(SigTable[i]); - } -} - -// static -void ExceptionHandler::HandleException(int signo) { - // In Linux, the context information about the signal is put on the stack of - // the signal handler frame as value parameter. For some reasons, the - // prototype of the handler doesn't declare this information as parameter, we - // will do it by hand. It is the second parameter above the signal number. - // However, if we are being called by another signal handler passing the - // signal up the chain, then we may not have this random extra parameter, - // so we may have to walk the stack to find it. We do the actual work - // on another thread, where it's a little safer, but we want the ebp - // from this frame to find it. - uintptr_t current_ebp = 0; - asm volatile ("movl %%ebp, %0" - :"=m"(current_ebp)); - - pthread_mutex_lock(&handler_stack_mutex_); - ExceptionHandler *current_handler = - handler_stack_->at(handler_stack_->size() - ++handler_stack_index_); - pthread_mutex_unlock(&handler_stack_mutex_); - - // Restore original handler. - struct sigaction old_action; - current_handler->TeardownHandler(signo, &old_action); - - struct sigcontext *sig_ctx = NULL; - if (current_handler->InternalWriteMinidump(signo, current_ebp, &sig_ctx)) { - // Fully handled this exception, safe to exit. - exit(EXIT_FAILURE); - } else { - // Exception not fully handled, will call the next handler in stack to - // process it. - if (old_action.sa_handler != NULL && sig_ctx != NULL) { - - // Have our own typedef, because of the comment above w.r.t signal - // context on the stack - typedef void (*SignalHandler)(int signo, struct sigcontext); - - SignalHandler old_handler = - reinterpret_cast(old_action.sa_handler); - - sigset_t old_set; - // Use SIG_BLOCK here because we don't want to unblock a signal - // that the signal handler we're currently in needs to block - sigprocmask(SIG_BLOCK, &old_action.sa_mask, &old_set); - old_handler(signo, *sig_ctx); - sigprocmask(SIG_SETMASK, &old_set, NULL); - } - - } - - pthread_mutex_lock(&handler_stack_mutex_); - current_handler->SetupHandler(signo); - --handler_stack_index_; - // All the handlers in stack have been invoked to handle the exception, - // normally the process should be terminated and should not reach here. - // In case we got here, ask the OS to handle it to avoid endless loop, - // normally the OS will generate a core and termiate the process. This - // may be desired to debug the program. - if (handler_stack_index_ == 0) - signal(signo, SIG_DFL); - pthread_mutex_unlock(&handler_stack_mutex_); -} - -bool ExceptionHandler::InternalWriteMinidump(int signo, - uintptr_t sighandler_ebp, - struct sigcontext **sig_ctx) { - if (filter_ && !filter_(callback_context_)) - return false; - - bool success = false; - // Block all the signals we want to process when writting minidump. - // We don't want it to be interrupted. - sigset_t sig_blocked, sig_old; - bool blocked = true; - sigfillset(&sig_blocked); - for (size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i) - sigdelset(&sig_blocked, SigTable[i]); - if (sigprocmask(SIG_BLOCK, &sig_blocked, &sig_old) != 0) { - blocked = false; - fprintf(stderr, "google_breakpad::ExceptionHandler::HandleException: " - "failed to block signals.\n"); - } - - success = minidump_generator_.WriteMinidumpToFile( - next_minidump_path_c_, signo, sighandler_ebp, sig_ctx); - - // Unblock the signals. - if (blocked) { - sigprocmask(SIG_SETMASK, &sig_old, NULL); - } - - if (callback_) - success = callback_(dump_path_c_, next_minidump_id_c_, - callback_context_, success); - return success; -} - -void ExceptionHandler::UpdateNextID() { - GUID guid; - char guid_str[kGUIDStringLength + 1]; - if (CreateGUID(&guid) && GUIDToString(&guid, guid_str, sizeof(guid_str))) { - next_minidump_id_ = guid_str; - next_minidump_id_c_ = next_minidump_id_.c_str(); - - char minidump_path[PATH_MAX]; - snprintf(minidump_path, sizeof(minidump_path), "%s/%s.dmp", - dump_path_c_, - guid_str); - - next_minidump_path_ = minidump_path; - next_minidump_path_c_ = next_minidump_path_.c_str(); - } -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler.h b/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler.h deleted file mode 100644 index 6ea09a11..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler.h +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H__ - -#include - -#include -#include -#include -#include - -#include "client/linux/handler/minidump_generator.h" - -// Context information when exception occured. -struct sigcontex; - -namespace google_breakpad { - -using std::string; - -// -// ExceptionHandler -// -// ExceptionHandler can write a minidump file when an exception occurs, -// or when WriteMinidump() is called explicitly by your program. -// -// To have the exception handler write minidumps when an uncaught exception -// (crash) occurs, you should create an instance early in the execution -// of your program, and keep it around for the entire time you want to -// have crash handling active (typically, until shutdown). -// (NOTE): There should be only be one this kind of exception handler -// object per process. -// -// If you want to write minidumps without installing the exception handler, -// you can create an ExceptionHandler with install_handler set to false, -// then call WriteMinidump. You can also use this technique if you want to -// use different minidump callbacks for different call sites. -// -// In either case, a callback function is called when a minidump is written, -// which receives the unqiue id of the minidump. The caller can use this -// id to collect and write additional application state, and to launch an -// external crash-reporting application. -// -// Caller should try to make the callbacks as crash-friendly as possible, -// it should avoid use heap memory allocation as much as possible. -// -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, - // Breakpad will immediately report the exception as unhandled without - // writing a minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void *context); - - // A callback function to run after the minidump has been written. - // minidump_id is a unique id for the dump, so the minidump - // file is \.dmp. context is the parameter supplied - // by the user as callback_context when the handler was created. succeeded - // indicates whether a minidump file was successfully written. - // - // If an exception occurred and the callback returns true, Breakpad will - // treat the exception as fully-handled, suppressing any other handlers from - // being notified of the exception. If the callback returns false, Breakpad - // will treat the exception as unhandled, and allow another handler to handle - // it. If there are no other handlers, Breakpad will report the exception to - // the system as unhandled, allowing a debugger or native crash dialog the - // opportunity to handle the exception. Most callback implementations - // should normally return the value of |succeeded|, or when they wish to - // not report an exception of handled, false. Callbacks will rarely want to - // return true directly (unless |succeeded| is true). - typedef bool (*MinidumpCallback)(const char *dump_path, - const char *minidump_id, - void *context, - bool succeeded); - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Before writing a minidump, the optional filter callback will be called. - // Its return value determines whether or not Breakpad should write a - // minidump. Minidump files will be written to dump_path, and the optional - // callback is called after writing the dump file, as described above. - // If install_handler is true, then a minidump will be written whenever - // an unhandled exception occurs. If it is false, minidumps will only - // be written when WriteMinidump is called. - ExceptionHandler(const string &dump_path, - FilterCallback filter, MinidumpCallback callback, - void *callback_context, - bool install_handler); - ~ExceptionHandler(); - - // Get and set the minidump path. - string dump_path() const { return dump_path_; } - void set_dump_path(const string &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - UpdateNextID(); - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const string &dump_path, - MinidumpCallback callback, - void *callback_context); - - private: - // Setup crash handler. - void SetupHandler(); - // Setup signal handler for a signal. - void SetupHandler(int signo); - // Teardown the handler for a signal. - void TeardownHandler(int signo); - // Teardown the handler for a signal. - void TeardownHandler(int signo, struct sigaction *old); - // Teardown all handlers. - void TeardownAllHandler(); - - // Signal handler. - static void HandleException(int signo); - - // If called from a signal handler, sighandler_ebp is the ebp of - // that signal handler's frame, and sig_ctx is an out parameter - // that will be set to point at the sigcontext that was placed - // on the stack by the kernel. You can pass zero and NULL - // for the second and third parameters if you are not calling - // this from a signal handler. - bool InternalWriteMinidump(int signo, uintptr_t sighandler_ebp, - struct sigcontext **sig_ctx); - - // Generates a new ID and stores it in next_minidump_id, and stores the - // path of the next minidump to be written in next_minidump_path_. - void UpdateNextID(); - - private: - FilterCallback filter_; - MinidumpCallback callback_; - void *callback_context_; - - // The directory in which a minidump will be written, set by the dump_path - // argument to the constructor, or set_dump_path. - string dump_path_; - - // The basename of the next minidump to be written, without the extension - string next_minidump_id_; - - // The full pathname of the next minidump to be written, including the file - // extension - string next_minidump_path_; - - // Pointers to C-string representations of the above. These are set - // when the above are set so we can avoid calling c_str during - // an exception. - const char *dump_path_c_; - const char *next_minidump_id_c_; - const char *next_minidump_path_c_; - - // True if the ExceptionHandler installed an unhandled exception filter - // when created (with an install_handler parameter set to true). - bool installed_handler_; - - // The global exception handler stack. This is need becuase there may exist - // multiple ExceptionHandler instances in a process. Each will have itself - // registered in this stack. - static std::vector *handler_stack_; - // The index of the handler that should handle the next exception. - static int handler_stack_index_; - static pthread_mutex_t handler_stack_mutex_; - - // The minidump generator. - MinidumpGenerator minidump_generator_; - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); - - // The sigactions structure we use for each signal - struct sigaction act_; - - - // Keep the previous handlers for the signal. - // We're wasting a bit of memory here since we only change - // the handler for some signals but i want to avoid allocating - // memory in the signal handler - struct sigaction old_actions_[NSIG]; -}; - -} // namespace google_breakpad - -#endif // CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler_test.cc b/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler_test.cc deleted file mode 100644 index 2d94553d..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/exception_handler_test.cc +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include - -#include -#include -#include -#include - -#include "client/linux/handler/exception_handler.h" -#include "client/linux/handler/linux_thread.h" - -using namespace google_breakpad; - -// Thread use this to see if it should stop working. -static bool should_exit = false; - -static int foo2(int arg) { - // Stack variable, used for debugging stack dumps. - /*DDDebug*/printf("%s:%d\n", __FUNCTION__, __LINE__); - int c = 0xcccccccc; - fprintf(stderr, "Thread trying to crash: %x\n", getpid()); - c = *reinterpret_cast(0x5); - return c; -} - -static int foo(int arg) { - // Stack variable, used for debugging stack dumps. - int b = 0xbbbbbbbb; - b = foo2(b); - return b; -} - -static void *thread_crash(void *) { - // Stack variable, used for debugging stack dumps. - int a = 0xaaaaaaaa; - sleep(1); - a = foo(a); - printf("%x\n", a); - return NULL; -} - -static void *thread_main(void *) { - while (!should_exit) - sleep(1); - return NULL; -} - -static void CreateCrashThread() { - pthread_t h; - pthread_create(&h, NULL, thread_crash, NULL); - pthread_detach(h); -} - -// Create working threads. -static void CreateThread(int num) { - pthread_t h; - for (int i = 0; i < num; ++i) { - pthread_create(&h, NULL, thread_main, NULL); - pthread_detach(h); - } -} - -// Callback when minidump written. -static bool MinidumpCallback(const char *dump_path, - const char *minidump_id, - void *context, - bool succeeded) { - int index = reinterpret_cast(context); - printf("%d %s: %s is dumped\n", index, __FUNCTION__, minidump_id); - if (index == 0) { - should_exit = true; - return true; - } - // Don't process it. - return false; -} - -int main(int argc, char *argv[]) { - int handler_index = 0; - ExceptionHandler handler_ignore(".", NULL, MinidumpCallback, - (void*)handler_index, true); - ++handler_index; - ExceptionHandler handler_process(".", NULL, MinidumpCallback, - (void*)handler_index, true); - CreateCrashThread(); - CreateThread(10); - - while (true) - sleep(1); - should_exit = true; - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.cc b/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.cc deleted file mode 100644 index c8ac4926..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.cc +++ /dev/null @@ -1,411 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "client/linux/handler/linux_thread.h" - -using namespace google_breakpad; - -// This unamed namespace contains helper function. -namespace { - -// Context information for the callbacks when validating address by listing -// modules. -struct AddressValidatingContext { - uintptr_t address; - bool is_mapped; - - AddressValidatingContext() : address(0UL), is_mapped(false) { - } -}; - -// Convert from string to int. -bool LocalAtoi(char *s, int *r) { - assert(s != NULL); - assert(r != NULL); - char *endptr = NULL; - int ret = strtol(s, &endptr, 10); - if (endptr == s) - return false; - *r = ret; - return true; -} - -// Fill the proc path of a thread given its id. -void FillProcPath(int pid, char *path, int path_size) { - char pid_str[32]; - snprintf(pid_str, sizeof(pid_str), "%d", pid); - snprintf(path, path_size, "/proc/%s/", pid_str); -} - -// Read thread info from /proc/$pid/status. -bool ReadThreadInfo(int pid, ThreadInfo *info) { - assert(info != NULL); - char status_path[80]; - // Max size we want to read from status file. - static const int kStatusMaxSize = 1024; - char status_content[kStatusMaxSize]; - - FillProcPath(pid, status_path, sizeof(status_path)); - strcat(status_path, "status"); - int fd = open(status_path, O_RDONLY, 0); - if (fd < 0) - return false; - - int num_read = read(fd, status_content, kStatusMaxSize - 1); - if (num_read < 0) { - close(fd); - return false; - } - close(fd); - status_content[num_read] = '\0'; - - char *tgid_start = strstr(status_content, "Tgid:"); - if (tgid_start) - sscanf(tgid_start, "Tgid:\t%d\n", &(info->tgid)); - else - // tgid not supported by kernel?? - info->tgid = 0; - - tgid_start = strstr(status_content, "Pid:"); - if (tgid_start) { - sscanf(tgid_start, "Pid:\t%d\n" "PPid:\t%d\n", &(info->pid), - &(info->ppid)); - return true; - } - return false; -} - -// Callback invoked for each mapped module. -// It use the module's adderss range to validate the address. -bool IsAddressInModuleCallback(const ModuleInfo &module_info, - void *context) { - AddressValidatingContext *addr = - reinterpret_cast(context); - addr->is_mapped = ((addr->address >= module_info.start_addr) && - (addr->address <= module_info.start_addr + - module_info.size)); - return !addr->is_mapped; -} - -#if defined(__i386__) && !defined(NO_FRAME_POINTER) -void *GetNextFrame(void **last_ebp) { - void *sp = *last_ebp; - if ((unsigned long)sp == (unsigned long)last_ebp) - return NULL; - if ((unsigned long)sp & (sizeof(void *) - 1)) - return NULL; - if ((unsigned long)sp - (unsigned long)last_ebp > 100000) - return NULL; - return sp; -} -#else -void *GetNextFrame(void **last_ebp) { - return reinterpret_cast(last_ebp); -} -#endif - -// Suspend a thread by attaching to it. -bool SuspendThread(int pid, void *context) { - // This may fail if the thread has just died or debugged. - errno = 0; - if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) != 0 && - errno != 0) { - return false; - } - while (waitpid(pid, NULL, __WALL) < 0) { - if (errno != EINTR) { - ptrace(PTRACE_DETACH, pid, NULL, NULL); - return false; - } - } - return true; -} - -// Resume a thread by detaching from it. -bool ResumeThread(int pid, void *context) { - return ptrace(PTRACE_DETACH, pid, NULL, NULL) >= 0; -} - -// Callback to get the thread information. -// Will be called for each thread found. -bool ThreadInfoCallback(int pid, void *context) { - CallbackParam *thread_callback = - reinterpret_cast *>(context); - ThreadInfo thread_info; - if (ReadThreadInfo(pid, &thread_info) && thread_callback) { - // Invoke callback from caller. - return (thread_callback->call_back)(thread_info, thread_callback->context); - } - return false; -} - -} // namespace - -namespace google_breakpad { - -LinuxThread::LinuxThread(int pid) : pid_(pid) , threads_suspened_(false) { -} - -LinuxThread::~LinuxThread() { - if (threads_suspened_) - ResumeAllThreads(); -} - -int LinuxThread::SuspendAllThreads() { - CallbackParam callback_param(SuspendThread, NULL); - int thread_count = 0; - if ((thread_count = IterateProcSelfTask(pid_, &callback_param)) > 0) - threads_suspened_ = true; - return thread_count; -} - -void LinuxThread::ResumeAllThreads() const { - CallbackParam callback_param(ResumeThread, NULL); - IterateProcSelfTask(pid_, &callback_param); -} - -int LinuxThread::GetThreadCount() const { - return IterateProcSelfTask(pid_, NULL); -} - -int LinuxThread::ListThreads( - CallbackParam *thread_callback_param) const { - CallbackParam callback_param(ThreadInfoCallback, - thread_callback_param); - return IterateProcSelfTask(pid_, &callback_param); -} - -bool LinuxThread::GetRegisters(int pid, user_regs_struct *regs) const { - assert(regs); - return (regs != NULL && - (ptrace(PTRACE_GETREGS, pid, NULL, regs) == 0) && - errno == 0); -} - -// Get the floating-point registers of a thread. -// The caller must get the thread pid by ListThreads. -bool LinuxThread::GetFPRegisters(int pid, user_fpregs_struct *regs) const { - assert(regs); - return (regs != NULL && - (ptrace(PTRACE_GETREGS, pid, NULL, regs) ==0) && - errno == 0); -} - -bool LinuxThread::GetFPXRegisters(int pid, user_fpxregs_struct *regs) const { - assert(regs); - return (regs != NULL && - (ptrace(PTRACE_GETFPREGS, pid, NULL, regs) != 0) && - errno == 0); -} - -bool LinuxThread::GetDebugRegisters(int pid, DebugRegs *regs) const { - assert(regs); - -#define GET_DR(name, num)\ - name->dr##num = ptrace(PTRACE_PEEKUSER, pid,\ - offsetof(struct user, u_debugreg[num]), NULL) - GET_DR(regs, 0); - GET_DR(regs, 1); - GET_DR(regs, 2); - GET_DR(regs, 3); - GET_DR(regs, 4); - GET_DR(regs, 5); - GET_DR(regs, 6); - GET_DR(regs, 7); - return true; -} - -int LinuxThread::GetThreadStackDump(uintptr_t current_ebp, - uintptr_t current_esp, - void *buf, - int buf_size) const { - assert(buf); - assert(buf_size > 0); - - uintptr_t stack_bottom = GetThreadStackBottom(current_ebp); - int size = stack_bottom - current_esp; - size = buf_size > size ? size : buf_size; - if (size > 0) - memcpy(buf, reinterpret_cast(current_esp), size); - return size; -} - -// Get the stack bottom of a thread by stack walking. It works -// unless the stack has been corrupted or the frame pointer has been omited. -// This is just a temporary solution before we get better ideas about how -// this can be done. -// -// We will check each frame address by checking into module maps. -// TODO(liuli): Improve it. -uintptr_t LinuxThread::GetThreadStackBottom(uintptr_t current_ebp) const { - void **sp = reinterpret_cast(current_ebp); - void **previous_sp = sp; - while (sp && IsAddressMapped((uintptr_t)sp)) { - previous_sp = sp; - sp = reinterpret_cast(GetNextFrame(sp)); - } - return (uintptr_t)previous_sp; -} - -int LinuxThread::GetModuleCount() const { - return ListModules(NULL); -} - -int LinuxThread::ListModules( - CallbackParam *callback_param) const { - char line[512]; - const char *maps_path = "/proc/self/maps"; - - int module_count = 0; - FILE *fp = fopen(maps_path, "r"); - if (fp == NULL) - return -1; - - uintptr_t start_addr; - uintptr_t end_addr; - while (fgets(line, sizeof(line), fp) != NULL) { - if (sscanf(line, "%x-%x", &start_addr, &end_addr) == 2) { - ModuleInfo module; - memset(&module, 0, sizeof(module)); - module.start_addr = start_addr; - module.size = end_addr - start_addr; - char *name = NULL; - assert(module.size > 0); - // Only copy name if the name is a valid path name. - if ((name = strchr(line, '/')) != NULL) { - // Get rid of the last '\n' in line - char *last_return = strchr(line, '\n'); - if (last_return != NULL) - *last_return = '\0'; - // Keep a space for the ending 0. - strncpy(module.name, name, sizeof(module.name) - 1); - ++module_count; - } - if (callback_param && - !(callback_param->call_back(module, callback_param->context))) - break; - } - } - fclose(fp); - return module_count; -} - -// Parse /proc/$pid/tasks to list all the threads of the process identified by -// pid. -int LinuxThread::IterateProcSelfTask(int pid, - CallbackParam *callback_param) const { - char task_path[80]; - FillProcPath(pid, task_path, sizeof(task_path)); - strcat(task_path, "task"); - - DIR *dir = opendir(task_path); - if (dir == NULL) - return -1; - - int pid_number = 0; - // Record the last pid we've found. This is used for duplicated thread - // removal. Duplicated thread information can be found in /proc/$pid/tasks. - int last_pid = -1; - struct dirent *entry = NULL; - while ((entry = readdir(dir)) != NULL) { - if (strcmp(entry->d_name, ".") && - strcmp(entry->d_name, "..")) { - int tpid = 0; - if (LocalAtoi(entry->d_name, &tpid) && - last_pid != tpid) { - last_pid = tpid; - ++pid_number; - // Invoke the callback. - if (callback_param && - !(callback_param->call_back)(tpid, callback_param->context)) - break; - } - } - } - closedir(dir); - return pid_number; -} - -// Check if the address is a valid virtual address. -// If the address is in any of the mapped modules, we take it as valid. -// Otherwise it is invalid. -bool LinuxThread::IsAddressMapped(uintptr_t address) const { - AddressValidatingContext addr; - addr.address = address; - CallbackParam callback_param(IsAddressInModuleCallback, - &addr); - ListModules(&callback_param); - return addr.is_mapped; -} - -bool LinuxThread::FindSigContext(uintptr_t sighandler_ebp, - struct sigcontext **sig_ctx) { - uintptr_t previous_ebp; - const int MAX_STACK_DEPTH = 10; - int depth_counter = 0; - - do { - // We're looking for a |struct sigcontext| as the second parameter - // to a signal handler function call. Luckily, the sigcontext - // has an ebp member which should match the ebp pointed to - // by the ebp of the signal handler frame. - previous_ebp = reinterpret_cast(GetNextFrame( - reinterpret_cast(sighandler_ebp))); - // The stack looks like this: - // | previous ebp | previous eip | first param | second param |, - // so we need to offset by 3 to get to the second parameter. - *sig_ctx = reinterpret_cast(sighandler_ebp + - 3 * sizeof(uintptr_t)); - sighandler_ebp = previous_ebp; - depth_counter++; - } while(previous_ebp != (*sig_ctx)->ebp && sighandler_ebp != 0 && - IsAddressMapped(sighandler_ebp) && depth_counter < MAX_STACK_DEPTH); - - return previous_ebp == (*sig_ctx)->ebp && previous_ebp != 0; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.h b/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.h deleted file mode 100644 index f738c2e0..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread.h +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -#ifndef CLIENT_LINUX_HANDLER_LINUX_THREAD_H__ -#define CLIENT_LINUX_HANDLER_LINUX_THREAD_H__ - -#include -#include - -namespace google_breakpad { - -// Max module path name length. -#define kMaxModuleNameLength 256 - -// Holding information about a thread in the process. -struct ThreadInfo { - // Id of the thread group. - int tgid; - // Id of the thread. - int pid; - // Id of the parent process. - int ppid; -}; - -// Holding infomaton about a module in the process. -struct ModuleInfo { - char name[kMaxModuleNameLength]; - uintptr_t start_addr; - int size; -}; - -// Holding debug registers. -struct DebugRegs { - int dr0; - int dr1; - int dr2; - int dr3; - int dr4; - int dr5; - int dr6; - int dr7; -}; - -// A callback to run when got a thread in the process. -// Return true will go on to the next thread while return false will stop the -// iteration. -typedef bool (*ThreadCallback)(const ThreadInfo &thread_info, void *context); - -// A callback to run when a new module is found in the process. -// Return true will go on to the next module while return false will stop the -// iteration. -typedef bool (*ModuleCallback)(const ModuleInfo &module_info, void *context); - -// Holding the callback information. -template -struct CallbackParam { - // Callback function address. - CallbackFunc call_back; - // Callback context; - void *context; - - CallbackParam() : call_back(NULL), context(NULL) { - } - - CallbackParam(CallbackFunc func, void *func_context) : - call_back(func), context(func_context) { - } -}; - -/////////////////////////////////////////////////////////////////////////////// - -// -// LinuxThread -// -// Provides handy support for operation on linux threads. -// It uses ptrace to get thread registers. Since ptrace only works in a -// different process other than the one being ptraced, user of this class -// should create another process before using the class. -// -// The process should be created in the following way: -// int cloned_pid = clone(ProcessEntryFunction, stack_address, -// CLONE_VM | CLONE_FILES | CLONE_FS | CLONE_UNTRACED, -// (void*)&arguments); -// waitpid(cloned_pid, NULL, __WALL); -// -// If CLONE_VM is not used, GetThreadStackBottom, GetThreadStackDump -// will not work since it just use memcpy to get the stack dump. -// -class LinuxThread { - public: - // Create a LinuxThread instance to list all the threads in a process. - explicit LinuxThread(int pid); - ~LinuxThread(); - - // Stop all the threads in the process. - // Return the number of stopped threads in the process. - // Return -1 means failed to stop threads. - int SuspendAllThreads(); - - // Resume all the suspended threads. - void ResumeAllThreads() const; - - // Get the count of threads in the process. - // Return -1 means error. - int GetThreadCount() const; - - // List the threads of process. - // Whenever there is a thread found, the callback will be invoked to process - // the information. - // Return number of threads listed. - int ListThreads(CallbackParam *thread_callback_param) const; - - // Get the general purpose registers of a thread. - // The caller must get the thread pid by ListThreads. - bool GetRegisters(int pid, user_regs_struct *regs) const; - - // Get the floating-point registers of a thread. - // The caller must get the thread pid by ListThreads. - bool GetFPRegisters(int pid, user_fpregs_struct *regs) const; - - // Get all the extended floating-point registers. May not work on all - // machines. - // The caller must get the thread pid by ListThreads. - bool GetFPXRegisters(int pid, user_fpxregs_struct *regs) const; - - // Get the debug registers. - // The caller must get the thread pid by ListThreads. - bool GetDebugRegisters(int pid, DebugRegs *regs) const; - - // Get the stack memory dump. - int GetThreadStackDump(uintptr_t current_ebp, - uintptr_t current_esp, - void *buf, - int buf_size) const; - - // Get the module count of the current process. - int GetModuleCount() const; - - // Get the mapped modules in the address space. - // Whenever a module is found, the callback will be invoked to process the - // information. - // Return how may modules are found. - int ListModules(CallbackParam *callback_param) const; - - // Get the bottom of the stack from ebp. - uintptr_t GetThreadStackBottom(uintptr_t current_ebp) const; - - // Finds a sigcontext on the stack given the ebp of our signal handler. - bool FindSigContext(uintptr_t sighandler_ebp, struct sigcontext **sig_ctx); - - private: - // This callback will run when a new thread has been found. - typedef bool (*PidCallback)(int pid, void *context); - - // Read thread information from /proc/$pid/task. - // Whenever a thread has been found, and callback will be invoked with - // the pid of the thread. - // Return number of threads found. - // Return -1 means the directory doesn't exist. - int IterateProcSelfTask(int pid, - CallbackParam *callback_param) const; - - // Check if the address is a valid virtual address. - bool IsAddressMapped(uintptr_t address) const; - - private: - // The pid of the process we are listing threads. - int pid_; - - // Mark if we have suspended the threads. - bool threads_suspened_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_LINUX_HANDLER_LINUX_THREAD_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread_test.cc b/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread_test.cc deleted file mode 100644 index aeb5e64c..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/linux_thread_test.cc +++ /dev/null @@ -1,224 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include - -#include -#include -#include - -#include "client/linux/handler/linux_thread.h" - -using namespace google_breakpad; - -// Thread use this to see if it should stop working. -static bool should_exit = false; - -static void foo2(int *a) { - // Stack variable, used for debugging stack dumps. - int c = 0xcccccccc; - c = c; - while (!should_exit) - sleep(1); -} - -static void foo() { - // Stack variable, used for debugging stack dumps. - int a = 0xaaaaaaaa; - foo2(&a); -} - -static void *thread_main(void *) { - // Stack variable, used for debugging stack dumps. - int b = 0xbbbbbbbb; - b = b; - while (!should_exit) { - foo(); - } - return NULL; -} - -static void CreateThreads(int num) { - pthread_t handle; - for (int i = 0; i < num; i++) { - if (0 != pthread_create(&handle, NULL, thread_main, NULL)) - fprintf(stderr, "Failed to create thread.\n"); - else - pthread_detach(handle); - } -} - -static bool ProcessOneModule(const struct ModuleInfo &module_info, - void *context) { - printf("0x%x[%8d] %s\n", module_info.start_addr, module_info.size, - module_info.name); - return true; -} - -static bool ProcessOneThread(const struct ThreadInfo &thread_info, - void *context) { - printf("\n\nPID: %d, TGID: %d, PPID: %d\n", - thread_info.pid, - thread_info.tgid, - thread_info.ppid); - - struct user_regs_struct regs; - struct user_fpregs_struct fp_regs; - struct user_fpxregs_struct fpx_regs; - struct DebugRegs dbg_regs; - - LinuxThread *threads = reinterpret_cast(context); - memset(®s, 0, sizeof(regs)); - if (threads->GetRegisters(thread_info.pid, ®s)) { - printf(" gs = 0x%lx\n", regs.xgs); - printf(" fs = 0x%lx\n", regs.xfs); - printf(" es = 0x%lx\n", regs.xes); - printf(" ds = 0x%lx\n", regs.xds); - printf(" edi = 0x%lx\n", regs.edi); - printf(" esi = 0x%lx\n", regs.esi); - printf(" ebx = 0x%lx\n", regs.ebx); - printf(" edx = 0x%lx\n", regs.edx); - printf(" ecx = 0x%lx\n", regs.ecx); - printf(" eax = 0x%lx\n", regs.eax); - printf(" ebp = 0x%lx\n", regs.ebp); - printf(" eip = 0x%lx\n", regs.eip); - printf(" cs = 0x%lx\n", regs.xcs); - printf(" eflags = 0x%lx\n", regs.eflags); - printf(" esp = 0x%lx\n", regs.esp); - printf(" ss = 0x%lx\n", regs.xss); - } else { - fprintf(stderr, "ERROR: Failed to get general purpose registers\n"); - } - memset(&fp_regs, 0, sizeof(fp_regs)); - if (threads->GetFPRegisters(thread_info.pid, &fp_regs)) { - printf("\n Floating point registers:\n"); - printf(" fctl = 0x%lx\n", fp_regs.cwd); - printf(" fstat = 0x%lx\n", fp_regs.swd); - printf(" ftag = 0x%lx\n", fp_regs.twd); - printf(" fioff = 0x%lx\n", fp_regs.fip); - printf(" fiseg = 0x%lx\n", fp_regs.fcs); - printf(" fooff = 0x%lx\n", fp_regs.foo); - printf(" foseg = 0x%lx\n", fp_regs.fos); - int st_space_size = sizeof(fp_regs.st_space) / sizeof(fp_regs.st_space[0]); - printf(" st_space[%2d] = 0x", st_space_size); - for (int i = 0; i < st_space_size; ++i) - printf("%02lx", fp_regs.st_space[i]); - printf("\n"); - } else { - fprintf(stderr, "ERROR: Failed to get floating-point registers\n"); - } - memset(&fpx_regs, 0, sizeof(fpx_regs)); - if (threads->GetFPXRegisters(thread_info.pid, &fpx_regs)) { - printf("\n Extended floating point registers:\n"); - printf(" fctl = 0x%x\n", fpx_regs.cwd); - printf(" fstat = 0x%x\n", fpx_regs.swd); - printf(" ftag = 0x%x\n", fpx_regs.twd); - printf(" fioff = 0x%lx\n", fpx_regs.fip); - printf(" fiseg = 0x%lx\n", fpx_regs.fcs); - printf(" fooff = 0x%lx\n", fpx_regs.foo); - printf(" foseg = 0x%lx\n", fpx_regs.fos); - printf(" fop = 0x%x\n", fpx_regs.fop); - printf(" mxcsr = 0x%lx\n", fpx_regs.mxcsr); - int space_size = sizeof(fpx_regs.st_space) / sizeof(fpx_regs.st_space[0]); - printf(" st_space[%2d] = 0x", space_size); - for (int i = 0; i < space_size; ++i) - printf("%02lx", fpx_regs.st_space[i]); - printf("\n"); - space_size = sizeof(fpx_regs.xmm_space) / sizeof(fpx_regs.xmm_space[0]); - printf(" xmm_space[%2d] = 0x", space_size); - for (int i = 0; i < space_size; ++i) - printf("%02lx", fpx_regs.xmm_space[i]); - printf("\n"); - } - if (threads->GetDebugRegisters(thread_info.pid, &dbg_regs)) { - printf("\n Debug registers:\n"); - printf(" dr0 = 0x%x\n", dbg_regs.dr0); - printf(" dr1 = 0x%x\n", dbg_regs.dr1); - printf(" dr2 = 0x%x\n", dbg_regs.dr2); - printf(" dr3 = 0x%x\n", dbg_regs.dr3); - printf(" dr4 = 0x%x\n", dbg_regs.dr4); - printf(" dr5 = 0x%x\n", dbg_regs.dr5); - printf(" dr6 = 0x%x\n", dbg_regs.dr6); - printf(" dr7 = 0x%x\n", dbg_regs.dr7); - printf("\n"); - } - if (regs.esp != 0) { - // Print the stack content. - int size = 1024 * 2; - char *buf = new char[size]; - size = threads->GetThreadStackDump(regs.ebp, - regs.esp, - (void*)buf, size); - printf(" Stack content: = 0x"); - size /= sizeof(unsigned long); - unsigned long *p_buf = (unsigned long *)(buf); - for (int i = 0; i < size; i += 1) - printf("%.8lx ", p_buf[i]); - delete []buf; - printf("\n"); - } - return true; -} - -static int PrintAllThreads(void *argument) { - int pid = (int)argument; - - LinuxThread threads(pid); - int total_thread = threads.SuspendAllThreads(); - printf("There are %d threads in the process: %d\n", total_thread, pid); - int total_module = threads.GetModuleCount(); - printf("There are %d modules in the process: %d\n", total_module, pid); - CallbackParam module_callback(ProcessOneModule, &threads); - threads.ListModules(&module_callback); - CallbackParam thread_callback(ProcessOneThread, &threads); - threads.ListThreads(&thread_callback); - return 0; -} - -int main(int argc, char **argv) { - int pid = getpid(); - printf("Main thread is %d\n", pid); - CreateThreads(1); - // Create stack for the process. - char *stack = new char[1024 * 100]; - int cloned_pid = clone(PrintAllThreads, stack + 1024 * 100, - CLONE_VM | CLONE_FILES | CLONE_FS | CLONE_UNTRACED, - (void*)getpid()); - waitpid(cloned_pid, NULL, __WALL); - should_exit = true; - printf("Test finished.\n"); - - delete []stack; - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.cc b/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.cc deleted file mode 100644 index bc4d213a..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.cc +++ /dev/null @@ -1,815 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "common/linux/file_id.h" -#include "client/linux/handler/linux_thread.h" -#include "client/minidump_file_writer.h" -#include "client/minidump_file_writer-inl.h" -#include "google_breakpad/common/minidump_format.h" -#include "client/linux/handler/minidump_generator.h" - -#ifndef CLONE_UNTRACED -#define CLONE_UNTRACED 0x00800000 -#endif - -// This unnamed namespace contains helper functions. -namespace { - -using namespace google_breakpad; - -// Argument for the writer function. -struct WriterArgument { - MinidumpFileWriter *minidump_writer; - - // Context for the callback. - void *version_context; - - // Pid of the thread who called WriteMinidumpToFile - int requester_pid; - - // The stack bottom of the thread which caused the dump. - // Mainly used to find the thread id of the crashed thread since signal - // handler may not be called in the thread who caused it. - uintptr_t crashed_stack_bottom; - - // Pid of the crashing thread. - int crashed_pid; - - // Signal number when crash happed. Can be 0 if this is a requested dump. - int signo; - - // The ebp of the signal handler frame. Can be zero if this - // is a requested dump. - uintptr_t sighandler_ebp; - - // Signal context when crash happed. Can be NULL if this is a requested dump. - // This is actually an out parameter, but it will be filled in at the start - // of the writer thread. - struct sigcontext *sig_ctx; - - // Used to get information about the threads. - LinuxThread *thread_lister; -}; - -// Holding context information for the callback of finding the crashing thread. -struct FindCrashThreadContext { - const LinuxThread *thread_lister; - uintptr_t crashing_stack_bottom; - int crashing_thread_pid; - - FindCrashThreadContext() : - thread_lister(NULL), - crashing_stack_bottom(0UL), - crashing_thread_pid(-1) { - } -}; - -// Callback for list threads. -// It will compare the stack bottom of the provided thread with the stack -// bottom of the crashed thread, it they are eqaul, this is thread is the one -// who crashed. -bool IsThreadCrashedCallback(const ThreadInfo &thread_info, void *context) { - FindCrashThreadContext *crashing_context = - static_cast(context); - const LinuxThread *thread_lister = crashing_context->thread_lister; - struct user_regs_struct regs; - if (thread_lister->GetRegisters(thread_info.pid, ®s)) { - uintptr_t last_ebp = regs.ebp; - uintptr_t stack_bottom = thread_lister->GetThreadStackBottom(last_ebp); - if (stack_bottom > last_ebp && - stack_bottom == crashing_context->crashing_stack_bottom) { - // Got it. Stop iteration. - crashing_context->crashing_thread_pid = thread_info.pid; - return false; - } - } - return true; -} - -// Find the crashing thread id. -// This is done based on stack bottom comparing. -int FindCrashingThread(uintptr_t crashing_stack_bottom, - int requester_pid, - const LinuxThread *thread_lister) { - FindCrashThreadContext context; - context.thread_lister = thread_lister; - context.crashing_stack_bottom = crashing_stack_bottom; - CallbackParam callback_param(IsThreadCrashedCallback, - &context); - thread_lister->ListThreads(&callback_param); - return context.crashing_thread_pid; -} - -// Write the thread stack info minidump. -bool WriteThreadStack(uintptr_t last_ebp, - uintptr_t last_esp, - const LinuxThread *thread_lister, - UntypedMDRVA *memory, - MDMemoryDescriptor *loc) { - // Maximum stack size for a thread. - uintptr_t stack_bottom = thread_lister->GetThreadStackBottom(last_ebp); - if (stack_bottom > last_esp) { - int size = stack_bottom - last_esp; - if (size > 0) { - if (!memory->Allocate(size)) - return false; - memory->Copy(reinterpret_cast(last_esp), size); - loc->start_of_memory_range = 0 | last_esp; - loc->memory = memory->location(); - } - return true; - } - return false; -} - -// Write CPU context based on signal context. -bool WriteContext(MDRawContextX86 *context, const struct sigcontext *sig_ctx, - const DebugRegs *debug_regs) { - assert(sig_ctx != NULL); - context->context_flags = MD_CONTEXT_X86_FULL; - context->gs = sig_ctx->gs; - context->fs = sig_ctx->fs; - context->es = sig_ctx->es; - context->ds = sig_ctx->ds; - context->cs = sig_ctx->cs; - context->ss = sig_ctx->ss; - context->edi = sig_ctx->edi; - context->esi = sig_ctx->esi; - context->ebp = sig_ctx->ebp; - context->esp = sig_ctx->esp; - context->ebx = sig_ctx->ebx; - context->edx = sig_ctx->edx; - context->ecx = sig_ctx->ecx; - context->eax = sig_ctx->eax; - context->eip = sig_ctx->eip; - context->eflags = sig_ctx->eflags; - if (sig_ctx->fpstate != NULL) { - context->context_flags = MD_CONTEXT_X86_FULL | - MD_CONTEXT_X86_FLOATING_POINT; - context->float_save.control_word = sig_ctx->fpstate->cw; - context->float_save.status_word = sig_ctx->fpstate->sw; - context->float_save.tag_word = sig_ctx->fpstate->tag; - context->float_save.error_offset = sig_ctx->fpstate->ipoff; - context->float_save.error_selector = sig_ctx->fpstate->cssel; - context->float_save.data_offset = sig_ctx->fpstate->dataoff; - context->float_save.data_selector = sig_ctx->fpstate->datasel; - memcpy(context->float_save.register_area, sig_ctx->fpstate->_st, - sizeof(context->float_save.register_area)); - } - - if (debug_regs != NULL) { - context->context_flags |= MD_CONTEXT_X86_DEBUG_REGISTERS; - context->dr0 = debug_regs->dr0; - context->dr1 = debug_regs->dr1; - context->dr2 = debug_regs->dr2; - context->dr3 = debug_regs->dr3; - context->dr6 = debug_regs->dr6; - context->dr7 = debug_regs->dr7; - } - return true; -} - -// Write CPU context based on provided registers. -bool WriteContext(MDRawContextX86 *context, - const struct user_regs_struct *regs, - const struct user_fpregs_struct *fp_regs, - const DebugRegs *dbg_regs) { - if (!context || !regs) - return false; - - context->context_flags = MD_CONTEXT_X86_FULL; - - context->cs = regs->xcs; - context->ds = regs->xds; - context->es = regs->xes; - context->fs = regs->xfs; - context->gs = regs->xgs; - context->ss = regs->xss; - context->edi = regs->edi; - context->esi = regs->esi; - context->ebx = regs->ebx; - context->edx = regs->edx; - context->ecx = regs->ecx; - context->eax = regs->eax; - context->ebp = regs->ebp; - context->eip = regs->eip; - context->esp = regs->esp; - context->eflags = regs->eflags; - - if (dbg_regs != NULL) { - context->context_flags |= MD_CONTEXT_X86_DEBUG_REGISTERS; - context->dr0 = dbg_regs->dr0; - context->dr1 = dbg_regs->dr1; - context->dr2 = dbg_regs->dr2; - context->dr3 = dbg_regs->dr3; - context->dr6 = dbg_regs->dr6; - context->dr7 = dbg_regs->dr7; - } - - if (fp_regs != NULL) { - context->context_flags |= MD_CONTEXT_X86_FLOATING_POINT; - context->float_save.control_word = fp_regs->cwd; - context->float_save.status_word = fp_regs->swd; - context->float_save.tag_word = fp_regs->twd; - context->float_save.error_offset = fp_regs->fip; - context->float_save.error_selector = fp_regs->fcs; - context->float_save.data_offset = fp_regs->foo; - context->float_save.data_selector = fp_regs->fos; - context->float_save.data_selector = fp_regs->fos; - - memcpy(context->float_save.register_area, fp_regs->st_space, - sizeof(context->float_save.register_area)); - } - return true; -} - -// Write information about a crashed thread. -// When a thread crash, kernel will write something on the stack for processing -// signal. This makes the current stack not reliable, and our stack walker -// won't figure out the whole call stack for this. So we write the stack at the -// time of the crash into the minidump file, not the current stack. -bool WriteCrashedThreadStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - const ThreadInfo &thread_info, - MDRawThread *thread) { - assert(writer_args->sig_ctx != NULL); - - thread->thread_id = thread_info.pid; - - UntypedMDRVA memory(minidump_writer); - if (!WriteThreadStack(writer_args->sig_ctx->ebp, - writer_args->sig_ctx->esp, - writer_args->thread_lister, - &memory, - &thread->stack)) - return false; - - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - thread->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); - return WriteContext(context.get(), writer_args->sig_ctx, NULL); -} - -// Write information about a thread. -// This function only processes thread running normally at the crash. -bool WriteThreadStream(MinidumpFileWriter *minidump_writer, - const LinuxThread *thread_lister, - const ThreadInfo &thread_info, - MDRawThread *thread) { - thread->thread_id = thread_info.pid; - - struct user_regs_struct regs; - memset(®s, 0, sizeof(regs)); - if (!thread_lister->GetRegisters(thread_info.pid, ®s)) { - perror(NULL); - return false; - } - - UntypedMDRVA memory(minidump_writer); - if (!WriteThreadStack(regs.ebp, - regs.esp, - thread_lister, - &memory, - &thread->stack)) - return false; - - struct user_fpregs_struct fp_regs; - DebugRegs dbg_regs; - memset(&fp_regs, 0, sizeof(fp_regs)); - // Get all the registers. - thread_lister->GetFPRegisters(thread_info.pid, &fp_regs); - thread_lister->GetDebugRegisters(thread_info.pid, &dbg_regs); - - // Write context - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - thread->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); - return WriteContext(context.get(), ®s, &fp_regs, &dbg_regs); -} - -bool WriteCPUInformation(MDRawSystemInfo *sys_info) { - const char *proc_cpu_path = "/proc/cpuinfo"; - char line[128]; - char vendor_id[13]; - const char vendor_id_name[] = "vendor_id"; - const size_t vendor_id_name_length = sizeof(vendor_id_name) - 1; - - struct CpuInfoEntry { - const char *info_name; - int value; - } cpu_info_table[] = { - { "processor", -1 }, - { "model", 0 }, - { "stepping", 0 }, - { "cpuid level", 0 }, - { NULL, -1 }, - }; - - memset(vendor_id, 0, sizeof(vendor_id)); - - FILE *fp = fopen(proc_cpu_path, "r"); - if (fp != NULL) { - while (fgets(line, sizeof(line), fp)) { - CpuInfoEntry *entry = &cpu_info_table[0]; - while (entry->info_name != NULL) { - if (!strncmp(line, entry->info_name, strlen(entry->info_name))) { - char *value = strchr(line, ':'); - value++; - if (value != NULL) - sscanf(value, " %d", &(entry->value)); - } - entry++; - } - - // special case for vendor_id - if (!strncmp(line, vendor_id_name, vendor_id_name_length)) { - char *value = strchr(line, ':'); - if (value == NULL) - continue; - - value++; - while (*value && isspace(*value)) - value++; - if (*value) { - size_t length = strlen(value); - // we don't want the trailing newline - if (value[length - 1] == '\n') - length--; - // ensure we have space for the value - if (length < sizeof(vendor_id)) - strncpy(vendor_id, value, length); - } - } - } - fclose(fp); - } - - // /proc/cpuinfo contains cpu id, change it into number by adding one. - cpu_info_table[0].value++; - - sys_info->number_of_processors = cpu_info_table[0].value; - sys_info->processor_level = cpu_info_table[3].value; - sys_info->processor_revision = cpu_info_table[1].value << 8 | - cpu_info_table[2].value; - - sys_info->processor_architecture = MD_CPU_ARCHITECTURE_UNKNOWN; - struct utsname uts; - if (uname(&uts) == 0) { - // Match i*86 and x86* as X86 architecture. - if ((strstr(uts.machine, "x86") == uts.machine) || - (strlen(uts.machine) == 4 && - uts.machine[0] == 'i' && - uts.machine[2] == '8' && - uts.machine[3] == '6')) { - sys_info->processor_architecture = MD_CPU_ARCHITECTURE_X86; - if (vendor_id[0] != '\0') - memcpy(sys_info->cpu.x86_cpu_info.vendor_id, vendor_id, - sizeof(sys_info->cpu.x86_cpu_info.vendor_id)); - } - } - return true; -} - -bool WriteOSInformation(MinidumpFileWriter *minidump_writer, - MDRawSystemInfo *sys_info) { - sys_info->platform_id = MD_OS_LINUX; - - struct utsname uts; - if (uname(&uts) == 0) { - char os_version[512]; - size_t space_left = sizeof(os_version); - memset(os_version, 0, space_left); - const char *os_info_table[] = { - uts.sysname, - uts.release, - uts.version, - uts.machine, - "GNU/Linux", - NULL - }; - for (const char **cur_os_info = os_info_table; - *cur_os_info != NULL; - cur_os_info++) { - if (cur_os_info != os_info_table && space_left > 1) { - strcat(os_version, " "); - space_left--; - } - if (space_left > strlen(*cur_os_info)) { - strcat(os_version, *cur_os_info); - space_left -= strlen(*cur_os_info); - } else { - break; - } - } - - MDLocationDescriptor location; - if (!minidump_writer->WriteString(os_version, 0, &location)) - return false; - sys_info->csd_version_rva = location.rva; - } - return true; -} - -// Callback context for get writting thread information. -struct ThreadInfoCallbackCtx { - MinidumpFileWriter *minidump_writer; - const WriterArgument *writer_args; - TypedMDRVA *list; - int thread_index; -}; - -// Callback run for writing threads information in the process. -bool ThreadInfomationCallback(const ThreadInfo &thread_info, - void *context) { - ThreadInfoCallbackCtx *callback_context = - static_cast(context); - bool success = true; - MDRawThread thread; - memset(&thread, 0, sizeof(MDRawThread)); - if (thread_info.pid != callback_context->writer_args->crashed_pid || - callback_context->writer_args->sig_ctx == NULL) { - success = WriteThreadStream(callback_context->minidump_writer, - callback_context->writer_args->thread_lister, - thread_info, &thread); - } else { - success = WriteCrashedThreadStream(callback_context->minidump_writer, - callback_context->writer_args, - thread_info, &thread); - } - if (success) { - callback_context->list->CopyIndexAfterObject( - callback_context->thread_index++, - &thread, sizeof(MDRawThread)); - } - return success; -} - -// Stream writers -bool WriteThreadListStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - // Get the thread information. - const LinuxThread *thread_lister = writer_args->thread_lister; - int thread_count = thread_lister->GetThreadCount(); - if (thread_count < 0) - return false; - TypedMDRVA list(minidump_writer); - if (!list.AllocateObjectAndArray(thread_count, sizeof(MDRawThread))) - return false; - dir->stream_type = MD_THREAD_LIST_STREAM; - dir->location = list.location(); - list.get()->number_of_threads = thread_count; - - ThreadInfoCallbackCtx context; - context.minidump_writer = minidump_writer; - context.writer_args = writer_args; - context.list = &list; - context.thread_index = 0; - CallbackParam callback_param(ThreadInfomationCallback, - &context); - int written = thread_lister->ListThreads(&callback_param); - return written == thread_count; -} - -bool WriteCVRecord(MinidumpFileWriter *minidump_writer, - MDRawModule *module, - const char *module_path) { - TypedMDRVA cv(minidump_writer); - - // Only return the last path component of the full module path - const char *module_name = strrchr(module_path, '/'); - // Increment past the slash - if (module_name) - ++module_name; - else - module_name = ""; - - size_t module_name_length = strlen(module_name); - if (!cv.AllocateObjectAndArray(module_name_length + 1, sizeof(u_int8_t))) - return false; - if (!cv.CopyIndexAfterObject(0, const_cast(module_name), - module_name_length)) - return false; - - module->cv_record = cv.location(); - MDCVInfoPDB70 *cv_ptr = cv.get(); - memset(cv_ptr, 0, sizeof(MDCVInfoPDB70)); - cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE; - cv_ptr->age = 0; - - // Get the module identifier - FileID file_id(module_path); - unsigned char identifier[16]; - - if (file_id.ElfFileIdentifier(identifier)) { - cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 | - (uint32_t)identifier[1] << 16 | (uint32_t)identifier[2] << 8 | - (uint32_t)identifier[3]; - cv_ptr->signature.data2 = (uint32_t)identifier[4] << 8 | identifier[5]; - cv_ptr->signature.data3 = (uint32_t)identifier[6] << 8 | identifier[7]; - cv_ptr->signature.data4[0] = identifier[8]; - cv_ptr->signature.data4[1] = identifier[9]; - cv_ptr->signature.data4[2] = identifier[10]; - cv_ptr->signature.data4[3] = identifier[11]; - cv_ptr->signature.data4[4] = identifier[12]; - cv_ptr->signature.data4[5] = identifier[13]; - cv_ptr->signature.data4[6] = identifier[14]; - cv_ptr->signature.data4[7] = identifier[15]; - } - return true; -} - -struct ModuleInfoCallbackCtx { - MinidumpFileWriter *minidump_writer; - const WriterArgument *writer_args; - TypedMDRVA *list; - int module_index; -}; - -bool ModuleInfoCallback(const ModuleInfo &module_info, - void *context) { - ModuleInfoCallbackCtx *callback_context = - static_cast(context); - // Skip those modules without name, or those that are not modules. - if (strlen(module_info.name) == 0 || - !strchr(module_info.name, '/')) - return true; - - MDRawModule module; - memset(&module, 0, sizeof(module)); - MDLocationDescriptor loc; - if (!callback_context->minidump_writer->WriteString(module_info.name, 0, - &loc)) - return false; - module.base_of_image = (u_int64_t)module_info.start_addr; - module.size_of_image = module_info.size; - module.module_name_rva = loc.rva; - - if (!WriteCVRecord(callback_context->minidump_writer, &module, - module_info.name)) - return false; - callback_context->list->CopyIndexAfterObject( - callback_context->module_index++, &module, MD_MODULE_SIZE); - return true; -} - -bool WriteModuleListStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA list(minidump_writer); - int module_count = writer_args->thread_lister->GetModuleCount(); - if (module_count <= 0 || - !list.AllocateObjectAndArray(module_count, MD_MODULE_SIZE)) - return false; - dir->stream_type = MD_MODULE_LIST_STREAM; - dir->location = list.location(); - list.get()->number_of_modules = module_count; - ModuleInfoCallbackCtx context; - context.minidump_writer = minidump_writer; - context.writer_args = writer_args; - context.list = &list; - context.module_index = 0; - CallbackParam callback(ModuleInfoCallback, &context); - return writer_args->thread_lister->ListModules(&callback) == module_count; -} - -bool WriteSystemInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA sys_info(minidump_writer); - if (!sys_info.Allocate()) - return false; - dir->stream_type = MD_SYSTEM_INFO_STREAM; - dir->location = sys_info.location(); - - return WriteCPUInformation(sys_info.get()) && - WriteOSInformation(minidump_writer, sys_info.get()); -} - -bool WriteExceptionStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - // This happenes when this is not a crash, but a requested dump. - if (writer_args->sig_ctx == NULL) - return false; - - TypedMDRVA exception(minidump_writer); - if (!exception.Allocate()) - return false; - - dir->stream_type = MD_EXCEPTION_STREAM; - dir->location = exception.location(); - exception.get()->thread_id = writer_args->crashed_pid; - exception.get()->exception_record.exception_code = writer_args->signo; - exception.get()->exception_record.exception_flags = 0; - if (writer_args->sig_ctx != NULL) { - exception.get()->exception_record.exception_address = - writer_args->sig_ctx->eip; - } else { - return true; - } - - // Write context of the exception. - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - exception.get()->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); - return WriteContext(context.get(), writer_args->sig_ctx, NULL); -} - -bool WriteMiscInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA info(minidump_writer); - if (!info.Allocate()) - return false; - - dir->stream_type = MD_MISC_INFO_STREAM; - dir->location = info.location(); - info.get()->size_of_info = sizeof(MDRawMiscInfo); - info.get()->flags1 = MD_MISCINFO_FLAGS1_PROCESS_ID; - info.get()->process_id = writer_args->requester_pid; - - return true; -} - -bool WriteBreakpadInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA info(minidump_writer); - if (!info.Allocate()) - return false; - - dir->stream_type = MD_BREAKPAD_INFO_STREAM; - dir->location = info.location(); - - info.get()->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID | - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID; - info.get()->dump_thread_id = getpid(); - info.get()->requesting_thread_id = writer_args->requester_pid; - return true; -} - -// Prototype of writer functions. -typedef bool (*WriteStringFN)(MinidumpFileWriter *, - const WriterArgument *, - MDRawDirectory *); - -// Function table to writer a full minidump. -WriteStringFN writers[] = { - WriteThreadListStream, - WriteModuleListStream, - WriteSystemInfoStream, - WriteExceptionStream, - WriteMiscInfoStream, - WriteBreakpadInfoStream, -}; - -// Will call each writer function in the writers table. -// It runs in a different process from the crashing process, but sharing -// the same address space. This enables it to use ptrace functions. -int Write(void *argument) { - WriterArgument *writer_args = - static_cast(argument); - - if (!writer_args->thread_lister->SuspendAllThreads()) - return -1; - - if (writer_args->sighandler_ebp != 0 && - writer_args->thread_lister->FindSigContext(writer_args->sighandler_ebp, - &writer_args->sig_ctx)) { - writer_args->crashed_stack_bottom = - writer_args->thread_lister->GetThreadStackBottom( - writer_args->sig_ctx->ebp); - int crashed_pid = FindCrashingThread(writer_args->crashed_stack_bottom, - writer_args->requester_pid, - writer_args->thread_lister); - if (crashed_pid > 0) - writer_args->crashed_pid = crashed_pid; - } - - - MinidumpFileWriter *minidump_writer = writer_args->minidump_writer; - TypedMDRVA header(minidump_writer); - TypedMDRVA dir(minidump_writer); - if (!header.Allocate()) - return 0; - - int writer_count = sizeof(writers) / sizeof(writers[0]); - // Need directory space for all writers. - if (!dir.AllocateArray(writer_count)) - return 0; - header.get()->signature = MD_HEADER_SIGNATURE; - header.get()->version = MD_HEADER_VERSION; - header.get()->time_date_stamp = time(NULL); - header.get()->stream_count = writer_count; - header.get()->stream_directory_rva = dir.position(); - - int dir_index = 0; - MDRawDirectory local_dir; - for (int i = 0; i < writer_count; ++i) { - if (writers[i](minidump_writer, writer_args, &local_dir)) - dir.CopyIndex(dir_index++, &local_dir); - } - - writer_args->thread_lister->ResumeAllThreads(); - return 0; -} - -} // namespace - -namespace google_breakpad { - -MinidumpGenerator::MinidumpGenerator() { - AllocateStack(); -} - -MinidumpGenerator::~MinidumpGenerator() { -} - -void MinidumpGenerator::AllocateStack() { - stack_.reset(new char[kStackSize]); -} - -bool MinidumpGenerator::WriteMinidumpToFile(const char *file_pathname, - int signo, - uintptr_t sighandler_ebp, - struct sigcontext **sig_ctx) const { - assert(file_pathname != NULL); - assert(stack_ != NULL); - - if (stack_ == NULL || file_pathname == NULL) - return false; - - MinidumpFileWriter minidump_writer; - if (minidump_writer.Open(file_pathname)) { - WriterArgument argument; - memset(&argument, 0, sizeof(argument)); - LinuxThread thread_lister(getpid()); - argument.thread_lister = &thread_lister; - argument.minidump_writer = &minidump_writer; - argument.requester_pid = getpid(); - argument.crashed_pid = getpid(); - argument.signo = signo; - argument.sighandler_ebp = sighandler_ebp; - argument.sig_ctx = NULL; - - int cloned_pid = clone(Write, stack_.get() + kStackSize, - CLONE_VM | CLONE_FILES | CLONE_FS | CLONE_UNTRACED, - (void*)&argument); - waitpid(cloned_pid, NULL, __WALL); - if (sig_ctx != NULL) - *sig_ctx = argument.sig_ctx; - return true; - } - - return false; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.h b/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.h deleted file mode 100644 index 7c0511f5..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_generator.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_LINUX_HANDLER_MINIDUMP_GENERATOR_H__ -#define CLIENT_LINUX_HANDLER_MINIDUMP_GENERATOR_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" -#include "processor/scoped_ptr.h" - -struct sigcontext; - -namespace google_breakpad { - -// -// MinidumpGenerator -// -// Write a minidump to file based on the signo and sig_ctx. -// A minidump generator should be created before any exception happen. -// -class MinidumpGenerator { - public: - MinidumpGenerator(); - - ~MinidumpGenerator(); - - // Write minidump. - bool WriteMinidumpToFile(const char *file_pathname, - int signo, - uintptr_t sighandler_ebp, - struct sigcontext **sig_ctx) const; - private: - // Allocate memory for stack. - void AllocateStack(); - - private: - // Stack size of the writer thread. - static const int kStackSize = 1024 * 1024; - scoped_array stack_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_LINUX_HANDLER_MINIDUMP_GENERATOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_test.cc b/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_test.cc deleted file mode 100644 index f8c4e784..00000000 --- a/thirdparty/google-breakpad/r318/src/client/linux/handler/minidump_test.cc +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2006, Google Inc. -// All rights reserved. -// -// Author: Li Liu -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include - -#include -#include -#include -#include - -#include "client/linux/handler/minidump_generator.h" - -using namespace google_breakpad; - -// Thread use this to see if it should stop working. -static bool should_exit = false; - -static void foo2(int arg) { - // Stack variable, used for debugging stack dumps. - int c = arg; - c = 0xcccccccc; - while (!should_exit) - sleep(1); -} - -static void foo(int arg) { - // Stack variable, used for debugging stack dumps. - int b = arg; - b = 0xbbbbbbbb; - foo2(b); -} - -static void *thread_main(void *) { - // Stack variable, used for debugging stack dumps. - int a = 0xaaaaaaaa; - foo(a); - return NULL; -} - -static void CreateThread(int num) { - pthread_t h; - for (int i = 0; i < num; ++i) { - pthread_create(&h, NULL, thread_main, NULL); - pthread_detach(h); - } -} - -int main(int argc, char *argv[]) { - CreateThread(10); - google_breakpad::MinidumpGenerator mg; - if (mg.WriteMinidumpToFile("minidump_test.out", -1, 0, NULL)) - printf("Succeeded written minidump\n"); - else - printf("Failed to write minidump\n"); - should_exit = true; - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.c b/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.c deleted file mode 100644 index 19f36b19..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.c +++ /dev/null @@ -1,1750 +0,0 @@ -/* - * IDENTIFICATION: - * stub generated Mon Jun 16 18:08:10 2008 - * with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local - * OPTIONS: - */ - -/* Module exc */ - -#define __MIG_check__Request__exc_subsystem__ 1 -#define __NDR_convert__Request__exc_subsystem__ 1 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#ifndef mig_internal -#define mig_internal static __inline__ -#endif /* mig_internal */ - -#ifndef mig_external -#define mig_external -#endif /* mig_external */ - -#if !defined(__MigTypeCheck) && defined(TypeCheck) -#define __MigTypeCheck TypeCheck /* Legacy setting */ -#endif /* !defined(__MigTypeCheck) */ - -#if !defined(__MigKernelSpecificCode) && defined(_MIG_KERNEL_SPECIFIC_CODE_) -#define __MigKernelSpecificCode _MIG_KERNEL_SPECIFIC_CODE_ /* Legacy setting */ -#endif /* !defined(__MigKernelSpecificCode) */ - -#ifndef LimitCheck -#define LimitCheck 0 -#endif /* LimitCheck */ - -#ifndef min -#define min(a,b) ( ((a) < (b))? (a): (b) ) -#endif /* min */ - -#if !defined(_WALIGN_) -#define _WALIGN_(x) (((x) + 3) & ~3) -#endif /* !defined(_WALIGN_) */ - -#if !defined(_WALIGNSZ_) -#define _WALIGNSZ_(x) _WALIGN_(sizeof(x)) -#endif /* !defined(_WALIGNSZ_) */ - -#ifndef UseStaticTemplates -#define UseStaticTemplates 0 -#endif /* UseStaticTemplates */ - -#ifndef __DeclareRcvRpc -#define __DeclareRcvRpc(_NUM_, _NAME_) -#endif /* __DeclareRcvRpc */ - -#ifndef __BeforeRcvRpc -#define __BeforeRcvRpc(_NUM_, _NAME_) -#endif /* __BeforeRcvRpc */ - -#ifndef __AfterRcvRpc -#define __AfterRcvRpc(_NUM_, _NAME_) -#endif /* __AfterRcvRpc */ - -#ifndef __DeclareRcvSimple -#define __DeclareRcvSimple(_NUM_, _NAME_) -#endif /* __DeclareRcvSimple */ - -#ifndef __BeforeRcvSimple -#define __BeforeRcvSimple(_NUM_, _NAME_) -#endif /* __BeforeRcvSimple */ - -#ifndef __AfterRcvSimple -#define __AfterRcvSimple(_NUM_, _NAME_) -#endif /* __AfterRcvSimple */ - -#define novalue void - -#define msgh_request_port msgh_local_port -#define MACH_MSGH_BITS_REQUEST(bits) MACH_MSGH_BITS_LOCAL(bits) -#define msgh_reply_port msgh_remote_port -#define MACH_MSGH_BITS_REPLY(bits) MACH_MSGH_BITS_REMOTE(bits) - -#define MIG_RETURN_ERROR(X, code) {\ - ((mig_reply_error_t *)X)->RetCode = code;\ - ((mig_reply_error_t *)X)->NDR = NDR_record;\ - return;\ - } - -/* typedefs for all requests */ - -#ifndef __Request__exc_subsystem__defined -#define __Request__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - } __Request__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Request__exc_subsystem__defined */ - -/* typedefs for all replies */ - -#ifndef __Reply__exc_subsystem__defined -#define __Reply__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - } __Reply__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Reply__exc_subsystem__defined */ - - -/* union of all replies */ - -#ifndef __ReplyUnion__breakpad_exc_subsystem__defined -#define __ReplyUnion__breakpad_exc_subsystem__defined -union __ReplyUnion__breakpad_exc_subsystem { - __Reply__exception_raise_t Reply_exception_raise; - __Reply__exception_raise_state_t Reply_exception_raise_state; - __Reply__exception_raise_state_identity_t Reply_exception_raise_state_identity; -}; -#endif /* __RequestUnion__breakpad_exc_subsystem__defined */ -/* Forward Declarations */ - - -mig_internal novalue _Xexception_raise - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - -mig_internal novalue _Xexception_raise_state - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - -mig_internal novalue _Xexception_raise_state_identity - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - - -#if ( __MigTypeCheck || __NDR_convert__ ) -#if __MIG_check__Request__exc_subsystem__ -#if !defined(__MIG_check__Request__exception_raise_t__defined) -#define __MIG_check__Request__exception_raise_t__defined -#ifndef __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#if defined(__NDR_convert__int_rep__exc__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__int_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__exception__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#if defined(__NDR_convert__int_rep__exc__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exc__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t) -#elif defined(__NDR_convert__int_rep__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__code__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined -#if defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__codeCnt(a, f) \ - __NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#elif defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_t__codeCnt(a, f) \ - __NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#if defined(__NDR_convert__char_rep__exc__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__char_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_t__exception__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#if defined(__NDR_convert__char_rep__exc__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exc__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t) -#elif defined(__NDR_convert__char_rep__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_t__code__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#if defined(__NDR_convert__float_rep__exc__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \ - __NDR_convert__float_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_t__exception__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#if defined(__NDR_convert__float_rep__exc__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exc__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t) -#elif defined(__NDR_convert__float_rep__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_t__code__defined */ - - -mig_internal kern_return_t __MIG_check__Request__exception_raise_t(__attribute__((__unused__)) __Request__exception_raise_t *In0P) -{ - - typedef __Request__exception_raise_t __Request; -#if __MigTypeCheck - unsigned int msgh_size; -#endif /* __MigTypeCheck */ - -#if __MigTypeCheck - msgh_size = In0P->Head.msgh_size; - if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || - (In0P->msgh_body.msgh_descriptor_count != 2) || - (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 8)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)) -) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if __MigTypeCheck - if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR || - In0P->thread.disposition != 17) - return MIG_TYPE_ERROR; -#endif /* __MigTypeCheck */ - -#if __MigTypeCheck - if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR || - In0P->task.disposition != 17) - return MIG_TYPE_ERROR; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) - __NDR_convert__int_rep__Request__exception_raise_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined */ -#if __MigTypeCheck - if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 8) + ((4 * In0P->codeCnt))) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_t__exception__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_t__code__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) { -#if defined(__NDR_convert__int_rep__Request__exception_raise_t__exception__defined) - __NDR_convert__int_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__exception__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_t__code__defined) - __NDR_convert__int_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt); -#endif /* __NDR_convert__int_rep__Request__exception_raise_t__code__defined */ - } -#endif /* defined(__NDR_convert__int_rep...) */ - -#if defined(__NDR_convert__char_rep__Request__exception_raise_t__exception__defined) || \ - defined(__NDR_convert__char_rep__Request__exception_raise_t__code__defined) || \ - 0 - if (In0P->NDR.char_rep != NDR_record.char_rep) { -#if defined(__NDR_convert__char_rep__Request__exception_raise_t__exception__defined) - __NDR_convert__char_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.char_rep); -#endif /* __NDR_convert__char_rep__Request__exception_raise_t__exception__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_t__code__defined) - __NDR_convert__char_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt); -#endif /* __NDR_convert__char_rep__Request__exception_raise_t__code__defined */ - } -#endif /* defined(__NDR_convert__char_rep...) */ - -#if defined(__NDR_convert__float_rep__Request__exception_raise_t__exception__defined) || \ - defined(__NDR_convert__float_rep__Request__exception_raise_t__code__defined) || \ - 0 - if (In0P->NDR.float_rep != NDR_record.float_rep) { -#if defined(__NDR_convert__float_rep__Request__exception_raise_t__exception__defined) - __NDR_convert__float_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.float_rep); -#endif /* __NDR_convert__float_rep__Request__exception_raise_t__exception__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_t__code__defined) - __NDR_convert__float_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt); -#endif /* __NDR_convert__float_rep__Request__exception_raise_t__code__defined */ - } -#endif /* defined(__NDR_convert__float_rep...) */ - - return MACH_MSG_SUCCESS; -} -#endif /* !defined(__MIG_check__Request__exception_raise_t__defined) */ -#endif /* __MIG_check__Request__exc_subsystem__ */ -#endif /* ( __MigTypeCheck || __NDR_convert__ ) */ - - -/* Routine exception_raise */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t breakpad_exception_raise -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt -); - -/* Routine exception_raise */ -mig_internal novalue _Xexception_raise - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - mach_msg_trailer_t trailer; - } Request; -#ifdef __MigPackStructs -#pragma pack() -#endif - typedef __Request__exception_raise_t __Request; - typedef __Reply__exception_raise_t Reply; - - /* - * typedef struct { - * mach_msg_header_t Head; - * NDR_record_t NDR; - * kern_return_t RetCode; - * } mig_reply_error_t; - */ - - Request *In0P = (Request *) InHeadP; - Reply *OutP = (Reply *) OutHeadP; -#ifdef __MIG_check__Request__exception_raise_t__defined - kern_return_t check_result; -#endif /* __MIG_check__Request__exception_raise_t__defined */ - - __DeclareRcvRpc(2401, "exception_raise") - __BeforeRcvRpc(2401, "exception_raise") - -#if defined(__MIG_check__Request__exception_raise_t__defined) - check_result = __MIG_check__Request__exception_raise_t((__Request *)In0P); - if (check_result != MACH_MSG_SUCCESS) - { MIG_RETURN_ERROR(OutP, check_result); } -#endif /* defined(__MIG_check__Request__exception_raise_t__defined) */ - - OutP->RetCode = breakpad_exception_raise(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt); - - OutP->NDR = NDR_record; - - - __AfterRcvRpc(2401, "exception_raise") -} - -#if ( __MigTypeCheck || __NDR_convert__ ) -#if __MIG_check__Request__exc_subsystem__ -#if !defined(__MIG_check__Request__exception_raise_state_t__defined) -#define __MIG_check__Request__exception_raise_state_t__defined -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#if defined(__NDR_convert__int_rep__exc__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__int_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#if defined(__NDR_convert__int_rep__exc__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exc__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t) -#elif defined(__NDR_convert__int_rep__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined -#if defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(a, f) \ - __NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#elif defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(a, f) \ - __NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined -#if defined(__NDR_convert__int_rep__exc__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__int_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__int_rep__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__int_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#if defined(__NDR_convert__int_rep__exc__thread_state_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__int_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__thread_state_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__int_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exc__natural_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__exc__natural_t) -#elif defined(__NDR_convert__int_rep__natural_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__natural_t) -#elif defined(__NDR_convert__int_rep__exc__uint32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__exc__uint32_t) -#elif defined(__NDR_convert__int_rep__uint32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined -#if defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(a, f) \ - __NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#elif defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(a, f) \ - __NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#if defined(__NDR_convert__char_rep__exc__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__char_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#if defined(__NDR_convert__char_rep__exc__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exc__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t) -#elif defined(__NDR_convert__char_rep__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined -#if defined(__NDR_convert__char_rep__exc__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__char_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__char_rep__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__char_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#if defined(__NDR_convert__char_rep__exc__thread_state_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__char_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__thread_state_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__char_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exc__natural_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__exc__natural_t) -#elif defined(__NDR_convert__char_rep__natural_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__natural_t) -#elif defined(__NDR_convert__char_rep__exc__uint32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__exc__uint32_t) -#elif defined(__NDR_convert__char_rep__uint32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#if defined(__NDR_convert__float_rep__exc__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \ - __NDR_convert__float_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#if defined(__NDR_convert__float_rep__exc__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exc__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t) -#elif defined(__NDR_convert__float_rep__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined -#if defined(__NDR_convert__float_rep__exc__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__float_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__float_rep__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \ - __NDR_convert__float_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#if defined(__NDR_convert__float_rep__exc__thread_state_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__float_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__thread_state_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__float_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exc__natural_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__exc__natural_t) -#elif defined(__NDR_convert__float_rep__natural_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__natural_t) -#elif defined(__NDR_convert__float_rep__exc__uint32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__exc__uint32_t) -#elif defined(__NDR_convert__float_rep__uint32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined */ - - -mig_internal kern_return_t __MIG_check__Request__exception_raise_state_t(__attribute__((__unused__)) __Request__exception_raise_state_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_t **In1PP) -{ - - typedef __Request__exception_raise_state_t __Request; - __Request *In1P; -#if __MigTypeCheck - unsigned int msgh_size; -#endif /* __MigTypeCheck */ - unsigned int msgh_size_delta; - -#if __MigTypeCheck - msgh_size = In0P->Head.msgh_size; - if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || - (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584)) || (msgh_size > (mach_msg_size_t)sizeof(__Request))) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) - __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined */ - msgh_size_delta = (4 * In0P->codeCnt); -#if __MigTypeCheck - if (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584) + msgh_size_delta) - return MIG_BAD_ARGUMENTS; - msgh_size -= msgh_size_delta; -#endif /* __MigTypeCheck */ - - *In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8); - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) - __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined */ -#if __MigTypeCheck - if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 584) + ((4 * In1P->old_stateCnt))) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) { -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined) - __NDR_convert__int_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined) - __NDR_convert__int_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined) - __NDR_convert__int_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined) - __NDR_convert__int_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.int_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__int_rep...) */ - -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined) || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined) || \ - 0 || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined) || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined) || \ - 0 - if (In0P->NDR.char_rep != NDR_record.char_rep) { -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined) - __NDR_convert__char_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.char_rep); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined) - __NDR_convert__char_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined) - __NDR_convert__char_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.char_rep); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined) - __NDR_convert__char_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.char_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__char_rep...) */ - -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined) || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined) || \ - 0 || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined) || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined) || \ - 0 - if (In0P->NDR.float_rep != NDR_record.float_rep) { -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined) - __NDR_convert__float_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.float_rep); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined) - __NDR_convert__float_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined) - __NDR_convert__float_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.float_rep); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined) - __NDR_convert__float_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.float_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__float_rep...) */ - - return MACH_MSG_SUCCESS; -} -#endif /* !defined(__MIG_check__Request__exception_raise_state_t__defined) */ -#endif /* __MIG_check__Request__exc_subsystem__ */ -#endif /* ( __MigTypeCheck || __NDR_convert__ ) */ - - -/* Routine exception_raise_state */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t breakpad_exception_raise_state -( - mach_port_t exception_port, - exception_type_t exception, - const exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - const thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -/* Routine exception_raise_state */ -mig_internal novalue _Xexception_raise_state - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - mach_msg_trailer_t trailer; - } Request; -#ifdef __MigPackStructs -#pragma pack() -#endif - typedef __Request__exception_raise_state_t __Request; - typedef __Reply__exception_raise_state_t Reply; - - /* - * typedef struct { - * mach_msg_header_t Head; - * NDR_record_t NDR; - * kern_return_t RetCode; - * } mig_reply_error_t; - */ - - Request *In0P = (Request *) InHeadP; - Request *In1P; - Reply *OutP = (Reply *) OutHeadP; -#ifdef __MIG_check__Request__exception_raise_state_t__defined - kern_return_t check_result; -#endif /* __MIG_check__Request__exception_raise_state_t__defined */ - - __DeclareRcvRpc(2402, "exception_raise_state") - __BeforeRcvRpc(2402, "exception_raise_state") - -#if defined(__MIG_check__Request__exception_raise_state_t__defined) - check_result = __MIG_check__Request__exception_raise_state_t((__Request *)In0P, (__Request **)&In1P); - if (check_result != MACH_MSG_SUCCESS) - { MIG_RETURN_ERROR(OutP, check_result); } -#endif /* defined(__MIG_check__Request__exception_raise_state_t__defined) */ - - OutP->new_stateCnt = 144; - - OutP->RetCode = breakpad_exception_raise_state(In0P->Head.msgh_request_port, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt); - if (OutP->RetCode != KERN_SUCCESS) { - MIG_RETURN_ERROR(OutP, OutP->RetCode); - } - - OutP->NDR = NDR_record; - - - OutP->flavor = In1P->flavor; - OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 576) + (((4 * OutP->new_stateCnt))); - - __AfterRcvRpc(2402, "exception_raise_state") -} - -#if ( __MigTypeCheck || __NDR_convert__ ) -#if __MIG_check__Request__exc_subsystem__ -#if !defined(__MIG_check__Request__exception_raise_state_identity_t__defined) -#define __MIG_check__Request__exception_raise_state_identity_t__defined -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#if defined(__NDR_convert__int_rep__exc__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exception_type_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__int_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#if defined(__NDR_convert__int_rep__exc__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exception_data_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exc__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t) -#elif defined(__NDR_convert__int_rep__integer_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined -#if defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(a, f) \ - __NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#elif defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(a, f) \ - __NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined -#if defined(__NDR_convert__int_rep__exc__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__int_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__int__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__int_rep__int((int *)(a), f) -#elif defined(__NDR_convert__int_rep__exc__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__int_rep__int32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__int_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#if defined(__NDR_convert__int_rep__exc__thread_state_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__int_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__thread_state_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__int_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__int_rep__exc__natural_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__exc__natural_t) -#elif defined(__NDR_convert__int_rep__natural_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__natural_t) -#elif defined(__NDR_convert__int_rep__exc__uint32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__exc__uint32_t) -#elif defined(__NDR_convert__int_rep__uint32_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined */ - -#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined -#if defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(a, f) \ - __NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#elif defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined) -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined -#define __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(a, f) \ - __NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#if defined(__NDR_convert__char_rep__exc__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exception_type_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__char_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#if defined(__NDR_convert__char_rep__exc__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exception_data_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exc__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t) -#elif defined(__NDR_convert__char_rep__integer_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined -#if defined(__NDR_convert__char_rep__exc__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__char_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__int__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__char_rep__int((int *)(a), f) -#elif defined(__NDR_convert__char_rep__exc__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__char_rep__int32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__char_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined */ - -#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#if defined(__NDR_convert__char_rep__exc__thread_state_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__char_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__thread_state_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__char_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__char_rep__exc__natural_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__exc__natural_t) -#elif defined(__NDR_convert__char_rep__natural_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__natural_t) -#elif defined(__NDR_convert__char_rep__exc__uint32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__exc__uint32_t) -#elif defined(__NDR_convert__char_rep__uint32_t__defined) -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#if defined(__NDR_convert__float_rep__exc__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exception_type_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \ - __NDR_convert__float_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#if defined(__NDR_convert__float_rep__exc__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exception_data_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exc__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t) -#elif defined(__NDR_convert__float_rep__integer_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \ - __NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined -#if defined(__NDR_convert__float_rep__exc__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__float_rep__exc__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__int__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__float_rep__int((int *)(a), f) -#elif defined(__NDR_convert__float_rep__exc__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f) -#elif defined(__NDR_convert__float_rep__int32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \ - __NDR_convert__float_rep__int32_t((int32_t *)(a), f) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined */ - -#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#if defined(__NDR_convert__float_rep__exc__thread_state_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__float_rep__exc__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__thread_state_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__float_rep__thread_state_t((thread_state_t *)(a), f, c) -#elif defined(__NDR_convert__float_rep__exc__natural_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__exc__natural_t) -#elif defined(__NDR_convert__float_rep__natural_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__natural_t) -#elif defined(__NDR_convert__float_rep__exc__uint32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__exc__uint32_t) -#elif defined(__NDR_convert__float_rep__uint32_t__defined) -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined -#define __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \ - __NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__uint32_t) -#endif /* defined(__NDR_convert__*__defined) */ -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined */ - - -mig_internal kern_return_t __MIG_check__Request__exception_raise_state_identity_t(__attribute__((__unused__)) __Request__exception_raise_state_identity_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_identity_t **In1PP) -{ - - typedef __Request__exception_raise_state_identity_t __Request; - __Request *In1P; -#if __MigTypeCheck - unsigned int msgh_size; -#endif /* __MigTypeCheck */ - unsigned int msgh_size_delta; - -#if __MigTypeCheck - msgh_size = In0P->Head.msgh_size; - if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) || - (In0P->msgh_body.msgh_descriptor_count != 2) || - (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584)) || (msgh_size > (mach_msg_size_t)sizeof(__Request)) -) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if __MigTypeCheck - if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR || - In0P->thread.disposition != 17) - return MIG_TYPE_ERROR; -#endif /* __MigTypeCheck */ - -#if __MigTypeCheck - if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR || - In0P->task.disposition != 17) - return MIG_TYPE_ERROR; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined */ - msgh_size_delta = (4 * In0P->codeCnt); -#if __MigTypeCheck - if (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584) + msgh_size_delta) - return MIG_BAD_ARGUMENTS; - msgh_size -= msgh_size_delta; -#endif /* __MigTypeCheck */ - - *In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8); - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined */ -#if __MigTypeCheck - if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 584) + ((4 * In1P->old_stateCnt))) - return MIG_BAD_ARGUMENTS; -#endif /* __MigTypeCheck */ - -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined) || \ - defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined) - if (In0P->NDR.int_rep != NDR_record.int_rep) { -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.int_rep); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined */ -#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined) - __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.int_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__int_rep...) */ - -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined) || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined) || \ - 0 || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined) || \ - defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined) || \ - 0 - if (In0P->NDR.char_rep != NDR_record.char_rep) { -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined) - __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.char_rep); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined) - __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined) - __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.char_rep); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined */ -#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined) - __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.char_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__char_rep...) */ - -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined) || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined) || \ - 0 || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined) || \ - defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined) || \ - 0 - if (In0P->NDR.float_rep != NDR_record.float_rep) { -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined) - __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.float_rep); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined) - __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined) - __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.float_rep); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined */ -#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined) - __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.float_rep, In1P->old_stateCnt); -#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined */ - } -#endif /* defined(__NDR_convert__float_rep...) */ - - return MACH_MSG_SUCCESS; -} -#endif /* !defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */ -#endif /* __MIG_check__Request__exc_subsystem__ */ -#endif /* ( __MigTypeCheck || __NDR_convert__ ) */ - - -/* Routine exception_raise_state_identity */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t breakpad_exception_raise_state_identity -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -/* Routine exception_raise_state_identity */ -mig_internal novalue _Xexception_raise_state_identity - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - mach_msg_trailer_t trailer; - } Request; -#ifdef __MigPackStructs -#pragma pack() -#endif - typedef __Request__exception_raise_state_identity_t __Request; - typedef __Reply__exception_raise_state_identity_t Reply; - - /* - * typedef struct { - * mach_msg_header_t Head; - * NDR_record_t NDR; - * kern_return_t RetCode; - * } mig_reply_error_t; - */ - - Request *In0P = (Request *) InHeadP; - Request *In1P; - Reply *OutP = (Reply *) OutHeadP; -#ifdef __MIG_check__Request__exception_raise_state_identity_t__defined - kern_return_t check_result; -#endif /* __MIG_check__Request__exception_raise_state_identity_t__defined */ - - __DeclareRcvRpc(2403, "exception_raise_state_identity") - __BeforeRcvRpc(2403, "exception_raise_state_identity") - -#if defined(__MIG_check__Request__exception_raise_state_identity_t__defined) - check_result = __MIG_check__Request__exception_raise_state_identity_t((__Request *)In0P, (__Request **)&In1P); - if (check_result != MACH_MSG_SUCCESS) - { MIG_RETURN_ERROR(OutP, check_result); } -#endif /* defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */ - - OutP->new_stateCnt = 144; - - OutP->RetCode = breakpad_exception_raise_state_identity(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt); - if (OutP->RetCode != KERN_SUCCESS) { - MIG_RETURN_ERROR(OutP, OutP->RetCode); - } - - OutP->NDR = NDR_record; - - - OutP->flavor = In1P->flavor; - OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 576) + (((4 * OutP->new_stateCnt))); - - __AfterRcvRpc(2403, "exception_raise_state_identity") -} - - -extern boolean_t exc_server( - mach_msg_header_t *InHeadP, - mach_msg_header_t *OutHeadP); - -extern mig_routine_t exc_server_routine( - mach_msg_header_t *InHeadP); - - -/* Description of this subsystem, for use in direct RPC */ -const struct breakpad_exc_subsystem { - mig_server_routine_t server; /* Server routine */ - mach_msg_id_t start; /* Min routine number */ - mach_msg_id_t end; /* Max routine number + 1 */ - unsigned int maxsize; /* Max msg size */ - vm_address_t reserved; /* Reserved */ - struct routine_descriptor /*Array of routine descriptors */ - routine[3]; -} breakpad_exc_subsystem = { - exc_server_routine, - 2401, - 2404, - (mach_msg_size_t)sizeof(union __ReplyUnion__breakpad_exc_subsystem), - (vm_address_t)0, - { - { (mig_impl_routine_t) 0, - (mig_stub_routine_t) _Xexception_raise, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_t)}, - { (mig_impl_routine_t) 0, - (mig_stub_routine_t) _Xexception_raise_state, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_t)}, - { (mig_impl_routine_t) 0, - (mig_stub_routine_t) _Xexception_raise_state_identity, 11, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_identity_t)}, - } -}; - -mig_external boolean_t exc_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP) -{ - /* - * typedef struct { - * mach_msg_header_t Head; - * NDR_record_t NDR; - * kern_return_t RetCode; - * } mig_reply_error_t; - */ - - register mig_routine_t routine; - - OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0); - OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port; - /* Minimal size: routine() will update it if different */ - OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t); - OutHeadP->msgh_local_port = MACH_PORT_NULL; - OutHeadP->msgh_id = InHeadP->msgh_id + 100; - - if ((InHeadP->msgh_id > 2403) || (InHeadP->msgh_id < 2401) || - ((routine = breakpad_exc_subsystem.routine[InHeadP->msgh_id - 2401].stub_routine) == 0)) { - ((mig_reply_error_t *)OutHeadP)->NDR = NDR_record; - ((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID; - return FALSE; - } - (*routine) (InHeadP, OutHeadP); - return TRUE; -} - -mig_external mig_routine_t exc_server_routine - (mach_msg_header_t *InHeadP) -{ - register int msgh_id; - - msgh_id = InHeadP->msgh_id - 2401; - - if ((msgh_id > 2) || (msgh_id < 0)) - return 0; - - return breakpad_exc_subsystem.routine[msgh_id].stub_routine; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.h deleted file mode 100644 index c05f25a8..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_exc_server.h +++ /dev/null @@ -1,258 +0,0 @@ -#ifndef _exc_user_ -#define _exc_user_ - -/* Module exc */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef AUTOTEST -#ifndef FUNCTION_PTR_T -#define FUNCTION_PTR_T -typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t); -typedef struct { - char *name; - function_ptr_t function; -} function_table_entry; -typedef function_table_entry *function_table_t; -#endif /* FUNCTION_PTR_T */ -#endif /* AUTOTEST */ - -#ifndef exc_MSG_COUNT -#define exc_MSG_COUNT 3 -#endif /* exc_MSG_COUNT */ - -#include -#include -#include -#include - -#ifdef __BeforeMigUserHeader -__BeforeMigUserHeader -#endif /* __BeforeMigUserHeader */ - -#include -__BEGIN_DECLS - - -/* Routine exception_raise */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt -); - -/* Routine exception_raise_state */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise_state -( - mach_port_t exception_port, - exception_type_t exception, - const exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - const thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -/* Routine exception_raise_state_identity */ -#ifdef mig_external -mig_external -#else -extern -#endif /* mig_external */ -kern_return_t exception_raise_state_identity -( - mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt -); - -__END_DECLS - -/********************** Caution **************************/ -/* The following data types should be used to calculate */ -/* maximum message sizes only. The actual message may be */ -/* smaller, and the position of the arguments within the */ -/* message layout may vary from what is presented here. */ -/* For example, if any of the arguments are variable- */ -/* sized, and less than the maximum is sent, the data */ -/* will be packed tight in the actual message to reduce */ -/* the presence of holes. */ -/********************** Caution **************************/ - -/* typedefs for all requests */ - -#ifndef __Request__exc_subsystem__defined -#define __Request__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - } __Request__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - /* start of the kernel processed data */ - mach_msg_body_t msgh_body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - /* end of the kernel processed data */ - NDR_record_t NDR; - exception_type_t exception; - mach_msg_type_number_t codeCnt; - integer_t code[2]; - int flavor; - mach_msg_type_number_t old_stateCnt; - natural_t old_state[144]; - } __Request__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Request__exc_subsystem__defined */ - -/* union of all requests */ - -#ifndef __RequestUnion__exc_subsystem__defined -#define __RequestUnion__exc_subsystem__defined -union __RequestUnion__exc_subsystem { - __Request__exception_raise_t Request_exception_raise; - __Request__exception_raise_state_t Request_exception_raise_state; - __Request__exception_raise_state_identity_t Request_exception_raise_state_identity; -}; -#endif /* !__RequestUnion__exc_subsystem__defined */ -/* typedefs for all replies */ - -#ifndef __Reply__exc_subsystem__defined -#define __Reply__exc_subsystem__defined - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - } __Reply__exception_raise_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_t; -#ifdef __MigPackStructs -#pragma pack() -#endif - -#ifdef __MigPackStructs -#pragma pack(4) -#endif - typedef struct { - mach_msg_header_t Head; - NDR_record_t NDR; - kern_return_t RetCode; - int flavor; - mach_msg_type_number_t new_stateCnt; - natural_t new_state[144]; - } __Reply__exception_raise_state_identity_t; -#ifdef __MigPackStructs -#pragma pack() -#endif -#endif /* !__Reply__exc_subsystem__defined */ - -/* union of all replies */ - -#ifndef __ReplyUnion__exc_subsystem__defined -#define __ReplyUnion__exc_subsystem__defined -union __ReplyUnion__exc_subsystem { - __Reply__exception_raise_t Reply_exception_raise; - __Reply__exception_raise_state_t Reply_exception_raise_state; - __Reply__exception_raise_state_identity_t Reply_exception_raise_state_identity; -}; -#endif /* !__RequestUnion__exc_subsystem__defined */ - -#ifndef subsystem_to_name_map_exc -#define subsystem_to_name_map_exc \ - { "exception_raise", 2401 },\ - { "exception_raise_state", 2402 },\ - { "exception_raise_state_identity", 2403 } -#endif - -#ifdef __AfterMigUserHeader -__AfterMigUserHeader -#endif /* __AfterMigUserHeader */ - -#endif /* _exc_user_ */ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.cc deleted file mode 100644 index c220d88d..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.cc +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ -/* - * Copyright (c) 1989, 1993 - * The Regents of the University of California. 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. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. - */ - - -/* nealsid: - * This file was copied from libc/gen/nlist.c from Darwin's source code - * The version of nlist used as a base is from 10.5.2, libc-498 - * http://www.opensource.apple.com/darwinsource/10.5.2/Libc-498/gen/nlist.c - * - * The full tarball is at: - * http://www.opensource.apple.com/darwinsource/tarballs/apsl/Libc-498.tar.gz - * - * I've modified it to be compatible with 64-bit images. However, - * 32-bit compatibility has not been retained. -*/ - -#ifdef __LP64__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "breakpad_nlist_64.h" -#include -#include -#include - -/* Stuff lifted from and since they are gone */ -/* - * Header prepended to each a.out file. - */ -struct exec { - unsigned short a_machtype; /* machine type */ - unsigned short a_magic; /* magic number */ - unsigned long a_text; /* size of text segment */ - unsigned long a_data; /* size of initialized data */ - unsigned long a_bss; /* size of uninitialized data */ - unsigned long a_syms; /* size of symbol table */ - unsigned long a_entry; /* entry point */ - unsigned long a_trsize; /* size of text relocation */ - unsigned long a_drsize; /* size of data relocation */ -}; - -#define OMAGIC 0407 /* old impure format */ -#define NMAGIC 0410 /* read-only text */ -#define ZMAGIC 0413 /* demand load format */ - -#define N_BADMAG(x) \ - (((x).a_magic)!=OMAGIC && ((x).a_magic)!=NMAGIC && ((x).a_magic)!=ZMAGIC) -#define N_TXTOFF(x) \ - ((x).a_magic==ZMAGIC ? 0 : sizeof (struct exec)) -#define N_SYMOFF(x) \ - (N_TXTOFF(x) + (x).a_text+(x).a_data + (x).a_trsize+(x).a_drsize) - -int -__breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames); - -/* - * nlist - retreive attributes from name list (string table version) - */ - -int -breakpad_nlist_64(const char *name, - breakpad_nlist *list, - const char **symbolNames) { - int fd, n; - - fd = open(name, O_RDONLY, 0); - if (fd < 0) - return (-1); - n = __breakpad_fdnlist_64(fd, list, symbolNames); - (void)close(fd); - return (n); -} - -/* Note: __fdnlist() is called from kvm_nlist in libkvm's kvm.c */ - -int -__breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) { - register breakpad_nlist *p, *q; - breakpad_nlist space[BUFSIZ/sizeof (breakpad_nlist)]; - - const register char *s1, *s2; - register int n, m; - int maxlen, nreq; - off_t sa; /* symbol address */ - off_t ss; /* start of strings */ - struct exec buf; - unsigned arch_offset = 0; - - maxlen = 500; - for (q = list, nreq = 0; - symbolNames[q-list] && symbolNames[q-list][0]; - q++, nreq++) { - - q->n_type = 0; - q->n_value = 0; - q->n_desc = 0; - q->n_sect = 0; - q->n_un.n_strx = 0; - } - - if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf) || - (N_BADMAG(buf) && *((long *)&buf) != MH_MAGIC && - NXSwapBigLongToHost(*((long *)&buf)) != FAT_MAGIC) && - /* nealsid: The following is the big-endian ppc64 check */ - (*((uint32_t*)&buf)) != FAT_MAGIC) { - return (-1); - } - - /* Deal with fat file if necessary */ - if (NXSwapBigLongToHost(*((long *)&buf)) == FAT_MAGIC || - /* nealsid: The following is the big-endian ppc64 check */ - *((int*)&buf) == FAT_MAGIC) { - struct host_basic_info hbi; - struct fat_header fh; - struct fat_arch *fat_archs, *fap; - unsigned i; - host_t host; - - /* Get our host info */ - host = mach_host_self(); - i = HOST_BASIC_INFO_COUNT; - kern_return_t kr; - if ((kr=host_info(host, HOST_BASIC_INFO, - (host_info_t)(&hbi), &i)) != KERN_SUCCESS) { - return (-1); - } - mach_port_deallocate(mach_task_self(), host); - - /* Read in the fat header */ - lseek(fd, 0, SEEK_SET); - if (read(fd, (char *)&fh, sizeof(fh)) != sizeof(fh)) { - return (-1); - } - - /* Convert fat_narchs to host byte order */ - fh.nfat_arch = NXSwapBigLongToHost(fh.nfat_arch); - - /* Read in the fat archs */ - fat_archs = (struct fat_arch *)malloc(fh.nfat_arch * - sizeof(struct fat_arch)); - if (fat_archs == NULL) { - return (-1); - } - if (read(fd, (char *)fat_archs, - sizeof(struct fat_arch) * fh.nfat_arch) != - sizeof(struct fat_arch) * fh.nfat_arch) { - free(fat_archs); - return (-1); - } - - /* - * Convert archs to host byte ordering (a constraint of - * cpusubtype_getbestarch() - */ - for (i = 0; i < fh.nfat_arch; i++) { - fat_archs[i].cputype = - NXSwapBigLongToHost(fat_archs[i].cputype); - fat_archs[i].cpusubtype = - NXSwapBigLongToHost(fat_archs[i].cpusubtype); - fat_archs[i].offset = - NXSwapBigLongToHost(fat_archs[i].offset); - fat_archs[i].size = - NXSwapBigLongToHost(fat_archs[i].size); - fat_archs[i].align = - NXSwapBigLongToHost(fat_archs[i].align); - } - - fap = NULL; - for (i = 0; i < fh.nfat_arch; i++) { - /* nealsid: Although the original Apple code uses host_info */ - /* to retrieve the CPU type, the host_info will still return */ - /* CPU_TYPE_X86 even if running as an x86_64 binary. Given that */ - /* this code isn't necessary on i386, I've decided to hardcode */ - /* looking for a 64-bit binary */ -#if TARGET_CPU_X86_64 - if (fat_archs[i].cputype == CPU_TYPE_X86_64) { -#elif TARGET_CPU_PPC64 - if (fat_archs[i].cputype == CPU_TYPE_POWERPC64) { -#else -#error undefined cpu! - { -#endif - fap = &fat_archs[i]; - break; - } - } - - if (!fap) { - free(fat_archs); - return (-1); - } - arch_offset = fap->offset; - free(fat_archs); - - /* Read in the beginning of the architecture-specific file */ - lseek(fd, arch_offset, SEEK_SET); - if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf)) { - return (-1); - } - } - - if (*((int *)&buf) == MH_MAGIC_64) { - struct mach_header_64 mh; - struct load_command *load_commands, *lcp; - struct symtab_command *stp; - long i; - - lseek(fd, arch_offset, SEEK_SET); - if (read(fd, (char *)&mh, sizeof(mh)) != sizeof(mh)) { - return (-1); - } - load_commands = (struct load_command *)malloc(mh.sizeofcmds); - if (load_commands == NULL) { - return (-1); - } - if (read(fd, (char *)load_commands, mh.sizeofcmds) != - mh.sizeofcmds) { - free(load_commands); - return (-1); - } - stp = NULL; - lcp = load_commands; - // nealsid:iterate through all load commands, looking for - // LC_SYMTAB load command - for (i = 0; i < mh.ncmds; i++) { - if (lcp->cmdsize % sizeof(long) != 0 || - lcp->cmdsize <= 0 || - (char *)lcp + lcp->cmdsize > - (char *)load_commands + mh.sizeofcmds) { - free(load_commands); - return (-1); - } - if (lcp->cmd == LC_SYMTAB) { - if (lcp->cmdsize != - sizeof(struct symtab_command)) { - free(load_commands); - return (-1); - } - stp = (struct symtab_command *)lcp; - break; - } - lcp = (struct load_command *) - ((char *)lcp + lcp->cmdsize); - } - if (stp == NULL) { - free(load_commands); - return (-1); - } - // sa points to the beginning of the symbol table - sa = stp->symoff + arch_offset; - // ss points to the beginning of the string table - ss = stp->stroff + arch_offset; - // n is the number of bytes in the symbol table - // each symbol table entry is an nlist structure - n = stp->nsyms * sizeof(breakpad_nlist); - free(load_commands); - } - else { - sa = N_SYMOFF(buf) + arch_offset; - ss = sa + buf.a_syms + arch_offset; - n = buf.a_syms; - } - - lseek(fd, sa, SEEK_SET); - - // the algorithm here is to read the nlist entries in m-sized - // chunks into q. q is then iterated over. for each entry in q, - // use the string table index(q->n_un.n_strx) to read the symbol - // name, then scan the nlist entries passed in by the user(via p), - // and look for a match - while (n) { - long savpos; - - m = sizeof (space); - if (n < m) - m = n; - if (read(fd, (char *)space, m) != m) - break; - n -= m; - savpos = lseek(fd, 0, SEEK_CUR); - for (q = space; (m -= sizeof(breakpad_nlist)) >= 0; q++) { - char nambuf[BUFSIZ]; - - if (q->n_un.n_strx == 0 || q->n_type & N_STAB) - continue; - - // seek to the location in the binary where the symbol - // name is stored & read it into memory - lseek(fd, ss+q->n_un.n_strx, SEEK_SET); - read(fd, nambuf, maxlen+1); - s2 = nambuf; - for (p = list; - symbolNames[p-list] && - symbolNames[p-list][0]; - p++) { - // get the symbol name the user has passed in that - // corresponds to the nlist entry that we're looking at - s1 = symbolNames[p - list]; - while (*s1) { - if (*s1++ != *s2++) - goto cont; - } - if (*s2) - goto cont; - - p->n_value = q->n_value; - p->n_type = q->n_type; - p->n_desc = q->n_desc; - p->n_sect = q->n_sect; - p->n_un.n_strx = q->n_un.n_strx; - if (--nreq == 0) - return (nreq); - - break; - cont: ; - } - } - lseek(fd, savpos, SEEK_SET); - } - return (nreq); - } - -#endif /* __LP64__ */ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.h deleted file mode 100644 index ee10afb9..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/breakpad_nlist_64.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// breakpad_nlist.h -// -// This file is meant to provide a header for clients of the modified -// nlist function implemented to work on 64-bit. - -#ifndef CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ - -typedef struct nlist_64 breakpad_nlist; - -int -breakpad_nlist_64(const char *name, - breakpad_nlist *list, - const char **symbolNames); - -#endif /* CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.cc deleted file mode 100644 index a2d62700..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.cc +++ /dev/null @@ -1,456 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -extern "C" { // needed to compile on Leopard - #include - #include - #include - #include -} - -#include "breakpad_nlist_64.h" -#include -#include -#include -#include "client/mac/handler/dynamic_images.h" - -namespace google_breakpad { - -//============================================================================== -// Returns the size of the memory region containing |address| and the -// number of bytes from |address| to the end of the region. -// We potentially, will extend the size of the original -// region by the size of the following region if it's contiguous with the -// first in order to handle cases when we're reading strings and they -// straddle two vm regions. -// -static mach_vm_size_t GetMemoryRegionSize(task_port_t target_task, - const void* address, - mach_vm_size_t *size_to_end) { - mach_vm_address_t region_base = (mach_vm_address_t)address; - mach_vm_size_t region_size; - natural_t nesting_level = 0; - vm_region_submap_info_64 submap_info; - mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64; - - // Get information about the vm region containing |address| - vm_region_recurse_info_t region_info; - region_info = reinterpret_cast(&submap_info); - - kern_return_t result = - mach_vm_region_recurse(target_task, - ®ion_base, - ®ion_size, - &nesting_level, - region_info, - &info_count); - - if (result == KERN_SUCCESS) { - // Get distance from |address| to the end of this region - *size_to_end = region_base + region_size -(mach_vm_address_t)address; - - // If we want to handle strings as long as 4096 characters we may need - // to check if there's a vm region immediately following the first one. - // If so, we need to extend |*size_to_end| to go all the way to the end - // of the second region. - if (*size_to_end < 4096) { - // Second region starts where the first one ends - mach_vm_address_t region_base2 = - (mach_vm_address_t)(region_base + region_size); - mach_vm_size_t region_size2; - - // Get information about the following vm region - result = - mach_vm_region_recurse(target_task, - ®ion_base2, - ®ion_size2, - &nesting_level, - region_info, - &info_count); - - // Extend region_size to go all the way to the end of the 2nd region - if (result == KERN_SUCCESS - && region_base2 == region_base + region_size) { - region_size += region_size2; - } - } - - *size_to_end = region_base + region_size -(mach_vm_address_t)address; - } else { - region_size = 0; - *size_to_end = 0; - } - - return region_size; -} - -#define kMaxStringLength 8192 -//============================================================================== -// Reads a NULL-terminated string from another task. -// -// Warning! This will not read any strings longer than kMaxStringLength-1 -// -static void* ReadTaskString(task_port_t target_task, - const void* address) { - // The problem is we don't know how much to read until we know how long - // the string is. And we don't know how long the string is, until we've read - // the memory! So, we'll try to read kMaxStringLength bytes - // (or as many bytes as we can until we reach the end of the vm region). - mach_vm_size_t size_to_end; - GetMemoryRegionSize(target_task, address, &size_to_end); - - if (size_to_end > 0) { - mach_vm_size_t size_to_read = - size_to_end > kMaxStringLength ? kMaxStringLength : size_to_end; - - kern_return_t kr; - return ReadTaskMemory(target_task, address, size_to_read, &kr); - } - - return NULL; -} - -//============================================================================== -// Reads an address range from another task. A block of memory is malloced -// and should be freed by the caller. -void* ReadTaskMemory(task_port_t target_task, - const void* address, - size_t length, - kern_return_t *kr) { - void* result = NULL; - int systemPageSize = getpagesize(); - - // use the negative of the page size for the mask to find the page address - mach_vm_address_t page_address = - reinterpret_cast(address) & (-systemPageSize); - - mach_vm_address_t last_page_address = - (reinterpret_cast(address) + length + - (systemPageSize - 1)) & (-systemPageSize); - - mach_vm_size_t page_size = last_page_address - page_address; - uint8_t* local_start; - uint32_t local_length; - - kern_return_t r; - - r = mach_vm_read(target_task, - page_address, - page_size, - reinterpret_cast(&local_start), - &local_length); - - - if (kr != NULL) { - *kr = r; - } - - if (r == KERN_SUCCESS) { - result = malloc(length); - if (result != NULL) { - memcpy(result, - &local_start[(mach_vm_address_t)address - page_address], - length); - } - mach_vm_deallocate(mach_task_self(), (uintptr_t)local_start, local_length); - } - - return result; -} - -#pragma mark - - -//============================================================================== -// Initializes vmaddr_, vmsize_, and slide_ -void DynamicImage::CalculateMemoryAndVersionInfo() { - breakpad_mach_header *header = GetMachHeader(); - - // unless we can process the header, ensure that calls to - // IsValid() will return false - vmaddr_ = 0; - vmsize_ = 0; - slide_ = 0; - version_ = 0; - - bool foundTextSection = false; - bool foundDylibIDCommand = false; - -#if __LP64__ - if(header->magic != MH_MAGIC_64) { - return; - } -#else - if(header->magic != MH_MAGIC) { - return; - } -#endif - - uint32_t versionSize = 0; -#ifdef __LP64__ - const uint32_t segmentLoadCommand = LC_SEGMENT_64; - char* sectVersion = getsectdatafromheader_64(header, SEG_DATA, "__version", &versionSize); -#else - const uint32_t segmentLoadCommand = LC_SEGMENT; - char* sectVersion = getsectdatafromheader(header, SEG_DATA, "__version", &versionSize); -#endif - - if (versionSize == 4) { - version_ = NXSwapHostLongToBig(*(unsigned long*)sectVersion); - } - - const struct load_command *cmd = - reinterpret_cast(header + 1); - - for (unsigned int i = 0; cmd && (i < header->ncmds); ++i) { - if (!foundTextSection) { - if (cmd->cmd == segmentLoadCommand) { - const breakpad_mach_segment_command *seg = - reinterpret_cast(cmd); - - if (!strcmp(seg->segname, "__TEXT")) { - vmaddr_ = seg->vmaddr; - vmsize_ = seg->vmsize; - slide_ = 0; - - if (seg->fileoff == 0 && seg->filesize != 0) { - slide_ = (uintptr_t)GetLoadAddress() - (uintptr_t)seg->vmaddr; - } - foundTextSection = true; - } - } - } - - if (!foundDylibIDCommand) { - if (cmd->cmd == LC_ID_DYLIB) { - const struct dylib_command *dc = - reinterpret_cast(cmd); - - version_ = dc->dylib.current_version; - foundDylibIDCommand = true; - } - } - - if (foundDylibIDCommand && foundTextSection) { - return; - } - - cmd = reinterpret_cast - (reinterpret_cast(cmd) + cmd->cmdsize); - } - -} - -void DynamicImage::Print() { - const char *path = GetFilePath(); - if (!path) { - path = "(unknown)"; - } - printf("%p: %s\n", GetLoadAddress(), path); - breakpad_mach_header *header = GetMachHeader(); - MachHeader(*header).Print(); - printf("vmaddr\t\t: %p\n", reinterpret_cast(GetVMAddr())); - printf("vmsize\t\t: %llu\n", GetVMSize()); - printf("slide\t\t: %td\n", GetVMAddrSlide()); -} - -#pragma mark - - -//============================================================================== -// Loads information about dynamically loaded code in the given task. -DynamicImages::DynamicImages(mach_port_t task) - : task_(task) { - ReadImageInfoForTask(); -} - -void* DynamicImages::GetDyldAllImageInfosPointer() -{ - - const char *imageSymbolName = "_dyld_all_image_infos"; - const char *dyldPath = "/usr/lib/dyld"; -#ifndef __LP64__ - struct nlist l[8]; - memset(l, 0, sizeof(l) ); - - // First we lookup the address of the "_dyld_all_image_infos" struct - // which lives in "dyld". This structure contains information about all - // of the loaded dynamic images. - struct nlist &list = l[0]; - list.n_un.n_name = const_cast(imageSymbolName); - nlist(dyldPath,&list); - if(list.n_value) { - return reinterpret_cast(list.n_value); - } - - return NULL; -#else - struct nlist_64 l[8]; - struct nlist_64 &list = l[0]; - - memset(l, 0, sizeof(l) ); - - const char *symbolNames[2] = { imageSymbolName, "\0" }; - - int invalidEntriesCount = breakpad_nlist_64(dyldPath,&list,symbolNames); - - if(invalidEntriesCount != 0) { - return NULL; - } - assert(list.n_value); - return reinterpret_cast(list.n_value); -#endif - -} -//============================================================================== -// This code was written using dyld_debug.c (from Darwin) as a guide. -void DynamicImages::ReadImageInfoForTask() { - void *imageList = GetDyldAllImageInfosPointer(); - - if (imageList) { - kern_return_t kr; - // Read the structure inside of dyld that contains information about - // loaded images. We're reading from the desired task's address space. - - // Here we make the assumption that dyld loaded at the same address in - // the crashed process vs. this one. This is an assumption made in - // "dyld_debug.c" and is said to be nearly always valid. - dyld_all_image_infos *dyldInfo = reinterpret_cast - (ReadTaskMemory(task_, - reinterpret_cast(imageList), - sizeof(dyld_all_image_infos), &kr)); - - if (dyldInfo) { - // number of loaded images - int count = dyldInfo->infoArrayCount; - - // Read an array of dyld_image_info structures each containing - // information about a loaded image. - dyld_image_info *infoArray = reinterpret_cast - (ReadTaskMemory(task_, - dyldInfo->infoArray, - count*sizeof(dyld_image_info), &kr)); - - image_list_.reserve(count); - - for (int i = 0; i < count; ++i) { - dyld_image_info &info = infoArray[i]; - - // First read just the mach_header from the image in the task. - breakpad_mach_header *header = reinterpret_cast - (ReadTaskMemory(task_, - info.load_address_, - sizeof(breakpad_mach_header), &kr)); - - if (!header) - break; // bail on this dynamic image - - // Now determine the total amount we really want to read based on the - // size of the load commands. We need the header plus all of the - // load commands. - unsigned int header_size = - sizeof(breakpad_mach_header) + header->sizeofcmds; - - free(header); - - header = reinterpret_cast - (ReadTaskMemory(task_, info.load_address_, header_size, &kr)); - - // Read the file name from the task's memory space. - char *file_path = NULL; - if (info.file_path_) { - // Although we're reading kMaxStringLength bytes, it's copied in the - // the DynamicImage constructor below with the correct string length, - // so it's not really wasting memory. - file_path = reinterpret_cast - (ReadTaskString(task_, info.file_path_)); - } - - // Create an object representing this image and add it to our list. - DynamicImage *new_image; - new_image = new DynamicImage(header, - header_size, - (breakpad_mach_header*)info.load_address_, - file_path, - info.file_mod_date_, - task_); - - if (new_image->IsValid()) { - image_list_.push_back(DynamicImageRef(new_image)); - } else { - delete new_image; - } - - if (file_path) { - free(file_path); - } - } - - free(dyldInfo); - free(infoArray); - - // sorts based on loading address - sort(image_list_.begin(), image_list_.end() ); - // remove duplicates - this happens in certain strange cases - // You can see it in DashboardClient when Google Gadgets plugin - // is installed. Apple's crash reporter log and gdb "info shared" - // both show the same library multiple times at the same address - - vector::iterator it = unique(image_list_.begin(), - image_list_.end() ); - image_list_.erase(it, image_list_.end()); - } - } -} - -//============================================================================== -DynamicImage *DynamicImages::GetExecutableImage() { - int executable_index = GetExecutableImageIndex(); - - if (executable_index >= 0) { - return GetImage(executable_index); - } - - return NULL; -} - -//============================================================================== -// returns -1 if failure to find executable -int DynamicImages::GetExecutableImageIndex() { - int image_count = GetImageCount(); - - for (int i = 0; i < image_count; ++i) { - DynamicImage *image = GetImage(i); - if (image->GetMachHeader()->filetype == MH_EXECUTE) { - return i; - } - } - - return -1; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.h deleted file mode 100644 index 85ba8cf9..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/dynamic_images.h +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dynamic_images.h -// -// Implements most of the function of the dyld API, but allowing an -// arbitrary task to be introspected, unlike the dyld API which -// only allows operation on the current task. The current implementation -// is limited to use by 32-bit tasks. - -#ifndef CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ -#define CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ - -#include -#include -#include -#include -#include - -namespace google_breakpad { - -using std::vector; - -//============================================================================== -// The memory layout of this struct matches the dyld_image_info struct -// defined in "dyld_gdb.h" in the darwin source. -typedef struct dyld_image_info { - struct mach_header *load_address_; - char *file_path_; - uintptr_t file_mod_date_; -} dyld_image_info; - -//============================================================================== -// This is as defined in "dyld_gdb.h" in the darwin source. -// _dyld_all_image_infos (in dyld) is a structure of this type -// which will be used to determine which dynamic code has been loaded. -typedef struct dyld_all_image_infos { - uint32_t version; // == 1 in Mac OS X 10.4 - uint32_t infoArrayCount; - const struct dyld_image_info *infoArray; - void* notification; - bool processDetachedFromSharedRegion; -} dyld_all_image_infos; - -// some typedefs to isolate 64/32 bit differences -#ifdef __LP64__ -typedef mach_header_64 breakpad_mach_header; -typedef segment_command_64 breakpad_mach_segment_command; -#else -typedef mach_header breakpad_mach_header; -typedef segment_command breakpad_mach_segment_command; -#endif - -//============================================================================== -// A simple wrapper for a mach_header -// -// This could be fleshed out with some more interesting methods. -class MachHeader { - public: - explicit MachHeader(const breakpad_mach_header &header) : header_(header) {} - - void Print() { - printf("magic\t\t: %4x\n", header_.magic); - printf("cputype\t\t: %d\n", header_.cputype); - printf("cpusubtype\t: %d\n", header_.cpusubtype); - printf("filetype\t: %d\n", header_.filetype); - printf("ncmds\t\t: %d\n", header_.ncmds); - printf("sizeofcmds\t: %d\n", header_.sizeofcmds); - printf("flags\t\t: %d\n", header_.flags); - } - - breakpad_mach_header header_; -}; - -//============================================================================== -// Represents a single dynamically loaded mach-o image -class DynamicImage { - public: - DynamicImage(breakpad_mach_header *header, // we take ownership - int header_size, // includes load commands - breakpad_mach_header *load_address, - char *inFilePath, - uintptr_t image_mod_date, - mach_port_t task) - : header_(header), - header_size_(header_size), - load_address_(load_address), - file_mod_date_(image_mod_date), - task_(task) { - InitializeFilePath(inFilePath); - CalculateMemoryAndVersionInfo(); - } - - ~DynamicImage() { - if (file_path_) { - free(file_path_); - } - free(header_); - } - - // Returns pointer to a local copy of the mach_header plus load commands - breakpad_mach_header *GetMachHeader() {return header_;} - - // Size of mach_header plus load commands - int GetHeaderSize() const {return header_size_;} - - // Full path to mach-o binary - char *GetFilePath() {return file_path_;} - - uintptr_t GetModDate() const {return file_mod_date_;} - - // Actual address where the image was loaded - breakpad_mach_header *GetLoadAddress() const {return load_address_;} - - // Address where the image should be loaded - mach_vm_address_t GetVMAddr() const {return vmaddr_;} - - // Difference between GetLoadAddress() and GetVMAddr() - ptrdiff_t GetVMAddrSlide() const {return slide_;} - - // Size of the image - mach_vm_size_t GetVMSize() const {return vmsize_;} - - // Task owning this loaded image - mach_port_t GetTask() {return task_;} - - uint32_t GetVersion() {return version_;} - // For sorting - bool operator<(const DynamicImage &inInfo) { - return GetLoadAddress() < inInfo.GetLoadAddress(); - } - - // Debugging - void Print(); - - private: - friend class DynamicImages; - - // Sanity checking - bool IsValid() {return GetVMSize() != 0;} - - // Makes local copy of file path to mach-o binary - void InitializeFilePath(char *inFilePath) { - if (inFilePath) { - size_t path_size = 1 + strlen(inFilePath); - file_path_ = reinterpret_cast(malloc(path_size)); - strlcpy(file_path_, inFilePath, path_size); - } else { - file_path_ = NULL; - } - } - - // Initializes vmaddr_, vmsize_, and slide_ - void CalculateMemoryAndVersionInfo(); - - breakpad_mach_header *header_; // our local copy of the header - int header_size_; // mach_header plus load commands - breakpad_mach_header *load_address_; // base address image is mapped into - mach_vm_address_t vmaddr_; - mach_vm_size_t vmsize_; - ptrdiff_t slide_; - uint32_t version_; // Dylib version - char *file_path_; // path dyld used to load the image - uintptr_t file_mod_date_; // time_t of image file - - mach_port_t task_; -}; - -//============================================================================== -// DynamicImageRef is just a simple wrapper for a pointer to -// DynamicImage. The reason we use it instead of a simple typedef is so -// that we can use stl::sort() on a vector of DynamicImageRefs -// and simple class pointers can't implement operator<(). -// -class DynamicImageRef { - public: - explicit DynamicImageRef(DynamicImage *inP) : p(inP) {} - // The copy constructor is required by STL - DynamicImageRef(const DynamicImageRef &inRef) : p(inRef.p) {} - - bool operator<(const DynamicImageRef &inRef) const { - return (*const_cast(this)->p) - < (*const_cast(inRef).p); - } - - bool operator==(const DynamicImageRef &inInfo) const { - return (*const_cast(this)->p).GetLoadAddress() == - (*const_cast(inInfo)).GetLoadAddress(); - } - - // Be just like DynamicImage* - DynamicImage *operator->() {return p;} - operator DynamicImage*() {return p;} - - private: - DynamicImage *p; -}; - -//============================================================================== -// An object of type DynamicImages may be created to allow introspection of -// an arbitrary task's dynamically loaded mach-o binaries. This makes the -// assumption that the current task has send rights to the target task. -class DynamicImages { - public: - explicit DynamicImages(mach_port_t task); - - ~DynamicImages() { - for (int i = 0; i < (int)image_list_.size(); ++i) { - delete image_list_[i]; - } - } - - // Returns the number of dynamically loaded mach-o images. - int GetImageCount() const {return image_list_.size();} - - // Returns an individual image. - DynamicImage *GetImage(int i) { - if (i < (int)image_list_.size()) { - return image_list_[i]; - } - return NULL; - } - - // Returns the image corresponding to the main executable. - DynamicImage *GetExecutableImage(); - int GetExecutableImageIndex(); - - // Returns the task which we're looking at. - mach_port_t GetTask() const {return task_;} - - // Debugging - void Print() { - for (int i = 0; i < (int)image_list_.size(); ++i) { - image_list_[i]->Print(); - } - } - - void TestPrint() { - const breakpad_mach_header *header; - for (int i = 0; i < (int)image_list_.size(); ++i) { - printf("dyld: %p: name = %s\n", _dyld_get_image_header(i), - _dyld_get_image_name(i) ); - - const void *imageHeader = _dyld_get_image_header(i); - header = reinterpret_cast(imageHeader); - - MachHeader(*header).Print(); - } - } - - private: - bool IsOurTask() {return task_ == mach_task_self();} - - // Initialization - void ReadImageInfoForTask(); - void* GetDyldAllImageInfosPointer(); - - mach_port_t task_; - vector image_list_; -}; - -// Returns a malloced block containing the contents of memory at a particular -// location in another task. -void* ReadTaskMemory(task_port_t target_task, - const void* address, - size_t len, - kern_return_t *kr); - -} // namespace google_breakpad - -#endif // CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.cc deleted file mode 100644 index 60fde473..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.cc +++ /dev/null @@ -1,722 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include - -#include "client/mac/handler/exception_handler.h" -#include "client/mac/handler/minidump_generator.h" -#include "common/mac/macho_utilities.h" - -#ifndef USE_PROTECTED_ALLOCATIONS -#define USE_PROTECTED_ALLOCATIONS 0 -#endif - -// If USE_PROTECTED_ALLOCATIONS is activated then the -// gBreakpadAllocator needs to be setup in other code -// ahead of time. Please see ProtectedMemoryAllocator.h -// for more details. -#if USE_PROTECTED_ALLOCATIONS - #include "protected_memory_allocator.h" - extern ProtectedMemoryAllocator *gBreakpadAllocator; -#endif - - -namespace google_breakpad { - -using std::map; - -// These structures and techniques are illustrated in -// Mac OS X Internals, Amit Singh, ch 9.7 -struct ExceptionMessage { - mach_msg_header_t header; - mach_msg_body_t body; - mach_msg_port_descriptor_t thread; - mach_msg_port_descriptor_t task; - NDR_record_t ndr; - exception_type_t exception; - mach_msg_type_number_t code_count; - integer_t code[EXCEPTION_CODE_MAX]; - char padding[512]; -}; - -struct ExceptionParameters { - ExceptionParameters() : count(0) {} - mach_msg_type_number_t count; - exception_mask_t masks[EXC_TYPES_COUNT]; - mach_port_t ports[EXC_TYPES_COUNT]; - exception_behavior_t behaviors[EXC_TYPES_COUNT]; - thread_state_flavor_t flavors[EXC_TYPES_COUNT]; -}; - -struct ExceptionReplyMessage { - mach_msg_header_t header; - NDR_record_t ndr; - kern_return_t return_code; -}; - -// Only catch these three exceptions. The other ones are nebulously defined -// and may result in treating a non-fatal exception as fatal. -exception_mask_t s_exception_mask = EXC_MASK_BAD_ACCESS | -EXC_MASK_BAD_INSTRUCTION | EXC_MASK_ARITHMETIC | EXC_MASK_BREAKPOINT; - -extern "C" -{ - // Forward declarations for functions that need "C" style compilation - boolean_t exc_server(mach_msg_header_t *request, - mach_msg_header_t *reply); - - kern_return_t catch_exception_raise(mach_port_t target_port, - mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count); - - kern_return_t ForwardException(mach_port_t task, - mach_port_t failed_thread, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count); - - kern_return_t exception_raise(mach_port_t target_port, - mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t exception_code, - mach_msg_type_number_t exception_code_count); - - kern_return_t - exception_raise_state(mach_port_t target_port, - mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t exception_code, - mach_msg_type_number_t code_count, - thread_state_flavor_t *target_flavor, - thread_state_t thread_state, - mach_msg_type_number_t thread_state_count, - thread_state_t thread_state, - mach_msg_type_number_t *thread_state_count); - - kern_return_t - exception_raise_state_identity(mach_port_t target_port, - mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t exception_code, - mach_msg_type_number_t exception_code_count, - thread_state_flavor_t *target_flavor, - thread_state_t thread_state, - mach_msg_type_number_t thread_state_count, - thread_state_t thread_state, - mach_msg_type_number_t *thread_state_count); - - kern_return_t breakpad_exception_raise_state(mach_port_t exception_port, - exception_type_t exception, - const exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - const thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt - ); - - kern_return_t breakpad_exception_raise_state_identity(mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt - ); - - kern_return_t breakpad_exception_raise(mach_port_t port, mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count); -} - - - -kern_return_t breakpad_exception_raise_state(mach_port_t exception_port, - exception_type_t exception, - const exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - const thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt - ) -{ - return KERN_SUCCESS; -} - -kern_return_t breakpad_exception_raise_state_identity(mach_port_t exception_port, - mach_port_t thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t codeCnt, - int *flavor, - thread_state_t old_state, - mach_msg_type_number_t old_stateCnt, - thread_state_t new_state, - mach_msg_type_number_t *new_stateCnt - ) -{ - return KERN_SUCCESS; -} - -kern_return_t breakpad_exception_raise(mach_port_t port, mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count) { - - if (task != mach_task_self()) { - return KERN_FAILURE; - } - return ForwardException(task, failed_thread, exception, code, code_count); -} - - -ExceptionHandler::ExceptionHandler(const string &dump_path, - FilterCallback filter, - MinidumpCallback callback, - void *callback_context, - bool install_handler) - : dump_path_(), - filter_(filter), - callback_(callback), - callback_context_(callback_context), - directCallback_(NULL), - handler_thread_(NULL), - handler_port_(MACH_PORT_NULL), - previous_(NULL), - installed_exception_handler_(false), - is_in_teardown_(false), - last_minidump_write_result_(false), - use_minidump_write_mutex_(false) { - // This will update to the ID and C-string pointers - set_dump_path(dump_path); - MinidumpGenerator::GatherSystemInformation(); - Setup(install_handler); -} - -// special constructor if we want to bypass minidump writing and -// simply get a callback with the exception information -ExceptionHandler::ExceptionHandler(DirectCallback callback, - void *callback_context, - bool install_handler) - : dump_path_(), - filter_(NULL), - callback_(NULL), - callback_context_(callback_context), - directCallback_(callback), - handler_thread_(NULL), - handler_port_(MACH_PORT_NULL), - previous_(NULL), - installed_exception_handler_(false), - is_in_teardown_(false), - last_minidump_write_result_(false), - use_minidump_write_mutex_(false) { - MinidumpGenerator::GatherSystemInformation(); - Setup(install_handler); -} - -ExceptionHandler::~ExceptionHandler() { - Teardown(); -} - -bool ExceptionHandler::WriteMinidump() { - // If we're currently writing, just return - if (use_minidump_write_mutex_) - return false; - - use_minidump_write_mutex_ = true; - last_minidump_write_result_ = false; - - // Lock the mutex. Since we just created it, this will return immediately. - if (pthread_mutex_lock(&minidump_write_mutex_) == 0) { - // Send an empty message to the handle port so that a minidump will - // be written - SendEmptyMachMessage(); - - // Wait for the minidump writer to complete its writing. It will unlock - // the mutex when completed - pthread_mutex_lock(&minidump_write_mutex_); - } - - use_minidump_write_mutex_ = false; - UpdateNextID(); - return last_minidump_write_result_; -} - -// static -bool ExceptionHandler::WriteMinidump(const string &dump_path, - MinidumpCallback callback, - void *callback_context) { - ExceptionHandler handler(dump_path, NULL, callback, callback_context, false); - return handler.WriteMinidump(); -} - -bool ExceptionHandler::WriteMinidumpWithException(int exception_type, - int exception_code, - mach_port_t thread_name) { - bool result = false; - - if (directCallback_) { - if (directCallback_(callback_context_, - exception_type, - exception_code, - thread_name) ) { - if (exception_type && exception_code) - _exit(exception_type); - } - } else { - string minidump_id; - - // Putting the MinidumpGenerator in its own context will ensure that the - // destructor is executed, closing the newly created minidump file. - if (!dump_path_.empty()) { - MinidumpGenerator md; - if (exception_type && exception_code) { - // If this is a real exception, give the filter (if any) a chance to - // decided if this should be sent - if (filter_ && !filter_(callback_context_)) - return false; - - md.SetExceptionInformation(exception_type, exception_code, thread_name); - } - - result = md.Write(next_minidump_path_c_); - } - - // Call user specified callback (if any) - if (callback_) { - // If the user callback returned true and we're handling an exception - // (rather than just writing out the file), then we should exit without - // forwarding the exception to the next handler. - if (callback_(dump_path_c_, next_minidump_id_c_, callback_context_, - result)) { - if (exception_type && exception_code) - _exit(exception_type); - } - } - } - - return result; -} - -kern_return_t ForwardException(mach_port_t task, mach_port_t failed_thread, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count) { - // At this time, we should have called Uninstall() on the exception handler - // so that the current exception ports are the ones that we should be - // forwarding to. - ExceptionParameters current; - - current.count = EXC_TYPES_COUNT; - mach_port_t current_task = mach_task_self(); - kern_return_t result = task_get_exception_ports(current_task, - s_exception_mask, - current.masks, - ¤t.count, - current.ports, - current.behaviors, - current.flavors); - - // Find the first exception handler that matches the exception - unsigned int found; - for (found = 0; found < current.count; ++found) { - if (current.masks[found] & (1 << exception)) { - break; - } - } - - // Nothing to forward - if (found == current.count) { - fprintf(stderr, "** No previous ports for forwarding!! \n"); - exit(KERN_FAILURE); - } - - mach_port_t target_port = current.ports[found]; - exception_behavior_t target_behavior = current.behaviors[found]; - thread_state_flavor_t target_flavor = current.flavors[found]; - - mach_msg_type_number_t thread_state_count = THREAD_STATE_MAX; - breakpad_thread_state_data_t thread_state; - switch (target_behavior) { - case EXCEPTION_DEFAULT: - result = exception_raise(target_port, failed_thread, task, exception, - code, code_count); - break; - - case EXCEPTION_STATE: - result = thread_get_state(failed_thread, target_flavor, thread_state, - &thread_state_count); - if (result == KERN_SUCCESS) - result = exception_raise_state(target_port, failed_thread, task, - exception, code, - code_count, &target_flavor, - thread_state, thread_state_count, - thread_state, &thread_state_count); - if (result == KERN_SUCCESS) - result = thread_set_state(failed_thread, target_flavor, thread_state, - thread_state_count); - break; - - case EXCEPTION_STATE_IDENTITY: - result = thread_get_state(failed_thread, target_flavor, thread_state, - &thread_state_count); - if (result == KERN_SUCCESS) - result = exception_raise_state_identity(target_port, failed_thread, - task, exception, code, - code_count, &target_flavor, - thread_state, - thread_state_count, - thread_state, - &thread_state_count); - if (result == KERN_SUCCESS) - result = thread_set_state(failed_thread, target_flavor, thread_state, - thread_state_count); - break; - - default: - fprintf(stderr, "** Unknown exception behavior\n"); - result = KERN_FAILURE; - break; - } - - return result; -} - -// Callback from exc_server() -kern_return_t catch_exception_raise(mach_port_t port, mach_port_t failed_thread, - mach_port_t task, - exception_type_t exception, - exception_data_t code, - mach_msg_type_number_t code_count) { - return ForwardException(task, failed_thread, exception, code, code_count); -} - -// static -void *ExceptionHandler::WaitForMessage(void *exception_handler_class) { - ExceptionHandler *self = - reinterpret_cast(exception_handler_class); - ExceptionMessage receive; - - // Wait for the exception info - while (1) { - receive.header.msgh_local_port = self->handler_port_; - receive.header.msgh_size = sizeof(receive); - kern_return_t result = mach_msg(&(receive.header), - MACH_RCV_MSG | MACH_RCV_LARGE, 0, - sizeof(receive), self->handler_port_, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); - - - if (result == KERN_SUCCESS) { - // Uninstall our handler so that we don't get in a loop if the process of - // writing out a minidump causes an exception. However, if the exception - // was caused by a fork'd process, don't uninstall things - - // If the actual exception code is zero, then we're calling this handler - // in a way that indicates that we want to either exit this thread or - // generate a minidump - // - // While reporting, all threads (except this one) must be suspended - // to avoid misleading stacks. If appropriate they will be resumed - // afterwards. - if (!receive.exception) { - if (self->is_in_teardown_) - return NULL; - - self->SuspendThreads(); - -#if USE_PROTECTED_ALLOCATIONS - if(gBreakpadAllocator) - gBreakpadAllocator->Unprotect(); -#endif - - // Write out the dump and save the result for later retrieval - self->last_minidump_write_result_ = - self->WriteMinidumpWithException(0, 0, 0); - - self->UninstallHandler(false); - -#if USE_PROTECTED_ALLOCATIONS - if(gBreakpadAllocator) - gBreakpadAllocator->Protect(); -#endif - - self->ResumeThreads(); - - if (self->use_minidump_write_mutex_) - pthread_mutex_unlock(&self->minidump_write_mutex_); - } else { - - // When forking a child process with the exception handler installed, - // if the child crashes, it will send the exception back to the parent - // process. The check for task == self_task() ensures that only - // exceptions that occur in the parent process are caught and - // processed. If the exception was not caused by this task, we - // still need to call into the exception server and have it return - // KERN_FAILURE (see breakpad_exception_raise) in order for the kernel - // to move onto the host exception handler for the child task - if (receive.task.name == mach_task_self()) { - self->SuspendThreads(); - -#if USE_PROTECTED_ALLOCATIONS - if(gBreakpadAllocator) - gBreakpadAllocator->Unprotect(); -#endif - - // Generate the minidump with the exception data. - self->WriteMinidumpWithException(receive.exception, receive.code[0], - receive.thread.name); - - self->UninstallHandler(true); - -#if USE_PROTECTED_ALLOCATIONS - if(gBreakpadAllocator) - gBreakpadAllocator->Protect(); -#endif - } - // Pass along the exception to the server, which will setup the - // message and call breakpad_exception_raise() and put the return - // code into the reply. - ExceptionReplyMessage reply; - if (!exc_server(&receive.header, &reply.header)) - exit(1); - - // Send a reply and exit - result = mach_msg(&(reply.header), MACH_SEND_MSG, - reply.header.msgh_size, 0, MACH_PORT_NULL, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); - } - } - } - - return NULL; -} - -bool ExceptionHandler::InstallHandler() { - try { -#if USE_PROTECTED_ALLOCATIONS - previous_ = new (gBreakpadAllocator->Allocate(sizeof(ExceptionParameters)) ) - ExceptionParameters(); -#else - previous_ = new ExceptionParameters(); -#endif - - } - catch (std::bad_alloc) { - return false; - } - - // Save the current exception ports so that we can forward to them - previous_->count = EXC_TYPES_COUNT; - mach_port_t current_task = mach_task_self(); - kern_return_t result = task_get_exception_ports(current_task, - s_exception_mask, - previous_->masks, - &previous_->count, - previous_->ports, - previous_->behaviors, - previous_->flavors); - - // Setup the exception ports on this task - if (result == KERN_SUCCESS) - result = task_set_exception_ports(current_task, s_exception_mask, - handler_port_, EXCEPTION_DEFAULT, - THREAD_STATE_NONE); - - installed_exception_handler_ = (result == KERN_SUCCESS); - - return installed_exception_handler_; -} - -bool ExceptionHandler::UninstallHandler(bool in_exception) { - kern_return_t result = KERN_SUCCESS; - - if (installed_exception_handler_) { - mach_port_t current_task = mach_task_self(); - - // Restore the previous ports - for (unsigned int i = 0; i < previous_->count; ++i) { - result = task_set_exception_ports(current_task, previous_->masks[i], - previous_->ports[i], - previous_->behaviors[i], - previous_->flavors[i]); - if (result != KERN_SUCCESS) - return false; - } - - // this delete should NOT happen if an exception just occurred! - if (!in_exception) { -#if USE_PROTECTED_ALLOCATIONS - previous_->~ExceptionParameters(); -#else - delete previous_; -#endif - } - - previous_ = NULL; - installed_exception_handler_ = false; - } - - return result == KERN_SUCCESS; -} - -bool ExceptionHandler::Setup(bool install_handler) { - if (pthread_mutex_init(&minidump_write_mutex_, NULL)) - return false; - - // Create a receive right - mach_port_t current_task = mach_task_self(); - kern_return_t result = mach_port_allocate(current_task, - MACH_PORT_RIGHT_RECEIVE, - &handler_port_); - // Add send right - if (result == KERN_SUCCESS) - result = mach_port_insert_right(current_task, handler_port_, handler_port_, - MACH_MSG_TYPE_MAKE_SEND); - - if (install_handler && result == KERN_SUCCESS) - if (!InstallHandler()) - return false; - - if (result == KERN_SUCCESS) { - // Install the handler in its own thread, detached as we won't be joining. - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - int thread_create_result = pthread_create(&handler_thread_, &attr, - &WaitForMessage, this); - pthread_attr_destroy(&attr); - result = thread_create_result ? KERN_FAILURE : KERN_SUCCESS; - } - - return result == KERN_SUCCESS ? true : false; -} - -bool ExceptionHandler::Teardown() { - kern_return_t result = KERN_SUCCESS; - is_in_teardown_ = true; - - if (!UninstallHandler(false)) - return false; - - // Send an empty message so that the handler_thread exits - if (SendEmptyMachMessage()) { - mach_port_t current_task = mach_task_self(); - result = mach_port_deallocate(current_task, handler_port_); - if (result != KERN_SUCCESS) - return false; - } else { - return false; - } - - handler_thread_ = NULL; - handler_port_ = NULL; - pthread_mutex_destroy(&minidump_write_mutex_); - - return result == KERN_SUCCESS; -} - -bool ExceptionHandler::SendEmptyMachMessage() { - ExceptionMessage empty; - memset(&empty, 0, sizeof(empty)); - empty.header.msgh_size = sizeof(empty) - sizeof(empty.padding); - empty.header.msgh_remote_port = handler_port_; - empty.header.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, - MACH_MSG_TYPE_MAKE_SEND_ONCE); - kern_return_t result = mach_msg(&(empty.header), - MACH_SEND_MSG | MACH_SEND_TIMEOUT, - empty.header.msgh_size, 0, 0, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); - - return result == KERN_SUCCESS; -} - -void ExceptionHandler::UpdateNextID() { - next_minidump_path_ = - (MinidumpGenerator::UniqueNameInDirectory(dump_path_, &next_minidump_id_)); - - next_minidump_path_c_ = next_minidump_path_.c_str(); - next_minidump_id_c_ = next_minidump_id_.c_str(); -} - -bool ExceptionHandler::SuspendThreads() { - thread_act_port_array_t threads_for_task; - mach_msg_type_number_t thread_count; - - if (task_threads(mach_task_self(), &threads_for_task, &thread_count)) - return false; - - // suspend all of the threads except for this one - for (unsigned int i = 0; i < thread_count; ++i) { - if (threads_for_task[i] != mach_thread_self()) { - if (thread_suspend(threads_for_task[i])) - return false; - } - } - - return true; -} - -bool ExceptionHandler::ResumeThreads() { - thread_act_port_array_t threads_for_task; - mach_msg_type_number_t thread_count; - - if (task_threads(mach_task_self(), &threads_for_task, &thread_count)) - return false; - - // resume all of the threads except for this one - for (unsigned int i = 0; i < thread_count; ++i) { - if (threads_for_task[i] != mach_thread_self()) { - if (thread_resume(threads_for_task[i])) - return false; - } - } - - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.h deleted file mode 100644 index 2a8ee1e4..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler.h +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// exception_handler.h: MacOS exception handler -// This class can install a Mach exception port handler to trap most common -// programming errors. If an exception occurs, a minidump file will be -// generated which contains detailed information about the process and the -// exception. - -#ifndef CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ - -#include - -#include - -namespace google_breakpad { - -using std::string; - -struct ExceptionParameters; - -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, Breakpad - // will immediately report the exception as unhandled without writing a - // minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void *context); - - // A callback function to run after the minidump has been written. - // |minidump_id| is a unique id for the dump, so the minidump - // file is /.dmp. - // |context| is the value passed into the constructor. - // |succeeded| indicates whether a minidump file was successfully written. - // Return true if the exception was fully handled and breakpad should exit. - // Return false to allow any other exception handlers to process the - // exception. - typedef bool (*MinidumpCallback)(const char *dump_dir, - const char *minidump_id, - void *context, bool succeeded); - - // A callback function which will be called directly if an exception occurs. - // This bypasses the minidump file writing and simply gives the client - // the exception information. - typedef bool (*DirectCallback)( void *context, - int exception_type, - int exception_code, - mach_port_t thread_name); - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Minidump files will be written to dump_path, and the optional callback - // is called after writing the dump file, as described above. - // If install_handler is true, then a minidump will be written whenever - // an unhandled exception occurs. If it is false, minidumps will only - // be written when WriteMinidump is called. - ExceptionHandler(const string &dump_path, - FilterCallback filter, MinidumpCallback callback, - void *callback_context, bool install_handler); - - // A special constructor if we want to bypass minidump writing and - // simply get a callback with the exception information. - ExceptionHandler(DirectCallback callback, - void *callback_context, - bool install_handler); - - ~ExceptionHandler(); - - // Get and set the minidump path. - string dump_path() const { return dump_path_; } - void set_dump_path(const string &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - UpdateNextID(); // Necessary to put dump_path_ in next_minidump_path_. - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const string &dump_path, MinidumpCallback callback, - void *callback_context); - - private: - // Install the mach exception handler - bool InstallHandler(); - - // Uninstall the mach exception handler (if any) - bool UninstallHandler(bool in_exception); - - // Setup the handler thread, and if |install_handler| is true, install the - // mach exception port handler - bool Setup(bool install_handler); - - // Uninstall the mach exception handler (if any) and terminate the helper - // thread - bool Teardown(); - - // Send an "empty" mach message to the exception handler. Return true on - // success, false otherwise - bool SendEmptyMachMessage(); - - // All minidump writing goes through this one routine - bool WriteMinidumpWithException(int exception_type, int exception_code, - mach_port_t thread_name); - - // When installed, this static function will be call from a newly created - // pthread with |this| as the argument - static void *WaitForMessage(void *exception_handler_class); - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); - - // Generates a new ID and stores it in next_minidump_id_, and stores the - // path of the next minidump to be written in next_minidump_path_. - void UpdateNextID(); - - // These functions will suspend/resume all threads except for the - // reporting thread - bool SuspendThreads(); - bool ResumeThreads(); - - // The destination directory for the minidump - string dump_path_; - - // The basename of the next minidump w/o extension - string next_minidump_id_; - - // The full path to the next minidump to be written, including extension - string next_minidump_path_; - - // Pointers to the UTF-8 versions of above - const char *dump_path_c_; - const char *next_minidump_id_c_; - const char *next_minidump_path_c_; - - // The callback function and pointer to be passed back after the minidump - // has been written - FilterCallback filter_; - MinidumpCallback callback_; - void *callback_context_; - - // The callback function to be passed back when we don't want a minidump - // file to be written - DirectCallback directCallback_; - - // The thread that is created for the handler - pthread_t handler_thread_; - - // The port that is waiting on an exception message to be sent, if the - // handler is installed - mach_port_t handler_port_; - - // These variables save the previous exception handler's data so that it - // can be re-installed when this handler is uninstalled - ExceptionParameters *previous_; - - // True, if we've installed the exception handler - bool installed_exception_handler_; - - // True, if we're in the process of uninstalling the exception handler and - // the thread. - bool is_in_teardown_; - - // Save the last result of the last minidump - bool last_minidump_write_result_; - - // A mutex for use when writing out a minidump that was requested on a - // thread other than the exception handler. - pthread_mutex_t minidump_write_mutex_; - - // True, if we're using the mutext to indicate when mindump writing occurs - bool use_minidump_write_mutex_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler_test.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler_test.cc deleted file mode 100644 index 59944377..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/exception_handler_test.cc +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -/* -g++ -framework CoreFoundation -I../../.. \ - ../../minidump_file_writer.cc \ - ../../../common/convert_UTF.c \ - ../../../common/string_conversion.cc \ - ../../../common/mac/string_utilities.cc \ - exception_handler.cc \ - minidump_generator.cc \ - exception_handler_test.cc \ - -o exception_handler_test -*/ - -#include -#include -#include - -#include - -#include "exception_handler.h" -#include "minidump_generator.h" - -using std::string; -using google_breakpad::ExceptionHandler; - -static void *SleepyFunction(void *) { - while (1) { - sleep(10000); - } -} - -static void Crasher() { - int *a = NULL; - - fprintf(stdout, "Going to crash...\n"); - fprintf(stdout, "A = %d", *a); -} - -static void SoonToCrash() { - Crasher(); -} - -bool MDCallback(const char *dump_dir, const char *file_name, - void *context, bool success) { - string path(dump_dir); - string dest(dump_dir); - path.append(file_name); - path.append(".dmp"); - - fprintf(stdout, "Minidump: %s\n", path.c_str()); - // Indicate that we've handled the callback - return true; -} - -int main(int argc, char * const argv[]) { - char buffer[PATH_MAX]; - struct passwd *user = getpwuid(getuid()); - - // Home dir - snprintf(buffer, sizeof(buffer), "/Users/%s/Desktop/", user->pw_name); - - string path(buffer); - ExceptionHandler eh(path, NULL, MDCallback, NULL, true); - pthread_t t; - - if (pthread_create(&t, NULL, SleepyFunction, NULL) == 0) { - pthread_detach(t); - } else { - perror("pthread_create"); - } - - // Dump a test - eh.WriteMinidump(); - - // Test the handler - SoonToCrash(); - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.cc deleted file mode 100644 index e6ebce4f..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.cc +++ /dev/null @@ -1,989 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "client/mac/handler/minidump_generator.h" -#include "client/minidump_file_writer-inl.h" -#include "common/mac/file_id.h" -#include "common/mac/string_utilities.h" - -using MacStringUtils::ConvertToString; -using MacStringUtils::IntegerValueAtIndex; - -namespace google_breakpad { - -// constructor when generating from within the crashed process -MinidumpGenerator::MinidumpGenerator() - : exception_type_(0), - exception_code_(0), - exception_thread_(0), - crashing_task_(mach_task_self()), - handler_thread_(mach_thread_self()), - dynamic_images_(NULL) { - GatherSystemInformation(); -} - -// constructor when generating from a different process than the -// crashed process -MinidumpGenerator::MinidumpGenerator(mach_port_t crashing_task, - mach_port_t handler_thread) - : exception_type_(0), - exception_code_(0), - exception_thread_(0), - crashing_task_(crashing_task), - handler_thread_(handler_thread) { - if (crashing_task != mach_task_self()) { - dynamic_images_ = new DynamicImages(crashing_task_); - } else { - dynamic_images_ = NULL; - } - - GatherSystemInformation(); -} - -MinidumpGenerator::~MinidumpGenerator() { - delete dynamic_images_; -} - -char MinidumpGenerator::build_string_[16]; -int MinidumpGenerator::os_major_version_ = 0; -int MinidumpGenerator::os_minor_version_ = 0; -int MinidumpGenerator::os_build_number_ = 0; - -// static -void MinidumpGenerator::GatherSystemInformation() { - // If this is non-zero, then we've already gathered the information - if (os_major_version_) - return; - - // This code extracts the version and build information from the OS - CFStringRef vers_path = - CFSTR("/System/Library/CoreServices/SystemVersion.plist"); - CFURLRef sys_vers = - CFURLCreateWithFileSystemPath(NULL, - vers_path, - kCFURLPOSIXPathStyle, - false); - CFDataRef data; - SInt32 error; - CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL, - &error); - - if (!data) - return; - - CFDictionaryRef list = static_cast - (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, - NULL)); - if (!list) - return; - - CFStringRef build_version = static_cast - (CFDictionaryGetValue(list, CFSTR("ProductBuildVersion"))); - CFStringRef product_version = static_cast - (CFDictionaryGetValue(list, CFSTR("ProductVersion"))); - string build_str = ConvertToString(build_version); - string product_str = ConvertToString(product_version); - - CFRelease(list); - CFRelease(sys_vers); - CFRelease(data); - - strlcpy(build_string_, build_str.c_str(), sizeof(build_string_)); - - // Parse the string that looks like "10.4.8" - os_major_version_ = IntegerValueAtIndex(product_str, 0); - os_minor_version_ = IntegerValueAtIndex(product_str, 1); - os_build_number_ = IntegerValueAtIndex(product_str, 2); -} - -string MinidumpGenerator::UniqueNameInDirectory(const string &dir, - string *unique_name) { - CFUUIDRef uuid = CFUUIDCreate(NULL); - CFStringRef uuid_cfstr = CFUUIDCreateString(NULL, uuid); - CFRelease(uuid); - string file_name(ConvertToString(uuid_cfstr)); - CFRelease(uuid_cfstr); - string path(dir); - - // Ensure that the directory (if non-empty) has a trailing slash so that - // we can append the file name and have a valid pathname. - if (!dir.empty()) { - if (dir.at(dir.size() - 1) != '/') - path.append(1, '/'); - } - - path.append(file_name); - path.append(".dmp"); - - if (unique_name) - *unique_name = file_name; - - return path; -} - -bool MinidumpGenerator::Write(const char *path) { - WriteStreamFN writers[] = { - &MinidumpGenerator::WriteThreadListStream, - &MinidumpGenerator::WriteSystemInfoStream, - &MinidumpGenerator::WriteModuleListStream, - &MinidumpGenerator::WriteMiscInfoStream, - &MinidumpGenerator::WriteBreakpadInfoStream, - // Exception stream needs to be the last entry in this array as it may - // be omitted in the case where the minidump is written without an - // exception. - &MinidumpGenerator::WriteExceptionStream, - }; - bool result = true; - - // If opening was successful, create the header, directory, and call each - // writer. The destructor for the TypedMDRVAs will cause the data to be - // flushed. The destructor for the MinidumpFileWriter will close the file. - if (writer_.Open(path)) { - TypedMDRVA header(&writer_); - TypedMDRVA dir(&writer_); - - if (!header.Allocate()) - return false; - - int writer_count = sizeof(writers) / sizeof(writers[0]); - - // If we don't have exception information, don't write out the - // exception stream - if (!exception_thread_ && !exception_type_) - --writer_count; - - // Add space for all writers - if (!dir.AllocateArray(writer_count)) - return false; - - MDRawHeader *header_ptr = header.get(); - header_ptr->signature = MD_HEADER_SIGNATURE; - header_ptr->version = MD_HEADER_VERSION; - time(reinterpret_cast(&(header_ptr->time_date_stamp))); - header_ptr->stream_count = writer_count; - header_ptr->stream_directory_rva = dir.position(); - - MDRawDirectory local_dir; - for (int i = 0; (result) && (i < writer_count); ++i) { - result = (this->*writers[i])(&local_dir); - - if (result) - dir.CopyIndex(i, &local_dir); - } - } - return result; -} - -size_t MinidumpGenerator::CalculateStackSize(mach_vm_address_t start_addr) { - mach_vm_address_t stack_region_base = start_addr; - mach_vm_size_t stack_region_size; - natural_t nesting_level = 0; - vm_region_submap_info_64 submap_info; - mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64; - - vm_region_recurse_info_t region_info; - region_info = reinterpret_cast(&submap_info); - - if (start_addr == 0) { - return 0; - } - - kern_return_t result = - mach_vm_region_recurse(crashing_task_, &stack_region_base, - &stack_region_size, &nesting_level, - region_info, - &info_count); - - if (start_addr < stack_region_base) { - // probably stack corruption, since mach_vm_region had to go - // higher in the process address space to find a valid region. - return 0; - } - - - if ((stack_region_base + stack_region_size) == TOP_OF_THREAD0_STACK) { - // The stack for thread 0 needs to extend all the way to - // 0xc0000000 on 32 bit and 00007fff5fc00000 on 64bit. HOWEVER, - // for many processes, the stack is first created in one page - // below this, and is then later extended to a much larger size by - // creating a new VM region immediately below the initial page. - - // You can see this for yourself by running vmmap on a "hello, - // world" program - - // Because of the above, we'll add 4k to include the original - // stack frame page. - // This method of finding the stack region needs to be done in - // a better way; the breakpad issue 247 is tracking this. - stack_region_size += 0x1000; - } - - return result == KERN_SUCCESS ? - stack_region_base + stack_region_size - start_addr : 0; -} - -bool MinidumpGenerator::WriteStackFromStartAddress( - mach_vm_address_t start_addr, - MDMemoryDescriptor *stack_location) { - UntypedMDRVA memory(&writer_); - - bool result = false; - size_t size = CalculateStackSize(start_addr); - - if (size == 0) { - // In some situations the stack address for the thread can come back 0. - // In these cases we skip over the threads in question and stuff the - // stack with a clearly borked value. - start_addr = 0xDEADBEEF; - size = 16; - if (!memory.Allocate(size)) - return false; - - unsigned long long dummy_stack[2]; // Fill dummy stack with 16 bytes of - // junk. - dummy_stack[0] = 0xDEADBEEF; - dummy_stack[1] = 0xDEADBEEF; - - result = memory.Copy(dummy_stack, size); - } else { - - if (!memory.Allocate(size)) - return false; - - if (dynamic_images_) { - - kern_return_t kr; - - void *stack_memory = ReadTaskMemory(crashing_task_, - (void*)start_addr, - size, - &kr); - - if (stack_memory == NULL) { - return false; - } - - result = memory.Copy(stack_memory, size); - free(stack_memory); - } else { - result = memory.Copy(reinterpret_cast(start_addr), size); - } - } - - stack_location->start_of_memory_range = start_addr; - stack_location->memory = memory.location(); - - return result; -} - -#if TARGET_CPU_PPC || TARGET_CPU_PPC64 -bool MinidumpGenerator::WriteStack(breakpad_thread_state_data_t state, - MDMemoryDescriptor *stack_location) { - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); -#if TARGET_CPU_PPC - mach_vm_address_t start_addr = machine_state->r1; -#else - mach_vm_address_t start_addr = machine_state->__r1; -#endif - return WriteStackFromStartAddress(start_addr, stack_location); -} - -u_int64_t -MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) { - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); - -#if TARGET_CPU_PPC - return machine_state->srr0; -#else - return machine_state->__srr0; -#endif -} - -bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state, - MDLocationDescriptor *register_location) { - TypedMDRVA context(&writer_); - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); - - if (!context.Allocate()) - return false; - - *register_location = context.location(); - MinidumpContext *context_ptr = context.get(); - context_ptr->context_flags = MD_CONTEXT_PPC_BASE; - -#if TARGET_CPU_PPC64 -#define AddReg(a) context_ptr->a = machine_state->__ ## a -#define AddGPR(a) context_ptr->gpr[a] = machine_state->__r ## a -#else -#define AddReg(a) context_ptr->a = machine_state->a -#define AddGPR(a) context_ptr->gpr[a] = machine_state->r ## a -#endif - - AddReg(srr0); - AddReg(cr); - AddReg(xer); - AddReg(ctr); - AddReg(lr); - AddReg(vrsave); - - AddGPR(0); - AddGPR(1); - AddGPR(2); - AddGPR(3); - AddGPR(4); - AddGPR(5); - AddGPR(6); - AddGPR(7); - AddGPR(8); - AddGPR(9); - AddGPR(10); - AddGPR(11); - AddGPR(12); - AddGPR(13); - AddGPR(14); - AddGPR(15); - AddGPR(16); - AddGPR(17); - AddGPR(18); - AddGPR(19); - AddGPR(20); - AddGPR(21); - AddGPR(22); - AddGPR(23); - AddGPR(24); - AddGPR(25); - AddGPR(26); - AddGPR(27); - AddGPR(28); - AddGPR(29); - AddGPR(30); - AddGPR(31); - -#if TARGET_CPU_PPC - /* The mq register is only for PPC */ - AddReg(mq); -#endif - - - return true; -} - -#elif TARGET_CPU_X86 || TARGET_CPU_X86_64 - -bool MinidumpGenerator::WriteStack(breakpad_thread_state_data_t state, - MDMemoryDescriptor *stack_location) { - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); - -#if TARGET_CPU_X86_64 - mach_vm_address_t start_addr = machine_state->__rsp; -#else - mach_vm_address_t start_addr = machine_state->esp; -#endif - return WriteStackFromStartAddress(start_addr, stack_location); -} - -u_int64_t -MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) { - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); - -#if TARGET_CPU_X86_64 - return machine_state->__rip; -#else - return machine_state->eip; -#endif -} - -bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state, - MDLocationDescriptor *register_location) { - TypedMDRVA context(&writer_); - breakpad_thread_state_t *machine_state = - reinterpret_cast(state); - - if (!context.Allocate()) - return false; - - *register_location = context.location(); - MinidumpContext *context_ptr = context.get(); - -#if TARGET_CPU_X86 - context_ptr->context_flags = MD_CONTEXT_X86; - -#define AddReg(a) context_ptr->a = machine_state->a - AddReg(eax); - AddReg(ebx); - AddReg(ecx); - AddReg(edx); - AddReg(esi); - AddReg(edi); - AddReg(ebp); - AddReg(esp); - - AddReg(cs); - AddReg(ds); - AddReg(ss); - AddReg(es); - AddReg(fs); - AddReg(gs); - AddReg(eflags); - - AddReg(eip); -#else - -#define AddReg(a) context_ptr->a = machine_state->__ ## a - context_ptr->context_flags = MD_CONTEXT_AMD64; - AddReg(rax); - AddReg(rbx); - AddReg(rcx); - AddReg(rdx); - AddReg(rdi); - AddReg(rsi); - AddReg(rbp); - AddReg(rsp); - AddReg(r8); - AddReg(r9); - AddReg(r10); - AddReg(r11); - AddReg(r12); - AddReg(r13); - AddReg(r14); - AddReg(r15); - AddReg(rip); - // according to AMD's software developer guide, bits above 18 are - // not used in the flags register. Since the minidump format - // specifies 32 bits for the flags register, we can truncate safely - // with no loss. - context_ptr->eflags = machine_state->__rflags; - AddReg(cs); - AddReg(fs); - AddReg(gs); -#endif - - return true; -} -#endif - -bool MinidumpGenerator::WriteThreadStream(mach_port_t thread_id, - MDRawThread *thread) { - breakpad_thread_state_data_t state; - mach_msg_type_number_t state_count = sizeof(state); - - if (thread_get_state(thread_id, BREAKPAD_MACHINE_THREAD_STATE, - state, &state_count) == - KERN_SUCCESS) { - if (!WriteStack(state, &thread->stack)) - return false; - - if (!WriteContext(state, &thread->thread_context)) - return false; - - thread->thread_id = thread_id; - } else { - return false; - } - - return true; -} - -bool MinidumpGenerator::WriteThreadListStream( - MDRawDirectory *thread_list_stream) { - TypedMDRVA list(&writer_); - thread_act_port_array_t threads_for_task; - mach_msg_type_number_t thread_count; - int non_generator_thread_count; - - if (task_threads(crashing_task_, &threads_for_task, &thread_count)) - return false; - - // Don't include the generator thread - non_generator_thread_count = thread_count - 1; - if (!list.AllocateObjectAndArray(non_generator_thread_count, - sizeof(MDRawThread))) - return false; - - thread_list_stream->stream_type = MD_THREAD_LIST_STREAM; - thread_list_stream->location = list.location(); - - list.get()->number_of_threads = non_generator_thread_count; - - MDRawThread thread; - int thread_idx = 0; - - for (unsigned int i = 0; i < thread_count; ++i) { - memset(&thread, 0, sizeof(MDRawThread)); - - if (threads_for_task[i] != handler_thread_) { - if (!WriteThreadStream(threads_for_task[i], &thread)) - return false; - - list.CopyIndexAfterObject(thread_idx++, &thread, sizeof(MDRawThread)); - } - } - - return true; -} - -bool -MinidumpGenerator::WriteExceptionStream(MDRawDirectory *exception_stream) { - TypedMDRVA exception(&writer_); - - if (!exception.Allocate()) - return false; - - exception_stream->stream_type = MD_EXCEPTION_STREAM; - exception_stream->location = exception.location(); - MDRawExceptionStream *exception_ptr = exception.get(); - exception_ptr->thread_id = exception_thread_; - - // This naming is confusing, but it is the proper translation from - // mach naming to minidump naming. - exception_ptr->exception_record.exception_code = exception_type_; - exception_ptr->exception_record.exception_flags = exception_code_; - - breakpad_thread_state_data_t state; - mach_msg_type_number_t stateCount = sizeof(state); - - if (thread_get_state(exception_thread_, - BREAKPAD_MACHINE_THREAD_STATE, - state, - &stateCount) != KERN_SUCCESS) - return false; - - if (!WriteContext(state, &exception_ptr->thread_context)) - return false; - - exception_ptr->exception_record.exception_address = CurrentPCForStack(state); - - return true; -} - -bool MinidumpGenerator::WriteSystemInfoStream( - MDRawDirectory *system_info_stream) { - TypedMDRVA info(&writer_); - - if (!info.Allocate()) - return false; - - system_info_stream->stream_type = MD_SYSTEM_INFO_STREAM; - system_info_stream->location = info.location(); - - // CPU Information - uint32_t cpu_type; - size_t len = sizeof(cpu_type); - sysctlbyname("hw.cputype", &cpu_type, &len, NULL, 0); - uint32_t number_of_processors; - len = sizeof(number_of_processors); - sysctlbyname("hw.ncpu", &number_of_processors, &len, NULL, 0); - MDRawSystemInfo *info_ptr = info.get(); - - switch (cpu_type) { - case CPU_TYPE_POWERPC: - info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_PPC; - break; - case CPU_TYPE_I386: - info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_X86; -#ifdef __i386__ - // ebx is used for PIC code, so we need - // to preserve it. -#define cpuid(op,eax,ebx,ecx,edx) \ - asm ("pushl %%ebx \n\t" \ - "cpuid \n\t" \ - "movl %%ebx,%1 \n\t" \ - "popl %%ebx" \ - : "=a" (eax), \ - "=g" (ebx), \ - "=c" (ecx), \ - "=d" (edx) \ - : "0" (op)) - int unused, unused2; - // get vendor id - cpuid(0, unused, info_ptr->cpu.x86_cpu_info.vendor_id[0], - info_ptr->cpu.x86_cpu_info.vendor_id[2], - info_ptr->cpu.x86_cpu_info.vendor_id[1]); - // get version and feature info - cpuid(1, info_ptr->cpu.x86_cpu_info.version_information, unused, unused2, - info_ptr->cpu.x86_cpu_info.feature_information); - // family - info_ptr->processor_level = - (info_ptr->cpu.x86_cpu_info.version_information & 0xF00) >> 8; - // 0xMMSS (Model, Stepping) - info_ptr->processor_revision = - (info_ptr->cpu.x86_cpu_info.version_information & 0xF) | - ((info_ptr->cpu.x86_cpu_info.version_information & 0xF0) << 4); -#endif // __i386__ - break; - default: - info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_UNKNOWN; - break; - } - - info_ptr->number_of_processors = number_of_processors; - info_ptr->platform_id = MD_OS_MAC_OS_X; - - MDLocationDescriptor build_string_loc; - - if (!writer_.WriteString(build_string_, 0, - &build_string_loc)) - return false; - - info_ptr->csd_version_rva = build_string_loc.rva; - info_ptr->major_version = os_major_version_; - info_ptr->minor_version = os_minor_version_; - info_ptr->build_number = os_build_number_; - - return true; -} - -void setVersion(MDRawModule *module, uint32_t version, bool isMainExecutable) -{ - module->version_info.signature = MD_VSFIXEDFILEINFO_SIGNATURE; - module->version_info.struct_version |= MD_VSFIXEDFILEINFO_VERSION; - if (!isMainExecutable) { - // Convert MAC dylib version format, which is a 32 bit number, to the - // format used by minidump. The mac format is <16 bits>.<8 bits>.<8 bits> - // so it fits nicely into the windows version with some massaging - // The mapping is: - // 1) upper 16 bits of MAC version go to lower 16 bits of product HI - // 2) Next most significant 8 bits go to upper 16 bits of product LO - // 3) Least significant 8 bits go to lower 16 bits of product LO - module->version_info.file_version_hi = 0; - module->version_info.file_version_hi = version >> 16; - module->version_info.file_version_lo = (version & 0xff00) << 8; - module->version_info.file_version_lo |= (version & 0xff); - } else { - // Convert the __TEXT __version section of the main executable - module->version_info.file_version_hi = (version & 0xff000000) >> 8; - module->version_info.file_version_hi |= (version & 0x00ff0000) >> 16; - module->version_info.file_version_lo = (version & 0x0000ff00) << 8; - module->version_info.file_version_lo |= (version & 0x000000ff); - } -} - -bool MinidumpGenerator::WriteModuleStream(unsigned int index, - MDRawModule *module) { - if (dynamic_images_) { - // we're in a different process than the crashed process - DynamicImage *image = dynamic_images_->GetImage(index); - - if (!image) - return false; - - const breakpad_mach_header *header = image->GetMachHeader(); - - if (!header) - return false; - - int cpu_type = header->cputype; - - memset(module, 0, sizeof(MDRawModule)); - - MDLocationDescriptor string_location; - - const char* name = image->GetFilePath(); - if (!writer_.WriteString(name, 0, &string_location)) - return false; - - module->base_of_image = image->GetVMAddr() + image->GetVMAddrSlide(); - module->size_of_image = image->GetVMSize(); - module->module_name_rva = string_location.rva; - - setVersion(module, image->GetVersion(), index == (uint32_t)FindExecutableModule()); - - if (!WriteCVRecord(module, cpu_type, name)) { - return false; - } - } else { - // we're getting module info in the crashed process - - const breakpad_mach_header *header; - header = (breakpad_mach_header*)_dyld_get_image_header(index); - if (!header) - return false; - -#ifdef __LP64__ - assert(header->magic == MH_MAGIC_64); - - if(header->magic != MH_MAGIC_64) - return false; -#else - assert(header->magic == MH_MAGIC); - - if(header->magic != MH_MAGIC) - return false; -#endif - - int cpu_type = header->cputype; - unsigned long slide = _dyld_get_image_vmaddr_slide(index); - const char* name = _dyld_get_image_name(index); - const struct load_command *cmd = - reinterpret_cast(header + 1); - - memset(module, 0, sizeof(MDRawModule)); - - for (unsigned int i = 0; cmd && (i < header->ncmds); i++) { - if (cmd->cmd == LC_SEGMENT) { - - const breakpad_mach_segment_command *seg = - reinterpret_cast(cmd); - - if (!strcmp(seg->segname, "__TEXT")) { - MDLocationDescriptor string_location; - - if (!writer_.WriteString(name, 0, &string_location)) - return false; - - module->base_of_image = seg->vmaddr + slide; - module->size_of_image = seg->vmsize; - module->module_name_rva = string_location.rva; - - // The header MUST NOT be copied, but as it is free'd by the DynamicImage destructor, we have to leak the DynamicImage - // The other option is to rewrite the content of DynamicImage::CalculateMemoryAndVersionInfo() to get the version - DynamicImage *image = new DynamicImage((breakpad_mach_header*)header, 0, NULL, (char*)name, 0, MACH_PORT_NULL); - setVersion(module, image->GetVersion(), index == (uint32_t)FindExecutableModule()); - - if (!WriteCVRecord(module, cpu_type, name)) - return false; - - return true; - } - } - - cmd = reinterpret_cast((char *)cmd + cmd->cmdsize); - } - } - - return true; -} - -int MinidumpGenerator::FindExecutableModule() { - if (dynamic_images_) { - int index = dynamic_images_->GetExecutableImageIndex(); - - if (index >= 0) { - return index; - } - } else { - int image_count = _dyld_image_count(); - const struct mach_header *header; - - for (int index = 0; index < image_count; ++index) { - header = _dyld_get_image_header(index); - - if (header->filetype == MH_EXECUTE) - return index; - } - } - - // failed - just use the first image - return 0; -} - -bool MinidumpGenerator::WriteCVRecord(MDRawModule *module, int cpu_type, - const char *module_path) { - TypedMDRVA cv(&writer_); - - // Only return the last path component of the full module path - const char *module_name = strrchr(module_path, '/'); - - // Increment past the slash - if (module_name) - ++module_name; - else - module_name = ""; - - size_t module_name_length = strlen(module_name); - - if (!cv.AllocateObjectAndArray(module_name_length + 1, sizeof(u_int8_t))) - return false; - - if (!cv.CopyIndexAfterObject(0, module_name, module_name_length)) - return false; - - module->cv_record = cv.location(); - MDCVInfoPDB70 *cv_ptr = cv.get(); - cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE; - cv_ptr->age = 0; - - // Get the module identifier - FileID file_id(module_path); - unsigned char identifier[16]; - - if (file_id.MachoIdentifier(cpu_type, identifier)) { - cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 | - (uint32_t)identifier[1] << 16 | (uint32_t)identifier[2] << 8 | - (uint32_t)identifier[3]; - cv_ptr->signature.data2 = (uint32_t)identifier[4] << 8 | identifier[5]; - cv_ptr->signature.data3 = (uint32_t)identifier[6] << 8 | identifier[7]; - cv_ptr->signature.data4[0] = identifier[8]; - cv_ptr->signature.data4[1] = identifier[9]; - cv_ptr->signature.data4[2] = identifier[10]; - cv_ptr->signature.data4[3] = identifier[11]; - cv_ptr->signature.data4[4] = identifier[12]; - cv_ptr->signature.data4[5] = identifier[13]; - cv_ptr->signature.data4[6] = identifier[14]; - cv_ptr->signature.data4[7] = identifier[15]; - } - - return true; -} - -bool MinidumpGenerator::WriteModuleListStream( - MDRawDirectory *module_list_stream) { - TypedMDRVA list(&writer_); - - int image_count = dynamic_images_ ? - dynamic_images_->GetImageCount() : _dyld_image_count(); - - if (!list.AllocateObjectAndArray(image_count, MD_MODULE_SIZE)) - return false; - - module_list_stream->stream_type = MD_MODULE_LIST_STREAM; - module_list_stream->location = list.location(); - list.get()->number_of_modules = image_count; - - // Write out the executable module as the first one - MDRawModule module; - int executableIndex = FindExecutableModule(); - - if (!WriteModuleStream(executableIndex, &module)) { - return false; - } - - list.CopyIndexAfterObject(0, &module, MD_MODULE_SIZE); - int destinationIndex = 1; // Write all other modules after this one - - for (int i = 0; i < image_count; ++i) { - if (i != executableIndex) { - if (!WriteModuleStream(i, &module)) { - return false; - } - - list.CopyIndexAfterObject(destinationIndex++, &module, MD_MODULE_SIZE); - } - } - - return true; -} - -bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) { - TypedMDRVA info(&writer_); - - if (!info.Allocate()) - return false; - - misc_info_stream->stream_type = MD_MISC_INFO_STREAM; - misc_info_stream->location = info.location(); - - MDRawMiscInfo *info_ptr = info.get(); - info_ptr->size_of_info = sizeof(MDRawMiscInfo); - info_ptr->flags1 = MD_MISCINFO_FLAGS1_PROCESS_ID | - MD_MISCINFO_FLAGS1_PROCESS_TIMES | - MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO; - - // Process ID - info_ptr->process_id = getpid(); - - // Times - struct rusage usage; - if (getrusage(RUSAGE_SELF, &usage) != -1) { - // Omit the fractional time since the MDRawMiscInfo only wants seconds - info_ptr->process_user_time = usage.ru_utime.tv_sec; - info_ptr->process_kernel_time = usage.ru_stime.tv_sec; - } - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, info_ptr->process_id }; - size_t size; - if (!sysctl(mib, sizeof(mib) / sizeof(mib[0]), NULL, &size, NULL, 0)) { - mach_vm_address_t addr; - if (mach_vm_allocate(mach_task_self(), - &addr, - size, - true) == KERN_SUCCESS) { - struct kinfo_proc *proc = (struct kinfo_proc *)addr; - if (!sysctl(mib, sizeof(mib) / sizeof(mib[0]), proc, &size, NULL, 0)) - info_ptr->process_create_time = proc->kp_proc.p_starttime.tv_sec; - mach_vm_deallocate(mach_task_self(), addr, size); - } - } - - // Speed - uint64_t speed; - size = sizeof(speed); - sysctlbyname("hw.cpufrequency_max", &speed, &size, NULL, 0); - info_ptr->processor_max_mhz = speed / (1000 * 1000); - info_ptr->processor_mhz_limit = speed / (1000 * 1000); - size = sizeof(speed); - sysctlbyname("hw.cpufrequency", &speed, &size, NULL, 0); - info_ptr->processor_current_mhz = speed / (1000 * 1000); - - return true; -} - -bool MinidumpGenerator::WriteBreakpadInfoStream( - MDRawDirectory *breakpad_info_stream) { - TypedMDRVA info(&writer_); - - if (!info.Allocate()) - return false; - - breakpad_info_stream->stream_type = MD_BREAKPAD_INFO_STREAM; - breakpad_info_stream->location = info.location(); - MDRawBreakpadInfo *info_ptr = info.get(); - - if (exception_thread_ && exception_type_) { - info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID | - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID; - info_ptr->dump_thread_id = handler_thread_; - info_ptr->requesting_thread_id = exception_thread_; - } else { - info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID; - info_ptr->dump_thread_id = handler_thread_; - info_ptr->requesting_thread_id = 0; - } - - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.h deleted file mode 100644 index 0d3424c3..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator.h +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_generator.h: Create a minidump of the current MacOS process. - -#ifndef CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ -#define CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ - -#include - -#include - -#include "client/minidump_file_writer.h" -#include "google_breakpad/common/minidump_format.h" -#include "common/mac/macho_utilities.h" - -#include "dynamic_images.h" - -namespace google_breakpad { - -using std::string; - -#if TARGET_CPU_X86_64 || TARGET_CPU_PPC64 -#define TOP_OF_THREAD0_STACK 0x00007fff5fbff000 -#else -#define TOP_OF_THREAD0_STACK 0xbffff000 -#endif - -#if TARGET_CPU_X86_64 -typedef x86_thread_state64_t breakpad_thread_state_t; -typedef MDRawContextAMD64 MinidumpContext; -#elif TARGET_CPU_X86 -typedef i386_thread_state_t breakpad_thread_state_t; -typedef MDRawContextX86 MinidumpContext; -#elif TARGET_CPU_PPC64 -typedef ppc_thread_state64_t breakpad_thread_state_t; -typedef MDRawContextPPC64 MinidumpContext; -#elif TARGET_CPU_PPC -typedef ppc_thread_state_t breakpad_thread_state_t; -typedef MDRawContextPPC MinidumpContext; -#endif - -// Creates a minidump file of the current process. If there is exception data, -// use SetExceptionInformation() to add this to the minidump. The minidump -// file is generated by the Write() function. -// Usage: -// MinidumpGenerator minidump(); -// minidump.Write("/tmp/minidump"); -// -class MinidumpGenerator { - public: - MinidumpGenerator(); - MinidumpGenerator(mach_port_t crashing_task, mach_port_t handler_thread); - - ~MinidumpGenerator(); - - // Return /.dmp - // Sets |unique_name| (if requested) to the unique name for the minidump - static string UniqueNameInDirectory(const string &dir, string *unique_name); - - // Write out the minidump into |path| - // All of the components of |path| must exist and be writable - // Return true if successful, false otherwise - bool Write(const char *path); - - // Specify some exception information, if applicable - void SetExceptionInformation(int type, int code, mach_port_t thread_name) { - exception_type_ = type; - exception_code_ = code; - exception_thread_ = thread_name; - } - - // Gather system information. This should be call at least once before using - // the MinidumpGenerator class. - static void GatherSystemInformation(); - - private: - typedef bool (MinidumpGenerator::*WriteStreamFN)(MDRawDirectory *); - - // Stream writers - bool WriteThreadListStream(MDRawDirectory *thread_list_stream); - bool WriteExceptionStream(MDRawDirectory *exception_stream); - bool WriteSystemInfoStream(MDRawDirectory *system_info_stream); - bool WriteModuleListStream(MDRawDirectory *module_list_stream); - bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream); - bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream); - - // Helpers - u_int64_t CurrentPCForStack(breakpad_thread_state_data_t state); - bool WriteStackFromStartAddress(mach_vm_address_t start_addr, - MDMemoryDescriptor *stack_location); - bool WriteStack(breakpad_thread_state_data_t state, - MDMemoryDescriptor *stack_location); - bool WriteContext(breakpad_thread_state_data_t state, - MDLocationDescriptor *register_location); - bool WriteThreadStream(mach_port_t thread_id, MDRawThread *thread); - bool WriteCVRecord(MDRawModule *module, int cpu_type, - const char *module_path); - bool WriteModuleStream(unsigned int index, MDRawModule *module); - - size_t CalculateStackSize(mach_vm_address_t start_addr); - - int FindExecutableModule(); - - // disallow copy ctor and operator= - explicit MinidumpGenerator(const MinidumpGenerator &); - void operator=(const MinidumpGenerator &); - - // Use this writer to put the data to disk - MinidumpFileWriter writer_; - - // Exception information - int exception_type_; - int exception_code_; - mach_port_t exception_thread_; - mach_port_t crashing_task_; - mach_port_t handler_thread_; - - // System information - static char build_string_[16]; - static int os_major_version_; - static int os_minor_version_; - static int os_build_number_; - - // Information about dynamically loaded code - DynamicImages *dynamic_images_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator_test.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator_test.cc deleted file mode 100644 index 62530832..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_generator_test.cc +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -#include -#include - -#include - -#include "minidump_generator.h" -#include "minidump_file_writer.h" - -using std::string; -using google_breakpad::MinidumpGenerator; - -static bool doneWritingReport = false; - -static void *Reporter(void *) { - char buffer[PATH_MAX]; - MinidumpGenerator md; - struct passwd *user = getpwuid(getuid()); - - // Write it to the desktop - snprintf(buffer, - sizeof(buffer), - "/Users/%s/Desktop/test.dmp", - user->pw_name); - - fprintf(stdout, "Writing %s\n", buffer); - unlink(buffer); - md.Write(buffer); - doneWritingReport = true; - - return NULL; -} - -static void SleepyFunction() { - while (!doneWritingReport) { - usleep(100); - } -} - -int main(int argc, char * const argv[]) { - pthread_t reporter_thread; - - if (pthread_create(&reporter_thread, NULL, Reporter, NULL) == 0) { - pthread_detach(reporter_thread); - } else { - perror("pthread_create"); - } - - SleepyFunction(); - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.mode1v3 b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.mode1v3 deleted file mode 100644 index 7169157b..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.mode1v3 +++ /dev/null @@ -1,1410 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - A1CEC5E90F6AAD85003E2DD8 - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - OpenEditors - - - Content - - PBXProjectModuleGUID - A1CEC5EA0F6AAD85003E2DD8 - PBXProjectModuleLabel - exception_handler_test.cc - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - A1CEC5EB0F6AAD85003E2DD8 - PBXProjectModuleLabel - exception_handler_test.cc - _historyCapacity - 0 - bookmark - A1E1BA420F6AC018009B13EF - history - - A1CEC5ED0F6AAD85003E2DD8 - - - SplitCount - 1 - - StatusBarVisibility - - - Geometry - - Frame - {{0, 20}, {750, 718}} - PBXModuleWindowStatusBarHidden2 - - RubberWindowFrame - 15 119 750 759 0 0 1440 878 - - - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - build-and-go - com.apple.ide.PBXToolbarStopButton - get-info - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 291 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - 08FB7795FE84155DC02AAC07 - 9B37CEEA0AF98EB600FA4BD4 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 24 - 23 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 116}, {291, 632}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {308, 650}} - GroupTreeTableConfiguration - - MainColumn - 291 - - RubberWindowFrame - 63 -182 1267 691 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 308pt - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - exception_handler_test.cc - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - exception_handler_test.cc - _historyCapacity - 0 - bookmark - A1E1BA3F0F6AC018009B13EF - history - - A1E1BA3D0F6AC018009B13EF - A1CEC5E30F6AAD85003E2DD8 - - prevStack - - A1CEC5E50F6AAD85003E2DD8 - A1E1BA3E0F6AC018009B13EF - - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {954, 472}} - RubberWindowFrame - 63 -182 1267 691 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 472pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 477}, {954, 173}} - RubberWindowFrame - 63 -182 1267 691 0 0 1440 878 - - Module - XCDetailModule - Proportion - 173pt - - - Proportion - 954pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - A1E1BA400F6AC018009B13EF - 1CE0B1FE06471DED0097A5F4 - A1E1BA410F6AC018009B13EF - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - A1CEC5EA0F6AAD85003E2DD8 - /Users/julienbachmann/Documents/development/breakpad/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj - - WindowString - 63 -182 1267 691 0 0 1440 878 - WindowToolsV3 - - - Identifier - windowTool.build - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD052900623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {500, 215}} - RubberWindowFrame - 192 257 500 500 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 218pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build - - GeometryConfiguration - - Frame - {{0, 222}, {500, 236}} - RubberWindowFrame - 192 257 500 500 0 0 1280 1002 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 458pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAA5065D492600B07095 - 1C78EAA6065D492600B07095 - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowString - 192 257 500 500 0 0 1280 1002 - - - Identifier - windowTool.debugger - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {317, 164}} - {{317, 0}, {377, 164}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 164}} - {{0, 164}, {694, 216}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleDrawerSize - {100, 120} - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 380}} - RubberWindowFrame - 321 238 694 422 0 0 1440 878 - - Module - PBXDebugSessionModule - Proportion - 100% - - - Proportion - 100% - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CD10A99069EF8BA00B06720 - 1C0AD2AB069F1E9B00FABCE6 - 1C162984064C10D400B95A72 - 1C0AD2AC069F1E9B00FABCE6 - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 321 238 694 422 0 0 1440 878 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - 0 - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - MENUSEPARATOR - - - Identifier - windowTool.debuggerConsole - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {650, 250}} - RubberWindowFrame - 516 632 650 250 0 0 1680 1027 - - Module - PBXDebugCLIModule - Proportion - 209pt - - - Proportion - 209pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAAD065D492600B07095 - 1C78EAAE065D492600B07095 - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 650 41 650 250 0 0 1280 1002 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - 0 - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.pbxuser b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.pbxuser deleted file mode 100644 index 869bb29b..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/julienbachmann.pbxuser +++ /dev/null @@ -1,244 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = A1CEC5D00F6A9713003E2DD8 /* generator_test */; - activeTarget = 8DD76F620486A84900D96B5E /* generator_test */; - codeSenseManager = A1CEC5DF0F6A9732003E2DD8 /* Code sense */; - executables = ( - A1CEC5D00F6A9713003E2DD8 /* generator_test */, - A1CEC5D10F6A9713003E2DD8 /* handler_test */, - A1CEC5D20F6A9713003E2DD8 /* unit_test */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 715, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 258653249; - PBXWorkspaceStateSaveDate = 258653249; - }; - perUserProjectItems = { - A1CEC5E30F6AAD85003E2DD8 /* PBXTextBookmark */ = A1CEC5E30F6AAD85003E2DD8 /* PBXTextBookmark */; - A1CEC5E50F6AAD85003E2DD8 /* PBXTextBookmark */ = A1CEC5E50F6AAD85003E2DD8 /* PBXTextBookmark */; - A1CEC5ED0F6AAD85003E2DD8 /* PBXTextBookmark */ = A1CEC5ED0F6AAD85003E2DD8 /* PBXTextBookmark */; - A1E1BA3D0F6AC018009B13EF /* PBXTextBookmark */ = A1E1BA3D0F6AC018009B13EF /* PBXTextBookmark */; - A1E1BA3E0F6AC018009B13EF /* PBXTextBookmark */ = A1E1BA3E0F6AC018009B13EF /* PBXTextBookmark */; - A1E1BA3F0F6AC018009B13EF /* PBXTextBookmark */ = A1E1BA3F0F6AC018009B13EF /* PBXTextBookmark */; - A1E1BA420F6AC018009B13EF /* PBXTextBookmark */ = A1E1BA420F6AC018009B13EF /* PBXTextBookmark */; - }; - sourceControlManager = A1CEC5DE0F6A9732003E2DD8 /* Source Control */; - userBuildSettings = { - }; - }; - 8DD76F620486A84900D96B5E /* generator_test */ = { - activeExec = 0; - executables = ( - A1CEC5D00F6A9713003E2DD8 /* generator_test */, - ); - }; - 9B7CA84D0B1297F200CD3A1D /* unit_test */ = { - activeExec = 0; - executables = ( - A1CEC5D20F6A9713003E2DD8 /* unit_test */, - ); - }; - 9BD82A9A0B00267E0055103E /* handler_test */ = { - activeExec = 0; - executables = ( - A1CEC5D10F6A9713003E2DD8 /* handler_test */, - ); - }; - 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {691, 1512}}"; - sepNavSelRange = "{2516, 1}"; - sepNavVisRange = "{2169, 1008}"; - sepNavWindowFrame = "{{15, 63}, {750, 815}}"; - }; - }; - 9BD82C0A0B0133520055103E /* exception_handler.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {893, 2982}}"; - sepNavSelRange = "{8105, 0}"; - sepNavVisRange = "{3861, 1474}"; - }; - }; - A1CEC5D00F6A9713003E2DD8 /* generator_test */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = generator_test; - sourceDirectories = ( - ); - }; - A1CEC5D10F6A9713003E2DD8 /* handler_test */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = handler_test; - sourceDirectories = ( - ); - }; - A1CEC5D20F6A9713003E2DD8 /* unit_test */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = unit_test; - sourceDirectories = ( - ); - }; - A1CEC5DE0F6A9732003E2DD8 /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - }; - A1CEC5DF0F6A9732003E2DD8 /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - A1CEC5E30F6AAD85003E2DD8 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; - name = "exception_handler_test.cc: 28"; - rLen = 0; - rLoc = 1506; - rType = 0; - vrLen = 759; - vrLoc = 2194; - }; - A1CEC5E50F6AAD85003E2DD8 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; - name = "exception_handler_test.cc: 28"; - rLen = 0; - rLoc = 1506; - rType = 0; - vrLen = 759; - vrLoc = 2194; - }; - A1CEC5ED0F6AAD85003E2DD8 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; - name = "exception_handler_test.cc: 75"; - rLen = 1; - rLoc = 2516; - rType = 0; - vrLen = 1008; - vrLoc = 2169; - }; - A1E1BA3D0F6AC018009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82C0A0B0133520055103E /* exception_handler.h */; - name = "exception_handler.h: 201"; - rLen = 0; - rLoc = 8105; - rType = 0; - vrLen = 1474; - vrLoc = 3861; - }; - A1E1BA3E0F6AC018009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82C0A0B0133520055103E /* exception_handler.h */; - name = "exception_handler.h: 201"; - rLen = 0; - rLoc = 8105; - rType = 0; - vrLen = 1474; - vrLoc = 3861; - }; - A1E1BA3F0F6AC018009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; - name = "exception_handler_test.cc: 63"; - rLen = 0; - rLoc = 2229; - rType = 0; - vrLen = 793; - vrLoc = 2330; - }; - A1E1BA420F6AC018009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; - name = "exception_handler_test.cc: 75"; - rLen = 1; - rLoc = 2516; - rType = 0; - vrLen = 1008; - vrLoc = 2169; - }; - F93A88740E8B4C700026AF89 /* obj-c_TestCases */ = { - activeExec = 0; - }; - F9AE19C20DB04A9500C98454 /* minidump_tests64 */ = { - activeExec = 0; - }; - F9AE5B320DBFDBA300505983 /* minidump_tests32 */ = { - activeExec = 0; - }; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj deleted file mode 100644 index 9a84a0e0..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj +++ /dev/null @@ -1,963 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 9B35FF5A0B267D5F008DE8C7 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; }; - 9B35FF5B0B267D5F008DE8C7 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; }; - 9B37CEEC0AF98ECD00FA4BD4 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */; }; - 9B7CA7700B12873A00CD3A1D /* minidump_file_writer-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */; }; - 9B7CA8540B12989000CD3A1D /* minidump_file_writer_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */; }; - 9B7CA8550B1298A100CD3A1D /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; }; - 9BC1D2940B336F2300F2A2B4 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; }; - 9BC1D2950B336F2500F2A2B4 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; }; - 9BD82AC10B0029DF0055103E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */; }; - 9BD82BFF0B01333D0055103E /* exception_handler_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */; }; - 9BD82C020B01333D0055103E /* minidump_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */; }; - 9BD82C0D0B0133520055103E /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C090B0133520055103E /* exception_handler.cc */; }; - 9BD82C0E0B0133520055103E /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C0B0B0133520055103E /* minidump_generator.cc */; }; - 9BD82C0F0B0133520055103E /* exception_handler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C090B0133520055103E /* exception_handler.cc */; }; - 9BD82C100B0133520055103E /* exception_handler.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C0A0B0133520055103E /* exception_handler.h */; }; - 9BD82C110B0133520055103E /* minidump_generator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C0B0B0133520055103E /* minidump_generator.cc */; }; - 9BD82C120B0133520055103E /* minidump_generator.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C0C0B0133520055103E /* minidump_generator.h */; }; - 9BD82C250B01344C0055103E /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; }; - 9BD82C260B01344C0055103E /* minidump_file_writer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C230B01344C0055103E /* minidump_file_writer.cc */; }; - 9BD82C270B01344C0055103E /* minidump_file_writer.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C240B01344C0055103E /* minidump_file_writer.h */; }; - 9BD82C2D0B01345E0055103E /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C2B0B01345E0055103E /* string_utilities.cc */; }; - 9BD82C2E0B01345E0055103E /* string_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BD82C2B0B01345E0055103E /* string_utilities.cc */; }; - 9BD82C2F0B01345E0055103E /* string_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD82C2C0B01345E0055103E /* string_utilities.h */; }; - D2F651000BEF947200920385 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; }; - D2F651010BEF947200920385 /* file_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FB0BEF947200920385 /* file_id.h */; }; - D2F651020BEF947200920385 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; }; - D2F651030BEF947200920385 /* macho_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FD0BEF947200920385 /* macho_id.h */; }; - D2F651040BEF947200920385 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; }; - D2F651050BEF947200920385 /* macho_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F650FF0BEF947200920385 /* macho_utilities.h */; }; - D2F651090BEF949A00920385 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; }; - D2F6510A0BEF949A00920385 /* dynamic_images.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F651080BEF949A00920385 /* dynamic_images.h */; }; - D2F6510E0BEF94EB00920385 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; }; - D2F6510F0BEF94EB00920385 /* macho_walker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = D2F6510D0BEF94EB00920385 /* macho_walker.h */; }; - D2F651110BEF951700920385 /* string_conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */; }; - D2F651130BEF951C00920385 /* string_conversion.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF590B267D5F008DE8C7 /* string_conversion.h */; }; - D2F651150BEF953000920385 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; }; - D2F651160BEF953100920385 /* convert_UTF.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF570B267D5F008DE8C7 /* convert_UTF.h */; }; - D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; }; - D2F6511D0BEF973500920385 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; }; - D2F6511E0BEF973600920385 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; }; - D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; }; - D2F651210BEF975400920385 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; }; - F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; }; - F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; }; - F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; }; - F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; }; - F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F310E8B07E800D7E813 /* dwarftests.mm */; }; - F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F390E8B0D0D00D7E813 /* dump_syms.mm */; }; - F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F760E8B0DC700D7E813 /* bytereader.cc */; }; - F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */; }; - F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F780E8B0DC700D7E813 /* functioninfo.cc */; }; - F93A888B0E8B4C9A0026AF89 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F9721FA80E8B0E4800D7E813 /* md5.c */; }; - F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */; }; - F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */; }; - F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */; }; - F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; }; - F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; }; - F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; }; - F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; }; - F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 8DD76F690486A84900D96B5E /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - 9BD82C100B0133520055103E /* exception_handler.h in CopyFiles */, - 9BD82C120B0133520055103E /* minidump_generator.h in CopyFiles */, - 9BD82C270B01344C0055103E /* minidump_file_writer.h in CopyFiles */, - 9BD82C2F0B01345E0055103E /* string_utilities.h in CopyFiles */, - 9B7CA7700B12873A00CD3A1D /* minidump_file_writer-inl.h in CopyFiles */, - D2F651010BEF947200920385 /* file_id.h in CopyFiles */, - D2F651030BEF947200920385 /* macho_id.h in CopyFiles */, - D2F651050BEF947200920385 /* macho_utilities.h in CopyFiles */, - D2F6510A0BEF949A00920385 /* dynamic_images.h in CopyFiles */, - D2F6510F0BEF94EB00920385 /* macho_walker.h in CopyFiles */, - D2F651130BEF951C00920385 /* string_conversion.h in CopyFiles */, - D2F651160BEF953100920385 /* convert_UTF.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 8DD76F6C0486A84900D96B5E /* generator_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = generator_test; sourceTree = BUILT_PRODUCTS_DIR; }; - 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = convert_UTF.c; path = ../../../common/convert_UTF.c; sourceTree = SOURCE_ROOT; }; - 9B35FF570B267D5F008DE8C7 /* convert_UTF.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = convert_UTF.h; path = ../../../common/convert_UTF.h; sourceTree = SOURCE_ROOT; }; - 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = string_conversion.cc; path = ../../../common/string_conversion.cc; sourceTree = SOURCE_ROOT; }; - 9B35FF590B267D5F008DE8C7 /* string_conversion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = string_conversion.h; path = ../../../common/string_conversion.h; sourceTree = SOURCE_ROOT; }; - 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; - 9B7CA84E0B1297F200CD3A1D /* unit_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = unit_test; sourceTree = BUILT_PRODUCTS_DIR; }; - 9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer_unittest.cc; path = ../../minidump_file_writer_unittest.cc; sourceTree = ""; }; - 9BD82A9B0B00267E0055103E /* handler_test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = handler_test; sourceTree = BUILT_PRODUCTS_DIR; }; - 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler_test.cc; sourceTree = SOURCE_ROOT; }; - 9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator_test.cc; sourceTree = SOURCE_ROOT; }; - 9BD82C090B0133520055103E /* exception_handler.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = exception_handler.cc; sourceTree = SOURCE_ROOT; }; - 9BD82C0A0B0133520055103E /* exception_handler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = exception_handler.h; sourceTree = SOURCE_ROOT; }; - 9BD82C0B0B0133520055103E /* minidump_generator.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minidump_generator.cc; sourceTree = SOURCE_ROOT; }; - 9BD82C0C0B0133520055103E /* minidump_generator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_generator.h; sourceTree = SOURCE_ROOT; }; - 9BD82C230B01344C0055103E /* minidump_file_writer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_file_writer.cc; path = ../../minidump_file_writer.cc; sourceTree = SOURCE_ROOT; }; - 9BD82C240B01344C0055103E /* minidump_file_writer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = minidump_file_writer.h; path = ../../minidump_file_writer.h; sourceTree = SOURCE_ROOT; }; - 9BD82C2B0B01345E0055103E /* string_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = string_utilities.cc; path = ../../../common/mac/string_utilities.cc; sourceTree = SOURCE_ROOT; }; - 9BD82C2C0B01345E0055103E /* string_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = string_utilities.h; path = ../../../common/mac/string_utilities.h; sourceTree = SOURCE_ROOT; }; - 9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "minidump_file_writer-inl.h"; path = "../../minidump_file_writer-inl.h"; sourceTree = SOURCE_ROOT; }; - D2F650FA0BEF947200920385 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; }; - D2F650FB0BEF947200920385 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; }; - D2F650FC0BEF947200920385 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; }; - D2F650FD0BEF947200920385 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; }; - D2F650FE0BEF947200920385 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; }; - D2F650FF0BEF947200920385 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; }; - D2F651070BEF949A00920385 /* dynamic_images.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_images.cc; sourceTree = ""; }; - D2F651080BEF949A00920385 /* dynamic_images.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dynamic_images.h; sourceTree = ""; }; - D2F6510C0BEF94EB00920385 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; }; - D2F6510D0BEF94EB00920385 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; }; - F917C4F70E03265A00F86017 /* breakpad_exc_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = breakpad_exc_server.c; sourceTree = ""; }; - F917C4F80E03265A00F86017 /* breakpad_exc_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_exc_server.h; sourceTree = ""; }; - F93A88750E8B4C700026AF89 /* octestcases.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = octestcases.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "obj-cTestCases-Info.plist"; sourceTree = ""; }; - F9721F300E8B07E800D7E813 /* dwarftests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dwarftests.h; sourceTree = ""; }; - F9721F310E8B07E800D7E813 /* dwarftests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dwarftests.mm; sourceTree = ""; }; - F9721F380E8B0CFC00D7E813 /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = SOURCE_ROOT; }; - F9721F390E8B0D0D00D7E813 /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = SOURCE_ROOT; }; - F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - F9721F760E8B0DC700D7E813 /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/mac/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; }; - F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/mac/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; }; - F9721F780E8B0DC700D7E813 /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/mac/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; }; - F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = /System/Library/Frameworks/SenTestingKit.framework; sourceTree = ""; }; - F9721FA80E8B0E4800D7E813 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../../common/md5.c; sourceTree = SOURCE_ROOT; }; - F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_test.h; sourceTree = ""; }; - F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_test.cc; sourceTree = ""; }; - F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_64.cc; sourceTree = ""; }; - F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_64.h; sourceTree = ""; }; - F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests32-Info.plist"; sourceTree = ""; }; - F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests64.cptest; sourceTree = BUILT_PRODUCTS_DIR; }; - F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests32.cptest; sourceTree = BUILT_PRODUCTS_DIR; }; - F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests64-Info.plist"; sourceTree = ""; }; - F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicImagesTests.h; sourceTree = ""; }; - F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicImagesTests.cc; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DD76F660486A84900D96B5E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9B37CEEC0AF98ECD00FA4BD4 /* CoreFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9B7CA84C0B1297F200CD3A1D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9BD82A990B00267E0055103E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9BD82AC10B0029DF0055103E /* CoreFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F93A88720E8B4C700026AF89 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE19C00DB04A9500C98454 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE5B300DBFDBA300505983 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */, - F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = { - isa = PBXGroup; - children = ( - F9721FA80E8B0E4800D7E813 /* md5.c */, - F9721F760E8B0DC700D7E813 /* bytereader.cc */, - F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */, - F9721F780E8B0DC700D7E813 /* functioninfo.cc */, - F9721F390E8B0D0D00D7E813 /* dump_syms.mm */, - F9721F380E8B0CFC00D7E813 /* dump_syms.h */, - F917C4F70E03265A00F86017 /* breakpad_exc_server.c */, - F917C4F80E03265A00F86017 /* breakpad_exc_server.h */, - F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */, - F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */, - D2F6510C0BEF94EB00920385 /* macho_walker.cc */, - D2F6510D0BEF94EB00920385 /* macho_walker.h */, - D2F651070BEF949A00920385 /* dynamic_images.cc */, - D2F651080BEF949A00920385 /* dynamic_images.h */, - D2F650FA0BEF947200920385 /* file_id.cc */, - D2F650FB0BEF947200920385 /* file_id.h */, - D2F650FC0BEF947200920385 /* macho_id.cc */, - D2F650FD0BEF947200920385 /* macho_id.h */, - D2F650FE0BEF947200920385 /* macho_utilities.cc */, - D2F650FF0BEF947200920385 /* macho_utilities.h */, - F9C5A41F0DB82DB000209C76 /* testcases */, - 9BD82C040B0133420055103E /* Breakpad */, - 08FB7795FE84155DC02AAC07 /* Source */, - 9B37CEEA0AF98EB600FA4BD4 /* Frameworks */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */, - F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */, - F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */, - ); - name = MinidumpWriter; - sourceTree = ""; - }; - 08FB7795FE84155DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 9BD82BFD0B01333D0055103E /* exception_handler_test.cc */, - 9BD82BFE0B01333D0055103E /* minidump_generator_test.cc */, - 9B7CA8530B12989000CD3A1D /* minidump_file_writer_unittest.cc */, - ); - name = Source; - sourceTree = ""; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8DD76F6C0486A84900D96B5E /* generator_test */, - 9BD82A9B0B00267E0055103E /* handler_test */, - 9B7CA84E0B1297F200CD3A1D /* unit_test */, - F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */, - F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */, - F93A88750E8B4C700026AF89 /* octestcases.octest */, - ); - name = Products; - sourceTree = ""; - }; - 9B37CEEA0AF98EB600FA4BD4 /* Frameworks */ = { - isa = PBXGroup; - children = ( - F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */, - F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */, - 9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 9BD82C040B0133420055103E /* Breakpad */ = { - isa = PBXGroup; - children = ( - 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */, - 9B35FF570B267D5F008DE8C7 /* convert_UTF.h */, - 9B35FF580B267D5F008DE8C7 /* string_conversion.cc */, - 9B35FF590B267D5F008DE8C7 /* string_conversion.h */, - 9BD82C090B0133520055103E /* exception_handler.cc */, - 9BD82C0A0B0133520055103E /* exception_handler.h */, - 9BD82C0B0B0133520055103E /* minidump_generator.cc */, - 9BD82C0C0B0133520055103E /* minidump_generator.h */, - 9BD82C230B01344C0055103E /* minidump_file_writer.cc */, - 9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */, - 9BD82C240B01344C0055103E /* minidump_file_writer.h */, - 9BD82C2B0B01345E0055103E /* string_utilities.cc */, - 9BD82C2C0B01345E0055103E /* string_utilities.h */, - ); - name = Breakpad; - sourceTree = ""; - }; - F9C5A41F0DB82DB000209C76 /* testcases */ = { - isa = PBXGroup; - children = ( - F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */, - F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */, - F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */, - F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */, - F9721F300E8B07E800D7E813 /* dwarftests.h */, - F9721F310E8B07E800D7E813 /* dwarftests.mm */, - ); - path = testcases; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8DD76F620486A84900D96B5E /* generator_test */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */; - buildPhases = ( - 8DD76F640486A84900D96B5E /* Sources */, - 8DD76F660486A84900D96B5E /* Frameworks */, - 8DD76F690486A84900D96B5E /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = generator_test; - productInstallPath = "$(HOME)/bin"; - productName = MinidumpWriter; - productReference = 8DD76F6C0486A84900D96B5E /* generator_test */; - productType = "com.apple.product-type.tool"; - }; - 9B7CA84D0B1297F200CD3A1D /* unit_test */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9B7CA8500B12984300CD3A1D /* Build configuration list for PBXNativeTarget "unit_test" */; - buildPhases = ( - 9B7CA84B0B1297F200CD3A1D /* Sources */, - 9B7CA84C0B1297F200CD3A1D /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = unit_test; - productName = "filewriter unit test"; - productReference = 9B7CA84E0B1297F200CD3A1D /* unit_test */; - productType = "com.apple.product-type.tool"; - }; - 9BD82A9A0B00267E0055103E /* handler_test */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9BD82AA60B0026BF0055103E /* Build configuration list for PBXNativeTarget "handler_test" */; - buildPhases = ( - 9BD82A980B00267E0055103E /* Sources */, - 9BD82A990B00267E0055103E /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = handler_test; - productName = ExceptionTester; - productReference = 9BD82A9B0B00267E0055103E /* handler_test */; - productType = "com.apple.product-type.tool"; - }; - F93A88740E8B4C700026AF89 /* obj-c_TestCases */ = { - isa = PBXNativeTarget; - buildConfigurationList = F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */; - buildPhases = ( - F93A88700E8B4C700026AF89 /* Resources */, - F93A88710E8B4C700026AF89 /* Sources */, - F93A88720E8B4C700026AF89 /* Frameworks */, - F93A88730E8B4C700026AF89 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "obj-c_TestCases"; - productName = octestcases; - productReference = F93A88750E8B4C700026AF89 /* octestcases.octest */; - productType = "com.apple.product-type.bundle"; - }; - F9AE19C20DB04A9500C98454 /* minidump_tests64 */ = { - isa = PBXNativeTarget; - buildConfigurationList = F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */; - buildPhases = ( - F9AE19BE0DB04A9500C98454 /* Resources */, - F9AE19BF0DB04A9500C98454 /* Sources */, - F9AE19C00DB04A9500C98454 /* Frameworks */, - F9AE19C10DB04A9500C98454 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = minidump_tests64; - productName = minidump_tests; - productReference = F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */; - productType = "com.apple.product-type.bundle"; - }; - F9AE5B320DBFDBA300505983 /* minidump_tests32 */ = { - isa = PBXNativeTarget; - buildConfigurationList = F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */; - buildPhases = ( - F9AE5B2E0DBFDBA300505983 /* Resources */, - F9AE5B2F0DBFDBA300505983 /* Sources */, - F9AE5B300DBFDBA300505983 /* Frameworks */, - F9AE5B310DBFDBA300505983 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = minidump_tests32; - productName = Untitled; - productReference = F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "minidump_test" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 08FB7794FE84155DC02AAC07 /* MinidumpWriter */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8DD76F620486A84900D96B5E /* generator_test */, - 9BD82A9A0B00267E0055103E /* handler_test */, - 9B7CA84D0B1297F200CD3A1D /* unit_test */, - F9AE19C20DB04A9500C98454 /* minidump_tests64 */, - F9AE5B320DBFDBA300505983 /* minidump_tests32 */, - F93A88740E8B4C700026AF89 /* obj-c_TestCases */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - F93A88700E8B4C700026AF89 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE19BE0DB04A9500C98454 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE5B2E0DBFDBA300505983 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - F93A88730E8B4C700026AF89 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; - F9AE19C10DB04A9500C98454 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n# Run gcov on the framework getting tested\nif [ \"${CONFIGURATION}\" = 'Coverage' ];\nthen\n FRAMEWORK_NAME=minidump_tests64\n FRAMEWORK_OBJ_DIR=${OBJROOT}/${PROJECT_NAME}.build/${CONFIGURATION}/${FRAMEWORK_NAME}.build/Objects-normal/${NATIVE_ARCH_ACTUAL}\n mkdir -p coverage\n pushd coverage\n echo find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n popd\nfi "; - }; - F9AE5B310DBFDBA300505983 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DD76F640486A84900D96B5E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9BD82C020B01333D0055103E /* minidump_generator_test.cc in Sources */, - 9BD82C0F0B0133520055103E /* exception_handler.cc in Sources */, - 9BD82C110B0133520055103E /* minidump_generator.cc in Sources */, - 9BD82C260B01344C0055103E /* minidump_file_writer.cc in Sources */, - 9BD82C2E0B01345E0055103E /* string_utilities.cc in Sources */, - D2F651000BEF947200920385 /* file_id.cc in Sources */, - D2F651020BEF947200920385 /* macho_id.cc in Sources */, - D2F651040BEF947200920385 /* macho_utilities.cc in Sources */, - D2F651090BEF949A00920385 /* dynamic_images.cc in Sources */, - D2F6510E0BEF94EB00920385 /* macho_walker.cc in Sources */, - D2F651110BEF951700920385 /* string_conversion.cc in Sources */, - D2F651150BEF953000920385 /* convert_UTF.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9B7CA84B0B1297F200CD3A1D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9B7CA8540B12989000CD3A1D /* minidump_file_writer_unittest.cc in Sources */, - 9B7CA8550B1298A100CD3A1D /* minidump_file_writer.cc in Sources */, - 9BC1D2940B336F2300F2A2B4 /* convert_UTF.c in Sources */, - 9BC1D2950B336F2500F2A2B4 /* string_conversion.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9BD82A980B00267E0055103E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9BD82BFF0B01333D0055103E /* exception_handler_test.cc in Sources */, - 9BD82C0D0B0133520055103E /* exception_handler.cc in Sources */, - 9BD82C0E0B0133520055103E /* minidump_generator.cc in Sources */, - 9BD82C250B01344C0055103E /* minidump_file_writer.cc in Sources */, - 9BD82C2D0B01345E0055103E /* string_utilities.cc in Sources */, - 9B35FF5A0B267D5F008DE8C7 /* convert_UTF.c in Sources */, - 9B35FF5B0B267D5F008DE8C7 /* string_conversion.cc in Sources */, - D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */, - D2F6511D0BEF973500920385 /* file_id.cc in Sources */, - D2F6511E0BEF973600920385 /* macho_id.cc in Sources */, - D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */, - D2F651210BEF975400920385 /* macho_walker.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F93A88710E8B4C700026AF89 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */, - F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */, - F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */, - F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */, - F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */, - F93A888B0E8B4C9A0026AF89 /* md5.c in Sources */, - F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */, - F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */, - F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */, - F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE19BF0DB04A9500C98454 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */, - F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */, - F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */, - F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F9AE5B2F0DBFDBA300505983 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */, - F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB923208733DC60010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_CW_ASM_SYNTAX = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_THREADSAFE_STATICS = NO; - INSTALL_PATH = "$(HOME)/bin"; - PRODUCT_NAME = generator_test; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 1DEB923308733DC60010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - GCC_CW_ASM_SYNTAX = NO; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_THREADSAFE_STATICS = NO; - INSTALL_PATH = "$(HOME)/bin"; - PRODUCT_NAME = generator_test; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Release; - }; - 1DEB923608733DC60010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - OTHER_LDFLAGS = "-lcrypto"; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - 1DEB923708733DC60010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - OTHER_LDFLAGS = "-lcrypto"; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; - 9B7CA8510B12984300CD3A1D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INSTALL_PATH = "$(HOME)/bin"; - PREBINDING = NO; - PRODUCT_NAME = unit_test; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 9B7CA8520B12984300CD3A1D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - INSTALL_PATH = "$(HOME)/bin"; - PREBINDING = NO; - PRODUCT_NAME = unit_test; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Release; - }; - 9BD82AA70B0026BF0055103E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INSTALL_PATH = "$(HOME)/bin"; - OTHER_CFLAGS = "-Wall"; - PREBINDING = NO; - PRODUCT_NAME = handler_test; - USER_HEADER_SEARCH_PATHS = "../../.. $(inherited)"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 9BD82AA80B0026BF0055103E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INSTALL_PATH = "$(HOME)/bin"; - OTHER_CFLAGS = "-Wall"; - PREBINDING = NO; - PRODUCT_NAME = handler_test; - USER_HEADER_SEARCH_PATHS = "../../.. $(inherited)"; - ZERO_LINK = NO; - }; - name = Release; - }; - F93A88770E8B4C700026AF89 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = "obj-cTestCases-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-lcrypto", - "-framework", - Cocoa, - "-framework", - SenTestingKit, - ); - PREBINDING = NO; - PRODUCT_NAME = octestcases; - USER_HEADER_SEARCH_PATHS = "../../../..//**"; - WRAPPER_EXTENSION = octest; - }; - name = Debug; - }; - F93A88780E8B4C700026AF89 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - INFOPLIST_FILE = "obj-cTestCases-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-lcrypto", - "-framework", - Cocoa, - "-framework", - SenTestingKit, - ); - PREBINDING = NO; - PRODUCT_NAME = octestcases; - USER_HEADER_SEARCH_PATHS = "../../../..//**"; - WRAPPER_EXTENSION = octest; - ZERO_LINK = NO; - }; - name = Release; - }; - F9AE19C40DB04A9500C98454 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - ppc64, - ); - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "minidump_tests64-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.5; - OTHER_LDFLAGS = ( - "-framework", - Carbon, - "-framework", - CPlusTest, - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_tests64; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; - USER_HEADER_SEARCH_PATHS = "../../../**"; - WRAPPER_EXTENSION = cptest; - }; - name = Debug; - }; - F9AE19C50DB04A9500C98454 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - "$(NATIVE_ARCH_64_BIT)", - ppc64, - ); - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "minidump_tests64-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - MACOSX_DEPLOYMENT_TARGET = 10.5; - OTHER_LDFLAGS = ( - "-framework", - Carbon, - "-framework", - CPlusTest, - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_tests64; - SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; - USER_HEADER_SEARCH_PATHS = "../../../**"; - WRAPPER_EXTENSION = cptest; - ZERO_LINK = NO; - }; - name = Release; - }; - F9AE5B350DBFDBA300505983 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "minidump_tests32-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-framework", - Carbon, - "-framework", - CPlusTest, - "-lcrypto", - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_tests32; - USER_HEADER_SEARCH_PATHS = "../../../**"; - WRAPPER_EXTENSION = cptest; - }; - name = Debug; - }; - F9AE5B370DBFDBA300505983 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; - INFOPLIST_FILE = "minidump_tests32-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-lcrypto", - "-framework", - Carbon, - "-framework", - CPlusTest, - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_tests32; - USER_HEADER_SEARCH_PATHS = "../../../**"; - WRAPPER_EXTENSION = cptest; - ZERO_LINK = NO; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB923208733DC60010E9CD /* Debug */, - 1DEB923308733DC60010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "minidump_test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB923608733DC60010E9CD /* Debug */, - 1DEB923708733DC60010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9B7CA8500B12984300CD3A1D /* Build configuration list for PBXNativeTarget "unit_test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9B7CA8510B12984300CD3A1D /* Debug */, - 9B7CA8520B12984300CD3A1D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9BD82AA60B0026BF0055103E /* Build configuration list for PBXNativeTarget "handler_test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9BD82AA70B0026BF0055103E /* Debug */, - 9BD82AA80B0026BF0055103E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F93A88770E8B4C700026AF89 /* Debug */, - F93A88780E8B4C700026AF89 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F9AE19C40DB04A9500C98454 /* Debug */, - F9AE19C50DB04A9500C98454 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F9AE5B350DBFDBA300505983 /* Debug */, - F9AE5B370DBFDBA300505983 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests32-Info.plist b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests32-Info.plist deleted file mode 100644 index 921ebf35..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests32-Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.google.breakpad.minidump_tests32 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - - diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests64-Info.plist b/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests64-Info.plist deleted file mode 100644 index acfbd309..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/minidump_tests64-Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.google.breakpad.minidump_tests64 - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - yes - - diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/obj-cTestCases-Info.plist b/thirdparty/google-breakpad/r318/src/client/mac/handler/obj-cTestCases-Info.plist deleted file mode 100644 index 65013556..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/obj-cTestCases-Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - - diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.cc deleted file mode 100644 index 10768541..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.cc +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// ProtectedMemoryAllocator -// -// See the header file for documentation - -#include "protected_memory_allocator.h" -#include - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -ProtectedMemoryAllocator::ProtectedMemoryAllocator(vm_size_t pool_size) - : pool_size_(pool_size), - next_alloc_offset_(0), - valid_(false) { - - kern_return_t result = vm_allocate(mach_task_self(), - &base_address_, - pool_size, - TRUE - ); - - valid_ = (result == KERN_SUCCESS); - assert(valid_); -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -ProtectedMemoryAllocator::~ProtectedMemoryAllocator() { - vm_deallocate(mach_task_self(), - base_address_, - pool_size_ - ); -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -char *ProtectedMemoryAllocator::Allocate(size_t bytes) { - if (valid_ && next_alloc_offset_ + bytes <= pool_size_) { - char *p = (char*)base_address_ + next_alloc_offset_; - next_alloc_offset_ += bytes; - return p; - } - - return NULL; // ran out of memory in our allocation block -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -kern_return_t ProtectedMemoryAllocator::Protect() { - kern_return_t result = vm_protect(mach_task_self(), - base_address_, - pool_size_, - FALSE, - VM_PROT_READ); - - return result; -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -kern_return_t ProtectedMemoryAllocator::Unprotect() { - kern_return_t result = vm_protect(mach_task_self(), - base_address_, - pool_size_, - FALSE, - VM_PROT_READ | VM_PROT_WRITE); - - return result; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.h deleted file mode 100644 index ed4f51d5..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/protected_memory_allocator.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// ProtectedMemoryAllocator -// -// A very simple allocator class which allows allocation, but not deallocation. -// The allocations can be made read-only with the Protect() method. -// This class is NOT useful as a general-purpose memory allocation system, -// since it does not allow deallocation. It is useful to use for a group -// of allocations which are created in the same time-frame and destroyed -// in the same time-frame. It is useful for making allocations of memory -// which will not need to change often once initialized. This memory can then -// be protected from memory smashers by calling the Protect() method. - -#ifndef PROTECTED_MEMORY_ALLOCATOR_H__ -#define PROTECTED_MEMORY_ALLOCATOR_H__ - -#include - -// -class ProtectedMemoryAllocator { - public: - ProtectedMemoryAllocator(vm_size_t pool_size); - ~ProtectedMemoryAllocator(); - - // Returns a pointer to an allocation of size n within the pool. - // Fails by returning NULL is no more space is available. - // Please note that the pointers returned from this method should not - // be freed in any way (for example by calling free() on them ). - char * Allocate(size_t n); - - // Returns the base address of the allocation pool. - char * GetBaseAddress() { return (char*)base_address_; } - - // Returns the size of the allocation pool, including allocated - // plus free space. - vm_size_t GetTotalSize() { return pool_size_; } - - // Returns the number of bytes already allocated in the pool. - vm_size_t GetAllocatedSize() { return next_alloc_offset_; } - - // Returns the number of bytes available for allocation. - vm_size_t GetFreeSize() { return pool_size_ - next_alloc_offset_; } - - // Makes the entire allocation pool read-only including, of course, - // all allocations made from the pool. - kern_return_t Protect(); - - // Makes the entire allocation pool read/write. - kern_return_t Unprotect(); - - private: - vm_size_t pool_size_; - vm_address_t base_address_; - int next_alloc_offset_; - bool valid_; -}; - -#endif // PROTECTED_MEMORY_ALLOCATOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.cc deleted file mode 100644 index cb76eb10..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.cc +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// DynamicImagesTests.cpp -// minidump_test -// -// Created by Neal Sidhwaney on 4/17/08. -// Copyright 2008 Google Inc. All rights reserved. -// - -#include "client/mac/handler/testcases/DynamicImagesTests.h" -#include "client/mac/handler/dynamic_images.h" - -DynamicImagesTests test2(TEST_INVOCATION(DynamicImagesTests, - ReadTaskMemoryTest)); -DynamicImagesTests test3(TEST_INVOCATION(DynamicImagesTests, - ReadLibrariesFromLocalTaskTest)); - -DynamicImagesTests::DynamicImagesTests(TestInvocation *invocation) - : TestCase(invocation) { -} - -DynamicImagesTests::~DynamicImagesTests() { -} - -void DynamicImagesTests::ReadTaskMemoryTest() { - kern_return_t kr; - - // pick test2 as a symbol we know to be valid to read - // anything will work, really - void *addr = reinterpret_cast(&test2); - void *buf; - - fprintf(stderr, "reading 0x%p\n", addr); - buf = google_breakpad::ReadTaskMemory(mach_task_self(), - addr, - getpagesize(), - &kr); - - CPTAssert(kr == KERN_SUCCESS); - - CPTAssert(buf != NULL); - - CPTAssert(0 == memcmp(buf, (const void*)addr, getpagesize())); - - free(buf); -} - -void DynamicImagesTests::ReadLibrariesFromLocalTaskTest() { - - mach_port_t me = mach_task_self(); - google_breakpad::DynamicImages *d = new google_breakpad::DynamicImages(me); - - fprintf(stderr,"Local task image count: %d\n", d->GetImageCount()); - - d->TestPrint(); - - CPTAssert(d->GetImageCount() > 0); -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.h deleted file mode 100644 index e1e79993..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/DynamicImagesTests.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// DynamicImagesTests.h -// minidump_test -// -// Created by Neal Sidhwaney on 4/17/08. -// Copyright 2008 Google Inc. All rights reserved. -// -// - -#ifndef _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__ -#define _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__ - -#include - -class DynamicImagesTests : public TestCase { - public: - explicit DynamicImagesTests(TestInvocation* invocation); - virtual ~DynamicImagesTests(); - - void ReadTaskMemoryTest(); - void ReadLibrariesFromLocalTaskTest(); -}; - -#endif /* _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.cc b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.cc deleted file mode 100644 index e7332bfb..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.cc +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// breakpad_nlist_test.cc -// minidump_test -// -// Created by Neal Sidhwaney on 4/13/08. -// Copyright 2008 Google Inc. All rights reserved. -// - -#include "client/mac/handler/testcases/breakpad_nlist_test.h" -#include -#include "client/mac/handler/breakpad_nlist_64.h" - -BreakpadNlistTest test1(TEST_INVOCATION(BreakpadNlistTest, CompareToNM)); - -BreakpadNlistTest::BreakpadNlistTest(TestInvocation *invocation) - : TestCase(invocation) { -} - - -BreakpadNlistTest::~BreakpadNlistTest() { -} - -void BreakpadNlistTest::CompareToNM() { -#if TARGET_CPU_X86_64 - system("/usr/bin/nm -arch x86_64 /usr/lib/dyld > /tmp/dyld-namelist.txt"); -#elif TARGET_CPU_PPC64 - system("/usr/bin/nm -arch ppc64 /usr/lib/dyld > /tmp/dyld-namelist.txt"); -#endif - - FILE *fd = fopen("/tmp/dyld-namelist.txt", "rt"); - - char oneNMAddr[30]; - char symbolType; - char symbolName[500]; - while (!feof(fd)) { - fscanf(fd, "%s %c %s", oneNMAddr, &symbolType, symbolName); - breakpad_nlist symbolList[2]; - breakpad_nlist &list = symbolList[0]; - - memset(symbolList, 0, sizeof(breakpad_nlist)*2); - const char *symbolNames[2]; - symbolNames[0] = (const char*)symbolName; - symbolNames[1] = "\0"; - breakpad_nlist_64("/usr/lib/dyld", &list, symbolNames); - uint64_t nmAddr = strtol(oneNMAddr, NULL, 16); - if (!IsSymbolMoreThanOnceInDyld(symbolName)) { - CPTAssert(nmAddr == symbolList[0].n_value); - } - } - - fclose(fd); -} - -bool BreakpadNlistTest::IsSymbolMoreThanOnceInDyld(const char *symbolName) { - // These are the symbols that occur more than once when nm dumps - // the symbol table of /usr/lib/dyld. Our nlist program returns - // the first address because it's doing a search so we need to exclude - // these from causing the test to fail - const char *multipleSymbols[] = { - "__Z41__static_initialization_and_destruction_0ii", - "___tcf_0", - "___tcf_1", - "_read_encoded_value_with_base", - "_read_sleb128", - "_read_uleb128", - "\0"}; - - bool found = false; - - for (int i = 0; multipleSymbols[i][0]; i++) { - if (!strcmp(multipleSymbols[i], symbolName)) { - found = true; - break; - } - } - - return found; -} diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.h deleted file mode 100644 index e93657cc..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/breakpad_nlist_test.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// breakpad_nlist_test.h -// minidump_test -// -// Created by Neal Sidhwaney on 4/13/08. -// Copyright 2008 Google Inc. All rights reserved. -// -// - -#ifndef CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__ -#define CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__ - -#include - -class BreakpadNlistTest : public TestCase { - private: - - // nm dumps multiple addresses for the same symbol in - // /usr/lib/dyld. So we track those so we don't report failures - // in mismatches between what our nlist returns and what nm has - // for the duplicate symbols. - bool IsSymbolMoreThanOnceInDyld(const char *symbolName); - - public: - explicit BreakpadNlistTest(TestInvocation* invocation); - virtual ~BreakpadNlistTest(); - - - /* This test case runs nm on /usr/lib/dyld and then compares the - output of every symbol to what our nlist implementation returns */ - void CompareToNM(); -}; - -#endif /* CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__*/ diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.h b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.h deleted file mode 100644 index 21ff7a44..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// dwarftests.h -// minidump_test -// -// Created by Neal Sidhwaney on 9/24/08. -// Copyright 2008 Google Inc. All rights reserved. -// - -#import - - -@interface dwarftests : SenTestCase { - -} - -- (void) testDWARFSymbolFileGeneration; - -@end diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.mm b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.mm deleted file mode 100644 index 40c69aff..00000000 --- a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/dwarftests.mm +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// -// dwarftests.m -// minidump_test -// -// Created by Neal Sidhwaney on 9/24/08. -// Copyright 2008 Google Inc. All rights reserved. -// - -#import "dwarftests.h" -#import "dump_syms.h" - -@implementation dwarftests -- (void) testDWARFSymbolFileGeneration { - NSString *inputBreakpadSymbolFile = @"testcases/testdata/dump_syms_i386_breakpad.sym"; - NSString *outputBreakpadSymbolFile = @"/tmp/dump_syms_i386.breakpad"; - - DumpSymbols *dump = [[DumpSymbols alloc] initWithContentsOfFile:@"testcases/testdata/dump_syms_dwarf_data"]; - - STAssertNotNil(dump, @"DumpSymbols is nil"); - [dump setArchitecture:@"i386"]; - [dump writeSymbolFile:outputBreakpadSymbolFile]; - - NSData *d = [[NSData alloc] initWithContentsOfFile:inputBreakpadSymbolFile]; - STAssertNotNil(d, @"Input breakpad symbol file not found"); - - NSData *d1 = [[NSData alloc] initWithContentsOfFile:outputBreakpadSymbolFile]; - STAssertNotNil(d1, @"Output breakpad symbol file not found"); - - STAssertTrue([d isEqualToData:d1], - @"Symbol files were not equal!",nil); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data b/thirdparty/google-breakpad/r318/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data deleted file mode 100644 index 5be17aeedcf1bb46e7a5290fbd7d9eee5969caf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702795 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
      cIv3Wg*uhd*&oFmA@X+bQu90#b^;@|uEIzX#m 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 k{?`6sx!}hi#-lsDJ^r5DtA=x+y}HLq, std::allocator > >) -4078 15 82 3 -408d 13 83 3 -40a0 1e 85 3 -40be 42 89 3 -4100 20 90 3 -4120 2b 91 3 -414b 1a 92 3 -4165 23 93 3 -4188 46 96 3 -41ce 46 99 3 -4214 33 83 3 -4247 8 102 3 -424f 1 102 3 -FUNC 4250 3ef 0 -[DumpSymbols processDWARFFunctionInfo:] -4250 15 473 3 -4265 25 474 3 -428a 1e 476 3 -42a8 a 480 3 -42b2 3c 481 3 -42ee 3d 483 3 -432b 23 485 3 -434e 26 487 3 -4374 6 489 3 -437a 37 490 3 -43b1 2a 491 3 -43db 17 492 3 -43f2 30 496 3 -4422 3d 497 3 -445f 2e 498 3 -448d 30 502 3 -44bd 64 504 3 -4521 34 507 3 -4555 9d 509 3 -45f2 45 474 3 -4637 8 513 3 -463f 1 513 3 -FUNC 4640 1f5 0 -[DumpSymbols processDWARFLineNumberInfo:] -4640 15 515 3 -4655 25 516 3 -467a 39 520 3 -46b3 26 521 3 -46d9 6 523 3 -46df 37 524 3 -4716 2a 525 3 -4740 17 526 3 -4757 30 529 3 -4787 61 531 3 -47e8 45 516 3 -482d 8 534 3 -4835 1 534 3 -FUNC 4836 10f 0 -[DumpSymbols dealloc] -4836 13 1145 3 -4849 1c 1146 3 -4865 1c 1147 3 -4881 1c 1148 3 -489d 1c 1149 3 -48b9 1c 1150 3 -48d5 1c 1151 3 -48f1 25 1152 3 -4916 29 1154 3 -493f 6 1155 3 -4945 1 1155 3 -FUNC 4946 512 0 -[DumpSymbols loadDWARFSymbolInfo:offset:] -4946 17 402 3 -495d 9 405 3 -4966 10 406 3 -4976 2b 408 3 -49a1 38 409 3 -49d9 3a 410 3 -4a13 2e 411 3 -4a41 31 416 3 -4a72 e 418 3 -4a80 24 420 3 -4aa4 5 422 3 -4aa9 b 424 3 -4ab4 b 425 3 -4abf e 426 3 -4acd 2b 427 3 -4af8 2b 428 3 -4b23 2c 431 3 -4b4f 52 439 3 -4ba1 34 444 3 -4bd5 1a 446 3 -4bef 21 451 3 -4c10 1e 452 3 -4c2e 21 453 3 -4c4f 40 422 3 -4c8f 6 453 3 -4c95 170 422 3 -4e05 43 456 3 -4e48 10 457 3 -FUNC 4e58 4fd 0 -[DumpSymbols generateSectionDictionary:] -4e58 18 663 3 -4e70 10 665 3 -4e80 2e 666 3 -4eae 9 668 3 -4eb7 2b 669 3 -4ee2 7 670 3 -4ee9 2e 672 3 -4f17 d 676 3 -4f24 32 678 3 -4f56 29 680 3 -4f7f a 684 3 -4f89 3c 685 3 -4fc5 31 688 3 -4ff6 5d 689 3 -5053 26 692 3 -5079 21 694 3 -509a c 698 3 -50a6 e 699 3 -50b4 6 700 3 -50ba 9 701 3 -50c3 2e 702 3 -50f1 c 704 3 -50fd 3c 706 3 -5139 66 709 3 -519f 1c 712 3 -51bb fb 714 3 -52b6 6 717 3 -52bc 5 718 3 -52c1 19 704 3 -52da 25 714 3 -52ff 2e 722 3 -532d 9 723 3 -5336 17 698 3 -534d 8 725 3 -5355 1 725 3 -FUNC 5356 24a 0 -[DumpSymbols getSectionMapForArchitecture:] -5356 14 643 3 -536a 43 645 3 -53ad 1a 648 3 -53c7 1c 645 3 -53e3 18 648 3 -53fb 40 650 3 -543b 20 651 3 -545b 17 652 3 -5472 16 651 3 -5488 cb 652 3 -5553 11 654 3 -5564 32 657 3 -5596 a 658 3 -FUNC 55a0 3fe 0 -[DumpSymbols initWithContentsOfFile:] -55a0 14 1056 3 -55b4 3b 1057 3 -55ef 44 1059 3 -5633 17 1060 3 -564a c 1061 3 -5656 1f 1064 3 -5675 2b 1067 3 -56a0 a 1069 3 -56aa 35 1083 3 -56df 2 1087 3 -56e1 1a 1088 3 -56fb 3d 1087 3 -5738 33 1092 3 -576b 6 1094 3 -5771 e 1095 3 -577f 17 1096 3 -5796 c 1097 3 -57a2 1c 1101 3 -57be 1f 1103 3 -57dd 18 1104 3 -57f5 23 1107 3 -5818 25 1109 3 -583d 1c 1107 3 -5859 17 1110 3 -5870 c 1111 3 -587c 2a 1115 3 -58a6 8 1116 3 -58ae a 1118 3 -58b8 9 1119 3 -58c1 d 1122 3 -58ce 29 1124 3 -58f7 20 1126 3 -5917 20 1128 3 -5937 57 1132 3 -598e 9 1136 3 -5997 7 1137 3 -FUNC 599e d74 0 -[DumpSymbols outputSymbolFile:] -599e 18 877 3 -59b6 2e 879 3 -59e4 30 880 3 -5a14 5d 882 3 -5a71 30 883 3 -5aa1 5d 885 3 -5afe 2e 888 3 -5b2c 38 891 3 -5b64 46 892 3 -5baa 26 893 3 -5bd0 20 895 3 -5bf0 20 904 3 -5c10 30 898 3 -5c40 f 899 3 -5c4f 1e 904 3 -5c6d 17 907 3 -5c84 17 908 3 -5c9b 44 911 3 -5cdf 44 914 3 -5d23 a 917 3 -5d2d 36 921 3 -5d63 30 923 3 -5d93 9 18 4 -5d9c 9 19 4 -5da5 c 20 4 -5db1 56 923 3 -5e07 74 925 3 -5e7b f 927 3 -5e8a 44 932 3 -5ece 20 933 3 -5eee c 934 3 -5efa 4e 935 3 -5f48 41 936 3 -5f89 f 937 3 -5f98 14 934 3 -5fac 7 941 3 -5fb3 14 942 3 -5fc7 14 943 3 -5fdb 1d 946 3 -5ff8 c 948 3 -6004 24 949 3 -6028 29 950 3 -6051 9 953 3 -605a 28 954 3 -6082 2e 955 3 -60b0 1e 957 3 -60ce 7 959 3 -60d5 26 962 3 -60fb 2a 963 3 -6125 2a 964 3 -614f 6 966 3 -6155 2a 967 3 -617f e 971 3 -618d 43 972 3 -61d0 4c 974 3 -621c 8 975 3 -6224 2e 979 3 -6252 2e 982 3 -6280 2e 985 3 -62ae 2e 988 3 -62dc 2e 991 3 -630a 2e 994 3 -6338 2e 997 3 -6366 2e 1000 3 -6394 54 1004 3 -63e8 c 1005 3 -63f4 e 1007 3 -6402 27 1008 3 -6429 8 1009 3 -6431 34 1010 3 -6465 24 1012 3 -6489 2 1013 3 -648b 2a 1017 3 -64b5 a 1019 3 -64bf 14 1020 3 -64d3 1d 1021 3 -64f0 a 1025 3 -64fa 32 1026 3 -652c 33 1028 3 -655f c 1029 3 -656b 55 1034 3 -65c0 f 1036 3 -65cf 16 1040 3 -65e5 61 1041 3 -6646 f 1043 3 -6655 47 1046 3 -669c c 1048 3 -66a8 11 948 3 -66b9 4e 1052 3 -6707 b 1053 3 -FUNC 6712 11 0 operator new(unsigned long, void*) -6712 c 94 5 -671e 5 94 5 -6723 1 94 5 -FUNC 6724 e 0 operator delete(void*, void*) -6724 c 98 5 -6730 2 98 5 -673e 7 76 6 -6745 2 77 6 -6747 1a 78 6 -6761 d 77 6 -676e 3 79 6 -6771 2 80 6 -6773 1 80 6 -6780 d 95 6 -678d 1 95 6 -678e 13 127 74 -67a1 2a 127 74 -67cb 1 127 74 -67cc 13 127 74 -67df 2a 127 74 -6809 1 127 74 -680a 13 127 74 -681d 2a 127 74 -6847 1 127 74 -FUNC 6848 e 0 dwarf2reader::LineInfoHandler::DefineDir(std::string const&, unsigned int) -6848 c 131 7 -6854 2 131 74 -FUNC 6856 26 0 dwarf2reader::LineInfoHandler::DefineFile(std::string const&, int, unsigned int, unsigned long long, unsigned long long) -6856 24 142 7 -687a 2 142 74 -FUNC 687c 1a 0 dwarf2reader::LineInfoHandler::AddLine(unsigned long long, unsigned int, unsigned int, unsigned int) -687c 18 150 7 -6894 2 150 74 -6896 12 299 74 -68a8 12 299 74 -68ba 13 301 74 -68cd 2a 301 74 -68f7 1 301 74 -68f8 13 301 74 -690b 2a 301 74 -6935 1 301 74 -6936 13 301 74 -6949 2a 301 74 -6973 1 301 74 -FUNC 6974 44 0 dwarf2reader::Dwarf2Handler::StartCompilationUnit(unsigned long long, unsigned char, unsigned char, unsigned long long, unsigned char) -6974 39 308 7 -69ad b 308 74 -FUNC 69b8 1f 0 dwarf2reader::Dwarf2Handler::StartDIE(unsigned long long, dwarf2reader::DwarfTag, std::list, std::allocator > > const&) -69b8 18 314 7 -69d0 7 314 74 -69d7 1 314 74 -FUNC 69d8 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeUnsigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, unsigned long long) -69d8 24 323 7 -69fc 2 323 74 -FUNC 69fe 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeSigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, long long) -69fe 24 332 7 -6a22 2 332 74 -FUNC 6a24 26 0 dwarf2reader::Dwarf2Handler::ProcessAttributeBuffer(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, char const*, unsigned long long) -6a24 24 345 7 -6a48 2 345 74 -FUNC 6a4a 1a 0 dwarf2reader::Dwarf2Handler::ProcessAttributeString(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, std::string const&) -6a4a 18 354 7 -6a62 2 354 74 -FUNC 6a64 1a 0 dwarf2reader::Dwarf2Handler::EndDIE(unsigned long long) -6a64 18 360 7 -6a7c 2 360 74 -6a7e c 44 8 -6a8a 2 44 8 -6a8c 13 55 32 -6a9f 35 55 32 -6ad4 13 91 32 -6ae7 73 96 32 -6b5a 13 98 32 -6b6d 35 98 32 -6bae 1a 75 3 -6bc8 2 76 3 -FUNC 6bca 20 0 std::_Rb_tree_const_iterator >::operator!=(std::_Rb_tree_const_iterator > const&) const -6bca c 287 10 -6bd6 14 288 40 -FUNC 6bea 16 0 std::_Rb_tree_const_iterator >::operator->() const -6bea c 249 10 -6bf6 a 250 40 -6c0c 7 614 72 -6c13 1 614 72 -6c14 c 241 40 -6c20 c 242 40 -FUNC 6c2c 16 0 std::_Rb_tree_const_iterator >::operator*() const -6c2c c 245 11 -6c38 a 246 40 -6c42 c 241 40 -6c4e c 242 40 -FUNC 6c5a 20 0 std::_Rb_tree_const_iterator > >::operator!=(std::_Rb_tree_const_iterator > > const&) const -6c5a c 287 11 -6c66 14 288 40 -FUNC 6c7a 16 0 std::_Rb_tree_const_iterator > >::operator->() const -6c7a c 249 11 -6c86 a 250 40 -6c90 c 185 34 -6c9c 18 186 34 -6cc0 14 204 34 -6cd4 c 69 70 -6ce0 d 69 70 -6ced 1 69 70 -6cee c 89 70 -6cfa 20 90 70 -6d1a c 69 70 -6d26 d 69 70 -6d33 1 69 70 -6d34 c 69 70 -6d40 d 69 70 -6d4d 1 69 70 -FUNC 6d4e 25 0 std::_Rb_tree_const_iterator >::operator++() -6d4e c 253 13 -6d5a 14 255 40 -6d6e 5 256 40 -6d73 1 256 40 -FUNC 6d74 25 0 std::_Rb_tree_const_iterator > >::operator++() -6d74 c 253 13 -6d80 14 255 40 -6d94 5 256 40 -6d99 1 256 40 -FUNC 6d9a 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_begin() -6d9a c 461 13 -6da6 8 462 40 -FUNC 6dae 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_begin() -6dae c 461 13 -6dba 8 462 40 -6dc2 c 65 68 -6dce 2 65 68 -6dd0 c 72 68 -6ddc 2 72 68 -6dde c 97 69 -6dea d 97 69 -6df7 1 97 69 -6df8 c 105 69 -6e04 d 105 69 -6e11 1 105 69 -6e12 c 105 69 -6e1e d 105 69 -6e2b 1 105 69 -6e2c c 67 68 -6e38 2 67 68 -6e3a c 99 69 -6e46 14 100 69 -6e5a c 99 69 -6e66 14 100 69 -FUNC 6e7a 2b 0 std::_Vector_base >::get_allocator() const -6e7a 10 93 16 -6e8a 1b 94 71 -6ea5 1 94 71 -6ea6 c 65 68 -6eb2 2 65 68 -6eb4 c 72 68 -6ec0 2 72 68 -6ec2 c 97 69 -6ece d 97 69 -6edb 1 97 69 -6edc c 105 69 -6ee8 d 105 69 -6ef5 1 105 69 -6ef6 c 105 69 -6f02 d 105 69 -6f0f 1 105 69 -6f10 c 67 68 -6f1c 2 67 68 -6f1e c 99 69 -6f2a 14 100 69 -6f3e c 99 69 -6f4a 14 100 69 -FUNC 6f5e 2b 0 std::_Vector_base >::get_allocator() const -6f5e 10 93 16 -6f6e 1b 94 71 -6f89 1 94 71 -6f8a c 603 72 -6f96 c 603 72 -FUNC 6fa2 23 0 std::vector >::begin() -6fa2 c 333 16 -6fae 17 334 71 -6fc5 1 334 71 -FUNC 6fc6 26 0 std::vector >::end() -6fc6 c 351 16 -6fd2 1a 352 71 -6ff8 5 666 72 -6ffd 1 666 72 -6ffe c 608 72 -700a 14 609 72 -702a 5 666 72 -702f 1 666 72 -FUNC 7030 35 0 bool __gnu_cxx::operator!= > >(__gnu_cxx::__normal_iterator > > const&, __gnu_cxx::__normal_iterator > > const&) -7030 d 693 16 -703d 28 694 72 -7065 1 694 72 -7066 c 603 72 -7072 c 603 72 -708a 27 629 72 -70b1 1 629 72 -70b2 c 84 70 -70be 1f 85 70 -70dd 1 85 70 -FUNC 70de 32 0 std::pair, __gnu_cxx::hash, std::equal_to, std::allocator > >*> std::make_pair, __gnu_cxx::hash, std::equal_to, std::allocator > >*>(std::string, __gnu_cxx::hash_map, __gnu_cxx::hash, std::equal_to, std::allocator > >*) -70de 10 144 16 -70ee 22 145 70 -711c a 190 34 -7132 d 194 34 -713f 1 194 34 -7140 c 84 70 -714c 17 85 70 -7163 1 85 70 -FUNC 7164 2d 0 std::pair std::make_pair(char const*, unsigned long) -7164 c 144 16 -7170 21 145 70 -7191 1 145 70 -7192 c 84 70 -719e 1d 85 70 -71bb 1 85 70 -FUNC 71bc 30 0 std::pair > std::make_pair >(char*, std::pair) -71bc 10 144 16 -71cc 20 145 70 -71ec c 89 70 -71f8 20 90 70 -7218 d 89 70 -7225 70 90 70 -7295 1 90 70 -FUNC 7296 12 0 std::iterator_traits::iterator_category std::__iterator_category(unsigned long const* const&) -7296 c 164 17 -72a2 6 165 17 -FUNC 72a8 1d 0 std::iterator_traits::difference_type std::__distance(unsigned long const*, unsigned long const*, std::random_access_iterator_tag) -72a8 c 92 18 -72b4 11 97 18 -72c5 1 97 18 -FUNC 72c6 33 0 std::iterator_traits::difference_type std::distance(unsigned long const*, unsigned long const*) -72c6 c 114 18 -72d2 27 118 18 -72f9 1 118 18 -FUNC 72fa 20 0 void std::__advance(unsigned long const*&, int, std::random_access_iterator_tag) -72fa c 150 18 -7306 14 155 18 -FUNC 731a 33 0 void std::advance(unsigned long const*&, int) -731a c 172 18 -7326 27 175 18 -734d 1 175 18 -FUNC 734e 7a 0 unsigned long const* std::lower_bound(unsigned long const*, unsigned long const*, unsigned long const&) -734e c 2625 19 -735a 15 2642 19 -736f 2 2646 19 -7371 8 2648 19 -7379 6 2649 19 -737f 12 2650 19 -7391 e 2651 19 -739f 6 2653 19 -73a5 4 2654 19 -73a9 e 2655 19 -73b7 6 2658 19 -73bd 6 2646 19 -73c3 5 2660 19 -73db b 227 34 -73e6 e 228 34 -73f4 1c 229 34 -7410 20 230 34 -7430 6 231 34 -7436 c 72 68 -7442 2 72 68 -7444 c 105 69 -7450 d 105 69 -745d 1 105 69 -745e c 105 69 -746a d 105 69 -7477 1 105 69 -7478 c 80 71 -7484 d 80 71 -7491 1 80 71 -7492 c 67 68 -749e 2 67 68 -74a0 c 99 69 -74ac 14 100 69 -FUNC 74c0 2b 0 std::_Vector_base >::get_allocator() const -74c0 10 93 19 -74d0 1b 94 71 -74eb 1 94 71 -74ec c 238 40 -74f8 a 239 40 -FUNC 7502 26 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::begin() const -7502 c 585 19 -750e 1a 588 40 -FUNC 7528 19 0 std::map, std::allocator > >::begin() const -7528 c 243 20 -7534 d 244 45 -7541 1 244 45 -FUNC 7542 26 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::end() const -7542 c 596 20 -754e 1a 597 40 -FUNC 7568 19 0 std::map, std::allocator > >::end() const -7568 c 260 20 -7574 d 261 45 -7581 1 261 45 -7582 c 65 68 -758e 2 65 68 -7590 c 72 68 -759c 2 72 68 -759e c 97 69 -75aa d 97 69 -75b7 1 97 69 -75b8 c 105 69 -75c4 d 105 69 -75d1 1 105 69 -75d2 c 72 68 -75de 2 72 68 -75e0 c 105 69 -75ec d 105 69 -75f9 1 105 69 -75fa c 397 40 -7606 d 397 40 -7613 1 397 40 -7614 c 105 69 -7620 d 105 69 -762d 1 105 69 -FUNC 762e 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_right(std::_Rb_tree_node_base*) -762e c 496 20 -763a 8 497 40 -FUNC 7642 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_left(std::_Rb_tree_node_base*) -7642 c 488 20 -764e 8 489 40 -7656 c 65 68 -7662 2 65 68 -7664 c 72 68 -7670 2 72 68 -7672 c 97 69 -767e d 97 69 -768b 1 97 69 -768c c 105 69 -7698 d 105 69 -76a5 1 105 69 -76a6 c 72 68 -76b2 2 72 68 -76b4 c 105 69 -76c0 d 105 69 -76cd 1 105 69 -76ce c 397 40 -76da d 397 40 -76e7 1 397 40 -76e8 c 105 69 -76f4 d 105 69 -7701 1 105 69 -FUNC 7702 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_right(std::_Rb_tree_node_base*) -7702 c 496 20 -770e 8 497 40 -FUNC 7716 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_left(std::_Rb_tree_node_base*) -7716 c 488 20 -7722 8 489 40 -772a c 84 71 -7736 2f 85 71 -7765 2 86 71 -7767 1 86 71 -7768 c 80 71 -7774 d 80 71 -7781 1 80 71 -7782 c 96 71 -778e 12 97 71 -77a0 2 98 71 -77a2 c 84 71 -77ae 2f 85 71 -77dd 2 86 71 -77df 1 86 71 -77e0 c 80 71 -77ec d 80 71 -77f9 1 80 71 -77fa c 96 71 -7806 12 97 71 -7818 2 98 71 -7826 d 107 68 -7833 1 107 68 -FUNC 7834 2e 0 void std::_Destroy >(std::string*, std::string*, std::allocator) -7834 c 171 21 -7840 2 173 73 -7842 12 174 73 -7854 c 173 73 -7860 2 174 73 -7862 c 167 40 -786e a 168 40 -FUNC 7878 26 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::begin() -7878 c 581 21 -7884 1a 582 40 -FUNC 789e 19 0 std::map, std::allocator > >::begin() -789e c 234 21 -78aa d 235 45 -78b7 1 235 45 -FUNC 78b8 26 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::end() -78b8 c 592 21 -78c4 1a 593 40 -FUNC 78de 19 0 std::map, std::allocator > >::end() -78de c 251 21 -78ea d 252 45 -78f7 1 252 45 -78f8 c 167 40 -7904 a 168 40 -FUNC 790e 26 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::begin() -790e c 581 21 -791a 1a 582 40 -FUNC 7934 19 0 std::map, std::less, std::allocator > > >::begin() -7934 c 234 21 -7940 d 235 45 -794d 1 235 45 -FUNC 794e 26 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::end() -794e c 592 21 -795a 1a 593 40 -FUNC 7974 19 0 std::map, std::less, std::allocator > > >::end() -7974 c 251 21 -7980 d 252 45 -798d 1 252 45 -FUNC 798e 11 0 std::_Select1st, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >::operator()(std::pair, __gnu_cxx::hash, std::equal_to, std::allocator > >*>&) const -798e c 546 22 -799a 5 547 41 -799f 1 547 41 -79a0 c 128 34 -79ac 13 129 34 -79bf 1 129 34 -79cc 22 396 34 -79fa d 199 42 -7a07 1 199 42 -7a08 c 65 68 -7a14 2 65 68 -7a16 c 72 68 -7a22 2 72 68 -7a24 c 97 69 -7a30 d 97 69 -7a3d 1 97 69 -7a3e c 105 69 -7a4a d 105 69 -7a57 1 105 69 -7a58 c 65 68 -7a64 2 65 68 -7a66 c 72 68 -7a72 2 72 68 -7a74 c 105 69 -7a80 d 105 69 -7a8d 1 105 69 -7a8e c 97 69 -7a9a d 97 69 -7aa7 1 97 69 -7aa8 c 72 68 -7ab4 2 72 68 -7ab6 c 105 69 -7ac2 d 105 69 -7acf 1 105 69 -7adc d 94 68 -7ae9 1 94 68 -FUNC 7aea 2f 0 std::_Vector_base >::_M_deallocate(dwarf2reader::CompilationUnit::Abbrev*, unsigned long) -7aea c 120 23 -7af6 6 122 71 -7afc 1d 123 71 -7b19 1 123 71 -7b1a c 108 71 -7b26 43 109 71 -7b69 1 109 71 -7b6a c 65 68 -7b76 2 65 68 -7b78 c 103 69 -7b84 d 103 69 -7b91 1 103 69 -7b92 c 65 68 -7b9e 2 65 68 -7ba0 c 103 69 -7bac d 103 69 -7bb9 1 103 69 -7bc6 d 94 68 -7bd3 1 94 68 -FUNC 7bd4 2f 0 std::_Vector_base >::_M_deallocate(dwarf2reader::SourceFileInfo*, unsigned long) -7bd4 c 120 23 -7be0 6 122 71 -7be6 1d 123 71 -7c03 1 123 71 -7c04 c 108 71 -7c10 43 109 71 -7c53 1 109 71 -7c54 c 188 71 -7c60 12 189 71 -7c72 2 190 71 -7c74 c 35 32 -7c80 d 35 32 -7c8d 1 35 32 -7c9a d 107 68 -7ca7 1 107 68 -FUNC 7ca8 2e 0 void std::_Destroy >(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, std::allocator) -7ca8 c 171 23 -7cb4 2 173 73 -7cb6 12 174 73 -7cc8 c 173 73 -7cd4 2 174 73 -7cd6 d 272 71 -7ce3 8c 273 71 -7d6f 1 273 71 -7d7c d 94 68 -7d89 1 94 68 -FUNC 7d8a 2f 0 std::_Vector_base >::_M_deallocate(std::string*, unsigned long) -7d8a c 120 23 -7d96 6 122 71 -7d9c 1d 123 71 -7db9 1 123 71 -7dba c 108 71 -7dc6 3d 109 71 -7e03 1 109 71 -7e04 c 188 71 -7e10 12 189 71 -7e22 2 190 71 -7e24 d 272 71 -7e31 8c 273 71 -7ebd 1 273 71 -7eca 2b 596 34 -7ef5 1 596 34 -7f02 7 614 72 -7f09 1 614 72 -7f0a c 65 68 -7f16 2 65 68 -7f18 c 72 68 -7f24 2 72 68 -7f26 c 103 69 -7f32 d 103 69 -7f3f 1 103 69 -7f40 c 105 69 -7f4c d 105 69 -7f59 1 105 69 -7f5a c 65 68 -7f66 2 65 68 -7f68 c 72 68 -7f74 2 72 68 -7f76 c 103 69 -7f82 d 103 69 -7f8f 1 103 69 -7f90 c 105 69 -7f9c d 105 69 -7fa9 1 105 69 -7faa c 105 69 -7fb6 d 105 69 -7fc3 1 105 69 -7fd0 d 575 34 -7fdd 1 575 34 -7fea d 575 34 -7ff7 1 575 34 -FUNC 7ff8 11 0 std::_Select1st, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >::operator()(std::pair, __gnu_cxx::hash, std::equal_to, std::allocator > >*> const&) const -7ff8 c 550 23 -8004 5 551 41 -8009 1 551 41 -8016 2f 600 34 -8045 1 600 34 -8046 c 84 70 -8052 1e 85 70 -FUNC 8070 11 0 std::_Select1st > >::operator()(std::pair >&) const -8070 c 546 23 -807c 5 547 41 -8081 1 547 41 -FUNC 8082 11 0 std::_Select1st > >::operator()(std::pair > const&) const -8082 c 550 23 -808e 5 551 41 -8093 1 551 41 -8094 c 128 34 -80a0 13 129 34 -80b3 1 129 34 -80b4 c 84 70 -80c0 1e 85 70 -80de c 65 68 -80ea 2 65 68 -80ec c 103 69 -80f8 d 103 69 -8105 1 103 69 -8106 c 65 68 -8112 2 65 68 -8114 c 72 68 -8120 2 72 68 -8122 c 105 69 -812e d 105 69 -813b 1 105 69 -813c c 103 69 -8148 d 103 69 -8155 1 103 69 -8156 c 105 69 -8162 d 105 69 -816f 1 105 69 -8170 c 80 71 -817c d 80 71 -8189 1 80 71 -818a c 67 68 -8196 2 67 68 -8198 c 99 69 -81a4 14 100 69 -FUNC 81b8 2b 0 std::_Vector_base<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::get_allocator() const -81b8 10 93 23 -81c8 1b 94 71 -81e3 1 94 71 -81e4 c 99 69 -81f0 14 100 69 -8210 2 107 68 -FUNC 8212 2e 0 void std::_Destroy<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>) -8212 c 171 23 -821e 2 173 73 -8220 12 174 73 -8232 c 173 73 -823e 2 174 73 -824c d 107 68 -8259 1 107 68 -825a c 67 68 -8266 2 67 68 -8268 c 99 69 -8274 14 100 69 -8288 c 403 40 -8294 1c 404 40 -82b0 a 406 40 -82ba a 407 40 -82c4 c 408 40 -82d0 e 409 40 -82de c 553 40 -82ea 36 554 40 -8320 2 555 40 -8322 c 103 69 -832e d 103 69 -833b 1 103 69 -FUNC 833c 2b 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::get_allocator() const -833c 10 350 23 -834c 1b 351 40 -8367 1 351 40 -8368 c 69 70 -8374 2 69 70 -8382 d 107 68 -838f 1 107 68 -839c d 94 68 -83a9 1 94 68 -FUNC 83aa 2a 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_put_node(std::_Rb_tree_node >*) -83aa c 359 23 -83b6 1e 360 40 -FUNC 83d4 59 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::destroy_node(std::_Rb_tree_node >*) -83d4 d 387 23 -83e1 35 389 40 -8416 17 390 40 -842d 1 390 40 -FUNC 842e 56 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*) -842e c 1051 23 -843a 2 1054 40 -843c 1a 1056 40 -8456 e 1057 40 -8464 12 1058 40 -8476 6 1059 40 -847c 6 1054 40 -8482 2 1059 40 -8484 d 569 40 -8491 58 570 40 -84e9 1 570 40 -84ea c 147 45 -84f6 31 148 45 -8527 1 148 45 -8528 c 92 45 -8534 d 92 45 -8541 1 92 45 -8542 c 67 68 -854e 2 67 68 -8550 c 99 69 -855c 14 100 69 -8570 c 403 40 -857c 1c 404 40 -8598 a 406 40 -85a2 a 407 40 -85ac c 408 40 -85b8 e 409 40 -85c6 c 553 40 -85d2 36 554 40 -8608 2 555 40 -860a c 103 69 -8616 d 103 69 -8623 1 103 69 -FUNC 8624 2b 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::get_allocator() const -8624 10 350 23 -8634 1b 351 40 -864f 1 351 40 -8650 c 69 70 -865c d 69 70 -8669 1 69 70 -866a c 69 70 -8676 30 69 70 -86b2 d 107 68 -86bf 1 107 68 -86cc d 94 68 -86d9 1 94 68 -FUNC 86da 2a 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_put_node(std::_Rb_tree_node > >*) -86da c 359 23 -86e6 1e 360 40 -FUNC 8704 59 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::destroy_node(std::_Rb_tree_node > >*) -8704 d 387 23 -8711 35 389 40 -8746 17 390 40 -875d 1 390 40 -FUNC 875e 56 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*) -875e c 1051 23 -876a 2 1054 40 -876c 1a 1056 40 -8786 e 1057 40 -8794 12 1058 40 -87a6 6 1059 40 -87ac 6 1054 40 -87b2 2 1059 40 -87b4 d 569 40 -87c1 58 570 40 -8819 1 570 40 -881a c 147 45 -8826 31 148 45 -8857 1 148 45 -8858 c 92 45 -8864 d 92 45 -8871 1 92 45 -8872 c 603 72 -887e c 603 72 -FUNC 888a 23 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::begin() -888a c 333 23 -8896 17 334 71 -88ad 1 334 71 -88ba 2a 654 72 -FUNC 88e4 42 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::operator[](unsigned long) -88e4 c 494 23 -88f0 36 495 71 -FUNC 8926 26 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::end() -8926 c 351 23 -8932 1a 352 71 -FUNC 894c 28 0 bool std::operator==, std::allocator >(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) -894c c 2115 24 -8958 1c 2116 37 -FUNC 8974 23 0 std::equal_to::operator()(std::string const&, std::string const&) const -8974 c 199 24 -8980 17 200 41 -8997 1 200 41 -8998 c 80 71 -89a4 d 80 71 -89b1 1 80 71 -89b2 c 67 68 -89be 2 67 68 -89c0 c 99 69 -89cc 14 100 69 -FUNC 89e0 2b 0 std::_Vector_base<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::get_allocator() const -89e0 10 93 24 -89f0 1b 94 71 -8a0b 1 94 71 -8a0c c 99 69 -8a18 14 100 69 -8a2c c 84 71 -8a38 2f 85 71 -8a67 2 86 71 -8a69 1 86 71 -8a6a c 96 71 -8a76 12 97 71 -8a88 2 98 71 -8a96 2 107 68 -FUNC 8a98 2e 0 void std::_Destroy<__gnu_cxx::_Hashtable_node > >**, std::allocator<__gnu_cxx::_Hashtable_node > >*> >(__gnu_cxx::_Hashtable_node > >**, __gnu_cxx::_Hashtable_node > >**, std::allocator<__gnu_cxx::_Hashtable_node > >*>) -8a98 c 171 24 -8aa4 2 173 73 -8aa6 12 174 73 -8ab8 c 173 73 -8ac4 2 174 73 -FUNC 8ac6 13 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::max_size() const -8ac6 c 407 24 -8ad2 7 408 71 -8ad9 1 408 71 -8ada c 603 72 -8ae6 c 603 72 -FUNC 8af2 26 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::end() -8af2 c 351 24 -8afe 1a 352 71 -FUNC 8b18 23 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::begin() -8b18 c 333 24 -8b24 17 334 71 -8b3b 1 334 71 -8b48 2a 654 72 -8b7e 7 614 72 -8b85 1 614 72 -FUNC 8b86 42 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::operator[](unsigned long) -8b86 c 494 24 -8b92 36 495 71 -8bd4 d 107 68 -8be1 1 107 68 -FUNC 8be2 28 0 void std::swap<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**>(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**&, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**&) -8be2 c 92 25 -8bee 8 97 61 -8bf6 a 98 61 -8c00 a 99 61 -FUNC 8c0a 50 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::swap(std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >&) -8c0a c 733 25 -8c16 12 735 71 -8c28 18 736 71 -8c40 1a 737 71 -8c66 2b 596 34 -8c91 1 596 34 -8c9e 2f 600 34 -8ccd 1 600 34 -FUNC 8cce 28 0 void std::swap<__gnu_cxx::_Hashtable_node > >**>(__gnu_cxx::_Hashtable_node > >**&, __gnu_cxx::_Hashtable_node > >**&) -8cce c 92 25 -8cda 8 97 61 -8ce2 a 98 61 -8cec a 99 61 -FUNC 8cf6 50 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::swap(std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >&) -8cf6 c 733 25 -8d02 12 735 71 -8d14 18 736 71 -8d2c 1a 737 71 -8d46 c 84 71 -8d52 2f 85 71 -8d81 2 86 71 -8d83 1 86 71 -8d84 c 96 71 -8d90 12 97 71 -8da2 2 98 71 -FUNC 8da4 13 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::max_size() const -8da4 c 407 25 -8db0 7 408 71 -8db7 1 408 71 -8dc4 d 94 68 -8dd1 1 94 68 -FUNC 8dd2 2f 0 std::_Vector_base<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::_M_deallocate(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long) -8dd2 c 120 25 -8dde 6 122 71 -8de4 1d 123 71 -8e01 1 123 71 -8e02 c 108 71 -8e0e 3d 109 71 -8e4b 1 109 71 -8e4c c 272 71 -8e58 4b 273 71 -8ea3 1 273 71 -8ea4 c 188 71 -8eb0 12 189 71 -8ec2 2 190 71 -8ec4 c 603 72 -8ed0 c 603 72 -FUNC 8edc 2b 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::begin() const -8edc c 342 25 -8ee8 1f 343 71 -8f07 1 343 71 -FUNC 8f08 2c 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::end() const -8f08 c 360 25 -8f14 20 361 71 -8f40 5 666 72 -8f45 1 666 72 -8f53 2b 759 72 -FUNC 8f7e 3c 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::size() const -8f7e c 402 25 -8f8a 30 403 71 -8fc6 26 588 34 -8ff8 15 511 34 -900d 79 513 34 -9086 21 517 34 -90a7 1 517 34 -90b4 14 225 42 -90d4 26 592 34 -FUNC 90fa 49 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::capacity() const -90fa c 449 25 -9106 3d 451 71 -9143 1 451 71 -9144 c 103 69 -9150 d 103 69 -915d 1 103 69 -916e 1b 286 34 -9189 1 286 34 -9196 d 94 68 -91a3 1 94 68 -91b0 1e 301 34 -91db 56 622 34 -9231 17 623 34 -9254 9 1080 34 -925d 1a 1082 34 -9277 2 1083 34 -9279 8 1085 34 -9281 12 1086 34 -9293 6 1087 34 -9299 6 1083 34 -929f 1b 1089 34 -92ba 1d 1080 34 -92d7 c 1091 34 -92e3 1 1091 34 -92e4 d 360 34 -92f1 77 361 34 -9368 c 93 42 -9374 d 93 42 -9381 1 93 42 -9382 c 72 68 -938e 2 72 68 -9390 c 105 69 -939c d 105 69 -93a9 1 105 69 -93aa c 301 66 -93b6 d 301 66 -93c3 1 301 66 -93d0 d 94 68 -93dd 1 94 68 -FUNC 93de 2f 0 std::_Vector_base<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::_M_deallocate(__gnu_cxx::_Hashtable_node > >**, unsigned long) -93de c 120 26 -93ea 6 122 71 -93f0 1d 123 71 -940d 1 123 71 -940e c 108 71 -941a 3d 109 71 -9457 1 109 71 -9458 c 188 71 -9464 12 189 71 -9476 2 190 71 -9478 c 272 71 -9484 4b 273 71 -94cf 1 273 71 -94d0 c 603 72 -94dc c 603 72 -FUNC 94e8 2b 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::begin() const -94e8 c 342 26 -94f4 1f 343 71 -9513 1 343 71 -FUNC 9514 2c 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::end() const -9514 c 360 26 -9520 20 361 71 -954c 2d 662 72 -9579 1 662 72 -FUNC 957a 2d 0 unsigned long const& std::max(unsigned long const&, unsigned long const&) -957a c 206 26 -9586 e 211 61 -9594 8 212 61 -959c b 213 61 -95a7 1 213 61 -95b4 19 650 72 -95cd 1 650 72 -95da 5 666 72 -95df 1 666 72 -95ed 2b 759 72 -9624 5 666 72 -9629 1 666 72 -9637 2b 759 72 -FUNC 9662 49 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::capacity() const -9662 c 449 26 -966e 3d 451 71 -96ab 1 451 71 -FUNC 96ac 3c 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::size() const -96ac c 402 26 -96b8 30 403 71 -96f4 26 588 34 -9726 26 592 34 -974c c 103 69 -9758 d 103 69 -9765 1 103 69 -9776 1b 286 34 -9791 1 286 34 -979e d 94 68 -97ab 1 94 68 -97b8 1e 301 34 -97e3 56 622 34 -9839 17 623 34 -985c 9 1080 34 -9865 1a 1082 34 -987f 2 1083 34 -9881 8 1085 34 -9889 12 1086 34 -989b 6 1087 34 -98a1 6 1083 34 -98a7 1b 1089 34 -98c2 1d 1080 34 -98df c 1091 34 -98eb 1 1091 34 -98ec d 360 34 -98f9 77 361 34 -9970 c 69 70 -997c 20 69 70 -99a9 5c 104 68 -9a05 1 104 68 -9a06 c 69 70 -9a12 2c 69 70 -9a4b 5c 104 68 -9aa7 1 104 68 -9ab4 2d 662 72 -9ae1 1 662 72 -9aee 19 650 72 -9b07 1 650 72 -9b14 5 666 72 -9b19 1 666 72 -9b27 2b 759 72 -9b52 c 72 68 -9b5e 2 72 68 -9b60 c 105 69 -9b6c d 105 69 -9b79 1 105 69 -9b7a c 69 70 -9b86 2 69 70 -9b94 d 107 68 -9ba1 1 107 68 -9bae d 94 68 -9bbb 1 94 68 -FUNC 9bbc 2a 0 std::_List_base, std::allocator > >::_M_put_node(std::_List_node >*) -9bbc c 315 26 -9bc8 1e 316 66 -FUNC 9be6 35 0 bool __gnu_cxx::operator!=<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > > const&, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > > const&) -9be6 d 699 26 -9bf3 28 700 72 -9c1b 1 700 72 -9c28 d 623 72 -9c35 5 624 72 -FUNC 9c3a 4b 0 void std::__fill::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::_Hashtable_node > >* const&) -9c3a c 539 61 -9c46 8 541 61 -9c4e 2 542 61 -9c50 12 543 61 -9c62 21 542 61 -9c83 2 543 61 -9c85 1 543 61 -FUNC 9c86 2b 0 void std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::_Hashtable_node > >* const&) -9c86 c 560 26 -9c92 4 567 61 -9c96 1b 568 61 -9cb1 1 568 61 -FUNC 9cb2 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, std::allocator<__gnu_cxx::_Hashtable_node > >*> >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, std::allocator<__gnu_cxx::_Hashtable_node > >*>) -9cb2 c 171 26 -9cbe 2 173 73 -9cc0 1a 174 73 -9cda 21 173 73 -9cfb 2 174 73 -9cfd 1 174 73 -9d0a 7 98 68 -9d11 1 98 68 -9d1e 1d 85 68 -9d3b 5 86 68 -9d40 16 88 68 -9d62 1d 297 34 -9d7f 1 297 34 -9d8d e 605 34 -9d9b 9 606 34 -9da4 3c 609 34 -9de0 b 610 34 -9deb 11 609 34 -9dfc b 612 34 -9e07 12 614 34 -9e19 b 615 34 -9e24 13 612 34 -9e37 8 615 34 -9e3f 1 615 34 -9e4d 15 751 34 -9e62 1a 752 34 -9e7c b 754 34 -9e87 49 755 34 -9ed0 3b 756 34 -9f0b 12 754 34 -9f1d 15 758 34 -9f32 8 759 34 -9f3a 1c 760 34 -9f56 f 761 34 -9f65 41 762 34 -9fb2 7 98 68 -9fb9 1 98 68 -9fc6 1d 85 68 -9fe3 5 86 68 -9fe8 17 88 68 -9fff 1 88 68 -a00c 1d 297 34 -a029 1 297 34 -a037 e 605 34 -a045 9 606 34 -a04e 3c 609 34 -a08a b 610 34 -a095 11 609 34 -a0a6 b 612 34 -a0b1 12 614 34 -a0c3 b 615 34 -a0ce 13 612 34 -a0e1 8 615 34 -a0e9 1 615 34 -a0f7 15 751 34 -a10c 1a 752 34 -a126 b 754 34 -a131 49 755 34 -a17a 3b 756 34 -a1b5 12 754 34 -a1c7 15 758 34 -a1dc 8 759 34 -a1e4 1c 760 34 -a200 f 761 34 -a20f 41 762 34 -FUNC a250 35 0 bool __gnu_cxx::operator!=<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > > const&, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > > const&) -a250 d 699 26 -a25d 28 700 72 -a285 1 700 72 -a292 d 623 72 -a29f 5 624 72 -FUNC a2a4 4b 0 void std::__fill::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -a2a4 c 539 61 -a2b0 8 541 61 -a2b8 2 542 61 -a2ba 12 543 61 -a2cc 21 542 61 -a2ed 2 543 61 -a2ef 1 543 61 -FUNC a2f0 2b 0 void std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -a2f0 c 560 26 -a2fc 4 567 61 -a300 1b 568 61 -a31b 1 568 61 -FUNC a31c 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>) -a31c c 171 26 -a328 2 173 73 -a32a 1a 174 73 -a344 21 173 73 -a365 2 174 73 -a367 1 174 73 -a368 c 65 68 -a374 2 65 68 -a376 c 103 69 -a382 d 103 69 -a38f 1 103 69 -FUNC a390 2b 0 std::_List_base, std::allocator > >::get_allocator() const -a390 10 322 26 -a3a0 1b 324 66 -a3bb 1 324 66 -FUNC a3bc 7b 0 std::_List_base, std::allocator > >::_M_clear() -a3bc d 69 27 -a3c9 8 72 77 -a3d1 2 73 77 -a3d3 6 75 77 -a3d9 8 76 77 -a3e1 35 77 77 -a416 12 78 77 -a428 a 73 77 -a432 5 78 77 -a437 1 78 77 -a438 c 331 66 -a444 18 332 66 -a45c c 392 66 -a468 d 392 66 -a475 1 392 66 -a476 c 211 74 -a482 10 211 74 -a49e d 107 68 -a4ab 1 107 68 -FUNC a4ac 2e 0 void std::_Destroy >(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, std::allocator) -a4ac c 171 27 -a4b8 2 173 73 -a4ba 12 174 73 -a4cc c 173 73 -a4d8 2 174 73 -a4da c 272 71 -a4e6 4b 273 71 -a531 1 273 71 -a532 13 196 74 -a545 10 196 74 -a555 2f 197 74 -a584 1a 198 74 -a59e 13 196 74 -a5b1 10 196 74 -a5c1 2f 197 74 -a5f0 1a 198 74 -a616 7 98 68 -a61d 1 98 68 -a62a 1d 85 68 -a647 5 86 68 -a64c 10 88 68 -FUNC a65c 2a 0 std::_Vector_base<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::_M_allocate(unsigned long) -a65c c 116 27 -a668 1e 117 71 -a686 d 100 71 -a693 12 101 71 -a6a5 19 103 71 -a6be b 104 71 -a6c9 3a 105 71 -a703 1 105 71 -a710 7 98 68 -a717 1 98 68 -a724 1d 85 68 -a741 5 86 68 -a746 10 88 68 -FUNC a756 2a 0 std::_Vector_base<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::_M_allocate(unsigned long) -a756 c 116 27 -a762 1e 117 71 -a780 d 100 71 -a78d 12 101 71 -a79f 19 103 71 -a7b8 b 104 71 -a7c3 3a 105 71 -a7fd 1 105 71 -a80b 12 424 61 -a81d 2e 425 61 -a84b 13 426 61 -a86a 4 440 61 -a86e 1b 443 61 -a889 1 443 61 -a898 56 482 61 -a8fa 4 514 61 -a8fe 4 515 61 -a902 1b 517 61 -a91d 1 517 61 -a92a 8 616 61 -a932 2 617 61 -a934 8 618 61 -a93c f 617 61 -a94b 5 619 61 -a95c 4 641 61 -a960 1b 642 61 -a97b 1 642 61 -FUNC a97c 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&, __true_type) -a97c c 182 28 -a988 1b 183 79 -a9a3 1 183 79 -FUNC a9a4 2f 0 void std::uninitialized_fill_n<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -a9a4 c 214 28 -a9b0 23 218 79 -a9d3 1 218 79 -FUNC a9d4 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>) -a9d4 c 308 28 -a9e0 1b 310 79 -a9fb 1 310 79 -a9fc c 200 71 -aa08 19 201 71 -aa21 42 203 71 -aa63 15 205 71 -aa85 11 992 34 -aa96 c 993 34 -aaa2 15 995 34 -aab7 c 996 34 -aac3 4a 998 34 -ab0d f 1001 34 -ab1c 1c 998 34 -ab38 1a 1003 34 -ab52 5 1004 34 -ab57 1f 1007 34 -ab76 1c 1008 34 -ab92 19 1009 34 -abab 19 1010 34 -abc4 1a 1011 34 -abde a 1004 34 -abe8 11 1001 34 -abf9 15 1014 34 -ac0e 13 1028 34 -ac21 b 1016 34 -ac2c 9 1018 34 -ac35 19 1023 34 -ac4e 23 1024 34 -ac71 19 1025 34 -ac8a 1d 1021 34 -aca7 1a 1018 34 -acc1 b 1028 34 -accc b 1016 34 -acd7 1e 1028 34 -acf5 1 1028 34 -ad06 16 438 34 -ad1c 37 439 34 -ad53 1 439 34 -ad64 37 212 42 -ad9b 1 212 42 -ada8 8 616 61 -adb0 2 617 61 -adb2 8 618 61 -adba f 617 61 -adc9 5 619 61 -adda 4 641 61 -adde 1b 642 61 -adf9 1 642 61 -FUNC adfa 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >* const&, __true_type) -adfa c 182 28 -ae06 1b 183 79 -ae21 1 183 79 -FUNC ae22 2f 0 void std::uninitialized_fill_n<__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >* const&) -ae22 c 214 28 -ae2e 23 218 79 -ae51 1 218 79 -FUNC ae52 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >*, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::_Hashtable_node > >**, unsigned long, __gnu_cxx::_Hashtable_node > >* const&, std::allocator<__gnu_cxx::_Hashtable_node > >*>) -ae52 c 308 28 -ae5e 1b 310 79 -ae79 1 310 79 -ae7a c 200 71 -ae86 19 201 71 -ae9f 42 203 71 -aee1 15 205 71 -af03 11 992 34 -af14 c 993 34 -af20 15 995 34 -af35 c 996 34 -af41 4a 998 34 -af8b f 1001 34 -af9a 1c 998 34 -afb6 1a 1003 34 -afd0 5 1004 34 -afd5 1f 1007 34 -aff4 1c 1008 34 -b010 19 1009 34 -b029 19 1010 34 -b042 1a 1011 34 -b05c a 1004 34 -b066 11 1001 34 -b077 15 1014 34 -b08c 13 1028 34 -b09f b 1016 34 -b0aa 9 1018 34 -b0b3 19 1023 34 -b0cc 23 1024 34 -b0ef 19 1025 34 -b108 1d 1021 34 -b125 1a 1018 34 -b13f b 1028 34 -b14a b 1016 34 -b155 1e 1028 34 -b173 1 1028 34 -b184 16 438 34 -b19a 37 439 34 -b1d1 1 439 34 -b1e2 37 212 42 -b219 1 212 42 -b227 12 424 61 -b239 2e 425 61 -b267 13 426 61 -b286 4 440 61 -b28a 1b 443 61 -b2a5 1 443 61 -b2b4 56 482 61 -b316 4 514 61 -b31a 4 515 61 -b31e 1b 517 61 -b339 1 517 61 -b346 8 616 61 -b34e 2 617 61 -b350 12 618 61 -b362 16 617 61 -b378 5 619 61 -b37d 1 619 61 -b38a 4 641 61 -b38e 1b 642 61 -b3a9 1 642 61 -FUNC b3aa 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >* const&, __true_type) -b3aa c 182 28 -b3b6 1b 183 79 -b3d1 1 183 79 -FUNC b3d2 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >* const&) -b3d2 c 214 28 -b3de 23 218 79 -b401 1 218 79 -FUNC b402 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >*, __gnu_cxx::_Hashtable_node > >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >* const&, std::allocator<__gnu_cxx::_Hashtable_node > >*>) -b402 c 308 28 -b40e 1b 310 79 -b429 1 310 79 -b436 8 616 61 -b43e 2 617 61 -b440 12 618 61 -b452 16 617 61 -b468 5 619 61 -b46d 1 619 61 -b47a 4 641 61 -b47e 1b 642 61 -b499 1 642 61 -FUNC b49a 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&, __true_type) -b49a c 182 28 -b4a6 1b 183 79 -b4c1 1 183 79 -FUNC b4c2 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -b4c2 c 214 28 -b4ce 23 218 79 -b4f1 1 218 79 -FUNC b4f2 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*>) -b4f2 c 308 28 -b4fe 1b 310 79 -b519 1 310 79 -b526 22 300 61 -b548 11 301 61 -b559 1 301 61 -b566 4 315 61 -b56a 1b 317 61 -b585 1 317 61 -b592 1b 326 61 -b5ad 1 326 61 -b5ba 4 384 61 -b5be 4 385 61 -b5c2 1b 387 61 -b5dd 1 387 61 -b5ea 1b 74 79 -b605 1 74 79 -b612 23 113 79 -b635 1 113 79 -b642 1b 254 79 -b65d 1 254 79 -b66a 15 763 71 -b67f 40 766 71 -b6bf 3 768 71 -b6c2 2 773 71 -FUNC b6c4 124 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::reserve(unsigned long) -b6c4 13 69 29 -b6d7 15 71 78 -b6ec e 72 78 -b6fa 19 73 78 -b713 e 75 78 -b721 28 78 78 -b749 3e 79 78 -b787 30 81 78 -b7b7 8 84 78 -b7bf 11 85 78 -b7d0 18 86 78 -b7f5 33 335 61 -b834 4 384 61 -b838 4 385 61 -b83c 1b 387 61 -b857 1 387 61 -b864 1b 74 79 -b87f 1 74 79 -b88c 23 113 79 -b8af 1 113 79 -b8bc 1b 254 79 -b8d7 1 254 79 -b8e6 56 354 61 -b948 4 384 61 -b94c 4 385 61 -b950 1b 387 61 -b96b 1 387 61 -b978 1b 74 79 -b993 1 74 79 -b9a0 23 113 79 -b9c3 1 113 79 -b9d0 1b 254 79 -b9eb 1 254 79 -FUNC b9ec 46e 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >* const&) -b9ec 14 311 29 -ba00 b 313 78 -ba0b 24 315 78 -ba2f 8 318 78 -ba37 23 319 78 -ba5a 15 320 78 -ba6f c 321 78 -ba7b 51 323 78 -bacc 14 327 78 -bae0 30 328 78 -bb10 35 330 78 -bb45 48 334 78 -bb8d 17 338 78 -bba4 43 339 78 -bbe7 14 342 78 -bbfb 1e 343 78 -bc19 e 348 78 -bc27 1e 349 78 -bc45 e 350 78 -bc53 1d 353 78 -bc70 8 354 78 -bc78 e 355 78 -bc86 27 357 78 -bcad 6 358 78 -bcb3 4d 361 78 -bd00 40 365 78 -bd40 18 367 78 -bd58 4d 368 78 -bda5 3e 379 78 -bde3 30 381 78 -be13 12 384 78 -be25 13 385 78 -be38 22 386 78 -FUNC be5a 2e 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node > >**, std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> > >, unsigned long, __gnu_cxx::_Hashtable_node > >* const&) -be5a c 657 29 -be66 22 658 71 -be94 15 580 34 -bea9 15 581 34 -bebe 37 582 34 -bef5 c 583 34 -bf01 1 583 34 -bf02 d 335 34 -bf0f 4e 337 34 -bf5d 4d 338 34 -bfaa d 134 42 -bfb7 65 135 42 -c028 22 300 61 -c04a 11 301 61 -c05b 1 301 61 -c068 4 315 61 -c06c 1b 317 61 -c087 1 317 61 -c094 1b 326 61 -c0af 1 326 61 -c0bc 4 384 61 -c0c0 4 385 61 -c0c4 1b 387 61 -c0df 1 387 61 -c0ec 1b 74 79 -c107 1 74 79 -c114 23 113 79 -c137 1 113 79 -c144 1b 254 79 -c15f 1 254 79 -c16c 15 763 71 -c181 40 766 71 -c1c1 3 768 71 -c1c4 2 773 71 -FUNC c1c6 124 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::reserve(unsigned long) -c1c6 13 69 29 -c1d9 15 71 78 -c1ee e 72 78 -c1fc 19 73 78 -c215 e 75 78 -c223 28 78 78 -c24b 3e 79 78 -c289 30 81 78 -c2b9 8 84 78 -c2c1 11 85 78 -c2d2 18 86 78 -c2f7 33 335 61 -c336 4 384 61 -c33a 4 385 61 -c33e 1b 387 61 -c359 1 387 61 -c366 1b 74 79 -c381 1 74 79 -c38e 23 113 79 -c3b1 1 113 79 -c3be 1b 254 79 -c3d9 1 254 79 -c3e8 56 354 61 -c44a 4 384 61 -c44e 4 385 61 -c452 1b 387 61 -c46d 1 387 61 -c47a 1b 74 79 -c495 1 74 79 -c4a2 23 113 79 -c4c5 1 113 79 -c4d2 1b 254 79 -c4ed 1 254 79 -FUNC c4ee 46e 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -c4ee 14 311 29 -c502 b 313 78 -c50d 24 315 78 -c531 8 318 78 -c539 23 319 78 -c55c 15 320 78 -c571 c 321 78 -c57d 51 323 78 -c5ce 14 327 78 -c5e2 30 328 78 -c612 35 330 78 -c647 48 334 78 -c68f 17 338 78 -c6a6 43 339 78 -c6e9 14 342 78 -c6fd 1e 343 78 -c71b e 348 78 -c729 1e 349 78 -c747 e 350 78 -c755 1d 353 78 -c772 8 354 78 -c77a e 355 78 -c788 27 357 78 -c7af 6 358 78 -c7b5 4d 361 78 -c802 40 365 78 -c842 18 367 78 -c85a 4d 368 78 -c8a7 3e 379 78 -c8e5 30 381 78 -c915 12 384 78 -c927 13 385 78 -c93a 22 386 78 -FUNC c95c 2e 0 std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> >::insert(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >**, std::vector<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*, std::allocator<__gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >*> > >, unsigned long, __gnu_cxx::_Hashtable_node, __gnu_cxx::hash, std::equal_to, std::allocator > >*> >* const&) -c95c c 657 29 -c968 22 658 71 -c996 15 580 34 -c9ab 15 581 34 -c9c0 37 582 34 -c9f7 c 583 34 -ca03 1 583 34 -ca04 d 335 34 -ca11 4e 337 34 -ca5f 4d 338 34 -caac d 134 42 -cab9 65 135 42 -FUNC cb1e 44 0 dwarf2reader::CUFunctionInfoHandler::StartCompilationUnit(unsigned long long, unsigned char, unsigned char, unsigned long long, unsigned char) -cb1e 39 135 42 -cb57 5 102 30 -cb5c 6 103 30 -FUNC cb62 41 0 dwarf2reader::CUFunctionInfoHandler::ProcessAttributeString(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, std::string const&) -cb62 18 136 30 -cb7a 10 137 30 -cb8a 17 138 30 -cba1 2 139 30 -cba3 1 139 30 -FUNC cba4 2a5 0 dwarf2reader::CUFunctionInfoHandler::ProcessAttributeUnsigned(unsigned long long, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm, unsigned long long) -cba4 2d 144 30 -cbd1 a 145 30 -cbdb 58 146 30 -cc33 35 147 30 -cc68 32 146 30 -cc9a 2a 147 30 -ccc4 82 152 30 -cd46 18 153 30 -cd5e 1c 152 30 -cd7a 2f 153 30 -cda9 e 154 30 -cdb7 28 155 30 -cddf 12 157 30 -cdf1 2 158 30 -cdf3 12 160 30 -ce05 2 161 30 -ce07 c 163 30 -ce13 2 164 30 -ce15 2c 166 30 -ce41 8 172 30 -ce49 1 172 30 -FUNC ce4a 19c 0 dwarf2reader::CULineInfoHandler::AddLine(unsigned long long, unsigned int, unsigned int, unsigned int) -ce4a 20 84 30 -ce6a 1c 85 30 -ce86 9c 87 30 -cf22 4f 89 30 -cf71 19 87 30 -cf8a 25 90 30 -cfaf 30 93 30 -cfdf 7 95 30 -FUNC cfe6 9f 0 dwarf2reader::CUFunctionInfoHandler::EndDIE(unsigned long long) -cfe6 19 174 30 -cfff 1c 175 30 -d01b 65 177 30 -d080 5 178 30 -d085 1 178 30 -FUNC d086 164 0 dwarf2reader::CUFunctionInfoHandler::StartDIE(unsigned long long, dwarf2reader::DwarfTag, std::list, std::allocator > > const&) -d086 20 111 30 -d0a6 1c 112 30 -d0c2 c 126 30 -d0ce 23 115 30 -d0f1 26 116 30 -d117 1a 117 30 -d131 d 118 30 -d13e 1b 119 30 -d159 5f 120 30 -d1b8 c 124 30 -d1c4 1c 115 30 -d1e0 3 126 30 -d1e3 7 129 30 -FUNC d1ea 73 0 dwarf2reader::CULineInfoHandler::DefineDir(std::string const&, unsigned int) -d1ea 13 52 30 -d1fd 45 54 30 -d242 15 55 30 -d257 6 56 30 -d25d 1 56 30 -FUNC d25e 23b 0 dwarf2reader::CULineInfoHandler::DefineFile(std::string const&, int, unsigned int, unsigned long long, unsigned long long) -d25e 2c 60 30 -d28a 45 62 30 -d2cf 2f 65 30 -d2fe 24 66 30 -d322 b 68 30 -d32d e 69 30 -d33b 19 71 30 -d354 17 72 30 -d36b 93 74 30 -d3fe 64 77 30 -d462 30 79 30 -d492 7 81 30 -d499 1 81 30 -d49a 14 38 30 -d4ae 36 40 30 -d4e4 41 43 30 -d525 41 44 30 -d566 67 45 30 -d5cd 10 46 30 -d5dd 13 45 30 -d5f0 15 47 30 -d605 e 48 30 -d613 3d 49 30 -d650 20 50 30 -d670 14 38 30 -d684 36 40 30 -d6ba 41 43 30 -d6fb 41 44 30 -d73c 67 45 30 -d7a3 10 46 30 -d7b3 13 45 30 -d7c6 15 47 30 -d7db e 48 30 -d7e9 3d 49 30 -d826 20 50 30 -d846 12 125 74 -d858 12 125 74 -d86a 13 55 32 -d87d 35 55 32 -d8b2 13 98 32 -d8c5 35 98 32 -d8fa c 35 32 -d906 d 35 32 -d913 1 35 32 -d914 d 22 32 -d921 40 22 32 -d961 1 22 32 -d962 c 89 70 -d96e 1e 90 70 -d998 14 208 34 -d9ac c 190 67 -d9b8 a 190 67 -d9c2 c 259 67 -d9ce 21 259 67 -d9ef 1 259 67 -FUNC d9f0 13 0 std::auto_ptr::operator->() const -d9f0 c 283 35 -d9fc 7 286 67 -da03 1 286 67 -da11 5c 104 68 -da6d 1 104 68 -FUNC da6e 28 0 bool std::operator==, std::allocator >(std::basic_string, std::allocator > const&, char const*) -da6e c 2139 37 -da7a 1c 2140 37 -FUNC da96 5d 0 std::basic_string, std::allocator > std::operator+, std::allocator >(std::basic_string, std::allocator > const&, char const*) -da96 d 2081 37 -daa3 12 2083 37 -dab5 1a 2084 37 -dacf 24 2085 37 -daf3 1 2085 37 -FUNC daf4 5d 0 std::basic_string, std::allocator > std::operator+, std::allocator >(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&) -daf4 d 2044 37 -db01 12 2046 37 -db13 1a 2047 37 -db2d 24 2048 37 -db51 1 2048 37 -db52 c 84 70 -db5e 17 85 70 -db75 1 85 70 -FUNC db76 2d 0 std::pair std::make_pair(char const*, unsigned int) -db76 c 144 37 -db82 21 145 70 -dba3 1 145 70 -dba4 c 84 70 -dbb0 23 85 70 -dbd3 1 85 70 -FUNC dbd4 3c 0 std::pair > std::make_pair >(unsigned long long, std::pair) -dbd4 1c 144 37 -dbf0 20 145 70 -dc10 d 89 70 -dc1d 64 90 70 -dc81 1 90 70 -dc82 c 89 70 -dc8e 2a 90 70 -dcb8 c 84 70 -dcc4 1d 85 70 -dce1 1 85 70 -FUNC dce2 3c 0 std::pair std::make_pair(unsigned long long, dwarf2reader::FunctionInfo*) -dce2 1c 144 37 -dcfe 20 145 70 -dd2a a 190 34 -dd40 d 194 34 -dd4d 1 194 34 -dd4e c 603 72 -dd5a c 603 72 -FUNC dd66 2b 0 std::vector >::begin() const -dd66 c 342 39 -dd72 1f 343 71 -dd91 1 343 71 -FUNC dd92 2c 0 std::vector >::end() const -dd92 c 360 39 -dd9e 20 361 71 -ddca 5 666 72 -ddcf 1 666 72 -dddd 2b 759 72 -FUNC de08 3c 0 std::vector >::size() const -de08 c 402 39 -de14 30 403 71 -FUNC de44 2b 0 std::vector >::begin() const -de44 c 342 39 -de50 1f 343 71 -de6f 1 343 71 -FUNC de70 2c 0 std::vector >::end() const -de70 c 360 39 -de7c 20 361 71 -dea9 31 759 72 -FUNC deda 3c 0 std::vector >::size() const -deda c 402 39 -dee6 30 403 71 -df16 c 603 72 -df22 c 603 72 -FUNC df2e 26 0 std::vector >::end() -df2e c 351 39 -df3a 1a 352 71 -df60 7 614 72 -df67 1 614 72 -FUNC df68 13 0 std::vector >::max_size() const -df68 c 407 39 -df74 7 408 71 -df7b 1 408 71 -df88 5 666 72 -df8d 1 666 72 -df9a d 623 72 -dfa7 5 624 72 -FUNC dfac 23 0 std::vector >::begin() -dfac c 333 39 -dfb8 17 334 71 -dfcf 1 334 71 -dfd0 c 35 32 -dfdc 26 35 32 -e00f 5c 104 68 -e06b 1 104 68 -e078 7 614 72 -e07f 1 614 72 -FUNC e080 35 0 dwarf2reader::SourceFileInfo::operator=(dwarf2reader::SourceFileInfo const&) -e080 c 35 39 -e08c 29 35 32 -e0b5 1 35 32 -FUNC e0b6 13 0 std::vector >::max_size() const -e0b6 c 407 39 -e0c2 7 408 71 -e0c9 1 408 71 -e0d6 d 623 72 -e0e3 5 624 72 -FUNC e0e8 3c 0 std::vector >::_M_range_check(unsigned long) const -e0e8 13 515 39 -e0fb 15 517 71 -e110 14 518 71 -FUNC e124 3c 0 std::vector >::_M_range_check(unsigned long) const -e124 13 515 39 -e137 15 517 71 -e14c 14 518 71 -e16c 2a 654 72 -FUNC e196 42 0 std::vector >::operator[](unsigned long) -e196 c 494 39 -e1a2 36 495 71 -FUNC e1d8 32 0 std::vector >::at(unsigned long) -e1d8 c 534 39 -e1e4 12 536 71 -e1f6 14 537 71 -e216 32 654 72 -FUNC e248 42 0 std::vector >::operator[](unsigned long) -e248 c 494 39 -e254 36 495 71 -FUNC e28a 32 0 std::vector >::at(unsigned long) -e28a c 534 39 -e296 12 536 71 -e2a8 14 537 71 -FUNC e2bc 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_end() -e2bc c 472 40 -e2c8 8 473 40 -FUNC e2d0 11 0 std::_Select1st > >::operator()(std::pair > const&) const -e2d0 c 550 41 -e2dc 5 551 41 -e2e1 1 551 41 -FUNC e2e2 53 0 std::less::operator()(unsigned long long const&, unsigned long long const&) const -e2e2 c 226 41 -e2ee 47 227 41 -e335 1 227 41 -FUNC e336 20 0 std::_Rb_tree_iterator > >::operator==(std::_Rb_tree_iterator > > const&) const -e336 c 209 41 -e342 14 210 40 -e356 c 84 70 -e362 18 85 70 -FUNC e37a 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_end() -e37a c 472 41 -e386 8 473 40 -FUNC e38e 11 0 std::_Select1st >::operator()(std::pair const&) const -e38e c 550 41 -e39a 5 551 41 -e39f 1 551 41 -FUNC e3a0 20 0 std::_Rb_tree_iterator >::operator==(std::_Rb_tree_iterator > const&) const -e3a0 c 209 41 -e3ac 14 210 40 -e3c0 c 84 70 -e3cc 18 85 70 -e3e4 c 180 34 -e3f0 13 181 34 -e403 1 181 34 -e410 22 409 34 -e43e d 207 42 -e44b 1 207 42 -FUNC e44c 35 0 bool __gnu_cxx::operator!= > >(__gnu_cxx::__normal_iterator > > const&, __gnu_cxx::__normal_iterator > > const&) -e44c d 699 42 -e459 28 700 72 -e481 1 700 72 -FUNC e482 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator > >, std::allocator >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::allocator) -e482 c 171 43 -e48e 2 173 73 -e490 1a 174 73 -e4aa 21 173 73 -e4cb 2 174 73 -e4cd 1 174 73 -FUNC e4ce 35 0 bool __gnu_cxx::operator!= > >(__gnu_cxx::__normal_iterator > > const&, __gnu_cxx::__normal_iterator > > const&) -e4ce d 699 43 -e4db 28 700 72 -e503 1 700 72 -FUNC e504 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator > >, std::allocator >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::allocator) -e504 c 171 43 -e510 2 173 73 -e512 1a 174 73 -e52c 21 173 73 -e54d 2 174 73 -e54f 1 174 73 -FUNC e550 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_value(std::_Rb_tree_node > > const*) -e550 c 480 43 -e55c 8 481 40 -FUNC e564 28 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_key(std::_Rb_tree_node > > const*) -e564 c 484 43 -e570 1c 485 40 -FUNC e58c 25 0 std::_Rb_tree_iterator >::operator--() -e58c c 194 43 -e598 14 196 40 -e5ac 5 197 40 -e5b1 1 197 40 -FUNC e5b2 25 0 std::_Rb_tree_iterator > >::operator--() -e5b2 c 194 43 -e5be 14 196 40 -e5d2 5 197 40 -e5d7 1 197 40 -FUNC e5d8 14 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_value(std::_Rb_tree_node_base const*) -e5d8 c 504 43 -e5e4 8 505 40 -FUNC e5ec 28 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_S_key(std::_Rb_tree_node_base const*) -e5ec c 508 43 -e5f8 1c 509 40 -FUNC e614 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_value(std::_Rb_tree_node > const*) -e614 c 480 43 -e620 8 481 40 -FUNC e628 28 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_key(std::_Rb_tree_node > const*) -e628 c 484 43 -e634 1c 485 40 -FUNC e650 14 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_value(std::_Rb_tree_node_base const*) -e650 c 504 43 -e65c 8 505 40 -FUNC e664 28 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_S_key(std::_Rb_tree_node_base const*) -e664 c 508 43 -e670 1c 509 40 -e698 7 614 72 -e69f 1 614 72 -e6ac 7 98 68 -e6b3 1 98 68 -e6c0 1d 85 68 -e6dd 5 86 68 -e6e2 10 88 68 -FUNC e6f2 2a 0 std::_Vector_base >::_M_allocate(unsigned long) -e6f2 c 116 43 -e6fe 1e 117 71 -e728 7 98 68 -e72f 1 98 68 -e73c 1d 85 68 -e759 5 86 68 -e75e 16 88 68 -FUNC e774 2a 0 std::_Vector_base >::_M_allocate(unsigned long) -e774 c 116 43 -e780 1e 117 71 -e7aa 3a 104 68 -e7f0 2a 654 72 -FUNC e81a 42 0 std::vector<__gnu_cxx::_Hashtable_node > >*, std::allocator<__gnu_cxx::_Hashtable_node > >*> >::operator[](unsigned long) const -e81a c 509 43 -e826 36 510 71 -FUNC e85c 4e 0 std::string* std::__copy_backward::copy_b(std::string*, std::string*, std::string*) -e85c c 408 61 -e868 14 411 61 -e87c 1e 412 61 -e89a b 411 61 -e8a5 5 413 61 -FUNC e8aa 2b 0 std::string* std::__copy_backward_aux(std::string*, std::string*, std::string*) -e8aa c 432 44 -e8b6 4 440 61 -e8ba 1b 443 61 -e8d5 1 443 61 -e8e4 56 482 61 -e946 4 514 61 -e94a 4 515 61 -e94e 1b 517 61 -e969 1 517 61 -FUNC e96a 69 0 void std::_Construct(std::string*, std::string const&) -e96a d 77 44 -e977 5c 81 73 -e9d3 1 81 73 -FUNC e9d4 54 0 dwarf2reader::SourceFileInfo* std::__copy_backward::copy_b(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*) -e9d4 c 408 61 -e9e0 1a 411 61 -e9fa 1e 412 61 -ea18 b 411 61 -ea23 5 413 61 -FUNC ea28 2b 0 dwarf2reader::SourceFileInfo* std::__copy_backward_aux(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo*) -ea28 c 432 44 -ea34 4 440 61 -ea38 1b 443 61 -ea53 1 443 61 -ea62 56 482 61 -eac4 4 514 61 -eac8 4 515 61 -eacc 1b 517 61 -eae7 1 517 61 -FUNC eae8 69 0 void std::_Construct(dwarf2reader::SourceFileInfo*, dwarf2reader::SourceFileInfo const&) -eae8 d 77 44 -eaf5 5c 81 73 -eb51 1 81 73 -eb52 c 69 70 -eb5e 20 69 70 -eb7e c 69 70 -eb8a 2a 69 70 -ebc1 5c 104 68 -ec1d 1 104 68 -ec2a 15 523 34 -ec3f 79 525 34 -ecb8 21 529 34 -ecd9 1 529 34 -ece6 14 229 42 -ed06 7 98 68 -ed0d 1 98 68 -ed1a 1d 85 68 -ed37 5 86 68 -ed3c 10 88 68 -FUNC ed4c 29 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_node() -ed4c c 355 44 -ed58 1d 356 40 -ed75 1 356 40 -FUNC ed76 b6 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_create_node(std::pair > const&) -ed76 d 363 44 -ed83 e 365 40 -ed91 3c 367 40 -edcd b 373 40 -edd8 11 367 40 -ede9 b 368 40 -edf4 12 370 40 -ee06 b 371 40 -ee11 13 368 40 -ee24 8 373 40 -FUNC ee2c cd 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair > const&) -ee2c d 787 44 -ee39 15 789 40 -ee4e 5d 792 40 -eeab 24 796 40 -eecf f 798 40 -eede 1b 799 40 -eef9 1 799 40 -FUNC eefa 1ef 0 std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::insert_unique(std::pair > const&) -eefa d 869 44 -ef07 e 871 40 -ef15 e 872 40 -ef23 4 873 40 -ef27 2 874 40 -ef29 6 876 40 -ef2f 35 877 40 -ef64 2a 878 40 -ef8e 6 874 40 -ef94 12 880 40 -efa6 a 881 40 -efb0 24 882 40 -efd4 51 883 40 -f025 b 885 40 -f030 36 886 40 -f066 4e 887 40 -f0b4 35 888 40 -f0e9 1 888 40 -FUNC f0ea 20 0 std::map, std::less, std::allocator > > >::insert(std::pair > const&) -f0ea c 359 45 -f0f6 14 360 45 -f116 7 98 68 -f11d 1 98 68 -f12a 1d 85 68 -f147 5 86 68 -f14c 1d 88 68 -f169 1 88 68 -FUNC f16a 29 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_node() -f16a c 355 45 -f176 1d 356 40 -f193 1 356 40 -FUNC f194 5f 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node(std::pair const&) -f194 d 363 45 -f1a1 e 365 40 -f1af 3c 367 40 -f1eb 8 373 40 -f1f3 1 373 40 -FUNC f1f4 cd 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&) -f1f4 d 787 45 -f201 15 789 40 -f216 5d 792 40 -f273 24 796 40 -f297 f 798 40 -f2a6 1b 799 40 -f2c1 1 799 40 -FUNC f2c2 1ef 0 std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::insert_unique(std::pair const&) -f2c2 d 869 45 -f2cf e 871 40 -f2dd e 872 40 -f2eb 4 873 40 -f2ef 2 874 40 -f2f1 6 876 40 -f2f7 35 877 40 -f32c 2a 878 40 -f356 6 874 40 -f35c 12 880 40 -f36e a 881 40 -f378 24 882 40 -f39c 51 883 40 -f3ed b 885 40 -f3f8 36 886 40 -f42e 4e 887 40 -f47c 35 888 40 -f4b1 1 888 40 -FUNC f4b2 20 0 std::map, std::allocator > >::insert(std::pair const&) -f4b2 c 359 45 -f4be 14 360 45 -FUNC f4d2 19 0 void std::_Destroy(std::string*) -f4d2 c 106 45 -f4de d 107 73 -f4eb 1 107 73 -FUNC f4ec 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __false_type) -f4ec c 119 45 -f4f8 2 121 73 -f4fa 13 122 73 -f50d 21 121 73 -f52e 2 122 73 -FUNC f530 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >) -f530 c 148 45 -f53c 1c 155 73 -f565 6 82 79 -f56b 2 85 79 -f56d 24 86 79 -f591 2c 85 79 -f5bd b 87 79 -f5c8 b 89 79 -f5d3 12 91 79 -f5e5 b 92 79 -f5f0 13 89 79 -f603 9 92 79 -f618 23 113 79 -f63b 1 113 79 -f648 1b 254 79 -f663 1 254 79 -FUNC f664 430 0 std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, std::string const&) -f664 14 249 47 -f678 14 251 78 -f68c 22 253 78 -f6ae f 255 78 -f6bd 12 256 78 -f6cf 55 257 78 -f724 4b 260 78 -f76f e 264 78 -f77d 15 265 78 -f792 e 266 78 -f7a0 1d 271 78 -f7bd 8 272 78 -f7c5 e 273 78 -f7d3 27 275 78 -f7fa 6 276 78 -f800 55 279 78 -f855 25 284 78 -f87a b 285 78 -f885 4f 286 78 -f8d4 3 284 78 -f8d7 13 279 78 -f8ea e 286 78 -f8f8 4d 298 78 -f945 30 299 78 -f975 12 302 78 -f987 13 303 78 -f99a 23 304 78 -f9bd 3 298 78 -f9c0 13 286 78 -f9d3 b 292 78 -f9de 39 294 78 -fa17 23 295 78 -fa3a 8 296 78 -fa42 16 294 78 -fa58 3 296 78 -fa5b 19 292 78 -fa74 19 298 78 -fa8d 7 304 78 -FUNC fa94 70 0 std::vector >::push_back(std::string const&) -fa94 c 602 47 -faa0 10 604 71 -fab0 1e 606 71 -face 11 607 71 -fadf 25 610 71 -FUNC fb04 19 0 void std::_Destroy(dwarf2reader::SourceFileInfo*) -fb04 c 106 47 -fb10 d 107 73 -fb1d 1 107 73 -FUNC fb1e 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __false_type) -fb1e c 119 47 -fb2a 2 121 73 -fb2c 13 122 73 -fb3f 21 121 73 -fb60 2 122 73 -FUNC fb62 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >) -fb62 c 148 47 -fb6e 1c 155 73 -fb97 6 82 79 -fb9d 2 85 79 -fb9f 24 86 79 -fbc3 2c 85 79 -fbef b 87 79 -fbfa b 89 79 -fc05 12 91 79 -fc17 b 92 79 -fc22 13 89 79 -fc35 9 92 79 -fc4a 23 113 79 -fc6d 1 113 79 -fc7a 1b 254 79 -fc95 1 254 79 -FUNC fc96 43d 0 std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, dwarf2reader::SourceFileInfo const&) -fc96 14 249 47 -fcaa 14 251 78 -fcbe 22 253 78 -fce0 f 255 78 -fcef 12 256 78 -fd01 55 257 78 -fd56 4b 260 78 -fda1 e 264 78 -fdaf 15 265 78 -fdc4 e 266 78 -fdd2 1d 271 78 -fdef 8 272 78 -fdf7 e 273 78 -fe05 27 275 78 -fe2c 6 276 78 -fe32 55 279 78 -fe87 25 284 78 -feac b 285 78 -feb7 4f 286 78 -ff06 3 284 78 -ff09 13 279 78 -ff1c e 286 78 -ff2a 4d 298 78 -ff77 36 299 78 -ffad 12 302 78 -ffbf 13 303 78 -ffd2 2a 304 78 -fffc 3 298 78 -ffff 13 286 78 -10012 b 292 78 -1001d 39 294 78 -10056 23 295 78 -10079 8 296 78 -10081 16 294 78 -10097 3 296 78 -1009a 19 292 78 -100b3 19 298 78 -100cc 7 304 78 -100d3 1 304 78 -FUNC 100d4 70 0 std::vector >::push_back(dwarf2reader::SourceFileInfo const&) -100d4 c 602 47 -100e0 10 604 71 -100f0 1e 606 71 -1010e 11 607 71 -1011f 25 610 71 -FUNC 10144 16c 0 Start -10144 17 610 71 -1015b 40 49 48 -1019b 6 51 48 -101a1 3f 53 48 -101e0 7 54 48 -101e7 5 55 48 -101ec 2a 58 48 -10216 61 61 48 -10277 7 62 48 -1027e 2 63 48 -10280 29 66 48 -102a9 7 67 48 -FUNC 102b0 108 0 Usage -102b0 19 70 48 -102c9 30 71 48 -102f9 29 73 48 -10322 30 74 48 -10352 30 75 48 -10382 30 76 48 -103b2 6 77 48 -FUNC 103b8 3af 0 SetupOptions -103b8 21 80 48 -103d9 8 82 48 -103e1 6 85 48 -103e7 10 86 48 -103f7 2e 88 48 -10425 2f 94 48 -10454 2a 91 48 -1047e 23 95 48 -104a1 3e 97 48 -104df 11 98 48 -104f0 7c 99 48 -1056c c 100 48 -10578 5 99 48 -1057d 3e 101 48 -105bb 11 102 48 -105cc 3e 103 48 -1060a 11 104 48 -1061b 37 106 48 -10652 b 107 48 -1065d c 108 48 -10669 b 113 48 -10674 c 114 48 -10680 14 119 48 -10694 30 120 48 -106c4 b 121 48 -106cf c 122 48 -106db 81 127 48 -1075c b 128 48 -10767 1 128 48 -FUNC 10768 a7 0 main -10768 13 131 48 -1077b 37 132 48 -107b2 1e 135 48 -107d0 e 136 48 -107de 8 137 48 -107e6 17 139 48 -107fd c 141 48 -10809 6 142 48 -1080f 1 142 48 -10810 c 47 49 -1081c 1a 48 49 -10836 2 49 49 -10838 c 47 49 -10844 1a 48 49 -1085e 2 49 49 -FUNC 10860 cb 0 google_breakpad::FileID::FileIdentifier(unsigned char*) -10860 f 51 49 -1086f 16 52 49 -10885 6 53 49 -1088b f 54 49 -1089a b 57 49 -108a5 7 62 49 -108ac 2 63 49 -108ae 1c 64 49 -108ca 32 63 49 -108fc b 67 49 -10907 12 68 49 -10919 10 70 49 -10929 2 71 49 -1092b 1 71 49 -FUNC 1092c f2 0 google_breakpad::FileID::MachoIdentifier(int, unsigned char*) -1092c 10 73 49 -1093c 15 74 49 -10951 20 76 49 -10971 f 77 49 -10980 20 79 49 -109a0 c 80 49 -109ac 69 82 49 -10a15 9 83 49 -FUNC 10a1e fb 0 google_breakpad::FileID::ConvertIdentifierToString(unsigned char const*, char*, int) -10a1e c 87 49 -10a2a 7 88 49 -10a31 c 89 49 -10a3d 15 90 49 -10a52 12 91 49 -10a64 18 93 49 -10a7c e 94 49 -10a8a 2b 96 49 -10ab5 2b 97 49 -10ae0 17 89 49 -10af7 20 101 49 -10b17 2 102 49 -10b19 1 102 49 -FUNC 10b1a 13 0 NXHostByteOrder -10b1a c 144 56 -10b26 5 147 56 -10b2b 2 153 56 -10b2d 1 153 56 -10b2e c 56 51 -10b3a 1a 57 51 -10b54 1e 58 51 -10b72 2 59 51 -10b74 c 56 51 -10b80 1a 57 51 -10b9a 1e 58 51 -10bb8 2 59 51 -10bba c 61 51 -10bc6 e 62 51 -10bd4 11 63 51 -10be5 2 64 51 -10be7 1 64 51 -10be8 c 61 51 -10bf4 e 62 51 -10c02 11 63 51 -10c13 2 64 51 -10c15 1 64 51 -FUNC 10c16 477 0 MacFileUtilities::MachoID::UpdateCRC(unsigned char*, unsigned long) -10c16 c 74 51 -10c22 11 82 51 -10c33 14 83 51 -10c47 5 86 51 -10c4c 9 87 51 -10c55 7 88 51 -10c5c 18b 90 51 -10de7 6 91 51 -10ded 14 89 51 -10e01 23 93 51 -10e24 23 94 51 -10e47 d 86 51 -10e54 f 98 51 -10e63 6 100 51 -10e69 18b 101 51 -10ff4 6 102 51 -10ffa c 99 51 -11006 13 105 51 -11019 8 106 51 -11021 10 104 51 -11031 23 108 51 -11054 23 109 51 -11077 14 110 51 -1108b 2 112 51 -1108d 1 112 51 -FUNC 1108e 2c 0 MacFileUtilities::MachoID::UpdateMD5(unsigned char*, unsigned long) -1108e c 114 51 -1109a 1e 115 51 -110b8 2 116 51 -FUNC 110ba 2c 0 MacFileUtilities::MachoID::UpdateSHA1(unsigned char*, unsigned long) -110ba c 118 51 -110c6 1e 119 51 -110e4 2 120 51 -FUNC 110e6 121 0 MacFileUtilities::MachoID::Update(MacFileUtilities::MachoWalker*, unsigned long, unsigned long) -110e6 f 122 51 -110f5 1b 123 51 -11110 e 129 51 -1111e 5 130 51 -11123 9 131 51 -1112c 7 132 51 -11133 a 133 51 -1113d 6 135 51 -11143 7 136 51 -1114a 35 139 51 -1117f 6c 142 51 -111eb 10 143 51 -111fb a 130 51 -11205 2 145 51 -11207 1 145 51 -FUNC 11208 cf 0 MacFileUtilities::MachoID::UUIDCommand(int, unsigned char*) -11208 14 147 51 -1121c 25 149 51 -11241 7 151 51 -11248 19 152 51 -11261 9 153 51 -1126a 8 157 51 -11272 1f 158 51 -11291 9 159 51 -1129a 36 162 51 -112d0 7 163 51 -112d7 1 163 51 -FUNC 112d8 224 0 MacFileUtilities::MachoID::IDCommand(int, unsigned char*) -112d8 15 165 51 -112ed 25 167 51 -11312 7 169 51 -11319 19 170 51 -11332 c 171 51 -1133e c 175 51 -1134a 6 180 51 -11350 7 181 51 -11357 9 182 51 -11360 9 183 51 -11369 28 185 51 -11391 33 186 51 -113c4 1e 185 51 -113e2 10 189 51 -113f2 10 190 51 -11402 10 191 51 -11412 d 192 51 -1141f 10 193 51 -1142f 10 194 51 -1143f 10 195 51 -1144f d 196 51 -1145c 17 197 51 -11473 17 198 51 -1148a 17 199 51 -114a1 14 200 51 -114b5 9 202 51 -114be 36 205 51 -114f4 8 206 51 -FUNC 114fc d1 0 MacFileUtilities::MachoID::Adler32(int) -114fc 14 208 51 -11510 25 209 51 -11535 27 210 51 -1155c d 211 51 -11569 19 213 51 -11582 9 214 51 -1158b 3b 216 51 -115c6 7 217 51 -115cd 1 217 51 -FUNC 115ce f8 0 MacFileUtilities::MachoID::MD5(int, unsigned char*) -115ce 14 219 51 -115e2 25 220 51 -11607 27 221 51 -1162e 19 223 51 -11647 19 224 51 -11660 9 225 51 -11669 17 227 51 -11680 9 228 51 -11689 36 231 51 -116bf 7 232 51 -FUNC 116c6 f8 0 MacFileUtilities::MachoID::SHA1(int, unsigned char*) -116c6 14 234 51 -116da 25 235 51 -116ff 27 236 51 -11726 19 238 51 -1173f 19 239 51 -11758 9 240 51 -11761 17 242 51 -11778 9 243 51 -11781 36 246 51 -117b7 7 247 51 -FUNC 117be 378 0 MacFileUtilities::MachoID::WalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*) -117be 2b 251 51 -117e9 6 252 51 -117ef e 254 51 -117fd 38 257 51 -11835 f 258 51 -11844 9 260 51 -1184d 17 261 51 -11864 20 266 51 -11884 f 267 51 -11893 d 271 51 -118a0 c 273 51 -118ac 38 274 51 -118e4 f 275 51 -118f3 9 277 51 -118fc 1f 278 51 -1191b 14 282 51 -1192f 2b 283 51 -1195a d 285 51 -11967 19 273 51 -11980 e 287 51 -1198e 38 290 51 -119c6 f 291 51 -119d5 9 293 51 -119de 17 294 51 -119f5 20 299 51 -11a15 f 300 51 -11a24 d 304 51 -11a31 c 306 51 -11a3d 38 307 51 -11a75 f 308 51 -11a84 9 310 51 -11a8d 1f 311 51 -11aac 1a 315 51 -11ac6 39 316 51 -11aff d 318 51 -11b0c 11 306 51 -11b1d 10 323 51 -11b2d 9 324 51 -FUNC 11b36 95 0 MacFileUtilities::MachoID::UUIDWalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*) -11b36 1e 328 51 -11b54 a 329 51 -11b5e 6 331 51 -11b64 2f 333 51 -11b93 9 335 51 -11b9c 6 337 51 -11ba2 14 338 51 -11bb6 9 340 51 -11bbf a 344 51 -11bc9 2 345 51 -11bcb 1 345 51 -FUNC 11bcc 95 0 MacFileUtilities::MachoID::IDWalkerCB(MacFileUtilities::MachoWalker*, load_command*, long long, bool, void*) -11bcc 1e 349 51 -11bea a 350 51 -11bf4 6 351 51 -11bfa 2f 353 51 -11c29 9 354 51 -11c32 6 356 51 -11c38 14 357 51 -11c4c 9 359 51 -11c55 a 363 51 -11c5f 2 364 51 -11c61 1 364 51 -FUNC 11c62 1c 0 _OSSwapInt32 -11c62 f 53 55 -11c71 8 55 55 -11c79 3 56 55 -11c7c 2 57 55 -FUNC 11c7e 19 0 NXSwapInt -11c7e f 52 56 -11c8d 8 54 56 -11c95 2 55 56 -11c97 1 55 56 -FUNC 11c98 13 0 NXHostByteOrder -11c98 c 144 56 -11ca4 5 147 56 -11ca9 2 153 56 -11cab 1 153 56 -11cac c 52 54 -11cb8 12 54 54 -11cca 1a 55 54 -11ce4 2 56 54 -11ce6 c 52 54 -11cf2 12 54 54 -11d04 1a 55 54 -11d1e 2 56 54 -11d20 c 58 54 -11d2c a 59 54 -11d36 d 60 54 -11d43 2 61 54 -11d45 1 61 54 -11d46 c 58 54 -11d52 a 59 54 -11d5c d 60 54 -11d69 2 61 54 -11d6b 1 61 54 -FUNC 11d6c 37 0 MacFileUtilities::MachoWalker::ValidateCPUType(int) -11d6c c 63 54 -11d78 6 66 54 -11d7e 8 67 54 -11d86 6 68 54 -11d8c b 69 54 -11d97 7 74 54 -11d9e 3 80 54 -11da1 2 81 54 -11da3 1 81 54 -FUNC 11da4 50 0 MacFileUtilities::MachoWalker::ReadBytes(void*, unsigned long, long long) -11da4 18 96 54 -11dbc 36 97 54 -11df2 2 98 54 -FUNC 11df4 73 0 MacFileUtilities::MachoWalker::CurrentHeader(mach_header_64*, long long*) -11df4 c 100 54 -11e00 a 101 54 -11e0a 37 102 54 -11e41 11 103 54 -11e52 9 104 54 -11e5b a 107 54 -11e65 2 108 54 -11e67 1 108 54 -FUNC 11e68 2a6 0 MacFileUtilities::MachoWalker::FindHeader(int, long long&) -11e68 c 110 54 -11e74 15 111 54 -11e89 31 114 54 -11eba c 115 54 -11ec6 10 117 54 -11ed6 4 120 54 -11eda 14 121 54 -11eee 4 122 54 -11ef2 11 129 54 -11f03 28 124 54 -11f2b c 126 54 -11f37 31 133 54 -11f68 c 134 54 -11f74 14 136 54 -11f88 b 137 54 -11f93 8 139 54 -11f9b c 140 54 -11fa7 10 142 54 -11fb7 c 143 54 -11fc3 10 146 54 -11fd3 31 148 54 -12004 c 149 54 -12010 f 151 54 -1201f 14 152 54 -12033 16 154 54 -12049 c 158 54 -12055 31 159 54 -12086 9 160 54 -1208f f 162 54 -1209e 1c 163 54 -120ba 8 165 54 -120c2 10 166 54 -120d2 9 167 54 -120db 16 170 54 -120f1 11 158 54 -12102 a 174 54 -1210c 2 175 54 -FUNC 1210e 109 0 MacFileUtilities::MachoWalker::WalkHeaderCore(long long, unsigned int, bool) -1210e 1e 224 54 -1212c c 225 54 -12138 2f 227 54 -12167 c 228 54 -12173 6 230 54 -12179 14 231 54 -1218d 5b 234 54 -121e8 12 237 54 -121fa 11 225 54 -1220b a 240 54 -12215 2 241 54 -12217 1 241 54 -FUNC 12218 10e 0 MacFileUtilities::MachoWalker::WalkHeader64AtOffset(long long) -12218 18 203 54 -12230 2f 205 54 -1225f c 206 54 -1226b e 208 54 -12279 6 209 54 -1227f 14 210 54 -12293 9 212 54 -1229c a 213 54 -122a6 f 214 54 -122b5 15 215 54 -122ca 2b 216 54 -122f5 a 217 54 -122ff a 218 54 -12309 11 219 54 -1231a a 220 54 -12324 2 221 54 -FUNC 12326 143 0 MacFileUtilities::MachoWalker::WalkHeaderAtOffset(long long) -12326 18 177 54 -1233e 2f 179 54 -1236d c 180 54 -12379 e 182 54 -12387 6 183 54 -1238d 14 184 54 -123a1 2e 189 54 -123cf 7 190 54 -123d6 9 192 54 -123df a 193 54 -123e9 f 194 54 -123f8 15 195 54 -1240d 2b 196 54 -12438 a 197 54 -12442 a 198 54 -1244c 11 199 54 -1245d a 200 54 -12467 2 201 54 -12469 1 201 54 -FUNC 1246a 99 0 MacFileUtilities::MachoWalker::WalkHeader(int) -1246a c 83 54 -12476 15 84 54 -1248b 1d 86 54 -124a8 d 87 54 -124b5 21 88 54 -124d6 21 90 54 -124f7 a 93 54 -12501 2 94 54 -12503 1 94 54 -FUNC 12504 1c 0 _OSSwapInt32 -12504 f 53 55 -12513 8 55 55 -1251b 3 56 55 -1251e 2 57 55 -FUNC 12520 2b 0 _OSSwapInt64 -12520 12 64 55 -12532 11 69 55 -12543 6 70 55 -12549 2 71 55 -1254b 1 71 55 -FUNC 1254c 19 0 NXSwapLong -1254c f 61 56 -1255b 8 63 56 -12563 2 64 56 -12565 1 64 56 -FUNC 12566 1f 0 NXSwapLongLong -12566 12 70 56 -12578 b 72 56 -12583 2 73 56 -12585 1 73 56 -FUNC 12586 32 0 breakpad_swap_uuid_command(breakpad_uuid_command*, NXByteOrder) -12586 c 37 57 -12592 11 39 57 -125a3 13 40 57 -125b6 2 41 57 -FUNC 125b8 da 0 breakpad_swap_segment_command_64(segment_command_64*, NXByteOrder) -125b8 c 44 57 -125c4 11 46 57 -125d5 13 47 57 -125e8 17 49 57 -125ff 17 50 57 -12616 17 51 57 -1262d 17 52 57 -12644 13 54 57 -12657 13 55 57 -1266a 13 56 57 -1267d 13 57 57 -12690 2 58 57 -FUNC 12692 a4 0 breakpad_swap_mach_header_64(mach_header_64*, NXByteOrder) -12692 c 61 57 -1269e 11 63 57 -126af 13 64 57 -126c2 13 65 57 -126d5 13 66 57 -126e8 13 67 57 -126fb 13 68 57 -1270e 13 69 57 -12721 13 70 57 -12734 2 71 57 -FUNC 12736 1d1 0 breakpad_swap_section_64(section_64*, unsigned int, NXByteOrder) -12736 d 75 57 -12743 c 77 57 -1274f 33 78 57 -12782 33 79 57 -127b5 2d 81 57 -127e2 2d 82 57 -1280f 2d 83 57 -1283c 2d 84 57 -12869 2d 85 57 -12896 2d 86 57 -128c3 2d 87 57 -128f0 11 77 57 -12901 6 89 57 -12907 1 89 57 -12908 12 9 58 -1291a 4f 11 58 -12969 2 12 58 -1296b 1 12 58 -1296c 12 9 58 -1297e 4f 11 58 -129cd 2 12 58 -129cf 1 12 58 -129d0 13 14 58 -129e3 2a 14 58 -12a0d 1 14 58 -12a0e 13 14 58 -12a21 2a 14 58 -12a4b 1 14 58 -12a4c 13 14 58 -12a5f 2a 14 58 -12a89 1 14 58 -FUNC 12a8a bb 0 dwarf2reader::ByteReader::SetOffsetSize(unsigned char) -12a8a 19 16 58 -12aa3 a 17 58 -12aad 48 18 58 -12af5 6 19 58 -12afb 23 20 58 -12b1e 21 22 58 -12b3f 6 24 58 -12b45 1 24 58 -FUNC 12b46 bb 0 dwarf2reader::ByteReader::SetAddressSize(unsigned char) -12b46 19 26 58 -12b5f a 27 58 -12b69 48 28 58 -12bb1 6 29 58 -12bb7 23 30 58 -12bda 21 32 58 -12bfb 6 34 58 -12c01 1 34 58 -FUNC 12c02 a2 0 dwarf2reader::ByteReader::ReadFourBytes(char const*) const -12c02 c 24 59 -12c0e c 25 64 -12c1a d 26 64 -12c27 f 27 64 -12c36 f 28 64 -12c45 b 29 64 -12c50 27 30 64 -12c77 2b 32 64 -12ca2 2 34 64 -FUNC 12ca4 40e 0 dwarf2reader::ByteReader::ReadEightBytes(char const*) const -12ca4 11 36 59 -12cb5 1a 37 64 -12ccf 1b 38 64 -12cea 1d 39 64 -12d07 1d 40 64 -12d24 1d 41 64 -12d41 1d 42 64 -12d5e 1d 43 64 -12d7b 1d 44 64 -12d98 f 45 64 -12da7 18f 47 64 -12f36 172 50 64 -130a8 a 52 64 -130b2 2 52 64 -FUNC 130b4 a6 0 ReadInitialLength -130b4 15 29 60 -130c9 18 30 60 -130e1 6 31 60 -130e7 d 35 60 -130f4 13 36 60 -13107 9 37 60 -13110 1a 38 60 -1312a 13 40 60 -1313d 9 41 60 -13146 12 43 60 -13158 2 44 60 -1315a 1f 47 60 -13179 65 50 60 -131de 1f 47 60 -131fd 65 50 60 -FUNC 13262 393 0 dwarf2reader::CompilationUnit::SkipAttribute(char const*, dwarf2reader::DwarfForm) -13262 14 133 60 -13276 82 136 60 -132f8 1f 139 60 -13317 a 140 60 -13321 21 141 60 -13342 c 147 60 -1334e e 151 60 -1335c e 155 60 -1336a e 159 60 -13378 27 162 60 -1339f 1c 166 60 -133bb 10 167 60 -133cb 1c 171 60 -133e7 10 172 60 -133f7 1e 175 60 -13415 56 180 60 -1346b d 181 60 -13478 1e 182 60 -13496 11 183 60 -134a7 1e 184 60 -134c5 24 189 60 -134e9 26 192 60 -1350f 23 195 60 -13532 22 198 60 -13554 15 199 60 -13569 1b 203 60 -13584 30 206 60 -135b4 30 208 60 -135e4 a 209 60 -135ee 7 210 60 -135f5 1 210 60 -FUNC 135f6 29b 0 dwarf2reader::CompilationUnit::ReadHeader() -135f6 14 217 60 -1360a 9 218 60 -13613 4e 221 60 -13661 17 223 60 -13678 a 224 60 -13682 f 225 60 -13691 4e 227 60 -136df 1e 228 60 -136fd 6 229 60 -13703 5e 231 60 -13761 1e 232 60 -1377f 18 233 60 -13797 4c 235 60 -137e3 1d 236 60 -13800 1c 237 60 -1381c 5 238 60 -13821 9 240 60 -1382a 60 245 60 -1388a 7 247 60 -13891 1 247 60 -FUNC 13892 a57 0 dwarf2reader::CompilationUnit::ProcessAttribute(unsigned long long, char const*, dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm) -13892 24 299 60 -138b6 8a 302 60 -13940 1f 307 60 -1395f a 308 60 -13969 36 309 60 -1399f 5b 316 60 -139fa c 317 60 -13a06 5b 322 60 -13a61 e 323 60 -13a6f 55 328 60 -13ac4 e 329 60 -13ad2 55 334 60 -13b27 e 335 60 -13b35 6 338 60 -13b3b 9a 340 60 -13bd5 33 341 60 -13c08 25 340 60 -13c2d 5c 348 60 -13c89 10 349 60 -13c99 5c 354 60 -13cf5 10 355 60 -13d05 55 359 60 -13d5a 1e 360 60 -13d78 56 365 60 -13dce d 366 60 -13ddb 55 368 60 -13e30 1e 369 60 -13e4e 11 370 60 -13e5f 55 372 60 -13eb4 1e 373 60 -13ed2 29 378 60 -13efb 4a 380 60 -13f45 f 381 60 -13f54 29 385 60 -13f7d 4c 387 60 -13fc9 11 388 60 -13fda 1b 392 60 -13ff5 4c 394 60 -14041 11 395 60 -14052 22 399 60 -14074 4e 401 60 -140c2 15 402 60 -140d7 3c 406 60 -14113 1b 408 60 -1412e 54 409 60 -14182 f 411 60 -14191 9a 413 60 -1422b 24 414 60 -1424f 25 413 60 -14274 30 418 60 -142a4 30 420 60 -142d4 a 421 60 -142de b 422 60 -142e9 1 422 60 -142ea 1f 489 60 -14309 3a 491 60 -14343 a 492 60 -1434d 6 493 60 -14353 1 493 60 -14354 1f 489 60 -14373 3a 491 60 -143ad a 492 60 -143b7 6 493 60 -143bd 1 493 60 -FUNC 143be b5 0 dwarf2reader::CompilationUnit::ProcessDIE(unsigned long long, char const*, dwarf2reader::CompilationUnit::Abbrev const&) -143be 19 426 60 -143d7 13 427 60 -143ea 46 430 60 -14430 3a 427 60 -1446a 3 432 60 -1446d 6 433 60 -14473 1 433 60 -FUNC 14474 85 0 dwarf2reader::CompilationUnit::SkipDIE(char const*, dwarf2reader::CompilationUnit::Abbrev const&) -14474 c 122 60 -14480 13 123 60 -14493 27 126 60 -144ba 3a 123 60 -144f4 3 128 60 -144f7 2 129 60 -144f9 1 129 60 -FUNC 144fa be4 0 dwarf2reader::LineInfo::ProcessOneOpcode(dwarf2reader::ByteReader*, dwarf2reader::LineInfoHandler*, dwarf2reader::LineInfoHeader const&, char const*, dwarf2reader::LineStateMachine*, unsigned long*, unsigned long, bool*) -144fa 18 593 60 -14512 a 594 60 -1451c 18 596 60 -14534 8 597 60 -1453c 5 598 60 -14541 19 602 60 -1455a f 603 60 -14569 50 605 60 -145b9 46 607 60 -145ff e0 610 60 -146df 6 612 60 -146e5 22 615 60 -14707 22 616 60 -14729 7 617 60 -14730 b 618 60 -1473b f 619 60 -1474a 5a 623 60 -147a4 7 625 60 -147ab b 626 60 -147b6 f 627 60 -147c5 28 631 60 -147ed e 632 60 -147fb 144 635 60 -1493f 6 637 60 -14945 9e 640 60 -149e3 5 642 60 -149e8 22 644 60 -14a0a e 645 60 -14a18 1c 646 60 -14a34 2b 652 60 -14a5f b 653 60 -14a6a 22 658 60 -14a8c e 659 60 -14a9a 8 660 60 -14aa2 5 662 60 -14aa7 22 664 60 -14ac9 e 665 60 -14ad7 9 666 60 -14ae0 5 668 60 -14ae5 12 670 60 -14af7 5 672 60 -14afc 7 674 60 -14b03 5 676 60 -14b08 16 678 60 -14b1e 9 679 60 -14b27 d9 682 60 -14c00 6 684 60 -14c06 1f 687 60 -14c25 5 689 60 -14c2a 40 693 60 -14c6a d6 696 60 -14d40 6 698 60 -14d46 1c 701 60 -14d62 5 703 60 -14d67 1f 706 60 -14d86 d 707 60 -14d93 13 708 60 -14da6 26 710 60 -14dcc 5 711 60 -14dd1 50 713 60 -14e21 7 715 60 -14e28 b 716 60 -14e33 f 717 60 -14e42 18 725 60 -14e5a f 726 60 -14e69 5 728 60 -14e6e 6 730 60 -14e74 28 732 60 -14e9c d 733 60 -14ea9 22 735 60 -14ecb e 736 60 -14ed9 22 739 60 -14efb e 740 60 -14f09 22 743 60 -14f2b e 744 60 -14f39 a 746 60 -14f43 fd 748 60 -15040 a 758 60 -1504a 9 759 60 -15053 1c 761 60 -1506f d 762 60 -1507c e 763 60 -1508a 2e 759 60 -150b8 b 769 60 -150c3 10 770 60 -150d3 b 771 60 -FUNC 150de 14b 0 dwarf2reader::LineInfo::ReadLines() -150de e 773 60 -150ec 9 778 60 -150f5 17 782 60 -1510c 8 783 60 -15114 6 785 60 -1511a 9 787 60 -15123 5 788 60 -15128 19 789 60 -15141 5 790 60 -15146 4a 793 60 -15190 6 794 60 -15196 4a 796 60 -151e0 a 797 60 -151ea f 790 60 -151f9 15 788 60 -1520e 14 801 60 -15222 7 802 60 -15229 1 802 60 -FUNC 1522a 4fd 0 dwarf2reader::CompilationUnit::ReadAbbrevs() -1522a 18 60 60 -15242 e 61 60 -15250 58 65 60 -152a8 38 66 60 -152e0 44 65 60 -15324 2a 66 60 -1534e 45 68 60 -15393 16 69 60 -153a9 1d 75 60 -153c6 6 76 60 -153cc 40 77 60 -1540c b 80 60 -15417 1f 82 60 -15436 e 84 60 -15444 6 77 60 -1544a 1f 68 60 -15469 a 84 60 -15473 1d 79 60 -15490 6 86 60 -15496 a 87 60 -154a0 3d 89 60 -154dd 1f 90 60 -154fc a 91 60 -15506 6 92 60 -1550c 3d 94 60 -15549 1d 95 60 -15566 5 96 60 -1556b 3d 98 60 -155a8 1f 101 60 -155c7 a 102 60 -155d1 3d 104 60 -1560e 1f 105 60 -1562d a 106 60 -15637 c 107 60 -15643 6 111 60 -15649 6 112 60 -1564f 32 113 60 -15681 47 115 60 -156c8 30 116 60 -156f8 24 79 60 -1571c b 118 60 -15727 1 118 60 -FUNC 15728 5dc 0 dwarf2reader::LineInfo::ReadHeader() -15728 18 503 60 -15740 9 504 60 -15749 17 508 60 -15760 a 510 60 -1576a f 511 60 -15779 60 512 60 -157d9 44 516 60 -1581d 1e 518 60 -1583b 6 519 60 -15841 1e 521 60 -1585f 18 522 60 -15877 1d 524 60 -15894 5 525 60 -15899 20 527 60 -158b9 5 528 60 -158be c 530 60 -158ca 5 531 60 -158cf 1d 533 60 -158ec 5 534 60 -158f1 1d 536 60 -1590e 5 537 60 -15913 45 539 60 -15958 1f 540 60 -15977 19 541 60 -15990 15 542 60 -159a5 1f 539 60 -159c4 30 543 60 -159f4 5 544 60 -159f9 14 542 60 -15a0d e 548 60 -15a1b 7 549 60 -15a22 5 550 60 -15a27 6 551 60 -15a2d 8b 552 60 -15ab8 28 553 60 -15ae0 5 554 60 -15ae5 16 550 60 -15afb 25 552 60 -15b20 5 557 60 -15b25 e 560 60 -15b33 7 561 60 -15b3a 5 563 60 -15b3f 6 564 60 -15b45 28 565 60 -15b6d 22 567 60 -15b8f a 568 60 -15b99 22 570 60 -15bbb a 571 60 -15bc5 22 573 60 -15be7 a 574 60 -15bf1 ba 576 60 -15cab 5 577 60 -15cb0 16 563 60 -15cc6 25 576 60 -15ceb 5 580 60 -15cf0 9 582 60 -15cf9 b 583 60 -FUNC 15d04 3d 0 dwarf2reader::LineInfo::Start() -15d04 c 495 60 -15d10 b 496 60 -15d1b b 497 60 -15d26 19 498 60 -15d3f 2 499 60 -15d41 1 499 60 -FUNC 15d42 304 0 dwarf2reader::CompilationUnit::ProcessDIEs() -15d42 11 435 60 -15d53 9 436 60 -15d5c 9 441 60 -15d65 17 445 60 -15d7c 8 446 60 -15d84 6 448 60 -15d8a 6c 453 60 -15df6 8 455 60 -15dfe 16 453 60 -15e14 3 455 60 -15e17 2f 453 60 -15e46 29 458 60 -15e6f 22 460 60 -15e91 a 462 60 -15e9b a 465 60 -15ea5 1e 466 60 -15ec3 13 467 60 -15ed6 2b 468 60 -15f01 18 472 60 -15f19 9 473 60 -15f22 42 474 60 -15f64 1e 475 60 -15f82 2a 477 60 -15fac b 480 60 -15fb7 1e 481 60 -15fd5 26 483 60 -15ffb 1d 455 60 -16018 24 485 60 -1603c a 486 60 -FUNC 16046 35f 0 dwarf2reader::CompilationUnit::Start() -16046 18 249 60 -1605e 58 251 60 -160b6 35 252 60 -160eb 32 251 60 -1611d 2a 252 60 -16147 20 255 60 -16167 37 256 60 -1619e b 259 60 -161a9 f 264 60 -161b8 17 265 60 -161cf c 266 60 -161db a 268 60 -161e5 95 271 60 -1627a 11 276 60 -1628b b 279 60 -16296 58 282 60 -162ee 2f 283 60 -1631d 32 282 60 -1634f 14 284 60 -16363 1a 285 60 -1637d b 289 60 -16388 12 291 60 -1639a b 292 60 -163a5 1 292 60 -FUNC 163a6 3a 0 std::fill(unsigned char*, unsigned char*, unsigned char const&) -163a6 c 573 61 -163b2 9 576 61 -163bb 23 577 61 -163de 2 578 61 -FUNC 163e0 33 0 std::__deque_buf_size(unsigned long) -163e0 c 83 62 -163ec 27 84 62 -16413 1 84 62 -FUNC 16414 18 0 dwarf2reader::ByteReader::OffsetSize() const -16414 c 38 63 -16420 c 38 63 -FUNC 1642c 18 0 dwarf2reader::ByteReader::AddressSize() const -1642c c 41 63 -16438 c 41 63 -FUNC 16444 17 0 dwarf2reader::ByteReader::ReadOneByte(char const*) const -16444 c 10 64 -16450 9 11 64 -16459 2 12 64 -1645b 1 12 64 -FUNC 1645c 63 0 dwarf2reader::ByteReader::ReadTwoBytes(char const*) const -1645c c 14 64 -16468 d 15 64 -16475 e 16 64 -16483 b 17 64 -1648e 17 18 64 -164a5 18 20 64 -164bd 2 22 64 -164bf 1 22 64 -FUNC 164c0 98 0 dwarf2reader::ByteReader::ReadUnsignedLEB128(char const*, unsigned long*) const -164c0 e 59 64 -164ce e 60 64 -164dc 7 61 64 -164e3 7 62 64 -164ea e 66 64 -164f8 5 67 64 -164fd 38 69 64 -16535 6 71 64 -1653b 8 65 64 -16543 8 75 64 -1654b 6 77 64 -16551 7 78 64 -FUNC 16558 ee 0 dwarf2reader::ByteReader::ReadSignedLEB128(char const*, unsigned long*) const -16558 e 84 64 -16566 e 85 64 -16574 7 86 64 -1657b 7 87 64 -16582 e 91 64 -16590 5 92 64 -16595 44 93 64 -165d9 6 94 64 -165df 8 90 64 -165e7 14 97 64 -165fb 36 98 64 -16631 8 99 64 -16639 6 100 64 -1663f 7 101 64 -FUNC 16646 a2 0 dwarf2reader::ByteReader::ReadOffset(char const*) const -16646 13 103 64 -16659 3f 104 64 -16698 4a 105 64 -166e2 6 106 64 -FUNC 166e8 a2 0 dwarf2reader::ByteReader::ReadAddress(char const*) const -166e8 13 108 64 -166fb 3f 109 64 -1673a 4a 110 64 -16784 6 111 64 -FUNC 1678a 61 0 dwarf2reader::LineStateMachine::Reset(bool) -1678a 12 12 65 -1679c 9 13 65 -167a5 11 14 65 -167b6 11 15 65 -167c7 a 16 65 -167d1 a 17 65 -167db 7 18 65 -167e2 7 19 65 -167e9 2 20 65 -167eb 1 20 65 -FUNC 167ec 20 0 std::_List_const_iterator >::operator!=(std::_List_const_iterator > const&) const -167ec c 253 66 -167f8 14 254 66 -FUNC 1680c 25 0 std::_List_const_iterator >::operator++(int) -1680c c 226 66 -16818 8 228 66 -16820 c 229 66 -1682c 5 230 66 -16831 1 230 66 -FUNC 16832 16 0 std::_List_const_iterator >::operator->() const -16832 c 215 66 -1683e a 216 66 -16848 c 190 67 -16854 a 190 67 -FUNC 1685e 13 0 std::auto_ptr > > >::operator->() const -1685e c 283 67 -1686a 7 286 67 -16871 1 286 67 -16872 c 65 68 -1687e 2 65 68 -16880 c 97 69 -1688c d 97 69 -16899 1 97 69 -1689a c 99 69 -168a6 14 100 69 -168ba c 97 69 -168c6 d 97 69 -168d3 1 97 69 -168d4 c 84 70 -168e0 17 85 70 -168f7 1 85 70 -FUNC 168f8 2d 0 std::pair std::make_pair(dwarf2reader::DwarfAttribute, dwarf2reader::DwarfForm) -168f8 c 144 70 -16904 21 145 70 -16925 1 145 70 -16926 c 202 66 -16932 a 203 66 -FUNC 1693c 25 0 std::list, std::allocator > >::begin() const -1693c c 588 70 -16948 19 589 66 -16961 1 589 66 -FUNC 16962 23 0 std::list, std::allocator > >::end() const -16962 c 605 70 -1696e 17 606 66 -16985 1 606 66 -16986 c 65 68 -16992 2 65 68 -16994 c 72 68 -169a0 2 72 68 -169a2 c 97 69 -169ae d 97 69 -169bb 1 97 69 -169bc c 105 69 -169c8 d 105 69 -169d5 1 105 69 -169d6 c 105 69 -169e2 d 105 69 -169ef 1 105 69 -169f0 c 67 68 -169fc 2 67 68 -169fe c 99 69 -16a0a 14 100 69 -16a1e c 99 69 -16a2a 14 100 69 -16a3e c 129 62 -16a4a 30 131 62 -16a7a c 65 68 -16a86 2 65 68 -16a88 c 72 68 -16a94 2 72 68 -16a96 c 97 69 -16aa2 d 97 69 -16aaf 1 97 69 -16ab0 c 105 69 -16abc d 105 69 -16ac9 1 105 69 -16aca c 105 69 -16ad6 d 105 69 -16ae3 1 105 69 -16ae4 c 67 68 -16af0 2 67 68 -16af2 c 99 69 -16afe 14 100 69 -16b12 c 99 69 -16b1e 14 100 69 -FUNC 16b32 2b 0 std::_Vector_base >::get_allocator() const -16b32 10 93 71 -16b42 1b 94 71 -16b5d 1 94 71 -16b6a 7 614 72 -16b71 1 614 72 -16b72 c 80 71 -16b7e d 80 71 -16b8b 1 80 71 -16b98 2 107 68 -FUNC 16b9a 2d 0 void std::_Destroy >(unsigned char*, unsigned char*, std::allocator) -16b9a c 171 73 -16ba6 2 173 73 -16ba8 12 174 73 -16bba b 173 73 -16bc5 2 174 73 -16bc7 1 174 73 -16bc8 c 84 71 -16bd4 2f 85 71 -16c03 2 86 71 -16c05 1 86 71 -16c06 c 96 71 -16c12 12 97 71 -16c24 2 98 71 -FUNC 16c26 1f 0 std::_List_base, std::allocator > >::_M_init() -16c26 c 338 73 -16c32 8 340 66 -16c3a b 341 66 -16c45 1 341 66 -16c46 c 105 69 -16c52 d 105 69 -16c5f 1 105 69 -16c60 c 125 66 -16c6c a 126 66 -FUNC 16c76 25 0 std::list, std::allocator > >::begin() -16c76 c 579 73 -16c82 19 580 66 -16c9b 1 580 66 -FUNC 16c9c 23 0 std::list, std::allocator > >::end() -16c9c c 597 73 -16ca8 17 597 66 -16cbf 1 597 66 -16cc0 c 603 72 -16ccc c 603 72 -FUNC 16cd8 2b 0 std::vector >::begin() const -16cd8 c 342 73 -16ce4 1f 343 71 -16d03 1 343 71 -FUNC 16d04 2c 0 std::vector >::end() const -16d04 c 360 73 -16d10 20 361 71 -16d3c 5 666 72 -16d41 1 666 72 -16d4f 31 759 72 -FUNC 16d80 3c 0 std::vector >::size() const -16d80 c 402 73 -16d8c 30 403 71 -16dbc c 603 72 -16dc8 c 603 72 -FUNC 16dd4 23 0 std::vector >::begin() -16dd4 c 333 73 -16de0 17 334 71 -16df7 1 334 71 -16e04 33 654 72 -16e37 1 654 72 -FUNC 16e38 26 0 std::vector >::end() -16e38 c 351 73 -16e44 1a 352 71 -16e6a 7 614 72 -16e71 1 614 72 -FUNC 16e72 42 0 std::vector >::operator[](unsigned long) -16e72 c 494 73 -16e7e 36 495 71 -FUNC 16eb4 13 0 std::vector >::max_size() const -16eb4 c 407 73 -16ec0 7 408 71 -16ec7 1 408 71 -16ed4 5 666 72 -16ed9 1 666 72 -16ee6 d 623 72 -16ef3 5 624 72 -16ef8 c 382 62 -16f04 d 382 62 -16f11 1 382 62 -FUNC 16f12 2b 0 std::_Deque_base >::get_allocator() const -16f12 10 360 73 -16f22 1b 361 62 -16f3d 1 361 62 -FUNC 16f3e 2d 0 std::deque >::get_allocator() const -16f3e 10 764 73 -16f4e 1d 765 62 -16f6b 1 765 62 -FUNC 16f6c 13 0 std::_Deque_iterator::operator*() const -16f6c c 134 73 -16f78 7 135 62 -16f7f 1 135 62 -16f8c 2 107 68 -16f8e c 129 62 -16f9a 30 131 62 -FUNC 16fca 2c 0 std::deque >::end() const -16fca 10 799 73 -16fda 1c 800 62 -FUNC 16ff6 2c 0 std::deque >::begin() const -16ff6 10 781 73 -17006 1c 782 62 -FUNC 17022 2e 0 std::deque >::end() -17022 10 790 73 -17032 1e 791 62 -FUNC 17050 3c 0 std::vector >::_M_range_check(unsigned long) const -17050 13 515 73 -17063 15 517 71 -17078 14 518 71 -FUNC 1708c 32 0 std::vector >::at(unsigned long) -1708c c 534 73 -17098 12 536 71 -170aa 14 537 71 -170ca 2e 104 68 -170f8 c 84 71 -17104 2f 85 71 -17133 2 86 71 -17135 1 86 71 -17136 c 96 71 -17142 12 97 71 -17154 2 98 71 -17156 c 603 72 -17162 c 603 72 -FUNC 1716e 23 0 std::vector >::begin() -1716e c 333 73 -1717a 17 334 71 -17191 1 334 71 -1719e 27 654 72 -171c5 1 654 72 -FUNC 171c6 42 0 std::vector >::operator[](unsigned long) -171c6 c 494 73 -171d2 36 495 71 -FUNC 17208 26 0 std::vector >::end() -17208 c 351 73 -17214 1a 352 71 -1723a d 94 68 -17247 1 94 68 -FUNC 17248 2f 0 std::_Vector_base >::_M_deallocate(unsigned char*, unsigned long) -17248 c 120 73 -17254 6 122 71 -1725a 1d 123 71 -17277 1 123 71 -17278 c 108 71 -17284 3a 109 71 -172be c 188 71 -172ca 12 189 71 -172dc 2 190 71 -172de c 272 71 -172ea 4b 273 71 -17335 1 273 71 -17336 13 62 74 -17349 10 62 74 -17359 a 63 74 -17363 25 64 74 -17388 1a 66 74 -173a2 13 62 74 -173b5 10 62 74 -173c5 a 63 74 -173cf 25 64 74 -173f4 1a 66 74 -1740e c 188 71 -1741a 12 189 71 -1742c 2 190 71 -1743b 31 759 72 -1746c c 65 68 -17478 2 65 68 -1747a c 103 69 -17486 d 103 69 -17493 1 103 69 -FUNC 17494 2d 0 std::list, std::allocator > >::get_allocator() const -17494 10 570 74 -174a4 1d 571 66 -174c1 1 571 66 -174ce 2e 104 68 -FUNC 174fc 20 0 std::_List_iterator >::operator!=(std::_List_iterator > const&) const -174fc c 172 74 -17508 14 173 66 -FUNC 1751c 1d 0 std::_List_const_iterator >::operator++() -1751c c 219 74 -17528 c 221 66 -17534 5 222 66 -17539 1 222 66 -FUNC 1753a 1d 0 std::_List_iterator >::operator++() -1753a c 138 74 -17546 c 140 66 -17552 5 141 66 -17557 1 141 66 -FUNC 17558 16 0 std::_List_const_iterator >::operator*() const -17558 c 211 74 -17564 a 212 66 -FUNC 1756e 16 0 std::_List_iterator >::operator*() const -1756e c 130 74 -1757a a 131 66 -FUNC 17584 20 0 std::_List_const_iterator >::operator==(std::_List_const_iterator > const&) const -17584 c 249 74 -17590 14 250 66 -FUNC 175a4 35 0 bool __gnu_cxx::operator!= > >(__gnu_cxx::__normal_iterator > > const&, __gnu_cxx::__normal_iterator > > const&) -175a4 d 699 74 -175b1 28 700 72 -175d9 1 700 72 -FUNC 175da 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator > >, std::allocator >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::allocator) -175da c 171 74 -175e6 2 173 73 -175e8 1a 174 73 -17602 21 173 73 -17623 2 174 73 -17625 1 174 73 -17626 c 127 62 -17632 29 127 62 -1765b 1 127 62 -1765c c 388 62 -17668 41 389 62 -176a9 2 390 62 -176ab 1 390 62 -176b8 d 94 68 -176c5 1 94 68 -FUNC 176c6 20 0 bool std::operator==(std::_Deque_iterator const&, std::_Deque_iterator const&) -176c6 c 243 74 -176d2 14 244 62 -FUNC 176e6 26 0 bool std::operator!=(std::_Deque_iterator const&, std::_Deque_iterator const&) -176e6 c 256 74 -176f2 1a 257 62 -FUNC 1770c 1a 0 std::_Deque_iterator::_S_buffer_size() -1770c c 106 74 -17718 e 107 62 -FUNC 17726 3e 0 std::_Deque_iterator::_M_set_node(unsigned long long**) -17726 d 229 74 -17733 9 231 62 -1773c b 232 62 -17747 1d 233 62 -FUNC 17764 50 0 std::_Deque_iterator::operator++() -17764 c 142 74 -17770 d 144 62 -1777d f 145 62 -1778c 18 147 62 -177a4 b 148 62 -177af 5 150 62 -FUNC 177b4 4b 0 void std::_Destroy, std::allocator >(std::_Deque_iterator, std::_Deque_iterator, std::allocator) -177b4 c 171 74 -177c0 2 173 73 -177c2 1a 174 73 -177dc 21 173 73 -177fd 2 174 73 -177ff 1 174 73 -FUNC 17800 50 0 std::_Deque_iterator::operator--() -17800 c 162 74 -1780c f 164 62 -1781b 18 166 62 -17833 b 167 62 -1783e d 169 62 -1784b 5 170 62 -FUNC 17850 39 0 std::deque >::back() -17850 c 988 74 -1785c 15 990 62 -17871 b 991 62 -1787c d 992 62 -17889 1 992 62 -FUNC 1788a 19 0 std::stack > >::top() -1788a c 163 75 -17896 d 166 75 -178a3 1 166 75 -FUNC 178a4 66 0 std::_Deque_iterator::difference_type std::operator-(std::_Deque_iterator const&, std::_Deque_iterator const&) -178a4 d 328 75 -178b1 59 333 62 -FUNC 1790a 26 0 std::deque >::size() const -1790a c 840 75 -17916 1a 841 62 -1793c 36 662 72 -1797e 23 650 72 -179a1 1 650 72 -179a2 c 67 68 -179ae 2 67 68 -179b0 c 99 69 -179bc 14 100 69 -179d0 c 303 66 -179dc 12 304 66 -179ee 2 305 66 -179f0 c 326 66 -179fc 2f 327 66 -17a2b d 328 66 -17a38 c 457 66 -17a44 14 458 66 -17a58 c 211 74 -17a64 2d 211 74 -17a91 1 211 74 -17a9e 7 98 68 -17aa5 1 98 68 -17ab2 1d 85 68 -17acf 5 86 68 -17ad4 17 88 68 -17aeb 1 88 68 -FUNC 17aec 2a 0 std::_Vector_base >::_M_allocate(unsigned long) -17aec c 116 75 -17af8 1e 117 71 -17b22 d 94 68 -17b2f 1 94 68 -FUNC 17b30 34 0 std::_Deque_base >::_M_deallocate_node(unsigned long long*) -17b30 c 402 75 -17b3c 28 403 62 -FUNC 17b64 38 0 std::_Deque_base >::_M_destroy_nodes(unsigned long long**, unsigned long long**) -17b64 c 504 75 -17b70 8 506 62 -17b78 14 507 62 -17b8c e 506 62 -17b9a 2 507 62 -FUNC 17b9c 62 0 std::deque >::_M_pop_back_aux() -17b9c c 391 76 -17ba8 15 393 76 -17bbd 1b 394 76 -17bd8 f 395 76 -17be7 17 396 76 -FUNC 17bfe 4f 0 std::deque >::pop_back() -17bfe c 1081 76 -17c0a 10 1083 62 -17c1a f 1086 62 -17c29 17 1087 62 -17c40 d 1090 62 -17c4d 1 1090 62 -FUNC 17c4e 19 0 std::stack > >::pop() -17c4e c 205 76 -17c5a d 208 75 -17c67 1 208 75 -17c68 c 72 68 -17c74 2 72 68 -17c76 c 105 69 -17c82 d 105 69 -17c8f 1 105 69 -17c90 c 603 72 -17c9c c 603 72 -FUNC 17ca8 2b 0 std::vector >::begin() const -17ca8 c 342 76 -17cb4 1f 343 71 -17cd3 1 343 71 -FUNC 17cd4 2c 0 std::vector >::end() const -17cd4 c 360 76 -17ce0 20 361 71 -17d0c 5 666 72 -17d11 1 666 72 -17d1f 28 759 72 -17d47 1 759 72 -FUNC 17d48 3c 0 std::vector >::size() const -17d48 c 402 76 -17d54 30 403 71 -17d90 d 623 72 -17d9d 5 624 72 -17dae 5 666 72 -17db3 1 666 72 -FUNC 17db4 35 0 bool __gnu_cxx::operator!= > >(__gnu_cxx::__normal_iterator > > const&, __gnu_cxx::__normal_iterator > > const&) -17db4 d 699 76 -17dc1 28 700 72 -17de9 1 700 72 -FUNC 17dea 4b 0 void std::_Destroy<__gnu_cxx::__normal_iterator > >, std::allocator >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::allocator) -17dea c 171 76 -17df6 2 173 73 -17df8 1a 174 73 -17e12 21 173 73 -17e33 2 174 73 -17e35 1 174 73 -17e43 28 759 72 -17e6b 1 759 72 -17e78 2a 662 72 -FUNC 17ea2 13 0 std::vector >::max_size() const -17ea2 c 407 76 -17eae 7 408 71 -17eb5 1 408 71 -17ec2 16 650 72 -17ee4 7 98 68 -17eeb 1 98 68 -17ef8 1d 85 68 -17f15 5 86 68 -17f1a 10 88 68 -FUNC 17f2a 29 0 std::_List_base, std::allocator > >::_M_get_node() -17f2a c 311 76 -17f36 1d 312 66 -17f53 1 312 66 -FUNC 17f54 5f 0 std::list, std::allocator > >::_M_create_node(std::pair const&) -17f54 d 435 76 -17f61 e 437 66 -17f6f 3c 440 66 -17fab 8 447 66 -17fb3 1 447 66 -FUNC 17fb4 35 0 std::list, std::allocator > >::_M_insert(std::_List_iterator >, std::pair const&) -17fb4 c 1149 76 -17fc0 15 1151 66 -17fd5 14 1152 66 -17fe9 1 1152 66 -FUNC 17fea 52 0 void std::list, std::allocator > >::_M_insert_dispatch > >(std::_List_iterator >, std::_List_const_iterator >, std::_List_const_iterator >, __false_type) -17fea c 1126 66 -17ff6 2 1128 66 -17ff8 21 1129 66 -18019 21 1128 66 -1803a 2 1129 66 -FUNC 1803c 36 0 void std::list, std::allocator > >::insert > >(std::_List_iterator >, std::_List_const_iterator >, std::_List_const_iterator >) -1803c c 838 66 -18048 2a 842 66 -18072 e 491 66 -18080 32 492 66 -180b2 64 493 66 -18116 c 211 74 -18122 3d 211 74 -1815f 1 211 74 -1816d 5c 104 68 -181c9 1 104 68 -FUNC 181ca 31 0 std::list, std::allocator > >::push_back(std::pair const&) -181ca c 772 76 -181d6 25 773 66 -181fb 1 773 66 -FUNC 181fc 69 0 void std::_Construct(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev const&) -181fc d 77 76 -18209 5c 81 73 -18265 1 81 73 -18272 7 98 68 -18279 1 98 68 -18286 1d 85 68 -182a3 5 86 68 -182a8 10 88 68 -182b8 c 65 68 -182c4 2 65 68 -182c6 c 103 69 -182d2 d 103 69 -182df 1 103 69 -FUNC 182e0 4d 0 std::_Deque_base >::_M_get_map_allocator() const -182e0 11 394 76 -182f1 3c 395 62 -1832d 1 395 62 -FUNC 1832e 75 0 std::_Deque_base >::_M_allocate_map(unsigned long) -1832e d 406 76 -1833b 68 407 62 -183a3 1 407 62 -FUNC 183a4 47 0 std::_Deque_base >::_M_deallocate_map(unsigned long long**, unsigned long) -183a4 c 410 76 -183b0 3b 411 62 -183eb 1 411 62 -183ec c 424 62 -183f8 9 426 62 -18401 22 428 62 -18423 2b 430 62 -1844e c 714 62 -1845a 70 715 62 -184ca c 111 75 -184d6 d 111 75 -184e3 1 111 75 -184e4 c 259 67 -184f0 26 259 67 -18522 7 98 68 -18529 1 98 68 -18536 1d 85 68 -18553 5 86 68 -18558 10 88 68 -FUNC 18568 33 0 std::_Deque_base >::_M_allocate_node() -18568 c 398 76 -18574 27 399 62 -1859b 1 399 62 -FUNC 1859c 82 0 std::_Deque_base >::_M_create_nodes(unsigned long long**, unsigned long long**) -1859c d 486 76 -185a9 8 491 62 -185b1 12 492 62 -185c3 13 491 62 -185d6 b 494 62 -185e1 19 496 62 -185fa b 497 62 -18605 13 494 62 -18618 6 497 62 -FUNC 1861e 17b 0 std::_Deque_base >::_M_initialize_map(unsigned long) -1861e d 447 76 -1862b 1e 450 62 -18649 2a 452 62 -18673 1c 454 62 -1868f 19 462 62 -186a8 c 463 62 -186b4 1e 466 62 -186d2 b 467 62 -186dd 1e 469 62 -186fb 9 470 62 -18704 a 471 62 -1870e b 472 62 -18719 13 467 62 -1872c 15 475 62 -18741 18 476 62 -18759 c 477 62 -18765 34 478 62 -18799 1 478 62 -1879a d 366 62 -187a7 12 367 62 -187b9 39 368 62 -187f2 c 645 62 -187fe 1c 646 62 -FUNC 1881a 4d 0 void std::__fill::fill<__gnu_cxx::__normal_iterator > >, unsigned char>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char const&) -1881a c 539 61 -18826 9 541 61 -1882f 2 542 61 -18831 13 543 61 -18844 21 542 61 -18865 2 543 61 -18867 1 543 61 -FUNC 18868 2b 0 void std::fill<__gnu_cxx::__normal_iterator > >, unsigned char>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char const&) -18868 c 560 76 -18874 4 567 61 -18878 1b 568 61 -18893 1 568 61 -FUNC 18894 6a 0 std::list, std::allocator > >::_M_erase(std::_List_iterator >) -18894 d 1157 76 -188a1 b 1159 66 -188ac 6 1160 66 -188b2 35 1161 66 -188e7 17 1162 66 -FUNC 188fe 37 0 std::list, std::allocator > >::erase(std::_List_iterator >) -188fe c 95 77 -1890a 14 97 77 -1891e 12 98 77 -18930 5 99 77 -18935 1 99 77 -FUNC 18936 3e 0 std::list, std::allocator > >::erase(std::_List_iterator >, std::_List_iterator >) -18936 c 883 77 -18942 2 885 66 -18944 15 886 66 -18959 16 885 66 -1896f 5 887 66 -FUNC 18974 129 0 std::list, std::allocator > >::operator=(std::list, std::allocator > > const&) -18974 e 120 77 -18982 c 122 77 -1898e e 124 77 -1899c e 125 77 -189aa e 126 77 -189b8 e 127 77 -189c6 2 128 77 -189c8 20 130 77 -189e8 5a 128 77 -18a42 16 131 77 -18a58 1b 132 77 -18a73 20 134 77 -18a93 a 136 77 -18a9d 1 136 77 -FUNC 18a9e 4c 0 dwarf2reader::CompilationUnit::Abbrev::operator=(dwarf2reader::CompilationUnit::Abbrev const&) -18a9e c 211 77 -18aaa 40 211 74 -FUNC 18aea 52 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy::copy(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -18aea c 280 61 -18af6 1a 283 61 -18b10 12 285 61 -18b22 4 286 61 -18b26 6 287 61 -18b2c b 283 61 -18b37 5 289 61 -FUNC 18b3c 2b 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_aux(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -18b3c c 307 77 -18b48 4 315 61 -18b4c 1b 317 61 -18b67 1 317 61 -18b76 56 354 61 -18bd8 4 384 61 -18bdc 4 385 61 -18be0 1b 387 61 -18bfb 1 387 61 -FUNC 18bfc ac 0 std::vector >::erase(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >) -18bfc d 122 78 -18c09 26 124 78 -18c2f 43 125 78 -18c72 2e 126 78 -18ca0 8 127 78 -FUNC 18ca8 54 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_backward::copy_b(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -18ca8 c 408 61 -18cb4 1a 411 61 -18cce 1e 412 61 -18cec b 411 61 -18cf7 5 413 61 -FUNC 18cfc 2b 0 dwarf2reader::CompilationUnit::Abbrev* std::__copy_backward_aux(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -18cfc c 432 78 -18d08 4 440 61 -18d0c 1b 443 61 -18d27 1 443 61 -18d36 56 482 61 -18d98 4 514 61 -18d9c 4 515 61 -18da0 1b 517 61 -18dbb 1 517 61 -FUNC 18dbc 4d 0 void std::__fill::fill<__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev const&) -18dbc c 526 61 -18dc8 2 528 61 -18dca 1c 529 61 -18de6 21 528 61 -18e07 2 529 61 -18e09 1 529 61 -FUNC 18e0a 2b 0 void std::fill<__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev const&) -18e0a c 560 78 -18e16 4 567 61 -18e1a 1b 568 61 -18e35 1 568 61 -FUNC 18e36 3f 0 unsigned char* std::__copy::copy(unsigned char const*, unsigned char const*, unsigned char*) -18e36 c 298 61 -18e42 22 300 61 -18e64 11 301 61 -18e75 1 301 61 -FUNC 18e76 2b 0 unsigned char* std::__copy_aux(unsigned char*, unsigned char*, unsigned char*) -18e76 c 307 78 -18e82 4 315 61 -18e86 1b 317 61 -18ea1 1 317 61 -18eb0 56 354 61 -18f12 4 384 61 -18f16 4 385 61 -18f1a 1b 387 61 -18f35 1 387 61 -FUNC 18f36 a0 0 std::vector >::erase(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >) -18f36 d 122 78 -18f43 26 124 78 -18f69 43 125 78 -18fac 22 126 78 -18fce 8 127 78 -18fe2 7 98 68 -18fe9 1 98 68 -18ff6 1d 85 68 -19013 5 86 68 -19018 d 88 68 -19025 1 88 68 -FUNC 19026 2a 0 std::_Vector_base >::_M_allocate(unsigned long) -19026 c 116 78 -19032 1e 117 71 -1905c 1b 74 79 -19077 1 74 79 -19084 23 113 79 -190a7 1 113 79 -190b4 1b 254 79 -190cf 1 254 79 -FUNC 190d0 19 0 void std::_Destroy(dwarf2reader::CompilationUnit::Abbrev*) -190d0 c 106 79 -190dc d 107 73 -190e9 1 107 73 -FUNC 190ea 44 0 void std::__destroy_aux<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __false_type) -190ea c 119 79 -190f6 2 121 73 -190f8 13 122 73 -1910b 21 121 73 -1912c 2 122 73 -FUNC 1912e 28 0 void std::_Destroy<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >) -1912e c 148 79 -1913a 1c 155 73 -FUNC 19156 8d 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, __false_type) -19156 d 188 79 -19163 6 190 79 -19169 2 193 79 -1916b 1c 194 79 -19187 1b 193 79 -191a2 b 196 79 -191ad 12 198 79 -191bf b 199 79 -191ca 13 196 79 -191dd 6 199 79 -191e3 1 199 79 -FUNC 191e4 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&) -191e4 c 214 79 -191f0 23 218 79 -19213 1 218 79 -FUNC 19214 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, std::allocator) -19214 c 308 79 -19220 1b 310 79 -1923b 1 310 79 -19249 6 82 79 -1924f 2 85 79 -19251 24 86 79 -19275 2c 85 79 -192a1 b 87 79 -192ac b 89 79 -192b7 12 91 79 -192c9 b 92 79 -192d4 13 89 79 -192e7 9 92 79 -192fc 23 113 79 -1931f 1 113 79 -1932c 1b 254 79 -19347 1 254 79 -FUNC 19348 409 0 std::vector >::_M_insert_aux(__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev const&) -19348 14 249 79 -1935c 14 251 78 -19370 22 253 78 -19392 f 255 78 -193a1 12 256 78 -193b3 55 257 78 -19408 4b 260 78 -19453 e 264 78 -19461 15 265 78 -19476 e 266 78 -19484 1d 271 78 -194a1 8 272 78 -194a9 e 273 78 -194b7 27 275 78 -194de 6 276 78 -194e4 55 279 78 -19539 25 284 78 -1955e b 285 78 -19569 4f 286 78 -195b8 3 284 78 -195bb 13 279 78 -195ce e 286 78 -195dc 4d 298 78 -19629 36 299 78 -1965f 12 302 78 -19671 13 303 78 -19684 2e 304 78 -196b2 13 286 78 -196c5 b 292 78 -196d0 39 294 78 -19709 23 295 78 -1972c b 296 78 -19737 13 292 78 -1974a 7 304 78 -19751 1 304 78 -FUNC 19752 70 0 std::vector >::push_back(dwarf2reader::CompilationUnit::Abbrev const&) -19752 c 602 79 -1975e 10 604 71 -1976e 1e 606 71 -1978c 11 607 71 -1979d 25 610 71 -FUNC 197c2 50 0 unsigned char* std::__copy_backward::copy_b(unsigned char const*, unsigned char const*, unsigned char*) -197c2 d 422 61 -197cf f 424 61 -197de 24 425 61 -19802 10 426 61 -FUNC 19812 2b 0 unsigned char* std::__copy_backward_aux(unsigned char*, unsigned char*, unsigned char*) -19812 c 432 79 -1981e 4 440 61 -19822 1b 443 61 -1983d 1 443 61 -1984c 56 482 61 -198ae 4 514 61 -198b2 4 515 61 -198b6 1b 517 61 -198d1 1 517 61 -FUNC 198d2 32 0 unsigned char* std::fill_n(unsigned char*, unsigned long, unsigned char const&) -198d2 c 647 79 -198de 1e 649 61 -198fc 8 650 61 -FUNC 19904 27 0 void std::__uninitialized_fill_n_aux(unsigned char*, unsigned long, unsigned char const&, __true_type) -19904 c 182 79 -19910 1b 183 79 -1992b 1 183 79 -FUNC 1992c 2f 0 void std::uninitialized_fill_n(unsigned char*, unsigned long, unsigned char const&) -1992c c 214 79 -19938 23 218 79 -1995b 1 218 79 -FUNC 1995c 27 0 void std::__uninitialized_fill_n_a(unsigned char*, unsigned long, unsigned char const&, std::allocator) -1995c c 308 79 -19968 1b 310 79 -19983 1 310 79 -FUNC 19984 27 0 void std::__destroy_aux(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, __false_type) -19984 c 119 79 -19990 2 121 73 -19992 b 122 73 -1999d c 121 73 -199a9 2 122 73 -199ab 1 122 73 -FUNC 199ac 28 0 void std::_Destroy(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -199ac c 148 79 -199b8 1c 155 73 -FUNC 199d4 88 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_aux(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, __false_type) -199d4 d 80 79 -199e1 6 82 79 -199e7 2 85 79 -199e9 12 86 79 -199fb 12 85 79 -19a0d b 87 79 -19a18 b 89 79 -19a23 12 91 79 -19a35 b 92 79 -19a40 13 89 79 -19a53 9 92 79 -FUNC 19a5c 2f 0 dwarf2reader::CompilationUnit::Abbrev* std::uninitialized_copy(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*) -19a5c c 108 79 -19a68 23 113 79 -19a8b 1 113 79 -FUNC 19a8c 27 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_a(dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev*, std::allocator) -19a8c c 252 79 -19a98 1b 254 79 -19ab3 1 254 79 -FUNC 19ab4 7e 0 void std::__uninitialized_fill_n_aux(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, __false_type) -19ab4 d 188 79 -19ac1 6 190 79 -19ac7 2 193 79 -19ac9 12 194 79 -19adb 16 193 79 -19af1 b 196 79 -19afc 12 198 79 -19b0e b 199 79 -19b19 13 196 79 -19b2c 6 199 79 -FUNC 19b32 2f 0 void std::uninitialized_fill_n(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&) -19b32 c 214 79 -19b3e 23 218 79 -19b61 1 218 79 -FUNC 19b62 27 0 void std::__uninitialized_fill_n_a(dwarf2reader::CompilationUnit::Abbrev*, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&, std::allocator) -19b62 c 308 79 -19b6e 1b 310 79 -19b89 1 310 79 -FUNC 19b8a a5 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*, __false_type) -19b8a d 80 79 -19b97 6 82 79 -19b9d 2 85 79 -19b9f 1a 86 79 -19bb9 27 85 79 -19be0 b 87 79 -19beb b 89 79 -19bf6 12 91 79 -19c08 b 92 79 -19c13 13 89 79 -19c26 9 92 79 -19c2f 1 92 79 -FUNC 19c30 2f 0 dwarf2reader::CompilationUnit::Abbrev* std::uninitialized_copy<__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*) -19c30 c 108 79 -19c3c 23 113 79 -19c5f 1 113 79 -FUNC 19c60 27 0 dwarf2reader::CompilationUnit::Abbrev* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*, dwarf2reader::CompilationUnit::Abbrev>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, dwarf2reader::CompilationUnit::Abbrev*, std::allocator) -19c60 c 252 79 -19c6c 1b 254 79 -19c87 1 254 79 -FUNC 19c88 5f8 0 std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&) -19c88 15 311 79 -19c9d b 313 78 -19ca8 2a 315 78 -19cd2 12 318 78 -19ce4 23 319 78 -19d07 15 320 78 -19d1c c 321 78 -19d28 5a 323 78 -19d82 1c 327 78 -19d9e 35 328 78 -19dd3 16 323 78 -19de9 30 330 78 -19e19 10 343 78 -19e29 48 334 78 -19e71 21 338 78 -19e92 3d 339 78 -19ecf 13 334 78 -19ee2 b 339 78 -19eed 1c 342 78 -19f09 1e 343 78 -19f27 13 339 78 -19f3a 24 343 78 -19f5e e 348 78 -19f6c 1e 349 78 -19f8a e 350 78 -19f98 1d 353 78 -19fb5 8 354 78 -19fbd e 355 78 -19fcb 27 357 78 -19ff2 6 358 78 -19ff8 4d 361 78 -1a045 40 365 78 -1a085 18 367 78 -1a09d 44 368 78 -1a0e1 3 365 78 -1a0e4 19 361 78 -1a0fd 13 365 78 -1a110 e 368 78 -1a11e 3e 379 78 -1a15c 36 381 78 -1a192 12 384 78 -1a1a4 13 385 78 -1a1b7 2e 386 78 -1a1e5 e 368 78 -1a1f3 b 372 78 -1a1fe 39 374 78 -1a237 23 376 78 -1a25a b 377 78 -1a265 13 372 78 -1a278 8 386 78 -FUNC 1a280 2e 0 std::vector >::insert(__gnu_cxx::__normal_iterator > >, unsigned long, dwarf2reader::CompilationUnit::Abbrev const&) -1a280 c 657 79 -1a28c 22 658 71 -FUNC 1a2ae ab 0 std::vector >::resize(unsigned long, dwarf2reader::CompilationUnit::Abbrev const&) -1a2ae d 422 79 -1a2bb 15 424 71 -1a2d0 48 425 71 -1a318 41 427 71 -1a359 1 427 71 -FUNC 1a35a 63 0 std::vector >::resize(unsigned long) -1a35a d 441 79 -1a367 56 442 71 -1a3bd 1 442 71 -FUNC 1a3be 13 0 std::_Deque_iterator::operator*() const -1a3be c 134 79 -1a3ca 7 135 62 -1a3d1 1 135 62 -FUNC 1a3d2 3f 0 unsigned long long** std::__copy::copy(unsigned long long* const*, unsigned long long* const*, unsigned long long**) -1a3d2 c 298 61 -1a3de 22 300 61 -1a400 11 301 61 -1a411 1 301 61 -FUNC 1a412 2b 0 unsigned long long** std::__copy_aux(unsigned long long**, unsigned long long**, unsigned long long**) -1a412 c 307 79 -1a41e 4 315 61 -1a422 1b 317 61 -1a43d 1 317 61 -FUNC 1a43e 27 0 unsigned long long** std::__copy_normal::copy_n(unsigned long long**, unsigned long long**, unsigned long long**) -1a43e c 325 61 -1a44a 1b 326 61 -1a465 1 326 61 -FUNC 1a466 2f 0 unsigned long long** std::copy(unsigned long long**, unsigned long long**, unsigned long long**) -1a466 c 376 79 -1a472 4 384 61 -1a476 4 385 61 -1a47a 1b 387 61 -1a495 1 387 61 -FUNC 1a496 60 0 unsigned long long** std::__copy_backward::copy_b(unsigned long long* const*, unsigned long long* const*, unsigned long long**) -1a496 d 422 61 -1a4a3 12 424 61 -1a4b5 2e 425 61 -1a4e3 13 426 61 -FUNC 1a4f6 2b 0 unsigned long long** std::__copy_backward_aux(unsigned long long**, unsigned long long**, unsigned long long**) -1a4f6 c 432 79 -1a502 4 440 61 -1a506 1b 443 61 -1a521 1 443 61 -FUNC 1a522 27 0 unsigned long long** std::__copy_backward_normal::copy_b_n(unsigned long long**, unsigned long long**, unsigned long long**) -1a522 c 451 61 -1a52e 1b 452 61 -1a549 1 452 61 -FUNC 1a54a 2f 0 unsigned long long** std::copy_backward(unsigned long long**, unsigned long long**, unsigned long long**) -1a54a c 504 79 -1a556 4 514 61 -1a55a 4 515 61 -1a55e 1b 517 61 -1a579 1 517 61 -FUNC 1a57a 1df 0 std::deque >::_M_reallocate_map(unsigned long, bool) -1a57a 13 723 79 -1a58d 1b 726 76 -1a5a8 9 727 76 -1a5b1 13 730 76 -1a5c4 39 732 76 -1a5fd b 735 76 -1a608 27 736 76 -1a62f 2f 740 76 -1a65e 26 748 76 -1a684 15 750 76 -1a699 36 751 76 -1a6cf 22 753 76 -1a6f1 1e 756 76 -1a70f 8 758 76 -1a717 9 759 76 -1a720 15 762 76 -1a735 24 763 76 -1a759 1 763 76 -FUNC 1a75a 59 0 std::deque >::_M_reserve_map_at_back(unsigned long) -1a75a e 1443 79 -1a768 2a 1445 62 -1a792 21 1447 62 -1a7b3 1 1447 62 -FUNC 1a7b4 8c 0 std::deque >::_M_push_back_aux(unsigned long long const&) -1a7b4 c 345 79 -1a7c0 e 347 76 -1a7ce 13 348 76 -1a7e1 18 349 76 -1a7f9 1e 352 76 -1a817 1b 353 76 -1a832 c 355 76 -1a83e 2 360 76 -FUNC 1a840 62 0 std::deque >::push_back(unsigned long long const&) -1a840 c 1039 79 -1a84c 13 1041 62 -1a85f 1e 1044 62 -1a87d 11 1045 62 -1a88e 14 1048 62 -FUNC 1a8a2 20 0 std::stack > >::push(unsigned long long const&) -1a8a2 c 190 79 -1a8ae 14 191 75 -FUNC 1a8c2 27 0 unsigned char* std::__copy_normal::copy_n(unsigned char*, unsigned char*, unsigned char*) -1a8c2 c 325 61 -1a8ce 1b 326 61 -1a8e9 1 326 61 -FUNC 1a8ea 2f 0 unsigned char* std::copy(unsigned char*, unsigned char*, unsigned char*) -1a8ea c 376 79 -1a8f6 4 384 61 -1a8fa 4 385 61 -1a8fe 1b 387 61 -1a919 1 387 61 -FUNC 1a91a 27 0 unsigned char* std::__uninitialized_copy_aux(unsigned char*, unsigned char*, unsigned char*, __true_type) -1a91a c 73 79 -1a926 1b 74 79 -1a941 1 74 79 -FUNC 1a942 2f 0 unsigned char* std::uninitialized_copy(unsigned char*, unsigned char*, unsigned char*) -1a942 c 108 79 -1a94e 23 113 79 -1a971 1 113 79 -FUNC 1a972 27 0 unsigned char* std::__uninitialized_copy_a(unsigned char*, unsigned char*, unsigned char*, std::allocator) -1a972 c 252 79 -1a97e 1b 254 79 -1a999 1 254 79 -FUNC 1a99a 40 0 unsigned char* std::__copy_normal::copy_n<__gnu_cxx::__normal_iterator > >, unsigned char*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char*) -1a99a d 334 61 -1a9a7 33 335 61 -FUNC 1a9da 2f 0 unsigned char* std::copy<__gnu_cxx::__normal_iterator > >, unsigned char*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char*) -1a9da c 376 79 -1a9e6 4 384 61 -1a9ea 4 385 61 -1a9ee 1b 387 61 -1aa09 1 387 61 -FUNC 1aa0a 27 0 unsigned char* std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator > >, unsigned char*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char*, __true_type) -1aa0a c 73 79 -1aa16 1b 74 79 -1aa31 1 74 79 -FUNC 1aa32 2f 0 unsigned char* std::uninitialized_copy<__gnu_cxx::__normal_iterator > >, unsigned char*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char*) -1aa32 c 108 79 -1aa3e 23 113 79 -1aa61 1 113 79 -FUNC 1aa62 27 0 unsigned char* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator > >, unsigned char*, unsigned char>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned char*, std::allocator) -1aa62 c 252 79 -1aa6e 1b 254 79 -1aa89 1 254 79 -1aa96 9 616 61 -1aa9f 2 617 61 -1aaa1 13 618 61 -1aab4 16 617 61 -1aaca 5 619 61 -1aacf 1 619 61 -1aadc 4 641 61 -1aae0 1b 642 61 -1aafb 1 642 61 -FUNC 1aafc 27 0 void std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char>(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&, __true_type) -1aafc c 182 79 -1ab08 1b 183 79 -1ab23 1 183 79 -FUNC 1ab24 2f 0 void std::uninitialized_fill_n<__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char>(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&) -1ab24 c 214 79 -1ab30 23 218 79 -1ab53 1 218 79 -FUNC 1ab54 27 0 void std::__uninitialized_fill_n_a<__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char, unsigned char>(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&, std::allocator) -1ab54 c 308 79 -1ab60 1b 310 79 -1ab7b 1 310 79 -FUNC 1ab7c 45a 0 std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&) -1ab7c 14 311 79 -1ab90 b 313 78 -1ab9b 21 315 78 -1abbc 9 318 78 -1abc5 23 319 78 -1abe8 15 320 78 -1abfd c 321 78 -1ac09 4e 323 78 -1ac57 11 327 78 -1ac68 30 328 78 -1ac98 35 330 78 -1accd 48 334 78 -1ad15 14 338 78 -1ad29 43 339 78 -1ad6c 11 342 78 -1ad7d 1e 343 78 -1ad9b e 348 78 -1ada9 1e 349 78 -1adc7 e 350 78 -1add5 1d 353 78 -1adf2 8 354 78 -1adfa e 355 78 -1ae08 27 357 78 -1ae2f 6 358 78 -1ae35 4d 361 78 -1ae82 40 365 78 -1aec2 18 367 78 -1aeda 4d 368 78 -1af27 3e 379 78 -1af65 2d 381 78 -1af92 12 384 78 -1afa4 13 385 78 -1afb7 1f 386 78 -FUNC 1afd6 2e 0 std::vector >::insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned char const&) -1afd6 c 657 79 -1afe2 22 658 71 -FUNC 1b004 ab 0 std::vector >::resize(unsigned long, unsigned char const&) -1b004 d 422 79 -1b011 15 424 71 -1b026 48 425 71 -1b06e 41 427 71 -1b0af 1 427 71 -FUNC 1b0b0 2b 0 std::vector >::resize(unsigned long) -1b0b0 c 441 79 -1b0bc 1f 442 71 -1b0db 1 442 71 -FUNC 1b0dc 1a 0 std::_Deque_iterator::_S_buffer_size() -1b0dc c 106 79 -1b0e8 e 107 62 -FUNC 1b0f6 66 0 std::_Deque_iterator::difference_type std::operator-(std::_Deque_iterator const&, std::_Deque_iterator const&) -1b0f6 d 328 79 -1b103 59 333 62 -FUNC 1b15c 3e 0 std::_Deque_iterator::_M_set_node(unsigned long long**) -1b15c d 229 79 -1b169 9 231 62 -1b172 b 232 62 -1b17d 1d 233 62 -FUNC 1b19a 50 0 std::_Deque_iterator::operator++() -1b19a c 142 79 -1b1a6 d 144 62 -1b1b3 f 145 62 -1b1c2 18 147 62 -1b1da b 148 62 -1b1e5 5 150 62 -FUNC 1b1ea 84 0 std::_Deque_iterator std::__copy::copy, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator) -1b1ea e 280 61 -1b1f8 17 283 61 -1b20f 20 285 61 -1b22f b 286 61 -1b23a b 287 61 -1b245 b 283 61 -1b250 1e 289 61 -FUNC 1b26e 7e 0 std::_Deque_iterator std::__copy_aux, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator) -1b26e 11 307 79 -1b27f 4 315 61 -1b283 69 317 61 -FUNC 1b2ec 7a 0 std::_Deque_iterator std::__copy_normal::copy_n, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator) -1b2ec 11 325 61 -1b2fd 69 326 61 -FUNC 1b366 82 0 std::_Deque_iterator std::copy, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator) -1b366 11 376 79 -1b377 4 384 61 -1b37b 4 385 61 -1b37f 69 387 61 -FUNC 1b3e8 7a 0 std::_Deque_iterator std::__uninitialized_copy_aux, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator, __true_type) -1b3e8 11 73 79 -1b3f9 69 74 79 -FUNC 1b462 82 0 std::_Deque_iterator std::uninitialized_copy, std::_Deque_iterator >(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator) -1b462 11 108 79 -1b473 71 113 79 -FUNC 1b4e4 7a 0 std::_Deque_iterator std::__uninitialized_copy_a, std::_Deque_iterator, unsigned long long>(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator, std::allocator) -1b4e4 11 252 79 -1b4f5 69 254 79 -1b55e 10 679 62 -1b56e 64 680 62 -1b5d2 e8 681 62 -1b6ba c 143 75 -1b6c6 14 144 75 -1b6da 6 144 75 -FUNC 1b6e0 4d 0 __eprintf -1b6e0 6 1826 80 -1b6e6 3 1832 80 -1b6e9 c 1826 80 -1b6f5 29 1832 80 -1b71e a 1837 80 -1b728 5 1838 80 -1b72d e8d3 1838 80 diff --git a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer-inl.h b/thirdparty/google-breakpad/r318/src/client/minidump_file_writer-inl.h deleted file mode 100644 index 7c556a27..00000000 --- a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer-inl.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_file_writer-inl.h: Minidump file writer implementation. -// -// See minidump_file_writer.h for documentation. - -#ifndef CLIENT_MINIDUMP_FILE_WRITER_INL_H__ -#define CLIENT_MINIDUMP_FILE_WRITER_INL_H__ - -#include - -#include "client/minidump_file_writer.h" -#include "google_breakpad/common/minidump_size.h" - -namespace google_breakpad { - -template -inline bool TypedMDRVA::Allocate() { - allocation_state_ = SINGLE_OBJECT; - return UntypedMDRVA::Allocate(minidump_size::size()); -} - -template -inline bool TypedMDRVA::Allocate(size_t additional) { - allocation_state_ = SINGLE_OBJECT; - return UntypedMDRVA::Allocate(minidump_size::size() + additional); -} - -template -inline bool TypedMDRVA::AllocateArray(size_t count) { - assert(count); - allocation_state_ = ARRAY; - return UntypedMDRVA::Allocate(minidump_size::size() * count); -} - -template -inline bool TypedMDRVA::AllocateObjectAndArray(unsigned int count, - size_t size) { - assert(count && size); - allocation_state_ = SINGLE_OBJECT_WITH_ARRAY; - return UntypedMDRVA::Allocate(minidump_size::size() + count * size); -} - -template -inline bool TypedMDRVA::CopyIndex(unsigned int index, MDType *item) { - assert(allocation_state_ == ARRAY); - return writer_->Copy(position_ + index * minidump_size::size(), item, - minidump_size::size()); -} - -template -inline bool TypedMDRVA::CopyIndexAfterObject(unsigned int index, - const void *src, - size_t size) { - assert(allocation_state_ == SINGLE_OBJECT_WITH_ARRAY); - return writer_->Copy(position_ + minidump_size::size() + index * size, - src, size); -} - -template -inline bool TypedMDRVA::Flush() { - return writer_->Copy(position_, &data_, minidump_size::size()); -} - -} // namespace google_breakpad - -#endif // CLIENT_MINIDUMP_FILE_WRITER_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.cc b/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.cc deleted file mode 100644 index fdd59198..00000000 --- a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.cc +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_file_writer.cc: Minidump file writer implementation. -// -// See minidump_file_writer.h for documentation. - -#include -#include -#include -#include -#include - -#include "client/minidump_file_writer-inl.h" -#include "common/string_conversion.h" - -namespace google_breakpad { - -const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast(-1); - -MinidumpFileWriter::MinidumpFileWriter() : file_(-1), position_(0), size_(0) { -} - -MinidumpFileWriter::~MinidumpFileWriter() { - Close(); -} - -bool MinidumpFileWriter::Open(const char *path) { - assert(file_ == -1); - file_ = open(path, O_WRONLY | O_CREAT | O_EXCL, 0600); - - return file_ != -1; -} - -bool MinidumpFileWriter::Close() { - bool result = true; - - if (file_ != -1) { - ftruncate(file_, position_); - result = (close(file_) == 0); - file_ = -1; - } - - return result; -} - -bool MinidumpFileWriter::CopyStringToMDString(const wchar_t *str, - unsigned int length, - TypedMDRVA *mdstring) { - bool result = true; - if (sizeof(wchar_t) == sizeof(u_int16_t)) { - // Shortcut if wchar_t is the same size as MDString's buffer - result = mdstring->Copy(str, mdstring->get()->length); - } else { - u_int16_t out[2]; - int out_idx = 0; - - // Copy the string character by character - while (length && result) { - UTF32ToUTF16Char(*str, out); - if (!out[0]) - return false; - - // Process one character at a time - --length; - ++str; - - // Append the one or two UTF-16 characters. The first one will be non- - // zero, but the second one may be zero, depending on the conversion from - // UTF-32. - int out_count = out[1] ? 2 : 1; - int out_size = sizeof(u_int16_t) * out_count; - result = mdstring->CopyIndexAfterObject(out_idx, out, out_size); - out_idx += out_count; - } - } - return result; -} - -bool MinidumpFileWriter::CopyStringToMDString(const char *str, - unsigned int length, - TypedMDRVA *mdstring) { - bool result = true; - u_int16_t out[2]; - int out_idx = 0; - - // Copy the string character by character - while (length && result) { - int conversion_count = UTF8ToUTF16Char(str, length, out); - if (!conversion_count) - return false; - - // Move the pointer along based on the nubmer of converted characters - length -= conversion_count; - str += conversion_count; - - // Append the one or two UTF-16 characters - int out_count = out[1] ? 2 : 1; - int out_size = sizeof(u_int16_t) * out_count; - result = mdstring->CopyIndexAfterObject(out_idx, out, out_size); - out_idx += out_count; - } - return result; -} - -template -bool MinidumpFileWriter::WriteStringCore(const CharType *str, - unsigned int length, - MDLocationDescriptor *location) { - assert(str); - assert(location); - // Calculate the mdstring length by either limiting to |length| as passed in - // or by finding the location of the NULL character. - unsigned int mdstring_length = 0; - if (!length) - length = INT_MAX; - for (; mdstring_length < length && str[mdstring_length]; ++mdstring_length) - ; - - // Allocate the string buffer - TypedMDRVA mdstring(this); - if (!mdstring.AllocateObjectAndArray(mdstring_length + 1, sizeof(u_int16_t))) - return false; - - // Set length excluding the NULL and copy the string - mdstring.get()->length = mdstring_length * sizeof(u_int16_t); - bool result = CopyStringToMDString(str, mdstring_length, &mdstring); - - // NULL terminate - if (result) { - u_int16_t ch = 0; - result = mdstring.CopyIndexAfterObject(mdstring_length, &ch, sizeof(ch)); - - if (result) - *location = mdstring.location(); - } - - return result; -} - -bool MinidumpFileWriter::WriteString(const wchar_t *str, unsigned int length, - MDLocationDescriptor *location) { - return WriteStringCore(str, length, location); -} - -bool MinidumpFileWriter::WriteString(const char *str, unsigned int length, - MDLocationDescriptor *location) { - return WriteStringCore(str, length, location); -} - -bool MinidumpFileWriter::WriteMemory(const void *src, size_t size, - MDMemoryDescriptor *output) { - assert(src); - assert(output); - UntypedMDRVA mem(this); - - if (!mem.Allocate(size)) - return false; - if (!mem.Copy(src, mem.size())) - return false; - - output->start_of_memory_range = reinterpret_cast(src); - output->memory = mem.location(); - - return true; -} - -MDRVA MinidumpFileWriter::Allocate(size_t size) { - assert(size); - assert(file_ != -1); - size_t aligned_size = (size + 7) & ~7; // 64-bit alignment - - if (position_ + aligned_size > size_) { - size_t growth = aligned_size; - size_t minimal_growth = getpagesize(); - - // Ensure that the file grows by at least the size of a memory page - if (growth < minimal_growth) - growth = minimal_growth; - - size_t new_size = size_ + growth; - if (ftruncate(file_, new_size) != 0) - return kInvalidMDRVA; - - size_ = new_size; - } - - MDRVA current_position = position_; - position_ += static_cast(aligned_size); - - return current_position; -} - -bool MinidumpFileWriter::Copy(MDRVA position, const void *src, ssize_t size) { - assert(src); - assert(size); - assert(file_ != -1); - - // Ensure that the data will fit in the allocated space - if (size + position > size_) - return false; - - // Seek and write the data - if (lseek(file_, position, SEEK_SET) == static_cast(position)) - if (write(file_, src, size) == size) - return true; - - return false; -} - -bool UntypedMDRVA::Allocate(size_t size) { - assert(size_ == 0); - size_ = size; - position_ = writer_->Allocate(size_); - return position_ != MinidumpFileWriter::kInvalidMDRVA; -} - -bool UntypedMDRVA::Copy(MDRVA position, const void *src, size_t size) { - assert(src); - assert(size); - assert(position + size <= position_ + size_); - return writer_->Copy(position, src, size); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.h b/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.h deleted file mode 100644 index f569a553..00000000 --- a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer.h +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_file_writer.h: Implements file-based minidump generation. It's -// intended to be used with the Google Breakpad open source crash handling -// project. - -#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__ -#define CLIENT_MINIDUMP_FILE_WRITER_H__ - -#include - -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -class UntypedMDRVA; -template class TypedMDRVA; - -// The user of this class can Open() a file and add minidump streams, data, and -// strings using the definitions in minidump_format.h. Since this class is -// expected to be used in a situation where the current process may be -// damaged, it will not allocate heap memory. -// Sample usage: -// MinidumpFileWriter writer; -// writer.Open("/tmp/minidump.dmp"); -// TypedMDRVA header(&writer_); -// header.Allocate(); -// header->get()->signature = MD_HEADER_SIGNATURE; -// : -// writer.Close(); -class MinidumpFileWriter { -public: - // Invalid MDRVA (Minidump Relative Virtual Address) - // returned on failed allocation - static const MDRVA kInvalidMDRVA; - - MinidumpFileWriter(); - ~MinidumpFileWriter(); - - // Open |path| as the destination of the minidump data. Any existing file - // will be overwritten. - // Return true on success, or false on failure - bool Open(const char *path); - - // Close the current file - // Return true on success, or false on failure - bool Close(); - - // Copy the contents of |str| to a MDString and write it to the file. - // |str| is expected to be either UTF-16 or UTF-32 depending on the size - // of wchar_t. - // Maximum |length| of characters to copy from |str|, or specify 0 to use the - // entire NULL terminated string. Copying will stop at the first NULL. - // |location| the allocated location - // Return true on success, or false on failure - bool WriteString(const wchar_t *str, unsigned int length, - MDLocationDescriptor *location); - - // Same as above, except with |str| as a UTF-8 string - bool WriteString(const char *str, unsigned int length, - MDLocationDescriptor *location); - - // Write |size| bytes starting at |src| into the current position. - // Return true on success and set |output| to position, or false on failure - bool WriteMemory(const void *src, size_t size, MDMemoryDescriptor *output); - - // Copies |size| bytes from |src| to |position| - // Return true on success, or false on failure - bool Copy(MDRVA position, const void *src, ssize_t size); - - // Return the current position for writing to the minidump - inline MDRVA position() const { return position_; } - - private: - friend class UntypedMDRVA; - - // Allocates an area of |size| bytes. - // Returns the position of the allocation, or kInvalidMDRVA if it was - // unable to allocate the bytes. - MDRVA Allocate(size_t size); - - // The file descriptor for the output file - int file_; - - // Current position in buffer - MDRVA position_; - - // Current allocated size - size_t size_; - - // Copy |length| characters from |str| to |mdstring|. These are distinct - // because the underlying MDString is a UTF-16 based string. The wchar_t - // variant may need to create a MDString that has more characters than the - // source |str|, whereas the UTF-8 variant may coalesce characters to form - // a single UTF-16 character. - bool CopyStringToMDString(const wchar_t *str, unsigned int length, - TypedMDRVA *mdstring); - bool CopyStringToMDString(const char *str, unsigned int length, - TypedMDRVA *mdstring); - - // The common templated code for writing a string - template - bool WriteStringCore(const CharType *str, unsigned int length, - MDLocationDescriptor *location); -}; - -// Represents an untyped allocated chunk -class UntypedMDRVA { - public: - explicit UntypedMDRVA(MinidumpFileWriter *writer) - : writer_(writer), - position_(writer->position()), - size_(0) {} - - // Allocates |size| bytes. Must not call more than once. - // Return true on success, or false on failure - bool Allocate(size_t size); - - // Returns the current position or kInvalidMDRVA if allocation failed - inline MDRVA position() const { return position_; } - - // Number of bytes allocated - inline size_t size() const { return size_; } - - // Return size and position - inline MDLocationDescriptor location() const { - MDLocationDescriptor location = { size_, position_ }; - return location; - } - - // Copy |size| bytes starting at |src| into the minidump at |position| - // Return true on success, or false on failure - bool Copy(MDRVA position, const void *src, size_t size); - - // Copy |size| bytes from |src| to the current position - inline bool Copy(const void *src, size_t size) { - return Copy(position_, src, size); - } - - protected: - // Writer we associate with - MinidumpFileWriter *writer_; - - // Position of the start of the data - MDRVA position_; - - // Allocated size - size_t size_; -}; - -// Represents a Minidump object chunk. Additional memory can be allocated at -// the end of the object as a: -// - single allocation -// - Array of MDType objects -// - A MDType object followed by an array -template -class TypedMDRVA : public UntypedMDRVA { - public: - // Constructs an unallocated MDRVA - explicit TypedMDRVA(MinidumpFileWriter *writer) - : UntypedMDRVA(writer), - data_(), - allocation_state_(UNALLOCATED) {} - - inline ~TypedMDRVA() { - // Ensure that the data_ object is written out - if (allocation_state_ != ARRAY) - Flush(); - } - - // Address of object data_ of MDType. This is not declared const as the - // typical usage will be to access the underlying |data_| object as to - // alter its contents. - MDType *get() { return &data_; } - - // Allocates minidump_size::size() bytes. - // Must not call more than once. - // Return true on success, or false on failure - bool Allocate(); - - // Allocates minidump_size::size() + |additional| bytes. - // Must not call more than once. - // Return true on success, or false on failure - bool Allocate(size_t additional); - - // Allocate an array of |count| elements of MDType. - // Must not call more than once. - // Return true on success, or false on failure - bool AllocateArray(size_t count); - - // Allocate an array of |count| elements of |size| after object of MDType - // Must not call more than once. - // Return true on success, or false on failure - bool AllocateObjectAndArray(unsigned int count, size_t size); - - // Copy |item| to |index| - // Must have been allocated using AllocateArray(). - // Return true on success, or false on failure - bool CopyIndex(unsigned int index, MDType *item); - - // Copy |size| bytes starting at |str| to |index| - // Must have been allocated using AllocateObjectAndArray(). - // Return true on success, or false on failure - bool CopyIndexAfterObject(unsigned int index, const void *src, size_t size); - - // Write data_ - bool Flush(); - - private: - enum AllocationState { - UNALLOCATED = 0, - SINGLE_OBJECT, - ARRAY, - SINGLE_OBJECT_WITH_ARRAY - }; - - MDType data_; - AllocationState allocation_state_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_MINIDUMP_FILE_WRITER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer_unittest.cc b/thirdparty/google-breakpad/r318/src/client/minidump_file_writer_unittest.cc deleted file mode 100644 index 8eadff46..00000000 --- a/thirdparty/google-breakpad/r318/src/client/minidump_file_writer_unittest.cc +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: waylonis@google.com (Dan Waylonis) - -/* - g++ -I../ ../common/convert_UTF.c \ - ../common/string_conversion.cc \ - minidump_file_writer.cc \ - minidump_file_writer_unittest.cc \ - -o minidump_file_writer_unittest - */ - -#include -#include - -#include "minidump_file_writer-inl.h" - -using google_breakpad::MinidumpFileWriter; - -#define ASSERT_TRUE(cond) \ -if (!(cond)) { \ - fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \ - return false; \ -} - -#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2)) -#define ASSERT_NE(e1, e2) ASSERT_TRUE((e1) != (e2)) - -struct StringStructure { - unsigned long integer_value; - MDLocationDescriptor first_string; - MDLocationDescriptor second_string; -}; - -struct ArrayStructure { - unsigned char char_value; - unsigned short short_value; - unsigned long long_value; -}; - -typedef struct { - unsigned long count; - ArrayStructure array[0]; -} ObjectAndArrayStructure; - -static bool WriteFile(const char *path) { - MinidumpFileWriter writer; - if (writer.Open(path)) { - // Test a single structure - google_breakpad::TypedMDRVA strings(&writer); - ASSERT_TRUE(strings.Allocate()); - strings.get()->integer_value = 0xBEEF; - const char *first = "First String"; - ASSERT_TRUE(writer.WriteString(first, 0, &strings.get()->first_string)); - const wchar_t *second = L"Second String"; - ASSERT_TRUE(writer.WriteString(second, 0, &strings.get()->second_string)); - - // Test an array structure - google_breakpad::TypedMDRVA array(&writer); - unsigned int count = 10; - ASSERT_TRUE(array.AllocateArray(count)); - for (unsigned int i = 0; i < count; ++i) { - ArrayStructure local; - local.char_value = i; - local.short_value = i + 1; - local.long_value = i + 2; - ASSERT_TRUE(array.CopyIndex(i, &local)); - } - - // Test an object followed by an array - google_breakpad::TypedMDRVA obj_array(&writer); - ASSERT_TRUE(obj_array.AllocateObjectAndArray(count, - sizeof(ArrayStructure))); - obj_array.get()->count = count; - for (unsigned int i = 0; i < count; ++i) { - ArrayStructure local; - local.char_value = i; - local.short_value = i + 1; - local.long_value = i + 2; - ASSERT_TRUE(obj_array.CopyIndexAfterObject(i, &local, sizeof(local))); - } - } - - return writer.Close(); -} - -static bool CompareFile(const char *path) { - unsigned long expected[] = { -#if defined(__BIG_ENDIAN__) - 0x0000beef, 0x0000001e, 0x00000018, 0x00000020, 0x00000038, 0x00000000, - 0x00000018, 0x00460069, 0x00720073, 0x00740020, 0x00530074, 0x00720069, - 0x006e0067, 0x00000000, 0x0000001a, 0x00530065, 0x0063006f, 0x006e0064, - 0x00200053, 0x00740072, 0x0069006e, 0x00670000, 0x00000001, 0x00000002, - 0x01000002, 0x00000003, 0x02000003, 0x00000004, 0x03000004, 0x00000005, - 0x04000005, 0x00000006, 0x05000006, 0x00000007, 0x06000007, 0x00000008, - 0x07000008, 0x00000009, 0x08000009, 0x0000000a, 0x0900000a, 0x0000000b, - 0x0000000a, 0x00000001, 0x00000002, 0x01000002, 0x00000003, 0x02000003, - 0x00000004, 0x03000004, 0x00000005, 0x04000005, 0x00000006, 0x05000006, - 0x00000007, 0x06000007, 0x00000008, 0x07000008, 0x00000009, 0x08000009, - 0x0000000a, 0x0900000a, 0x0000000b, 0x00000000 -#else - 0x0000beef, 0x0000001e, 0x00000018, 0x00000020, 0x00000038, 0x00000000, - 0x00000018, 0x00690046, 0x00730072, 0x00200074, 0x00740053, 0x00690072, - 0x0067006e, 0x00000000, 0x0000001a, 0x00650053, 0x006f0063, 0x0064006e, - 0x00530020, 0x00720074, 0x006e0069, 0x00000067, 0x0001da00, 0x00000002, - 0x0002da01, 0x00000003, 0x0003da02, 0x00000004, 0x0004da03, 0x00000005, - 0x0005da04, 0x00000006, 0x0006da05, 0x00000007, 0x0007da06, 0x00000008, - 0x0008da07, 0x00000009, 0x0009da08, 0x0000000a, 0x000ada09, 0x0000000b, - 0x0000000a, 0x00018700, 0x00000002, 0x00028701, 0x00000003, 0x00038702, - 0x00000004, 0x00048703, 0x00000005, 0x00058704, 0x00000006, 0x00068705, - 0x00000007, 0x00078706, 0x00000008, 0x00088707, 0x00000009, 0x00098708, - 0x0000000a, 0x000a8709, 0x0000000b, 0x00000000, -#endif - }; - unsigned int expected_byte_count = sizeof(expected); - int fd = open(path, O_RDONLY, 0600); - void *buffer = malloc(expected_byte_count); - ASSERT_NE(fd, -1); - ASSERT_TRUE(buffer); - ASSERT_EQ(read(fd, buffer, expected_byte_count), expected_byte_count); - - char *b1, *b2; - b1 = (char*)buffer; - b2 = (char*)expected; - while (*b1 == *b2) { - b1++; - b2++; - } - - printf("%d\n",b1 - (char*)buffer); - - - ASSERT_EQ(memcmp(buffer, expected, expected_byte_count), 0); - return true; -} - -static bool RunTests() { - const char *path = "/tmp/minidump_file_writer_unittest.dmp"; - ASSERT_TRUE(WriteFile(path)); - ASSERT_TRUE(CompareFile(path)); - unlink(path); - return true; -} - -extern "C" int main(int argc, const char *argv[]) { - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/Makefile b/thirdparty/google-breakpad/r318/src/client/solaris/handler/Makefile deleted file mode 100644 index 9b642865..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/Makefile +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2007, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -# Author: Alfred Peng - -CC=cc -CXX=CC - -CPPFLAGS=-g -I../../.. -DNDEBUG -features=extensions -D_REENTRANT -LDFLAGS=-lpthread -lssl -lgnutls-openssl -lelf - -OBJ_DIR=. -BIN_DIR=. - -THREAD_SRC=solaris_lwp.cc -SHARE_SRC=../../minidump_file_writer.cc\ - ../../../common/md5.c\ - ../../../common/string_conversion.cc\ - ../../../common/solaris/file_id.cc\ - minidump_generator.cc -HANDLER_SRC=exception_handler.cc\ - ../../../common/solaris/guid_creator.cc -SHARE_C_SRC=../../../common/convert_UTF.c - -MINIDUMP_TEST_SRC=minidump_test.cc -EXCEPTION_TEST_SRC=exception_handler_test.cc - -THREAD_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(THREAD_SRC)) -SHARE_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(SHARE_SRC)) -HANDLER_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o,$(HANDLER_SRC)) -SHARE_C_OBJ=$(patsubst %.c,$(OBJ_DIR)/%.o,$(SHARE_C_SRC)) -MINIDUMP_TEST_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o, $(MINIDUMP_TEST_SRC))\ - $(THREAD_OBJ) $(SHARE_OBJ) $(SHARE_C_OBJ) $(HANDLER_OBJ) -EXCEPTION_TEST_OBJ=$(patsubst %.cc,$(OBJ_DIR)/%.o, $(EXCEPTION_TEST_SRC))\ - $(THREAD_OBJ) $(SHARE_OBJ) $(SHARE_C_OBJ) $(HANDLER_OBJ) - -BIN=$(BIN_DIR)/minidump_test\ - $(BIN_DIR)/exception_handler_test - -.PHONY:all clean - -all:$(BIN) - -$(BIN_DIR)/minidump_test:$(MINIDUMP_TEST_OBJ) - $(CXX) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ - -$(BIN_DIR)/exception_handler_test:$(EXCEPTION_TEST_OBJ) - $(CXX) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ - -clean: - rm -f $(BIN) *.o *.out *.dmp core ../../minidump_file_writer.o\ - ../../../common/*.o ../../../common/solaris/*.o diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.cc b/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.cc deleted file mode 100644 index 7fc8d255..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.cc +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include -#include -#include - -#include -#include -#include - -#include "client/solaris/handler/exception_handler.h" -#include "common/solaris/guid_creator.h" -#include "common/solaris/message_output.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Signals that we are interested. -static const int kSigTable[] = { - SIGSEGV, - SIGABRT, - SIGFPE, - SIGILL, - SIGBUS -}; - -std::vector *ExceptionHandler::handler_stack_ = NULL; -int ExceptionHandler::handler_stack_index_ = 0; -pthread_mutex_t ExceptionHandler::handler_stack_mutex_ = - PTHREAD_MUTEX_INITIALIZER; - -ExceptionHandler::ExceptionHandler(const string &dump_path, - FilterCallback filter, - MinidumpCallback callback, - void *callback_context, - bool install_handler) - : filter_(filter), - callback_(callback), - callback_context_(callback_context), - dump_path_(), - installed_handler_(install_handler) { - set_dump_path(dump_path); - - if (install_handler) { - SetupHandler(); - } - - if (install_handler) { - pthread_mutex_lock(&handler_stack_mutex_); - - if (handler_stack_ == NULL) - handler_stack_ = new std::vector; - handler_stack_->push_back(this); - pthread_mutex_unlock(&handler_stack_mutex_); - } -} - -ExceptionHandler::~ExceptionHandler() { - TeardownAllHandlers(); - pthread_mutex_lock(&handler_stack_mutex_); - if (handler_stack_->back() == this) { - handler_stack_->pop_back(); - } else { - print_message1(2, "warning: removing Breakpad handler out of order\n"); - for (std::vector::iterator iterator = - handler_stack_->begin(); - iterator != handler_stack_->end(); - ++iterator) { - if (*iterator == this) { - handler_stack_->erase(iterator); - } - } - } - - if (handler_stack_->empty()) { - // When destroying the last ExceptionHandler that installed a handler, - // clean up the handler stack. - delete handler_stack_; - handler_stack_ = NULL; - } - pthread_mutex_unlock(&handler_stack_mutex_); -} - -bool ExceptionHandler::WriteMinidump() { - return InternalWriteMinidump(0, 0, NULL); -} - -// static -bool ExceptionHandler::WriteMinidump(const string &dump_path, - MinidumpCallback callback, - void *callback_context) { - ExceptionHandler handler(dump_path, NULL, callback, - callback_context, false); - return handler.InternalWriteMinidump(0, 0, NULL); -} - -void ExceptionHandler::SetupHandler() { - // Signal on a different stack to avoid using the stack - // of the crashing lwp. - struct sigaltstack sig_stack; - sig_stack.ss_sp = malloc(MINSIGSTKSZ); - if (sig_stack.ss_sp == NULL) - return; - sig_stack.ss_size = MINSIGSTKSZ; - sig_stack.ss_flags = 0; - - if (sigaltstack(&sig_stack, NULL) < 0) - return; - for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i) - SetupHandler(kSigTable[i]); -} - -void ExceptionHandler::SetupHandler(int signo) { - struct sigaction act, old_act; - act.sa_handler = HandleException; - act.sa_flags = SA_ONSTACK; - if (sigaction(signo, &act, &old_act) < 0) - return; - old_handlers_[signo] = old_act.sa_handler; -} - -void ExceptionHandler::TeardownHandler(int signo) { - if (old_handlers_.find(signo) != old_handlers_.end()) { - struct sigaction act; - act.sa_handler = old_handlers_[signo]; - act.sa_flags = 0; - sigaction(signo, &act, 0); - } -} - -void ExceptionHandler::TeardownAllHandlers() { - for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i) { - TeardownHandler(kSigTable[i]); - } -} - -// static -void ExceptionHandler::HandleException(int signo) { -//void ExceptionHandler::HandleException(int signo, siginfo_t *sip, ucontext_t *sig_ctx) { - // The context information about the signal is put on the stack of - // the signal handler frame as value parameter. For some reasons, the - // prototype of the handler doesn't declare this information as parameter, we - // will do it by hand. The stack layout for a signal handler frame is here: - // http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libproc/common/Pstack.c#81 - // - // However, if we are being called by another signal handler passing the - // signal up the chain, then we may not have this random extra parameter, - // so we may have to walk the stack to find it. We do the actual work - // on another thread, where it's a little safer, but we want the ebp - // from this frame to find it. - uintptr_t current_ebp = (uintptr_t)_getfp(); - - pthread_mutex_lock(&handler_stack_mutex_); - ExceptionHandler *current_handler = - handler_stack_->at(handler_stack_->size() - ++handler_stack_index_); - pthread_mutex_unlock(&handler_stack_mutex_); - - // Restore original handler. - current_handler->TeardownHandler(signo); - - ucontext_t *sig_ctx = NULL; - if (current_handler->InternalWriteMinidump(signo, current_ebp, &sig_ctx)) { -// if (current_handler->InternalWriteMinidump(signo, &sig_ctx)) { - // Fully handled this exception, safe to exit. - exit(EXIT_FAILURE); - } else { - // Exception not fully handled, will call the next handler in stack to - // process it. - typedef void (*SignalHandler)(int signo); - SignalHandler old_handler = - reinterpret_cast(current_handler->old_handlers_[signo]); - if (old_handler != NULL) - old_handler(signo); - } - - pthread_mutex_lock(&handler_stack_mutex_); - current_handler->SetupHandler(signo); - --handler_stack_index_; - // All the handlers in stack have been invoked to handle the exception, - // normally the process should be terminated and should not reach here. - // In case we got here, ask the OS to handle it to avoid endless loop, - // normally the OS will generate a core and termiate the process. This - // may be desired to debug the program. - if (handler_stack_index_ == 0) - signal(signo, SIG_DFL); - pthread_mutex_unlock(&handler_stack_mutex_); -} - -bool ExceptionHandler::InternalWriteMinidump(int signo, - uintptr_t sighandler_ebp, - ucontext_t **sig_ctx) { - if (filter_ && !filter_(callback_context_)) - return false; - - bool success = false; - GUID guid; - char guid_str[kGUIDStringLength + 1]; - if (CreateGUID(&guid) && GUIDToString(&guid, guid_str, sizeof(guid_str))) { - char minidump_path[PATH_MAX]; - snprintf(minidump_path, sizeof(minidump_path), "%s/%s.dmp", - dump_path_c_, guid_str); - - // Block all the signals we want to process when writing minidump. - // We don't want it to be interrupted. - sigset_t sig_blocked, sig_old; - bool blocked = true; - sigfillset(&sig_blocked); - for (size_t i = 0; i < sizeof(kSigTable) / sizeof(kSigTable[0]); ++i) - sigdelset(&sig_blocked, kSigTable[i]); - if (sigprocmask(SIG_BLOCK, &sig_blocked, &sig_old) != 0) { - blocked = false; - print_message1(2, "HandleException: failed to block signals.\n"); - } - - success = minidump_generator_.WriteMinidumpToFile( - minidump_path, signo, sighandler_ebp, sig_ctx); - - // Unblock the signals. - if (blocked) - sigprocmask(SIG_SETMASK, &sig_old, &sig_old); - - if (callback_) - success = callback_(dump_path_c_, guid_str, callback_context_, success); - } - return success; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.h b/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.h deleted file mode 100644 index 4d72485f..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler.h +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// Author: Alfred Peng - -#ifndef CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__ - -#include -#include -#include - -#include "client/solaris/handler/minidump_generator.h" - -namespace google_breakpad { - -using std::string; - -// -// ExceptionHandler -// -// ExceptionHandler can write a minidump file when an exception occurs, -// or when WriteMinidump() is called explicitly by your program. -// -// To have the exception handler write minidumps when an uncaught exception -// (crash) occurs, you should create an instance early in the execution -// of your program, and keep it around for the entire time you want to -// have crash handling active (typically, until shutdown). -// (NOTE): There should be only one this kind of exception handler -// object per process. -// -// If you want to write minidumps without installing the exception handler, -// you can create an ExceptionHandler with install_handler set to false, -// then call WriteMinidump. You can also use this technique if you want to -// use different minidump callbacks for different call sites. -// -// In either case, a callback function is called when a minidump is written, -// which receives the unqiue id of the minidump. The caller can use this -// id to collect and write additional application state, and to launch an -// external crash-reporting application. -// -// Caller should try to make the callbacks as crash-friendly as possible, -// it should avoid use heap memory allocation as much as possible. -// -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, - // Breakpad will immediately report the exception as unhandled without - // writing a minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void *context); - - // A callback function to run after the minidump has been written. - // minidump_id is a unique id for the dump, so the minidump - // file is /.dmp. context is the parameter supplied - // by the user as callback_context when the handler was created. succeeded - // indicates whether a minidump file was successfully written. - // - // If an exception occurred and the callback returns true, Breakpad will - // treat the exception as fully-handled, suppressing any other handlers from - // being notified of the exception. If the callback returns false, Breakpad - // will treat the exception as unhandled, and allow another handler to handle - // it. If there are no other handlers, Breakpad will report the exception to - // the system as unhandled, allowing a debugger or native crash dialog the - // opportunity to handle the exception. Most callback implementations - // should normally return the value of |succeeded|, or when they wish to - // not report an exception of handled, false. Callbacks will rarely want to - // return true directly (unless |succeeded| is true). - typedef bool (*MinidumpCallback)(const char *dump_path, - const char *minidump_id, - void *context, - bool succeeded); - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Before writing a minidump, the optional filter callback will be called. - // Its return value determines whether or not Breakpad should write a - // minidump. Minidump files will be written to dump_path, and the optional - // callback is called after writing the dump file, as described above. - // If install_handler is true, then a minidump will be written whenever - // an unhandled exception occurs. If it is false, minidumps will only - // be written when WriteMinidump is called. - ExceptionHandler(const string &dump_path, - FilterCallback filter, MinidumpCallback callback, - void *callback_context, - bool install_handler); - ~ExceptionHandler(); - - // Get and Set the minidump path. - string dump_path() const { return dump_path_; } - void set_dump_path(const string &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const string &dump_path, - MinidumpCallback callback, - void *callback_context); - - private: - // Setup crash handler. - void SetupHandler(); - // Setup signal handler for a signal. - void SetupHandler(int signo); - // Teardown the handler for a signal. - void TeardownHandler(int signo); - // Teardown all handlers. - void TeardownAllHandlers(); - - // Runs the main loop for the exception handler thread. - static void* ExceptionHandlerThreadMain(void *lpParameter); - - // Signal handler. - static void HandleException(int signo); - - // Write all the information to the dump file. - // If called from a signal handler, sighandler_ebp is the ebp of - // that signal handler's frame, and sig_ctx is an out parameter - // that will be set to point at the ucontext_t that was placed - // on the stack by the kernel. You can pass zero and NULL - // for the second and third parameters if you are not calling - // this from a signal handler. - bool InternalWriteMinidump(int signo, uintptr_t sighandler_ebp, - ucontext_t **sig_ctx); - - private: - // The callbacks before and after writing the dump file. - FilterCallback filter_; - MinidumpCallback callback_; - void *callback_context_; - - // The directory in which a minidump will be written, set by the dump_path - // argument to the constructor, or set_dump_path. - string dump_path_; - // C style dump path. Keep this when setting dump path, since calling - // c_str() of std::string when crashing may not be safe. - const char *dump_path_c_; - - // True if the ExceptionHandler installed an unhandled exception filter - // when created (with an install_handler parameter set to true). - bool installed_handler_; - - // Keep the previous handlers for the signal. - typedef void (*sighandler_t)(int); - std::map old_handlers_; - - // The global exception handler stack. This is need becuase there may exist - // multiple ExceptionHandler instances in a process. Each will have itself - // registered in this stack. - static std::vector *handler_stack_; - // The index of the handler that should handle the next exception. - static int handler_stack_index_; - static pthread_mutex_t handler_stack_mutex_; - - // The minidump generator. - MinidumpGenerator minidump_generator_; - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); -}; - -} // namespace google_breakpad - -#endif // CLIENT_SOLARIS_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler_test.cc b/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler_test.cc deleted file mode 100644 index 6bb8e18d..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/exception_handler_test.cc +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include - -#include -#include -#include -#include - -#include "client/solaris/handler/exception_handler.h" -#include "client/solaris/handler/solaris_lwp.h" - -using namespace google_breakpad; - -// Thread use this to see if it should stop working. -static bool should_exit = false; - -static int foo2(int arg) { - // Stack variable, used for debugging stack dumps. - int c = 0xcccccccc; - fprintf(stderr, "Thread trying to crash: %x\n", getpid()); - c = *reinterpret_cast(0x5); - return c; -} - -static int foo(int arg) { - // Stack variable, used for debugging stack dumps. - int b = 0xbbbbbbbb; - b = foo2(b); - return b; -} - -static void *thread_crash(void *) { - // Stack variable, used for debugging stack dumps. - int a = 0xaaaaaaaa; - sleep(3); - a = foo(a); - printf("%x\n", a); - return NULL; -} - -static void *thread_main(void *) { - while (!should_exit) - sleep(1); - return NULL; -} - -static void CreateCrashThread() { - pthread_t h; - pthread_create(&h, NULL, thread_crash, NULL); - pthread_detach(h); -} - -// Create working threads. -static void CreateThread(int num) { - pthread_t h; - for (int i = 0; i < num; ++i) { - pthread_create(&h, NULL, thread_main, NULL); - pthread_detach(h); - } -} - -// Callback when minidump written. -static bool MinidumpCallback(const char *dump_path, - const char *minidump_id, - void *context, - bool succeeded) { - int index = reinterpret_cast(context); - if (index == 0) { - should_exit = true; - return true; - } - // Don't process it. - return false; -} - -int main(int argc, char *argv[]) { - int handler_index = 1; - ExceptionHandler handler_ignore(".", NULL, MinidumpCallback, - (void*)handler_index, true); - CreateCrashThread(); - CreateThread(10); - - while (true) - sleep(20); - should_exit = true; - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.cc b/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.cc deleted file mode 100644 index ea046cff..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.cc +++ /dev/null @@ -1,786 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "client/solaris/handler/minidump_generator.h" -#include "client/minidump_file_writer-inl.h" -#include "common/solaris/file_id.h" - -namespace { - -using namespace google_breakpad; - -// Argument for the writer function. -struct WriterArgument { - MinidumpFileWriter *minidump_writer; - - // Pid of the lwp who called WriteMinidumpToFile - int requester_pid; - - // The stack bottom of the lwp which caused the dump. - // Mainly used to find the lwp id of the crashed lwp since signal - // handler may not be called in the lwp who caused it. - uintptr_t crashed_stack_bottom; - - // Id of the crashing lwp. - int crashed_lwpid; - - // Signal number when crash happened. Can be 0 if this is a requested dump. - int signo; - - // The ebp of the signal handler frame on x86. Can be 0 if this is a - // requested dump. - uintptr_t sighandler_ebp; - - // User context when crash happens. Can be NULL if this is a requested dump. - // This is actually an out parameter, but it will be filled in at the start - // of the writer LWP. - ucontext_t *sig_ctx; - - // Used to get information about the lwps. - SolarisLwp *lwp_lister; -}; - -// Holding context information for the callback of finding the crashing lwp. -struct FindCrashLwpContext { - const SolarisLwp *lwp_lister; - uintptr_t crashing_stack_bottom; - int crashing_lwpid; - - FindCrashLwpContext() : - lwp_lister(NULL), - crashing_stack_bottom(0UL), - crashing_lwpid(-1) { - } -}; - -// Callback for list lwps. -// It will compare the stack bottom of the provided lwp with the stack -// bottom of the crashed lwp, it they are eqaul, this lwp is the one -// who crashed. -bool IsLwpCrashedCallback(lwpstatus_t *lsp, void *context) { - FindCrashLwpContext *crashing_context = - static_cast(context); - const SolarisLwp *lwp_lister = crashing_context->lwp_lister; - const prgregset_t *gregs = &(lsp->pr_reg); -#if TARGET_CPU_SPARC - uintptr_t last_ebp = (*gregs)[R_FP]; -#elif TARGET_CPU_X86 - uintptr_t last_ebp = (*gregs)[EBP]; -#endif - uintptr_t stack_bottom = lwp_lister->GetLwpStackBottom(last_ebp); - if (stack_bottom > last_ebp && - stack_bottom == crashing_context->crashing_stack_bottom) { - // Got it. Stop iteration. - crashing_context->crashing_lwpid = lsp->pr_lwpid; - return false; - } - - return true; -} - -// Find the crashing lwpid. -// This is done based on stack bottom comparing. -int FindCrashingLwp(uintptr_t crashing_stack_bottom, - int requester_pid, - const SolarisLwp *lwp_lister) { - FindCrashLwpContext context; - context.lwp_lister = lwp_lister; - context.crashing_stack_bottom = crashing_stack_bottom; - CallbackParam callback_param(IsLwpCrashedCallback, - &context); - lwp_lister->Lwp_iter_all(lwp_lister->getpid(), &callback_param); - return context.crashing_lwpid; -} - -bool WriteLwpStack(const SolarisLwp *lwp_lister, - uintptr_t last_esp, - UntypedMDRVA *memory, - MDMemoryDescriptor *loc) { - uintptr_t stack_bottom = lwp_lister->GetLwpStackBottom(last_esp); - if (stack_bottom >= last_esp) { - int size = stack_bottom - last_esp; - if (size > 0) { - if (!memory->Allocate(size)) - return false; - memory->Copy(reinterpret_cast(last_esp), size); - loc->start_of_memory_range = last_esp; - loc->memory = memory->location(); - } - return true; - } - return false; -} - -#if TARGET_CPU_SPARC -bool WriteContext(MDRawContextSPARC *context, ucontext_t *sig_ctx) { - assert(sig_ctx != NULL); - int* regs = sig_ctx->uc_mcontext.gregs; - context->context_flags = MD_CONTEXT_SPARC_FULL; - - context->ccr = (unsigned int)(regs[0]); - context->pc = (unsigned int)(regs[REG_PC]); - context->npc = (unsigned int)(regs[REG_nPC]); - context->y = (unsigned int)(regs[REG_Y]); - context->asi = (unsigned int)(regs[19]); - context->fprs = (unsigned int)(regs[20]); - - for ( int i = 0 ; i < 32; ++i ) { - context->g_r[i] = 0; - } - - for ( int i = 1 ; i < 16; ++i ) { - context->g_r[i] = (uintptr_t)(sig_ctx->uc_mcontext.gregs[i + 3]); - } - context->g_r[30] = (uintptr_t)(((struct frame *)context->g_r[14])->fr_savfp); - - return true; -} - -bool WriteContext(MDRawContextSPARC *context, prgregset_t regs, - prfpregset_t *fp_regs) { - if (!context || !regs) - return false; - - context->context_flags = MD_CONTEXT_SPARC_FULL; - - context->ccr = (uintptr_t)(regs[32]); - context->pc = (uintptr_t)(regs[R_PC]); - context->npc = (uintptr_t)(regs[R_nPC]); - context->y = (uintptr_t)(regs[R_Y]); - context->asi = (uintptr_t)(regs[36]); - context->fprs = (uintptr_t)(regs[37]); - for ( int i = 0 ; i < 32 ; ++i ){ - context->g_r[i] = (uintptr_t)(regs[i]); - } - - return true; -} -#elif TARGET_CPU_X86 -bool WriteContext(MDRawContextX86 *context, prgregset_t regs, - prfpregset_t *fp_regs) { - if (!context || !regs) - return false; - - context->context_flags = MD_CONTEXT_X86_FULL; - - context->cs = regs[CS]; - context->ds = regs[DS]; - context->es = regs[ES]; - context->fs = regs[FS]; - context->gs = regs[GS]; - context->ss = regs[SS]; - context->edi = regs[EDI]; - context->esi = regs[ESI]; - context->ebx = regs[EBX]; - context->edx = regs[EDX]; - context->ecx = regs[ECX]; - context->eax = regs[EAX]; - context->ebp = regs[EBP]; - context->eip = regs[EIP]; - context->esp = regs[UESP]; - context->eflags = regs[EFL]; - - return true; -} -#endif /* TARGET_CPU_XXX */ - -// Write information about a crashed Lwp. -// When a lwp crash, kernel will write something on the stack for processing -// signal. This makes the current stack not reliable, and our stack walker -// won't figure out the whole call stack for this. So we write the stack at the -// time of the crash into the minidump file, not the current stack. -bool WriteCrashedLwpStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - const lwpstatus_t *lsp, - MDRawThread *lwp) { - assert(writer_args->sig_ctx != NULL); - - lwp->thread_id = lsp->pr_lwpid; - -#if TARGET_CPU_SPARC - UntypedMDRVA memory(minidump_writer); - if (!WriteLwpStack(writer_args->lwp_lister, - writer_args->sig_ctx->uc_mcontext.gregs[REG_O6], - &memory, - &lwp->stack)) - return false; - - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - lwp->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextSPARC)); - return WriteContext(context.get(), writer_args->sig_ctx); -#elif TARGET_CPU_X86 - UntypedMDRVA memory(minidump_writer); - if (!WriteLwpStack(writer_args->lwp_lister, - writer_args->sig_ctx->uc_mcontext.gregs[UESP], - &memory, - &lwp->stack)) - return false; - - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - lwp->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); - return WriteContext(context.get(), - (int *)&writer_args->sig_ctx->uc_mcontext.gregs, - &writer_args->sig_ctx->uc_mcontext.fpregs); -#endif -} - -bool WriteLwpStream(MinidumpFileWriter *minidump_writer, - const SolarisLwp *lwp_lister, - const lwpstatus_t *lsp, MDRawThread *lwp) { - prfpregset_t fp_regs = lsp->pr_fpreg; - const prgregset_t *gregs = &(lsp->pr_reg); - UntypedMDRVA memory(minidump_writer); -#if TARGET_CPU_SPARC - if (!WriteLwpStack(lwp_lister, - (*gregs)[R_SP], - &memory, - &lwp->stack)) - return false; - - // Write context - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - // should be the thread_id - lwp->thread_id = lsp->pr_lwpid; - lwp->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextSPARC)); -#elif TARGET_CPU_X86 - if (!WriteLwpStack(lwp_lister, - (*gregs)[UESP], - &memory, - &lwp->stack)) - return false; - - // Write context - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - // should be the thread_id - lwp->thread_id = lsp->pr_lwpid; - lwp->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); -#endif /* TARGET_CPU_XXX */ - return WriteContext(context.get(), (int *)gregs, &fp_regs); -} - -bool WriteCPUInformation(MDRawSystemInfo *sys_info) { - struct utsname uts; - char *major, *minor, *build; - - sys_info->number_of_processors = sysconf(_SC_NPROCESSORS_CONF); - sys_info->processor_architecture = MD_CPU_ARCHITECTURE_UNKNOWN; - if (uname(&uts) != -1) { - // Match "i86pc" as X86 architecture. - if (strcmp(uts.machine, "i86pc") == 0) - sys_info->processor_architecture = MD_CPU_ARCHITECTURE_X86; - else if (strcmp(uts.machine, "sun4u") == 0) - sys_info->processor_architecture = MD_CPU_ARCHITECTURE_SPARC; - } - - major = uts.release; - minor = strchr(major, '.'); - *minor = '\0'; - ++minor; - sys_info->major_version = atoi(major); - sys_info->minor_version = atoi(minor); - - build = strchr(uts.version, '_'); - ++build; - sys_info->build_number = atoi(build); - - return true; -} - -bool WriteOSInformation(MinidumpFileWriter *minidump_writer, - MDRawSystemInfo *sys_info) { - sys_info->platform_id = MD_OS_SOLARIS; - - struct utsname uts; - if (uname(&uts) != -1) { - char os_version[512]; - size_t space_left = sizeof(os_version); - memset(os_version, 0, space_left); - const char *os_info_table[] = { - uts.sysname, - uts.release, - uts.version, - uts.machine, - "OpenSolaris", - NULL - }; - for (const char **cur_os_info = os_info_table; - *cur_os_info != NULL; - ++cur_os_info) { - if (cur_os_info != os_info_table && space_left > 1) { - strcat(os_version, " "); - --space_left; - } - if (space_left > strlen(*cur_os_info)) { - strcat(os_version, *cur_os_info); - space_left -= strlen(*cur_os_info); - } else { - break; - } - } - - MDLocationDescriptor location; - if (!minidump_writer->WriteString(os_version, 0, &location)) - return false; - sys_info->csd_version_rva = location.rva; - } - return true; -} - -// Callback context for get writting lwp information. -struct LwpInfoCallbackCtx { - MinidumpFileWriter *minidump_writer; - const WriterArgument *writer_args; - TypedMDRVA *list; - int lwp_index; -}; - -bool LwpInformationCallback(lwpstatus_t *lsp, void *context) { - bool success = true; - LwpInfoCallbackCtx *callback_context = - static_cast(context); - - // The current lwp is the one to handle the crash. Ignore it. - if (lsp->pr_lwpid != pthread_self()) { - LwpInfoCallbackCtx *callback_context = - static_cast(context); - MDRawThread lwp; - memset(&lwp, 0, sizeof(MDRawThread)); - - if (lsp->pr_lwpid != callback_context->writer_args->crashed_lwpid || - callback_context->writer_args->sig_ctx == NULL) { - success = WriteLwpStream(callback_context->minidump_writer, - callback_context->writer_args->lwp_lister, - lsp, &lwp); - } else { - success = WriteCrashedLwpStream(callback_context->minidump_writer, - callback_context->writer_args, - lsp, &lwp); - } - if (success) { - callback_context->list->CopyIndexAfterObject( - callback_context->lwp_index++, - &lwp, sizeof(MDRawThread)); - } - } - - return success; -} - -bool WriteLwpListStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - // Get the lwp information. - const SolarisLwp *lwp_lister = writer_args->lwp_lister; - int lwp_count = lwp_lister->GetLwpCount(); - if (lwp_count < 0) - return false; - TypedMDRVA list(minidump_writer); - if (!list.AllocateObjectAndArray(lwp_count - 1, sizeof(MDRawThread))) - return false; - dir->stream_type = MD_THREAD_LIST_STREAM; - dir->location = list.location(); - list.get()->number_of_threads = lwp_count - 1; - - LwpInfoCallbackCtx context; - context.minidump_writer = minidump_writer; - context.writer_args = writer_args; - context.list = &list; - context.lwp_index = 0; - CallbackParam callback_param(LwpInformationCallback, - &context); - int written = - lwp_lister->Lwp_iter_all(lwp_lister->getpid(), &callback_param); - return written == lwp_count; -} - -bool WriteCVRecord(MinidumpFileWriter *minidump_writer, - MDRawModule *module, - const char *module_path, - char *realname) { - TypedMDRVA cv(minidump_writer); - - char path[PATH_MAX]; - const char *module_name = module_path ? module_path : ""; - snprintf(path, sizeof(path), "/proc/self/object/%s", module_name); - - size_t module_name_length = strlen(realname); - if (!cv.AllocateObjectAndArray(module_name_length + 1, sizeof(u_int8_t))) - return false; - if (!cv.CopyIndexAfterObject(0, realname, module_name_length)) - return false; - - module->cv_record = cv.location(); - MDCVInfoPDB70 *cv_ptr = cv.get(); - memset(cv_ptr, 0, sizeof(MDCVInfoPDB70)); - cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE; - cv_ptr->age = 0; - - // Get the module identifier - FileID file_id(path); - unsigned char identifier[16]; - - if (file_id.ElfFileIdentifier(identifier)) { - cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 | - (uint32_t)identifier[1] << 16 | (uint32_t)identifier[2] << 8 | - (uint32_t)identifier[3]; - cv_ptr->signature.data2 = (uint32_t)identifier[4] << 8 | identifier[5]; - cv_ptr->signature.data3 = (uint32_t)identifier[6] << 8 | identifier[7]; - cv_ptr->signature.data4[0] = identifier[8]; - cv_ptr->signature.data4[1] = identifier[9]; - cv_ptr->signature.data4[2] = identifier[10]; - cv_ptr->signature.data4[3] = identifier[11]; - cv_ptr->signature.data4[4] = identifier[12]; - cv_ptr->signature.data4[5] = identifier[13]; - cv_ptr->signature.data4[6] = identifier[14]; - cv_ptr->signature.data4[7] = identifier[15]; - } - return true; -} - -struct ModuleInfoCallbackCtx { - MinidumpFileWriter *minidump_writer; - const WriterArgument *writer_args; - TypedMDRVA *list; - int module_index; -}; - -bool ModuleInfoCallback(const ModuleInfo &module_info, void *context) { - ModuleInfoCallbackCtx *callback_context = - static_cast(context); - // Skip those modules without name, or those that are not modules. - if (strlen(module_info.name) == 0) - return true; - - MDRawModule module; - memset(&module, 0, sizeof(module)); - MDLocationDescriptor loc; - char path[PATH_MAX]; - char buf[PATH_MAX]; - char *realname; - int count; - - snprintf(path, sizeof (path), "/proc/self/path/%s", module_info.name); - if ((count = readlink(path, buf, PATH_MAX)) < 0) - return false; - buf[count] = '\0'; - - if ((realname = strrchr(buf, '/')) == NULL) - return false; - realname++; - - if (!callback_context->minidump_writer->WriteString(realname, 0, &loc)) - return false; - - module.base_of_image = (u_int64_t)module_info.start_addr; - module.size_of_image = module_info.size; - module.module_name_rva = loc.rva; - - if (!WriteCVRecord(callback_context->minidump_writer, &module, - module_info.name, realname)) - return false; - - callback_context->list->CopyIndexAfterObject( - callback_context->module_index++, &module, MD_MODULE_SIZE); - return true; -} - -bool WriteModuleListStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA list(minidump_writer); - int module_count = writer_args->lwp_lister->GetModuleCount(); - - if (module_count <= 0 || - !list.AllocateObjectAndArray(module_count, MD_MODULE_SIZE)) { - return false; - } - - dir->stream_type = MD_MODULE_LIST_STREAM; - dir->location = list.location(); - list.get()->number_of_modules = module_count; - ModuleInfoCallbackCtx context; - context.minidump_writer = minidump_writer; - context.writer_args = writer_args; - context.list = &list; - context.module_index = 0; - CallbackParam callback(ModuleInfoCallback, &context); - return writer_args->lwp_lister->ListModules(&callback) == module_count; -} - -bool WriteSystemInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA sys_info(minidump_writer); - - if (!sys_info.Allocate()) - return false; - - dir->stream_type = MD_SYSTEM_INFO_STREAM; - dir->location = sys_info.location(); - - return WriteCPUInformation(sys_info.get()) && - WriteOSInformation(minidump_writer, sys_info.get()); -} - -bool WriteExceptionStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - // This happenes when this is not a crash, but a requested dump. - if (writer_args->sig_ctx == NULL) - return false; - - TypedMDRVA exception(minidump_writer); - if (!exception.Allocate()) - return false; - - dir->stream_type = MD_EXCEPTION_STREAM; - dir->location = exception.location(); - exception.get()->thread_id = writer_args->crashed_lwpid; - exception.get()->exception_record.exception_code = writer_args->signo; - exception.get()->exception_record.exception_flags = 0; - -#if TARGET_CPU_SPARC - if (writer_args->sig_ctx != NULL) { - exception.get()->exception_record.exception_address = - writer_args->sig_ctx->uc_mcontext.gregs[REG_PC]; - } else { - return true; - } - - // Write context of the exception. - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - exception.get()->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextSPARC)); - return WriteContext(context.get(), writer_args->sig_ctx); -#elif TARGET_CPU_X86 - if (writer_args->sig_ctx != NULL) { - exception.get()->exception_record.exception_address = - writer_args->sig_ctx->uc_mcontext.gregs[EIP]; - } else { - return true; - } - - // Write context of the exception. - TypedMDRVA context(minidump_writer); - if (!context.Allocate()) - return false; - exception.get()->thread_context = context.location(); - memset(context.get(), 0, sizeof(MDRawContextX86)); - return WriteContext(context.get(), - (int *)&writer_args->sig_ctx->uc_mcontext.gregs, - NULL); -#endif -} - -bool WriteMiscInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA info(minidump_writer); - - if (!info.Allocate()) - return false; - - dir->stream_type = MD_MISC_INFO_STREAM; - dir->location = info.location(); - info.get()->size_of_info = sizeof(MDRawMiscInfo); - info.get()->flags1 = MD_MISCINFO_FLAGS1_PROCESS_ID; - info.get()->process_id = writer_args->requester_pid; - - return true; -} - -bool WriteBreakpadInfoStream(MinidumpFileWriter *minidump_writer, - const WriterArgument *writer_args, - MDRawDirectory *dir) { - TypedMDRVA info(minidump_writer); - - if (!info.Allocate()) - return false; - - dir->stream_type = MD_BREAKPAD_INFO_STREAM; - dir->location = info.location(); - - info.get()->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID | - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID; - info.get()->dump_thread_id = getpid(); - info.get()->requesting_thread_id = writer_args->requester_pid; - return true; -} - -class AutoLwpResumer { - public: - AutoLwpResumer(SolarisLwp *lwp) : lwp_(lwp) {} - ~AutoLwpResumer() { lwp_->ControlAllLwps(false); } - private: - SolarisLwp *lwp_; -}; - -// Prototype of writer functions. -typedef bool (*WriteStreamFN)(MinidumpFileWriter *, - const WriterArgument *, - MDRawDirectory *); - -// Function table to writer a full minidump. -const WriteStreamFN writers[] = { - WriteLwpListStream, - WriteModuleListStream, - WriteSystemInfoStream, - WriteExceptionStream, - WriteMiscInfoStream, - WriteBreakpadInfoStream, -}; - -// Will call each writer function in the writers table. -//void* MinidumpGenerator::Write(void *argument) { -void* Write(void *argument) { - WriterArgument *writer_args = static_cast(argument); - - if (!writer_args->lwp_lister->ControlAllLwps(true)) - return NULL; - - AutoLwpResumer lwpResumer(writer_args->lwp_lister); - - if (writer_args->sighandler_ebp != 0 && - writer_args->lwp_lister->FindSigContext(writer_args->sighandler_ebp, - &writer_args->sig_ctx)) { - writer_args->crashed_stack_bottom = - writer_args->lwp_lister->GetLwpStackBottom( -#if TARGET_CPU_SPARC - writer_args->sig_ctx->uc_mcontext.gregs[REG_O6] -#elif TARGET_CPU_X86 - writer_args->sig_ctx->uc_mcontext.gregs[UESP] -#endif - ); - - int crashed_lwpid = FindCrashingLwp(writer_args->crashed_stack_bottom, - writer_args->requester_pid, - writer_args->lwp_lister); - if (crashed_lwpid > 0) - writer_args->crashed_lwpid = crashed_lwpid; - } - - MinidumpFileWriter *minidump_writer = writer_args->minidump_writer; - TypedMDRVA header(minidump_writer); - TypedMDRVA dir(minidump_writer); - if (!header.Allocate()) - return 0; - - int writer_count = sizeof(writers) / sizeof(writers[0]); - // Need directory space for all writers. - if (!dir.AllocateArray(writer_count)) - return 0; - header.get()->signature = MD_HEADER_SIGNATURE; - header.get()->version = MD_HEADER_VERSION; - header.get()->time_date_stamp = time(NULL); - header.get()->stream_count = writer_count; - header.get()->stream_directory_rva = dir.position(); - - int dir_index = 0; - MDRawDirectory local_dir; - for (int i = 0; i < writer_count; ++i) { - if ((*writers[i])(minidump_writer, writer_args, &local_dir)) - dir.CopyIndex(dir_index++, &local_dir); - } - - return 0; -} - -} // namespace - -namespace google_breakpad { - -MinidumpGenerator::MinidumpGenerator() { -} - -MinidumpGenerator::~MinidumpGenerator() { -} - -// Write minidump into file. -// It runs in a different thread from the crashing thread. -bool MinidumpGenerator::WriteMinidumpToFile(const char *file_pathname, - int signo, - uintptr_t sighandler_ebp, - ucontext_t **sig_ctx) const { - // The exception handler thread. - pthread_t handler_thread; - - assert(file_pathname != NULL); - - if (file_pathname == NULL) - return false; - - MinidumpFileWriter minidump_writer; - if (minidump_writer.Open(file_pathname)) { - WriterArgument argument; - memset(&argument, 0, sizeof(argument)); - SolarisLwp lwp_lister(getpid()); - argument.lwp_lister = &lwp_lister; - argument.minidump_writer = &minidump_writer; - argument.requester_pid = getpid(); - argument.crashed_lwpid = pthread_self(); - argument.signo = signo; - argument.sighandler_ebp = sighandler_ebp; - argument.sig_ctx = NULL; - - pthread_create(&handler_thread, NULL, Write, (void *)&argument); - pthread_join(handler_thread, NULL); - return true; - } - - return false; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.h b/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.h deleted file mode 100644 index 882f9e1d..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_generator.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#ifndef CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H__ -#define CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H__ - -#include - -#include "client/minidump_file_writer.h" -#include "client/solaris/handler/solaris_lwp.h" -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// -// MinidumpGenerator -// -// A minidump generator should be created before any exception happen. -// -class MinidumpGenerator { - // Callback run for writing lwp information in the process. - friend bool LwpInformationCallback(lwpstatus_t *lsp, void *context); - - // Callback run for writing module information in the process. - friend bool ModuleInfoCallback(const ModuleInfo &module_info, void *context); - - public: - MinidumpGenerator(); - - ~MinidumpGenerator(); - - // Write minidump. - bool WriteMinidumpToFile(const char *file_pathname, - int signo, - uintptr_t sighandler_ebp, - ucontext_t **sig_ctx) const; -}; - -} // namespace google_breakpad - -#endif // CLIENT_SOLARIS_HANDLER_MINIDUMP_GENERATOR_H_ diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_test.cc b/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_test.cc deleted file mode 100644 index 33302d86..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/minidump_test.cc +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include - -#include "client/minidump_file_writer.h" -#include "client/solaris/handler/minidump_generator.h" - -using std::string; -using google_breakpad::MinidumpGenerator; - -static bool doneWritingReport = false; - -static void *Reporter(void *) { - char buffer[PATH_MAX]; - MinidumpGenerator md; - - // Write it to the desktop - snprintf(buffer, sizeof(buffer), "./minidump_test.out"); - fprintf(stdout, "Writing %s\n", buffer); - - md.WriteMinidumpToFile(buffer, 0, 0, NULL); - doneWritingReport = true; - - return NULL; -} - -static void SleepyFunction() { - while (!doneWritingReport) { - usleep(100); - } -} - -int main(int argc, char * const argv[]) { - pthread_t reporter_thread; - - if (pthread_create(&reporter_thread, NULL, Reporter, NULL) == 0) { - pthread_detach(reporter_thread); - } else { - perror("pthread_create"); - } - - SleepyFunction(); - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.cc b/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.cc deleted file mode 100644 index 0148997a..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.cc +++ /dev/null @@ -1,436 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "client/solaris/handler/solaris_lwp.h" -#include "common/solaris/message_output.h" - -using namespace google_breakpad; - -// This unamed namespace contains helper function. -namespace { - -uintptr_t stack_base_address = 0; -static const int HEADER_MAX = 2000; -static const int MAP_MAX = 1000; - -// Context information for the callbacks when validating address by listing -// modules. -struct AddressValidatingContext { - uintptr_t address; - bool is_mapped; - - AddressValidatingContext() : address(0UL), is_mapped(false) { - } -}; - -// Convert from string to int. -static bool LocalAtoi(char *s, int *r) { - assert(s != NULL); - assert(r != NULL); - char *endptr = NULL; - int ret = strtol(s, &endptr, 10); - if (endptr == s) - return false; - *r = ret; - return true; -} - -// Callback invoked for each mapped module. -// It uses the module's adderss range to validate the address. -static bool AddressNotInModuleCallback(const ModuleInfo &module_info, - void *context) { - AddressValidatingContext *addr = - reinterpret_cast(context); - if (addr->is_mapped = ((module_info.start_addr > 0) && - (addr->address >= module_info.start_addr) && - (addr->address <= module_info.start_addr + - module_info.size))) { - stack_base_address = module_info.start_addr + module_info.size; - } - - return !addr->is_mapped; -} - -static int IterateLwpAll(int pid, - CallbackParam *callback_param) { - char lwp_path[40]; - DIR *dir; - int count = 0; - - snprintf(lwp_path, sizeof (lwp_path), "/proc/%d/lwp", (int)pid); - if ((dir = opendir(lwp_path)) == NULL) - return -1; - - struct dirent *entry = NULL; - while ((entry = readdir(dir)) != NULL) { - if ((strcmp(entry->d_name, ".") != 0) && - (strcmp(entry->d_name, "..") != 0)) { - int lwpid = 0; - int last_pid = 0; - if (LocalAtoi(entry->d_name, &lwpid) && last_pid != lwpid) { - last_pid = lwpid; - ++count; - if (callback_param && - !(callback_param->call_back)(lwpid, callback_param->context)) { - break; - } - } - } - } - - closedir(dir); - return count; -} - -#if defined(__i386) && !defined(NO_FRAME_POINTER) -void *GetNextFrame(void **last_ebp) { - void *sp = *last_ebp; - if ((unsigned long)sp == (unsigned long)last_ebp) - return NULL; - if ((unsigned long)sp & (sizeof(void *) - 1)) - return NULL; - if ((unsigned long)sp - (unsigned long)last_ebp > 100000) - return NULL; - return sp; -} -#elif defined(__sparc) -void *GetNextFrame(void *last_ebp) { - return reinterpret_cast(last_ebp)->fr_savfp; -} -#else -void *GetNextFrame(void **last_ebp) { - return reinterpret_cast(last_ebp); -} -#endif - - -class AutoCloser { - public: - AutoCloser(int fd) : fd_(fd) {} - ~AutoCloser() { if (fd_) close(fd_); } - private: - int fd_; -}; - -// Control the execution of the lwp. -// Suspend/Resume lwp based on the value of context. -static bool ControlLwp(int lwpid, void *context) { - // The current thread is the one to handle the crash. Ignore it. - if (lwpid != pthread_self()) { - int ctlfd; - char procname[PATH_MAX]; - bool suspend = *(bool *)context; - - // Open the /proc/$pid/lwp/$lwpid/lwpctl files - snprintf(procname, sizeof (procname), "/proc/self/lwp/%d/lwpctl", lwpid); - - if ((ctlfd = open(procname, O_WRONLY|O_EXCL)) < 0) { - print_message2(2, "failed to open %s in ControlLwp\n", procname); - return false; - } - - AutoCloser autocloser(ctlfd); - - long ctl[2]; - ctl[0] = suspend ? PCSTOP : PCRUN; - ctl[1] = 0; - if (write(ctlfd, ctl, sizeof (ctl)) != sizeof (ctl)) { - print_message2(2, "failed in lwp %d\n", lwpid); - return false; - } - } - - return true; -} - -/* - * Utility function to read the contents of a file that contains a - * prheader_t at the start (/proc/$pid/lstatus or /proc/$pid/lpsinfo). - * Return true on success. - */ -static bool read_lfile(int pid, const char *lname, prheader_t *lhp) { - char lpath[PATH_MAX]; - struct stat statb; - int fd; - size_t size; - - snprintf(lpath, sizeof (lpath), "/proc/%d/%s", pid, lname); - if ((fd = open(lpath, O_RDONLY)) < 0) { - print_message2(2, "failed to open %s in read_lfile\n", lpath); - return false; - } - - AutoCloser autocloser(fd); - - if (fstat(fd, &statb) != 0) - return false; - - size = statb.st_size; - if ((size / sizeof (prheader_t)) + 32 > HEADER_MAX) { - print_message1(2, "map size overflow\n"); - return false; - } - - if (pread(fd, lhp, size, 0) <= sizeof (prheader_t)) - return false; - - return true; -} - -} // namespace - -namespace google_breakpad { - -SolarisLwp::SolarisLwp(int pid) : pid_(pid) { -} - -SolarisLwp::~SolarisLwp() { -} - -int SolarisLwp::ControlAllLwps(bool suspend) { - CallbackParam callback_param(ControlLwp, &suspend); - return IterateLwpAll(pid_, &callback_param); -} - -int SolarisLwp::GetLwpCount() const { - return IterateLwpAll(pid_, NULL); -} - -int SolarisLwp::Lwp_iter_all(int pid, - CallbackParam *callback_param) const { - lwpstatus_t *Lsp; - lwpstatus_t *sp; - prheader_t lphp[HEADER_MAX]; - prheader_t lhp[HEADER_MAX]; - prheader_t *Lphp = lphp; - prheader_t *Lhp = lhp; - lwpsinfo_t *Lpsp; - long nstat; - long ninfo; - int rv = 0; - - /* - * The /proc/pid/lstatus file has the array of lwpstatus_t's and the - * /proc/pid/lpsinfo file has the array of lwpsinfo_t's. - */ - if (read_lfile(pid, "lstatus", Lhp) == NULL) - return -1; - if (read_lfile(pid, "lpsinfo", Lphp) == NULL) { - return -1; - } - - Lsp = (lwpstatus_t *)(uintptr_t)(Lhp + 1); - Lpsp = (lwpsinfo_t *)(uintptr_t)(Lphp + 1); - - for (ninfo = Lphp->pr_nent; ninfo != 0; --ninfo) { - if (Lpsp->pr_sname != 'Z') { - sp = Lsp; - Lsp = (lwpstatus_t *)((uintptr_t)Lsp + Lhp->pr_entsize); - } else { - sp = NULL; - } - if (callback_param && - !(callback_param->call_back)(sp, callback_param->context)) - break; - ++rv; - Lpsp = (lwpsinfo_t *)((uintptr_t)Lpsp + Lphp->pr_entsize); - } - - return rv; -} - -uintptr_t SolarisLwp::GetLwpStackBottom(uintptr_t current_esp) const { - AddressValidatingContext addr; - addr.address = current_esp; - CallbackParam callback_param(AddressNotInModuleCallback, - &addr); - ListModules(&callback_param); - return stack_base_address; -} - -int SolarisLwp::GetModuleCount() const { - return ListModules(NULL); -} - -int SolarisLwp::ListModules( - CallbackParam *callback_param) const { - const char *maps_path = "/proc/self/map"; - struct stat status; - int fd = 0, num; - prmap_t map_array[MAP_MAX]; - prmap_t *maps = map_array; - size_t size; - - if ((fd = open(maps_path, O_RDONLY)) == -1) { - print_message2(2, "failed to open %s in ListModules\n", maps_path); - return -1; - } - - AutoCloser autocloser(fd); - - if (fstat(fd, &status)) - return -1; - - /* - * Determine number of mappings, this value must be - * larger than the actual module count - */ - size = status.st_size; - if ((num = (int)(size / sizeof (prmap_t))) > MAP_MAX) { - print_message1(2, "map size overflow\n"); - return -1; - } - - if (read(fd, (void *)maps, size) < 0) { - print_message2(2, "failed to read %d\n", fd); - return -1; - } - - prmap_t *_maps; - int _num; - int module_count = 0; - - /* - * Scan each mapping - note it is assummed that the mappings are - * presented in order. We fill holes between mappings. On intel - * the last mapping is usually the data segment of ld.so.1, after - * this comes a red zone into which non-fixed mapping won't get - * place. Thus we can simply bail from the loop after seeing the - * last mapping. - */ - for (_num = 0, _maps = maps; _num < num; ++_num, ++_maps) { - ModuleInfo module; - char *name = _maps->pr_mapname; - - memset(&module, 0, sizeof (module)); - module.start_addr = _maps->pr_vaddr; - module.size = _maps->pr_size; - if (strlen(name) > 0) { - int objectfd = 0; - char path[PATH_MAX]; - char buf[SELFMAG]; - - snprintf(path, sizeof (path), "/proc/self/object/%s", name); - if ((objectfd = open(path, O_RDONLY)) < 0) { - print_message1(2, "can't open module file\n"); - continue; - } - - AutoCloser autocloser(objectfd); - - if (read(objectfd, buf, SELFMAG) != SELFMAG) { - print_message1(2, "can't read module file\n"); - continue; - } - if (buf[0] != ELFMAG0 || buf[1] != ELFMAG1 || - buf[2] != ELFMAG2 || buf[3] != ELFMAG3) { - continue; - } - - strncpy(module.name, name, sizeof (module.name) - 1); - ++module_count; - } - if (callback_param && - (!callback_param->call_back(module, callback_param->context))) { - break; - } - } - - return module_count; -} - -// Check if the address is a valid virtual address. -// If the address is in any of the mapped modules, we take it as valid. -// Otherwise it is invalid. -bool SolarisLwp::IsAddressMapped(uintptr_t address) const { - AddressValidatingContext addr; - addr.address = address; - CallbackParam callback_param(AddressNotInModuleCallback, - &addr); - ListModules(&callback_param); - return addr.is_mapped; -} - -// We're looking for a ucontext_t as the second parameter -// to a signal handler function call. Luckily, the ucontext_t -// has an ebp(fp on SPARC) member which should match the ebp(fp) -// pointed to by the ebp(fp) of the signal handler frame. -// The Solaris stack looks like this: -// http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libproc/common/Pstack.c#81 -bool SolarisLwp::FindSigContext(uintptr_t sighandler_ebp, - ucontext_t **sig_ctx) { - uintptr_t previous_ebp; - uintptr_t sig_ebp; - const int MAX_STACK_DEPTH = 50; - int depth_counter = 0; - - do { -#if TARGET_CPU_SPARC - previous_ebp = reinterpret_cast(GetNextFrame( - reinterpret_cast(sighandler_ebp))); - *sig_ctx = reinterpret_cast(sighandler_ebp + sizeof (struct frame)); - uintptr_t sig_esp = (*sig_ctx)->uc_mcontext.gregs[REG_O6]; - if (sig_esp < previous_ebp && sig_esp > sighandler_ebp) - sig_ebp = (uintptr_t)(((struct frame *)sig_esp)->fr_savfp); - -#elif TARGET_CPU_X86 - previous_ebp = reinterpret_cast(GetNextFrame( - reinterpret_cast(sighandler_ebp))); - *sig_ctx = reinterpret_cast(sighandler_ebp + sizeof (struct frame) + - 3 * sizeof(uintptr_t)); - sig_ebp = (*sig_ctx)->uc_mcontext.gregs[EBP]; -#endif - sighandler_ebp = previous_ebp; - depth_counter++; - } while(previous_ebp != sig_ebp && sighandler_ebp != 0 && - IsAddressMapped(sighandler_ebp) && depth_counter < MAX_STACK_DEPTH); - - return previous_ebp == sig_ebp && previous_ebp != 0; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.h b/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.h deleted file mode 100644 index 0914cfcd..00000000 --- a/thirdparty/google-breakpad/r318/src/client/solaris/handler/solaris_lwp.h +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#ifndef CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__ -#define CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__ - -#if defined(sparc) || defined(__sparc) -#define TARGET_CPU_SPARC 1 -#elif defined(i386) || defined(__i386) -#define TARGET_CPU_X86 1 -#else -#error "cannot determine cpu type" -#endif - -#include -#include -#include -#include - -#ifndef _KERNEL -#define _KERNEL -#define MUST_UNDEF_KERNEL -#endif // _KERNEL -#include -#ifdef MUST_UNDEF_KERNEL -#undef _KERNEL -#undef MUST_UNDEF_KERNEL -#endif // MUST_UNDEF_KERNEL - -namespace google_breakpad { - -// Max module path name length. -static const int kMaxModuleNameLength = 256; - -// Holding infomaton about a module in the process. -struct ModuleInfo { - char name[kMaxModuleNameLength]; - uintptr_t start_addr; - int size; -}; - -// A callback to run when getting a lwp in the process. -// Return true will go on to the next lwp while return false will stop the -// iteration. -typedef bool (*LwpCallback)(lwpstatus_t* lsp, void *context); - -// A callback to run when a new module is found in the process. -// Return true will go on to the next module while return false will stop the -// iteration. -typedef bool (*ModuleCallback)(const ModuleInfo &module_info, void *context); - -// A callback to run when getting a lwpid in the process. -// Return true will go on to the next lwp while return false will stop the -// iteration. -typedef bool (*LwpidCallback)(int lwpid, void *context); - -// Holding the callback information. -template -struct CallbackParam { - // Callback function address. - CallbackFunc call_back; - // Callback context; - void *context; - - CallbackParam() : call_back(NULL), context(NULL) { - } - - CallbackParam(CallbackFunc func, void *func_context) : - call_back(func), context(func_context) { - } -}; - -/////////////////////////////////////////////////////////////////////////////// - -// -// SolarisLwp -// -// Provides handy support for operation on Solaris lwps. -// It uses proc file system to get lwp information. -// -// TODO(Alfred): Currently it only supports x86. Add SPARC support. -// -class SolarisLwp { - public: - // Create a SolarisLwp instance to list all the lwps in a process. - explicit SolarisLwp(int pid); - ~SolarisLwp(); - - int getpid() const { return this->pid_; } - - // Control all the lwps in the process. - // Return the number of suspended/resumed lwps in the process. - // Return -1 means failed to control lwps. - int ControlAllLwps(bool suspend); - - // Get the count of lwps in the process. - // Return -1 means error. - int GetLwpCount() const; - - // Iterate the lwps of process. - // Whenever there is a lwp found, the callback will be invoked to process - // the information. - // Return the callback return value or -1 on error. - int Lwp_iter_all(int pid, CallbackParam *callback_param) const; - - // Get the module count of the current process. - int GetModuleCount() const; - - // Get the mapped modules in the address space. - // Whenever a module is found, the callback will be invoked to process the - // information. - // Return how may modules are found. - int ListModules(CallbackParam *callback_param) const; - - // Get the bottom of the stack from esp. - uintptr_t GetLwpStackBottom(uintptr_t current_esp) const; - - // Finds a signal context on the stack given the ebp of our signal handler. - bool FindSigContext(uintptr_t sighandler_ebp, ucontext_t **sig_ctx); - - private: - // Check if the address is a valid virtual address. - bool IsAddressMapped(uintptr_t address) const; - - private: - // The pid of the process we are listing lwps. - int pid_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_SOLARIS_HANDLER_SOLARIS_LWP_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/breakpad_client.sln b/thirdparty/google-breakpad/r318/src/client/windows/breakpad_client.sln deleted file mode 100644 index 8c9c02b2..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/breakpad_client.sln +++ /dev/null @@ -1,49 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exception_handler", "handler\exception_handler.vcproj", "{B55CA863-B374-4BAF-95AC-539E4FA4C90C}" - ProjectSection(ProjectDependencies) = postProject - {A820AF62-6239-4693-8430-4F516C1838F4} = {A820AF62-6239-4693-8430-4F516C1838F4} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "crash_report_sender", "sender\crash_report_sender.vcproj", "{9946A048-043B-4F8F-9E07-9297B204714C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "crash_generation", "crash_generation\crash_generation.vcproj", "{A820AF62-6239-4693-8430-4F516C1838F4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - DebugStaticCRT|Win32 = DebugStaticCRT|Win32 - Release|Win32 = Release|Win32 - ReleaseStaticCRT|Win32 = ReleaseStaticCRT|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.Debug|Win32.ActiveCfg = Debug|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.Debug|Win32.Build.0 = Debug|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.Release|Win32.ActiveCfg = Release|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.Release|Win32.Build.0 = Release|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32 - {B55CA863-B374-4BAF-95AC-539E4FA4C90C}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.Debug|Win32.ActiveCfg = Debug|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.Debug|Win32.Build.0 = Debug|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.Release|Win32.ActiveCfg = Release|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.Release|Win32.Build.0 = Release|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32 - {9946A048-043B-4F8F-9E07-9297B204714C}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.Debug|Win32.ActiveCfg = Debug|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.Debug|Win32.Build.0 = Debug|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.Release|Win32.ActiveCfg = Release|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.Release|Win32.Build.0 = Release|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32 - {A820AF62-6239-4693-8430-4F516C1838F4}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/thirdparty/google-breakpad/r318/src/client/windows/common/auto_critical_section.h b/thirdparty/google-breakpad/r318/src/client/windows/common/auto_critical_section.h deleted file mode 100644 index 82c7b7f1..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/common/auto_critical_section.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ -#define CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ - -#include - -namespace google_breakpad { - -// Automatically enters the critical section in the constructor and leaves -// the critical section in the destructor. -class AutoCriticalSection { - public: - // Creates a new instance with the given critical section object - // and enters the critical section immediately. - explicit AutoCriticalSection(CRITICAL_SECTION* cs) : cs_(cs) { - assert(cs_); - EnterCriticalSection(cs_); - } - - // Destructor: leaves the critical section. - ~AutoCriticalSection() { - LeaveCriticalSection(cs_); - } - - private: - // Disable copy ctor and operator=. - AutoCriticalSection(const AutoCriticalSection&); - AutoCriticalSection& operator=(const AutoCriticalSection&); - - CRITICAL_SECTION* cs_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_COMMON_AUTO_CRITICAL_SECTION_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/common/ipc_protocol.h b/thirdparty/google-breakpad/r318/src/client/windows/common/ipc_protocol.h deleted file mode 100644 index cba8699c..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/common/ipc_protocol.h +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ -#define CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ - -#include -#include -#include -#include -#include "common/windows/string_utils-inl.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Name/value pair for custom client information. -struct CustomInfoEntry { - // Maximum length for name and value for client custom info. - static const int kNameMaxLength = 64; - static const int kValueMaxLength = 64; - - CustomInfoEntry() { - // Putting name and value in initializer list makes VC++ show warning 4351. - set_name(NULL); - set_value(NULL); - } - - CustomInfoEntry(const wchar_t* name_arg, const wchar_t* value_arg) { - set_name(name_arg); - set_value(value_arg); - } - - void set_name(const wchar_t* name_arg) { - if (!name_arg) { - name[0] = L'\0'; - return; - } - WindowsStringUtils::safe_wcscpy(name, kNameMaxLength, name_arg); - } - - void set_value(const wchar_t* value_arg) { - if (!value_arg) { - value[0] = L'\0'; - return; - } - - WindowsStringUtils::safe_wcscpy(value, kValueMaxLength, value_arg); - } - - void set(const wchar_t* name_arg, const wchar_t* value_arg) { - set_name(name_arg); - set_value(value_arg); - } - - wchar_t name[kNameMaxLength]; - wchar_t value[kValueMaxLength]; -}; - -// Constants for the protocol between client and the server. - -// Tags sent with each message indicating the purpose of -// the message. -enum MessageTag { - MESSAGE_TAG_NONE = 0, - MESSAGE_TAG_REGISTRATION_REQUEST = 1, - MESSAGE_TAG_REGISTRATION_RESPONSE = 2, - MESSAGE_TAG_REGISTRATION_ACK = 3 -}; - -struct CustomClientInfo { - const CustomInfoEntry* entries; - int count; -}; - -// Message structure for IPC between crash client and crash server. -struct ProtocolMessage { - ProtocolMessage() - : tag(MESSAGE_TAG_NONE), - pid(0), - dump_type(MiniDumpNormal), - thread_id(0), - exception_pointers(NULL), - assert_info(NULL), - custom_client_info(), - dump_request_handle(NULL), - dump_generated_handle(NULL), - server_alive_handle(NULL) { - } - - // Creates an instance with the given parameters. - ProtocolMessage(MessageTag arg_tag, - DWORD arg_pid, - MINIDUMP_TYPE arg_dump_type, - DWORD* arg_thread_id, - EXCEPTION_POINTERS** arg_exception_pointers, - MDRawAssertionInfo* arg_assert_info, - const CustomClientInfo& custom_info, - HANDLE arg_dump_request_handle, - HANDLE arg_dump_generated_handle, - HANDLE arg_server_alive) - : tag(arg_tag), - pid(arg_pid), - dump_type(arg_dump_type), - thread_id(arg_thread_id), - exception_pointers(arg_exception_pointers), - assert_info(arg_assert_info), - custom_client_info(custom_info), - dump_request_handle(arg_dump_request_handle), - dump_generated_handle(arg_dump_generated_handle), - server_alive_handle(arg_server_alive) { - } - - // Tag in the message. - MessageTag tag; - - // Process id. - DWORD pid; - - // Dump type requested. - MINIDUMP_TYPE dump_type; - - // Client thread id pointer. - DWORD* thread_id; - - // Exception information. - EXCEPTION_POINTERS** exception_pointers; - - // Assert information in case of an invalid parameter or - // pure call failure. - MDRawAssertionInfo* assert_info; - - // Custom client information. - CustomClientInfo custom_client_info; - - // Handle to signal the crash event. - HANDLE dump_request_handle; - - // Handle to check if server is done generating crash. - HANDLE dump_generated_handle; - - // Handle to a mutex that becomes signaled (WAIT_ABANDONED) - // if server process goes down. - HANDLE server_alive_handle; - - private: - // Disable copy ctor and operator=. - ProtocolMessage(const ProtocolMessage& msg); - ProtocolMessage& operator=(const ProtocolMessage& msg); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_COMMON_IPC_PROTOCOL_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/ReadMe.txt b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/ReadMe.txt deleted file mode 100644 index b54d0e11..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/ReadMe.txt +++ /dev/null @@ -1,58 +0,0 @@ -========================================================================= - State machine transitions for the Crash Generation Server -========================================================================= - -========================================================================= - | - STATE | ACTIONS - | -========================================================================= - ERROR | Clean up resources used to serve clients. - | Always remain in ERROR state. -------------------------------------------------------------------------- - INITIAL | Connect to the pipe asynchronously. - | If connection is successfully queued up asynchronously, - | go into CONNECTING state. - | If connection is done synchronously, go into CONNECTED - | state. - | For any unexpected problems, go into ERROR state. -------------------------------------------------------------------------- - CONNECTING | Get the result of async connection request. - | If I/O is still incomplete, remain in the CONNECTING - | state. - | If connection is complete, go into CONNECTED state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - CONNECTED | Read from the pipe asynchronously. - | If read request is successfully queued up asynchronously, - | go into READING state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - READING | Get the result of async read request. - | If read is done, go into READ_DONE state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - READ_DONE | Register the client, prepare the reply and write the - | reply to the pipe asynchronously. - | If write request is successfully queued up asynchronously, - | go into WRITING state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - WRITING | Get the result of the async write request. - | If write is done, go into WRITE_DONE state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - WRITE_DONE | Read from the pipe asynchronously (for an ACK). - | If read request is successfully queued up asynchonously, - | go into READING_ACK state. - | For any unexpected problems, go into DISCONNECTING state. -------------------------------------------------------------------------- - READING_ACK | Get the result of the async read request. - | If read is done, perform action for successful client - | connection. - | Go into DISCONNECTING state. -------------------------------------------------------------------------- - DISCONNECTING | Disconnect from the pipe, reset the event and go into - | INITIAL state and signal the event again. If anything - | fails, go into ERROR state. -========================================================================= diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.cc b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.cc deleted file mode 100644 index 4752c4ae..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.cc +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "client/windows/crash_generation/client_info.h" -#include "client/windows/common/ipc_protocol.h" - -static const wchar_t kCustomInfoProcessUptimeName[] = L"ptime"; - -namespace google_breakpad { - -ClientInfo::ClientInfo(CrashGenerationServer* crash_server, - DWORD pid, - MINIDUMP_TYPE dump_type, - DWORD* thread_id, - EXCEPTION_POINTERS** ex_info, - MDRawAssertionInfo* assert_info, - const CustomClientInfo& custom_client_info) - : crash_server_(crash_server), - pid_(pid), - dump_type_(dump_type), - ex_info_(ex_info), - assert_info_(assert_info), - custom_client_info_(custom_client_info), - thread_id_(thread_id), - process_handle_(NULL), - dump_requested_handle_(NULL), - dump_generated_handle_(NULL), - dump_request_wait_handle_(NULL), - process_exit_wait_handle_(NULL) { - GetSystemTimeAsFileTime(&start_time_); -} - -bool ClientInfo::Initialize() { - process_handle_ = OpenProcess(GENERIC_ALL, FALSE, pid_); - if (!process_handle_) { - return false; - } - - dump_requested_handle_ = CreateEvent(NULL, // Security attributes. - TRUE, // Manual reset. - FALSE, // Initial state. - NULL); // Name. - if (!dump_requested_handle_) { - return false; - } - - dump_generated_handle_ = CreateEvent(NULL, // Security attributes. - TRUE, // Manual reset. - FALSE, // Initial state. - NULL); // Name. - return dump_generated_handle_ != NULL; -} - -ClientInfo::~ClientInfo() { - if (dump_request_wait_handle_) { - // Wait for callbacks that might already be running to finish. - UnregisterWaitEx(dump_request_wait_handle_, INVALID_HANDLE_VALUE); - } - - if (process_exit_wait_handle_) { - // Wait for the callback that might already be running to finish. - UnregisterWaitEx(process_exit_wait_handle_, INVALID_HANDLE_VALUE); - } - - if (process_handle_) { - CloseHandle(process_handle_); - } - - if (dump_requested_handle_) { - CloseHandle(dump_requested_handle_); - } - - if (dump_generated_handle_) { - CloseHandle(dump_generated_handle_); - } -} - -bool ClientInfo::UnregisterWaits() { - bool success = true; - - if (dump_request_wait_handle_) { - if (!UnregisterWait(dump_request_wait_handle_)) { - success = false; - } else { - dump_request_wait_handle_ = NULL; - } - } - - if (process_exit_wait_handle_) { - if (!UnregisterWait(process_exit_wait_handle_)) { - success = false; - } else { - process_exit_wait_handle_ = NULL; - } - } - - return success; -} - -bool ClientInfo::GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const { - SIZE_T bytes_count = 0; - if (!ReadProcessMemory(process_handle_, - ex_info_, - ex_info, - sizeof(*ex_info), - &bytes_count)) { - return false; - } - - return bytes_count == sizeof(*ex_info); -} - -bool ClientInfo::GetClientThreadId(DWORD* thread_id) const { - SIZE_T bytes_count = 0; - if (!ReadProcessMemory(process_handle_, - thread_id_, - thread_id, - sizeof(*thread_id), - &bytes_count)) { - return false; - } - - return bytes_count == sizeof(*thread_id); -} - -void ClientInfo::SetProcessUptime() { - FILETIME now = {0}; - GetSystemTimeAsFileTime(&now); - - ULARGE_INTEGER time_start; - time_start.HighPart = start_time_.dwHighDateTime; - time_start.LowPart = start_time_.dwLowDateTime; - - ULARGE_INTEGER time_now; - time_now.HighPart = now.dwHighDateTime; - time_now.LowPart = now.dwLowDateTime; - - // Calculate the delay and convert it from 100-nanoseconds to milliseconds. - __int64 delay = (time_now.QuadPart - time_start.QuadPart) / 10 / 1000; - - // Convert it to a string. - wchar_t* value = custom_info_entries_.get()[custom_client_info_.count].value; - _i64tow_s(delay, value, CustomInfoEntry::kValueMaxLength, 10); -} - -bool ClientInfo::PopulateCustomInfo() { - SIZE_T bytes_count = 0; - SIZE_T read_count = sizeof(CustomInfoEntry) * custom_client_info_.count; - - // If the scoped array for custom info already has an array, it will be - // the same size as what we need. This is because the number of custom info - // entries is always the same. So allocate memory only if scoped array has - // a NULL pointer. - if (!custom_info_entries_.get()) { - // Allocate an extra entry for reporting uptime for the client process. - custom_info_entries_.reset( - new CustomInfoEntry[custom_client_info_.count + 1]); - // Use the last element in the array for uptime. - custom_info_entries_.get()[custom_client_info_.count].set_name( - kCustomInfoProcessUptimeName); - } - - if (!ReadProcessMemory(process_handle_, - custom_client_info_.entries, - custom_info_entries_.get(), - read_count, - &bytes_count)) { - return false; - } - - SetProcessUptime(); - return (bytes_count != read_count); -} - -CustomClientInfo ClientInfo::GetCustomInfo() const { - CustomClientInfo custom_info; - custom_info.entries = custom_info_entries_.get(); - // Add 1 to the count from the client process to account for extra entry for - // process uptime. - custom_info.count = custom_client_info_.count + 1; - return custom_info; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.h b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.h deleted file mode 100644 index 774816fb..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/client_info.h +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ - -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "google_breakpad/common/minidump_format.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -class CrashGenerationServer; - -// Abstraction for a crash client process. -class ClientInfo { - public: - // Creates an instance with the given values. Gets the process - // handle for the given process id and creates necessary event - // objects. - ClientInfo(CrashGenerationServer* crash_server, - DWORD pid, - MINIDUMP_TYPE dump_type, - DWORD* thread_id, - EXCEPTION_POINTERS** ex_info, - MDRawAssertionInfo* assert_info, - const CustomClientInfo& custom_client_info); - - ~ClientInfo(); - - CrashGenerationServer* crash_server() const { return crash_server_; } - DWORD pid() const { return pid_; } - MINIDUMP_TYPE dump_type() const { return dump_type_; } - EXCEPTION_POINTERS** ex_info() const { return ex_info_; } - MDRawAssertionInfo* assert_info() const { return assert_info_; } - DWORD* thread_id() const { return thread_id_; } - HANDLE process_handle() const { return process_handle_; } - HANDLE dump_requested_handle() const { return dump_requested_handle_; } - HANDLE dump_generated_handle() const { return dump_generated_handle_; } - - HANDLE dump_request_wait_handle() const { - return dump_request_wait_handle_; - } - - void set_dump_request_wait_handle(HANDLE value) { - dump_request_wait_handle_ = value; - } - - HANDLE process_exit_wait_handle() const { - return process_exit_wait_handle_; - } - - void set_process_exit_wait_handle(HANDLE value) { - process_exit_wait_handle_ = value; - } - - // Unregister all waits for the client. - bool UnregisterWaits(); - - bool Initialize(); - bool GetClientExceptionInfo(EXCEPTION_POINTERS** ex_info) const; - bool GetClientThreadId(DWORD* thread_id) const; - - // Reads the custom information from the client process address space. - bool PopulateCustomInfo(); - - // Returns the client custom information. - CustomClientInfo GetCustomInfo() const; - - private: - // Calcualtes the uptime for the client process, converts it to a string and - // stores it in the last entry of client custom info. - void SetProcessUptime(); - - // Crash generation server. - CrashGenerationServer* crash_server_; - - // Client process ID. - DWORD pid_; - - // Dump type requested by the client. - MINIDUMP_TYPE dump_type_; - - // Address of an EXCEPTION_POINTERS* variable in the client - // process address space that will point to an instance of - // EXCEPTION_POINTERS containing information about crash. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - EXCEPTION_POINTERS** ex_info_; - - // Address of an instance of MDRawAssertionInfo in the client - // process address space that will contain information about - // non-exception related crashes like invalid parameter assertion - // failures and pure calls. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - MDRawAssertionInfo* assert_info_; - - // Custom information about the client. - CustomClientInfo custom_client_info_; - - // Contains the custom client info entries read from the client process - // memory. This will be populated only if the method GetClientCustomInfo - // is called. - scoped_array custom_info_entries_; - - // Address of a variable in the client process address space that - // will contain the thread id of the crashing client thread. - // - // WARNING: Do not dereference these pointers as they are pointers - // in the address space of another process. - DWORD* thread_id_; - - // Client process handle. - HANDLE process_handle_; - - // Dump request event handle. - HANDLE dump_requested_handle_; - - // Dump generated event handle. - HANDLE dump_generated_handle_; - - // Wait handle for dump request event. - HANDLE dump_request_wait_handle_; - - // Wait handle for process exit event. - HANDLE process_exit_wait_handle_; - - // Time when the client process started. It is used to determine the uptime - // for the client process when it signals a crash. - FILETIME start_time_; - - // Disallow copy ctor and operator=. - ClientInfo(const ClientInfo& client_info); - ClientInfo& operator=(const ClientInfo& client_info); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CLIENT_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation.vcproj b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation.vcproj deleted file mode 100644 index b9979b26..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation.vcproj +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.cc b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.cc deleted file mode 100644 index 197807ab..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.cc +++ /dev/null @@ -1,337 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "client/windows/crash_generation/crash_generation_client.h" -#include -#include -#include "client/windows/common/ipc_protocol.h" - -namespace google_breakpad { - -const int kPipeBusyWaitTimeoutMs = 2000; - -#ifdef _DEBUG -const DWORD kWaitForServerTimeoutMs = INFINITE; -#else -const DWORD kWaitForServerTimeoutMs = 15000; -#endif - -const int kPipeConnectMaxAttempts = 2; - -const DWORD kPipeDesiredAccess = FILE_READ_DATA | - FILE_WRITE_DATA | - FILE_WRITE_ATTRIBUTES; - -const DWORD kPipeFlagsAndAttributes = SECURITY_IDENTIFICATION | - SECURITY_SQOS_PRESENT; - -const DWORD kPipeMode = PIPE_READMODE_MESSAGE; - -const size_t kWaitEventCount = 2; - -// This function is orphan for production code. It can be used -// for debugging to help repro some scenarios like the client -// is slow in writing to the pipe after connecting, the client -// is slow in reading from the pipe after writing, etc. The parameter -// overlapped below is not used and it is present to match the signature -// of this function to TransactNamedPipe Win32 API. Uncomment if needed -// for debugging. -/** -static bool TransactNamedPipeDebugHelper(HANDLE pipe, - const void* in_buffer, - DWORD in_size, - void* out_buffer, - DWORD out_size, - DWORD* bytes_count, - LPOVERLAPPED) { - // Uncomment the next sleep to create a gap before writing - // to pipe. - // Sleep(5000); - - if (!WriteFile(pipe, - in_buffer, - in_size, - bytes_count, - NULL)) { - return false; - } - - // Uncomment the next sleep to create a gap between write - // and read. - // Sleep(5000); - - return ReadFile(pipe, out_buffer, out_size, bytes_count, NULL) != FALSE; -} -**/ - -CrashGenerationClient::CrashGenerationClient( - const wchar_t* pipe_name, - MINIDUMP_TYPE dump_type, - const CustomClientInfo* custom_info) - : pipe_name_(pipe_name), - dump_type_(dump_type), - thread_id_(0), - server_process_id_(0), - crash_event_(NULL), - crash_generated_(NULL), - server_alive_(NULL), - exception_pointers_(NULL), - custom_info_() { - memset(&assert_info_, 0, sizeof(assert_info_)); - if (custom_info) { - custom_info_ = *custom_info; - } -} - -CrashGenerationClient::~CrashGenerationClient() { - if (crash_event_) { - CloseHandle(crash_event_); - } - - if (crash_generated_) { - CloseHandle(crash_generated_); - } - - if (server_alive_) { - CloseHandle(server_alive_); - } -} - -// Performs the registration step with the server process. -// The registration step involves communicating with the server -// via a named pipe. The client sends the following pieces of -// data to the server: -// -// * Message tag indicating the client is requesting registration. -// * Process id of the client process. -// * Address of a DWORD variable in the client address space -// that will contain the thread id of the client thread that -// caused the crash. -// * Address of a EXCEPTION_POINTERS* variable in the client -// address space that will point to an instance of EXCEPTION_POINTERS -// when the crash happens. -// * Address of an instance of MDRawAssertionInfo that will contain -// relevant information in case of non-exception crashes like assertion -// failures and pure calls. -// -// In return the client expects the following information from the server: -// -// * Message tag indicating successful registration. -// * Server process id. -// * Handle to an object that client can signal to request dump -// generation from the server. -// * Handle to an object that client can wait on after requesting -// dump generation for the server to finish dump generation. -// * Handle to a mutex object that client can wait on to make sure -// server is still alive. -// -// If any step of the expected behavior mentioned above fails, the -// registration step is not considered successful and hence out-of-process -// dump generation service is not available. -// -// Returns true if the registration is successful; false otherwise. -bool CrashGenerationClient::Register() { - HANDLE pipe = ConnectToServer(); - if (!pipe) { - return false; - } - - bool success = RegisterClient(pipe); - CloseHandle(pipe); - return success; -} - -HANDLE CrashGenerationClient::ConnectToServer() { - HANDLE pipe = ConnectToPipe(pipe_name_.c_str(), - kPipeDesiredAccess, - kPipeFlagsAndAttributes); - if (!pipe) { - return NULL; - } - - DWORD mode = kPipeMode; - if (!SetNamedPipeHandleState(pipe, &mode, NULL, NULL)) { - CloseHandle(pipe); - pipe = NULL; - } - - return pipe; -} - -bool CrashGenerationClient::RegisterClient(HANDLE pipe) { - ProtocolMessage msg(MESSAGE_TAG_REGISTRATION_REQUEST, - GetCurrentProcessId(), - dump_type_, - &thread_id_, - &exception_pointers_, - &assert_info_, - custom_info_, - NULL, - NULL, - NULL); - ProtocolMessage reply; - DWORD bytes_count = 0; - // The call to TransactNamedPipe below can be changed to a call - // to TransactNamedPipeDebugHelper to help repro some scenarios. - // For details see comments for TransactNamedPipeDebugHelper. - if (!TransactNamedPipe(pipe, - &msg, - sizeof(msg), - &reply, - sizeof(ProtocolMessage), - &bytes_count, - NULL)) { - return false; - } - - if (!ValidateResponse(reply)) { - return false; - } - - ProtocolMessage ack_msg; - ack_msg.tag = MESSAGE_TAG_REGISTRATION_ACK; - - if (!WriteFile(pipe, &ack_msg, sizeof(ack_msg), &bytes_count, NULL)) { - return false; - } - crash_event_ = reply.dump_request_handle; - crash_generated_ = reply.dump_generated_handle; - server_alive_ = reply.server_alive_handle; - server_process_id_ = reply.pid; - - return true; -} - -HANDLE CrashGenerationClient::ConnectToPipe(const wchar_t* pipe_name, - DWORD pipe_access, - DWORD flags_attrs) { - for (int i = 0; i < kPipeConnectMaxAttempts; ++i) { - HANDLE pipe = CreateFile(pipe_name, - pipe_access, - 0, - NULL, - OPEN_EXISTING, - flags_attrs, - NULL); - if (pipe != INVALID_HANDLE_VALUE) { - return pipe; - } - - // Cannot continue retrying if error is something other than - // ERROR_PIPE_BUSY. - if (GetLastError() != ERROR_PIPE_BUSY) { - break; - } - - // Cannot continue retrying if wait on pipe fails. - if (!WaitNamedPipe(pipe_name, kPipeBusyWaitTimeoutMs)) { - break; - } - } - - return NULL; -} - -bool CrashGenerationClient::ValidateResponse( - const ProtocolMessage& msg) const { - return (msg.tag == MESSAGE_TAG_REGISTRATION_RESPONSE) && - (msg.pid != 0) && - (msg.dump_request_handle != NULL) && - (msg.dump_generated_handle != NULL) && - (msg.server_alive_handle != NULL); -} - -bool CrashGenerationClient::IsRegistered() const { - return crash_event_ != NULL; -} - -bool CrashGenerationClient::RequestDump(EXCEPTION_POINTERS* ex_info) { - if (!IsRegistered()) { - return false; - } - - exception_pointers_ = ex_info; - thread_id_ = GetCurrentThreadId(); - - assert_info_.line = 0; - assert_info_.type = 0; - assert_info_.expression[0] = 0; - assert_info_.file[0] = 0; - assert_info_.function[0] = 0; - - return SignalCrashEventAndWait(); -} - -bool CrashGenerationClient::RequestDump(MDRawAssertionInfo* assert_info) { - if (!IsRegistered()) { - return false; - } - - exception_pointers_ = NULL; - - if (assert_info) { - memcpy(&assert_info_, assert_info, sizeof(assert_info_)); - } else { - memset(&assert_info_, 0, sizeof(assert_info_)); - } - - thread_id_ = GetCurrentThreadId(); - - return SignalCrashEventAndWait(); -} - -bool CrashGenerationClient::SignalCrashEventAndWait() { - assert(crash_event_); - assert(crash_generated_); - assert(server_alive_); - - // Reset the dump generated event before signaling the crash - // event so that the server can set the dump generated event - // once it is done generating the event. - if (!ResetEvent(crash_generated_)) { - return false; - } - - if (!SetEvent(crash_event_)) { - return false; - } - - HANDLE wait_handles[kWaitEventCount] = {crash_generated_, server_alive_}; - - DWORD result = WaitForMultipleObjects(kWaitEventCount, - wait_handles, - FALSE, - kWaitForServerTimeoutMs); - - // Crash dump was successfully generated only if the server - // signaled the crash generated event. - return result == WAIT_OBJECT_0; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.h b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.h deleted file mode 100644 index 81b0e6ca..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_client.h +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ - -#include -#include -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -struct CustomClientInfo; - -// Abstraction of client-side implementation of out of process -// crash generation. -// -// The process that desires to have out-of-process crash dump -// generation service can use this class in the following way: -// -// * Create an instance. -// * Call Register method so that the client tries to register -// with the server process and check the return value. If -// registration is not successful, out-of-process crash dump -// generation will not be available -// * Request dump generation by calling either of the two -// overloaded RequestDump methods - one in case of exceptions -// and the other in case of assertion failures -// -// Note that it is the responsibility of the client code of -// this class to set the unhandled exception filter with the -// system by calling the SetUnhandledExceptionFilter function -// and the client code should explicitly request dump generation. -class CrashGenerationClient { - public: - CrashGenerationClient(const wchar_t* pipe_name, - MINIDUMP_TYPE dump_type, - const CustomClientInfo* custom_info); - - ~CrashGenerationClient(); - - // Registers the client process with the crash server. - // - // Returns true if the registration is successful; false otherwise. - bool Register(); - - // Requests the crash server to generate a dump with the given - // exception information. - // - // Returns true if the dump was successful; false otherwise. Note that - // if the registration step was not performed or it was not successful, - // false will be returned. - bool RequestDump(EXCEPTION_POINTERS* ex_info); - - // Requests the crash server to generate a dump with the given - // assertion information. - // - // Returns true if the dump was successful; false otherwise. Note that - // if the registration step was not performed or it was not successful, - // false will be returned. - bool RequestDump(MDRawAssertionInfo* assert_info); - - private: - // Connects to the appropriate pipe and sets the pipe handle state. - // - // Returns the pipe handle if everything goes well; otherwise Returns NULL. - HANDLE ConnectToServer(); - - // Performs a handshake with the server over the given pipe which should be - // already connected to the server. - // - // Returns true if handshake with the server was successful; false otherwise. - bool RegisterClient(HANDLE pipe); - - // Validates the given server response. - bool ValidateResponse(const ProtocolMessage& msg) const; - - // Returns true if the registration step succeeded; false otherwise. - bool IsRegistered() const; - - // Connects to the given named pipe with given parameters. - // - // Returns true if the connection is successful; false otherwise. - HANDLE ConnectToPipe(const wchar_t* pipe_name, - DWORD pipe_access, - DWORD flags_attrs); - - // Signals the crash event and wait for the server to generate crash. - bool SignalCrashEventAndWait(); - - // Pipe name to use to talk to server. - std::wstring pipe_name_; - - // Custom client information - CustomClientInfo custom_info_; - - // Type of dump to generate. - MINIDUMP_TYPE dump_type_; - - // Event to signal in case of a crash. - HANDLE crash_event_; - - // Handle to wait on after signaling a crash for the server - // to finish generating crash dump. - HANDLE crash_generated_; - - // Handle to a mutex that will become signaled with WAIT_ABANDONED - // if the server process goes down. - HANDLE server_alive_; - - // Server process id. - DWORD server_process_id_; - - // Id of the thread that caused the crash. - DWORD thread_id_; - - // Exception pointers for an exception crash. - EXCEPTION_POINTERS* exception_pointers_; - - // Assertion info for an invalid parameter or pure call crash. - MDRawAssertionInfo assert_info_; - - // Disable copy ctor and operator=. - CrashGenerationClient(const CrashGenerationClient& crash_client); - CrashGenerationClient& operator=(const CrashGenerationClient& crash_client); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.cc b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.cc deleted file mode 100644 index ac76e590..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.cc +++ /dev/null @@ -1,852 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "client/windows/crash_generation/crash_generation_server.h" -#include -#include -#include -#include "client/windows/common/auto_critical_section.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -// Output buffer size. -static const size_t kOutBufferSize = 64; - -// Input buffer size. -static const size_t kInBufferSize = 64; - -// Access flags for the client on the dump request event. -static const DWORD kDumpRequestEventAccess = EVENT_MODIFY_STATE; - -// Access flags for the client on the dump generated event. -static const DWORD kDumpGeneratedEventAccess = EVENT_MODIFY_STATE | - SYNCHRONIZE; - -// Access flags for the client on the mutex. -static const DWORD kMutexAccess = SYNCHRONIZE; - -// Attribute flags for the pipe. -static const DWORD kPipeAttr = FILE_FLAG_FIRST_PIPE_INSTANCE | - PIPE_ACCESS_DUPLEX | - FILE_FLAG_OVERLAPPED; - -// Mode for the pipe. -static const DWORD kPipeMode = PIPE_TYPE_MESSAGE | - PIPE_READMODE_MESSAGE | - PIPE_WAIT; - -// For pipe I/O, execute the callback in the wait thread itself, -// since the callback does very little work. The callback executes -// the code for one of the states of the server state machine and -// the code for all of the states perform async I/O and hence -// finish very quickly. -static const ULONG kPipeIOThreadFlags = WT_EXECUTEINWAITTHREAD; - -// Dump request threads will, most likely, generate dumps. That may -// take some time to finish, so specify WT_EXECUTELONGFUNCTION flag. -static const ULONG kDumpRequestThreadFlags = WT_EXECUTEINWAITTHREAD | - WT_EXECUTELONGFUNCTION; - -// Maximum delay during server shutdown if some work items -// are still executing. -static const int kShutdownDelayMs = 10000; - -// Interval for each sleep during server shutdown. -static const int kShutdownSleepIntervalMs = 5; - -static bool IsClientRequestValid(const ProtocolMessage& msg) { - return msg.tag == MESSAGE_TAG_REGISTRATION_REQUEST && - msg.pid != 0 && - msg.thread_id != NULL && - msg.exception_pointers != NULL && - msg.assert_info != NULL; -} - -CrashGenerationServer::CrashGenerationServer( - const std::wstring& pipe_name, - SECURITY_ATTRIBUTES* pipe_sec_attrs, - OnClientConnectedCallback connect_callback, - void* connect_context, - OnClientDumpRequestCallback dump_callback, - void* dump_context, - OnClientExitedCallback exit_callback, - void* exit_context, - bool generate_dumps, - const std::wstring* dump_path) - : pipe_name_(pipe_name), - pipe_sec_attrs_(pipe_sec_attrs), - pipe_(NULL), - pipe_wait_handle_(NULL), - server_alive_handle_(NULL), - connect_callback_(connect_callback), - connect_context_(connect_context), - dump_callback_(dump_callback), - dump_context_(dump_context), - exit_callback_(exit_callback), - exit_context_(exit_context), - generate_dumps_(generate_dumps), - dump_generator_(NULL), - server_state_(IPC_SERVER_STATE_INITIAL), - shutting_down_(false), - overlapped_(), - client_info_(NULL), - cleanup_item_count_(0) { - InitializeCriticalSection(&clients_sync_); - - if (dump_path) { - dump_generator_.reset(new MinidumpGenerator(*dump_path)); - } -} - -CrashGenerationServer::~CrashGenerationServer() { - // Indicate to existing threads that server is shutting down. - shutting_down_ = true; - - // Even if there are no current worker threads running, it is possible that - // an I/O request is pending on the pipe right now but not yet done. In fact, - // it's very likely this is the case unless we are in an ERROR state. If we - // don't wait for the pending I/O to be done, then when the I/O completes, - // it may write to invalid memory. AppVerifier will flag this problem too. - // So we disconnect from the pipe and then wait for the server to get into - // error state so that the pending I/O will fail and get cleared. - DisconnectNamedPipe(pipe_); - int num_tries = 100; - while (num_tries-- && server_state_ != IPC_SERVER_STATE_ERROR) { - Sleep(10); - } - - // Unregister wait on the pipe. - if (pipe_wait_handle_) { - // Wait for already executing callbacks to finish. - UnregisterWaitEx(pipe_wait_handle_, INVALID_HANDLE_VALUE); - } - - // Close the pipe to avoid further client connections. - if (pipe_) { - CloseHandle(pipe_); - } - - // Request all ClientInfo objects to unregister all waits. - // New scope to hold the lock for the shortest time. - { - AutoCriticalSection lock(&clients_sync_); - - std::list::iterator iter; - for (iter = clients_.begin(); iter != clients_.end(); ++iter) { - ClientInfo* client_info = *iter; - client_info->UnregisterWaits(); - } - } - - // Now that all waits have been unregistered, wait for some time - // for all pending work items to finish. - int total_wait = 0; - while (cleanup_item_count_ > 0) { - Sleep(kShutdownSleepIntervalMs); - - total_wait += kShutdownSleepIntervalMs; - - if (total_wait >= kShutdownDelayMs) { - break; - } - } - - // Clean up all the ClientInfo objects. - // New scope to hold the lock for the shortest time. - { - AutoCriticalSection lock(&clients_sync_); - - std::list::iterator iter; - for (iter = clients_.begin(); iter != clients_.end(); ++iter) { - ClientInfo* client_info = *iter; - delete client_info; - } - } - - if (server_alive_handle_) { - // Release the mutex before closing the handle so that clients requesting - // dumps wait for a long time for the server to generate a dump. - ReleaseMutex(server_alive_handle_); - CloseHandle(server_alive_handle_); - } - - DeleteCriticalSection(&clients_sync_); -} - -bool CrashGenerationServer::Start() { - server_state_ = IPC_SERVER_STATE_INITIAL; - - server_alive_handle_ = CreateMutex(NULL, TRUE, NULL); - if (!server_alive_handle_) { - return false; - } - - // Event to signal the client connection and pipe reads and writes. - overlapped_.hEvent = CreateEvent(NULL, // Security descriptor. - TRUE, // Manual reset. - FALSE, // Initially signaled. - NULL); // Name. - if (!overlapped_.hEvent) { - return false; - } - - // Register a callback with the thread pool for the client connection. - RegisterWaitForSingleObject(&pipe_wait_handle_, - overlapped_.hEvent, - OnPipeConnected, - this, - INFINITE, - kPipeIOThreadFlags); - - pipe_ = CreateNamedPipe(pipe_name_.c_str(), - kPipeAttr, - kPipeMode, - 1, - kOutBufferSize, - kInBufferSize, - 0, - pipe_sec_attrs_); - if (pipe_ == INVALID_HANDLE_VALUE) { - return false; - } - - // Signal the event to start a separate thread to handle - // client connections. - return SetEvent(overlapped_.hEvent) != FALSE; -} - -// If the server thread serving clients ever gets into the -// ERROR state, reset the event, close the pipe and remain -// in the error state forever. Error state means something -// that we didn't account for has happened, and it's dangerous -// to do anything unknowingly. -void CrashGenerationServer::HandleErrorState() { - assert(server_state_ == IPC_SERVER_STATE_ERROR); - - // If the server is shutting down anyway, don't clean up - // here since shut down process will clean up. - if (shutting_down_) { - return; - } - - if (pipe_wait_handle_) { - UnregisterWait(pipe_wait_handle_); - pipe_wait_handle_ = NULL; - } - - if (pipe_) { - CloseHandle(pipe_); - pipe_ = NULL; - } - - if (overlapped_.hEvent) { - CloseHandle(overlapped_.hEvent); - overlapped_.hEvent = NULL; - } -} - -// When the server thread serving clients is in the INITIAL state, -// try to connect to the pipe asynchronously. If the connection -// finishes synchronously, directly go into the CONNECTED state; -// otherwise go into the CONNECTING state. For any problems, go -// into the ERROR state. -void CrashGenerationServer::HandleInitialState() { - assert(server_state_ == IPC_SERVER_STATE_INITIAL); - - if (!ResetEvent(overlapped_.hEvent)) { - server_state_ = IPC_SERVER_STATE_ERROR; - return; - } - - bool success = ConnectNamedPipe(pipe_, &overlapped_) != FALSE; - - // From MSDN, it is not clear that when ConnectNamedPipe is used - // in an overlapped mode, will it ever return non-zero value, and - // if so, in what cases. - assert(!success); - - DWORD error_code = GetLastError(); - switch (error_code) { - case ERROR_IO_PENDING: - server_state_ = IPC_SERVER_STATE_CONNECTING; - break; - - case ERROR_PIPE_CONNECTED: - if (SetEvent(overlapped_.hEvent)) { - server_state_ = IPC_SERVER_STATE_CONNECTED; - } else { - server_state_ = IPC_SERVER_STATE_ERROR; - } - break; - - default: - server_state_ = IPC_SERVER_STATE_ERROR; - break; - } -} - -// When the server thread serving the clients is in the CONNECTING state, -// try to get the result of the asynchronous connection request using -// the OVERLAPPED object. If the result indicates the connection is done, -// go into the CONNECTED state. If the result indicates I/O is still -// INCOMPLETE, remain in the CONNECTING state. For any problems, -// go into the DISCONNECTING state. -void CrashGenerationServer::HandleConnectingState() { - assert(server_state_ == IPC_SERVER_STATE_CONNECTING); - - DWORD bytes_count = 0; - bool success = GetOverlappedResult(pipe_, - &overlapped_, - &bytes_count, - FALSE) != FALSE; - - if (success) { - server_state_ = IPC_SERVER_STATE_CONNECTED; - return; - } - - if (GetLastError() != ERROR_IO_INCOMPLETE) { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - } -} - -// When the server thread serving the clients is in the CONNECTED state, -// try to issue an asynchronous read from the pipe. If read completes -// synchronously or if I/O is pending then go into the READING state. -// For any problems, go into the DISCONNECTING state. -void CrashGenerationServer::HandleConnectedState() { - assert(server_state_ == IPC_SERVER_STATE_CONNECTED); - - DWORD bytes_count = 0; - memset(&msg_, 0, sizeof(msg_)); - bool success = ReadFile(pipe_, - &msg_, - sizeof(msg_), - &bytes_count, - &overlapped_) != FALSE; - - // Note that the asynchronous read issued above can finish before the - // code below executes. But, it is okay to change state after issuing - // the asynchronous read. This is because even if the asynchronous read - // is done, the callback for it would not be executed until the current - // thread finishes its execution. - if (success || GetLastError() == ERROR_IO_PENDING) { - server_state_ = IPC_SERVER_STATE_READING; - } else { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - } -} - -// When the server thread serving the clients is in the READING state, -// try to get the result of the async read. If async read is done, -// go into the READ_DONE state. For any problems, go into the -// DISCONNECTING state. -void CrashGenerationServer::HandleReadingState() { - assert(server_state_ == IPC_SERVER_STATE_READING); - - DWORD bytes_count = 0; - bool success = GetOverlappedResult(pipe_, - &overlapped_, - &bytes_count, - FALSE) != FALSE; - - if (success && bytes_count == sizeof(ProtocolMessage)) { - server_state_ = IPC_SERVER_STATE_READ_DONE; - return; - } - - DWORD error_code; - error_code = GetLastError(); - - // We should never get an I/O incomplete since we should not execute this - // unless the Read has finished and the overlapped event is signaled. If - // we do get INCOMPLETE, we have a bug in our code. - assert(error_code != ERROR_IO_INCOMPLETE); - - server_state_ = IPC_SERVER_STATE_DISCONNECTING; -} - -// When the server thread serving the client is in the READ_DONE state, -// validate the client's request message, register the client by -// creating appropriate objects and prepare the response. Then try to -// write the response to the pipe asynchronously. If that succeeds, -// go into the WRITING state. For any problems, go into the DISCONNECTING -// state. -void CrashGenerationServer::HandleReadDoneState() { - assert(server_state_ == IPC_SERVER_STATE_READ_DONE); - - if (!IsClientRequestValid(msg_)) { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - return; - } - - scoped_ptr client_info( - new ClientInfo(this, - msg_.pid, - msg_.dump_type, - msg_.thread_id, - msg_.exception_pointers, - msg_.assert_info, - msg_.custom_client_info)); - - if (!client_info->Initialize()) { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - return; - } - - if (!RespondToClient(client_info.get())) { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - return; - } - - // Note that the asynchronous write issued by RespondToClient function - // can finish before the code below executes. But it is okay to change - // state after issuing the asynchronous write. This is because even if - // the asynchronous write is done, the callback for it would not be - // executed until the current thread finishes its execution. - server_state_ = IPC_SERVER_STATE_WRITING; - client_info_ = client_info.release(); -} - -// When the server thread serving the clients is in the WRITING state, -// try to get the result of the async write. If the async write is done, -// go into the WRITE_DONE state. For any problems, go into the -// DISONNECTING state. -void CrashGenerationServer::HandleWritingState() { - assert(server_state_ == IPC_SERVER_STATE_WRITING); - - DWORD bytes_count = 0; - bool success = GetOverlappedResult(pipe_, - &overlapped_, - &bytes_count, - FALSE) != FALSE; - - if (success) { - server_state_ = IPC_SERVER_STATE_WRITE_DONE; - return; - } - - DWORD error_code; - error_code = GetLastError(); - - // We should never get an I/O incomplete since we should not execute this - // unless the Write has finished and the overlapped event is signaled. If - // we do get INCOMPLETE, we have a bug in our code. - assert(error_code != ERROR_IO_INCOMPLETE); - - server_state_ = IPC_SERVER_STATE_DISCONNECTING; -} - -// When the server thread serving the clients is in the WRITE_DONE state, -// try to issue an async read on the pipe. If the read completes synchronously -// or if I/O is still pending then go into the READING_ACK state. For any -// issues, go into the DISCONNECTING state. -void CrashGenerationServer::HandleWriteDoneState() { - assert(server_state_ == IPC_SERVER_STATE_WRITE_DONE); - - server_state_ = IPC_SERVER_STATE_READING_ACK; - - DWORD bytes_count = 0; - bool success = ReadFile(pipe_, - &msg_, - sizeof(msg_), - &bytes_count, - &overlapped_) != FALSE; - - if (success) { - return; - } - - DWORD error_code = GetLastError(); - - if (error_code != ERROR_IO_PENDING) { - server_state_ = IPC_SERVER_STATE_DISCONNECTING; - } -} - -// When the server thread serving the clients is in the READING_ACK state, -// try to get result of async read. Go into the DISCONNECTING state. -void CrashGenerationServer::HandleReadingAckState() { - assert(server_state_ == IPC_SERVER_STATE_READING_ACK); - - DWORD bytes_count = 0; - bool success = GetOverlappedResult(pipe_, - &overlapped_, - &bytes_count, - FALSE) != FALSE; - - if (success) { - // The connection handshake with the client is now complete; perform - // the callback. - if (connect_callback_) { - connect_callback_(connect_context_, client_info_); - } - } else { - DWORD error_code = GetLastError(); - - // We should never get an I/O incomplete since we should not execute this - // unless the Read has finished and the overlapped event is signaled. If - // we do get INCOMPLETE, we have a bug in our code. - assert(error_code != ERROR_IO_INCOMPLETE); - } - - server_state_ = IPC_SERVER_STATE_DISCONNECTING; -} - -// When the server thread serving the client is in the DISCONNECTING state, -// disconnect from the pipe and reset the event. If anything fails, go into -// the ERROR state. If it goes well, go into the INITIAL state and set the -// event to start all over again. -void CrashGenerationServer::HandleDisconnectingState() { - assert(server_state_ == IPC_SERVER_STATE_DISCONNECTING); - - // Done serving the client. - client_info_ = NULL; - - overlapped_.Internal = NULL; - overlapped_.InternalHigh = NULL; - overlapped_.Offset = 0; - overlapped_.OffsetHigh = 0; - overlapped_.Pointer = NULL; - - if (!ResetEvent(overlapped_.hEvent)) { - server_state_ = IPC_SERVER_STATE_ERROR; - return; - } - - if (!DisconnectNamedPipe(pipe_)) { - server_state_ = IPC_SERVER_STATE_ERROR; - return; - } - - // If the server is shutting down do not connect to the - // next client. - if (shutting_down_) { - return; - } - - server_state_ = IPC_SERVER_STATE_INITIAL; - if (!SetEvent(overlapped_.hEvent)) { - server_state_ = IPC_SERVER_STATE_ERROR; - } -} - -bool CrashGenerationServer::PrepareReply(const ClientInfo& client_info, - ProtocolMessage* reply) const { - reply->tag = MESSAGE_TAG_REGISTRATION_RESPONSE; - reply->pid = GetCurrentProcessId(); - - if (CreateClientHandles(client_info, reply)) { - return true; - } - - if (reply->dump_request_handle) { - CloseHandle(reply->dump_request_handle); - } - - if (reply->dump_generated_handle) { - CloseHandle(reply->dump_generated_handle); - } - - if (reply->server_alive_handle) { - CloseHandle(reply->server_alive_handle); - } - - return false; -} - -bool CrashGenerationServer::CreateClientHandles(const ClientInfo& client_info, - ProtocolMessage* reply) const { - HANDLE current_process = GetCurrentProcess(); - if (!DuplicateHandle(current_process, - client_info.dump_requested_handle(), - client_info.process_handle(), - &reply->dump_request_handle, - kDumpRequestEventAccess, - FALSE, - 0)) { - return false; - } - - if (!DuplicateHandle(current_process, - client_info.dump_generated_handle(), - client_info.process_handle(), - &reply->dump_generated_handle, - kDumpGeneratedEventAccess, - FALSE, - 0)) { - return false; - } - - if (!DuplicateHandle(current_process, - server_alive_handle_, - client_info.process_handle(), - &reply->server_alive_handle, - kMutexAccess, - FALSE, - 0)) { - return false; - } - - return true; -} - -bool CrashGenerationServer::RespondToClient(ClientInfo* client_info) { - ProtocolMessage reply; - if (!PrepareReply(*client_info, &reply)) { - return false; - } - - if (!AddClient(client_info)) { - return false; - } - - DWORD bytes_count = 0; - bool success = WriteFile(pipe_, - &reply, - sizeof(reply), - &bytes_count, - &overlapped_) != FALSE; - - return success || GetLastError() == ERROR_IO_PENDING; -} - -// The server thread servicing the clients runs this method. The method -// implements the state machine described in ReadMe.txt along with the -// helper methods HandleXXXState. -void CrashGenerationServer::HandleConnectionRequest() { - // If we are shutting doen then get into ERROR state, reset the event so more - // workers don't run and return immediately. - if (shutting_down_) { - server_state_ = IPC_SERVER_STATE_ERROR; - ResetEvent(overlapped_.hEvent); - return; - } - - switch (server_state_) { - case IPC_SERVER_STATE_ERROR: - HandleErrorState(); - break; - - case IPC_SERVER_STATE_INITIAL: - HandleInitialState(); - break; - - case IPC_SERVER_STATE_CONNECTING: - HandleConnectingState(); - break; - - case IPC_SERVER_STATE_CONNECTED: - HandleConnectedState(); - break; - - case IPC_SERVER_STATE_READING: - HandleReadingState(); - break; - - case IPC_SERVER_STATE_READ_DONE: - HandleReadDoneState(); - break; - - case IPC_SERVER_STATE_WRITING: - HandleWritingState(); - break; - - case IPC_SERVER_STATE_WRITE_DONE: - HandleWriteDoneState(); - break; - - case IPC_SERVER_STATE_READING_ACK: - HandleReadingAckState(); - break; - - case IPC_SERVER_STATE_DISCONNECTING: - HandleDisconnectingState(); - break; - - default: - assert(false); - // This indicates that we added one more state without - // adding handling code. - server_state_ = IPC_SERVER_STATE_ERROR; - break; - } -} - -bool CrashGenerationServer::AddClient(ClientInfo* client_info) { - HANDLE request_wait_handle = NULL; - if (!RegisterWaitForSingleObject(&request_wait_handle, - client_info->dump_requested_handle(), - OnDumpRequest, - client_info, - INFINITE, - kDumpRequestThreadFlags)) { - return false; - } - - client_info->set_dump_request_wait_handle(request_wait_handle); - - // OnClientEnd will be called when the client process terminates. - HANDLE process_wait_handle = NULL; - if (!RegisterWaitForSingleObject(&process_wait_handle, - client_info->process_handle(), - OnClientEnd, - client_info, - INFINITE, - WT_EXECUTEONLYONCE)) { - return false; - } - - client_info->set_process_exit_wait_handle(process_wait_handle); - - // New scope to hold the lock for the shortest time. - { - AutoCriticalSection lock(&clients_sync_); - clients_.push_back(client_info); - } - - return true; -} - -// static -void CALLBACK CrashGenerationServer::OnPipeConnected(void* context, BOOLEAN) { - assert (context); - - CrashGenerationServer* obj = - reinterpret_cast(context); - obj->HandleConnectionRequest(); -} - -// static -void CALLBACK CrashGenerationServer::OnDumpRequest(void* context, BOOLEAN) { - assert(context); - ClientInfo* client_info = reinterpret_cast(context); - client_info->PopulateCustomInfo(); - - CrashGenerationServer* crash_server = client_info->crash_server(); - assert(crash_server); - crash_server->HandleDumpRequest(*client_info); - - ResetEvent(client_info->dump_requested_handle()); -} - -// static -void CALLBACK CrashGenerationServer::OnClientEnd(void* context, BOOLEAN) { - assert(context); - ClientInfo* client_info = reinterpret_cast(context); - - CrashGenerationServer* crash_server = client_info->crash_server(); - assert(crash_server); - - InterlockedIncrement(&crash_server->cleanup_item_count_); - - if (!QueueUserWorkItem(CleanupClient, context, WT_EXECUTEDEFAULT)) { - InterlockedDecrement(&crash_server->cleanup_item_count_); - } -} - -// static -DWORD WINAPI CrashGenerationServer::CleanupClient(void* context) { - assert(context); - ClientInfo* client_info = reinterpret_cast(context); - - CrashGenerationServer* crash_server = client_info->crash_server(); - assert(crash_server); - - if (crash_server->exit_callback_) { - crash_server->exit_callback_(crash_server->exit_context_, client_info); - } - - crash_server->DoCleanup(client_info); - - InterlockedDecrement(&crash_server->cleanup_item_count_); - return 0; -} - -void CrashGenerationServer::DoCleanup(ClientInfo* client_info) { - assert(client_info); - - // Start a new scope to release lock automatically. - { - AutoCriticalSection lock(&clients_sync_); - clients_.remove(client_info); - } - - delete client_info; -} - -void CrashGenerationServer::HandleDumpRequest(const ClientInfo& client_info) { - // Generate the dump only if it's explicitly requested by the - // server application; otherwise the server might want to generate - // dump in the callback. - std::wstring dump_path; - if (generate_dumps_) { - if (!GenerateDump(client_info, &dump_path)) { - return; - } - } - - if (dump_callback_) { - std::wstring* ptr_dump_path = (dump_path == L"") ? NULL : &dump_path; - dump_callback_(dump_context_, &client_info, ptr_dump_path); - } - - SetEvent(client_info.dump_generated_handle()); -} - -bool CrashGenerationServer::GenerateDump(const ClientInfo& client, - std::wstring* dump_path) { - assert(client.pid() != 0); - assert(client.process_handle()); - - // We have to get the address of EXCEPTION_INFORMATION from - // the client process address space. - EXCEPTION_POINTERS* client_ex_info = NULL; - if (!client.GetClientExceptionInfo(&client_ex_info)) { - return false; - } - - DWORD client_thread_id = 0; - if (!client.GetClientThreadId(&client_thread_id)) { - return false; - } - - return dump_generator_->WriteMinidump(client.process_handle(), - client.pid(), - client_thread_id, - GetCurrentThreadId(), - client_ex_info, - client.assert_info(), - client.dump_type(), - true, - dump_path); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.h b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.h deleted file mode 100644 index cacb639a..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/crash_generation_server.h +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ - -#include -#include -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/crash_generation/client_info.h" -#include "client/windows/crash_generation/minidump_generator.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -// Abstraction for server side implementation of out-of-process crash -// generation protocol for Windows platform only. It generates Windows -// minidump files for client processes that request dump generation. When -// the server is requested to start listening for clients (by calling the -// Start method), it creates a named pipe and waits for the clients to -// register. In response, it hands them event handles that the client can -// signal to request dump generation. When the clients request dump -// generation in this way, the server generates Windows minidump files. -class CrashGenerationServer { - public: - typedef void (*OnClientConnectedCallback)(void* context, - const ClientInfo* client_info); - - typedef void (*OnClientDumpRequestCallback)(void* context, - const ClientInfo* client_info, - const std::wstring* file_path); - - typedef void (*OnClientExitedCallback)(void* context, - const ClientInfo* client_info); - - // Creates an instance with the given parameters. - // - // Parameter pipe_name: Name of the Windows named pipe - // Parameter pipe_sec_attrs Security attributes to set on the pipe. Pass - // NULL to use default security on the pipe. By default, the pipe created - // allows Local System, Administrators and the Creator full control and - // the Everyone group read access on the pipe. - // Parameter connect_callback: Callback for a new client connection. - // Parameter connect_context: Context for client connection callback. - // Parameter crash_callback: Callback for a client crash dump request. - // Parameter crash_context: Context for client crash dump request callback. - // Parameter exit_callback: Callback for client process exit. - // Parameter exit_context: Context for client exit callback. - // Parameter generate_dumps: Whether to automatically generate dumps. - // Client code of this class might want to generate dumps explicitly in the - // crash dump request callback. In that case, false can be passed for this - // parameter. - // Parameter dump_path: Path for generating dumps; required only if true is - // passed for generateDumps parameter; NULL can be passed otherwise. - CrashGenerationServer(const std::wstring& pipe_name, - SECURITY_ATTRIBUTES* pipe_sec_attrs, - OnClientConnectedCallback connect_callback, - void* connect_context, - OnClientDumpRequestCallback dump_callback, - void* dump_context, - OnClientExitedCallback exit_callback, - void* exit_context, - bool generate_dumps, - const std::wstring* dump_path); - - ~CrashGenerationServer(); - - // Performs initialization steps needed to start listening to clients. - // - // Returns true if initialization is successful; false otherwise. - bool Start(); - - private: - // Various states the client can be in during the handshake with - // the server. - enum IPCServerState { - // Server is in error state and it cannot serve any clients. - IPC_SERVER_STATE_ERROR, - - // Server starts in this state. - IPC_SERVER_STATE_INITIAL, - - // Server has issued an async connect to the pipe and it is waiting - // for the connection to be established. - IPC_SERVER_STATE_CONNECTING, - - // Server is connected successfully. - IPC_SERVER_STATE_CONNECTED, - - // Server has issued an async read from the pipe and it is waiting for - // the read to finish. - IPC_SERVER_STATE_READING, - - // Server is done reading from the pipe. - IPC_SERVER_STATE_READ_DONE, - - // Server has issued an async write to the pipe and it is waiting for - // the write to finish. - IPC_SERVER_STATE_WRITING, - - // Server is done writing to the pipe. - IPC_SERVER_STATE_WRITE_DONE, - - // Server has issued an async read from the pipe for an ack and it - // is waiting for the read to finish. - IPC_SERVER_STATE_READING_ACK, - - // Server is done writing to the pipe and it is now ready to disconnect - // and reconnect. - IPC_SERVER_STATE_DISCONNECTING - }; - - // - // Helper methods to handle various server IPC states. - // - void HandleErrorState(); - void HandleInitialState(); - void HandleConnectingState(); - void HandleConnectedState(); - void HandleReadingState(); - void HandleReadDoneState(); - void HandleWritingState(); - void HandleWriteDoneState(); - void HandleReadingAckState(); - void HandleDisconnectingState(); - - // Prepares reply for a client from the given parameters. - bool PrepareReply(const ClientInfo& client_info, - ProtocolMessage* reply) const; - - // Duplicates various handles in the ClientInfo object for the client - // process and stores them in the given ProtocolMessage instance. If - // creating any handle fails, ProtocolMessage will contain the handles - // already created successfully, which should be closed by the caller. - bool CreateClientHandles(const ClientInfo& client_info, - ProtocolMessage* reply) const; - - // Response to the given client. Return true if all steps of - // responding to the client succeed, false otherwise. - bool RespondToClient(ClientInfo* client_info); - - // Handles a connection request from the client. - void HandleConnectionRequest(); - - // Handles a dump request from the client. - void HandleDumpRequest(const ClientInfo& client_info); - - // Callback for pipe connected event. - static void CALLBACK OnPipeConnected(void* context, BOOLEAN timer_or_wait); - - // Callback for a dump request. - static void CALLBACK OnDumpRequest(void* context, BOOLEAN timer_or_wait); - - // Callback for client process exit event. - static void CALLBACK OnClientEnd(void* context, BOOLEAN timer_or_wait); - - // Releases resources for a client. - static DWORD WINAPI CleanupClient(void* context); - - // Cleans up for the given client. - void DoCleanup(ClientInfo* client_info); - - // Adds the given client to the list of registered clients. - bool AddClient(ClientInfo* client_info); - - // Generates dump for the given client. - bool GenerateDump(const ClientInfo& client, std::wstring* dump_path); - - // Sync object for thread-safe access to the shared list of clients. - CRITICAL_SECTION clients_sync_; - - // List of clients. - std::list clients_; - - // Pipe name. - std::wstring pipe_name_; - - // Pipe security attributes - SECURITY_ATTRIBUTES* pipe_sec_attrs_; - - // Handle to the pipe used for handshake with clients. - HANDLE pipe_; - - // Pipe wait handle. - HANDLE pipe_wait_handle_; - - // Handle to server-alive mutex. - HANDLE server_alive_handle_; - - // Callback for a successful client connection. - OnClientConnectedCallback connect_callback_; - - // Context for client connected callback. - void* connect_context_; - - // Callback for a client dump request. - OnClientDumpRequestCallback dump_callback_; - - // Context for client dump request callback. - void* dump_context_; - - // Callback for client process exit. - OnClientExitedCallback exit_callback_; - - // Context for client process exit callback. - void* exit_context_; - - // Whether to generate dumps. - bool generate_dumps_; - - // Instance of a mini dump generator. - scoped_ptr dump_generator_; - - // State of the server in performing the IPC with the client. - // Note that since we restrict the pipe to one instance, we - // only need to keep one state of the server. Otherwise, server - // would have one state per client it is talking to. - volatile IPCServerState server_state_; - - // Whether the server is shutting down. - volatile bool shutting_down_; - - // Overlapped instance for async I/O on the pipe. - OVERLAPPED overlapped_; - - // Message object used in IPC with the client. - ProtocolMessage msg_; - - // Client Info for the client that's connecting to the server. - ClientInfo* client_info_; - - // Count of clean-up work items that are currently running or are - // already queued to run. - volatile LONG cleanup_item_count_; - - // Disable copy ctor and operator=. - CrashGenerationServer(const CrashGenerationServer& crash_server); - CrashGenerationServer& operator=(const CrashGenerationServer& crash_server); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_SERVER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.cc b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.cc deleted file mode 100644 index c03b191a..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.cc +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "client/windows/crash_generation/minidump_generator.h" -#include -#include "client/windows/common/auto_critical_section.h" -#include "common/windows/guid_string.h" - -using std::wstring; - -namespace google_breakpad { - -MinidumpGenerator::MinidumpGenerator(const wstring& dump_path) - : dbghelp_module_(NULL), - rpcrt4_module_(NULL), - dump_path_(dump_path), - write_dump_(NULL), - create_uuid_(NULL) { - InitializeCriticalSection(&module_load_sync_); - InitializeCriticalSection(&get_proc_address_sync_); -} - -MinidumpGenerator::~MinidumpGenerator() { - if (dbghelp_module_) { - FreeLibrary(dbghelp_module_); - } - - if (rpcrt4_module_) { - FreeLibrary(rpcrt4_module_); - } - - DeleteCriticalSection(&get_proc_address_sync_); - DeleteCriticalSection(&module_load_sync_); -} - -bool MinidumpGenerator::WriteMinidump(HANDLE process_handle, - DWORD process_id, - DWORD thread_id, - DWORD requesting_thread_id, - EXCEPTION_POINTERS* exception_pointers, - MDRawAssertionInfo* assert_info, - MINIDUMP_TYPE dump_type, - bool is_client_pointers, - wstring* dump_path) { - MiniDumpWriteDumpType write_dump = GetWriteDump(); - if (!write_dump) { - return false; - } - - wstring dump_file_path; - if (!GenerateDumpFilePath(&dump_file_path)) { - return false; - } - - // If the client requests a full memory dump, we will write a normal mini - // dump and a full memory dump. Both dump files use the same uuid as file - // name prefix. - bool full_memory_dump = (dump_type & MiniDumpWithFullMemory) != 0; - wstring full_dump_file_path; - if (full_memory_dump) { - full_dump_file_path.assign(dump_file_path); - full_dump_file_path.resize(full_dump_file_path.size() - 4); // strip .dmp - full_dump_file_path.append(TEXT("-full.dmp")); - } - - HANDLE dump_file = CreateFile(dump_file_path.c_str(), - GENERIC_WRITE, - 0, - NULL, - CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, - NULL); - - if (dump_file == INVALID_HANDLE_VALUE) { - return false; - } - - HANDLE full_dump_file = INVALID_HANDLE_VALUE; - if (full_memory_dump) { - full_dump_file = CreateFile(full_dump_file_path.c_str(), - GENERIC_WRITE, - 0, - NULL, - CREATE_NEW, - FILE_ATTRIBUTE_NORMAL, - NULL); - - if (full_dump_file == INVALID_HANDLE_VALUE) { - CloseHandle(dump_file); - return false; - } - } - - MINIDUMP_EXCEPTION_INFORMATION* dump_exception_pointers = NULL; - MINIDUMP_EXCEPTION_INFORMATION dump_exception_info; - - // Setup the exception information object only if it's a dump - // due to an exception. - if (exception_pointers) { - dump_exception_pointers = &dump_exception_info; - dump_exception_info.ThreadId = thread_id; - dump_exception_info.ExceptionPointers = exception_pointers; - dump_exception_info.ClientPointers = is_client_pointers; - } - - // Add an MDRawBreakpadInfo stream to the minidump, to provide additional - // information about the exception handler to the Breakpad processor. - // The information will help the processor determine which threads are - // relevant. The Breakpad processor does not require this information but - // can function better with Breakpad-generated dumps when it is present. - // The native debugger is not harmed by the presence of this information. - MDRawBreakpadInfo breakpad_info = {0}; - if (!is_client_pointers) { - // Set the dump thread id and requesting thread id only in case of - // in-process dump generation. - breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID | - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID; - breakpad_info.dump_thread_id = thread_id; - breakpad_info.requesting_thread_id = requesting_thread_id; - } - - // Leave room in user_stream_array for a possible assertion info stream. - MINIDUMP_USER_STREAM user_stream_array[2]; - user_stream_array[0].Type = MD_BREAKPAD_INFO_STREAM; - user_stream_array[0].BufferSize = sizeof(breakpad_info); - user_stream_array[0].Buffer = &breakpad_info; - - MINIDUMP_USER_STREAM_INFORMATION user_streams; - user_streams.UserStreamCount = 1; - user_streams.UserStreamArray = user_stream_array; - - MDRawAssertionInfo* actual_assert_info = assert_info; - MDRawAssertionInfo client_assert_info = {0}; - - if (assert_info) { - // If the assertion info object lives in the client process, - // read the memory of the client process. - if (is_client_pointers) { - SIZE_T bytes_read = 0; - if (!ReadProcessMemory(process_handle, - assert_info, - &client_assert_info, - sizeof(client_assert_info), - &bytes_read)) { - CloseHandle(dump_file); - if (full_dump_file != INVALID_HANDLE_VALUE) - CloseHandle(full_dump_file); - return false; - } - - if (bytes_read != sizeof(client_assert_info)) { - CloseHandle(dump_file); - if (full_dump_file != INVALID_HANDLE_VALUE) - CloseHandle(full_dump_file); - return false; - } - - actual_assert_info = &client_assert_info; - } - - user_stream_array[1].Type = MD_ASSERTION_INFO_STREAM; - user_stream_array[1].BufferSize = sizeof(MDRawAssertionInfo); - user_stream_array[1].Buffer = actual_assert_info; - ++user_streams.UserStreamCount; - } - - bool result_minidump = write_dump( - process_handle, - process_id, - dump_file, - static_cast((dump_type & (~MiniDumpWithFullMemory)) - | MiniDumpNormal), - exception_pointers ? &dump_exception_info : NULL, - &user_streams, - NULL) != FALSE; - - bool result_full_memory = true; - if (full_memory_dump) { - result_full_memory = write_dump( - process_handle, - process_id, - full_dump_file, - static_cast(dump_type & (~MiniDumpNormal)), - exception_pointers ? &dump_exception_info : NULL, - &user_streams, - NULL) != FALSE; - } - - bool result = result_minidump && result_full_memory; - - CloseHandle(dump_file); - if (full_dump_file != INVALID_HANDLE_VALUE) - CloseHandle(full_dump_file); - - // Store the path of the dump file in the out parameter if dump generation - // succeeded. - if (result && dump_path) { - *dump_path = dump_file_path; - } - - return result; -} - -HMODULE MinidumpGenerator::GetDbghelpModule() { - AutoCriticalSection lock(&module_load_sync_); - if (!dbghelp_module_) { - dbghelp_module_ = LoadLibrary(TEXT("dbghelp.dll")); - } - - return dbghelp_module_; -} - -MinidumpGenerator::MiniDumpWriteDumpType MinidumpGenerator::GetWriteDump() { - AutoCriticalSection lock(&get_proc_address_sync_); - if (!write_dump_) { - HMODULE module = GetDbghelpModule(); - if (module) { - FARPROC proc = GetProcAddress(module, "MiniDumpWriteDump"); - write_dump_ = reinterpret_cast(proc); - } - } - - return write_dump_; -} - -HMODULE MinidumpGenerator::GetRpcrt4Module() { - AutoCriticalSection lock(&module_load_sync_); - if (!rpcrt4_module_) { - rpcrt4_module_ = LoadLibrary(TEXT("rpcrt4.dll")); - } - - return rpcrt4_module_; -} - -MinidumpGenerator::UuidCreateType MinidumpGenerator::GetCreateUuid() { - AutoCriticalSection lock(&module_load_sync_); - if (!create_uuid_) { - HMODULE module = GetRpcrt4Module(); - if (module) { - FARPROC proc = GetProcAddress(module, "UuidCreate"); - create_uuid_ = reinterpret_cast(proc); - } - } - - return create_uuid_; -} - -bool MinidumpGenerator::GenerateDumpFilePath(wstring* file_path) { - UUID id = {0}; - - UuidCreateType create_uuid = GetCreateUuid(); - if(!create_uuid) { - return false; - } - - create_uuid(&id); - wstring id_str = GUIDString::GUIDToWString(&id); - - *file_path = dump_path_ + TEXT("\\") + id_str + TEXT(".dmp"); - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.h b/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.h deleted file mode 100644 index 8ab6a8f6..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/crash_generation/minidump_generator.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ -#define CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ - -#include -#include -#include -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -// Abstraction for various objects and operations needed to generate -// minidump on Windows. This abstraction is useful to hide all the gory -// details for minidump generation and provide a clean interface to -// the clients to generate minidumps. -class MinidumpGenerator { - public: - // Creates an instance with the given dump path. - explicit MinidumpGenerator(const std::wstring& dump_path); - - ~MinidumpGenerator(); - - // Writes the minidump with the given parameters. Stores the - // dump file path in the dump_path parameter if dump generation - // succeeds. - bool WriteMinidump(HANDLE process_handle, - DWORD process_id, - DWORD thread_id, - DWORD requesting_thread_id, - EXCEPTION_POINTERS* exception_pointers, - MDRawAssertionInfo* assert_info, - MINIDUMP_TYPE dump_type, - bool is_client_pointers, - std::wstring* dump_path); - - private: - // Function pointer type for MiniDumpWriteDump, which is looked up - // dynamically. - typedef BOOL (WINAPI* MiniDumpWriteDumpType)( - HANDLE hProcess, - DWORD ProcessId, - HANDLE hFile, - MINIDUMP_TYPE DumpType, - CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam); - - // Function pointer type for UuidCreate, which is looked up dynamically. - typedef RPC_STATUS (RPC_ENTRY* UuidCreateType)(UUID* Uuid); - - // Loads the appropriate DLL lazily in a thread safe way. - HMODULE GetDbghelpModule(); - - // Loads the appropriate DLL and gets a pointer to the MiniDumpWriteDump - // function lazily and in a thread-safe manner. - MiniDumpWriteDumpType GetWriteDump(); - - // Loads the appropriate DLL lazily in a thread safe way. - HMODULE GetRpcrt4Module(); - - // Loads the appropriate DLL and gets a pointer to the UuidCreate - // function lazily and in a thread-safe manner. - UuidCreateType GetCreateUuid(); - - // Returns the path for the file to write dump to. - bool GenerateDumpFilePath(std::wstring* file_path); - - // Handle to dynamically loaded DbgHelp.dll. - HMODULE dbghelp_module_; - - // Pointer to the MiniDumpWriteDump function. - MiniDumpWriteDumpType write_dump_; - - // Handle to dynamically loaded rpcrt4.dll. - HMODULE rpcrt4_module_; - - // Pointer to the UuidCreate function. - UuidCreateType create_uuid_; - - // Folder path to store dump files. - std::wstring dump_path_; - - // Critical section to sychronize action of loading modules dynamically. - CRITICAL_SECTION module_load_sync_; - - // Critical section to synchronize action of dynamically getting function - // addresses from modules. - CRITICAL_SECTION get_proc_address_sync_; -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_CRASH_GENERATION_MINIDUMP_GENERATION_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.cc b/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.cc deleted file mode 100644 index f3bb5a61..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.cc +++ /dev/null @@ -1,746 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -#include -#include - -#include "common/windows/string_utils-inl.h" - -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/handler/exception_handler.h" -#include "common/windows/guid_string.h" - -namespace google_breakpad { - -static const int kWaitForHandlerThreadMs = 60000; -static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024; - -vector* ExceptionHandler::handler_stack_ = NULL; -LONG ExceptionHandler::handler_stack_index_ = 0; -CRITICAL_SECTION ExceptionHandler::handler_stack_critical_section_; -volatile LONG ExceptionHandler::instance_count_ = 0; - -ExceptionHandler::ExceptionHandler(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info) { - Initialize(dump_path, - filter, - callback, - callback_context, - handler_types, - dump_type, - pipe_name, - custom_info); -} - -ExceptionHandler::ExceptionHandler(const wstring &dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types) { - Initialize(dump_path, - filter, - callback, - callback_context, - handler_types, - MiniDumpNormal, - NULL, - NULL); -} - -void ExceptionHandler::Initialize(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info) { - LONG instance_count = InterlockedIncrement(&instance_count_); - filter_ = filter; - callback_ = callback; - callback_context_ = callback_context; - dump_path_c_ = NULL; - next_minidump_id_c_ = NULL; - next_minidump_path_c_ = NULL; - dbghelp_module_ = NULL; - minidump_write_dump_ = NULL; - dump_type_ = dump_type; - rpcrt4_module_ = NULL; - uuid_create_ = NULL; - handler_types_ = handler_types; - previous_filter_ = NULL; -#if _MSC_VER >= 1400 // MSVC 2005/8 - previous_iph_ = NULL; -#endif // _MSC_VER >= 1400 - previous_pch_ = NULL; - handler_thread_ = NULL; - is_shutdown_ = false; - handler_start_semaphore_ = NULL; - handler_finish_semaphore_ = NULL; - requesting_thread_id_ = 0; - exception_info_ = NULL; - assertion_ = NULL; - handler_return_value_ = false; - handle_debug_exceptions_ = false; - - // Attempt to use out-of-process if user has specified pipe name. - if (pipe_name != NULL) { - scoped_ptr client( - new CrashGenerationClient(pipe_name, - dump_type_, - custom_info)); - - // If successful in registering with the monitoring process, - // there is no need to setup in-process crash generation. - if (client->Register()) { - crash_generation_client_.reset(client.release()); - } - } - - if (!IsOutOfProcess()) { - // Either client did not ask for out-of-process crash generation - // or registration with the server process failed. In either case, - // setup to do in-process crash generation. - - // Set synchronization primitives and the handler thread. Each - // ExceptionHandler object gets its own handler thread because that's the - // only way to reliably guarantee sufficient stack space in an exception, - // and it allows an easy way to get a snapshot of the requesting thread's - // context outside of an exception. - InitializeCriticalSection(&handler_critical_section_); - handler_start_semaphore_ = CreateSemaphore(NULL, 0, 1, NULL); - assert(handler_start_semaphore_ != NULL); - - handler_finish_semaphore_ = CreateSemaphore(NULL, 0, 1, NULL); - assert(handler_finish_semaphore_ != NULL); - - // Don't attempt to create the thread if we could not create the semaphores. - if (handler_finish_semaphore_ != NULL && handler_start_semaphore_ != NULL) { - DWORD thread_id; - handler_thread_ = CreateThread(NULL, // lpThreadAttributes - kExceptionHandlerThreadInitialStackSize, - ExceptionHandlerThreadMain, - this, // lpParameter - 0, // dwCreationFlags - &thread_id); - assert(handler_thread_ != NULL); - } - - dbghelp_module_ = LoadLibrary(L"dbghelp.dll"); - if (dbghelp_module_) { - minidump_write_dump_ = reinterpret_cast( - GetProcAddress(dbghelp_module_, "MiniDumpWriteDump")); - } - - // Load this library dynamically to not affect existing projects. Most - // projects don't link against this directly, it's usually dynamically - // loaded by dependent code. - rpcrt4_module_ = LoadLibrary(L"rpcrt4.dll"); - if (rpcrt4_module_) { - uuid_create_ = reinterpret_cast( - GetProcAddress(rpcrt4_module_, "UuidCreate")); - } - - // set_dump_path calls UpdateNextID. This sets up all of the path and id - // strings, and their equivalent c_str pointers. - set_dump_path(dump_path); - } - - // There is a race condition here. If the first instance has not yet - // initialized the critical section, the second (and later) instances may - // try to use uninitialized critical section object. The feature of multiple - // instances in one module is not used much, so leave it as is for now. - // One way to solve this in the current design (that is, keeping the static - // handler stack) is to use spin locks with volatile bools to synchronize - // the handler stack. This works only if the compiler guarantees to generate - // cache coherent code for volatile. - // TODO(munjal): Fix this in a better way by changing the design if possible. - - // Lazy initialization of the handler_stack_critical_section_ - if (instance_count == 1) { - InitializeCriticalSection(&handler_stack_critical_section_); - } - - if (handler_types != HANDLER_NONE) { - EnterCriticalSection(&handler_stack_critical_section_); - - // The first time an ExceptionHandler that installs a handler is - // created, set up the handler stack. - if (!handler_stack_) { - handler_stack_ = new vector(); - } - handler_stack_->push_back(this); - - if (handler_types & HANDLER_EXCEPTION) - previous_filter_ = SetUnhandledExceptionFilter(HandleException); - -#if _MSC_VER >= 1400 // MSVC 2005/8 - if (handler_types & HANDLER_INVALID_PARAMETER) - previous_iph_ = _set_invalid_parameter_handler(HandleInvalidParameter); -#endif // _MSC_VER >= 1400 - - if (handler_types & HANDLER_PURECALL) - previous_pch_ = _set_purecall_handler(HandlePureVirtualCall); - - LeaveCriticalSection(&handler_stack_critical_section_); - } -} - -ExceptionHandler::~ExceptionHandler() { - if (dbghelp_module_) { - FreeLibrary(dbghelp_module_); - } - - if (rpcrt4_module_) { - FreeLibrary(rpcrt4_module_); - } - - if (handler_types_ != HANDLER_NONE) { - EnterCriticalSection(&handler_stack_critical_section_); - - if (handler_types_ & HANDLER_EXCEPTION) - SetUnhandledExceptionFilter(previous_filter_); - -#if _MSC_VER >= 1400 // MSVC 2005/8 - if (handler_types_ & HANDLER_INVALID_PARAMETER) - _set_invalid_parameter_handler(previous_iph_); -#endif // _MSC_VER >= 1400 - - if (handler_types_ & HANDLER_PURECALL) - _set_purecall_handler(previous_pch_); - - if (handler_stack_->back() == this) { - handler_stack_->pop_back(); - } else { - // TODO(mmentovai): use advapi32!ReportEvent to log the warning to the - // system's application event log. - fprintf(stderr, "warning: removing Breakpad handler out of order\n"); - for (vector::iterator iterator = - handler_stack_->begin(); - iterator != handler_stack_->end(); - ++iterator) { - if (*iterator == this) { - handler_stack_->erase(iterator); - } - } - } - - if (handler_stack_->empty()) { - // When destroying the last ExceptionHandler that installed a handler, - // clean up the handler stack. - delete handler_stack_; - handler_stack_ = NULL; - } - - LeaveCriticalSection(&handler_stack_critical_section_); - } - - // Some of the objects were only initialized if out of process - // registration was not done. - if (!IsOutOfProcess()) { -#ifdef BREAKPAD_NO_TERMINATE_THREAD - // Clean up the handler thread and synchronization primitives. The handler - // thread is either waiting on the semaphore to handle a crash or it is - // handling a crash. Coming out of the wait is fast but wait more in the - // eventuality a crash is handled. This compilation option results in a - // deadlock if the exception handler is destroyed while executing code - // inside DllMain. - is_shutdown_ = true; - ReleaseSemaphore(handler_start_semaphore_, 1, NULL); - WaitForSingleObject(handler_thread_, kWaitForHandlerThreadMs); -#else - TerminateThread(handler_thread_, 1); -#endif // BREAKPAD_NO_TERMINATE_THREAD - - DeleteCriticalSection(&handler_critical_section_); - CloseHandle(handler_start_semaphore_); - CloseHandle(handler_finish_semaphore_); - } - - // There is a race condition in the code below: if this instance is - // deleting the static critical section and a new instance of the class - // is created, then there is a possibility that the critical section be - // initialized while the same critical section is being deleted. Given the - // usage pattern for the code, this race condition is unlikely to hit, but it - // is a race condition nonetheless. - if (InterlockedDecrement(&instance_count_) == 0) { - DeleteCriticalSection(&handler_stack_critical_section_); - } -} - -// static -DWORD ExceptionHandler::ExceptionHandlerThreadMain(void* lpParameter) { - ExceptionHandler* self = reinterpret_cast(lpParameter); - assert(self); - assert(self->handler_start_semaphore_ != NULL); - assert(self->handler_finish_semaphore_ != NULL); - - while (true) { - if (WaitForSingleObject(self->handler_start_semaphore_, INFINITE) == - WAIT_OBJECT_0) { - // Perform the requested action. - if (self->is_shutdown_) { - // The instance of the exception handler is being destroyed. - break; - } else { - self->handler_return_value_ = - self->WriteMinidumpWithException(self->requesting_thread_id_, - self->exception_info_, - self->assertion_); - } - - // Allow the requesting thread to proceed. - ReleaseSemaphore(self->handler_finish_semaphore_, 1, NULL); - } - } - - // This statement is not reached when the thread is unconditionally - // terminated by the ExceptionHandler destructor. - return 0; -} - -// HandleException and HandleInvalidParameter must create an -// AutoExceptionHandler object to maintain static state and to determine which -// ExceptionHandler instance to use. The constructor locates the correct -// instance, and makes it available through get_handler(). The destructor -// restores the state in effect prior to allocating the AutoExceptionHandler. -class AutoExceptionHandler { - public: - AutoExceptionHandler() { - // Increment handler_stack_index_ so that if another Breakpad handler is - // registered using this same HandleException function, and it needs to be - // called while this handler is running (either becaause this handler - // declines to handle the exception, or an exception occurs during - // handling), HandleException will find the appropriate ExceptionHandler - // object in handler_stack_ to deliver the exception to. - // - // Because handler_stack_ is addressed in reverse (as |size - index|), - // preincrementing handler_stack_index_ avoids needing to subtract 1 from - // the argument to |at|. - // - // The index is maintained instead of popping elements off of the handler - // stack and pushing them at the end of this method. This avoids ruining - // the order of elements in the stack in the event that some other thread - // decides to manipulate the handler stack (such as creating a new - // ExceptionHandler object) while an exception is being handled. - EnterCriticalSection(&ExceptionHandler::handler_stack_critical_section_); - handler_ = ExceptionHandler::handler_stack_->at( - ExceptionHandler::handler_stack_->size() - - ++ExceptionHandler::handler_stack_index_); - LeaveCriticalSection(&ExceptionHandler::handler_stack_critical_section_); - - // In case another exception occurs while this handler is doing its thing, - // it should be delivered to the previous filter. - SetUnhandledExceptionFilter(handler_->previous_filter_); -#if _MSC_VER >= 1400 // MSVC 2005/8 - _set_invalid_parameter_handler(handler_->previous_iph_); -#endif // _MSC_VER >= 1400 - _set_purecall_handler(handler_->previous_pch_); - } - - ~AutoExceptionHandler() { - // Put things back the way they were before entering this handler. - SetUnhandledExceptionFilter(ExceptionHandler::HandleException); -#if _MSC_VER >= 1400 // MSVC 2005/8 - _set_invalid_parameter_handler(ExceptionHandler::HandleInvalidParameter); -#endif // _MSC_VER >= 1400 - _set_purecall_handler(ExceptionHandler::HandlePureVirtualCall); - - EnterCriticalSection(&ExceptionHandler::handler_stack_critical_section_); - --ExceptionHandler::handler_stack_index_; - LeaveCriticalSection(&ExceptionHandler::handler_stack_critical_section_); - } - - ExceptionHandler* get_handler() const { return handler_; } - - private: - ExceptionHandler* handler_; -}; - -// static -LONG ExceptionHandler::HandleException(EXCEPTION_POINTERS* exinfo) { - AutoExceptionHandler auto_exception_handler; - ExceptionHandler* current_handler = auto_exception_handler.get_handler(); - - // Ignore EXCEPTION_BREAKPOINT and EXCEPTION_SINGLE_STEP exceptions. This - // logic will short-circuit before calling WriteMinidumpOnHandlerThread, - // allowing something else to handle the breakpoint without incurring the - // overhead transitioning to and from the handler thread. This behavior - // can be overridden by calling ExceptionHandler::set_handle_debug_exceptions. - DWORD code = exinfo->ExceptionRecord->ExceptionCode; - LONG action; - bool is_debug_exception = (code == EXCEPTION_BREAKPOINT) || - (code == EXCEPTION_SINGLE_STEP); - - bool success = false; - - if (!is_debug_exception || - current_handler->get_handle_debug_exceptions()) { - // If out-of-proc crash handler client is available, we have to use that - // to generate dump and we cannot fall back on in-proc dump generation - // because we never prepared for an in-proc dump generation - - // In case of out-of-process dump generation, directly call - // WriteMinidumpWithException since there is no separate thread running. - if (current_handler->IsOutOfProcess()) { - success = current_handler->WriteMinidumpWithException( - GetCurrentThreadId(), - exinfo, - NULL); - } else { - success = current_handler->WriteMinidumpOnHandlerThread(exinfo, NULL); - } - } - - // The handler fully handled the exception. Returning - // EXCEPTION_EXECUTE_HANDLER indicates this to the system, and usually - // results in the application being terminated. - // - // Note: If the application was launched from within the Cygwin - // environment, returning EXCEPTION_EXECUTE_HANDLER seems to cause the - // application to be restarted. - if (success) { - action = EXCEPTION_EXECUTE_HANDLER; - } else { - // There was an exception, it was a breakpoint or something else ignored - // above, or it was passed to the handler, which decided not to handle it. - // This could be because the filter callback didn't want it, because - // minidump writing failed for some reason, or because the post-minidump - // callback function indicated failure. Give the previous handler a - // chance to do something with the exception. If there is no previous - // handler, return EXCEPTION_CONTINUE_SEARCH, which will allow a debugger - // or native "crashed" dialog to handle the exception. - if (current_handler->previous_filter_) { - action = current_handler->previous_filter_(exinfo); - } else { - action = EXCEPTION_CONTINUE_SEARCH; - } - } - - return action; -} - -#if _MSC_VER >= 1400 // MSVC 2005/8 -// static -void ExceptionHandler::HandleInvalidParameter(const wchar_t* expression, - const wchar_t* function, - const wchar_t* file, - unsigned int line, - uintptr_t reserved) { - // This is an invalid parameter, not an exception. It's safe to play with - // sprintf here. - AutoExceptionHandler auto_exception_handler; - ExceptionHandler* current_handler = auto_exception_handler.get_handler(); - - MDRawAssertionInfo assertion; - memset(&assertion, 0, sizeof(assertion)); - _snwprintf_s(reinterpret_cast(assertion.expression), - sizeof(assertion.expression) / sizeof(assertion.expression[0]), - _TRUNCATE, L"%s", expression); - _snwprintf_s(reinterpret_cast(assertion.function), - sizeof(assertion.function) / sizeof(assertion.function[0]), - _TRUNCATE, L"%s", function); - _snwprintf_s(reinterpret_cast(assertion.file), - sizeof(assertion.file) / sizeof(assertion.file[0]), - _TRUNCATE, L"%s", file); - assertion.line = line; - assertion.type = MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER; - - bool success = false; - // In case of out-of-process dump generation, directly call - // WriteMinidumpWithException since there is no separate thread running. - if (current_handler->IsOutOfProcess()) { - success = current_handler->WriteMinidumpWithException( - GetCurrentThreadId(), - NULL, - &assertion); - } else { - success = current_handler->WriteMinidumpOnHandlerThread(NULL, &assertion); - } - - if (!success) { - if (current_handler->previous_iph_) { - // The handler didn't fully handle the exception. Give it to the - // previous invalid parameter handler. - current_handler->previous_iph_(expression, - function, - file, - line, - reserved); - } else { - // If there's no previous handler, pass the exception back in to the - // invalid parameter handler's core. That's the routine that called this - // function, but now, since this function is no longer registered (and in - // fact, no function at all is registered), this will result in the - // default code path being taken: _CRT_DEBUGGER_HOOK and _invoke_watson. - // Use _invalid_parameter where it exists (in _DEBUG builds) as it passes - // more information through. In non-debug builds, it is not available, - // so fall back to using _invalid_parameter_noinfo. See invarg.c in the - // CRT source. -#ifdef _DEBUG - _invalid_parameter(expression, function, file, line, reserved); -#else // _DEBUG - _invalid_parameter_noinfo(); -#endif // _DEBUG - } - } - - // The handler either took care of the invalid parameter problem itself, - // or passed it on to another handler. "Swallow" it by exiting, paralleling - // the behavior of "swallowing" exceptions. - exit(0); -} -#endif // _MSC_VER >= 1400 - -// static -void ExceptionHandler::HandlePureVirtualCall() { - AutoExceptionHandler auto_exception_handler; - ExceptionHandler* current_handler = auto_exception_handler.get_handler(); - - MDRawAssertionInfo assertion; - memset(&assertion, 0, sizeof(assertion)); - assertion.type = MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL; - - bool success = false; - // In case of out-of-process dump generation, directly call - // WriteMinidumpWithException since there is no separate thread running. - - if (current_handler->IsOutOfProcess()) { - success = current_handler->WriteMinidumpWithException( - GetCurrentThreadId(), - NULL, - &assertion); - } else { - success = current_handler->WriteMinidumpOnHandlerThread(NULL, &assertion); - } - - if (!success) { - if (current_handler->previous_pch_) { - // The handler didn't fully handle the exception. Give it to the - // previous purecall handler. - current_handler->previous_pch_(); - } else { - // If there's no previous handler, return and let _purecall handle it. - // This will just put up an assertion dialog. - return; - } - } - - // The handler either took care of the invalid parameter problem itself, - // or passed it on to another handler. "Swallow" it by exiting, paralleling - // the behavior of "swallowing" exceptions. - exit(0); -} - -bool ExceptionHandler::WriteMinidumpOnHandlerThread( - EXCEPTION_POINTERS* exinfo, MDRawAssertionInfo* assertion) { - EnterCriticalSection(&handler_critical_section_); - - // There isn't much we can do if the handler thread - // was not successfully created. - if (handler_thread_ == NULL) { - LeaveCriticalSection(&handler_critical_section_); - return false; - } - - // The handler thread should only be created when the semaphores are valid. - assert(handler_start_semaphore_ != NULL); - assert(handler_finish_semaphore_ != NULL); - - // Set up data to be passed in to the handler thread. - requesting_thread_id_ = GetCurrentThreadId(); - exception_info_ = exinfo; - assertion_ = assertion; - - // This causes the handler thread to call WriteMinidumpWithException. - ReleaseSemaphore(handler_start_semaphore_, 1, NULL); - - // Wait until WriteMinidumpWithException is done and collect its return value. - WaitForSingleObject(handler_finish_semaphore_, INFINITE); - bool status = handler_return_value_; - - // Clean up. - requesting_thread_id_ = 0; - exception_info_ = NULL; - assertion_ = NULL; - - LeaveCriticalSection(&handler_critical_section_); - - return status; -} - -bool ExceptionHandler::WriteMinidump() { - return WriteMinidumpForException(NULL); -} - -bool ExceptionHandler::WriteMinidumpForException(EXCEPTION_POINTERS* exinfo) { - // In case of out-of-process dump generation, directly call - // WriteMinidumpWithException since there is no separate thread running. - if (IsOutOfProcess()) { - return WriteMinidumpWithException(GetCurrentThreadId(), - exinfo, - NULL); - } - - bool success = WriteMinidumpOnHandlerThread(exinfo, NULL); - UpdateNextID(); - return success; -} - -// static -bool ExceptionHandler::WriteMinidump(const wstring &dump_path, - MinidumpCallback callback, - void* callback_context) { - ExceptionHandler handler(dump_path, NULL, callback, callback_context, - HANDLER_NONE); - return handler.WriteMinidump(); -} - -bool ExceptionHandler::WriteMinidumpWithException( - DWORD requesting_thread_id, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion) { - // Give user code a chance to approve or prevent writing a minidump. If the - // filter returns false, don't handle the exception at all. If this method - // was called as a result of an exception, returning false will cause - // HandleException to call any previous handler or return - // EXCEPTION_CONTINUE_SEARCH on the exception thread, allowing it to appear - // as though this handler were not present at all. - if (filter_ && !filter_(callback_context_, exinfo, assertion)) { - return false; - } - - bool success = false; - if (IsOutOfProcess()) { - // Use the EXCEPTION_POINTERS overload for RequestDump if - // both exinfo and assertion are NULL. - if (!assertion) { - success = crash_generation_client_->RequestDump(exinfo); - } else { - success = crash_generation_client_->RequestDump(assertion); - } - } else { - if (minidump_write_dump_) { - HANDLE dump_file = CreateFile(next_minidump_path_c_, - GENERIC_WRITE, - 0, // no sharing - NULL, - CREATE_NEW, // fail if exists - FILE_ATTRIBUTE_NORMAL, - NULL); - if (dump_file != INVALID_HANDLE_VALUE) { - MINIDUMP_EXCEPTION_INFORMATION except_info; - except_info.ThreadId = requesting_thread_id; - except_info.ExceptionPointers = exinfo; - except_info.ClientPointers = FALSE; - - // Add an MDRawBreakpadInfo stream to the minidump, to provide additional - // information about the exception handler to the Breakpad processor. The - // information will help the processor determine which threads are - // relevant. The Breakpad processor does not require this information but - // can function better with Breakpad-generated dumps when it is present. - // The native debugger is not harmed by the presence of this information. - MDRawBreakpadInfo breakpad_info; - breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID | - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID; - breakpad_info.dump_thread_id = GetCurrentThreadId(); - breakpad_info.requesting_thread_id = requesting_thread_id; - - // Leave room in user_stream_array for a possible assertion info stream. - MINIDUMP_USER_STREAM user_stream_array[2]; - user_stream_array[0].Type = MD_BREAKPAD_INFO_STREAM; - user_stream_array[0].BufferSize = sizeof(breakpad_info); - user_stream_array[0].Buffer = &breakpad_info; - - MINIDUMP_USER_STREAM_INFORMATION user_streams; - user_streams.UserStreamCount = 1; - user_streams.UserStreamArray = user_stream_array; - - if (assertion) { - user_stream_array[1].Type = MD_ASSERTION_INFO_STREAM; - user_stream_array[1].BufferSize = sizeof(MDRawAssertionInfo); - user_stream_array[1].Buffer = assertion; - ++user_streams.UserStreamCount; - } - - // The explicit comparison to TRUE avoids a warning (C4800). - success = (minidump_write_dump_(GetCurrentProcess(), - GetCurrentProcessId(), - dump_file, - dump_type_, - exinfo ? &except_info : NULL, - &user_streams, - NULL) == TRUE); - - CloseHandle(dump_file); - } - } - } - - if (callback_) { - // TODO(munjal): In case of out-of-process dump generation, both - // dump_path_c_ and next_minidump_id_ will be NULL. For out-of-process - // scenario, the server process ends up creating the dump path and dump - // id so they are not known to the client. - success = callback_(dump_path_c_, next_minidump_id_c_, callback_context_, - exinfo, assertion, success); - } - - return success; -} - -void ExceptionHandler::UpdateNextID() { - assert(uuid_create_); - UUID id = {0}; - if (uuid_create_) { - uuid_create_(&id); - } - next_minidump_id_ = GUIDString::GUIDToWString(&id); - next_minidump_id_c_ = next_minidump_id_.c_str(); - - wchar_t minidump_path[MAX_PATH]; - swprintf(minidump_path, MAX_PATH, L"%s\\%s.dmp", - dump_path_c_, next_minidump_id_c_); - - // remove when VC++7.1 is no longer supported - minidump_path[MAX_PATH - 1] = L'\0'; - - next_minidump_path_ = minidump_path; - next_minidump_path_c_ = next_minidump_path_.c_str(); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.h b/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.h deleted file mode 100644 index 2cacdc38..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.h +++ /dev/null @@ -1,415 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// ExceptionHandler can write a minidump file when an exception occurs, -// or when WriteMinidump() is called explicitly by your program. -// -// To have the exception handler write minidumps when an uncaught exception -// (crash) occurs, you should create an instance early in the execution -// of your program, and keep it around for the entire time you want to -// have crash handling active (typically, until shutdown). -// -// If you want to write minidumps without installing the exception handler, -// you can create an ExceptionHandler with install_handler set to false, -// then call WriteMinidump. You can also use this technique if you want to -// use different minidump callbacks for different call sites. -// -// In either case, a callback function is called when a minidump is written, -// which receives the unqiue id of the minidump. The caller can use this -// id to collect and write additional application state, and to launch an -// external crash-reporting application. -// -// It is important that creation and destruction of ExceptionHandler objects -// be nested cleanly, when using install_handler = true. -// Avoid the following pattern: -// ExceptionHandler *e = new ExceptionHandler(...); -// ExceptionHandler *f = new ExceptionHandler(...); -// delete e; -// This will put the exception filter stack into an inconsistent state. - -#ifndef CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ -#define CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ - -#include -#include -#include -#include - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/crash_generation/crash_generation_client.h" -#include "google_breakpad/common/minidump_format.h" -#include "processor/scoped_ptr.h" - -namespace google_breakpad { - -using std::vector; -using std::wstring; - -class ExceptionHandler { - public: - // A callback function to run before Breakpad performs any substantial - // processing of an exception. A FilterCallback is called before writing - // a minidump. context is the parameter supplied by the user as - // callback_context when the handler was created. exinfo points to the - // exception record, if any; assertion points to assertion information, - // if any. - // - // If a FilterCallback returns true, Breakpad will continue processing, - // attempting to write a minidump. If a FilterCallback returns false, Breakpad - // will immediately report the exception as unhandled without writing a - // minidump, allowing another handler the opportunity to handle it. - typedef bool (*FilterCallback)(void* context, EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // A callback function to run after the minidump has been written. - // minidump_id is a unique id for the dump, so the minidump - // file is \.dmp. context is the parameter supplied - // by the user as callback_context when the handler was created. exinfo - // points to the exception record, or NULL if no exception occurred. - // succeeded indicates whether a minidump file was successfully written. - // assertion points to information about an assertion if the handler was - // invoked by an assertion. - // - // If an exception occurred and the callback returns true, Breakpad will treat - // the exception as fully-handled, suppressing any other handlers from being - // notified of the exception. If the callback returns false, Breakpad will - // treat the exception as unhandled, and allow another handler to handle it. - // If there are no other handlers, Breakpad will report the exception to the - // system as unhandled, allowing a debugger or native crash dialog the - // opportunity to handle the exception. Most callback implementations - // should normally return the value of |succeeded|, or when they wish to - // not report an exception of handled, false. Callbacks will rarely want to - // return true directly (unless |succeeded| is true). - // - // For out-of-process dump generation, dump path and minidump ID will always - // be NULL. In case of out-of-process dump generation, the dump path and - // minidump id are controlled by the server process and are not communicated - // back to the crashing process. - typedef bool (*MinidumpCallback)(const wchar_t* dump_path, - const wchar_t* minidump_id, - void* context, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion, - bool succeeded); - - // HandlerType specifies which types of handlers should be installed, if - // any. Use HANDLER_NONE for an ExceptionHandler that remains idle, - // without catching any failures on its own. This type of handler may - // still be triggered by calling WriteMinidump. Otherwise, use a - // combination of the other HANDLER_ values, or HANDLER_ALL to install - // all handlers. - enum HandlerType { - HANDLER_NONE = 0, - HANDLER_EXCEPTION = 1 << 0, // SetUnhandledExceptionFilter - HANDLER_INVALID_PARAMETER = 1 << 1, // _set_invalid_parameter_handler - HANDLER_PURECALL = 1 << 2, // _set_purecall_handler - HANDLER_ALL = HANDLER_EXCEPTION | - HANDLER_INVALID_PARAMETER | - HANDLER_PURECALL - }; - - // Creates a new ExceptionHandler instance to handle writing minidumps. - // Before writing a minidump, the optional filter callback will be called. - // Its return value determines whether or not Breakpad should write a - // minidump. Minidump files will be written to dump_path, and the optional - // callback is called after writing the dump file, as described above. - // handler_types specifies the types of handlers that should be installed. - ExceptionHandler(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types); - - // Creates a new ExcetpionHandler instance that can attempt to perform - // out-of-process dump generation if pipe_name is not NULL. If pipe_name is - // NULL, or if out-of-process dump generation registration step fails, - // in-process dump generation will be used. This also allows specifying - // the dump type to generate. - ExceptionHandler(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info); - - ~ExceptionHandler(); - - // Get and set the minidump path. - wstring dump_path() const { return dump_path_; } - void set_dump_path(const wstring &dump_path) { - dump_path_ = dump_path; - dump_path_c_ = dump_path_.c_str(); - UpdateNextID(); // Necessary to put dump_path_ in next_minidump_path_. - } - - // Writes a minidump immediately. This can be used to capture the - // execution state independently of a crash. Returns true on success. - bool WriteMinidump(); - - // Writes a minidump immediately, with the user-supplied exception - // information. - bool WriteMinidumpForException(EXCEPTION_POINTERS* exinfo); - - // Convenience form of WriteMinidump which does not require an - // ExceptionHandler instance. - static bool WriteMinidump(const wstring &dump_path, - MinidumpCallback callback, void* callback_context); - - // Get the thread ID of the thread requesting the dump (either the exception - // thread or any other thread that called WriteMinidump directly). This - // may be useful if you want to include additional thread state in your - // dumps. - DWORD get_requesting_thread_id() const { return requesting_thread_id_; } - - // Controls behavior of EXCEPTION_BREAKPOINT and EXCEPTION_SINGLE_STEP. - bool get_handle_debug_exceptions() const { return handle_debug_exceptions_; } - void set_handle_debug_exceptions(bool handle_debug_exceptions) { - handle_debug_exceptions_ = handle_debug_exceptions; - } - - // Returns whether out-of-process dump generation is used or not. - bool IsOutOfProcess() const { return crash_generation_client_.get() != NULL; } - - private: - friend class AutoExceptionHandler; - - // Initializes the instance with given values. - void Initialize(const wstring& dump_path, - FilterCallback filter, - MinidumpCallback callback, - void* callback_context, - int handler_types, - MINIDUMP_TYPE dump_type, - const wchar_t* pipe_name, - const CustomClientInfo* custom_info); - - // Function pointer type for MiniDumpWriteDump, which is looked up - // dynamically. - typedef BOOL (WINAPI *MiniDumpWriteDump_type)( - HANDLE hProcess, - DWORD dwPid, - HANDLE hFile, - MINIDUMP_TYPE DumpType, - CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam); - - // Function pointer type for UuidCreate, which is looked up dynamically. - typedef RPC_STATUS (RPC_ENTRY *UuidCreate_type)(UUID* Uuid); - - // Runs the main loop for the exception handler thread. - static DWORD WINAPI ExceptionHandlerThreadMain(void* lpParameter); - - // Called on the exception thread when an unhandled exception occurs. - // Signals the exception handler thread to handle the exception. - static LONG WINAPI HandleException(EXCEPTION_POINTERS* exinfo); - -#if _MSC_VER >= 1400 // MSVC 2005/8 - // This function will be called by some CRT functions when they detect - // that they were passed an invalid parameter. Note that in _DEBUG builds, - // the CRT may display an assertion dialog before calling this function, - // and the function will not be called unless the assertion dialog is - // dismissed by clicking "Ignore." - static void HandleInvalidParameter(const wchar_t* expression, - const wchar_t* function, - const wchar_t* file, - unsigned int line, - uintptr_t reserved); -#endif // _MSC_VER >= 1400 - - // This function will be called by the CRT when a pure virtual - // function is called. - static void HandlePureVirtualCall(); - - // This is called on the exception thread or on another thread that - // the user wishes to produce a dump from. It calls - // WriteMinidumpWithException on the handler thread, avoiding stack - // overflows and inconsistent dumps due to writing the dump from - // the exception thread. If the dump is requested as a result of an - // exception, exinfo contains exception information, otherwise, it - // is NULL. If the dump is requested as a result of an assertion - // (such as an invalid parameter being passed to a CRT function), - // assertion contains data about the assertion, otherwise, it is NULL. - bool WriteMinidumpOnHandlerThread(EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // This function does the actual writing of a minidump. It is called - // on the handler thread. requesting_thread_id is the ID of the thread - // that requested the dump. If the dump is requested as a result of - // an exception, exinfo contains exception information, otherwise, - // it is NULL. - bool WriteMinidumpWithException(DWORD requesting_thread_id, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion); - - // Generates a new ID and stores it in next_minidump_id_, and stores the - // path of the next minidump to be written in next_minidump_path_. - void UpdateNextID(); - - FilterCallback filter_; - MinidumpCallback callback_; - void* callback_context_; - - scoped_ptr crash_generation_client_; - - // The directory in which a minidump will be written, set by the dump_path - // argument to the constructor, or set_dump_path. - wstring dump_path_; - - // The basename of the next minidump to be written, without the extension. - wstring next_minidump_id_; - - // The full pathname of the next minidump to be written, including the file - // extension. - wstring next_minidump_path_; - - // Pointers to C-string representations of the above. These are set when - // the above wstring versions are set in order to avoid calling c_str during - // an exception, as c_str may attempt to allocate heap memory. These - // pointers are not owned by the ExceptionHandler object, but their lifetimes - // should be equivalent to the lifetimes of the associated wstring, provided - // that the wstrings are not altered. - const wchar_t* dump_path_c_; - const wchar_t* next_minidump_id_c_; - const wchar_t* next_minidump_path_c_; - - HMODULE dbghelp_module_; - MiniDumpWriteDump_type minidump_write_dump_; - MINIDUMP_TYPE dump_type_; - - HMODULE rpcrt4_module_; - UuidCreate_type uuid_create_; - - // Tracks the handler types that were installed according to the - // handler_types constructor argument. - int handler_types_; - - // When installed_handler_ is true, previous_filter_ is the unhandled - // exception filter that was set prior to installing ExceptionHandler as - // the unhandled exception filter and pointing it to |this|. NULL indicates - // that there is no previous unhandled exception filter. - LPTOP_LEVEL_EXCEPTION_FILTER previous_filter_; - -#if _MSC_VER >= 1400 // MSVC 2005/8 - // Beginning in VC 8, the CRT provides an invalid parameter handler that will - // be called when some CRT functions are passed invalid parameters. In - // earlier CRTs, the same conditions would cause unexpected behavior or - // crashes. - _invalid_parameter_handler previous_iph_; -#endif // _MSC_VER >= 1400 - - // The CRT allows you to override the default handler for pure - // virtual function calls. - _purecall_handler previous_pch_; - - // The exception handler thread. - HANDLE handler_thread_; - - // True if the exception handler is being destroyed. - // Starting with MSVC 2005, Visual C has stronger guarantees on volatile vars. - // It has release semantics on write and acquire semantics on reads. - // See the msdn documentation. - volatile bool is_shutdown_; - - // The critical section enforcing the requirement that only one exception be - // handled by a handler at a time. - CRITICAL_SECTION handler_critical_section_; - - // Semaphores used to move exception handling between the exception thread - // and the handler thread. handler_start_semaphore_ is signalled by the - // exception thread to wake up the handler thread when an exception occurs. - // handler_finish_semaphore_ is signalled by the handler thread to wake up - // the exception thread when handling is complete. - HANDLE handler_start_semaphore_; - HANDLE handler_finish_semaphore_; - - // The next 2 fields contain data passed from the requesting thread to - // the handler thread. - - // The thread ID of the thread requesting the dump (either the exception - // thread or any other thread that called WriteMinidump directly). - DWORD requesting_thread_id_; - - // The exception info passed to the exception handler on the exception - // thread, if an exception occurred. NULL for user-requested dumps. - EXCEPTION_POINTERS* exception_info_; - - // If the handler is invoked due to an assertion, this will contain a - // pointer to the assertion information. It is NULL at other times. - MDRawAssertionInfo* assertion_; - - // The return value of the handler, passed from the handler thread back to - // the requesting thread. - bool handler_return_value_; - - // If true, the handler will intercept EXCEPTION_BREAKPOINT and - // EXCEPTION_SINGLE_STEP exceptions. Leave this false (the default) - // to not interfere with debuggers. - bool handle_debug_exceptions_; - - // A stack of ExceptionHandler objects that have installed unhandled - // exception filters. This vector is used by HandleException to determine - // which ExceptionHandler object to route an exception to. When an - // ExceptionHandler is created with install_handler true, it will append - // itself to this list. - static vector* handler_stack_; - - // The index of the ExceptionHandler in handler_stack_ that will handle the - // next exception. Note that 0 means the last entry in handler_stack_, 1 - // means the next-to-last entry, and so on. This is used by HandleException - // to support multiple stacked Breakpad handlers. - static LONG handler_stack_index_; - - // handler_stack_critical_section_ guards operations on handler_stack_ and - // handler_stack_index_. The critical section is initialized by the - // first instance of the class and destroyed by the last instance of it. - static CRITICAL_SECTION handler_stack_critical_section_; - - // The number of instances of this class. - volatile static LONG instance_count_; - - // disallow copy ctor and operator= - explicit ExceptionHandler(const ExceptionHandler &); - void operator=(const ExceptionHandler &); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // CLIENT_WINDOWS_HANDLER_EXCEPTION_HANDLER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.vcproj b/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.vcproj deleted file mode 100644 index 4e0401c6..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/handler/exception_handler.vcproj +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.cc b/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.cc deleted file mode 100644 index 7672acfd..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.cc +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include - -#include "client/windows/sender/crash_report_sender.h" -#include "common/windows/http_upload.h" - -#if _MSC_VER < 1400 // MSVC 2005/8 -// Older MSVC doesn't have fscanf_s, but they are compatible as long as -// we don't use the string conversions (%s/%c/%S/%C). -#define fscanf_s fscanf -#endif - -namespace google_breakpad { - -static const char kCheckpointSignature[] = "GBP1\n"; - -CrashReportSender::CrashReportSender(const wstring &checkpoint_file) - : checkpoint_file_(checkpoint_file), - max_reports_per_day_(-1), - last_sent_date_(-1), - reports_sent_(0) { - FILE *fd; - if (OpenCheckpointFile(L"r", &fd) == 0) { - ReadCheckpoint(fd); - fclose(fd); - } -} - -ReportResult CrashReportSender::SendCrashReport( - const wstring &url, const map ¶meters, - const wstring &dump_file_name, wstring *report_code) { - int today = GetCurrentDate(); - if (today == last_sent_date_ && - max_reports_per_day_ != -1 && - reports_sent_ >= max_reports_per_day_) { - return RESULT_THROTTLED; - } - - int http_response = 0; - bool result = HTTPUpload::SendRequest( - url, parameters, dump_file_name, L"upload_file_minidump", report_code, - &http_response); - - if (result) { - ReportSent(today); - return RESULT_SUCCEEDED; - } else if (http_response == 400) { // TODO: update if/when the server - // switches to a different code - return RESULT_REJECTED; - } else { - return RESULT_FAILED; - } -} - -void CrashReportSender::ReadCheckpoint(FILE *fd) { - char buf[128]; - if (!fgets(buf, sizeof(buf), fd) || - strcmp(buf, kCheckpointSignature) != 0) { - return; - } - - if (fscanf_s(fd, "%d\n", &last_sent_date_) != 1) { - last_sent_date_ = -1; - return; - } - if (fscanf_s(fd, "%d\n", &reports_sent_) != 1) { - reports_sent_ = 0; - return; - } -} - -void CrashReportSender::ReportSent(int today) { - // Update the report stats - if (today != last_sent_date_) { - last_sent_date_ = today; - reports_sent_ = 0; - } - ++reports_sent_; - - // Update the checkpoint file - FILE *fd; - if (OpenCheckpointFile(L"w", &fd) == 0) { - fputs(kCheckpointSignature, fd); - fprintf(fd, "%d\n", last_sent_date_); - fprintf(fd, "%d\n", reports_sent_); - fclose(fd); - } -} - -int CrashReportSender::GetCurrentDate() const { - SYSTEMTIME system_time; - GetSystemTime(&system_time); - return (system_time.wYear * 10000) + (system_time.wMonth * 100) + - system_time.wDay; -} - -int CrashReportSender::OpenCheckpointFile(const wchar_t *mode, FILE **fd) { - if (checkpoint_file_.empty()) { - return ENOENT; - } -#if _MSC_VER >= 1400 // MSVC 2005/8 - return _wfopen_s(fd, checkpoint_file_.c_str(), mode); -#else - *fd = _wfopen(checkpoint_file_.c_str(), mode); - if (*fd == NULL) { - return errno; - } - return 0; -#endif -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.h b/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.h deleted file mode 100644 index da1ed0af..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ -#define CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ - -// CrashReportSender is a "static" class which provides an API to upload -// crash reports via HTTP(S). A crash report is formatted as a multipart POST -// request, which contains a set of caller-supplied string key/value pairs, -// and a minidump file to upload. -// -// To use this library in your project, you will need to link against -// wininet.lib. - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -namespace google_breakpad { - -using std::wstring; -using std::map; - -typedef enum { - RESULT_FAILED = 0, // Failed to communicate with the server; try later. - RESULT_REJECTED, // Successfully sent the crash report, but the - // server rejected it; don't resend this report. - RESULT_SUCCEEDED, // The server accepted the crash report. - RESULT_THROTTLED // No attempt was made to send the crash report, because - // we exceeded the maximum reports per day. -} ReportResult; - -class CrashReportSender { - public: - // Initializes a CrashReportSender instance. - // If checkpoint_file is non-empty, breakpad will persist crash report - // state to this file. A checkpoint file is required for - // set_max_reports_per_day() to function properly. - explicit CrashReportSender(const wstring &checkpoint_file); - ~CrashReportSender() {} - - // Sets the maximum number of crash reports that will be sent in a 24-hour - // period. This uses the state persisted to the checkpoint file. - // The default value of -1 means that there is no limit on reports sent. - void set_max_reports_per_day(int reports) { - max_reports_per_day_ = reports; - } - - int max_reports_per_day() const { return max_reports_per_day_; } - - // Sends the specified minidump file, along with the map of - // name value pairs, as a multipart POST request to the given URL. - // Parameter names must contain only printable ASCII characters, - // and may not contain a quote (") character. - // Only HTTP(S) URLs are currently supported. The return value indicates - // the result of the operation (see above for possible results). - // If report_code is non-NULL and the report is sent successfully (that is, - // the return value is RESULT_SUCCEEDED), a code uniquely identifying the - // report will be returned in report_code. - // (Otherwise, report_code will be unchanged.) - ReportResult SendCrashReport(const wstring &url, - const map ¶meters, - const wstring &dump_file_name, - wstring *report_code); - - private: - // Reads persistent state from a checkpoint file. - void ReadCheckpoint(FILE *fd); - - // Called when a new report has been sent, to update the checkpoint state. - void ReportSent(int today); - - // Returns today's date (UTC) formatted as YYYYMMDD. - int GetCurrentDate() const; - - // Opens the checkpoint file with the specified mode. - // Returns zero on success, or an error code on failure. - int OpenCheckpointFile(const wchar_t *mode, FILE **fd); - - wstring checkpoint_file_; - int max_reports_per_day_; - // The last date on which we sent a report, expressed as YYYYMMDD. - int last_sent_date_; - // Number of reports sent on last_sent_date_ - int reports_sent_; - - // Disallow copy constructor and operator= - explicit CrashReportSender(const CrashReportSender &); - void operator=(const CrashReportSender &); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // CLIENT_WINDOWS_SENDER_CRASH_REPORT_SENDER_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.vcproj b/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.vcproj deleted file mode 100644 index 8c50b445..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/sender/crash_report_sender.vcproj +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.cc b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.cc deleted file mode 100644 index f71addfb..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.cc +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "precompile.h" - -namespace google_breakpad { - -Base::Base(Derived* derived) - : derived_(derived) { -} - -Base::~Base() { - derived_->DoSomething(); -} - -#pragma warning(push) -#pragma warning(disable:4355) -// Disable warning C4355: 'this' : used in base member initializer list. -Derived::Derived() - : Base(this) { // C4355 -} -#pragma warning(pop) - -void Derived::DoSomething() { -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.h b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.h deleted file mode 100644 index e3f2a4f3..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/abstract_class.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_ABSTRACT_CLASS_H__ -#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_ABSTRACT_CLASS_H__ - -namespace google_breakpad { - -// Dummy classes to help generate a pure call violation. - -class Derived; - -class Base { - public: - Base(Derived* derived); - virtual ~Base(); - virtual void DoSomething() = 0; - - private: - Derived* derived_; -}; - -class Derived : public Base { - public: - Derived(); - virtual void DoSomething(); -}; - -} // namespace google_breakpad - -#endif // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.cc b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.cc deleted file mode 100644 index a3c560bd..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.cc +++ /dev/null @@ -1,510 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// crash_generation_app.cpp : Defines the entry point for the application. -// - -#include "precompile.h" - -namespace google_breakpad { - -const int kMaxLoadString = 100; -const wchar_t kPipeName[] = L"\\\\.\\pipe\\BreakpadCrashServices\\TestServer"; - -const DWORD kEditBoxStyles = WS_CHILD | - WS_VISIBLE | - WS_VSCROLL | - ES_LEFT | - ES_MULTILINE | - ES_AUTOVSCROLL | - ES_READONLY; - -// Maximum length of a line in the edit box. -const size_t kMaximumLineLength = 256; - -// CS to access edit control in a thread safe way. -static CRITICAL_SECTION* cs_edit = NULL; - -// Edit control. -static HWND client_status_edit_box; - -HINSTANCE current_instance; // Current instance. -TCHAR title[kMaxLoadString]; // Title bar text. -TCHAR window_class[kMaxLoadString]; // Main window class name. - -ATOM MyRegisterClass(HINSTANCE instance); -BOOL InitInstance(HINSTANCE, int); -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); - -static int kCustomInfoCount = 2; -static CustomInfoEntry kCustomInfoEntries[] = { - CustomInfoEntry(L"prod", L"CrashTestApp"), - CustomInfoEntry(L"ver", L"1.0"), -}; - -static ExceptionHandler* handler = NULL; -static CrashGenerationServer* crash_server = NULL; - -// Registers the window class. -// -// This function and its usage are only necessary if you want this code -// to be compatible with Win32 systems prior to the 'RegisterClassEx' -// function that was added to Windows 95. It is important to call this -// function so that the application will get 'well formed' small icons -// associated with it. -ATOM MyRegisterClass(HINSTANCE instance) { - WNDCLASSEX wcex; - wcex.cbSize = sizeof(WNDCLASSEX); - wcex.style = CS_HREDRAW | CS_VREDRAW; - wcex.lpfnWndProc = WndProc; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = instance; - wcex.hIcon = LoadIcon(instance, - MAKEINTRESOURCE(IDI_CRASHGENERATIONAPP)); - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); - wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_CRASHGENERATIONAPP); - wcex.lpszClassName = window_class; - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); - - return RegisterClassEx(&wcex); -} - -// Saves instance handle and creates main window -// -// In this function, we save the instance handle in a global variable and -// create and display the main program window. -BOOL InitInstance(HINSTANCE instance, int command_show) { - current_instance = instance; - HWND wnd = CreateWindow(window_class, - title, - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, - 0, - CW_USEDEFAULT, - 0, - NULL, - NULL, - instance, - NULL); - - if (!wnd) { - return FALSE; - } - - ShowWindow(wnd, command_show); - UpdateWindow(wnd); - - return TRUE; -} - -static void AppendTextToEditBox(TCHAR* text) { - EnterCriticalSection(cs_edit); - SYSTEMTIME current_time; - GetLocalTime(¤t_time); - TCHAR line[kMaximumLineLength]; - int result = swprintf_s(line, - kMaximumLineLength, - L"[%.2d-%.2d-%.4d %.2d:%.2d:%.2d] %s", - current_time.wMonth, - current_time.wDay, - current_time.wYear, - current_time.wHour, - current_time.wMinute, - current_time.wSecond, - text); - - if (result == -1) { - return; - } - - int length = GetWindowTextLength(client_status_edit_box); - SendMessage(client_status_edit_box, - EM_SETSEL, - (WPARAM)length, - (LPARAM)length); - SendMessage(client_status_edit_box, - EM_REPLACESEL, - (WPARAM)FALSE, - (LPARAM)line); - LeaveCriticalSection(cs_edit); -} - -static DWORD WINAPI AppendTextWorker(void* context) { - TCHAR* text = reinterpret_cast(context); - - AppendTextToEditBox(text); - delete[] text; - - return 0; -} - -bool ShowDumpResults(const wchar_t* dump_path, - const wchar_t* minidump_id, - void* context, - EXCEPTION_POINTERS* exinfo, - MDRawAssertionInfo* assertion, - bool succeeded) { - TCHAR* text = new TCHAR[kMaximumLineLength]; - text[0] = _T('\0'); - int result = swprintf_s(text, - kMaximumLineLength, - TEXT("Dump generation request %s\r\n"), - succeeded ? TEXT("succeeded") : TEXT("failed")); - if (result == -1) { - delete [] text; - } - - AppendTextWorker(text); - return succeeded; -} - -static void _cdecl ShowClientConnected(void* context, - const ClientInfo* client_info) { - TCHAR* line = new TCHAR[kMaximumLineLength]; - line[0] = _T('\0'); - int result = swprintf_s(line, - kMaximumLineLength, - L"Client connected:\t\t%d\r\n", - client_info->pid()); - - if (result == -1) { - delete[] line; - return; - } - - QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT); -} - -static void _cdecl ShowClientCrashed(void* context, - const ClientInfo* client_info, - const wstring* dump_path) { - TCHAR* line = new TCHAR[kMaximumLineLength]; - line[0] = _T('\0'); - int result = swprintf_s(line, - kMaximumLineLength, - TEXT("Client requested dump:\t%d\r\n"), - client_info->pid()); - - if (result == -1) { - delete[] line; - return; - } - - QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT); - - CustomClientInfo custom_info = client_info->GetCustomInfo(); - if (custom_info.count <= 0) { - return; - } - - wstring str_line; - for (int i = 0; i < custom_info.count; ++i) { - if (i > 0) { - str_line += L", "; - } - str_line += custom_info.entries[i].name; - str_line += L": "; - str_line += custom_info.entries[i].value; - } - - line = new TCHAR[kMaximumLineLength]; - line[0] = _T('\0'); - result = swprintf_s(line, - kMaximumLineLength, - L"%s\n", - str_line.c_str()); - if (result == -1) { - delete[] line; - return; - } - QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT); -} - -static void _cdecl ShowClientExited(void* context, - const ClientInfo* client_info) { - TCHAR* line = new TCHAR[kMaximumLineLength]; - line[0] = _T('\0'); - int result = swprintf_s(line, - kMaximumLineLength, - TEXT("Client exited:\t\t%d\r\n"), - client_info->pid()); - - if (result == -1) { - delete[] line; - return; - } - - QueueUserWorkItem(AppendTextWorker, line, WT_EXECUTEDEFAULT); -} - -void CrashServerStart() { - // Do not create another instance of the server. - if (crash_server) { - return; - } - - std::wstring dump_path = L"C:\\Dumps\\"; - crash_server = new CrashGenerationServer(kPipeName, - NULL, - ShowClientConnected, - NULL, - ShowClientCrashed, - NULL, - ShowClientExited, - NULL, - true, - &dump_path); - - if (!crash_server->Start()) { - MessageBoxW(NULL, L"Unable to start server", L"Dumper", MB_OK); - delete crash_server; - crash_server = NULL; - } -} - -void CrashServerStop() { - delete crash_server; - crash_server = NULL; -} - -void DerefZeroCrash() { - int* x = 0; - *x = 1; -} - -void InvalidParamCrash() { - printf(NULL); -} - -void PureCallCrash() { - Derived derived; -} - -void RequestDump() { - if (!handler->WriteMinidump()) { - MessageBoxW(NULL, L"Dump request failed", L"Dumper", MB_OK); - } - kCustomInfoEntries[1].set_value(L"1.1"); -} - -void CleanUp() { - if (cs_edit) { - DeleteCriticalSection(cs_edit); - delete cs_edit; - } - - if (handler) { - delete handler; - } - - if (crash_server) { - delete crash_server; - } -} - -// Processes messages for the main window. -// -// WM_COMMAND - process the application menu. -// WM_PAINT - Paint the main window. -// WM_DESTROY - post a quit message and return. -LRESULT CALLBACK WndProc(HWND wnd, - UINT message, - WPARAM w_param, - LPARAM l_param) { - int message_id; - int message_event; - PAINTSTRUCT ps; - HDC hdc; - -#pragma warning(push) -#pragma warning(disable:4312) - // Disable warning C4312: 'type cast' : conversion from 'LONG' to - // 'HINSTANCE' of greater size. - // The value returned by GetwindowLong in the case below returns unsigned. - HINSTANCE instance = (HINSTANCE)GetWindowLong(wnd, GWL_HINSTANCE); -#pragma warning(pop) - - switch (message) { - case WM_COMMAND: - // Parse the menu selections. - message_id = LOWORD(w_param); - message_event = HIWORD(w_param); - switch (message_id) { - case IDM_ABOUT: - DialogBox(current_instance, - MAKEINTRESOURCE(IDD_ABOUTBOX), - wnd, - About); - break; - case IDM_EXIT: - DestroyWindow(wnd); - break; - case ID_SERVER_START: - CrashServerStart(); - break; - case ID_SERVER_STOP: - CrashServerStop(); - break; - case ID_CLIENT_DEREFZERO: - DerefZeroCrash(); - break; - case ID_CLIENT_INVALIDPARAM: - InvalidParamCrash(); - break; - case ID_CLIENT_PURECALL: - PureCallCrash(); - break; - case ID_CLIENT_REQUESTEXPLICITDUMP: - RequestDump(); - break; - default: - return DefWindowProc(wnd, message, w_param, l_param); - } - break; - case WM_CREATE: - client_status_edit_box = CreateWindow(TEXT("EDIT"), - NULL, - kEditBoxStyles, - 0, - 0, - 0, - 0, - wnd, - NULL, - instance, - NULL); - break; - case WM_SIZE: - // Make the edit control the size of the window's client area. - MoveWindow(client_status_edit_box, - 0, - 0, - LOWORD(l_param), // width of client area. - HIWORD(l_param), // height of client area. - TRUE); // repaint window. - break; - case WM_SETFOCUS: - SetFocus(client_status_edit_box); - break; - case WM_PAINT: - hdc = BeginPaint(wnd, &ps); - EndPaint(wnd, &ps); - break; - case WM_DESTROY: - CleanUp(); - PostQuitMessage(0); - break; - default: - return DefWindowProc(wnd, message, w_param, l_param); - } - - return 0; -} - -// Message handler for about box. -INT_PTR CALLBACK About(HWND dlg, - UINT message, - WPARAM w_param, - LPARAM l_param) { - UNREFERENCED_PARAMETER(l_param); - switch (message) { - case WM_INITDIALOG: - return (INT_PTR)TRUE; - - case WM_COMMAND: - if (LOWORD(w_param) == IDOK || LOWORD(w_param) == IDCANCEL) { - EndDialog(dlg, LOWORD(w_param)); - return (INT_PTR)TRUE; - } - break; - } - - return (INT_PTR)FALSE; -} - -} // namespace google_breakpad - -int APIENTRY _tWinMain(HINSTANCE instance, - HINSTANCE previous_instance, - LPTSTR command_line, - int command_show) { - using namespace google_breakpad; - - UNREFERENCED_PARAMETER(previous_instance); - UNREFERENCED_PARAMETER(command_line); - - cs_edit = new CRITICAL_SECTION(); - InitializeCriticalSection(cs_edit); - - CustomClientInfo custom_info = {kCustomInfoEntries, kCustomInfoCount}; - - // This is needed for CRT to not show dialog for invalid param - // failures and instead let the code handle it. - _CrtSetReportMode(_CRT_ASSERT, 0); - handler = new ExceptionHandler(L"C:\\dumps\\", - NULL, - google_breakpad::ShowDumpResults, - NULL, - ExceptionHandler::HANDLER_ALL, - MiniDumpNormal, - kPipeName, - &custom_info); - - // Initialize global strings. - LoadString(instance, IDS_APP_TITLE, title, kMaxLoadString); - LoadString(instance, - IDC_CRASHGENERATIONAPP, - window_class, - kMaxLoadString); - MyRegisterClass(instance); - - // Perform application initialization. - if (!InitInstance (instance, command_show)) { - return FALSE; - } - - HACCEL accel_table = LoadAccelerators( - instance, - MAKEINTRESOURCE(IDC_CRASHGENERATIONAPP)); - - // Main message loop. - MSG msg; - while (GetMessage(&msg, NULL, 0, 0)) { - if (!TranslateAccelerator(msg.hwnd, accel_table, &msg)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - return (int)msg.wParam; -} - diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.h b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.h deleted file mode 100644 index 4d3bb6eb..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__ -#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__ - -#include "resource.h" - -#endif // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_CRASH_GENERATION_APP_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.ico b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/crash_generation_app.ico deleted file mode 100644 index d551aa3aaf80adf9b7760e2eb8de95a5c3e53df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23558 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.cc b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.cc deleted file mode 100644 index 9d2173cc..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// precompile.cpp : source file that includes just the standard includes -// CrashGenerationApp.pch will be the pre-compiled header -// precompile.obj will contain the pre-compiled type information - -#include "precompile.h" - -// Reference any additional headers you need in PRECOMPILE.H -// and not in this file. diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.h b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.h deleted file mode 100644 index 1ade4451..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/precompile.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// PreCompile.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_PRECOMPILE_H__ -#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_PRECOMPILE_H__ - -// Modify the following defines if you have to target a platform prior to -// the ones specified below. Refer to MSDN for the latest info on -// corresponding values for different platforms. - -// Allow use of features specific to Windows XP or later. -#ifndef WINVER -// Change this to the appropriate value to target other versions of Windows. -#define WINVER 0x0501 -#endif - -// Allow use of features specific to Windows XP or later. -#ifndef _WIN32_WINNT -// Change this to the appropriate value to target other versions of Windows. -#define _WIN32_WINNT 0x0501 -#endif - -// Allow use of features specific to Windows 98 or later. -#ifndef _WIN32_WINDOWS -// Change this to the appropriate value to target Windows Me or later. -#define _WIN32_WINDOWS 0x0410 -#endif - -// Allow use of features specific to IE 6.0 or later. -#ifndef _WIN32_IE -// Change this to the appropriate value to target other versions of IE. -#define _WIN32_IE 0x0600 -#endif - -// Exclude rarely-used stuff from Windows headers -#define WIN32_LEAN_AND_MEAN - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "client/windows/common/ipc_protocol.h" -#include "client/windows/crash_generation/client_info.h" -#include "client/windows/crash_generation/crash_generation_client.h" -#include "client/windows/crash_generation/crash_generation_server.h" -#include "client/windows/crash_generation/minidump_generator.h" -#include "client/windows/handler/exception_handler.h" -#include "client/windows/tests/crash_generation_app/abstract_class.h" -#include "client/windows/tests/crash_generation_app/crash_generation_app.h" -#include "google_breakpad/common/minidump_format.h" - -#endif // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_PRECOMPILE_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/resource.h b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/resource.h deleted file mode 100644 index 8c7f6570..00000000 --- a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/resource.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2008, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// PreCompile.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#ifndef CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__ -#define CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__ - -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by crash_generation_app.rc -// -#define IDC_MYICON 2 -#define IDD_CRASHGENERATIONAPP_DIALOG 102 -#define IDS_APP_TITLE 103 -#define IDD_ABOUTBOX 103 -#define IDM_ABOUT 104 -#define IDM_EXIT 105 -#define IDI_CRASHGENERATIONAPP 107 -#define IDI_SMALL 108 -#define IDC_CRASHGENERATIONAPP 109 -#define IDR_MAINFRAME 128 -#define ID_SERVER_START 32771 -#define ID_SERVER_STOP 32772 -#define ID_CLIENT_INVALIDPARAM 32773 -#define ID_CLIENT_ASSERTFAILURE 32774 -#define ID_CLIENT_DEREFZERO 32775 -#define ID_CLIENT_PURECALL 32777 -#define ID_CLIENT_REQUESTEXPLICITDUMP 32778 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NO_MFC 1 -#define _APS_NEXT_RESOURCE_VALUE 129 -#define _APS_NEXT_COMMAND_VALUE 32780 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 110 -#endif -#endif - -#endif // CLIENT_WINDOWS_TESTS_CRASH_GENERATION_APP_RESOURCE_H__ diff --git a/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/small.ico b/thirdparty/google-breakpad/r318/src/client/windows/tests/crash_generation_app/small.ico deleted file mode 100644 index d551aa3aaf80adf9b7760e2eb8de95a5c3e53df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23558 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 -#endif - -static const int halfShift = 10; /* used for shifting by 10 bits */ - -static const UTF32 halfBase = 0x0010000UL; -static const UTF32 halfMask = 0x3FFUL; - -#define UNI_SUR_HIGH_START (UTF32)0xD800 -#define UNI_SUR_HIGH_END (UTF32)0xDBFF -#define UNI_SUR_LOW_START (UTF32)0xDC00 -#define UNI_SUR_LOW_END (UTF32)0xDFFF -#define false 0 -#define true 1 - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF32toUTF16 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF32* source = *sourceStart; - UTF16* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - if (target >= targetEnd) { - result = targetExhausted; break; - } - ch = *source++; - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = (UTF16)ch; /* normal case */ - } - } else if (ch > UNI_MAX_LEGAL_UTF32) { - if (flags == strictConversion) { - result = sourceIllegal; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - if (target + 1 >= targetEnd) { - --source; /* Back up source pointer! */ - result = targetExhausted; break; - } - ch -= halfBase; - *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); - *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); - } - } -*sourceStart = source; -*targetStart = target; -return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF16toUTF32 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF16* source = *sourceStart; - UTF32* target = *targetStart; - UTF32 ch, ch2; - while (source < sourceEnd) { - const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ - ch = *source++; - /* If we have a surrogate pair, convert to UTF32 first. */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { - /* If the 16 bits following the high surrogate are in the source buffer... */ - if (source < sourceEnd) { - ch2 = *source; - /* If it's a low surrogate, convert to UTF32. */ - if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { - ch = ((ch - UNI_SUR_HIGH_START) << halfShift) - + (ch2 - UNI_SUR_LOW_START) + halfBase; - ++source; - } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } else { /* We don't have the 16 bits following the high surrogate. */ - --source; /* return to the high surrogate */ - result = sourceExhausted; - break; - } - } else if (flags == strictConversion) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - if (target >= targetEnd) { - source = oldSource; /* Back up source pointer! */ - result = targetExhausted; break; - } - *target++ = ch; - } - *sourceStart = source; - *targetStart = target; -#ifdef CVTUTF_DEBUG - if (result == sourceIllegal) { - fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2); - fflush(stderr); - } -#endif - return result; -} - -/* --------------------------------------------------------------------- */ - -/* - * Index into the table below with the first byte of a UTF-8 sequence to - * get the number of trailing bytes that are supposed to follow it. - * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is - * left as-is for anyone who may want to do such conversion, which was - * allowed in earlier algorithms. - */ -static const char trailingBytesForUTF8[256] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 -}; - -/* - * Magic values subtracted from a buffer value during UTF8 conversion. - * This table contains as many values as there might be trailing bytes - * in a UTF-8 sequence. - */ -static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, - 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; - -/* - * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed - * into the first byte, depending on how many bytes follow. There are - * as many entries in this table as there are UTF-8 sequence types. - * (I.e., one byte sequence, two byte... etc.). Remember that sequencs - * for *legal* UTF-8 will be 4 or fewer bytes total. - */ -static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - -/* --------------------------------------------------------------------- */ - -/* The interface converts a whole buffer to avoid function-call overhead. -* Constants have been gathered. Loops & conditionals have been removed as -* much as possible for efficiency, in favor of drop-through switches. -* (See "Note A" at the bottom of the file for equivalent code.) -* If your compiler supports it, the "isLegalUTF8" call can be turned -* into an inline function. -*/ - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF16toUTF8 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF16* source = *sourceStart; - UTF8* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - unsigned short bytesToWrite = 0; - const UTF32 byteMask = 0xBF; - const UTF32 byteMark = 0x80; - const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ - ch = *source++; - /* If we have a surrogate pair, convert to UTF32 first. */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { - /* If the 16 bits following the high surrogate are in the source buffer... */ - if (source < sourceEnd) { - UTF32 ch2 = *source; - /* If it's a low surrogate, convert to UTF32. */ - if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { - ch = ((ch - UNI_SUR_HIGH_START) << halfShift) - + (ch2 - UNI_SUR_LOW_START) + halfBase; - ++source; - } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } else { /* We don't have the 16 bits following the high surrogate. */ - --source; /* return to the high surrogate */ - result = sourceExhausted; - break; - } - } else if (flags == strictConversion) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - /* Figure out how many bytes the result will require */ - if (ch < (UTF32)0x80) { bytesToWrite = 1; - } else if (ch < (UTF32)0x800) { bytesToWrite = 2; - } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; - } else if (ch < (UTF32)0x110000) { bytesToWrite = 4; - } else { bytesToWrite = 3; - ch = UNI_REPLACEMENT_CHAR; - } - - target += bytesToWrite; - if (target > targetEnd) { - source = oldSource; /* Back up source pointer! */ - target -= bytesToWrite; result = targetExhausted; break; - } - switch (bytesToWrite) { /* note: everything falls through. */ - case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]); - } - target += bytesToWrite; - } -*sourceStart = source; -*targetStart = target; -return result; -} - -/* --------------------------------------------------------------------- */ - -/* - * Utility routine to tell whether a sequence of bytes is legal UTF-8. - * This must be called with the length pre-determined by the first byte. - * If not calling this from ConvertUTF8to*, then the length can be set by: - * length = trailingBytesForUTF8[*source]+1; - * and the sequence is illegal right away if there aren't that many bytes - * available. - * If presented with a length > 4, this returns false. The Unicode - * definition of UTF-8 goes up to 4-byte sequences. - */ - -static Boolean isLegalUTF8(const UTF8 *source, int length) { - UTF8 a; - const UTF8 *srcptr = source+length; - switch (length) { - default: return false; - /* Everything else falls through when "true"... */ - case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; - case 2: if ((a = (*--srcptr)) > 0xBF) return false; - - switch (*source) { - /* no fall-through in this inner switch */ - case 0xE0: if (a < 0xA0) return false; break; - case 0xED: if (a > 0x9F) return false; break; - case 0xF0: if (a < 0x90) return false; break; - case 0xF4: if (a > 0x8F) return false; break; - default: if (a < 0x80) return false; - } - - case 1: if (*source >= 0x80 && *source < 0xC2) return false; - } - if (*source > 0xF4) return false; - return true; -} - -/* --------------------------------------------------------------------- */ - -/* - * Exported function to return whether a UTF-8 sequence is legal or not. - * This is not used here; it's just exported. - */ -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) { - int length = trailingBytesForUTF8[*source]+1; - if (source+length > sourceEnd) { - return false; - } - return isLegalUTF8(source, length); -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF8toUTF16 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF8* source = *sourceStart; - UTF16* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - result = sourceExhausted; break; - } - /* Do this check whether lenient or strict */ - if (! isLegalUTF8(source, extraBytesToRead+1)) { - result = sourceIllegal; - break; - } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; - } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (target >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = (UTF16)ch; /* normal case */ - } - } else if (ch > UNI_MAX_UTF16) { - if (flags == strictConversion) { - result = sourceIllegal; - source -= (extraBytesToRead+1); /* return to the start */ - break; /* Bail out; shouldn't continue */ - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - if (target + 1 >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up source pointer! */ - result = targetExhausted; break; - } - ch -= halfBase; - *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); - *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); - } - } -*sourceStart = source; -*targetStart = target; -return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF32toUTF8 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF32* source = *sourceStart; - UTF8* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch; - unsigned short bytesToWrite = 0; - const UTF32 byteMask = 0xBF; - const UTF32 byteMark = 0x80; - ch = *source++; - if (flags == strictConversion ) { - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - --source; /* return to the illegal value itself */ - result = sourceIllegal; - break; - } - } - /* - * Figure out how many bytes the result will require. Turn any - * illegally large UTF32 things (> Plane 17) into replacement chars. - */ - if (ch < (UTF32)0x80) { bytesToWrite = 1; - } else if (ch < (UTF32)0x800) { bytesToWrite = 2; - } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; - } else if (ch <= UNI_MAX_LEGAL_UTF32) { bytesToWrite = 4; - } else { bytesToWrite = 3; - ch = UNI_REPLACEMENT_CHAR; - result = sourceIllegal; - } - - target += bytesToWrite; - if (target > targetEnd) { - --source; /* Back up source pointer! */ - target -= bytesToWrite; result = targetExhausted; break; - } - switch (bytesToWrite) { /* note: everything falls through. */ - case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; - case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]); - } - target += bytesToWrite; - } -*sourceStart = source; -*targetStart = target; -return result; -} - -/* --------------------------------------------------------------------- */ - -ConversionResult ConvertUTF8toUTF32 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { - ConversionResult result = conversionOK; - const UTF8* source = *sourceStart; - UTF32* target = *targetStart; - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - result = sourceExhausted; break; - } - /* Do this check whether lenient or strict */ - if (! isLegalUTF8(source, extraBytesToRead+1)) { - result = sourceIllegal; - break; - } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 5: ch += *source++; ch <<= 6; - case 4: ch += *source++; ch <<= 6; - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; - } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (target >= targetEnd) { - source -= (extraBytesToRead+1); /* Back up the source pointer! */ - result = targetExhausted; break; - } - if (ch <= UNI_MAX_LEGAL_UTF32) { - /* - * UTF-16 surrogate values are illegal in UTF-32, and anything - * over Plane 17 (> 0x10FFFF) is illegal. - */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { - if (flags == strictConversion) { - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - result = sourceIllegal; - break; - } else { - *target++ = UNI_REPLACEMENT_CHAR; - } - } else { - *target++ = ch; - } - } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */ - result = sourceIllegal; - *target++ = UNI_REPLACEMENT_CHAR; - } - } - *sourceStart = source; - *targetStart = target; - return result; -} - -/* --------------------------------------------------------------------- - -Note A. -The fall-through switches in UTF-8 reading code save a -temp variable, some decrements & conditionals. The switches -are equivalent to the following loop: -{ - int tmpBytesToRead = extraBytesToRead+1; - do { - ch += *source++; - --tmpBytesToRead; - if (tmpBytesToRead) ch <<= 6; - } while (tmpBytesToRead > 0); -} -In UTF-8 writing code, the switches on "bytesToWrite" are -similarly unrolled loops. - ---------------------------------------------------------------------- */ diff --git a/thirdparty/google-breakpad/r318/src/common/convert_UTF.h b/thirdparty/google-breakpad/r318/src/common/convert_UTF.h deleted file mode 100644 index b1556de8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/convert_UTF.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright 2001-2004 Unicode, Inc. - * - * Disclaimer - * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. - * - * Limitations on Rights to Redistribute This Code - * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. - */ - -/* --------------------------------------------------------------------- - -Conversions between UTF32, UTF-16, and UTF-8. Header file. - -Several funtions are included here, forming a complete set of -conversions between the three formats. UTF-7 is not included -here, but is handled in a separate source file. - -Each of these routines takes pointers to input buffers and output -buffers. The input buffers are const. - -Each routine converts the text between *sourceStart and sourceEnd, -putting the result into the buffer between *targetStart and -targetEnd. Note: the end pointers are *after* the last item: e.g. -*(sourceEnd - 1) is the last item. - -The return result indicates whether the conversion was successful, -and if not, whether the problem was in the source or target buffers. -(Only the first encountered problem is indicated.) - -After the conversion, *sourceStart and *targetStart are both -updated to point to the end of last text successfully converted in -the respective buffers. - -Input parameters: -sourceStart - pointer to a pointer to the source buffer. -The contents of this are modified on return so that -it points at the next thing to be converted. -targetStart - similarly, pointer to pointer to the target buffer. -sourceEnd, targetEnd - respectively pointers to the ends of the -two buffers, for overflow checking only. - -These conversion functions take a ConversionFlags argument. When this -flag is set to strict, both irregular sequences and isolated surrogates -will cause an error. When the flag is set to lenient, both irregular -sequences and isolated surrogates are converted. - -Whether the flag is strict or lenient, all illegal sequences will cause -an error return. This includes sequences such as: , , -or in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code -must check for illegal sequences. - -When the flag is set to lenient, characters over 0x10FFFF are converted -to the replacement character; otherwise (when the flag is set to strict) -they constitute an error. - -Output parameters: -The value "sourceIllegal" is returned from some routines if the input -sequence is malformed. When "sourceIllegal" is returned, the source -value will point to the illegal value that caused the problem. E.g., -in UTF-8 when a sequence is malformed, it points to the start of the -malformed sequence. - -Author: Mark E. Davis, 1994. -Rev History: Rick McGowan, fixes & updates May 2001. -Fixes & updates, Sept 2001. - ------------------------------------------------------------------------- */ - -/* --------------------------------------------------------------------- -The following 4 definitions are compiler-specific. -The C standard does not guarantee that wchar_t has at least -16 bits, so wchar_t is no less portable than unsigned short! -All should be unsigned values to avoid sign extension during -bit mask & shift operations. ------------------------------------------------------------------------- */ - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ -typedef unsigned char Boolean; /* 0 or 1 */ - -/* Some fundamental constants */ -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_MAX_BMP (UTF32)0x0000FFFF -#define UNI_MAX_UTF16 (UTF32)0x0010FFFF -#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF -#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF - -typedef enum { - conversionOK, /* conversion successful */ - sourceExhausted, /* partial character in source, but hit end */ - targetExhausted, /* insuff. room in target for conversion */ - sourceIllegal /* source sequence is illegal/malformed */ -} ConversionResult; - -typedef enum { - strictConversion = 0, - lenientConversion -} ConversionFlags; - -/* This is for C++ and does no harm in C */ -#ifdef __cplusplus -extern "C" { -#endif - -ConversionResult ConvertUTF8toUTF16 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF8 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF8toUTF32 (const UTF8** sourceStart, const UTF8* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF8 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF16toUTF32 (const UTF16** sourceStart, const UTF16* sourceEnd, - UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); - -ConversionResult ConvertUTF32toUTF16 (const UTF32** sourceStart, const UTF32* sourceEnd, - UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); - -Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd); - -#ifdef __cplusplus -} -#endif - -/* --------------------------------------------------------------------- */ diff --git a/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.cc b/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.cc deleted file mode 100644 index aff0d792..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.cc +++ /dev/null @@ -1,781 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "common/linux/dump_symbols.h" -#include "common/linux/file_id.h" -#include "common/linux/guid_creator.h" -#include "processor/scoped_ptr.h" - -// This namespace contains helper functions. -namespace { - -// Infomation of a line. -struct LineInfo { - // The index into string table for the name of the source file which - // this line belongs to. - // Load from stab symbol. - uint32_t source_name_index; - // Offset from start of the function. - // Load from stab symbol. - ElfW(Off) rva_to_func; - // Offset from base of the loading binary. - ElfW(Off) rva_to_base; - // Size of the line. - // It is the difference of the starting address of the line and starting - // address of the next N_SLINE, N_FUN or N_SO. - uint32_t size; - // Line number. - uint32_t line_num; - // Id of the source file for this line. - int source_id; -}; - -typedef std::list LineInfoList; - -// Information of a function. -struct FuncInfo { - // Name of the function. - const char *name; - // Offset from the base of the loading address. - ElfW(Off) rva_to_base; - // Virtual address of the function. - // Load from stab symbol. - ElfW(Addr) addr; - // Size of the function. - // It is the difference of the starting address of the function and starting - // address of the next N_FUN or N_SO. - uint32_t size; - // Total size of stack parameters. - uint32_t stack_param_size; - // Is there any lines included from other files? - bool has_sol; - // Line information array. - LineInfoList line_info; -}; - -typedef std::list FuncInfoList; - -// Information of a source file. -struct SourceFileInfo { - // Name string index into the string table. - uint32_t name_index; - // Name of the source file. - const char *name; - // Starting address of the source file. - ElfW(Addr) addr; - // Id of the source file. - int source_id; - // Functions information. - FuncInfoList func_info; -}; - -typedef std::list SourceFileInfoList; - -// Information of a symbol table. -// This is the root of all types of symbol. -struct SymbolInfo { - SourceFileInfoList source_file_info; - - // The next source id for newly found source file. - int next_source_id; -}; - -// Stab section name. -static const char *kStabName = ".stab"; - -// Demangle using abi call. -// Older GCC may not support it. -static std::string Demangle(const char *mangled) { - int status = 0; - char *demangled = abi::__cxa_demangle(mangled, NULL, NULL, &status); - if (status == 0 && demangled != NULL) { - std::string str(demangled); - free(demangled); - return str; - } - return std::string(mangled); -} - -// Fix offset into virtual address by adding the mapped base into offsets. -// Make life easier when want to find something by offset. -static void FixAddress(void *obj_base) { - ElfW(Word) base = reinterpret_cast(obj_base); - ElfW(Ehdr) *elf_header = static_cast(obj_base); - elf_header->e_phoff += base; - elf_header->e_shoff += base; - ElfW(Shdr) *sections = reinterpret_cast(elf_header->e_shoff); - for (int i = 0; i < elf_header->e_shnum; ++i) - sections[i].sh_offset += base; -} - -// Find the prefered loading address of the binary. -static ElfW(Addr) GetLoadingAddress(const ElfW(Phdr) *program_headers, - int nheader) { - for (int i = 0; i < nheader; ++i) { - const ElfW(Phdr) &header = program_headers[i]; - // For executable, it is the PT_LOAD segment with offset to zero. - if (header.p_type == PT_LOAD && - header.p_offset == 0) - return header.p_vaddr; - } - // For other types of ELF, return 0. - return 0; -} - -static bool WriteFormat(int fd, const char *fmt, ...) { - va_list list; - char buffer[4096]; - ssize_t expected, written; - va_start(list, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, list); - expected = strlen(buffer); - written = write(fd, buffer, strlen(buffer)); - va_end(list); - return expected == written; -} - -static bool IsValidElf(const ElfW(Ehdr) *elf_header) { - return memcmp(elf_header, ELFMAG, SELFMAG) == 0; -} - -static const ElfW(Shdr) *FindSectionByName(const char *name, - const ElfW(Shdr) *sections, - const ElfW(Shdr) *strtab, - int nsection) { - assert(name != NULL); - assert(sections != NULL); - assert(nsection > 0); - - int name_len = strlen(name); - if (name_len == 0) - return NULL; - - for (int i = 0; i < nsection; ++i) { - const char *section_name = - (char*)(strtab->sh_offset + sections[i].sh_name); - if (!strncmp(name, section_name, name_len)) - return sections + i; - } - return NULL; -} - -// TODO(liuli): Computer the stack parameter size. -// Expect parameter variables are immediately following the N_FUN symbol. -// Will need to parse the type information to get a correct size. -static int LoadStackParamSize(struct nlist *list, - struct nlist *list_end, - struct FuncInfo *func_info) { - struct nlist *cur_list = list; - assert(cur_list->n_type == N_FUN); - ++cur_list; - int step = 1; - while (cur_list < list_end && cur_list->n_type == N_PSYM) { - ++cur_list; - ++step; - } - func_info->stack_param_size = 0; - return step; -} - -static int LoadLineInfo(struct nlist *list, - struct nlist *list_end, - const struct SourceFileInfo &source_file_info, - struct FuncInfo *func_info) { - struct nlist *cur_list = list; - func_info->has_sol = false; - // Records which source file the following lines belongs. Default - // to the file we are handling. This helps us handling inlined source. - // When encountering N_SOL, we will change this to the source file - // specified by N_SOL. - int current_source_name_index = source_file_info.name_index; - do { - // Skip non line information. - while (cur_list < list_end && cur_list->n_type != N_SLINE) { - // Only exit when got another function, or source file. - if (cur_list->n_type == N_FUN || cur_list->n_type == N_SO) - return cur_list - list; - // N_SOL means source lines following it will be from - // another source file. - if (cur_list->n_type == N_SOL) { - func_info->has_sol = true; - - if (cur_list->n_un.n_strx > 0 && - cur_list->n_un.n_strx != current_source_name_index) { - // The following lines will be from this source file. - current_source_name_index = cur_list->n_un.n_strx; - } - } - ++cur_list; - } - struct LineInfo line; - while (cur_list < list_end && cur_list->n_type == N_SLINE) { - line.source_name_index = current_source_name_index; - line.rva_to_func = cur_list->n_value; - // n_desc is a signed short - line.line_num = (unsigned short)cur_list->n_desc; - // Don't set it here. - // Will be processed in later pass. - line.source_id = -1; - func_info->line_info.push_back(line); - ++cur_list; - } - } while (list < list_end); - - return cur_list - list; -} - -static int LoadFuncSymbols(struct nlist *list, - struct nlist *list_end, - const ElfW(Shdr) *stabstr_section, - struct SourceFileInfo *source_file_info) { - struct nlist *cur_list = list; - assert(cur_list->n_type == N_SO); - ++cur_list; - source_file_info->func_info.clear(); - while (cur_list < list_end) { - // Go until the function symbol. - while (cur_list < list_end && cur_list->n_type != N_FUN) { - if (cur_list->n_type == N_SO) { - return cur_list - list; - } - ++cur_list; - continue; - } - if (cur_list->n_type == N_FUN) { - struct FuncInfo func_info; - func_info.name = - reinterpret_cast(cur_list->n_un.n_strx + - stabstr_section->sh_offset); - func_info.addr = cur_list->n_value; - func_info.rva_to_base = 0; - func_info.size = 0; - func_info.stack_param_size = 0; - func_info.has_sol = 0; - - // Stack parameter size. - cur_list += LoadStackParamSize(cur_list, list_end, &func_info); - // Line info. - cur_list += LoadLineInfo(cur_list, - list_end, - *source_file_info, - &func_info); - - // Functions in this module should have address bigger than the module - // startring address. - // There maybe a lot of duplicated entry for a function in the symbol, - // only one of them can met this. - if (func_info.addr >= source_file_info->addr) { - source_file_info->func_info.push_back(func_info); - } - } - } - return cur_list - list; -} - -// Comapre the address. -// The argument should have a memeber named "addr" -template -static bool CompareAddress(T1 *a, T2 *b) { - return a->addr < b->addr; -} - -// Sort the array into increasing ordered array based on the virtual address. -// Return vector of pointers to the elements in the incoming array. So caller -// should make sure the returned vector lives longer than the incoming vector. -template -static std::vector SortByAddress( - Container *container) { - typedef typename Container::iterator It; - typedef typename Container::value_type T; - std::vector sorted_array_ptr; - sorted_array_ptr.reserve(container->size()); - for (It it = container->begin(); it != container->end(); it++) - sorted_array_ptr.push_back(&(*it)); - std::sort(sorted_array_ptr.begin(), - sorted_array_ptr.end(), - std::ptr_fun(CompareAddress)); - - return sorted_array_ptr; -} - -// Find the address of the next function or source file symbol in the symbol -// table. The address should be bigger than the current function's address. -static ElfW(Addr) NextAddress( - std::vector *sorted_functions, - std::vector *sorted_files, - const struct FuncInfo &func_info) { - std::vector::iterator next_func_iter = - std::find_if(sorted_functions->begin(), - sorted_functions->end(), - std::bind1st( - std::ptr_fun( - CompareAddress - ), - &func_info) - ); - if (next_func_iter != sorted_functions->end()) - return (*next_func_iter)->addr; - - std::vector::iterator next_file_iter = - std::find_if(sorted_files->begin(), - sorted_files->end(), - std::bind1st( - std::ptr_fun( - CompareAddress - ), - &func_info) - ); - if (next_file_iter != sorted_files->end()) { - return (*next_file_iter)->addr; - } - return 0; -} - -static int FindFileByNameIdx(uint32_t name_index, - SourceFileInfoList &files) { - for (SourceFileInfoList::iterator it = files.begin(); - it != files.end(); it++) { - if (it->name_index == name_index) - return it->source_id; - } - - return -1; -} - -// Add included file information. -// Also fix the source id for the line info. -static void AddIncludedFiles(struct SymbolInfo *symbols, - const ElfW(Shdr) *stabstr_section) { - for (SourceFileInfoList::iterator source_file_it = - symbols->source_file_info.begin(); - source_file_it != symbols->source_file_info.end(); - ++source_file_it) { - struct SourceFileInfo &source_file = *source_file_it; - - for (FuncInfoList::iterator func_info_it = source_file.func_info.begin(); - func_info_it != source_file.func_info.end(); - ++func_info_it) { - struct FuncInfo &func_info = *func_info_it; - - for (LineInfoList::iterator line_info_it = func_info.line_info.begin(); - line_info_it != func_info.line_info.end(); ++line_info_it) { - struct LineInfo &line_info = *line_info_it; - - assert(line_info.source_name_index > 0); - assert(source_file.name_index > 0); - - // Check if the line belongs to the source file by comparing the - // name index into string table. - if (line_info.source_name_index != source_file.name_index) { - // This line is not from the current source file, check if this - // source file has been added before. - int found_source_id = FindFileByNameIdx(line_info.source_name_index, - symbols->source_file_info); - if (found_source_id < 0) { - // Got a new included file. - // Those included files don't have address or line information. - SourceFileInfo new_file; - new_file.name_index = line_info.source_name_index; - new_file.name = reinterpret_cast(new_file.name_index + - stabstr_section->sh_offset); - new_file.addr = 0; - new_file.source_id = symbols->next_source_id++; - line_info.source_id = new_file.source_id; - symbols->source_file_info.push_back(new_file); - } else { - // The file has been added. - line_info.source_id = found_source_id; - } - } else { - // The line belongs to the file. - line_info.source_id = source_file.source_id; - } - } // for each line. - } // for each function. - } // for each source file. - -} - -// Compute size and rva information based on symbols loaded from stab section. -static bool ComputeSizeAndRVA(ElfW(Addr) loading_addr, - struct SymbolInfo *symbols) { - std::vector sorted_files = - SortByAddress(&(symbols->source_file_info)); - for (size_t i = 0; i < sorted_files.size(); ++i) { - struct SourceFileInfo &source_file = *sorted_files[i]; - std::vector sorted_functions = - SortByAddress(&(source_file.func_info)); - for (size_t j = 0; j < sorted_functions.size(); ++j) { - struct FuncInfo &func_info = *sorted_functions[j]; - assert(func_info.addr >= loading_addr); - func_info.rva_to_base = func_info.addr - loading_addr; - func_info.size = 0; - ElfW(Addr) next_addr = NextAddress(&sorted_functions, - &sorted_files, - func_info); - // I've noticed functions with an address bigger than any other functions - // and source files modules, this is probably the last function in the - // module, due to limitions of Linux stab symbol, it is impossible to get - // the exact size of this kind of function, thus we give it a default - // very big value. This should be safe since this is the last function. - // But it is a ugly hack..... - // The following code can reproduce the case: - // template - // void Foo(T value) { - // } - // - // int main(void) { - // Foo(10); - // Foo(std::string("hello")); - // return 0; - // } - // TODO(liuli): Find a better solution. - static const int kDefaultSize = 0x10000000; - static int no_next_addr_count = 0; - if (next_addr != 0) { - func_info.size = next_addr - func_info.addr; - } else { - if (no_next_addr_count > 1) { - fprintf(stderr, "Got more than one funtion without the \ - following symbol. Igore this function.\n"); - fprintf(stderr, "The dumped symbol may not correct.\n"); - assert(!"This should not happen!\n"); - func_info.size = 0; - continue; - } - - no_next_addr_count++; - func_info.size = kDefaultSize; - } - // Compute line size. - for (LineInfoList::iterator line_info_it = func_info.line_info.begin(); - line_info_it != func_info.line_info.end(); line_info_it++) { - struct LineInfo &line_info = *line_info_it; - LineInfoList::iterator next_line_info_it = line_info_it; - next_line_info_it++; - line_info.size = 0; - if (next_line_info_it != func_info.line_info.end()) { - line_info.size = - next_line_info_it->rva_to_func - line_info.rva_to_func; - } else { - // The last line in the function. - // If we can find a function or source file symbol immediately - // following the line, we can get the size of the line by computing - // the difference of the next address to the starting address of this - // line. - // Otherwise, we need to set a default big enough value. This occurs - // mostly because the this function is the last one in the module. - if (next_addr != 0) { - ElfW(Off) next_addr_offset = next_addr - func_info.addr; - line_info.size = next_addr_offset - line_info.rva_to_func; - } else { - line_info.size = kDefaultSize; - } - } - line_info.rva_to_base = line_info.rva_to_func + func_info.rva_to_base; - } // for each line. - } // for each function. - } // for each source file. - return true; -} - -static bool LoadSymbols(const ElfW(Shdr) *stab_section, - const ElfW(Shdr) *stabstr_section, - ElfW(Addr) loading_addr, - struct SymbolInfo *symbols) { - if (stab_section == NULL || stabstr_section == NULL) - return false; - - struct nlist *lists = - reinterpret_cast(stab_section->sh_offset); - int nstab = stab_section->sh_size / sizeof(struct nlist); - // First pass, load all symbols from the object file. - for (int i = 0; i < nstab; ) { - int step = 1; - struct nlist *cur_list = lists + i; - if (cur_list->n_type == N_SO) { - // FUNC
      - struct SourceFileInfo source_file_info; - source_file_info.name_index = cur_list->n_un.n_strx; - source_file_info.name = reinterpret_cast(cur_list->n_un.n_strx + - stabstr_section->sh_offset); - source_file_info.addr = cur_list->n_value; - if (strchr(source_file_info.name, '.')) - source_file_info.source_id = symbols->next_source_id++; - else - source_file_info.source_id = -1; - step = LoadFuncSymbols(cur_list, lists + nstab, - stabstr_section, &source_file_info); - symbols->source_file_info.push_back(source_file_info); - } - i += step; - } - - // Second pass, compute the size of functions and lines. - if (ComputeSizeAndRVA(loading_addr, symbols)) { - // Third pass, check for included source code, especially for header files. - // Until now, we only have compiling unit information, but they can - // have code from include files, add them here. - AddIncludedFiles(symbols, stabstr_section); - return true; - } - return false; -} - -static bool LoadSymbols(ElfW(Ehdr) *elf_header, struct SymbolInfo *symbols) { - // Translate all offsets in section headers into address. - FixAddress(elf_header); - ElfW(Addr) loading_addr = GetLoadingAddress( - reinterpret_cast(elf_header->e_phoff), - elf_header->e_phnum); - - const ElfW(Shdr) *sections = - reinterpret_cast(elf_header->e_shoff); - const ElfW(Shdr) *strtab = sections + elf_header->e_shstrndx; - const ElfW(Shdr) *stab_section = - FindSectionByName(kStabName, sections, strtab, elf_header->e_shnum); - if (stab_section == NULL) { - fprintf(stderr, "Stab section not found.\n"); - return false; - } - const ElfW(Shdr) *stabstr_section = stab_section->sh_link + sections; - - // Load symbols. - return LoadSymbols(stab_section, stabstr_section, loading_addr, symbols); -} - -static bool WriteModuleInfo(int fd, - ElfW(Half) arch, - const std::string &obj_file) { - const char *arch_name = NULL; - if (arch == EM_386) - arch_name = "x86"; - else if (arch == EM_X86_64) - arch_name = "x86_64"; - else - return false; - - unsigned char identifier[16]; - google_breakpad::FileID file_id(obj_file.c_str()); - if (file_id.ElfFileIdentifier(identifier)) { - char identifier_str[40]; - file_id.ConvertIdentifierToString(identifier, - identifier_str, sizeof(identifier_str)); - char id_no_dash[40]; - int id_no_dash_len = 0; - memset(id_no_dash, 0, sizeof(id_no_dash)); - for (int i = 0; identifier_str[i] != '\0'; ++i) - if (identifier_str[i] != '-') - id_no_dash[id_no_dash_len++] = identifier_str[i]; - // Add an extra "0" by the end. - id_no_dash[id_no_dash_len++] = '0'; - std::string filename = obj_file; - size_t slash_pos = obj_file.find_last_of("/"); - if (slash_pos != std::string::npos) - filename = obj_file.substr(slash_pos + 1); - return WriteFormat(fd, "MODULE Linux %s %s %s\n", arch_name, - id_no_dash, filename.c_str()); - } - return false; -} - -static bool WriteSourceFileInfo(int fd, const struct SymbolInfo &symbols) { - for (SourceFileInfoList::const_iterator it = - symbols.source_file_info.begin(); - it != symbols.source_file_info.end(); it++) { - if (it->source_id != -1) { - const char *name = it->name; - if (!WriteFormat(fd, "FILE %d %s\n", it->source_id, name)) - return false; - } - } - return true; -} - -static bool WriteOneFunction(int fd, - const struct FuncInfo &func_info){ - // Discard the ending part of the name. - std::string func_name(func_info.name); - std::string::size_type last_colon = func_name.find_last_of(':'); - if (last_colon != std::string::npos) - func_name = func_name.substr(0, last_colon); - func_name = Demangle(func_name.c_str()); - - if (func_info.size <= 0) - return true; - - if (WriteFormat(fd, "FUNC %lx %lx %d %s\n", - func_info.rva_to_base, - func_info.size, - func_info.stack_param_size, - func_name.c_str())) { - for (LineInfoList::const_iterator it = func_info.line_info.begin(); - it != func_info.line_info.end(); it++) { - const struct LineInfo &line_info = *it; - if (!WriteFormat(fd, "%lx %lx %d %d\n", - line_info.rva_to_base, - line_info.size, - line_info.line_num, - line_info.source_id)) - return false; - } - return true; - } - return false; -} - -static bool WriteFunctionInfo(int fd, const struct SymbolInfo &symbols) { - for (SourceFileInfoList::const_iterator it = - symbols.source_file_info.begin(); - it != symbols.source_file_info.end(); it++) { - const struct SourceFileInfo &file_info = *it; - for (FuncInfoList::const_iterator fiIt = file_info.func_info.begin(); - fiIt != file_info.func_info.end(); fiIt++) { - const struct FuncInfo &func_info = *fiIt; - if (!WriteOneFunction(fd, func_info)) - return false; - } - } - return true; -} - -static bool DumpStabSymbols(int fd, const struct SymbolInfo &symbols) { - return WriteSourceFileInfo(fd, symbols) && - WriteFunctionInfo(fd, symbols); -} - -// -// FDWrapper -// -// Wrapper class to make sure opened file is closed. -// -class FDWrapper { - public: - explicit FDWrapper(int fd) : - fd_(fd) { - } - ~FDWrapper() { - if (fd_ != -1) - close(fd_); - } - int get() { - return fd_; - } - int release() { - int fd = fd_; - fd_ = -1; - return fd; - } - private: - int fd_; -}; - -// -// MmapWrapper -// -// Wrapper class to make sure mapped regions are unmapped. -// -class MmapWrapper { - public: - MmapWrapper(void *mapped_address, size_t mapped_size) : - base_(mapped_address), size_(mapped_size) { - } - ~MmapWrapper() { - if (base_ != NULL) { - assert(size_ > 0); - munmap(base_, size_); - } - } - void release() { - base_ = NULL; - size_ = 0; - } - - private: - void *base_; - size_t size_; -}; - -} // namespace - -namespace google_breakpad { - -bool DumpSymbols::WriteSymbolFile(const std::string &obj_file, - int sym_fd) { - int obj_fd = open(obj_file.c_str(), O_RDONLY); - if (obj_fd < 0) - return false; - FDWrapper obj_fd_wrapper(obj_fd); - struct stat st; - if (fstat(obj_fd, &st) != 0 && st.st_size <= 0) - return false; - void *obj_base = mmap(NULL, st.st_size, - PROT_READ | PROT_WRITE, MAP_PRIVATE, obj_fd, 0); - if (obj_base == MAP_FAILED) - return false; - MmapWrapper map_wrapper(obj_base, st.st_size); - ElfW(Ehdr) *elf_header = reinterpret_cast(obj_base); - if (!IsValidElf(elf_header)) - return false; - struct SymbolInfo symbols; - symbols.next_source_id = 0; - - if (!LoadSymbols(elf_header, &symbols)) - return false; - // Write to symbol file. - if (WriteModuleInfo(sym_fd, elf_header->e_machine, obj_file) && - DumpStabSymbols(sym_fd, symbols)) - return true; - - return false; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.h b/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.h deleted file mode 100644 index 64f4c9e6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/dump_symbols.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// dump_symbols.cc: Implements a linux stab debugging format dumper. -// - -#ifndef COMMON_LINUX_DUMP_SYMBOLS_H__ -#define COMMON_LINUX_DUMP_SYMBOLS_H__ - -#include - -namespace google_breakpad { - -class DumpSymbols { - public: - bool WriteSymbolFile(const std::string &obj_file, - int sym_fd); -}; - -} // namespace google_breakpad - -#endif // COMMON_LINUX_DUMP_SYMBOLS_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/linux/file_id.cc b/thirdparty/google-breakpad/r318/src/common/linux/file_id.cc deleted file mode 100644 index 1adf2a13..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/file_id.cc +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// file_id.cc: Return a unique identifier for a file -// -// See file_id.h for documentation -// - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/linux/file_id.h" -#include "common/md5.h" - -namespace google_breakpad { - -static bool FindElfTextSection(const void *elf_mapped_base, - const void **text_start, - int *text_size) { - assert(elf_mapped_base); - assert(text_start); - assert(text_size); - - const unsigned char *elf_base = - static_cast(elf_mapped_base); - const ElfW(Ehdr) *elf_header = - reinterpret_cast(elf_base); - if (memcmp(elf_header, ELFMAG, SELFMAG) != 0) - return false; - *text_start = NULL; - *text_size = 0; - const ElfW(Shdr) *sections = - reinterpret_cast(elf_base + elf_header->e_shoff); - const char *text_section_name = ".text"; - int name_len = strlen(text_section_name); - const ElfW(Shdr) *string_section = sections + elf_header->e_shstrndx; - const ElfW(Shdr) *text_section = NULL; - for (int i = 0; i < elf_header->e_shnum; ++i) { - if (sections[i].sh_type == SHT_PROGBITS) { - const char *section_name = (char*)(elf_base + - string_section->sh_offset + - sections[i].sh_name); - if (!strncmp(section_name, text_section_name, name_len)) { - text_section = §ions[i]; - break; - } - } - } - if (text_section != NULL && text_section->sh_size > 0) { - int text_section_size = text_section->sh_size; - *text_start = elf_base + text_section->sh_offset; - *text_size = text_section_size; - } - return true; -} - -FileID::FileID(const char *path) { - strncpy(path_, path, sizeof(path_)); -} - -bool FileID::ElfFileIdentifier(unsigned char identifier[16]) { - int fd = open(path_, O_RDONLY); - if (fd < 0) - return false; - struct stat st; - if (fstat(fd, &st) != 0 && st.st_size <= 0) { - close(fd); - return false; - } - void *base = mmap(NULL, st.st_size, - PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); - if (base == MAP_FAILED) { - close(fd); - return false; - } - bool success = false; - const void *text_section = NULL; - int text_size = 0; - if (FindElfTextSection(base, &text_section, &text_size) && (text_size > 0)) { - struct MD5Context md5; - MD5Init(&md5); - MD5Update(&md5, - static_cast(text_section), - text_size); - MD5Final(identifier, &md5); - success = true; - } - - close(fd); - munmap(base, st.st_size); - return success; -} - -// static -void FileID::ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length) { - int buffer_idx = 0; - for (int idx = 0; (buffer_idx < buffer_length) && (idx < 16); ++idx) { - int hi = (identifier[idx] >> 4) & 0x0F; - int lo = (identifier[idx]) & 0x0F; - - if (idx == 4 || idx == 6 || idx == 8 || idx == 10) - buffer[buffer_idx++] = '-'; - - buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi; - buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo; - } - - // NULL terminate - buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/linux/file_id.h b/thirdparty/google-breakpad/r318/src/common/linux/file_id.h deleted file mode 100644 index 5e1cd6e1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/file_id.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// file_id.h: Return a unique identifier for a file -// - -#ifndef COMMON_LINUX_FILE_ID_H__ -#define COMMON_LINUX_FILE_ID_H__ - -#include - -namespace google_breakpad { - -class FileID { - public: - FileID(const char *path); - ~FileID() {}; - - // Load the identifier for the elf file path specified in the constructor into - // |identifier|. Return false if the identifier could not be created for the - // file. - // The current implementation will return the MD5 hash of the file's bytes. - bool ElfFileIdentifier(unsigned char identifier[16]); - - // Convert the |identifier| data to a NULL terminated string. The string will - // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE). - // The |buffer| should be at least 37 bytes long to receive all of the data - // and termination. Shorter buffers will contain truncated data. - static void ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length); - - private: - // Storage for the path specified - char path_[PATH_MAX]; -}; - -} // namespace google_breakpad - -#endif // COMMON_LINUX_FILE_ID_H__ - diff --git a/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.cc b/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.cc deleted file mode 100644 index d133c6b0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.cc +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include - -#include "common/linux/guid_creator.h" - -// -// GUIDGenerator -// -// This class is used to generate random GUID. -// Currently use random number to generate a GUID since Linux has -// no native GUID generator. This should be OK since we don't expect -// crash to happen very offen. -// -class GUIDGenerator { - public: - GUIDGenerator() { - srandom(time(NULL)); - } - - bool CreateGUID(GUID *guid) const { - guid->data1 = random(); - guid->data2 = (u_int16_t)(random()); - guid->data3 = (u_int16_t)(random()); - *reinterpret_cast(&guid->data4[0]) = random(); - *reinterpret_cast(&guid->data4[4]) = random(); - return true; - } -}; - -// Guid generator. -const GUIDGenerator kGuidGenerator; - -bool CreateGUID(GUID *guid) { - return kGuidGenerator.CreateGUID(guid); -} - -// Parse guid to string. -bool GUIDToString(const GUID *guid, char *buf, int buf_len) { - // Should allow more space the the max length of GUID. - assert(buf_len > kGUIDStringLength); - int num = snprintf(buf, buf_len, kGUIDFormatString, - guid->data1, guid->data2, guid->data3, - *reinterpret_cast(&(guid->data4[0])), - *reinterpret_cast(&(guid->data4[4]))); - if (num != kGUIDStringLength) - return false; - - buf[num] = '\0'; - return true; -} diff --git a/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.h b/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.h deleted file mode 100644 index c86d856c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/guid_creator.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef COMMON_LINUX_GUID_CREATOR_H__ -#define COMMON_LINUX_GUID_CREATOR_H__ - -#include "google_breakpad/common/minidump_format.h" - -typedef MDGUID GUID; - -// Format string for parsing GUID. -#define kGUIDFormatString "%08x-%04x-%04x-%08x-%08x" -// Length of GUID string. Don't count the ending '\0'. -#define kGUIDStringLength 36 - -// Create a guid. -bool CreateGUID(GUID *guid); - -// Get the string from guid. -bool GUIDToString(const GUID *guid, char *buf, int buf_len); - -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/linux/http_upload.cc b/thirdparty/google-breakpad/r318/src/common/linux/http_upload.cc deleted file mode 100644 index 8748d117..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/http_upload.cc +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include - -#include "common/linux/http_upload.h" - -namespace { - -// Callback to get the response data from server. -static size_t WriteCallback(void *ptr, size_t size, - size_t nmemb, void *userp) { - if (!userp) - return 0; - - std::string *response = reinterpret_cast(userp); - size_t real_size = size * nmemb; - response->append(reinterpret_cast(ptr), real_size); - return real_size; -} - -} // namespace - -namespace google_breakpad { - -static const char kUserAgent[] = "Breakpad/1.0 (Linux)"; - -// static -bool HTTPUpload::SendRequest(const string &url, - const map ¶meters, - const string &upload_file, - const string &file_part_name, - const string &proxy, - const string &proxy_user_pwd, - string *response_body, - string *error_description) { - if (!CheckParameters(parameters)) - return false; - - void *curl_lib = dlopen("libcurl.so", RTLD_NOW); - if (!curl_lib) { - curl_lib = dlopen("libcurl.so.4", RTLD_NOW); - } - if (!curl_lib) { - curl_lib = dlopen("libcurl.so.3", RTLD_NOW); - } - if (!curl_lib) { - return false; - } - - CURL* (*curl_easy_init)(void); - *(void**) (&curl_easy_init) = dlsym(curl_lib, "curl_easy_init"); - CURL *curl = (*curl_easy_init)(); - if (error_description != NULL) - *error_description = "No Error"; - - if (!curl) { - dlclose(curl_lib); - return false; - } - - CURLcode err_code = CURLE_OK; - CURLcode (*curl_easy_setopt)(CURL *, CURLoption, ...); - *(void**) (&curl_easy_setopt) = dlsym(curl_lib, "curl_easy_setopt"); - (*curl_easy_setopt)(curl, CURLOPT_URL, url.c_str()); - (*curl_easy_setopt)(curl, CURLOPT_USERAGENT, kUserAgent); - // Set proxy information if necessary. - if (!proxy.empty()) - (*curl_easy_setopt)(curl, CURLOPT_PROXY, proxy.c_str()); - if (!proxy_user_pwd.empty()) - (*curl_easy_setopt)(curl, CURLOPT_PROXYUSERPWD, proxy_user_pwd.c_str()); - - struct curl_httppost *formpost = NULL; - struct curl_httppost *lastptr = NULL; - // Add form data. - CURLFORMcode (*curl_formadd)(struct curl_httppost **, struct curl_httppost **, ...); - *(void**) (&curl_formadd) = dlsym(curl_lib, "curl_formadd"); - map::const_iterator iter = parameters.begin(); - for (; iter != parameters.end(); ++iter) - (*curl_formadd)(&formpost, &lastptr, - CURLFORM_COPYNAME, iter->first.c_str(), - CURLFORM_COPYCONTENTS, iter->second.c_str(), - CURLFORM_END); - - // Add form file. - (*curl_formadd)(&formpost, &lastptr, - CURLFORM_COPYNAME, file_part_name.c_str(), - CURLFORM_FILE, upload_file.c_str(), - CURLFORM_END); - - (*curl_easy_setopt)(curl, CURLOPT_HTTPPOST, formpost); - - // Disable 100-continue header. - struct curl_slist *headerlist = NULL; - char buf[] = "Expect:"; - struct curl_slist* (*curl_slist_append)(struct curl_slist *, const char *); - *(void**) (&curl_slist_append) = dlsym(curl_lib, "curl_slist_append"); - headerlist = (*curl_slist_append)(headerlist, buf); - (*curl_easy_setopt)(curl, CURLOPT_HTTPHEADER, headerlist); - - if (response_body != NULL) { - (*curl_easy_setopt)(curl, CURLOPT_WRITEFUNCTION, WriteCallback); - (*curl_easy_setopt)(curl, CURLOPT_WRITEDATA, - reinterpret_cast(response_body)); - } - - CURLcode (*curl_easy_perform)(CURL *); - *(void**) (&curl_easy_perform) = dlsym(curl_lib, "curl_easy_perform"); - err_code = (*curl_easy_perform)(curl); - const char* (*curl_easy_strerror)(CURLcode); - *(void**) (&curl_easy_strerror) = dlsym(curl_lib, "curl_easy_strerror"); -#ifndef NDEBUG - if (err_code != CURLE_OK) - fprintf(stderr, "Failed to send http request to %s, error: %s\n", - url.c_str(), - (*curl_easy_strerror)(err_code)); -#endif - if (error_description != NULL) - *error_description = (*curl_easy_strerror)(err_code); - - void (*curl_easy_cleanup)(CURL *); - *(void**) (&curl_easy_cleanup) = dlsym(curl_lib, "curl_easy_cleanup"); - (*curl_easy_cleanup)(curl); - if (formpost != NULL) { - void (*curl_formfree)(struct curl_httppost *); - *(void**) (&curl_formfree) = dlsym(curl_lib, "curl_formfree"); - (*curl_formfree)(formpost); - } - if (headerlist != NULL) { - void (*curl_slist_free_all)(struct curl_slist *); - *(void**) (&curl_slist_free_all) = dlsym(curl_lib, "curl_slist_free_all"); - (*curl_slist_free_all)(headerlist); - } - dlclose(curl_lib); - return err_code == CURLE_OK; -} - -// static -bool HTTPUpload::CheckParameters(const map ¶meters) { - for (map::const_iterator pos = parameters.begin(); - pos != parameters.end(); ++pos) { - const string &str = pos->first; - if (str.size() == 0) - return false; // disallow empty parameter names - for (unsigned int i = 0; i < str.size(); ++i) { - int c = str[i]; - if (c < 32 || c == '"' || c > 127) { - return false; - } - } - } - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/linux/http_upload.h b/thirdparty/google-breakpad/r318/src/common/linux/http_upload.h deleted file mode 100644 index fa6ad12c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/linux/http_upload.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// HTTPUpload provides a "nice" API to send a multipart HTTP(S) POST -// request using libcurl. It currently supports requests that contain -// a set of string parameters (key/value pairs), and a file to upload. - -#ifndef COMMON_LINUX_HTTP_UPLOAD_H__ -#define COMMON_LINUX_HTTP_UPLOAD_H__ - -#include -#include - -namespace google_breakpad { - -using std::string; -using std::map; - -class HTTPUpload { - public: - // Sends the given set of parameters, along with the contents of - // upload_file, as a multipart POST request to the given URL. - // file_part_name contains the name of the file part of the request - // (i.e. it corresponds to the name= attribute on an . - // Parameter names must contain only printable ASCII characters, - // and may not contain a quote (") character. - // Only HTTP(S) URLs are currently supported. Returns true on success. - // If the request is successful and response_body is non-NULL, - // the response body will be returned in response_body. - // If the send fails, a description of the error will be - // returned in error_description. - static bool SendRequest(const string &url, - const map ¶meters, - const string &upload_file, - const string &file_part_name, - const string &proxy, - const string &proxy_user_pwd, - string *response_body, - string *error_description); - - private: - // Checks that the given list of parameters has only printable - // ASCII characters in the parameter name, and does not contain - // any quote (") characters. Returns true if so. - static bool CheckParameters(const map ¶meters); - - // No instances of this class should be created. - // Disallow all constructors, destructors, and operator=. - HTTPUpload(); - explicit HTTPUpload(const HTTPUpload &); - void operator=(const HTTPUpload &); - ~HTTPUpload(); -}; - -} // namespace google_breakpad - -#endif // COMMON_LINUX_HTTP_UPLOAD_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.h b/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.h deleted file mode 100644 index 95f259b9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// HTTPMultipartUpload: A multipart/form-data HTTP uploader. -// Each parameter pair is sent as a boundary -// Each file is sent with a name field in addition to the filename and data -// The data will be sent synchronously. - -#import - -@interface HTTPMultipartUpload : NSObject { - @protected - NSURL *url_; // The destination URL (STRONG) - NSDictionary *parameters_; // The key/value pairs for sending data (STRONG) - NSMutableDictionary *files_; // Dictionary of name/file-path (STRONG) - NSString *boundary_; // The boundary string (STRONG) - NSHTTPURLResponse *response_; // The response from the send (STRONG) -} - -- (id)initWithURL:(NSURL *)url; - -- (NSURL *)URL; - -- (void)setParameters:(NSDictionary *)parameters; -- (NSDictionary *)parameters; - -- (void)addFileAtPath:(NSString *)path name:(NSString *)name; -- (void)addFileContents:(NSData *)data name:(NSString *)name; -- (NSDictionary *)files; - -// Set the data and return the response -- (NSData *)send:(NSError **)error; -- (NSHTTPURLResponse *)response; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.m b/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.m deleted file mode 100644 index dd3612d8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/HTTPMultipartUpload.m +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#import "HTTPMultipartUpload.h" - -@interface HTTPMultipartUpload(PrivateMethods) -- (NSString *)multipartBoundary; -- (NSData *)formDataForKey:(NSString *)key value:(NSString *)value; -- (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name; -- (NSData *)formDataForFile:(NSString *)file name:(NSString *)name; -@end - -@implementation HTTPMultipartUpload -//============================================================================= -#pragma mark - -#pragma mark || Private || -//============================================================================= -- (NSString *)multipartBoundary { - // The boundary has 27 '-' characters followed by 16 hex digits - return [NSString stringWithFormat:@"---------------------------%08X%08X", - rand(), rand()]; -} - -//============================================================================= -- (NSData *)formDataForKey:(NSString *)key value:(NSString *)value { - NSString *escaped = - [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - NSString *fmt = - @"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n"; - NSString *form = [NSString stringWithFormat:fmt, boundary_, escaped, value]; - - return [form dataUsingEncoding:NSUTF8StringEncoding]; -} - -//============================================================================= -- (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name { - NSMutableData *data = [NSMutableData data]; - NSString *escaped = - [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"; " - "filename=\"minidump.dmp\"\r\nContent-Type: application/octet-stream\r\n\r\n"; - NSString *pre = [NSString stringWithFormat:fmt, boundary_, escaped]; - NSString *post = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary_]; - - [data appendData:[pre dataUsingEncoding:NSUTF8StringEncoding]]; - [data appendData:contents]; - [data appendData:[post dataUsingEncoding:NSUTF8StringEncoding]]; - - return data; -} - -//============================================================================= -- (NSData *)formDataForFile:(NSString *)file name:(NSString *)name { - NSData *contents = [NSData dataWithContentsOfFile:file]; - - return [self formDataForFileContents:contents name:name]; -} - -//============================================================================= -#pragma mark - -#pragma mark || Public || -//============================================================================= -- (id)initWithURL:(NSURL *)url { - if ((self = [super init])) { - url_ = [url copy]; - boundary_ = [[self multipartBoundary] retain]; - files_ = [[NSMutableDictionary alloc] init]; - } - - return self; -} - -//============================================================================= -- (void)dealloc { - [url_ release]; - [parameters_ release]; - [files_ release]; - [boundary_ release]; - [response_ release]; - - [super dealloc]; -} - -//============================================================================= -- (NSURL *)URL { - return url_; -} - -//============================================================================= -- (void)setParameters:(NSDictionary *)parameters { - if (parameters != parameters_) { - [parameters_ release]; - parameters_ = [parameters copy]; - } -} - -//============================================================================= -- (NSDictionary *)parameters { - return parameters_; -} - -//============================================================================= -- (void)addFileAtPath:(NSString *)path name:(NSString *)name { - [files_ setObject:path forKey:name]; -} - -//============================================================================= -- (void)addFileContents:(NSData *)data name:(NSString *)name { - [files_ setObject:data forKey:name]; -} - -//============================================================================= -- (NSDictionary *)files { - return files_; -} - -//============================================================================= -- (NSData *)send:(NSError **)error { - NSMutableURLRequest *req = - [[NSMutableURLRequest alloc] - initWithURL:url_ cachePolicy:NSURLRequestUseProtocolCachePolicy - timeoutInterval:10.0 ]; - - NSMutableData *postBody = [NSMutableData data]; - int i, count; - - [req setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", - boundary_] forHTTPHeaderField:@"Content-type"]; - - // Add any parameters to the message - NSArray *parameterKeys = [parameters_ allKeys]; - NSString *key; - - count = [parameterKeys count]; - for (i = 0; i < count; ++i) { - key = [parameterKeys objectAtIndex:i]; - [postBody appendData:[self formDataForKey:key - value:[parameters_ objectForKey:key]]]; - } - - // Add any files to the message - NSArray *fileNames = [files_ allKeys]; - count = [fileNames count]; - for (i = 0; i < count; ++i) { - NSString *name = [fileNames objectAtIndex:i]; - id fileOrData = [files_ objectForKey:name]; - NSData *fileData; - - // The object can be either the path to a file (NSString) or the contents - // of the file (NSData). - if ([fileOrData isKindOfClass:[NSData class]]) - fileData = [self formDataForFileContents:fileOrData name:name]; - else - fileData = [self formDataForFile:fileOrData name:name]; - - [postBody appendData:fileData]; - } - - [req setHTTPBody:postBody]; - [req setHTTPMethod:@"POST"]; - - [response_ release]; - response_ = nil; - - NSData *data = [NSURLConnection sendSynchronousRequest:req - returningResponse:&response_ - error:error]; - - [response_ retain]; - - return data; -} - -//============================================================================= -- (NSHTTPURLResponse *)response { - return response_; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.h b/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.h deleted file mode 100644 index 12d8f7d6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.h +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dump_syms.h: Interface for DumpSymbols. This class will take a mach-o file -// and extract the symbol information and write it to a file using the -// breakpad symbol file format. - -#import -#include -#include "common/mac/dwarf/dwarf2reader.h" - -// This will map from an architecture string to a SectionMap, which -// will contain the offsets for all the sections in the dictionary -typedef hash_map ArchSectionMap; - -@interface DumpSymbols : NSObject { - @protected - NSString *sourcePath_; // Source of symbols (STRONG) - NSString *architecture_; // Architecture to extract (STRONG) - NSMutableDictionary *addresses_; // Addresses and symbols (STRONG) - NSMutableSet *functionAddresses_; // Function addresses (STRONG) - NSMutableDictionary *sources_; // Address and Source file paths (STRONG) - NSMutableDictionary *headers_; // Mach-o header information (STRONG) - NSMutableDictionary *sectionData_; // Keyed by seg/sect name (STRONG) - uint32_t lastStartAddress_; - ArchSectionMap *sectionsForArch_; -} - -- (id)initWithContentsOfFile:(NSString *)machoFile; - -- (NSArray *)availableArchitectures; - -// One of ppc, x86, i386, ppc64, x86_64 -// If the architecture is not available, it will return NO -// If not set, the native architecture will be used -- (BOOL)setArchitecture:(NSString *)architecture; -- (NSString *)architecture; - -// Write the symbols to |symbolFilePath|. Return YES if successful. -- (BOOL)writeSymbolFile:(NSString *)symbolFilePath; - -@end - -@interface MachSection : NSObject { - @protected - struct section *sect_; - uint32_t sectionNumber_; -} -- (id)initWithMachSection:(struct section *)sect andNumber:(uint32_t)sectionNumber; -- (struct section*)sectionPointer; -- (uint32_t)sectionNumber; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.mm b/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.mm deleted file mode 100644 index 88f1f4f1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dump_syms.mm +++ /dev/null @@ -1,1224 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dump_syms.mm: Create a symbol file for use with minidumps - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#import - -#import "dump_syms.h" -#import "common/mac/file_id.h" -#import "common/mac/macho_utilities.h" -#import "common/mac/dwarf/dwarf2reader.h" -#import "common/mac/dwarf/functioninfo.h" -#import "common/mac/dwarf/bytereader.h" - -using google_breakpad::FileID; - -static NSString *kAddressSymbolKey = @"symbol"; -static NSString *kAddressConvertedSymbolKey = @"converted_symbol"; -static NSString *kAddressSourceLineKey = @"line"; -static NSString *kFunctionSizeKey = @"size"; -static NSString *kFunctionFileKey = @"source_file"; -static NSString *kHeaderBaseAddressKey = @"baseAddr"; -static NSString *kHeaderSizeKey = @"size"; -static NSString *kHeaderOffsetKey = @"offset"; // Offset to the header -static NSString *kHeaderIs64BitKey = @"is64"; -static NSString *kHeaderCPUTypeKey = @"cpuType"; - -// The section for __TEXT, __text seems to be always 1. This is useful -// for pruning out extraneous non-function symbols. -static const int kTextSection = 1; - -namespace __gnu_cxx { -template<> - struct hash { - size_t operator()(const std::string& k) const { - return hash< const char* >()( k.c_str() ); - } -}; -} - -// Dump FunctionMap to stdout. Print address, function name, file -// name, line number, lowpc, and highpc if available. -void DumpFunctionMap(const dwarf2reader::FunctionMap function_map) { - for (dwarf2reader::FunctionMap::const_iterator iter = function_map.begin(); - iter != function_map.end(); ++iter) { - if (iter->second->name.empty()) { - continue; - } - printf("%08llx: %s", iter->first, - iter->second->name.data()); - if (!iter->second->file.empty()) { - printf(" - %s", iter->second->file.data()); - if (iter->second->line != 0) { - printf(":%u", iter->second->line); - } - } - if (iter->second->lowpc != 0 && iter->second->highpc != 0) { - printf(" (%08llx - %08llx)\n", - iter->second->lowpc, - iter->second->highpc); - } - } -} - - -@interface DumpSymbols(PrivateMethods) -- (NSString *)convertCPlusPlusSymbol:(NSString *)symbol; -- (void)addFunction:(NSString *)name line:(int)line address:(uint64_t)address section:(int)section; -- (BOOL)processSymbolItem:(struct nlist_64 *)list stringTable:(char *)table; -- (BOOL)loadSymbolInfo:(void *)base offset:(uint32_t)offset; -- (BOOL)loadSymbolInfo64:(void *)base offset:(uint32_t)offset; -- (BOOL)loadSymbolInfoForArchitecture; -- (BOOL)loadDWARFSymbolInfo:(void *)base offset:(uint32_t)offset; -- (BOOL)loadSTABSSymbolInfo:(void *)base offset:(uint32_t)offset; -- (void)generateSectionDictionary:(struct mach_header*)header; -- (BOOL)loadHeader:(void *)base offset:(uint32_t)offset; -- (BOOL)loadHeader64:(void *)base offset:(uint32_t)offset; -- (BOOL)loadModuleInfo; -- (void)processDWARFLineNumberInfo:(dwarf2reader::LineMap*)line_map; -- (void)processDWARFFunctionInfo:(dwarf2reader::FunctionMap*)address_to_funcinfo; -- (void)processDWARFSourceFileInfo:(vector*) files; -- (BOOL)loadSymbolInfo:(void *)base offset:(uint32_t)offset; -- (dwarf2reader::SectionMap*)getSectionMapForArchitecture:(NSString*)architecture; -@end - -@implementation DumpSymbols -//============================================================================= -- (NSString *)convertCPlusPlusSymbol:(NSString *)symbol { - // __cxa_demangle will realloc this if needed - char *buffer = (char *)malloc(1024); - size_t buffer_size = 1024; - int result; - - const char *sym = [symbol UTF8String]; - NSString *demangled = nil; - buffer = abi::__cxa_demangle(sym, buffer, &buffer_size, &result); - if (result == 0) { - demangled = [NSString stringWithUTF8String:buffer]; - } - free(buffer); - return demangled; -} - -//============================================================================= -- (void)addFunction:(NSString *)name line:(int)line address:(uint64_t)address section:(int)section { - NSNumber *addressNum = [NSNumber numberWithUnsignedLongLong:address]; - - if (!address) - return; - - // If the function starts with "_Z" or "__Z" then demangle it. - BOOL isCPP = NO; - - if ([name hasPrefix:@"__Z"]) { - // Remove the leading underscore - name = [name substringFromIndex:1]; - isCPP = YES; - } else if ([name hasPrefix:@"_Z"]) { - isCPP = YES; - } - - // Filter out non-functions - if ([name hasSuffix:@".eh"]) - return; - - if ([name hasSuffix:@"__func__"]) - return; - - if ([name hasSuffix:@"GCC_except_table"]) - return; - - if (isCPP) { - // OBJCPP_MANGLING_HACK - // There are cases where ObjC++ mangles up an ObjC name using quasi-C++ - // mangling: - // @implementation Foozles + (void)barzles { - // static int Baz = 0; - // } @end - // gives you _ZZ18+[Foozles barzles]E3Baz - // c++filt won't parse this properly, and will crash in certain cases. - // Logged as radar: - // 5129938: c++filt does not deal with ObjC++ symbols - // If 5129938 ever gets fixed, we can remove this, but for now this prevents - // c++filt from attempting to demangle names it doesn't know how to handle. - // This is with c++filt 2.16 - NSCharacterSet *objcppCharSet = [NSCharacterSet characterSetWithCharactersInString:@"-+[]: "]; - NSRange emptyRange = { NSNotFound, 0 }; - NSRange objcppRange = [name rangeOfCharacterFromSet:objcppCharSet]; - isCPP = NSEqualRanges(objcppRange, emptyRange); - } else if ([name characterAtIndex:0] == '_') { - // Remove the leading underscore - name = [name substringFromIndex:1]; - } - - // If there's already an entry for this address, check and see if we can add - // either the symbol, or a missing line # - NSMutableDictionary *dict = [addresses_ objectForKey:addressNum]; - - if (!dict) { - dict = [[NSMutableDictionary alloc] init]; - [addresses_ setObject:dict forKey:addressNum]; - [dict release]; - } - - if (name && ![dict objectForKey:kAddressSymbolKey]) { - [dict setObject:name forKey:kAddressSymbolKey]; - - // only functions, not line number addresses - [functionAddresses_ addObject:addressNum]; - } - - if (isCPP) { - // try demangling - NSString *demangled = [self convertCPlusPlusSymbol:name]; - if (demangled != nil) - [dict setObject:demangled forKey:kAddressConvertedSymbolKey]; - } - - if (line && ![dict objectForKey:kAddressSourceLineKey]) - [dict setObject:[NSNumber numberWithUnsignedInt:line] - forKey:kAddressSourceLineKey]; - -} - -//============================================================================= -- (BOOL)processSymbolItem:(struct nlist_64 *)list stringTable:(char *)table { - uint32_t n_strx = list->n_un.n_strx; - BOOL result = NO; - - // We don't care about non-section specific information except function length - if (list->n_sect == 0 && list->n_type != N_FUN ) - return NO; - - if (list->n_type == N_FUN) { - if (list->n_sect != 0) { - // we get the function address from the first N_FUN - lastStartAddress_ = list->n_value; - } - else { - // an N_FUN from section 0 may follow the initial N_FUN - // giving us function length information - NSMutableDictionary *dict = [addresses_ objectForKey: - [NSNumber numberWithUnsignedLong:lastStartAddress_]]; - - assert(dict); - - // only set the function size the first time - // (sometimes multiple section 0 N_FUN entries appear!) - if (![dict objectForKey:kFunctionSizeKey]) { - [dict setObject:[NSNumber numberWithUnsignedLongLong:list->n_value] - forKey:kFunctionSizeKey]; - } - } - } - - int line = list->n_desc; - - // __TEXT __text section - NSMutableDictionary *archSections = [sectionData_ objectForKey:architecture_]; - - uint32_t mainSection = [[archSections objectForKey:@"__TEXT__text" ] sectionNumber]; - - // Extract debugging information: - // Doc: http://developer.apple.com/documentation/DeveloperTools/gdb/stabs/stabs_toc.html - // Header: /usr/include/mach-o/stab.h: - if (list->n_type == N_SO) { - NSString *src = [NSString stringWithUTF8String:&table[n_strx]]; - NSString *ext = [src pathExtension]; - NSNumber *address = [NSNumber numberWithUnsignedLongLong:list->n_value]; - - // Leopard puts .c files with no code as an offset of 0, but a - // crash can't happen here and it throws off our code that matches - // symbols to line numbers so we ignore them.. - // Return YES because this isn't an error, just something we don't - // care to handle. - if ([address unsignedLongValue] == 0) { - return YES; - } - // TODO(waylonis):Ensure that we get the full path for the source file - // from the first N_SO record - // If there is an extension, we'll consider it source code - if ([ext length]) { - if (!sources_) - sources_ = [[NSMutableDictionary alloc] init]; - // Save the source associated with an address - [sources_ setObject:src forKey:address]; - result = YES; - } - } else if (list->n_type == N_FUN) { - NSString *fn = [NSString stringWithUTF8String:&table[n_strx]]; - NSRange range = [fn rangeOfString:@":" options:NSBackwardsSearch]; - - if (![fn length]) - return NO; - - if (range.length > 0) { - // The function has a ":" followed by some stuff, so strip it off - fn = [fn substringToIndex:range.location]; - } - - [self addFunction:fn line:line address:list->n_value section:list->n_sect ]; - - result = YES; - } else if (list->n_type == N_SLINE && list->n_sect == mainSection) { - [self addFunction:nil line:line address:list->n_value section:list->n_sect ]; - result = YES; - } else if (((list->n_type & N_TYPE) == N_SECT) && !(list->n_type & N_STAB)) { - // Regular symbols or ones that are external - NSString *fn = [NSString stringWithUTF8String:&table[n_strx]]; - - [self addFunction:fn line:0 address:list->n_value section:list->n_sect ]; - result = YES; - } - - return result; -} - -#define SwapLongLongIfNeeded(a) (swap ? NXSwapLongLong(a) : (a)) -#define SwapLongIfNeeded(a) (swap ? NXSwapLong(a) : (a)) -#define SwapIntIfNeeded(a) (swap ? NXSwapInt(a) : (a)) -#define SwapShortIfNeeded(a) (swap ? NXSwapShort(a) : (a)) - -//============================================================================= -- (BOOL)loadSymbolInfo:(void *)base offset:(uint32_t)offset { - NSMutableDictionary *archSections = [sectionData_ objectForKey:architecture_]; - if ([archSections objectForKey:@"__DWARF__debug_info"]) { - // Treat this this as debug information - return [self loadDWARFSymbolInfo:base offset:offset]; - } - - return [self loadSTABSSymbolInfo:base offset:offset]; -} - -//============================================================================= -- (BOOL)loadDWARFSymbolInfo:(void *)base offset:(uint32_t)offset { - - struct mach_header *header = (struct mach_header *) - ((uint32_t)base + offset); - BOOL swap = (header->magic == MH_CIGAM); - - NSMutableDictionary *archSections = [sectionData_ objectForKey:architecture_]; - assert (archSections != nil); - section *dbgInfoSection = [[archSections objectForKey:@"__DWARF__debug_info"] sectionPointer]; - uint32_t debugInfoSize = SwapLongIfNeeded(dbgInfoSection->size); - - // i think this will break if run on a big-endian machine - dwarf2reader::ByteReader byte_reader(swap ? - dwarf2reader::ENDIANNESS_BIG : - dwarf2reader::ENDIANNESS_LITTLE); - - uint64_t dbgOffset = 0; - - dwarf2reader::SectionMap* oneArchitectureSectionMap = [self getSectionMapForArchitecture:architecture_]; - - while (dbgOffset < debugInfoSize) { - // Prepare necessary objects. - dwarf2reader::FunctionMap off_to_funcinfo; - dwarf2reader::FunctionMap address_to_funcinfo; - dwarf2reader::LineMap line_map; - vector files; - vector dirs; - - dwarf2reader::CULineInfoHandler line_info_handler(&files, &dirs, - &line_map); - - dwarf2reader::CUFunctionInfoHandler function_info_handler(&files, &dirs, - &line_map, - &off_to_funcinfo, - &address_to_funcinfo, - &line_info_handler, - *oneArchitectureSectionMap, - &byte_reader); - - dwarf2reader::CompilationUnit compilation_unit(*oneArchitectureSectionMap, - dbgOffset, - &byte_reader, - &function_info_handler); - - dbgOffset += compilation_unit.Start(); - - // The next 3 functions take the info that the dwarf reader - // gives and massages them into the data structures that - // dump_syms uses - [self processDWARFSourceFileInfo:&files]; - [self processDWARFFunctionInfo:&address_to_funcinfo]; - [self processDWARFLineNumberInfo:&line_map]; - } - - return YES; -} - -- (void)processDWARFSourceFileInfo:(vector*) files { - if (!sources_) - sources_ = [[NSMutableDictionary alloc] init]; - // Save the source associated with an address - vector::const_iterator iter = files->begin(); - for (; iter != files->end(); iter++) { - NSString *sourceFile = [NSString stringWithUTF8String:(*iter).name.c_str()]; - if ((*iter).lowpc != ULLONG_MAX) { - NSNumber *address = [NSNumber numberWithUnsignedLongLong:(*iter).lowpc]; - if ([address unsignedLongLongValue] == 0) { - continue; - } - [sources_ setObject:sourceFile forKey:address]; - } - } -} - -- (void)processDWARFFunctionInfo:(dwarf2reader::FunctionMap*)address_to_funcinfo { - for (dwarf2reader::FunctionMap::const_iterator iter = address_to_funcinfo->begin(); - iter != address_to_funcinfo->end(); ++iter) { - if (iter->second->name.empty()) { - continue; - } - - if (!addresses_) - addresses_ = [[NSMutableDictionary alloc] init]; - - NSNumber *addressNum = [NSNumber numberWithUnsignedLongLong:(*iter).second->lowpc]; - - [functionAddresses_ addObject:addressNum]; - - NSMutableDictionary *dict = [addresses_ objectForKey:addressNum]; - - if (!dict) { - dict = [[NSMutableDictionary alloc] init]; - [addresses_ setObject:dict forKey:addressNum]; - [dict release]; - } - - // set name of function if it isn't already set - if (![dict objectForKey:kAddressSymbolKey]) { - NSString *symbolName = [NSString stringWithUTF8String:iter->second->name.c_str()]; - [dict setObject:symbolName forKey:kAddressSymbolKey]; - } - - // try demangling function name if we have a mangled name - if (![dict objectForKey:kAddressConvertedSymbolKey] && - !iter->second->mangled_name.empty()) { - NSString *mangled = [NSString stringWithUTF8String:iter->second->mangled_name.c_str()]; - NSString *demangled = [self convertCPlusPlusSymbol:mangled]; - if (demangled != nil) - [dict setObject:demangled forKey:kAddressConvertedSymbolKey]; - } - - // set line number for beginning of function - if (iter->second->line && ![dict objectForKey:kAddressSourceLineKey]) - [dict setObject:[NSNumber numberWithUnsignedInt:iter->second->line] - forKey:kAddressSourceLineKey]; - - // set function size by subtracting low PC from high PC - if (![dict objectForKey:kFunctionSizeKey]) { - [dict setObject:[NSNumber numberWithUnsignedLongLong:iter->second->highpc - iter->second->lowpc] - forKey:kFunctionSizeKey]; - } - - // Set the file that the function is in - if (![dict objectForKey:kFunctionFileKey]) { - [dict setObject:[NSString stringWithUTF8String:iter->second->file.c_str()] - forKey:kFunctionFileKey]; - } - } -} - -- (void)processDWARFLineNumberInfo:(dwarf2reader::LineMap*)line_map { - for (dwarf2reader::LineMap::const_iterator iter = line_map->begin(); - iter != line_map->end(); - ++iter) { - - NSNumber *addressNum = [NSNumber numberWithUnsignedLongLong:iter->first]; - NSMutableDictionary *dict = [addresses_ objectForKey:addressNum]; - - if (!dict) { - dict = [[NSMutableDictionary alloc] init]; - [addresses_ setObject:dict forKey:addressNum]; - [dict release]; - } - - if (iter->second.second && ![dict objectForKey:kAddressSourceLineKey]) { - [dict setObject:[NSNumber numberWithUnsignedInt:iter->second.second] - forKey:kAddressSourceLineKey]; - } - - // Set the file that the function's address is in - if (![dict objectForKey:kFunctionFileKey]) { - [dict setObject:[NSString stringWithUTF8String:iter->second.first.c_str()] - forKey:kFunctionFileKey]; - } - } -} - -//============================================================================= -- (BOOL)loadSTABSSymbolInfo:(void *)base offset:(uint32_t)offset { - struct mach_header *header = (struct mach_header *)((uint32_t)base + offset); - BOOL swap = (header->magic == MH_CIGAM); - uint32_t count = SwapLongIfNeeded(header->ncmds); - struct load_command *cmd = - (struct load_command *)((uint32_t)header + sizeof(struct mach_header)); - uint32_t symbolTableCommand = SwapLongIfNeeded(LC_SYMTAB); - BOOL result = NO; - - if (!addresses_) - addresses_ = [[NSMutableDictionary alloc] init]; - - for (uint32_t i = 0; cmd && (i < count); ++i) { - if (cmd->cmd == symbolTableCommand) { - struct symtab_command *symtab = (struct symtab_command *)cmd; - uint32_t ncmds = SwapLongIfNeeded(symtab->nsyms); - uint32_t symoff = SwapLongIfNeeded(symtab->symoff); - uint32_t stroff = SwapLongIfNeeded(symtab->stroff); - struct nlist *list = (struct nlist *)((uint32_t)base + symoff + offset); - char *strtab = ((char *)header + stroff); - - // Process each command, looking for debugging stuff - for (uint32_t j = 0; j < ncmds; ++j, ++list) { - // Fill in an nlist_64 structure and process with that - struct nlist_64 nlist64; - nlist64.n_un.n_strx = SwapLongIfNeeded(list->n_un.n_strx); - nlist64.n_type = list->n_type; - nlist64.n_sect = list->n_sect; - nlist64.n_desc = SwapShortIfNeeded(list->n_desc); - nlist64.n_value = (uint64_t)SwapLongIfNeeded(list->n_value); - - // TODO(nealsid): is this broken? we get NO if one symbol fails - // but then we lose that information if another suceeeds - if ([self processSymbolItem:&nlist64 stringTable:strtab]) - result = YES; - } - } - - uint32_t cmdSize = SwapLongIfNeeded(cmd->cmdsize); - cmd = (struct load_command *)((uint32_t)cmd + cmdSize); - } - - return result; -} - -//============================================================================= -- (BOOL)loadSymbolInfo64:(void *)base offset:(uint32_t)offset { - struct mach_header_64 *header = (struct mach_header_64 *) - ((uint32_t)base + offset); - BOOL swap = (header->magic == MH_CIGAM_64); - uint32_t count = SwapLongIfNeeded(header->ncmds); - struct load_command *cmd = - (struct load_command *)((uint32_t)header + sizeof(struct mach_header)); - uint32_t symbolTableCommand = SwapLongIfNeeded(LC_SYMTAB); - BOOL result = NO; - - for (uint32_t i = 0; cmd && (i < count); i++) { - if (cmd->cmd == symbolTableCommand) { - struct symtab_command *symtab = (struct symtab_command *)cmd; - uint32_t ncmds = SwapLongIfNeeded(symtab->nsyms); - uint32_t symoff = SwapLongIfNeeded(symtab->symoff); - uint32_t stroff = SwapLongIfNeeded(symtab->stroff); - struct nlist_64 *list = (struct nlist_64 *)((uint32_t)base + symoff); - char *strtab = ((char *)header + stroff); - - // Process each command, looking for debugging stuff - for (uint32_t j = 0; j < ncmds; ++j, ++list) { - if (!(list->n_type & (N_STAB | N_TYPE))) - continue; - - // Fill in an nlist_64 structure and process with that - struct nlist_64 nlist64; - nlist64.n_un.n_strx = SwapLongIfNeeded(list->n_un.n_strx); - nlist64.n_type = list->n_type; - nlist64.n_sect = list->n_sect; - nlist64.n_desc = SwapShortIfNeeded(list->n_desc); - nlist64.n_value = SwapLongLongIfNeeded(list->n_value); - - if ([self processSymbolItem:&nlist64 stringTable:strtab]) - result = YES; - } - } - - uint32_t cmdSize = SwapLongIfNeeded(cmd->cmdsize); - cmd = (struct load_command *)((uint32_t)cmd + cmdSize); - } - - return result; -} - -//============================================================================= -- (BOOL)loadSymbolInfoForArchitecture { - NSMutableData *data = [[NSMutableData alloc] - initWithContentsOfMappedFile:sourcePath_]; - - NSDictionary *headerInfo = [headers_ objectForKey:architecture_]; - void *base = [data mutableBytes]; - uint32_t offset = - [[headerInfo objectForKey:kHeaderOffsetKey] unsignedLongValue]; - BOOL is64 = [[headerInfo objectForKey:kHeaderIs64BitKey] boolValue]; - BOOL result = is64 ? [self loadSymbolInfo64:base offset:offset] : - [self loadSymbolInfo:base offset:offset]; - - [data release]; - return result; -} - -- (dwarf2reader::SectionMap*)getSectionMapForArchitecture:(NSString*)architecture { - - string currentArch([architecture UTF8String]); - dwarf2reader::SectionMap *oneArchitectureSectionMap; - - ArchSectionMap::const_iterator iter = sectionsForArch_->find(currentArch); - - if (iter == sectionsForArch_->end()) { - oneArchitectureSectionMap = new dwarf2reader::SectionMap(); - sectionsForArch_->insert(make_pair(currentArch, oneArchitectureSectionMap)); - } else { - oneArchitectureSectionMap = iter->second; - } - - return oneArchitectureSectionMap; -} - -//============================================================================= -// build a dictionary of section numbers keyed off a string -// which is the concatenation of the segment name and the section name -- (void)generateSectionDictionary:(struct mach_header*)header { - - BOOL swap = (header->magic == MH_CIGAM); - uint32_t count = SwapLongIfNeeded(header->ncmds); - struct load_command *cmd = - (struct load_command *)((uint32_t)header + sizeof(struct mach_header)); - uint32_t segmentCommand = SwapLongIfNeeded(LC_SEGMENT); - uint32_t sectionNumber = 1; // section numbers are counted from 1 - - cpu_type_t cpu = SwapIntIfNeeded(header->cputype); - - NSString *arch; - - if (cpu & CPU_ARCH_ABI64) - arch = ((cpu & ~CPU_ARCH_ABI64) == CPU_TYPE_X86) ? - @"x86_64" : @"ppc64"; - else - arch = (cpu == CPU_TYPE_X86) ? @"x86" : @"ppc"; - - NSMutableDictionary *archSections; - - if (!sectionData_) { - sectionData_ = [[NSMutableDictionary alloc] init]; - } - - if (![sectionData_ objectForKey:architecture_]) { - [sectionData_ setObject:[[NSMutableDictionary alloc] init] forKey:arch]; - } - - archSections = [sectionData_ objectForKey:arch]; - - dwarf2reader::SectionMap* oneArchitectureSectionMap = [self getSectionMapForArchitecture:arch]; - - // loop through every segment command, then through every section - // contained inside each of them - for (uint32_t i = 0; cmd && (i < count); ++i) { - if (cmd->cmd == segmentCommand) { - struct segment_command *seg = (struct segment_command *)cmd; - section *sect = (section *)((uint32_t)cmd + sizeof(segment_command)); - uint32_t nsects = SwapLongIfNeeded(seg->nsects); - - for (uint32_t j = 0; j < nsects; ++j) { - NSString *segSectName = [NSString stringWithFormat:@"%s%s", - seg->segname, sect->sectname]; - - [archSections setObject:[[MachSection alloc] initWithMachSection:sect andNumber:sectionNumber] - forKey:segSectName]; - - // filter out sections with size 0, offset 0 - if (sect->offset != 0 && sect->size != 0) { - // fill sectionmap for dwarf reader - oneArchitectureSectionMap->insert(make_pair(sect->sectname,make_pair(((const char*)header) + SwapLongIfNeeded(sect->offset), (size_t)SwapLongIfNeeded(sect->size)))); - } - - ++sect; - ++sectionNumber; - } - } - - uint32_t cmdSize = SwapLongIfNeeded(cmd->cmdsize); - cmd = (struct load_command *)((uint32_t)cmd + cmdSize); - } -} - -//============================================================================= -- (BOOL)loadHeader:(void *)base offset:(uint32_t)offset { - struct mach_header *header = (struct mach_header *)((uint32_t)base + offset); - BOOL swap = (header->magic == MH_CIGAM); - uint32_t count = SwapLongIfNeeded(header->ncmds); - struct load_command *cmd = - (struct load_command *)((uint32_t)header + sizeof(struct mach_header)); - uint32_t segmentCommand = SwapLongIfNeeded(LC_SEGMENT); - - [self generateSectionDictionary:header]; - - for (uint32_t i = 0; cmd && (i < count); ++i) { - if (cmd->cmd == segmentCommand) { - struct segment_command *seg = (struct segment_command *)cmd; - - if (!strcmp(seg->segname, "__TEXT")) { - uint32_t addr = SwapLongIfNeeded(seg->vmaddr); - uint32_t size = SwapLongIfNeeded(seg->vmsize); - cpu_type_t cpu = SwapIntIfNeeded(header->cputype); - NSString *cpuStr = (cpu == CPU_TYPE_I386) ? @"x86" : @"ppc"; - - [headers_ setObject:[NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedLongLong:(uint64_t)addr], - kHeaderBaseAddressKey, - [NSNumber numberWithUnsignedLongLong:(uint64_t)size], kHeaderSizeKey, - [NSNumber numberWithUnsignedLong:offset], kHeaderOffsetKey, - [NSNumber numberWithBool:NO], kHeaderIs64BitKey, - [NSNumber numberWithUnsignedLong:cpu], kHeaderCPUTypeKey, - nil] forKey:cpuStr]; - - return YES; - } - } - - uint32_t cmdSize = SwapLongIfNeeded(cmd->cmdsize); - cmd = (struct load_command *)((uint32_t)cmd + cmdSize); - } - - return NO; -} - -//============================================================================= -- (BOOL)loadHeader64:(void *)base offset:(uint32_t)offset { - struct mach_header_64 *header = - (struct mach_header_64 *)((uint32_t)base + offset); - BOOL swap = (header->magic == MH_CIGAM_64); - uint32_t count = SwapLongIfNeeded(header->ncmds); - struct load_command *cmd = - (struct load_command *)((uint32_t)header + sizeof(struct mach_header_64)); - - for (uint32_t i = 0; cmd && (i < count); ++i) { - uint32_t segmentCommand = SwapLongIfNeeded(LC_SEGMENT_64); - if (cmd->cmd == segmentCommand) { - struct segment_command_64 *seg = (struct segment_command_64 *)cmd; - if (!strcmp(seg->segname, "__TEXT")) { - uint64_t addr = SwapLongLongIfNeeded(seg->vmaddr); - uint64_t size = SwapLongLongIfNeeded(seg->vmsize); - cpu_type_t cpu = SwapIntIfNeeded(header->cputype); - cpu &= (~CPU_ARCH_ABI64); - NSString *cpuStr = (cpu == CPU_TYPE_I386) ? @"x86_64" : @"ppc64"; - - [headers_ setObject:[NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedLongLong:addr], kHeaderBaseAddressKey, - [NSNumber numberWithUnsignedLongLong:size], kHeaderSizeKey, - [NSNumber numberWithUnsignedLong:offset], kHeaderOffsetKey, - [NSNumber numberWithBool:YES], kHeaderIs64BitKey, - [NSNumber numberWithUnsignedLong:cpu], kHeaderCPUTypeKey, - nil] forKey:cpuStr]; - return YES; - } - } - - uint32_t cmdSize = SwapLongIfNeeded(cmd->cmdsize); - cmd = (struct load_command *)((uint32_t)cmd + cmdSize); - } - - return NO; -} - -//============================================================================= -- (BOOL)loadModuleInfo { - uint64_t result = 0; - NSMutableData *data = [[NSMutableData alloc] - initWithContentsOfMappedFile:sourcePath_]; - void *bytes = [data mutableBytes]; - struct fat_header *fat = (struct fat_header *)bytes; - - if (!fat) { - [data release]; - return 0; - } - - // Gather some information based on the header - BOOL isFat = fat->magic == FAT_MAGIC || fat->magic == FAT_CIGAM; - BOOL is64 = fat->magic == MH_MAGIC_64 || fat->magic == MH_CIGAM_64; - BOOL is32 = fat->magic == MH_MAGIC || fat->magic == MH_CIGAM; - BOOL swap = fat->magic == FAT_CIGAM || fat->magic == MH_CIGAM_64 || - fat->magic == MH_CIGAM; - - if (!is64 && !is32 && !isFat) { - [data release]; - return 0; - } - - // Load any available architectures and save the information - headers_ = [[NSMutableDictionary alloc] init]; - - if (isFat) { - struct fat_arch *archs = - (struct fat_arch *)((uint32_t)fat + sizeof(struct fat_header)); - uint32_t count = SwapLongIfNeeded(fat->nfat_arch); - - for (uint32_t i = 0; i < count; ++i) { - archs[i].cputype = SwapIntIfNeeded(archs[i].cputype); - archs[i].cpusubtype = SwapIntIfNeeded(archs[i].cpusubtype); - archs[i].offset = SwapLongIfNeeded(archs[i].offset); - archs[i].size = SwapLongIfNeeded(archs[i].size); - archs[i].align = SwapLongIfNeeded(archs[i].align); - - if (archs[i].cputype & CPU_ARCH_ABI64) - result = [self loadHeader64:bytes offset:archs[i].offset]; - else - result = [self loadHeader:bytes offset:archs[i].offset]; - } - } else if (is32) { - result = [self loadHeader:bytes offset:0]; - } else { - result = [self loadHeader64:bytes offset:0]; - } - - [data release]; - return result; -} - -//============================================================================= -static BOOL WriteFormat(int fd, const char *fmt, ...) { - va_list list; - char buffer[4096]; - ssize_t expected, written; - - va_start(list, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, list); - expected = strlen(buffer); - written = write(fd, buffer, strlen(buffer)); - va_end(list); - - return expected == written; -} - -//============================================================================= -- (BOOL)outputSymbolFile:(int)fd { - // Get the baseAddress for this architecture - NSDictionary *archDict = [headers_ objectForKey:architecture_]; - NSNumber *baseAddressNum = [archDict objectForKey:kHeaderBaseAddressKey]; - uint64_t baseAddress = - baseAddressNum ? [baseAddressNum unsignedLongLongValue] : 0; - NSNumber *moduleSizeNum = [archDict objectForKey:kHeaderSizeKey]; - uint64_t moduleSize = - moduleSizeNum ? [moduleSizeNum unsignedLongLongValue] : 0; - - // UUID - FileID file_id([sourcePath_ fileSystemRepresentation]); - unsigned char identifier[16]; - char identifierStr[40]; - const char *moduleName = [[sourcePath_ lastPathComponent] UTF8String]; - int cpu_type = [[archDict objectForKey:kHeaderCPUTypeKey] unsignedLongValue]; - if (file_id.MachoIdentifier(cpu_type, identifier)) { - FileID::ConvertIdentifierToString(identifier, identifierStr, - sizeof(identifierStr)); - } - else { - fprintf(stderr, "Unable to calculate UUID of mach-o binary!\n"); - return NO; - } - - // keep track exclusively of function addresses - // for sanity checking function lengths - functionAddresses_ = [[NSMutableSet alloc] init]; - - // Gather the information - [self loadSymbolInfoForArchitecture]; - - NSArray *sortedAddresses = [[addresses_ allKeys] - sortedArrayUsingSelector:@selector(compare:)]; - - NSArray *sortedFunctionAddresses = [[functionAddresses_ allObjects] - sortedArrayUsingSelector:@selector(compare:)]; - - // position ourselves at the 2nd function - unsigned int funcIndex = 1; - - // Remove the dashes from the string - NSMutableString *compactedStr = - [NSMutableString stringWithCString:identifierStr encoding:NSASCIIStringEncoding]; - [compactedStr replaceOccurrencesOfString:@"-" withString:@"" options:0 - range:NSMakeRange(0, [compactedStr length])]; - - if (!WriteFormat(fd, "MODULE mac %s %s0 %s\n", [architecture_ UTF8String], - [compactedStr UTF8String], moduleName)) { - return NO; - } - - // Sources ordered by address - NSArray *sources = [[sources_ allKeys] - sortedArrayUsingSelector:@selector(compare:)]; - NSMutableDictionary *fileNameToFileIndex = [[NSMutableDictionary alloc] init]; - unsigned int sourceCount = [sources count]; - for (unsigned int i = 0; i < sourceCount; ++i) { - NSString *file = [sources_ objectForKey:[sources objectAtIndex:i]]; - if (!WriteFormat(fd, "FILE %d %s\n", i + 1, [file UTF8String])) - return NO; - - [fileNameToFileIndex setObject:[NSNumber numberWithUnsignedInt:i+1] - forKey:file]; - } - - // Symbols - char terminatingChar = '\n'; - uint32_t fileIdx = 0, nextFileIdx = 0; - uint64_t nextSourceFileAddress = 0; - NSNumber *nextAddress; - uint64_t nextAddressVal; - unsigned int addressCount = [sortedAddresses count]; - - bool insideFunction = false; - - for (unsigned int i = 0; i < addressCount; ++i) { - NSNumber *address = [sortedAddresses objectAtIndex:i]; - // skip sources that have a starting address of 0 - if ([address unsignedLongValue] == 0) { - continue; - } - - uint64_t addressVal = [address unsignedLongLongValue] - baseAddress; - - // Get the next address to calculate the length - if (i + 1 < addressCount) { - nextAddress = [sortedAddresses objectAtIndex:i + 1]; - nextAddressVal = [nextAddress unsignedLongLongValue] - baseAddress; - } else { - nextAddressVal = baseAddress + moduleSize; - // The symbol reader doesn't want a trailing newline - terminatingChar = '\0'; - } - - NSDictionary *dict = [addresses_ objectForKey:address]; - NSNumber *line = [dict objectForKey:kAddressSourceLineKey]; - NSString *symbol = [dict objectForKey:kAddressConvertedSymbolKey]; - - if (!symbol) - symbol = [dict objectForKey:kAddressSymbolKey]; - - // sanity check the function length by making sure it doesn't - // run beyond the next function entry - uint64_t nextFunctionAddress = 0; - if (symbol && funcIndex < [sortedFunctionAddresses count]) { - nextFunctionAddress = [[sortedFunctionAddresses objectAtIndex:funcIndex] - unsignedLongLongValue] - baseAddress; - ++funcIndex; - } - - // Skip some symbols - if ([symbol hasPrefix:@"vtable for"]) - continue; - - if ([symbol hasPrefix:@"__static_initialization_and_destruction_0"]) - continue; - - if ([symbol hasPrefix:@"_GLOBAL__I_"]) - continue; - - if ([symbol hasPrefix:@"__func__."]) - continue; - - if ([symbol hasPrefix:@"__gnu"]) - continue; - - if ([symbol hasPrefix:@"typeinfo "]) - continue; - - if ([symbol hasPrefix:@"EH_frame"]) - continue; - - if ([symbol hasPrefix:@"GCC_except_table"]) - continue; - - if ([symbol hasPrefix:@"__tcf"]) - continue; - - if ([symbol hasPrefix:@"non-virtual thunk"]) - continue; - - // Find the source file (if any) that contains this address - while (sourceCount && (addressVal >= nextSourceFileAddress)) { - fileIdx = nextFileIdx; - - if (nextFileIdx < sourceCount) { - NSNumber *addr = [sources objectAtIndex:nextFileIdx]; - ++nextFileIdx; - nextSourceFileAddress = [addr unsignedLongLongValue] - baseAddress; - } else { - nextSourceFileAddress = baseAddress + moduleSize; - break; - } - } - - NSNumber *functionLength = [dict objectForKey:kFunctionSizeKey]; - - if (line) { - if (symbol && functionLength) { - - uint64_t functionLengthVal = [functionLength unsignedLongLongValue]; - - insideFunction = true; - // sanity check to make sure the length we were told does not exceed - // the space between this function and the next - if (nextFunctionAddress != 0) { - uint64_t functionLengthVal2 = nextFunctionAddress - addressVal; - - if(functionLengthVal > functionLengthVal2 ) { - functionLengthVal = functionLengthVal2; - } - } - - // Function - if (!WriteFormat(fd, "FUNC %llx %llx 0 %s\n", addressVal, - functionLengthVal, [symbol UTF8String])) - return NO; - } - - // Throw out line number information that doesn't correspond to - // any function - if (insideFunction) { - // Source line - uint64_t length = nextAddressVal - addressVal; - - // if fileNameToFileIndex/dict has an entry for the - // file/kFunctionFileKey, we're processing DWARF and have stored - // files for each program counter. If there is no entry, we're - // processing STABS and can use the old method of mapping - // addresses to files(which was basically iterating over a set - // of addresses until we reached one that was greater than the - // high PC of the current file, then moving on to the next file) - NSNumber *fileIndex = [fileNameToFileIndex objectForKey:[dict objectForKey:kFunctionFileKey]]; - if (!WriteFormat(fd, "%llx %llx %d %d\n", addressVal, length, - [line unsignedIntValue], fileIndex ? [fileIndex unsignedIntValue] : fileIdx)) - return NO; - } - } else { - // PUBLIC
      - if (!WriteFormat(fd, "PUBLIC %llx 0 %s\n", addressVal, - [symbol UTF8String])) - return NO; - insideFunction = false; - } - } - - return YES; -} - -//============================================================================= -- (id)initWithContentsOfFile:(NSString *)path { - if ((self = [super init])) { - - if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { - [self autorelease]; - return nil; - } - - sourcePath_ = [path copy]; - - // Test for .DSYM bundle - NSBundle *dsymBundle = [NSBundle bundleWithPath:sourcePath_]; - - if (dsymBundle) { - - // we need to take the DSYM bundle path and remove it's - // extension to get the name of the file inside the resources - // directory of the bundle that actually has the DWARF - // information - // But, Xcode supports something called "Wrapper extension"(see - // build settings), which would make the bundle name - // /tmp/foo/test.kext.dSYM, but the dwarf binary name would - // still be "test". so, now we loop through until deleting the - // extension doesn't change the string - - // e.g. suppose sourcepath_ is /tmp/foo/test.dSYM - - NSString *dwarfBinName = [sourcePath_ lastPathComponent]; - NSString *dwarfBinPath; - - // We use a do/while loop so we can handle files without an extension - do { - dwarfBinName = [dwarfBinName stringByDeletingPathExtension]; - // now, dwarfBinName is "test" - dwarfBinPath = [dsymBundle pathForResource:dwarfBinName ofType:nil inDirectory:@"DWARF"]; - if (dwarfBinPath != nil) - break; - } while (![[dwarfBinName stringByDeletingPathExtension] isEqualToString:dwarfBinName]); - - if (dwarfBinPath == nil) { - NSLog(@"The bundle passed on the command line does not appear to be a DWARF dSYM bundle"); - [self autorelease]; - return nil; - } - - // otherwise we're good to go - [sourcePath_ release]; - - sourcePath_ = [dwarfBinPath copy]; - NSLog(@"Loading DWARF dSYM file from %@", sourcePath_); - } - - sectionsForArch_ = new ArchSectionMap(); - - if (![self loadModuleInfo]) { - [self autorelease]; - return nil; - } - - // If there's more than one, use the native one - if ([headers_ count] > 1) { - const NXArchInfo *localArchInfo = NXGetLocalArchInfo(); - - if (localArchInfo) { - cpu_type_t cpu = localArchInfo->cputype; - NSString *arch; - - if (cpu & CPU_ARCH_ABI64) - arch = ((cpu & ~CPU_ARCH_ABI64) == CPU_TYPE_X86) ? - @"x86_64" : @"ppc64"; - else - arch = (cpu == CPU_TYPE_X86) ? @"x86" : @"ppc"; - - [self setArchitecture:arch]; - } - } else { - // Specify the default architecture - [self setArchitecture:[[headers_ allKeys] objectAtIndex:0]]; - } - } - - return self; -} - -//============================================================================= -- (NSArray *)availableArchitectures { - return [headers_ allKeys]; -} - -//============================================================================= -- (void)dealloc { - [sourcePath_ release]; - [architecture_ release]; - [addresses_ release]; - [functionAddresses_ release]; - [sources_ release]; - [headers_ release]; - delete sectionsForArch_; - - [super dealloc]; -} - -//============================================================================= -- (BOOL)setArchitecture:(NSString *)architecture { - NSString *normalized = [architecture lowercaseString]; - BOOL isValid = NO; - - if ([normalized isEqualToString:@"ppc"]) { - isValid = YES; - } - else if ([normalized isEqualToString:@"i386"]) { - normalized = @"x86"; - isValid = YES; - } - else if ([normalized isEqualToString:@"x86"]) { - isValid = YES; - } - else if ([normalized isEqualToString:@"ppc64"]) { - isValid = YES; - } - else if ([normalized isEqualToString:@"x86_64"]) { - isValid = YES; - } - - if (isValid) { - if (![headers_ objectForKey:normalized]) - return NO; - - [architecture_ autorelease]; - architecture_ = [normalized copy]; - } - - return isValid; -} - -//============================================================================= -- (NSString *)architecture { - return architecture_; -} - -//============================================================================= -- (BOOL)writeSymbolFile:(NSString *)destinationPath { - const char *dest = [destinationPath fileSystemRepresentation]; - int fd; - - if ([[destinationPath substringToIndex:1] isEqualToString:@"-"]) - fd = STDOUT_FILENO; - else - fd = open(dest, O_WRONLY | O_CREAT | O_TRUNC, 0666); - - if (fd == -1) - return NO; - - BOOL result = [self outputSymbolFile:fd]; - - close(fd); - - return result; -} - -@end - -@implementation MachSection - -- (id)initWithMachSection:(section *)sect andNumber:(uint32_t)sectionNumber { - if ((self = [super init])) { - sect_ = sect; - sectionNumber_ = sectionNumber; - } - - return self; -} - -- (section*)sectionPointer { - return sect_; -} - -- (uint32_t)sectionNumber { - return sectionNumber_; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader-inl.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader-inl.h deleted file mode 100644 index 7ccd0fe6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader-inl.h +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef UTIL_DEBUGINFO_BYTEREADER_INL_H__ -#define UTIL_DEBUGINFO_BYTEREADER_INL_H__ - -#include "common/mac/dwarf/bytereader.h" - -namespace dwarf2reader { - -inline uint8 ByteReader::ReadOneByte(const char* buffer) const { - return buffer[0]; -} - -inline uint16 ByteReader::ReadTwoBytes(const char* buffer) const { - const uint16 buffer0 = static_cast(buffer[0]); - const uint16 buffer1 = static_cast(buffer[1]); - if (endian_ == ENDIANNESS_LITTLE) { - return buffer0 | buffer1 << 8; - } else { - return buffer1 | buffer0 << 8; - } -} - -inline uint64 ByteReader::ReadFourBytes(const char* buffer) const { - const uint32 buffer0 = static_cast(buffer[0]); - const uint32 buffer1 = static_cast(buffer[1]); - const uint32 buffer2 = static_cast(buffer[2]); - const uint32 buffer3 = static_cast(buffer[3]); - if (endian_ == ENDIANNESS_LITTLE) { - return buffer0 | buffer1 << 8 | buffer2 << 16 | buffer3 << 24; - } else { - return buffer3 | buffer2 << 8 | buffer1 << 16 | buffer0 << 24; - } -} - -inline uint64 ByteReader::ReadEightBytes(const char* buffer) const { - const uint64 buffer0 = static_cast(buffer[0]); - const uint64 buffer1 = static_cast(buffer[1]); - const uint64 buffer2 = static_cast(buffer[2]); - const uint64 buffer3 = static_cast(buffer[3]); - const uint64 buffer4 = static_cast(buffer[4]); - const uint64 buffer5 = static_cast(buffer[5]); - const uint64 buffer6 = static_cast(buffer[6]); - const uint64 buffer7 = static_cast(buffer[7]); - if (endian_ == ENDIANNESS_LITTLE) { - return buffer0 | buffer1 << 8 | buffer2 << 16 | buffer3 << 24 | - buffer4 << 32 | buffer5 << 40 | buffer6 << 48 | buffer7 << 56; - } else { - return buffer7 | buffer6 << 8 | buffer5 << 16 | buffer4 << 24 | - buffer3 << 32 | buffer2 << 40 | buffer1 << 48 | buffer0 << 56; - } -} - -// Read an unsigned LEB128 number. Each byte contains 7 bits of -// information, plus one bit saying whether the number continues or -// not. - -inline uint64 ByteReader::ReadUnsignedLEB128(const char* buffer, - size_t* len) const { - uint64 result = 0; - size_t num_read = 0; - unsigned int shift = 0; - unsigned char byte; - - do { - byte = *buffer++; - num_read++; - - result |= (static_cast(byte & 0x7f)) << shift; - - shift += 7; - - } while (byte & 0x80); - - *len = num_read; - - return result; -} - -// Read a signed LEB128 number. These are like regular LEB128 -// numbers, except the last byte may have a sign bit set. - -inline int64 ByteReader::ReadSignedLEB128(const char* buffer, - size_t* len) const { - int64 result = 0; - unsigned int shift = 0; - size_t num_read = 0; - unsigned char byte; - - do { - byte = *buffer++; - num_read++; - result |= (static_cast(byte & 0x7f) << shift); - shift += 7; - } while (byte & 0x80); - - if ((shift < 8 * sizeof (result)) && (byte & 0x40)) - result |= -((static_cast(1)) << shift); - *len = num_read; - return result; -} - -inline uint64 ByteReader::ReadOffset(const char* buffer) const { - assert(this->offset_reader_); - return (this->*offset_reader_)(buffer); -} - -inline uint64 ByteReader::ReadAddress(const char* buffer) const { - assert(this->address_reader_); - return (this->*address_reader_)(buffer); -} - -} // namespace dwarf2reader - -#endif // UTIL_DEBUGINFO_BYTEREADER_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.cc b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.cc deleted file mode 100644 index 823cf2b6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.cc +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "common/mac/dwarf/bytereader-inl.h" - -#include "common/mac/dwarf/bytereader.h" - -namespace dwarf2reader { - -ByteReader::ByteReader(enum Endianness endian) - :offset_reader_(NULL), address_reader_(NULL), endian_(endian), - address_size_(0), offset_size_(0) -{ } - -ByteReader::~ByteReader() { } - -void ByteReader::SetOffsetSize(uint8 size) { - offset_size_ = size; - assert(size == 4 || size == 8); - if (size == 4) { - this->offset_reader_ = &ByteReader::ReadFourBytes; - } else { - this->offset_reader_ = &ByteReader::ReadEightBytes; - } -} - -void ByteReader::SetAddressSize(uint8 size) { - address_size_ = size; - assert(size == 4 || size == 8); - if (size == 4) { - this->address_reader_ = &ByteReader::ReadFourBytes; - } else { - this->address_reader_ = &ByteReader::ReadEightBytes; - } -} - -} // namespace dwarf2reader diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.h deleted file mode 100644 index 299dd9ac..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/bytereader.h +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef COMMON_MAC_DWARF_BYTEREADER_H__ -#define COMMON_MAC_DWARF_BYTEREADER_H__ - -#include -#include "common/mac/dwarf/types.h" - -namespace dwarf2reader { - -// We can't use the obvious name of LITTLE_ENDIAN and BIG_ENDIAN -// because it conflicts with a macro -enum Endianness { - ENDIANNESS_BIG, - ENDIANNESS_LITTLE -}; - -// Class that knows how to read both big endian and little endian -// numbers, for use in DWARF2/3 reader. -// Takes an endianness argument. -// To read addresses and offsets, SetAddressSize and SetOffsetSize -// must be called first. -class ByteReader { - public: - explicit ByteReader(enum Endianness endian); - virtual ~ByteReader(); - - // Set the address size to SIZE, which sets up the ReadAddress member - // so that it works. - void SetAddressSize(uint8 size); - - // Set the offset size to SIZE, which sets up the ReadOffset member - // so that it works. - void SetOffsetSize(uint8 size); - - // Return the current offset size - uint8 OffsetSize() const { return offset_size_; } - - // Return the current address size - uint8 AddressSize() const { return address_size_; } - - // Read a single byte from BUFFER and return it as an unsigned 8 bit - // number. - uint8 ReadOneByte(const char* buffer) const; - - // Read two bytes from BUFFER and return it as an unsigned 16 bit - // number. - uint16 ReadTwoBytes(const char* buffer) const; - - // Read four bytes from BUFFER and return it as an unsigned 32 bit - // number. This function returns a uint64 so that it is compatible - // with ReadAddress and ReadOffset. The number it returns will - // never be outside the range of an unsigned 32 bit integer. - uint64 ReadFourBytes(const char* buffer) const; - - // Read eight bytes from BUFFER and return it as an unsigned 64 bit - // number - uint64 ReadEightBytes(const char* buffer) const; - - // Read an unsigned LEB128 (Little Endian Base 128) number from - // BUFFER and return it as an unsigned 64 bit integer. LEN is set - // to the length read. Everybody seems to reinvent LEB128 as a - // variable size integer encoding, DWARF has had it for a long time. - uint64 ReadUnsignedLEB128(const char* buffer, size_t* len) const; - - // Read a signed LEB128 number from BUFFER and return it as an - // signed 64 bit integer. LEN is set to the length read. - int64 ReadSignedLEB128(const char* buffer, size_t* len) const; - - // Read an offset from BUFFER and return it as an unsigned 64 bit - // integer. DWARF2/3 define offsets as either 4 or 8 bytes, - // generally depending on the amount of DWARF2/3 info present. - uint64 ReadOffset(const char* buffer) const; - - // Read an address from BUFFER and return it as an unsigned 64 bit - // integer. DWARF2/3 allow addresses to be any size from 0-255 - // bytes currently. Internally we support 4 and 8 byte addresses, - // and will CHECK on anything else. - uint64 ReadAddress(const char* buffer) const; - - private: - - // Function pointer type for our address and offset readers. - typedef uint64 (ByteReader::*AddressReader)(const char*) const; - - // Read an offset from BUFFER and return it as an unsigned 64 bit - // integer. DWARF2/3 define offsets as either 4 or 8 bytes, - // generally depending on the amount of DWARF2/3 info present. - // This function pointer gets set by SetOffsetSize. - AddressReader offset_reader_; - - // Read an address from BUFFER and return it as an unsigned 64 bit - // integer. DWARF2/3 allow addresses to be any size from 0-255 - // bytes currently. Internally we support 4 and 8 byte addresses, - // and will CHECK on anything else. - // This function pointer gets set by SetAddressSize. - AddressReader address_reader_; - - Endianness endian_; - uint8 address_size_; - uint8 offset_size_; -}; - -} // namespace dwarf2reader - -#endif // COMMON_MAC_DWARF_BYTEREADER_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2enums.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2enums.h deleted file mode 100644 index c52e2b47..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2enums.h +++ /dev/null @@ -1,490 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef COMMON_MAC_DWARF_DWARF2ENUMS_H__ -#define COMMON_MAC_DWARF_DWARF2ENUMS_H__ - -namespace dwarf2reader { - -// These enums do not follow the google3 style only because they are -// known universally (specs, other implementations) by the names in -// exactly this capitalization. -// Tag names and codes. -enum DwarfTag { - DW_TAG_padding = 0x00, - DW_TAG_array_type = 0x01, - DW_TAG_class_type = 0x02, - DW_TAG_entry_point = 0x03, - DW_TAG_enumeration_type = 0x04, - DW_TAG_formal_parameter = 0x05, - DW_TAG_imported_declaration = 0x08, - DW_TAG_label = 0x0a, - DW_TAG_lexical_block = 0x0b, - DW_TAG_member = 0x0d, - DW_TAG_pointer_type = 0x0f, - DW_TAG_reference_type = 0x10, - DW_TAG_compile_unit = 0x11, - DW_TAG_string_type = 0x12, - DW_TAG_structure_type = 0x13, - DW_TAG_subroutine_type = 0x15, - DW_TAG_typedef = 0x16, - DW_TAG_union_type = 0x17, - DW_TAG_unspecified_parameters = 0x18, - DW_TAG_variant = 0x19, - DW_TAG_common_block = 0x1a, - DW_TAG_common_inclusion = 0x1b, - DW_TAG_inheritance = 0x1c, - DW_TAG_inlined_subroutine = 0x1d, - DW_TAG_module = 0x1e, - DW_TAG_ptr_to_member_type = 0x1f, - DW_TAG_set_type = 0x20, - DW_TAG_subrange_type = 0x21, - DW_TAG_with_stmt = 0x22, - DW_TAG_access_declaration = 0x23, - DW_TAG_base_type = 0x24, - DW_TAG_catch_block = 0x25, - DW_TAG_const_type = 0x26, - DW_TAG_constant = 0x27, - DW_TAG_enumerator = 0x28, - DW_TAG_file_type = 0x29, - DW_TAG_friend = 0x2a, - DW_TAG_namelist = 0x2b, - DW_TAG_namelist_item = 0x2c, - DW_TAG_packed_type = 0x2d, - DW_TAG_subprogram = 0x2e, - DW_TAG_template_type_param = 0x2f, - DW_TAG_template_value_param = 0x30, - DW_TAG_thrown_type = 0x31, - DW_TAG_try_block = 0x32, - DW_TAG_variant_part = 0x33, - DW_TAG_variable = 0x34, - DW_TAG_volatile_type = 0x35, - // DWARF 3. - DW_TAG_dwarf_procedure = 0x36, - DW_TAG_restrict_type = 0x37, - DW_TAG_interface_type = 0x38, - DW_TAG_namespace = 0x39, - DW_TAG_imported_module = 0x3a, - DW_TAG_unspecified_type = 0x3b, - DW_TAG_partial_unit = 0x3c, - DW_TAG_imported_unit = 0x3d, - // SGI/MIPS Extensions. - DW_TAG_MIPS_loop = 0x4081, - // HP extensions. See: - // ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz - DW_TAG_HP_array_descriptor = 0x4090, - // GNU extensions. - DW_TAG_format_label = 0x4101, // For FORTRAN 77 and Fortran 90. - DW_TAG_function_template = 0x4102, // For C++. - DW_TAG_class_template = 0x4103, // For C++. - DW_TAG_GNU_BINCL = 0x4104, - DW_TAG_GNU_EINCL = 0x4105, - // Extensions for UPC. See: http://upc.gwu.edu/~upc. - DW_TAG_upc_shared_type = 0x8765, - DW_TAG_upc_strict_type = 0x8766, - DW_TAG_upc_relaxed_type = 0x8767, - // PGI (STMicroelectronics) extensions. No documentation available. - DW_TAG_PGI_kanji_type = 0xA000, - DW_TAG_PGI_interface_block = 0xA020 -}; - - -enum DwarfHasChild { - DW_children_no = 0, - DW_children_yes = 1 -}; - -// Form names and codes. -enum DwarfForm { - DW_FORM_addr = 0x01, - DW_FORM_block2 = 0x03, - DW_FORM_block4 = 0x04, - DW_FORM_data2 = 0x05, - DW_FORM_data4 = 0x06, - DW_FORM_data8 = 0x07, - DW_FORM_string = 0x08, - DW_FORM_block = 0x09, - DW_FORM_block1 = 0x0a, - DW_FORM_data1 = 0x0b, - DW_FORM_flag = 0x0c, - DW_FORM_sdata = 0x0d, - DW_FORM_strp = 0x0e, - DW_FORM_udata = 0x0f, - DW_FORM_ref_addr = 0x10, - DW_FORM_ref1 = 0x11, - DW_FORM_ref2 = 0x12, - DW_FORM_ref4 = 0x13, - DW_FORM_ref8 = 0x14, - DW_FORM_ref_udata = 0x15, - DW_FORM_indirect = 0x16 -}; - -// Attribute names and codes -enum DwarfAttribute { - DW_AT_sibling = 0x01, - DW_AT_location = 0x02, - DW_AT_name = 0x03, - DW_AT_ordering = 0x09, - DW_AT_subscr_data = 0x0a, - DW_AT_byte_size = 0x0b, - DW_AT_bit_offset = 0x0c, - DW_AT_bit_size = 0x0d, - DW_AT_element_list = 0x0f, - DW_AT_stmt_list = 0x10, - DW_AT_low_pc = 0x11, - DW_AT_high_pc = 0x12, - DW_AT_language = 0x13, - DW_AT_member = 0x14, - DW_AT_discr = 0x15, - DW_AT_discr_value = 0x16, - DW_AT_visibility = 0x17, - DW_AT_import = 0x18, - DW_AT_string_length = 0x19, - DW_AT_common_reference = 0x1a, - DW_AT_comp_dir = 0x1b, - DW_AT_const_value = 0x1c, - DW_AT_containing_type = 0x1d, - DW_AT_default_value = 0x1e, - DW_AT_inline = 0x20, - DW_AT_is_optional = 0x21, - DW_AT_lower_bound = 0x22, - DW_AT_producer = 0x25, - DW_AT_prototyped = 0x27, - DW_AT_return_addr = 0x2a, - DW_AT_start_scope = 0x2c, - DW_AT_stride_size = 0x2e, - DW_AT_upper_bound = 0x2f, - DW_AT_abstract_origin = 0x31, - DW_AT_accessibility = 0x32, - DW_AT_address_class = 0x33, - DW_AT_artificial = 0x34, - DW_AT_base_types = 0x35, - DW_AT_calling_convention = 0x36, - DW_AT_count = 0x37, - DW_AT_data_member_location = 0x38, - DW_AT_decl_column = 0x39, - DW_AT_decl_file = 0x3a, - DW_AT_decl_line = 0x3b, - DW_AT_declaration = 0x3c, - DW_AT_discr_list = 0x3d, - DW_AT_encoding = 0x3e, - DW_AT_external = 0x3f, - DW_AT_frame_base = 0x40, - DW_AT_friend = 0x41, - DW_AT_identifier_case = 0x42, - DW_AT_macro_info = 0x43, - DW_AT_namelist_items = 0x44, - DW_AT_priority = 0x45, - DW_AT_segment = 0x46, - DW_AT_specification = 0x47, - DW_AT_static_link = 0x48, - DW_AT_type = 0x49, - DW_AT_use_location = 0x4a, - DW_AT_variable_parameter = 0x4b, - DW_AT_virtuality = 0x4c, - DW_AT_vtable_elem_location = 0x4d, - // DWARF 3 values. - DW_AT_allocated = 0x4e, - DW_AT_associated = 0x4f, - DW_AT_data_location = 0x50, - DW_AT_stride = 0x51, - DW_AT_entry_pc = 0x52, - DW_AT_use_UTF8 = 0x53, - DW_AT_extension = 0x54, - DW_AT_ranges = 0x55, - DW_AT_trampoline = 0x56, - DW_AT_call_column = 0x57, - DW_AT_call_file = 0x58, - DW_AT_call_line = 0x59, - // SGI/MIPS extensions. - DW_AT_MIPS_fde = 0x2001, - DW_AT_MIPS_loop_begin = 0x2002, - DW_AT_MIPS_tail_loop_begin = 0x2003, - DW_AT_MIPS_epilog_begin = 0x2004, - DW_AT_MIPS_loop_unroll_factor = 0x2005, - DW_AT_MIPS_software_pipeline_depth = 0x2006, - DW_AT_MIPS_linkage_name = 0x2007, - DW_AT_MIPS_stride = 0x2008, - DW_AT_MIPS_abstract_name = 0x2009, - DW_AT_MIPS_clone_origin = 0x200a, - DW_AT_MIPS_has_inlines = 0x200b, - // HP extensions. - DW_AT_HP_block_index = 0x2000, - DW_AT_HP_unmodifiable = 0x2001, // Same as DW_AT_MIPS_fde. - DW_AT_HP_actuals_stmt_list = 0x2010, - DW_AT_HP_proc_per_section = 0x2011, - DW_AT_HP_raw_data_ptr = 0x2012, - DW_AT_HP_pass_by_reference = 0x2013, - DW_AT_HP_opt_level = 0x2014, - DW_AT_HP_prof_version_id = 0x2015, - DW_AT_HP_opt_flags = 0x2016, - DW_AT_HP_cold_region_low_pc = 0x2017, - DW_AT_HP_cold_region_high_pc = 0x2018, - DW_AT_HP_all_variables_modifiable = 0x2019, - DW_AT_HP_linkage_name = 0x201a, - DW_AT_HP_prof_flags = 0x201b, // In comp unit of procs_info for -g. - // GNU extensions. - DW_AT_sf_names = 0x2101, - DW_AT_src_info = 0x2102, - DW_AT_mac_info = 0x2103, - DW_AT_src_coords = 0x2104, - DW_AT_body_begin = 0x2105, - DW_AT_body_end = 0x2106, - DW_AT_GNU_vector = 0x2107, - // VMS extensions. - DW_AT_VMS_rtnbeg_pd_address = 0x2201, - // UPC extension. - DW_AT_upc_threads_scaled = 0x3210, - // PGI (STMicroelectronics) extensions. - DW_AT_PGI_lbase = 0x3a00, - DW_AT_PGI_soffset = 0x3a01, - DW_AT_PGI_lstride = 0x3a02 -}; - - -// Line number opcodes. -enum DwarfLineNumberOps { - DW_LNS_extended_op = 0, - DW_LNS_copy = 1, - DW_LNS_advance_pc = 2, - DW_LNS_advance_line = 3, - DW_LNS_set_file = 4, - DW_LNS_set_column = 5, - DW_LNS_negate_stmt = 6, - DW_LNS_set_basic_block = 7, - DW_LNS_const_add_pc = 8, - DW_LNS_fixed_advance_pc = 9, - // DWARF 3. - DW_LNS_set_prologue_end = 10, - DW_LNS_set_epilogue_begin = 11, - DW_LNS_set_isa = 12 -}; - -// Line number extended opcodes. -enum DwarfLineNumberExtendedOps { - DW_LNE_end_sequence = 1, - DW_LNE_set_address = 2, - DW_LNE_define_file = 3, - // HP extensions. - DW_LNE_HP_negate_is_UV_update = 0x11, - DW_LNE_HP_push_context = 0x12, - DW_LNE_HP_pop_context = 0x13, - DW_LNE_HP_set_file_line_column = 0x14, - DW_LNE_HP_set_routine_name = 0x15, - DW_LNE_HP_set_sequence = 0x16, - DW_LNE_HP_negate_post_semantics = 0x17, - DW_LNE_HP_negate_function_exit = 0x18, - DW_LNE_HP_negate_front_end_logical = 0x19, - DW_LNE_HP_define_proc = 0x20 -}; - -// Type encoding names and codes -enum DwarfEncoding { - DW_ATE_address =0x1, - DW_ATE_boolean =0x2, - DW_ATE_complex_float =0x3, - DW_ATE_float =0x4, - DW_ATE_signed =0x5, - DW_ATE_signed_char =0x6, - DW_ATE_unsigned =0x7, - DW_ATE_unsigned_char =0x8, - // DWARF3/DWARF3f - DW_ATE_imaginary_float =0x9, - DW_ATE_packed_decimal =0xa, - DW_ATE_numeric_string =0xb, - DW_ATE_edited =0xc, - DW_ATE_signed_fixed =0xd, - DW_ATE_unsigned_fixed =0xe, - DW_ATE_decimal_float =0xf, - DW_ATE_lo_user =0x80, - DW_ATE_hi_user =0xff -}; - -// Location virtual machine opcodes -enum DwarfOpcode { - DW_OP_addr =0x03, - DW_OP_deref =0x06, - DW_OP_const1u =0x08, - DW_OP_const1s =0x09, - DW_OP_const2u =0x0a, - DW_OP_const2s =0x0b, - DW_OP_const4u =0x0c, - DW_OP_const4s =0x0d, - DW_OP_const8u =0x0e, - DW_OP_const8s =0x0f, - DW_OP_constu =0x10, - DW_OP_consts =0x11, - DW_OP_dup =0x12, - DW_OP_drop =0x13, - DW_OP_over =0x14, - DW_OP_pick =0x15, - DW_OP_swap =0x16, - DW_OP_rot =0x17, - DW_OP_xderef =0x18, - DW_OP_abs =0x19, - DW_OP_and =0x1a, - DW_OP_div =0x1b, - DW_OP_minus =0x1c, - DW_OP_mod =0x1d, - DW_OP_mul =0x1e, - DW_OP_neg =0x1f, - DW_OP_not =0x20, - DW_OP_or =0x21, - DW_OP_plus =0x22, - DW_OP_plus_uconst =0x23, - DW_OP_shl =0x24, - DW_OP_shr =0x25, - DW_OP_shra =0x26, - DW_OP_xor =0x27, - DW_OP_bra =0x28, - DW_OP_eq =0x29, - DW_OP_ge =0x2a, - DW_OP_gt =0x2b, - DW_OP_le =0x2c, - DW_OP_lt =0x2d, - DW_OP_ne =0x2e, - DW_OP_skip =0x2f, - DW_OP_lit0 =0x30, - DW_OP_lit1 =0x31, - DW_OP_lit2 =0x32, - DW_OP_lit3 =0x33, - DW_OP_lit4 =0x34, - DW_OP_lit5 =0x35, - DW_OP_lit6 =0x36, - DW_OP_lit7 =0x37, - DW_OP_lit8 =0x38, - DW_OP_lit9 =0x39, - DW_OP_lit10 =0x3a, - DW_OP_lit11 =0x3b, - DW_OP_lit12 =0x3c, - DW_OP_lit13 =0x3d, - DW_OP_lit14 =0x3e, - DW_OP_lit15 =0x3f, - DW_OP_lit16 =0x40, - DW_OP_lit17 =0x41, - DW_OP_lit18 =0x42, - DW_OP_lit19 =0x43, - DW_OP_lit20 =0x44, - DW_OP_lit21 =0x45, - DW_OP_lit22 =0x46, - DW_OP_lit23 =0x47, - DW_OP_lit24 =0x48, - DW_OP_lit25 =0x49, - DW_OP_lit26 =0x4a, - DW_OP_lit27 =0x4b, - DW_OP_lit28 =0x4c, - DW_OP_lit29 =0x4d, - DW_OP_lit30 =0x4e, - DW_OP_lit31 =0x4f, - DW_OP_reg0 =0x50, - DW_OP_reg1 =0x51, - DW_OP_reg2 =0x52, - DW_OP_reg3 =0x53, - DW_OP_reg4 =0x54, - DW_OP_reg5 =0x55, - DW_OP_reg6 =0x56, - DW_OP_reg7 =0x57, - DW_OP_reg8 =0x58, - DW_OP_reg9 =0x59, - DW_OP_reg10 =0x5a, - DW_OP_reg11 =0x5b, - DW_OP_reg12 =0x5c, - DW_OP_reg13 =0x5d, - DW_OP_reg14 =0x5e, - DW_OP_reg15 =0x5f, - DW_OP_reg16 =0x60, - DW_OP_reg17 =0x61, - DW_OP_reg18 =0x62, - DW_OP_reg19 =0x63, - DW_OP_reg20 =0x64, - DW_OP_reg21 =0x65, - DW_OP_reg22 =0x66, - DW_OP_reg23 =0x67, - DW_OP_reg24 =0x68, - DW_OP_reg25 =0x69, - DW_OP_reg26 =0x6a, - DW_OP_reg27 =0x6b, - DW_OP_reg28 =0x6c, - DW_OP_reg29 =0x6d, - DW_OP_reg30 =0x6e, - DW_OP_reg31 =0x6f, - DW_OP_breg0 =0x70, - DW_OP_breg1 =0x71, - DW_OP_breg2 =0x72, - DW_OP_breg3 =0x73, - DW_OP_breg4 =0x74, - DW_OP_breg5 =0x75, - DW_OP_breg6 =0x76, - DW_OP_breg7 =0x77, - DW_OP_breg8 =0x78, - DW_OP_breg9 =0x79, - DW_OP_breg10 =0x7a, - DW_OP_breg11 =0x7b, - DW_OP_breg12 =0x7c, - DW_OP_breg13 =0x7d, - DW_OP_breg14 =0x7e, - DW_OP_breg15 =0x7f, - DW_OP_breg16 =0x80, - DW_OP_breg17 =0x81, - DW_OP_breg18 =0x82, - DW_OP_breg19 =0x83, - DW_OP_breg20 =0x84, - DW_OP_breg21 =0x85, - DW_OP_breg22 =0x86, - DW_OP_breg23 =0x87, - DW_OP_breg24 =0x88, - DW_OP_breg25 =0x89, - DW_OP_breg26 =0x8a, - DW_OP_breg27 =0x8b, - DW_OP_breg28 =0x8c, - DW_OP_breg29 =0x8d, - DW_OP_breg30 =0x8e, - DW_OP_breg31 =0x8f, - DW_OP_regX =0x90, - DW_OP_fbreg =0x91, - DW_OP_bregX =0x92, - DW_OP_piece =0x93, - DW_OP_deref_size =0x94, - DW_OP_xderef_size =0x95, - DW_OP_nop =0x96, - // DWARF3/DWARF3f - DW_OP_push_object_address =0x97, - DW_OP_call2 =0x98, - DW_OP_call4 =0x99, - DW_OP_call_ref =0x9a, - DW_OP_form_tls_address =0x9b, - DW_OP_call_frame_cfa =0x9c, - DW_OP_bit_piece =0x9d, - DW_OP_lo_user =0xe0, - DW_OP_hi_user =0xff, - // GNU extensions - DW_OP_GNU_push_tls_address =0xe0 -}; - -} // namespace dwarf2reader -#endif // COMMON_MAC_DWARF_DWARF2ENUMS_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.cc b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.cc deleted file mode 100644 index 6e7a2f1d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.cc +++ /dev/null @@ -1,830 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include - -#include "common/mac/dwarf/bytereader-inl.h" -#include "common/mac/dwarf/dwarf2reader.h" -#include "common/mac/dwarf/bytereader.h" -#include "common/mac/dwarf/line_state_machine.h" - -namespace __gnu_cxx -{ - template<> struct hash< std::string > - { - size_t operator()( const std::string& x ) const - { - return hash< const char* >()( x.c_str() ); - } - }; -} - -namespace dwarf2reader { - -// Read a DWARF2/3 initial length field from START, using READER, and -// report the length in LEN. Return the actual initial length. - -static uint64 ReadInitialLength(const char* start, - ByteReader* reader, size_t* len) { - const uint64 initial_length = reader->ReadFourBytes(start); - start += 4; - - // In DWARF2/3, if the initial length is all 1 bits, then the offset - // size is 8 and we need to read the next 8 bytes for the real length. - if (initial_length == 0xffffffff) { - reader->SetOffsetSize(8); - *len = 12; - return reader->ReadOffset(start); - } else { - reader->SetOffsetSize(4); - *len = 4; - } - return initial_length; -} - -CompilationUnit::CompilationUnit(const SectionMap& sections, uint64 offset, - ByteReader* reader, Dwarf2Handler* handler) - : offset_from_section_start_(offset), reader_(reader), - sections_(sections), handler_(handler), abbrevs_(NULL), - string_buffer_(NULL), string_buffer_length_(0) {} - -// Read a DWARF2/3 abbreviation section. -// Each abbrev consists of a abbreviation number, a tag, a byte -// specifying whether the tag has children, and a list of -// attribute/form pairs. -// The list of forms is terminated by a 0 for the attribute, and a -// zero for the form. The entire abbreviation section is terminated -// by a zero for the code. - -void CompilationUnit::ReadAbbrevs() { - if (abbrevs_) - return; - - // First get the debug_abbrev section - SectionMap::const_iterator iter = sections_.find("__debug_abbrev"); - assert(iter != sections_.end()); - - abbrevs_ = new vector; - abbrevs_->resize(1); - - // The only way to check whether we are reading over the end of the - // buffer would be to first compute the size of the leb128 data by - // reading it, then go back and read it again. - const char* abbrev_start = iter->second.first + - header_.abbrev_offset; - const char* abbrevptr = abbrev_start; - const uint64 abbrev_length = iter->second.second - header_.abbrev_offset; - - while (1) { - CompilationUnit::Abbrev abbrev; - size_t len; - const uint32 number = reader_->ReadUnsignedLEB128(abbrevptr, &len); - - if (number == 0) - break; - abbrev.number = number; - abbrevptr += len; - - assert(abbrevptr < abbrev_start + abbrev_length); - const uint32 tag = reader_->ReadUnsignedLEB128(abbrevptr, &len); - abbrevptr += len; - abbrev.tag = static_cast(tag); - - assert(abbrevptr < abbrev_start + abbrev_length); - abbrev.has_children = reader_->ReadOneByte(abbrevptr); - abbrevptr += 1; - - assert(abbrevptr < abbrev_start + abbrev_length); - - while (1) { - const uint32 nametemp = reader_->ReadUnsignedLEB128(abbrevptr, &len); - abbrevptr += len; - - assert(abbrevptr < abbrev_start + abbrev_length); - const uint32 formtemp = reader_->ReadUnsignedLEB128(abbrevptr, &len); - abbrevptr += len; - if (nametemp == 0 && formtemp == 0) - break; - - const enum DwarfAttribute name = - static_cast(nametemp); - const enum DwarfForm form = static_cast(formtemp); - abbrev.attributes.push_back(make_pair(name, form)); - } - assert(abbrev.number == abbrevs_->size()); - abbrevs_->push_back(abbrev); - } -} - -// Skips a single DIE's attributes. -const char* CompilationUnit::SkipDIE(const char* start, - const Abbrev& abbrev) { - for (AttributeList::const_iterator i = abbrev.attributes.begin(); - i != abbrev.attributes.end(); - i++) { - start = SkipAttribute(start, i->second); - } - return start; -} - -// Skips a single attribute form's data. -const char* CompilationUnit::SkipAttribute(const char* start, - enum DwarfForm form) { - size_t len; - - switch (form) { - case DW_FORM_indirect: - form = static_cast(reader_->ReadUnsignedLEB128(start, - &len)); - start += len; - return SkipAttribute(start, form); - break; - - case DW_FORM_data1: - case DW_FORM_flag: - case DW_FORM_ref1: - return start + 1; - break; - case DW_FORM_ref2: - case DW_FORM_data2: - return start + 2; - break; - case DW_FORM_ref4: - case DW_FORM_data4: - return start + 4; - break; - case DW_FORM_ref8: - case DW_FORM_data8: - return start + 8; - break; - case DW_FORM_string: - return start + strlen(start) + 1; - break; - case DW_FORM_udata: - case DW_FORM_ref_udata: - reader_->ReadUnsignedLEB128(start, &len); - return start + len; - break; - - case DW_FORM_sdata: - reader_->ReadSignedLEB128(start, &len); - return start + len; - break; - case DW_FORM_addr: - return start + reader_->AddressSize(); - break; - case DW_FORM_ref_addr: - // DWARF2 and 3 differ on whether ref_addr is address size or - // offset size. - assert(header_.version == 2 || header_.version == 3); - if (header_.version == 2) { - return start + reader_->AddressSize(); - } else if (header_.version == 3) { - return start + reader_->OffsetSize(); - } - break; - - case DW_FORM_block1: - return start + 1 + reader_->ReadOneByte(start); - break; - case DW_FORM_block2: - return start + 2 + reader_->ReadTwoBytes(start); - break; - case DW_FORM_block4: - return start + 4 + reader_->ReadFourBytes(start); - break; - case DW_FORM_block: { - uint64 size = reader_->ReadUnsignedLEB128(start, &len); - return start + size + len; - } - break; - case DW_FORM_strp: - return start + reader_->OffsetSize(); - break; - default: - fprintf(stderr,"Unhandled form type"); - } - fprintf(stderr,"Unhandled form type"); - return NULL; -} - -// Read a DWARF2/3 header. -// The header is variable length in DWARF3 (and DWARF2 as extended by -// most compilers), and consists of an length field, a version number, -// the offset in the .debug_abbrev section for our abbrevs, and an -// address size. -void CompilationUnit::ReadHeader() { - const char* headerptr = buffer_; - size_t initial_length_size; - - assert(headerptr + 4 < buffer_ + buffer_length_); - const uint64 initial_length = ReadInitialLength(headerptr, reader_, - &initial_length_size); - headerptr += initial_length_size; - header_.length = initial_length; - - assert(headerptr + 2 < buffer_ + buffer_length_); - header_.version = reader_->ReadTwoBytes(headerptr); - headerptr += 2; - - assert(headerptr + reader_->OffsetSize() < buffer_ + buffer_length_); - header_.abbrev_offset = reader_->ReadOffset(headerptr); - headerptr += reader_->OffsetSize(); - - assert(headerptr + 1 < buffer_ + buffer_length_); - header_.address_size = reader_->ReadOneByte(headerptr); - reader_->SetAddressSize(header_.address_size); - headerptr += 1; - - after_header_ = headerptr; - - // This check ensures that we don't have to do checking during the - // reading of DIEs. header_.length does not include the size of the - // initial length. - assert(buffer_ + initial_length_size + header_.length <= - buffer_ + buffer_length_); -} - -uint64 CompilationUnit::Start() { - // First get the debug_info section - SectionMap::const_iterator iter = sections_.find("__debug_info"); - assert(iter != sections_.end()); - - // Set up our buffer - buffer_ = iter->second.first + offset_from_section_start_; - buffer_length_ = iter->second.second - offset_from_section_start_; - - // Read the header - ReadHeader(); - - // Figure out the real length from the end of the initial length to - // the end of the compilation unit, since that is the value we - // return. - uint64 ourlength = header_.length; - if (reader_->OffsetSize() == 8) - ourlength += 12; - else - ourlength += 4; - - // See if the user wants this compilation unit, and if not, just return. - if (!handler_->StartCompilationUnit(offset_from_section_start_, - reader_->AddressSize(), - reader_->OffsetSize(), - header_.length, - header_.version)) - return ourlength; - - // Otherwise, continue by reading our abbreviation entries. - ReadAbbrevs(); - - // Set the string section if we have one. - iter = sections_.find("__debug_str"); - if (iter != sections_.end()) { - string_buffer_ = iter->second.first; - string_buffer_length_ = iter->second.second; - } - - // Now that we have our abbreviations, start processing DIE's. - ProcessDIEs(); - - return ourlength; -} - -// If one really wanted, you could merge SkipAttribute and -// ProcessAttribute -// This is all boring data manipulation and calling of the handler. -const char* CompilationUnit::ProcessAttribute( - uint64 dieoffset, const char* start, enum DwarfAttribute attr, - enum DwarfForm form) { - size_t len; - - switch (form) { - // DW_FORM_indirect is never used because it is such a space - // waster. - case DW_FORM_indirect: - form = static_cast(reader_->ReadUnsignedLEB128(start, - &len)); - start += len; - return ProcessAttribute(dieoffset, start, attr, form); - break; - - case DW_FORM_data1: - case DW_FORM_flag: - case DW_FORM_ref1: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOneByte(start)); - return start + 1; - break; - case DW_FORM_ref2: - case DW_FORM_data2: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadTwoBytes(start)); - return start + 2; - break; - case DW_FORM_ref4: - case DW_FORM_data4: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadFourBytes(start)); - return start + 4; - break; - case DW_FORM_ref8: - case DW_FORM_data8: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadEightBytes(start)); - return start + 8; - break; - case DW_FORM_string: { - const char* str = start; - handler_->ProcessAttributeString(dieoffset, attr, form, - str); - return start + strlen(str) + 1; - } - break; - case DW_FORM_udata: - case DW_FORM_ref_udata: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadUnsignedLEB128(start, - &len)); - return start + len; - break; - - case DW_FORM_sdata: - handler_->ProcessAttributeSigned(dieoffset, attr, form, - reader_->ReadSignedLEB128(start, &len)); - return start + len; - break; - case DW_FORM_addr: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadAddress(start)); - return start + reader_->AddressSize(); - break; - case DW_FORM_ref_addr: - // DWARF2 and 3 differ on whether ref_addr is address size or - // offset size. - assert(header_.version == 2 || header_.version == 3); - if (header_.version == 2) { - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadAddress(start)); - return start + reader_->AddressSize(); - } else if (header_.version == 3) { - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOffset(start)); - return start + reader_->OffsetSize(); - } - break; - - case DW_FORM_block1: { - uint64 datalen = reader_->ReadOneByte(start); - handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 1, - datalen); - return start + 1 + datalen; - } - break; - case DW_FORM_block2: { - uint64 datalen = reader_->ReadTwoBytes(start); - handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 2, - datalen); - return start + 2 + datalen; - } - break; - case DW_FORM_block4: { - uint64 datalen = reader_->ReadFourBytes(start); - handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + 4, - datalen); - return start + 4 + datalen; - } - break; - case DW_FORM_block: { - uint64 datalen = reader_->ReadUnsignedLEB128(start, &len); - handler_->ProcessAttributeBuffer(dieoffset, attr, form, start + len, - datalen); - return start + datalen + len; - } - break; - case DW_FORM_strp: { - assert(string_buffer_ != NULL); - - const uint64 offset = reader_->ReadOffset(start); - assert(string_buffer_ + offset < string_buffer_ + string_buffer_length_); - - const char* str = string_buffer_ + offset; - handler_->ProcessAttributeString(dieoffset, attr, form, - str); - return start + reader_->OffsetSize(); - } - break; - default: - fprintf(stderr, "Unhandled form type"); - } - fprintf(stderr, "Unhandled form type"); - return NULL; -} - -const char* CompilationUnit::ProcessDIE(uint64 dieoffset, - const char* start, - const Abbrev& abbrev) { - for (AttributeList::const_iterator i = abbrev.attributes.begin(); - i != abbrev.attributes.end(); - i++) { - start = ProcessAttribute(dieoffset, start, i->first, i->second); - } - return start; -} - -void CompilationUnit::ProcessDIEs() { - const char* dieptr = after_header_; - size_t len; - - // lengthstart is the place the length field is based on. - // It is the point in the header after the initial length field - const char* lengthstart = buffer_; - - // In 64 bit dwarf, the initial length is 12 bytes, because of the - // 0xffffffff at the start. - if (reader_->OffsetSize() == 8) - lengthstart += 12; - else - lengthstart += 4; - - // we need semantics of boost scoped_ptr here - no intention of trasnferring - // ownership of the stack. use const, but then we limit ourselves to not - // ever being able to call .reset() on the smart pointer. - auto_ptr > const die_stack(new stack); - - while (dieptr < (lengthstart + header_.length)) { - // We give the user the absolute offset from the beginning of - // debug_info, since they need it to deal with ref_addr forms. - uint64 absolute_offset = (dieptr - buffer_) + offset_from_section_start_; - - uint64 abbrev_num = reader_->ReadUnsignedLEB128(dieptr, &len); - - dieptr += len; - - // Abbrev == 0 represents the end of a list of children. - if (abbrev_num == 0) { - const uint64 offset = die_stack->top(); - die_stack->pop(); - handler_->EndDIE(offset); - continue; - } - - const Abbrev& abbrev = abbrevs_->at(abbrev_num); - const enum DwarfTag tag = abbrev.tag; - if (!handler_->StartDIE(absolute_offset, tag, abbrev.attributes)) { - dieptr = SkipDIE(dieptr, abbrev); - } else { - dieptr = ProcessDIE(absolute_offset, dieptr, abbrev); - } - - if (abbrev.has_children) { - die_stack->push(absolute_offset); - } else { - handler_->EndDIE(absolute_offset); - } - } -} - -LineInfo::LineInfo(const char* buffer, uint64 buffer_length, - ByteReader* reader, LineInfoHandler* handler): - handler_(handler), reader_(reader), buffer_(buffer), - buffer_length_(buffer_length) { - header_.std_opcode_lengths = NULL; -} - -uint64 LineInfo::Start() { - ReadHeader(); - ReadLines(); - return after_header_ - buffer_; -} - -// The header for a debug_line section is mildly complicated, because -// the line info is very tightly encoded. -void LineInfo::ReadHeader() { - const char* lineptr = buffer_; - size_t initial_length_size; - - const uint64 initial_length = ReadInitialLength(lineptr, reader_, - &initial_length_size); - - lineptr += initial_length_size; - header_.total_length = initial_length; - assert(buffer_ + initial_length_size + header_.total_length <= - buffer_ + buffer_length_); - - // Address size *must* be set by CU ahead of time. - assert(reader_->AddressSize() != 0); - - header_.version = reader_->ReadTwoBytes(lineptr); - lineptr += 2; - - header_.prologue_length = reader_->ReadOffset(lineptr); - lineptr += reader_->OffsetSize(); - - header_.min_insn_length = reader_->ReadOneByte(lineptr); - lineptr += 1; - - header_.default_is_stmt = reader_->ReadOneByte(lineptr); - lineptr += 1; - - header_.line_base = *reinterpret_cast(lineptr); - lineptr += 1; - - header_.line_range = reader_->ReadOneByte(lineptr); - lineptr += 1; - - header_.opcode_base = reader_->ReadOneByte(lineptr); - lineptr += 1; - - header_.std_opcode_lengths = new vector; - header_.std_opcode_lengths->resize(header_.opcode_base + 1); - (*header_.std_opcode_lengths)[0] = 0; - for (int i = 1; i < header_.opcode_base; i++) { - (*header_.std_opcode_lengths)[i] = reader_->ReadOneByte(lineptr); - lineptr += 1; - } - - // It is legal for the directory entry table to be empty. - if (*lineptr) { - uint32 dirindex = 1; - while (*lineptr) { - const char* dirname = lineptr; - handler_->DefineDir(dirname, dirindex); - lineptr += strlen(dirname) + 1; - dirindex++; - } - } - lineptr++; - - // It is also legal for the file entry table to be empty. - if (*lineptr) { - uint32 fileindex = 1; - size_t len; - while (*lineptr) { - const char* filename = lineptr; - lineptr += strlen(filename) + 1; - - uint64 dirindex = reader_->ReadUnsignedLEB128(lineptr, &len); - lineptr += len; - - uint64 mod_time = reader_->ReadUnsignedLEB128(lineptr, &len); - lineptr += len; - - uint64 filelength = reader_->ReadUnsignedLEB128(lineptr, &len); - lineptr += len; - handler_->DefineFile(filename, fileindex, dirindex, mod_time, - filelength); - fileindex++; - } - } - lineptr++; - - after_header_ = lineptr; -} - -/* static */ -bool LineInfo::ProcessOneOpcode(ByteReader* reader, - LineInfoHandler* handler, - const struct LineInfoHeader &header, - const char* start, - struct LineStateMachine* lsm, - size_t* len, - uintptr_t pc, - bool *lsm_passes_pc) { - size_t oplen = 0; - size_t templen; - uint8 opcode = reader->ReadOneByte(start); - oplen++; - start++; - - // If the opcode is great than the opcode_base, it is a special - // opcode. Most line programs consist mainly of special opcodes. - if (opcode >= header.opcode_base) { - opcode -= header.opcode_base; - const int64 advance_address = (opcode / header.line_range) - * header.min_insn_length; - const int64 advance_line = (opcode % header.line_range) - + header.line_base; - - // Check if the lsm passes "pc". If so, mark it as passed. - if (lsm_passes_pc && - lsm->address <= pc && pc < lsm->address + advance_address) { - *lsm_passes_pc = true; - } - - lsm->address += advance_address; - lsm->line_num += advance_line; - lsm->basic_block = true; - *len = oplen; - return true; - } - - // Otherwise, we have the regular opcodes - switch (opcode) { - case DW_LNS_copy: { - lsm->basic_block = false; - *len = oplen; - return true; - } - - case DW_LNS_advance_pc: { - uint64 advance_address = reader->ReadUnsignedLEB128(start, &templen); - oplen += templen; - - // Check if the lsm passes "pc". If so, mark it as passed. - if (lsm_passes_pc && lsm->address <= pc && - pc < lsm->address + header.min_insn_length * advance_address) { - *lsm_passes_pc = true; - } - - lsm->address += header.min_insn_length * advance_address; - } - break; - case DW_LNS_advance_line: { - const int64 advance_line = reader->ReadSignedLEB128(start, &templen); - oplen += templen; - lsm->line_num += advance_line; - - // With gcc 4.2.1, we can get the line_no here for the first time - // since DW_LNS_advance_line is called after DW_LNE_set_address is - // called. So we check if the lsm passes "pc" here, not in - // DW_LNE_set_address. - if (lsm_passes_pc && lsm->address == pc) { - *lsm_passes_pc = true; - } - } - break; - case DW_LNS_set_file: { - const uint64 fileno = reader->ReadUnsignedLEB128(start, &templen); - oplen += templen; - lsm->file_num = fileno; - } - break; - case DW_LNS_set_column: { - const uint64 colno = reader->ReadUnsignedLEB128(start, &templen); - oplen += templen; - lsm->column_num = colno; - } - break; - case DW_LNS_negate_stmt: { - lsm->is_stmt = !lsm->is_stmt; - } - break; - case DW_LNS_set_basic_block: { - lsm->basic_block = true; - } - break; - case DW_LNS_fixed_advance_pc: { - const uint16 advance_address = reader->ReadTwoBytes(start); - oplen += 2; - - // Check if the lsm passes "pc". If so, mark it as passed. - if (lsm_passes_pc && - lsm->address <= pc && pc < lsm->address + advance_address) { - *lsm_passes_pc = true; - } - - lsm->address += advance_address; - } - break; - case DW_LNS_const_add_pc: { - const int64 advance_address = header.min_insn_length - * ((255 - header.opcode_base) - / header.line_range); - - // Check if the lsm passes "pc". If so, mark it as passed. - if (lsm_passes_pc && - lsm->address <= pc && pc < lsm->address + advance_address) { - *lsm_passes_pc = true; - } - - lsm->address += advance_address; - } - break; - case DW_LNS_extended_op: { - const size_t extended_op_len = reader->ReadUnsignedLEB128(start, - &templen); - start += templen; - oplen += templen + extended_op_len; - - const uint64 extended_op = reader->ReadOneByte(start); - start++; - - switch (extended_op) { - case DW_LNE_end_sequence: { - lsm->end_sequence = true; - *len = oplen; - return true; - } - break; - case DW_LNE_set_address: { - // With gcc 4.2.1, we cannot tell the line_no here since - // DW_LNE_set_address is called before DW_LNS_advance_line is - // called. So we do not check if the lsm passes "pc" here. See - // also the comment in DW_LNS_advance_line. - uint64 address = reader->ReadAddress(start); - lsm->address = address; - } - break; - case DW_LNE_define_file: { - const char* filename = start; - - templen = strlen(filename) + 1; - start += templen; - - uint64 dirindex = reader->ReadUnsignedLEB128(start, &templen); - oplen += templen; - - const uint64 mod_time = reader->ReadUnsignedLEB128(start, - &templen); - oplen += templen; - - const uint64 filelength = reader->ReadUnsignedLEB128(start, - &templen); - oplen += templen; - - if (handler) { - handler->DefineFile(filename, -1, dirindex, mod_time, - filelength); - } - } - break; - } - } - break; - - default: { - // Ignore unknown opcode silently - if (header.std_opcode_lengths) { - for (int i = 0; i < (*header.std_opcode_lengths)[opcode]; i++) { - size_t templen; - reader->ReadUnsignedLEB128(start, &templen); - start += templen; - oplen += templen; - } - } - } - break; - } - *len = oplen; - return false; -} - -void LineInfo::ReadLines() { - struct LineStateMachine lsm; - - // lengthstart is the place the length field is based on. - // It is the point in the header after the initial length field - const char* lengthstart = buffer_; - - // In 64 bit dwarf, the initial length is 12 bytes, because of the - // 0xffffffff at the start. - if (reader_->OffsetSize() == 8) - lengthstart += 12; - else - lengthstart += 4; - - const char* lineptr = after_header_; - while (lineptr < lengthstart + header_.total_length) { - lsm.Reset(header_.default_is_stmt); - while (!lsm.end_sequence) { - size_t oplength; - bool add_line = ProcessOneOpcode(reader_, handler_, header_, - lineptr, &lsm, &oplength, (uintptr_t)-1, NULL); - if (add_line) - handler_->AddLine(lsm.address, lsm.file_num, lsm.line_num, - lsm.column_num); - lineptr += oplength; - } - } - - after_header_ = lengthstart + header_.total_length; -} - -} // namespace dwarf2reader diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.h deleted file mode 100644 index f27cdac7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/dwarf2reader.h +++ /dev/null @@ -1,393 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// This file contains definitions related to the DWARF2/3 reader and -// it's handler interfaces. -// The DWARF2/3 specification can be found at -// http://dwarf.freestandards.org and should be considered required -// reading if you wish to modify the implementation. -// Only a cursory attempt is made to explain terminology that is -// used here, as it is much better explained in the standard documents -#ifndef COMMON_MAC_DWARF_DWARF2READER_H__ -#define COMMON_MAC_DWARF_DWARF2READER_H__ - -#include -#include -#include -#include -#include - -#include "common/mac/dwarf/dwarf2enums.h" -#include "common/mac/dwarf/types.h" - -using namespace std; -using namespace __gnu_cxx; - -namespace dwarf2reader { -struct LineStateMachine; -class ByteReader; -class Dwarf2Handler; -class LineInfoHandler; - -// This maps from a string naming a section to a pair containing a -// the data for the section, and the size of the section. -typedef hash_map > SectionMap; -typedef list > AttributeList; -typedef AttributeList::iterator AttributeIterator; -typedef AttributeList::const_iterator ConstAttributeIterator; - -struct LineInfoHeader { - uint64 total_length; - uint16 version; - uint64 prologue_length; - uint8 min_insn_length; // insn stands for instructin - bool default_is_stmt; // stmt stands for statement - int8 line_base; - uint8 line_range; - uint8 opcode_base; - // Use a pointer so that signalsafe_addr2line is able to use this structure - // without heap allocation problem. - vector *std_opcode_lengths; -}; - -class LineInfo { - public: - - // Initializes a .debug_line reader. Buffer and buffer length point - // to the beginning and length of the line information to read. - // Reader is a ByteReader class that has the endianness set - // properly. - LineInfo(const char* buffer_, uint64 buffer_length, - ByteReader* reader, LineInfoHandler* handler); - - virtual ~LineInfo() { - if (header_.std_opcode_lengths) { - delete header_.std_opcode_lengths; - } - } - - // Start processing line info, and calling callbacks in the handler. - // Consumes the line number information for a single compilation unit. - // Returns the number of bytes processed. - uint64 Start(); - - // Process a single line info opcode at START using the state - // machine at LSM. Return true if we should define a line using the - // current state of the line state machine. Place the length of the - // opcode in LEN. - // If LSM_PASSES_PC is non-NULL, this function also checks if the lsm - // passes the address of PC. In other words, LSM_PASSES_PC will be - // set to true, if the following condition is met. - // - // lsm's old address < PC <= lsm's new address - static bool ProcessOneOpcode(ByteReader* reader, - LineInfoHandler* handler, - const struct LineInfoHeader &header, - const char* start, - struct LineStateMachine* lsm, - size_t* len, - uintptr_t pc, - bool *lsm_passes_pc); - - private: - // Reads the DWARF2/3 header for this line info. - void ReadHeader(); - - // Reads the DWARF2/3 line information - void ReadLines(); - - // The associated handler to call processing functions in - LineInfoHandler* handler_; - - // The associated ByteReader that handles endianness issues for us - ByteReader* reader_; - - // A DWARF2/3 line info header. This is not the same size as - // in the actual file, as the one in the file may have a 32 bit or - // 64 bit lengths - - struct LineInfoHeader header_; - - // buffer is the buffer for our line info, starting at exactly where - // the line info to read is. after_header is the place right after - // the end of the line information header. - const char* buffer_; - uint64 buffer_length_; - const char* after_header_; -}; - -// This class is the main interface between the line info reader and -// the client. The virtual functions inside this get called for -// interesting events that happen during line info reading. The -// default implementation does nothing - -class LineInfoHandler { - public: - LineInfoHandler() { } - - virtual ~LineInfoHandler() { } - - // Called when we define a directory. NAME is the directory name, - // DIR_NUM is the directory number - virtual void DefineDir(const string& name, uint32 dir_num) { } - - // Called when we define a filename. NAME is the filename, FILE_NUM - // is the file number which is -1 if the file index is the next - // index after the last numbered index (this happens when files are - // dynamically defined by the line program), DIR_NUM is the - // directory index for the directory name of this file, MOD_TIME is - // the modification time of the file, and LENGTH is the length of - // the file - virtual void DefineFile(const string& name, int32 file_num, - uint32 dir_num, uint64 mod_time, - uint64 length) { } - - // Called when the line info reader has a new line, address pair - // ready for us. ADDRESS is the address of the code, FILE_NUM is - // the file number containing the code, LINE_NUM is the line number in - // that file for the code, and COLUMN_NUM is the column number the code - // starts at, if we know it (0 otherwise). - virtual void AddLine(uint64 address, uint32 file_num, uint32 line_num, - uint32 column_num) { } -}; - -// The base of DWARF2/3 debug info is a DIE (Debugging Information -// Entry. -// DWARF groups DIE's into a tree and calls the root of this tree a -// "compilation unit". Most of the time, their is one compilation -// unit in the .debug_info section for each file that had debug info -// generated. -// Each DIE consists of - -// 1. a tag specifying a thing that is being described (ie -// DW_TAG_subprogram for functions, DW_TAG_variable for variables, etc -// 2. attributes (such as DW_AT_location for location in memory, -// DW_AT_name for name), and data for each attribute. -// 3. A flag saying whether the DIE has children or not - -// In order to gain some amount of compression, the format of -// each DIE (tag name, attributes and data forms for the attributes) -// are stored in a separate table called the "abbreviation table". -// This is done because a large number of DIEs have the exact same tag -// and list of attributes, but different data for those attributes. -// As a result, the .debug_info section is just a stream of data, and -// requires reading of the .debug_abbrev section to say what the data -// means. - -// As a warning to the user, it should be noted that the reason for -// using absolute offsets from the beginning of .debug_info is that -// DWARF2/3 support referencing DIE's from other DIE's by their offset -// from either the current compilation unit start, *or* the beginning -// of the .debug_info section. This means it is possible to reference -// a DIE in one compilation unit from a DIE in another compilation -// unit. This style of reference is usually used to eliminate -// duplicated information that occurs across compilation -// units, such as base types, etc. GCC 3.4+ support this with -// -feliminate-dwarf2-dups. Other toolchains will sometimes do -// duplicate elimination in the linker. - -class CompilationUnit { - public: - - // Initialize a compilation unit. This requires a map of sections, - // the offset of this compilation unit in the debug_info section, a - // ByteReader, and a Dwarf2Handler class to call callbacks in. - CompilationUnit(const SectionMap& sections, uint64 offset, - ByteReader* reader, Dwarf2Handler* handler); - virtual ~CompilationUnit() { - if (abbrevs_) delete abbrevs_; - } - - // Begin reading a Dwarf2 compilation unit, and calling the - // callbacks in the Dwarf2Handler - // Return the offset of the end of the compilation unit - the passed - // in offset. - uint64 Start(); - - private: - - // This struct represents a single DWARF2/3 abbreviation - // The abbreviation tells how to read a DWARF2/3 DIE, and consist of a - // tag and a list of attributes, as well as the data form of each attribute. - struct Abbrev { - uint32 number; - enum DwarfTag tag; - bool has_children; - AttributeList attributes; - }; - - // A DWARF2/3 compilation unit header. This is not the same size as - // in the actual file, as the one in the file may have a 32 bit or - // 64 bit length. - struct CompilationUnitHeader { - uint64 length; - uint16 version; - uint64 abbrev_offset; - uint8 address_size; - } header_; - - // Reads the DWARF2/3 header for this compilation unit. - void ReadHeader(); - - // Reads the DWARF2/3 abbreviations for this compilation unit - void ReadAbbrevs(); - - // Processes a single DIE for this compilation unit and return a new - // pointer just past the end of it - const char* ProcessDIE(uint64 dieoffset, - const char* start, - const Abbrev& abbrev); - - // Processes a single attribute and return a new pointer just past the - // end of it - const char* ProcessAttribute(uint64 dieoffset, - const char* start, - enum DwarfAttribute attr, - enum DwarfForm form); - - // Processes all DIEs for this compilation unit - void ProcessDIEs(); - - // Skips the die with attributes specified in ABBREV starting at - // START, and return the new place to position the stream to. - const char* SkipDIE(const char* start, - const Abbrev& abbrev); - - // Skips the attribute starting at START, with FORM, and return the - // new place to position the stream to. - const char* SkipAttribute(const char* start, - enum DwarfForm form); - - // Offset from section start is the offset of this compilation unit - // from the beginning of the .debug_info section. - uint64 offset_from_section_start_; - - // buffer is the buffer for our CU, starting at .debug_info + offset - // passed in from constructor. - // after_header points to right after the compilation unit header. - const char* buffer_; - uint64 buffer_length_; - const char* after_header_; - - // The associated ByteReader that handles endianness issues for us - ByteReader* reader_; - - // The map of sections in our file to buffers containing their data - const SectionMap& sections_; - - // The associated handler to call processing functions in - Dwarf2Handler* handler_; - - // Set of DWARF2/3 abbreviations for this compilation unit. Indexed - // by abbreviation number, which means that abbrevs_[0] is not - // valid. - vector* abbrevs_; - - // String section buffer and length, if we have a string section. - // This is here to avoid doing a section lookup for strings in - // ProcessAttribute, which is in the hot path for DWARF2 reading. - const char* string_buffer_; - uint64 string_buffer_length_; -}; - -// This class is the main interface between the reader and the -// client. The virtual functions inside this get called for -// interesting events that happen during DWARF2 reading. -// The default implementation skips everything. - -class Dwarf2Handler { - public: - Dwarf2Handler() { } - - virtual ~Dwarf2Handler() { } - - // Start to process a compilation unit at OFFSET from the beginning of the - // debug_info section. Return false if you would like - // to skip this compilation unit. - virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, - uint8 offset_size, uint64 cu_length, - uint8 dwarf_version) { return false; } - - // Start to process a DIE at OFFSET from the beginning of the - // debug_info section. Return false if you would like to skip this - // DIE. - virtual bool StartDIE(uint64 offset, enum DwarfTag tag, - const AttributeList& attrs) { return false; } - - // Called when we have an attribute with unsigned data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - virtual void ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { } - - // Called when we have an attribute with signed data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - virtual void ProcessAttributeSigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - int64 data) { } - - // Called when we have an attribute with a buffer of data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA, and the - // length of the buffer is LENGTH. The buffer is owned by the - // caller, not the callee, and may not persist for very long. If - // you want the data to be available later, it needs to be copied. - virtual void ProcessAttributeBuffer(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const char* data, - uint64 len) { } - - // Called when we have an attribute with string data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - virtual void ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const string& data) { } - - // Called when finished processing the DIE at OFFSET. - // Because DWARF2/3 specifies a tree of DIEs, you may get starts - // before ends of the previous DIE, as we process children before - // ending the parent. - virtual void EndDIE(uint64 offset) { } - -}; - - -} // namespace dwarf2reader - -#endif // UTIL_DEBUGINFO_DWARF2READER_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.cc b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.cc deleted file mode 100644 index b6d3f0fe..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.cc +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// This is a client for the dwarf2reader to extract function and line -// information from the debug info. - -#include -#include -#include - - -#include "common/mac/dwarf/functioninfo.h" - -#include "common/mac/dwarf/bytereader.h" - - -namespace __gnu_cxx -{ - template<> - struct hash - { - size_t operator()(const std::string& k) const; - }; -} - - -namespace dwarf2reader { - -// Given an offset value, its form, and the base offset of the -// compilation unit containing this value, return an absolute offset -// within the .debug_info section. -uint64 GetAbsoluteOffset(uint64 offset, - enum DwarfForm form, - uint64 compilation_unit_base) { - switch (form) { - case DW_FORM_ref1: - case DW_FORM_ref2: - case DW_FORM_ref4: - case DW_FORM_ref8: - case DW_FORM_ref_udata: - return offset + compilation_unit_base; - case DW_FORM_ref_addr: - default: - return offset; - } -} - -CULineInfoHandler::CULineInfoHandler(vector* files, - vector* dirs, - LineMap* linemap):linemap_(linemap), - files_(files), - dirs_(dirs) { - // The dirs and files are 1 indexed, so just make sure we put - // nothing in the 0 vector. - assert(dirs->size() == 0); - assert(files->size() == 0); - dirs->push_back(""); - SourceFileInfo s; - s.name = ""; - s.lowpc = ULLONG_MAX; - files->push_back(s); -} - -void CULineInfoHandler::DefineDir(const string& name, uint32 dir_num) { - // These should never come out of order, actually - assert(dir_num == dirs_->size()); - dirs_->push_back(name); -} - -void CULineInfoHandler::DefineFile(const string& name, - int32 file_num, uint32 dir_num, - uint64 mod_time, uint64 length) { - assert(dir_num >= 0); - assert(dir_num < dirs_->size()); - - // These should never come out of order, actually. - if (file_num == (int32)files_->size() || file_num == -1) { - string dir = dirs_->at(dir_num); - - SourceFileInfo s; - s.lowpc = ULLONG_MAX; - - if (dir == "") { - s.name = name; - } else { - s.name = dir + "/" + name; - } - - files_->push_back(s); - } else { - fprintf(stderr, "error in DefineFile"); - } -} - -void CULineInfoHandler::AddLine(uint64 address, uint32 file_num, - uint32 line_num, uint32 column_num) { - if (file_num < files_->size()) { - linemap_->insert(make_pair(address, make_pair(files_->at(file_num).name.c_str(), - line_num))); - - if(address < files_->at(file_num).lowpc) { - files_->at(file_num).lowpc = address; - } - } else { - fprintf(stderr,"error in AddLine"); - } -} - -bool CUFunctionInfoHandler::StartCompilationUnit(uint64 offset, - uint8 address_size, - uint8 offset_size, - uint64 cu_length, - uint8 dwarf_version) { - current_compilation_unit_offset_ = offset; - return true; -} - - -// For function info, we only care about subprograms and inlined -// subroutines. For line info, the DW_AT_stmt_list lives in the -// compile unit tag. - -bool CUFunctionInfoHandler::StartDIE(uint64 offset, enum DwarfTag tag, - const AttributeList& attrs) { - switch (tag) { - case DW_TAG_subprogram: - case DW_TAG_inlined_subroutine: { - current_function_info_ = new FunctionInfo; - current_function_info_->lowpc = current_function_info_->highpc = 0; - current_function_info_->name = ""; - current_function_info_->line = 0; - current_function_info_->file = ""; - offset_to_funcinfo_->insert(make_pair(offset, current_function_info_)); - }; - // FALLTHROUGH - case DW_TAG_compile_unit: - return true; - default: - return false; - } - return false; -} - -// Only care about the name attribute for functions - -void CUFunctionInfoHandler::ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const string &data) { - if (current_function_info_) { - if (attr == DW_AT_name) - current_function_info_->name = data; - else if(attr == DW_AT_MIPS_linkage_name) - current_function_info_->mangled_name = data; - } -} - -void CUFunctionInfoHandler::ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { - if (attr == DW_AT_stmt_list) { - SectionMap::const_iterator iter = sections_.find("__debug_line"); - assert(iter != sections_.end()); - - // this should be a scoped_ptr but we dont' use boost :-( - auto_ptr lireader(new LineInfo(iter->second.first + data, - iter->second.second - data, - reader_, linehandler_)); - lireader->Start(); - } else if (current_function_info_) { - switch (attr) { - case DW_AT_low_pc: - current_function_info_->lowpc = data; - break; - case DW_AT_high_pc: - current_function_info_->highpc = data; - break; - case DW_AT_decl_line: - current_function_info_->line = data; - break; - case DW_AT_decl_file: - current_function_info_->file = files_->at(data).name; - break; - case DW_AT_specification: { - // Some functions have a "specification" attribute - // which means they were defined elsewhere. The name - // attribute is not repeated, and must be taken from - // the specification DIE. Here we'll assume that - // any DIE referenced in this manner will already have - // been seen, but that's not really required by the spec. - uint64 abs_offset = GetAbsoluteOffset(data, form, current_compilation_unit_offset_); - FunctionMap::iterator iter = offset_to_funcinfo_->find(abs_offset); - if (iter != offset_to_funcinfo_->end()) { - current_function_info_->name = iter->second->name; - current_function_info_->mangled_name = iter->second->mangled_name; - } else { - // If you hit this, this code probably needs to be rewritten. - fprintf(stderr, "Error: DW_AT_specification was seen before the referenced DIE! (Looking for DIE at offset %08llx, in DIE at offset %08llx)\n", abs_offset, offset); - } - break; - } - default: - break; - } - } -} - -void CUFunctionInfoHandler::EndDIE(uint64 offset) { - if (current_function_info_ && current_function_info_->lowpc) - address_to_funcinfo_->insert(make_pair(current_function_info_->lowpc, - current_function_info_)); -} - -} // namespace dwarf2reader diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.h deleted file mode 100644 index 130f182e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/functioninfo.h +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2006 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - - -// This file contains the definitions for a DWARF2/3 information -// collector that uses the DWARF2/3 reader interface to build a mapping -// of addresses to files, lines, and functions. - -#ifndef COMMON_MAC_DWARF_FUNCTIONINFO_H__ -#define COMMON_MAC_DWARF_FUNCTIONINFO_H__ - -#include -#include -#include -#include - -#include "common/mac/dwarf/dwarf2reader.h" - - -namespace dwarf2reader { - -struct FunctionInfo { - // Name of the function - string name; - // Mangled name of the function - string mangled_name; - // File containing this function - string file; - // Line number for start of function. - uint32 line; - // Beginning address for this function - uint64 lowpc; - // End address for this function. - uint64 highpc; -}; - -struct SourceFileInfo { - // Name of the source file name - string name; - // Low address of source file name - uint64 lowpc; -}; - -typedef map FunctionMap; -typedef map > LineMap; - -// This class is a basic line info handler that fills in the dirs, -// file, and linemap passed into it with the data produced from the -// LineInfoHandler. -class CULineInfoHandler: public LineInfoHandler { - public: - - // - CULineInfoHandler(vector* files, - vector* dirs, - LineMap* linemap); - virtual ~CULineInfoHandler() { } - - // Called when we define a directory. We just place NAME into dirs_ - // at position DIR_NUM. - virtual void DefineDir(const string& name, uint32 dir_num); - - // Called when we define a filename. We just place - // concat(dirs_[DIR_NUM], NAME) into files_ at position FILE_NUM. - virtual void DefineFile(const string& name, int32 file_num, - uint32 dir_num, uint64 mod_time, uint64 length); - - - // Called when the line info reader has a new line, address pair - // ready for us. ADDRESS is the address of the code, FILE_NUM is - // the file number containing the code, LINE_NUM is the line number - // in that file for the code, and COLUMN_NUM is the column number - // the code starts at, if we know it (0 otherwise). - virtual void AddLine(uint64 address, uint32 file_num, uint32 line_num, - uint32 column_num); - - - private: - LineMap* linemap_; - vector* files_; - vector* dirs_; -}; - -class CUFunctionInfoHandler: public Dwarf2Handler { - public: - CUFunctionInfoHandler(vector* files, - vector* dirs, - LineMap* linemap, - FunctionMap* offset_to_funcinfo, - FunctionMap* address_to_funcinfo, - CULineInfoHandler* linehandler, - const SectionMap& sections, - ByteReader* reader) - : files_(files), dirs_(dirs), linemap_(linemap), - offset_to_funcinfo_(offset_to_funcinfo), - address_to_funcinfo_(address_to_funcinfo), - linehandler_(linehandler), sections_(sections), - reader_(reader), current_function_info_(NULL) { } - - virtual ~CUFunctionInfoHandler() { } - - // Start to process a compilation unit at OFFSET from the beginning of the - // debug_info section. We want to see all compilation units, so we - // always return true. - - virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, - uint8 offset_size, uint64 cu_length, - uint8 dwarf_version); - - // Start to process a DIE at OFFSET from the beginning of the - // debug_info section. We only care about function related DIE's. - virtual bool StartDIE(uint64 offset, enum DwarfTag tag, - const AttributeList& attrs); - - // Called when we have an attribute with unsigned data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - virtual void ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data); - - // Called when we have an attribute with string data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - virtual void ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const string& data); - - // Called when finished processing the DIE at OFFSET. - // Because DWARF2/3 specifies a tree of DIEs, you may get starts - // before ends of the previous DIE, as we process children before - // ending the parent. - virtual void EndDIE(uint64 offset); - - private: - vector* files_; - vector* dirs_; - LineMap* linemap_; - FunctionMap* offset_to_funcinfo_; - FunctionMap* address_to_funcinfo_; - CULineInfoHandler* linehandler_; - const SectionMap& sections_; - ByteReader* reader_; - FunctionInfo* current_function_info_; - uint64 current_compilation_unit_offset_; -}; - -} // namespace dwarf2reader -#endif // COMMON_MAC_DWARF_FUNCTIONINFO_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/line_state_machine.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/line_state_machine.h deleted file mode 100644 index 4ba98f74..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/line_state_machine.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2008 Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - - -#ifndef COMMON_MAC_DWARF_LINE_STATE_MACHINE_H__ -#define COMMON_MAC_DWARF_LINE_STATE_MACHINE_H__ - -namespace dwarf2reader { - -// This is the format of a DWARF2/3 line state machine that we process -// opcodes using. There is no need for anything outside the lineinfo -// processor to know how this works. -struct LineStateMachine { - void Reset(bool default_is_stmt) { - file_num = 1; - address = 0; - line_num = 1; - column_num = 0; - is_stmt = default_is_stmt; - basic_block = false; - end_sequence = false; - } - - uint32 file_num; - uint64 address; - uint64 line_num; - uint32 column_num; - bool is_stmt; // stmt means statement. - bool basic_block; - bool end_sequence; -}; - -} // namespace dwarf2reader - - -#endif // COMMON_MAC_DWARF_LINE_STATE_MACHINE_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/types.h b/thirdparty/google-breakpad/r318/src/common/mac/dwarf/types.h deleted file mode 100644 index 76541597..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/dwarf/types.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2008 Google, 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - - -// This file contains some typedefs for basic types - - -#ifndef _COMMON_MAC_DWARF_TYPES_H__ -#define _COMMON_MAC_DWARF_TYPES_H__ - -typedef signed char int8; -typedef short int16; -typedef int int32; -typedef long long int64; - -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned int uint32; -typedef unsigned long long uint64; - -#endif // _COMMON_MAC_DWARF_TYPES_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.h deleted file mode 100644 index 83482e92..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.h +++ /dev/null @@ -1,380 +0,0 @@ -// -// GTMCarbonEvent.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import - -#import "GTMDefines.h" - -@class GTMCarbonEventHandler; - -// Objective C wrapper for a Carbon Event -@interface GTMCarbonEvent : NSObject { - @private - EventRef event_; //Event we are wrapping. STRONG -} - - -// Create an event of class |inClass| and kind |inKind| -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)eventWithClass:(UInt32)inClass kind:(UInt32)kind; - -// Create an event based on |event|. Retains |event|. -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)eventWithEvent:(EventRef)event; - -// Create an event based on the event currently being handled. -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)currentEvent; - -// Create an event of class |inClass| and kind |inKind| -// -// Returns: -// GTMCarbonEvent -// -- (id)initWithClass:(UInt32)inClass kind:(UInt32)kind; - -// Create an event based on |event|. Retains |event|. -// -// Returns: -// GTMCarbonEvent -// -- (id)initWithEvent:(EventRef)event; - -// Get the event's class. -// -// Returns: -// event class -// -- (UInt32)eventClass; - -// Get the event's kind. -// -// Returns: -// event kind -// -- (UInt32)eventKind; - -// Set the event's time. -// -// Arguments: -// time - the time you want associated with the event -// -- (void)setTime:(EventTime)eventTime; - -// Get the event's time. -// -// Returns: -// the time associated with the event -// -- (EventTime)time; - -// Get the event's eventref for passing to other carbon functions. -// -// Returns: -// the event ref associated with the event -// -- (EventRef)event; - -// Sets (or adds) a parameter to an event. Try not to use this function -// directly. Look at the PARAM_TEMPLATE_DECL/DEFN macros below. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// size - the size of the data that |data| points to. -// data - pointer to the data you want to set the parameter to. -// -- (void)setParameterNamed:(EventParamName)name - type:(EventParamType)type - size:(ByteCount)size - data:(const void *)data; - - -// Gets a parameter from an event. Try not to use this function -// directly. Look at the PARAM_TEMPLATE_DECL/DEFN macros below. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// size - the size of the data that |data| points to. -// data - pointer to the buffer that you want to fill with your data. -// -// Returns: -// YES is parameter is retrieved successfully. NO if parameter doesn't exist. -// -- (BOOL)getParameterNamed:(EventParamName)name - type:(EventParamType)type - size:(ByteCount)size - data:(void *)data; - -// Gets a the size of a parameter from an event. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// -// Returns: -// The size of the buffer required to hold the parameter. 0 if parameter -// doesn't exist. -// -- (ByteCount)sizeOfParameterNamed:(EventParamName)name - type:(EventParamType)type; - -// Sends event to an event target with options -// -// Arguments: -// target - target to send event to. -// options - options to send event. See SendEventToEventTargetWithOptions -// for details. -// -// Returns: -// OSStatus value. -// -- (OSStatus)sendToTarget:(GTMCarbonEventHandler *)target - options:(OptionBits)options; - -// Post event to an event queue. -// -// Arguments: -// queue - queue to post it to. -// priority - priority to post it with -// -// Returns: -// OSStatus value. -// -- (OSStatus)postToQueue:(EventQueueRef)queue priority:(EventPriority)priority; - -// Post event to current queue with standard priority. -// -- (void)postToCurrentQueue; - -// Post event to main queue with standard priority. -// -- (void)postToMainQueue; - -@end - -// Macros for defining simple set/get parameter methods for GTMCarbonEvent. See -// the category GTMCarbonEvent (GTMCarbonEventGettersAndSetters) for an example -// of their use. GTM_PARAM_TEMPLATE_DECL2/DEFN2 is for the case where the -// parameter name is different than the parameter type (rare, but it does -// occur...e.g. for a Rect, the name is typeQDRectangle, and the type is Rect, -// so it would be GTM_PARAM_TEMPLATE_DECL2(QDRectangle, Rect) ). In most cases -// you will just use GTM_PARAM_TEMPLATE_DECL/DEFN. -#define GTM_PARAM_TEMPLATE_DECL2(paramName, paramType) \ -- (void)set##paramName##ParameterNamed:(EventParamName)name data:(paramType *)data; \ -- (BOOL)get##paramName##ParameterNamed:(EventParamName)name data:(paramType *)data; - -#define GTM_PARAM_TEMPLATE_DEFN2(paramName, paramType) \ -- (void)set##paramName##ParameterNamed:(EventParamName)name data:(paramType *)data { \ -[self setParameterNamed:name type:type##paramName size:sizeof(paramType) data:data]; \ -} \ -- (BOOL)get##paramName##ParameterNamed:(EventParamName)name data:(paramType *)data { \ -return [self getParameterNamed:name type:type##paramName size:sizeof(paramType) data:data]; \ -} - -#define GTM_PARAM_TEMPLATE_DECL(paramType) GTM_PARAM_TEMPLATE_DECL2(paramType, paramType) -#define GTM_PARAM_TEMPLATE_DEFN(paramType) GTM_PARAM_TEMPLATE_DEFN2(paramType, paramType) - - -// Category defining some basic types that we want to be able to easily set and -// get from GTMCarbonEvents -@interface GTMCarbonEvent (GTMCarbonEventGettersAndSetters) -GTM_PARAM_TEMPLATE_DECL(UInt32) -GTM_PARAM_TEMPLATE_DECL(EventHotKeyID) -@end - -// Utility function for converting between modifier types -// Arguments: -// inCocoaModifiers - keyboard modifiers in carbon form -// (NSCommandKeyMask etc) -// Returns: -// Carbon modifiers equivalent to |inCocoaModifiers| (cmdKey etc) -GTM_EXTERN UInt32 GTMCocoaToCarbonKeyModifiers(NSUInteger inCocoaModifiers); - -// Utility function for converting between modifier types -// Arguments: -// inCarbonModifiers - keyboard modifiers in carbon form (cmdKey etc) -// Returns: -// cocoa modifiers equivalent to |inCocoaModifiers| (NSCommandKeyMask etc) -GTM_EXTERN NSUInteger GTMCarbonToCocoaKeyModifiers(UInt32 inCarbonModifiers); - -// An "abstract" superclass for objects that handle events such as -// menus, HIObjects, etc. -// -// Subclasses are expected to override the eventTarget and -// handleEvent:handler: methods to customize them. -@interface GTMCarbonEventHandler : NSObject { - @private - // handler we are wrapping - // lazily created in the eventHandler method - EventHandlerRef eventHandler_; - __weak id delegate_; // Our delegate - // Does our delegate respond to the gtm_eventHandler:receivedEvent:handler: - // selector? Cached for performance reasons. - BOOL delegateRespondsToHandleEvent_; -} - -// Registers the event handler to listen for |events|. -// -// Arguments: -// events - an array of EventTypeSpec. The events to register for. -// count - the number of EventTypeSpecs in events. -// -- (void)registerForEvents:(const EventTypeSpec *)events count:(size_t)count; - -// Causes the event handler to stop listening for |events|. -// -// Arguments: -// events - an array of EventTypeSpec. The events to register for. -// count - the number of EventTypeSpecs in events. -// -- (void)unregisterForEvents:(const EventTypeSpec *)events count:(size_t)count; - -// To be overridden by subclasses to respond to events. -// -// All subclasses should call [super handleEvent:handler:] if they -// don't handle the event themselves. -// -// Arguments: -// event - the event to be handled -// handler - the call ref in case you want to call CallNextEventHandler -// in your method -// Returns: -// OSStatus - usually either noErr or eventNotHandledErr -// -- (OSStatus)handleEvent:(GTMCarbonEvent *)event - handler:(EventHandlerCallRef)handler; - -// To be overridden by subclasses to return the event target for the class. -// GTMCarbonEventHandler's implementation returns NULL. -// -// Returns: -// The event target ref. -// -- (EventTargetRef)eventTarget; - -// Gets the underlying EventHandlerRef for that this class wraps. -// -// Returns: -// The EventHandlerRef this class wraps. -// -- (EventHandlerRef)eventHandler; - -// Gets the delegate for the handler -// -// Returns: -// the delegate -- (id)delegate; - -// Sets the delegate for the handler -// -// Arguments: -// delegate - the delegate to set to -- (void)setDelegate:(id)delegate; - -@end - -// Category for methods that a delegate of GTMCarbonEventHandlerDelegate may -// want to implement. -@interface NSObject (GTMCarbonEventHandlerDelegate) - -// If a delegate implements this method it gets called before every event -// that the handler gets sent. If it returns anything but eventNotHandledErr, -// the handlers handlerEvent:handler: method will not be called, and -// the return value returned by the delegate will be returned back to the -// carbon event dispatch system. This allows you to override any method -// that a handler may implement. -// -// Arguments: -// delegate - the delegate to set to -// -- (OSStatus)gtm_eventHandler:(GTMCarbonEventHandler *)sender - receivedEvent:(GTMCarbonEvent *)event - handler:(EventHandlerCallRef)handler; - -@end - -// A general OSType for use when setting properties on GTMCarbonEvent objects. -// This is the "signature" as part of commandIDs, controlsIDs, and properties. -// 'GooG' -GTM_EXTERN const OSType kGTMCarbonFrameworkSignature; - -// An event handler class representing the event monitor event handler -// -// there is only one of these per application. This way you can put -// event handlers directly on the dispatcher if necessary. -@interface GTMCarbonEventMonitorHandler : GTMCarbonEventHandler -// Accessor to get the GTMCarbonEventMonitorHandler singleton. -// -// Returns: -// pointer to the GTMCarbonEventMonitorHandler singleton. -+ (GTMCarbonEventMonitorHandler *)sharedEventMonitorHandler; -@end - -// An event handler class representing the toolbox dispatcher event handler -// -// there is only one of these per application. This way you can put -// event handlers directly on the dispatcher if necessary. -@interface GTMCarbonEventDispatcherHandler : GTMCarbonEventHandler { - @private - NSMutableDictionary *hotkeys_; // Collection of registered hotkeys -} - -// Accessor to get the GTMCarbonEventDispatcherHandler singleton. -// -// Returns: -// pointer to the GTMCarbonEventDispatcherHandler singleton. -+ (GTMCarbonEventDispatcherHandler *)sharedEventDispatcherHandler; - -// Registers a hotkey. When the hotkey is executed by the user, target will be -// called with selector. -// Arguments: -// keyCode - the virtual keycode of the hotkey -// cocoaModifiers - the modifiers that need to be used with |keyCode|. NB -// that these are cocoa modifiers, so NSCommandKeyMask etc. -// target - instance that will get |action| called when the hotkey fires -// action - the method to call on |target| when the hotkey fires -// onPress - is YES, the hotkey fires on the keydown (usual) otherwise -// it fires on the key up. -// Returns: -// a EventHotKeyRef that you can use with other Carbon functions, or for -// unregistering the hotkey. Note that all hotkeys are unregistered -// automatically when an app quits. Will be NULL on failure. -- (EventHotKeyRef)registerHotKey:(NSUInteger)keyCode - modifiers:(NSUInteger)cocoaModifiers - target:(id)target - action:(SEL)action - whenPressed:(BOOL)onPress; - -// Unregisters a hotkey previously registered with registerHotKey. -// Arguments: -// keyRef - the EventHotKeyRef to unregister -- (void)unregisterHotKey:(EventHotKeyRef)keyRef; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.m deleted file mode 100644 index 16c46c83..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEvent.m +++ /dev/null @@ -1,710 +0,0 @@ -// -// GTMCarbonEvent.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMCarbonEvent.h" -#import "GTMObjectSingleton.h" -#import "GTMDebugSelectorValidation.h" - -// Wrapper for all the info we need about a hotkey that we can store in a -// Foundation storage class. We expecct selector to have this signature: -// - (void)hitHotKey:sender; -@interface GTMCarbonHotKey : NSObject { - @private - EventHotKeyID id_; // EventHotKeyID for this hotkey. - id target_; // Object we are going to call when the hotkey is hit - SEL selector_; // Selector we are going to call on target_ - BOOL onKeyDown_; // Do we do it on key down or on key up? -} - -// Create a HotKey record -// Arguments: -// keyID - id of the hotkey -// target - object we are going to call when the hotkey is hit -// action - selector we are going to call on target -// whenPressed - do we do it on key down or key up? -// Returns: -// a hotkey record, or nil on failure -- (id)initWithHotKey:(EventHotKeyID)keyID - target:(id)target - action:(SEL)selector - whenPressed:(BOOL)onKeyDown; - -// Does this record match key |keyID| -// Arguments: -// keyID - the id to match against -// Returns: -// Yes if we match this key id -- (BOOL)matchesHotKeyID:(EventHotKeyID)keyID; - -// Make target perform selector -// Returns: -// Yes if handled -- (BOOL)sendAction:(id)sender; - -// Do we do it on key down or key up? -// Returns: -// Yes if on keydown -- (BOOL)onKeyDown; - -@end - -@implementation GTMCarbonEvent - -// Create an event of class |inClass| and kind |inKind| -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)eventWithClass:(UInt32)inClass kind:(UInt32)kind { - return [[[[self class] alloc] initWithClass:inClass kind:kind] autorelease]; -} - - -// Create an event based on |event|. Retains |event|. -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)eventWithEvent:(EventRef)event { - return [[[[self class] alloc] initWithEvent:event] autorelease]; -} - - -// Create an event based on the event currently being handled. -// -// Returns: -// Autoreleased GTMCarbonEvent -// -+ (id)currentEvent { - return [[self class] eventWithEvent:GetCurrentEvent()]; -} - - -// Create an event of class |inClass| and kind |inKind| -// -// Returns: -// GTMCarbonEvent -// -- (id)initWithClass:(UInt32)inClass kind:(UInt32)kind { - if ((self = [super init])) { - verify_noerr(CreateEvent(kCFAllocatorDefault, inClass, kind, - 0, kEventAttributeNone, &event_)); - } - return self; -} - - -// Create an event based on |event|. Retains |event|. -// -// Returns: -// GTMCarbonEvent -// -- (id)initWithEvent:(EventRef)event { - if ((self = [super init])) { - if (event) { - event_ = RetainEvent(event); - } - } - return self; -} - - -// This does a proper event copy, but ignores the |zone|. No way to do a copy -// of an event into a specific zone. -// -// Arguments: -// zone - the zone to copy to -// Returns: -// the copied event. nil on failure -- (id)copyWithZone:(NSZone *)zone { - GTMCarbonEvent *carbonEvent = nil; - EventRef newEvent = CopyEvent([self event]); - if (newEvent) { - carbonEvent = [[[self class] allocWithZone:zone] initWithEvent:newEvent]; - ReleaseEvent(newEvent); - } - return carbonEvent; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - if (event_) { - ReleaseEvent(event_); - event_ = NULL; - } - [super finalize]; -} -#endif - -// releases our retained event -// -- (void)dealloc { - if (event_) { - ReleaseEvent(event_); - event_ = NULL; - } - [super dealloc]; -} - -// description utliity for debugging -// -- (NSString *)description { - char cls[5]; - UInt32 kind; - - // Need everything bigendian if we are printing out the class as a "string" - *((UInt32 *)cls) = CFSwapInt32HostToBig([self eventClass]); - kind = [self eventKind]; - cls[4] = 0; - return [NSString stringWithFormat:@"GTMCarbonEvent '%s' %d", cls, kind]; -} - - -// Get the event's class. -// -// Returns: -// event class -// -- (UInt32)eventClass { - return GetEventClass(event_); -} - - -// Get the event's kind. -// -// Returns: -// event kind -// -- (UInt32)eventKind { - return GetEventKind(event_); -} - - -// Set the event's time. -// -// Arguments: -// time - the time you want associated with the event -// -- (void)setTime:(EventTime)eventTime { - verify_noerr(SetEventTime(event_, eventTime)); -} - - -// Get the event's time. -// -// Returns: -// the time associated with the event -// -- (EventTime)time { - return GetEventTime(event_); -} - - -// Get the event's eventref for passing to other carbon functions. -// -// Returns: -// the event ref associated with the event -// -- (EventRef)event { - return event_; -} - - -// Sends event to an event target with options -// -// Arguments: -// target - target to send event to. -// options - options to send event. See SendEventToEventTargetWithOptions -// for details. -// -// Returns: -// OSStatus value. -// -- (OSStatus)sendToTarget:(GTMCarbonEventHandler *)target - options:(OptionBits)options { - return SendEventToEventTargetWithOptions(event_, - [target eventTarget], options); -} - -// Post event to an event queue. -// -// Arguments: -// queue - queue to post it to. -// priority - priority to post it with -// -// Returns: -// OSStatus value. -// -- (OSStatus)postToQueue:(EventQueueRef)queue priority:(EventPriority)priority { - return PostEventToQueue(queue, event_, priority); -} - - -// Post event to current queue with standard priority. -// -- (void)postToCurrentQueue { - verify_noerr([self postToQueue:GetCurrentEventQueue() - priority:kEventPriorityStandard]); -} - - -// Post event to main queue with standard priority. -// -- (void)postToMainQueue { - verify_noerr([self postToQueue:GetMainEventQueue() - priority:kEventPriorityStandard]); -} - - -// Sets (or adds) a parameter to an event. Try not to use this function -// directly. Look at the PARAM_TEMPLATE_DECL/DEFN macros below. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// size - the size of the data that |data| points to. -// data - pointer to the data you want to set the parameter to. -// -- (void)setParameterNamed:(EventParamName)name - type:(EventParamType)type - size:(ByteCount)size - data:(const void *)data { - verify_noerr(SetEventParameter(event_, name, type, size, data)); -} - - -// Gets a parameter from an event. Try not to use this function -// directly. Look at the PARAM_TEMPLATE_DECL/DEFN macros below. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// size - the size of the data that |data| points to. -// data - pointer to the buffer that you want to fill with your data. -// -// Returns: -// YES is parameter is retrieved successfully. NO if parameter doesn't exist. -// -- (BOOL)getParameterNamed:(EventParamName)name - type:(EventParamType)type - size:(ByteCount)size - data:(void *)data { - OSStatus status = GetEventParameter(event_, name, type, - NULL, size, NULL, data); - return status == noErr; -} - - -// Gets a the size of a parameter from an event. -// -// Arguments: -// name - the parameter name. -// type - the parameter type. -// -// Returns: -// The size of the buffer required to hold the parameter. 0 if parameter -// doesn't exist. -// -- (ByteCount)sizeOfParameterNamed:(EventParamName)name - type:(EventParamType)type { - ByteCount size = 0; - verify_noerr(GetEventParameter(event_, name, type, NULL, 0, &size, NULL)); - return size; -} - -@end - -@implementation GTMCarbonEvent (GTMCarbonEventGettersAndSetters) -GTM_PARAM_TEMPLATE_DEFN(UInt32) -GTM_PARAM_TEMPLATE_DEFN(EventHotKeyID) -@end - -UInt32 GTMCocoaToCarbonKeyModifiers(NSUInteger inCocoaModifiers) { - UInt32 carbModifiers = 0; - if (inCocoaModifiers & NSAlphaShiftKeyMask) carbModifiers |= alphaLock; - if (inCocoaModifiers & NSShiftKeyMask) carbModifiers |= shiftKey; - if (inCocoaModifiers & NSControlKeyMask) carbModifiers |= controlKey; - if (inCocoaModifiers & NSAlternateKeyMask) carbModifiers |= optionKey; - if (inCocoaModifiers & NSCommandKeyMask) carbModifiers |= cmdKey; - return carbModifiers; -} - -NSUInteger GTMCarbonToCocoaKeyModifiers(UInt32 inCarbonModifiers) { - NSUInteger nsModifiers = 0; - if (inCarbonModifiers & alphaLock) nsModifiers |= NSAlphaShiftKeyMask; - if (inCarbonModifiers & shiftKey) nsModifiers |= NSShiftKeyMask; - if (inCarbonModifiers & controlKey) nsModifiers |= NSControlKeyMask; - if (inCarbonModifiers & optionKey) nsModifiers |= NSAlternateKeyMask; - if (inCarbonModifiers & cmdKey) nsModifiers |= NSCommandKeyMask; - return nsModifiers; -} - -const OSType kGTMCarbonFrameworkSignature = 'GTM '; - -@implementation GTMCarbonEventHandler - -// Does our delegate respond to eventHandler:receivedEvent:handler: -// -// Returns: -// YES if delegate responds to eventHandler:receivedEvent:handler: -- (BOOL) delegateRespondsToHandleEvent { - return delegateRespondsToHandleEvent_; -} - -// Registers the event handler to listen for |events|. -// -// Arguments: -// events - an array of EventTypeSpec. The events to register for. -// count - the number of EventTypeSpecs in events. -// -- (void)registerForEvents:(const EventTypeSpec *)events count:(size_t)count { - verify_noerr(AddEventTypesToHandler([self eventHandler], count, events)); -} - -// Causes the event handler to stop listening for |events|. -// -// Arguments: -// events - an array of EventTypeSpec. The events to register for. -// count - the number of EventTypeSpecs in events. -// -- (void)unregisterForEvents:(const EventTypeSpec *)events count:(size_t)count { - verify_noerr(RemoveEventTypesFromHandler([self eventHandler], count, events)); -} - -// To be overridden by subclasses to respond to events. All subclasses should -// call [super handleEvent:handler:] if they don't handle the event themselves. -// -// Arguments: -// event - the event to be handled -// handler - the call ref in case you want to call CallNextEventHandler -// in your method -// Returns: -// OSStatus - usually either noErr or eventNotHandledErr -// -- (OSStatus)handleEvent:(GTMCarbonEvent *)event - handler:(EventHandlerCallRef)handler { - OSStatus status = eventNotHandledErr; - require(event, CantUseParams); - require(handler, CantUseParams); - require([event event], CantUseParams); - status = CallNextEventHandler(handler, [event event]); -CantUseParams: - return status; -} - -// To be overridden by subclasses to return the event target for the class. -// GTMCarbonEventHandler's implementation returns NULL. -// -// Returns: -// The event target ref. -// -- (EventTargetRef)eventTarget { - // Defaults implementation needs to be overridden - return NULL; -} - -// C callback for our registered EventHandlerUPP. -// -// Arguments: -// inHandler - handler given to us from Carbon Event system -// inEvent - the event we are handling -// inUserData - refcon that we gave to the carbon event system. Is a -// GTMCarbonEventHandler in disguise. -// Returns: -// status of event handler -// -static OSStatus EventHandler(EventHandlerCallRef inHandler, - EventRef inEvent, - void *inUserData) { - GTMCarbonEvent *event = [GTMCarbonEvent eventWithEvent:inEvent]; - GTMCarbonEventHandler *handler= (GTMCarbonEventHandler *)inUserData; - check([handler isKindOfClass:[GTMCarbonEventHandler class]]); - - // First check to see if our delegate cares about this event. If the delegate - // handles it (i.e responds to it and does not return eventNotHandledErr) we - // do not pass it on to default handling. - OSStatus status = eventNotHandledErr; - if ([handler delegateRespondsToHandleEvent]) { - status = [[handler delegate] gtm_eventHandler:handler - receivedEvent:event - handler:inHandler]; - } - if (status == eventNotHandledErr) { - status = [handler handleEvent:event handler:inHandler]; - } - return status; -} - -// Gets the underlying EventHandlerRef for that this class wraps. -// -// Returns: -// The EventHandlerRef this class wraps. -// -- (EventHandlerRef)eventHandler { - if (!eventHandler_) { - static EventHandlerUPP sHandlerProc = NULL; - if ( sHandlerProc == NULL ) { - sHandlerProc = NewEventHandlerUPP(EventHandler); - } - verify_noerr(InstallEventHandler([self eventTarget], - sHandlerProc, 0, - NULL, self, &eventHandler_)); - } - return eventHandler_; -} - -// Gets the delegate for the handler -// -// Returns: -// the delegate -- (id)delegate { - return delegate_; -} - -// Sets the delegate for the handler and caches whether it responds to -// the eventHandler:receivedEvent:handler: selector for performance purposes. -// -// Arguments: -// delegate - the delegate for the handler -- (void)setDelegate:(id)delegate { - delegate_ = delegate; - SEL selector = @selector(gtm_eventHandler:receivedEvent:handler:); - delegateRespondsToHandleEvent_ = [delegate respondsToSelector:selector]; -} - -@end - -@implementation GTMCarbonEventMonitorHandler - -GTMOBJECT_SINGLETON_BOILERPLATE(GTMCarbonEventMonitorHandler, - sharedEventMonitorHandler); - -- (EventTargetRef)eventTarget { - return GetEventMonitorTarget(); -} - -@end - -@implementation GTMCarbonEventDispatcherHandler - -GTMOBJECT_SINGLETON_BOILERPLATE(GTMCarbonEventDispatcherHandler, - sharedEventDispatcherHandler); - -// Register for the events we handle, and set up the dictionaries we need -// to keep track of the hotkeys and commands that we handle. -// Returns: -// GTMCarbonApplication or nil on failure -- (id)init { - if ((self = [super init])) { - static EventTypeSpec events[] = { - { kEventClassKeyboard, kEventHotKeyPressed }, - { kEventClassKeyboard, kEventHotKeyReleased }, - }; - [self registerForEvents:events count:GetEventTypeCount(events)]; - hotkeys_ = [[NSMutableDictionary alloc] initWithCapacity:0]; - } - return self; -} - -// COV_NF_START -// Singleton, we never get released. Just here for completeness. -- (void)dealloc { - [hotkeys_ release]; - [super dealloc]; -} -// COV_NF_END - -- (EventTargetRef)eventTarget { - return GetEventDispatcherTarget(); -} - -// Registers a hotkey. When the hotkey is executed by the user, target will be -// called with selector. -// Arguments: -// keyCode - the virtual keycode of the hotkey -// cocoaModifiers - the modifiers that need to be used with |keyCode|. NB -// that these are cocoa modifiers, so NSCommandKeyMask etc. -// target - instance that will get |action| called when the hotkey fires -// action - the method to call on |target| when the hotkey fires -// onKeyDown - is YES, the hotkey fires on the keydown (usual) otherwise -// it fires on the key up. -// Returns: -// a EventHotKeyRef that you can use with other Carbon functions, or for -// unregistering the hotkey. Note that all hotkeys are unregistered -// automatically when an app quits. Will be NULL on failure. -- (EventHotKeyRef)registerHotKey:(NSUInteger)keyCode - modifiers:(NSUInteger)cocoaModifiers - target:(id)target - action:(SEL)selector - whenPressed:(BOOL)onKeyDown { - static UInt32 sCurrentID = 0; - - EventHotKeyRef theRef = NULL; - EventHotKeyID keyID; - keyID.signature = kGTMCarbonFrameworkSignature; - keyID.id = ++sCurrentID; - GTMCarbonHotKey *newKey = [[[GTMCarbonHotKey alloc] initWithHotKey:keyID - target:target - action:selector - whenPressed:onKeyDown] - autorelease]; - require(newKey, CantCreateKey); - require_noerr(RegisterEventHotKey((UInt32)keyCode, - GTMCocoaToCarbonKeyModifiers(cocoaModifiers), - keyID, - [self eventTarget], - 0, - &theRef), CantRegisterHotkey); - - - [hotkeys_ setObject:newKey forKey:[NSValue valueWithPointer:theRef]]; -CantCreateKey: -CantRegisterHotkey: - return theRef; -} - -// Unregisters a hotkey previously registered with registerHotKey. -// Arguments: -// keyRef - the EventHotKeyRef to unregister -- (void)unregisterHotKey:(EventHotKeyRef)keyRef { - NSValue *key = [NSValue valueWithPointer:keyRef]; - check([hotkeys_ objectForKey:key] != nil); - [hotkeys_ removeObjectForKey:key]; - verify_noerr(UnregisterEventHotKey(keyRef)); -} - -// A hotkey has been hit. See if it is one of ours, and if so fire it. -// Arguments: -// event - the hotkey even that was received -// Returns: -// Yes if handled. -- (BOOL)handleHotKeyEvent:(GTMCarbonEvent *)event { - EventHotKeyID keyID; - BOOL handled = [event getEventHotKeyIDParameterNamed:kEventParamDirectObject - data:&keyID]; - if (handled) { - GTMCarbonHotKey *hotkey; - GTM_FOREACH_OBJECT(hotkey, [hotkeys_ allValues]) { - if ([hotkey matchesHotKeyID:keyID]) { - EventKind kind = [event eventKind]; - BOOL onKeyDown = [hotkey onKeyDown]; - if ((kind == kEventHotKeyPressed && onKeyDown) || - (kind == kEventHotKeyReleased && !onKeyDown)) { - handled = [hotkey sendAction:self]; - } - break; - } - } - } - return handled; -} - -// Currently we handle hotkey and command events here. If we get one of them -// we dispatch them off to the handlers above. Otherwise we just call up to -// super. -// Arguments: -// event - the event to check -// handler - the handler call ref -// Returns: -// OSStatus -- (OSStatus)handleEvent:(GTMCarbonEvent *)event - handler:(EventHandlerCallRef)handler { - OSStatus theStatus = eventNotHandledErr; - if ([event eventClass] == kEventClassKeyboard) { - EventKind kind = [event eventKind]; - if (kind == kEventHotKeyPressed || kind == kEventHotKeyReleased) { - theStatus = [self handleHotKeyEvent:event] ? noErr : eventNotHandledErr; - } - } - // We didn't handle it, maybe somebody upstairs will. - if (theStatus == eventNotHandledErr) { - theStatus = [super handleEvent:event handler:handler]; - } - return theStatus; -} - -@end - -@implementation GTMCarbonHotKey - -// Init a HotKey record. In debug version make sure that the selector we are -// passed matches what we expect. ( -// Arguments: -// keyID - id of the hotkey -// target - object we are going to call when the hotkey is hit -// action - selector we are going to call on target -// whenPressed - do we do it on key down or key up? -// Returns: -// a hotkey record, or nil on failure -- (id)initWithHotKey:(EventHotKeyID)keyID - target:(id)target - action:(SEL)selector - whenPressed:(BOOL)onKeyDown { - if ((self = [super init])) { - if(!target || !selector) { - [self release]; - return nil; - } - id_ = keyID; - target_ = [target retain]; - selector_ = selector; - onKeyDown_ = onKeyDown; - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, - selector, - @encode(void), - @encode(id), - NULL); - } - return self; -} - -- (void)dealloc { - [target_ release]; - [super dealloc]; -} - -// Does this record match key |keyID| -// Arguments: -// keyID - the id to match against -// Returns: -// Yes if we match this key id -- (BOOL)matchesHotKeyID:(EventHotKeyID)keyID { - return (id_.signature == keyID.signature) && (id_.id == keyID.id); -} - -- (BOOL)sendAction:(id)sender { - BOOL handled = NO; - @try { - [target_ performSelector:selector_ withObject:sender]; - handled = YES; - } - @catch (NSException * e) { - handled = NO; - _GTMDevLog(@"Exception fired in hotkey: %@ (%@)", [e name], [e reason]); - } // COV_NF_LINE - return handled; -} - -- (BOOL)onKeyDown { - return onKeyDown_; -} - -@end - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEventTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEventTest.m deleted file mode 100644 index f7b4d54f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMCarbonEventTest.m +++ /dev/null @@ -1,367 +0,0 @@ -// -// GTMCarbonEventTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMCarbonEvent.h" -#import "GTMUnitTestingUtilities.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMCarbonEventTest : GTMTestCase { - @private - GTMCarbonEvent *event_; -} -@end - -@interface GTMCarbonEventHandlerTest : GTMTestCase { - @private - GTMCarbonEventHandler *handler_; -} -@end - -@interface GTMCarbonEventMonitorHandlerTest : GTMTestCase -@end - -@interface GTMCarbonEventDispatcherHandlerTest : GTMTestCase { - @private - BOOL hotKeyHit_; -} -@end - -static const UInt32 kTestClass = 'foo '; -static const UInt32 kTestKind = 'bar '; -static const UInt32 kTestParameterName = 'baz '; -static const UInt32 kTestBadParameterName = 'bom '; -static const UInt32 kTestParameterValue = 'bam '; - -@implementation GTMCarbonEventTest -- (void)setUp { - event_ = [[GTMCarbonEvent eventWithClass:kTestClass kind:kTestKind] retain]; -} - -- (void)tearDown { - [event_ release]; -} - -- (void)testCopy { - GTMCarbonEvent *event2 = [[event_ copy] autorelease]; - STAssertNotNil(event2, nil); -} - -- (void)testEventWithClassAndKind { - STAssertEquals([event_ eventClass], kTestClass, nil); - STAssertEquals([event_ eventKind], kTestKind, nil); -} - -- (void)testEventWithEvent { - GTMCarbonEvent *event2 = [GTMCarbonEvent eventWithEvent:[event_ event]]; - STAssertEquals([event2 event], [event_ event], nil); -} - -- (void)testCurrentEvent { - EventRef eventRef = GetCurrentEvent(); - GTMCarbonEvent *event = [GTMCarbonEvent currentEvent]; - STAssertEquals([event event], eventRef, nil); -} - -- (void)testEventClass { - [self testEventWithClassAndKind]; -} - -- (void)testEventKind { - [self testEventWithClassAndKind]; -} - -- (void)testSetTime { - EventTime eventTime = [event_ time]; - STAssertNotEquals(eventTime, kEventDurationNoWait, nil); - STAssertNotEquals(eventTime, kEventDurationForever, nil); - [event_ setTime:kEventDurationForever]; - EventTime testTime = [event_ time]; - STAssertEquals(testTime, kEventDurationForever, nil); - [event_ setTime:eventTime]; - STAssertEquals([event_ time], eventTime, nil); -} - -- (void)testTime { - [self testSetTime]; -} - -- (void)testEvent { - [self testEventWithEvent]; -} - -- (void)testSetParameterNamed { - UInt32 theData = kTestParameterValue; - [event_ setUInt32ParameterNamed:kTestParameterName data:&theData]; - theData = 0; - STAssertEquals([event_ sizeOfParameterNamed:kTestParameterName - type:typeUInt32], - sizeof(UInt32), nil); - STAssertTrue([event_ getUInt32ParameterNamed:kTestParameterName - data:&theData], nil); - STAssertEquals(theData, kTestParameterValue, nil); -} - -- (void)testGetParameterNamed { - [self testSetParameterNamed]; - UInt32 theData = kTestParameterValue; - STAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName - data:&theData], nil); - STAssertFalse([event_ getUInt32ParameterNamed:kTestBadParameterName - data:NULL], nil); - -} - -- (void)testSizeOfParameterNamed { - [self testSetParameterNamed]; -} - -- (void)testHasParameterNamed { - [self testSetParameterNamed]; -} - -- (OSStatus)gtm_eventHandler:(GTMCarbonEventHandler *)sender - receivedEvent:(GTMCarbonEvent *)event - handler:(EventHandlerCallRef)handler { - OSStatus status = eventNotHandledErr; - if ([event eventClass] == kTestClass && [event eventKind] == kTestKind) { - status = noErr; - } - return status; -} - -- (void)testSendToTarget { - EventTypeSpec types = { kTestClass, kTestKind }; - GTMCarbonEventDispatcherHandler *handler - = [[GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler] - autorelease]; - [handler registerForEvents:&types count:1]; - OSStatus status = [event_ sendToTarget:handler options:0]; - STAssertErr(status, eventNotHandledErr, @"status: %ld", status); - [handler setDelegate:self]; - status = [event_ sendToTarget:handler options:0]; - STAssertNoErr(status, @"status: %ld", status); - [handler unregisterForEvents:&types count:1]; -} - -- (void)testPostToQueue { - EventQueueRef eventQueue = GetMainEventQueue(); - [event_ postToMainQueue]; - OSStatus status = [event_ postToQueue:eventQueue - priority:kEventPriorityStandard]; - STAssertErr(status, eventAlreadyPostedErr, @"status: %ld", status); - EventTypeSpec types = { kTestClass, kTestKind }; - status = FlushEventsMatchingListFromQueue(eventQueue, 1, &types); - STAssertNoErr(status, @"status: %ld", status); - - eventQueue = GetCurrentEventQueue(); - [event_ postToCurrentQueue]; - status = [event_ postToQueue:eventQueue priority:kEventPriorityStandard]; - STAssertErr(status, eventAlreadyPostedErr, @"status: %ld", status); - status = FlushEventsMatchingListFromQueue(eventQueue, 1, &types); - STAssertNoErr(status, @"status: %ld", status); -} - -- (void)testPostToMainQueue { - [self testPostToQueue]; -} - -- (void)testPostToCurrentQueue { - STAssertEquals(GetCurrentEventQueue(), GetMainEventQueue(), nil); - [self testPostToMainQueue]; -} - -- (void)testDescription { - NSString *descString - = [NSString stringWithFormat:@"GTMCarbonEvent 'foo ' %d", kTestKind]; - STAssertEqualObjects([event_ description], descString, nil); -} -@end - -@implementation GTMCarbonEventHandlerTest - -- (void)setUp { - handler_ = [[GTMCarbonEventHandler alloc] init]; -} - -- (void)tearDown { - [handler_ release]; -} - -- (void)testEventTarget { - STAssertNULL([handler_ eventTarget], nil); -} - -- (void)testEventHandler { - [GTMUnitTestDevLogDebug expectPattern: - @"DebugAssert: GoogleToolboxForMac: event CantUseParams .*"]; - STAssertErr([handler_ handleEvent:nil handler:nil], eventNotHandledErr, nil); -} - -- (void)testDelegate { - [handler_ setDelegate:self]; - STAssertEqualObjects([handler_ delegate], self, nil); - [handler_ setDelegate:nil]; - STAssertNil([handler_ delegate], nil); -} - - -- (void)testSetDelegate { - [self testDelegate]; -} - -@end - -@implementation GTMCarbonEventMonitorHandlerTest - -- (void)testEventHandler { - GTMCarbonEventMonitorHandler *monitor - = [GTMCarbonEventMonitorHandler sharedEventMonitorHandler]; - STAssertEquals([monitor eventTarget], GetEventMonitorTarget(), nil); -} - -@end - -@implementation GTMCarbonEventDispatcherHandlerTest - -- (void)testEventHandler { - GTMCarbonEventDispatcherHandler *dispatcher - = [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler]; - STAssertEquals([dispatcher eventTarget], GetEventDispatcherTarget(), nil); -} - -- (void)hitHotKey:(id)sender { - hotKeyHit_ = YES; - [NSApp stop:self]; -} - -- (void)hitExceptionalHotKey:(id)sender { - [NSException raise:@"foo" format:@"bar"]; -} - -- (void)testRegisterHotKeyModifiersTargetActionWhenPressed { - - // This test can't be run if the screen saver is active because the security - // agent blocks us from sending events via remote operations - if (![GTMUnitTestingUtilities isScreenSaverActive]) { - GTMCarbonEventDispatcherHandler *dispatcher - = [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler]; - STAssertNotNil(dispatcher, @"Unable to acquire singleton"); - UInt32 keyMods = (NSShiftKeyMask | NSControlKeyMask - | NSAlternateKeyMask | NSCommandKeyMask); - EventHotKeyRef hotKey; - [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: GoogleToolboxForMac: " - @"newKey CantCreateKey .*"]; - STAssertNULL([dispatcher registerHotKey:0x5 - modifiers:keyMods - target:nil - action:nil - whenPressed:YES], - @"Shouldn't have created hotkey"); -#if DEBUG - // This tests debug selector validation, so we only can do it in debug. - [GTMUnitTestDevLogDebug expectPattern:@"RecordedNSAssert in " - @"GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments - " - @"\"GTMCarbonEventDispatcherHandlerTest\" selector \"badSelector:\" is " - @"unimplemented or misnamed \\(.*/GTMDebugSelectorValidation.h:[0-9]*\\)"]; - STAssertThrowsSpecificNamed([dispatcher registerHotKey:0x5 - modifiers:keyMods - target:self - action:@selector(badSelector:) - whenPressed:YES], - NSException, NSInternalInconsistencyException, - @"Shouldn't have created hotkey"); -#endif - hotKey = [dispatcher registerHotKey:0x5 - modifiers:keyMods - target:self - action:@selector(hitHotKey:) - whenPressed:YES]; - STAssertNotNULL(hotKey, @"Unable to create hotkey"); - - hotKeyHit_ = NO; - - // Post the hotkey combo to the event queue. If everything is working - // correctly hitHotKey: should get called, and hotKeyHit_ will be set for - // us. We run the event loop for a set amount of time waiting for this to - // happen. - [GTMUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods]; - NSDate* future = [NSDate dateWithTimeIntervalSinceNow:1.0f]; - [GTMUnitTestingUtilities runUntilDate:future]; - STAssertTrue(hotKeyHit_, @"Hot key never got fired."); - [dispatcher unregisterHotKey:hotKey]; - } -} - -- (void)testRegisterHotKeyModifiersTargetActionWhenPressedException { - - // This test can't be run if the screen saver is active because the security - // agent blocks us from sending events via remote operations - if (![GTMUnitTestingUtilities isScreenSaverActive]) { - GTMCarbonEventDispatcherHandler *dispatcher - = [GTMCarbonEventDispatcherHandler sharedEventDispatcherHandler]; - STAssertNotNil(dispatcher, @"Unable to acquire singleton"); - UInt32 keyMods = (NSShiftKeyMask | NSControlKeyMask - | NSAlternateKeyMask | NSCommandKeyMask); - EventHotKeyRef hotKey = [dispatcher registerHotKey:0x5 - modifiers:keyMods - target:self - action:@selector(hitExceptionalHotKey:) - whenPressed:YES]; - STAssertTrue(hotKey != nil, @"Unable to create hotkey"); - - // Post the hotkey combo to the event queue. If everything is working correctly - // hitHotKey: should get called, and hotKeyHit_ will be set for us. - // We run the event loop for a set amount of time waiting for this to happen. - [GTMUnitTestingUtilities postTypeCharacterEvent:'g' modifiers:keyMods]; - NSDate* future = [NSDate dateWithTimeIntervalSinceNow:1.0f]; - [GTMUnitTestDevLog expectString:@"Exception fired in hotkey: foo (bar)"]; - [GTMUnitTestingUtilities runUntilDate:future]; - [dispatcher unregisterHotKey:hotKey]; - } -} - -- (void)testKeyModifiers { - struct { - NSUInteger cocoaKey_; - UInt32 carbonKey_; - } keyMap[] = { - { NSAlphaShiftKeyMask, alphaLock}, - { NSShiftKeyMask, shiftKey}, - { NSControlKeyMask, controlKey}, - { NSAlternateKeyMask, optionKey}, - { NSCommandKeyMask, cmdKey}, - }; - size_t combos = pow(2, sizeof(keyMap) / sizeof(keyMap[0])); - for (size_t i = 0; i < combos; i++) { - NSUInteger cocoaMods = 0; - UInt32 carbonMods = 0; - for (size_t j = 0; j < 32 && j < sizeof(keyMap) / sizeof(keyMap[0]); j++) { - if (i & 1 << j) { - cocoaMods |= keyMap[j].cocoaKey_; - carbonMods |= keyMap[j].carbonKey_; - } - } - STAssertEquals(GTMCocoaToCarbonKeyModifiers(cocoaMods), carbonMods, nil); - STAssertEquals(GTMCarbonToCocoaKeyModifiers(carbonMods), cocoaMods, nil); - } -} - - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.h deleted file mode 100644 index 63abf203..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// GTMDelegatingTableColumn.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// NOTE: If you're using the 10.5 SDK, just use the new delegate method: -// tableView:dataCellForTableColumn:row: - -@interface GTMDelegatingTableColumn : NSTableColumn -// no instance state or new method, it will just invoke the tableview's delegate -// w/ the method below. -@end - -// the method delegated to -@interface NSObject (GTMDelegatingTableColumnDelegate) -- (id)gtm_tableView:(NSTableView *)tableView - dataCellForTableColumn:(NSTableColumn *)tableColumn - row:(NSInteger)row; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.m deleted file mode 100644 index 0bd23714..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMDelegatingTableColumn.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// GTMDelegatingTableColumn.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMDelegatingTableColumn.h" - -@implementation GTMDelegatingTableColumn -- (id)dataCellForRow:(NSInteger)row { - id dataCell = nil; - id delegate = [[self tableView] delegate]; - BOOL sendSuper = YES; - if (delegate) { - if ([delegate respondsToSelector:@selector(gtm_tableView:dataCellForTableColumn:row:)]) { - - dataCell = [delegate gtm_tableView:[self tableView] - dataCellForTableColumn:self - row:row]; - sendSuper = NO; - } else { - _GTMDevLog(@"tableView delegate didn't implement gtm_tableView:dataCellForTableColumn:row:"); - } - } - if (sendSuper) { - dataCell = [super dataCellForRow:row]; - } - return dataCell; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandler.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandler.m deleted file mode 100644 index dcac2922..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandler.m +++ /dev/null @@ -1,310 +0,0 @@ -// -// GTMGetURLHandler.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// Add this class to your app to have get URL handled almost automatically for -// you. For each entry in your CFBundleURLTypes dictionaries, add a new -// key/object pair of GTMBundleURLClass/the name of the class you want -// to have handle the scheme(s). -// Then have that class respond to the class method: -// + (BOOL)gtm_openURL:(NSURL*)url -// and voila, it will just work. -// Note that in Debug mode we will do extensive testing to make sure that this -// is all hooked up correctly, and will spew out to the console if we -// find anything amiss. -// -// Example plist entry -// ... -// -// CFBundleURLTypes -// -// -// CFBundleURLName -// Google Suggestion URL -// GTMBundleURLClass -// GoogleSuggestURLHandler -// CFBundleURLSchemes -// -// googlesuggest -// googlesuggestextreme -// -// -// -// -// -// Example implementation -// @interface GoogleSuggestURLHandler -// @end -// @implementation GoogleSuggestURLHandler -// + (BOOL)gtm_openURL:(NSURL*)url { -// NSLog(@"%@", url); -// } -// @end - -#import -#import "GTMGarbageCollection.h" -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMMethodCheck.h" - -static NSString *const kGTMBundleURLClassKey = @"GTMBundleURLClass"; -// A variety of constants Apple really should have defined somewhere to -// allow the compiler to find your typos. -static NSString *const kGTMCFBundleURLSchemesKey = @"CFBundleURLSchemes"; -static NSString *const kGTMCFBundleURLNameKey = @"CFBundleURLName"; -static NSString *const kGTMCFBundleTypeRoleKey = @"CFBundleTypeRole"; -static NSString *const kGTMCFBundleURLTypesKey = @"CFBundleURLTypes"; -static NSString *const kGTMCFBundleViewerRole = @"Viewer"; -static NSString *const kGTMCFBundleEditorRole = @"Editor"; - -// Set this macro elsewhere is you want to force the -// bundle checks on/off. They are nice for debugging -// problems, but shouldn't be required in a release version -// unless you are paranoid about your users messing with your -// Info.plist -#ifndef GTM_CHECK_BUNDLE_URL_CLASSES -#define GTM_CHECK_BUNDLE_URL_CLASSES DEBUG -#endif // GTM_CHECK_BUNDLE_URL_CLASSES - -@protocol GTMGetURLHandlerProtocol -+ (BOOL)gtm_openURL:(NSURL*)url; -@end - -@interface GTMGetURLHandler : NSObject { - NSArray *urlTypes_; -} -- (id)initWithTypes:(NSArray*)urlTypes; -- (void)getUrl:(NSAppleEventDescriptor *)event -withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -- (void)addError:(OSStatus)error - withDescription:(NSString*)string - toDescriptor:(NSAppleEventDescriptor *)desc; -+ (id)handlerForBundle:(NSBundle *)bundle; -+ (void)getUrl:(NSAppleEventDescriptor *)event -withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -@end - -@implementation GTMGetURLHandler -GTM_METHOD_CHECK(NSNumber, gtm_appleEventDescriptor); -GTM_METHOD_CHECK(NSString, gtm_appleEventDescriptor); - -+ (void)load { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSAppleEventManager *man = [NSAppleEventManager sharedAppleEventManager]; - [man setEventHandler:self - andSelector:@selector(getUrl:withReplyEvent:) - forEventClass:kInternetEventClass - andEventID:kAEGetURL]; - [pool release]; -} - -+ (void)getUrl:(NSAppleEventDescriptor *)event -withReplyEvent:(NSAppleEventDescriptor *)replyEvent { - static GTMGetURLHandler *sHandler = nil; - if (!sHandler) { - NSBundle *bundle = [NSBundle mainBundle]; - sHandler = [GTMGetURLHandler handlerForBundle:bundle]; - if (sHandler) { - [sHandler retain]; - GTMNSMakeUncollectable(sHandler); - } - } - [sHandler getUrl:event withReplyEvent:replyEvent]; -} - -+ (id)handlerForBundle:(NSBundle *)bundle { - GTMGetURLHandler *handler = nil; - NSArray *urlTypes - = [bundle objectForInfoDictionaryKey:kGTMCFBundleURLTypesKey]; - if (urlTypes) { - handler = [[[GTMGetURLHandler alloc] initWithTypes:urlTypes] autorelease]; - } else { - // COV_NF_START - // Hard to test it if we don't have it. - _GTMDevLog(@"If you don't have CFBundleURLTypes in your plist, you may want" - @" to remove GTMGetURLHandler.m from your project"); - // COV_NF_END - } - return handler; -} - -- (id)initWithTypes:(NSArray*)urlTypes { - if ((self = [super init])) { - urlTypes_ = [urlTypes retain]; -#if GTM_CHECK_BUNDLE_URL_CLASSES - // Some debug handling to check to make sure we can handle the - // classes properly. We check here instead of at init in case some of the - // handlers are being handled by plugins or other imported code that are - // loaded after we have been initialized. - NSDictionary *urlType; - GTM_FOREACH_OBJECT(urlType, urlTypes_) { - NSString *className = [urlType objectForKey:kGTMBundleURLClassKey]; - if ([className length]) { - Class cls = NSClassFromString(className); - if (cls) { - if (![cls respondsToSelector:@selector(gtm_openURL:)]) { - _GTMDevLog(@"Class %@ for URL handler %@ " - @"(URL schemes: %@) doesn't respond to openURL:", - className, - [urlType objectForKey:kGTMCFBundleURLNameKey], - [urlType objectForKey:kGTMCFBundleURLSchemesKey]); - } - } else { - _GTMDevLog(@"Unable to get class %@ for URL handler %@ " - @"(URL schemes: %@)", - className, - [urlType objectForKey:kGTMCFBundleURLNameKey], - [urlType objectForKey:kGTMCFBundleURLSchemesKey]); - } - } else { - NSString *role = [urlType objectForKey:kGTMCFBundleTypeRoleKey]; - if ([role caseInsensitiveCompare:kGTMCFBundleViewerRole] == NSOrderedSame || - [role caseInsensitiveCompare:kGTMCFBundleEditorRole] == NSOrderedSame) { - _GTMDevLog(@"Missing %@ for URL handler %@ " - @"(URL schemes: %@)", - kGTMBundleURLClassKey, - [urlType objectForKey:kGTMCFBundleURLNameKey], - [urlType objectForKey:kGTMCFBundleURLSchemesKey]); - } - } - } -#endif // GTM_CHECK_BUNDLE_URL_CLASSES - } - return self; -} - -// COV_NF_START -// Singleton is never dealloc'd -- (void)dealloc { - [urlTypes_ release]; - [super dealloc]; -} -// COV_NF_END - - -- (NSURL*)extractURLFromEvent:(NSAppleEventDescriptor*)event - withReplyEvent:(NSAppleEventDescriptor *)replyEvent { - NSAppleEventDescriptor *desc - = [event paramDescriptorForKeyword:keyDirectObject]; - NSString *urlstring = [desc stringValue]; - NSURL *url = [NSURL URLWithString:urlstring]; - if (!url) { - // COV_NF_START - // Can't convince the OS to give me a bad URL - [self addError:errAECoercionFail - withDescription:@"Unable to extract url from key direct object." - toDescriptor:replyEvent]; - // COV_NF_END - } - return url; -} - -- (Class)getClassForScheme:(NSString *)scheme - withReplyEvent:(NSAppleEventDescriptor*)replyEvent { - NSDictionary *urlType; - Class cls = nil; - NSString *typeScheme = nil; - GTM_FOREACH_OBJECT(urlType, urlTypes_) { - NSArray *schemes = [urlType objectForKey:kGTMCFBundleURLSchemesKey]; - NSString *aScheme; - GTM_FOREACH_OBJECT(aScheme, schemes) { - if ([aScheme caseInsensitiveCompare:scheme] == NSOrderedSame) { - typeScheme = aScheme; - break; - } - } - if (typeScheme) { - break; - } - } - if (typeScheme) { - NSString *class = [urlType objectForKey:kGTMBundleURLClassKey]; - if (class) { - cls = NSClassFromString(class); - } - if (!cls) { - NSString *errorString - = [NSString stringWithFormat:@"Unable to instantiate class for " - @"%@:%@ for scheme:%@.", - kGTMBundleURLClassKey, class, typeScheme]; - [self addError:errAECorruptData - withDescription:errorString - toDescriptor:replyEvent]; - } else { - if (![cls respondsToSelector:@selector(gtm_openURL:)]) { - NSString *errorString - = [NSString stringWithFormat:@"Class %@:%@ for scheme:%@ does not" - @"respond to gtm_openURL:", - kGTMBundleURLClassKey, class, typeScheme]; - [self addError:errAECorruptData - withDescription:errorString - toDescriptor:replyEvent]; - cls = Nil; - } - } - } else { - // COV_NF_START - // Don't know how to force an URL that we don't respond to upon ourselves. - NSString *errorString - = [NSString stringWithFormat:@"Unable to find handler for scheme %@.", - scheme]; - [self addError:errAECorruptData - withDescription:errorString - toDescriptor:replyEvent]; - // COV_NF_END - - } - return cls; -} - -- (void)getUrl:(NSAppleEventDescriptor *)event -withReplyEvent:(NSAppleEventDescriptor *)replyEvent { - NSURL *url = [self extractURLFromEvent:event withReplyEvent:replyEvent]; - if (!url) { - return; - } - NSString *scheme = [url scheme]; - Class cls = [self getClassForScheme:scheme withReplyEvent:replyEvent]; - if (!cls) { - return; - } - BOOL wasGood = [cls gtm_openURL:url]; - if (!wasGood) { - NSString *errorString - = [NSString stringWithFormat:@"[%@ gtm_openURL:] failed to handle %@", - NSStringFromClass(cls), url]; - [self addError:errAEEventNotHandled - withDescription:errorString - toDescriptor:replyEvent]; - } -} - -- (void)addError:(OSStatus)error - withDescription:(NSString*)string - toDescriptor:(NSAppleEventDescriptor *)desc { - NSAppleEventDescriptor *errorDesc = nil; - if (error != noErr) { - NSNumber *errNum = [NSNumber numberWithLong:error]; - errorDesc = [errNum gtm_appleEventDescriptor]; - [desc setParamDescriptor:errorDesc forKeyword:keyErrorNumber]; - } - if (string) { - errorDesc = [string gtm_appleEventDescriptor]; - [desc setParamDescriptor:errorDesc forKeyword:keyErrorString]; - } -} -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandlerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandlerTest.m deleted file mode 100644 index ba0be7d6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandlerTest.m +++ /dev/null @@ -1,84 +0,0 @@ -// GTMGetURLHandlerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMUnitTestingUtilities.h" -#import "GTMUnitTestDevLog.h" - -static BOOL sURLHandlerWasHit; - -@interface GTMGetURLHandlerBadClassWarning : NSObject -@end - -@implementation GTMGetURLHandlerBadClassWarning : NSObject -@end - -@interface GTMGetURLHandlerTest : GTMTestCase -@end - -@implementation GTMGetURLHandlerTest -- (BOOL)openURLString:(NSString *)url { - ProcessSerialNumber psn = { 0, kCurrentProcess }; - NSAppleEventDescriptor *currentProcess - = [NSAppleEventDescriptor descriptorWithDescriptorType:typeProcessSerialNumber - bytes:&psn - length:sizeof(ProcessSerialNumber)]; - NSAppleEventDescriptor *event - = [NSAppleEventDescriptor appleEventWithEventClass:kInternetEventClass - eventID:kAEGetURL - targetDescriptor:currentProcess - returnID:kAutoGenerateReturnID - transactionID:kAnyTransactionID]; - NSAppleEventDescriptor *keyDesc - = [NSAppleEventDescriptor descriptorWithString:url]; - [event setParamDescriptor:keyDesc forKeyword:keyDirectObject]; - OSStatus err = AESendMessage([event aeDesc], NULL, kAEWaitReply, 60); - return err == noErr ? YES : NO; -} - -+ (BOOL)gtm_openURL:(NSURL*)url { - sURLHandlerWasHit = !sURLHandlerWasHit; - return sURLHandlerWasHit; -} - -- (void)testURLCall { - sURLHandlerWasHit = NO; - - [GTMUnitTestDevLogDebug expectPattern:@"Class GTMGetURLHandlerBadClassWarning " - @"for URL handler GTMGetURLHandlerBadClassURL .*"]; - [GTMUnitTestDevLogDebug expectPattern:@"Unable to get class " - @"GTMGetURLHandlerMissingClassWarning for URL handler " - @"GTMGetURLHandlerMissingClassURL .*"]; - [GTMUnitTestDevLogDebug expectPattern:@"Missing GTMBundleURLClass for URL handler " - @"GTMGetURLHandlerMissingHandlerURL .*"]; - STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil); - STAssertTrue(sURLHandlerWasHit, @"URL handler not called"); - - STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil); - STAssertFalse(sURLHandlerWasHit, @"URL handler not called 2"); - - // test the two URL schemes with bad entries - STAssertTrue([self openURLString:@"gtmgeturlhandlerbadclasstest://test.foo"], - nil); - - STAssertTrue([self openURLString:@"gtmgeturlhandlermissingclasstest://test.foo"], - nil); - - STAssertTrue([self openURLString:@"gtmgeturlhandlermissinghandlerurl://test.foo"], - nil); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.h deleted file mode 100644 index 4177f496..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.h +++ /dev/null @@ -1,127 +0,0 @@ -// -// GTMHotKeyTextField.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Text field for capturing hot key entry. This is intended to be similar to the -// Apple key editor in their Keyboard pref pane. - -// NOTE: There are strings that need to be localized to use this field. See the -// code in stringForKeycode the the keys. The keys are all the English versions -// so you'll get reasonable things if you don't have a strings file. - -#import -#import "GTMDefines.h" - -// Dictionary key for hot key configuration information modifier flags. -// NSNumber of a unsigned int. Modifier flags are stored using Cocoa constants -// (same as NSEvent) you will need to translate them to Carbon modifier flags -// for use with RegisterEventHotKey() -#define kGTMHotKeyModifierFlagsKey @"Modifiers" - -// Dictionary key for hot key configuration of virtual key code. NSNumber of -// unsigned int. For double-modifier hotkeys (see below) this value is ignored. -#define kGTMHotKeyKeyCodeKey @"KeyCode" - -// Dictionary key for hot key configuration of double-modifier tap. NSNumber -// BOOL value. Double-tap modifier keys cannot be used with -// RegisterEventHotKey(), you must implement your own Carbon event handler. -#define kGTMHotKeyDoubledModifierKey @"DoubleModifier" - -// Custom text field class used for hot key entry. In order to use this class -// you will need to configure your window's delegate, to return the related -// field editor. -// -// Sample window delegate method: -// -// -(id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject { -// -// if ([anObject isKindOfClass:[GTMHotKeyTextField class]]) { -// return [GTMHotKeyFieldEditor sharedHotKeyFieldEditor]; -// } else { -// return nil; // Window will use the AppKit shared editor -// } -// -// } -// -// -// Other notes: -// - Though you are free to implement control:textShouldEndEditing: in your -// delegate its return is always ignored. The field always accepts only -// one hotkey keystroke before editing ends. -// - The "value" binding of this control is to the dictionary describing the -// hotkey. At this time binding options are not supported. -// - The field does not attempt to consume all hotkeys. Hotkeys which are -// already bound in Apple prefs or other applications will have their -// normal effect. -// - -@interface GTMHotKeyTextField : NSTextField { - @private - NSDictionary *hotKeyDict_; - // Bindings - NSObject *boundObject_; - NSString *boundKeyPath_; -} - -// Set/Get the hot key dictionary for the field. See above for key names. -- (void)setHotKeyValue:(NSDictionary *)hotKey; -- (NSDictionary *)hotKeyValue; - -// Convert Cocoa modifier flags (-[NSEvent modifierFlags]) into a string for -// display. Modifiers are represented in the string in the same order they would -// appear in the Menu Manager. -// -// Args: -// flags: -[NSEvent modifierFlags] -// -// Returns: -// Autoreleased NSString -// -+ (NSString *)stringForModifierFlags:(unsigned int)flags; - -// Convert a keycode into a string that would result from typing the keycode in -// the current keyboard layout. This may be one or more characters. -// -// Args: -// keycode: Virtual keycode such as one obtained from NSEvent -// useGlyph: In many cases the glyphs are confusing, and a string is clearer. -// However, if you want to display in a menu item, use must -// have a glyph. Set useGlyph to FALSE to get localized strings -// which are better for UI display in places other than menus. -// bundle: Localization bundle to use for localizable key names -// -// Returns: -// Autoreleased NSString -// -+ (NSString *)stringForKeycode:(UInt16)keycode - useGlyph:(BOOL)useGlyph - resourceBundle:(NSBundle *)bundle; - -@end - -// Custom field editor for use with hotkey entry fields (GTMHotKeyTextField). -// See the GTMHotKeyTextField for instructions on using from the window -// delegate. -@interface GTMHotKeyFieldEditor : NSTextView { - @private - NSDictionary *hotKeyDict_; // strong -} - -// Get the shared field editor for all hot key fields -+ (GTMHotKeyFieldEditor *)sharedHotKeyFieldEditor; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.m deleted file mode 100644 index 65737434..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextField.m +++ /dev/null @@ -1,1024 +0,0 @@ -// GTMHotKeyTextField.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMHotKeyTextField.h" - -#import -#import "GTMSystemVersion.h" -#import "GTMObjectSingleton.h" -#import "GTMNSObject+KeyValueObserving.h" - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -typedef struct __TISInputSource* TISInputSourceRef; -static TISInputSourceRef(*GTM_TISCopyCurrentKeyboardLayoutInputSource)(void) = NULL; -static void * (*GTM_TISGetInputSourceProperty)(TISInputSourceRef inputSource, - CFStringRef propertyKey) = NULL; -static CFStringRef kGTM_TISPropertyUnicodeKeyLayoutData = NULL; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - - -@interface GTMHotKeyTextField (PrivateMethods) -- (void)setupBinding:(id)bound withPath:(NSString *)path; -- (void)updateDisplayedPrettyString; -+ (BOOL)isValidHotKey:(NSDictionary *)hotKey; -+ (NSString *)displayStringForHotKey:(NSDictionary *)hotKey; -@end - -@interface GTMHotKeyFieldEditor (PrivateMethods) -- (NSDictionary *)hotKeyDictionary; -- (void)setHotKeyDictionary:(NSDictionary *)hotKey; -- (BOOL)shouldBypassEvent:(NSEvent *)theEvent; -- (void)processEventToHotKeyAndString:(NSEvent *)theEvent; -- (void)windowResigned:(NSNotification *)notification; -- (NSDictionary *)hotKeyDictionaryForEvent:(NSEvent *)event; -@end - -@implementation GTMHotKeyTextField - -#if GTM_SUPPORT_GC -- (void)finalize { - if (boundObject_ && boundKeyPath_) { - [boundObject_ gtm_removeObserver:self - forKeyPath:boundKeyPath_ - selector:@selector(hotKeyValueChanged:)]; - } - [super finalize]; -} -#endif - -- (void)dealloc { - - if (boundObject_ && boundKeyPath_) { - [boundObject_ gtm_removeObserver:self - forKeyPath:boundKeyPath_ - selector:@selector(hotKeyValueChanged:)]; - } - [boundObject_ release]; - [boundKeyPath_ release]; - [hotKeyDict_ release]; - [super dealloc]; - -} - -#pragma mark Bindings - - -- (void)bind:(NSString *)binding toObject:(id)observableController - withKeyPath:(NSString *)keyPath - options:(NSDictionary *)options { - - if ([binding isEqualToString:NSValueBinding]) { - // Update to our new binding - [self setupBinding:observableController withPath:keyPath]; - // TODO: Should deal with the bind options - } - [super bind:binding - toObject:observableController - withKeyPath:keyPath - options:options]; - -} - -- (void)unbind:(NSString *)binding { - - // Clean up value on unbind - if ([binding isEqualToString:NSValueBinding]) { - if (boundObject_ && boundKeyPath_) { - [boundObject_ gtm_removeObserver:self - forKeyPath:boundKeyPath_ - selector:@selector(hotKeyValueChanged:)]; - } - [boundObject_ release]; - boundObject_ = nil; - [boundKeyPath_ release]; - boundKeyPath_ = nil; - } - [super unbind:binding]; - -} - -- (void)hotKeyValueChanged:(GTMKeyValueChangeNotification *)note { - NSDictionary *change = [note change]; - // Our binding has changed, update - id changedValue = [change objectForKey:NSKeyValueChangeNewKey]; - // NSUserDefaultsController does not appear to pass on the new object and, - // perhaps other controllers may not, so if we get a nil or NSNull back - // here let's directly retrieve the hotKeyDict_ from the object. - if (!changedValue || changedValue == [NSNull null]) { - id object = [note object]; - NSString *keyPath = [note keyPath]; - changedValue = [object valueForKeyPath:keyPath]; - } - [hotKeyDict_ autorelease]; - hotKeyDict_ = [changedValue copy]; - [self updateDisplayedPrettyString]; -} - - -// Private convenience method for attaching to a new binding -- (void)setupBinding:(id)bound withPath:(NSString *)path { - - // Release previous - if (boundObject_ && boundKeyPath_) { - [boundObject_ gtm_removeObserver:self - forKeyPath:boundKeyPath_ - selector:@selector(hotKeyValueChanged:)]; - } - [boundObject_ release]; - [boundKeyPath_ release]; - // Set new - boundObject_ = [bound retain]; - boundKeyPath_ = [path copy]; - // Make ourself an observer - [boundObject_ gtm_addObserver:self - forKeyPath:boundKeyPath_ - selector:@selector(hotKeyValueChanged:) - userInfo:nil - options:NSKeyValueObservingOptionNew]; - // Pull in any current value - [hotKeyDict_ autorelease]; - hotKeyDict_ = [[boundObject_ valueForKeyPath:boundKeyPath_] copy]; - // Update the display string - [self updateDisplayedPrettyString]; - -} - -#pragma mark Defeating NSControl - -- (double)doubleValue { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return 0.0; - -} - -- (void)setDoubleValue:(double)value { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -- (float)floatValue { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return 0.0f; - -} - -- (void)setFloatValue:(float)value { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -- (int)intValue { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return 0; - -} - -- (void)setIntValue:(int)value { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -- (NSInteger)integerValue { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return 0; - -} - -- (void)setIntegerValue:(NSInteger)value { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -- (id)objectValue { - - return [self hotKeyValue]; - -} - -- (void)setObjectValue:(id)object { - - [self setHotKeyValue:object]; - -} - -- (NSString *)stringValue { - - return [[self class] displayStringForHotKey:hotKeyDict_]; - -} - -- (void)setStringValue:(NSString *)string { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields want dictionaries, not strings."); - return; - -} - -- (NSAttributedString *)attributedStringValue { - - NSString *prettyString = [self stringValue]; - if (!prettyString) return nil; - return [[[NSAttributedString alloc] initWithString:prettyString] autorelease]; - -} - -- (void)setAttributedStringValue:(NSAttributedString *)string { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields want dictionaries, not strings."); - return; - -} - -- (void)takeDoubleValueFrom:(id)sender { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -- (void)takeFloatValueFrom:(id)sender { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -- (void)takeIntValueFrom:(id)sender { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't take numbers."); - return; - -} - -- (void)takeObjectValueFrom:(id)sender { - - // Defeating NSControl - _GTMDevAssert(NO, - @"Hot key fields want dictionaries via bindings, not from controls."); - return; - -} - -- (void)takeStringValueFrom:(id)sender { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields want dictionaries, not strings."); - return; - -} - -- (id)formatter { - - return nil; - -} - -- (void)setFormatter:(NSFormatter *)newFormatter { - - // Defeating NSControl - _GTMDevAssert(NO, @"Hot key fields don't accept formatters."); - return; - -} - -#pragma mark Hot Key Support - -+ (BOOL)isValidHotKey:(NSDictionary *)hotKeyDict { - if (!hotKeyDict || - ![hotKeyDict isKindOfClass:[NSDictionary class]] || - ![hotKeyDict objectForKey:kGTMHotKeyModifierFlagsKey] || - ![hotKeyDict objectForKey:kGTMHotKeyKeyCodeKey] || - ![hotKeyDict objectForKey:kGTMHotKeyDoubledModifierKey]) { - return NO; - } - return YES; -} - -- (void)setHotKeyValue:(NSDictionary *)hotKey { - - // Sanity only if set, nil is OK - if (hotKey && ![[self class] isValidHotKey:hotKey]) { - return; - } - - // If we are bound we want to round trip through that interface - if (boundObject_ && boundKeyPath_) { - // If the change is accepted this will call us back as an observer - [boundObject_ setValue:hotKey forKeyPath:boundKeyPath_]; - return; - } - - // Otherwise we directly update ourself - [hotKeyDict_ autorelease]; - hotKeyDict_ = [hotKey copy]; - [self updateDisplayedPrettyString]; - -} - -- (NSDictionary *)hotKeyValue { - - return hotKeyDict_; - -} - -// Private method to update the displayed text of the field with the -// user-readable representation. -- (void)updateDisplayedPrettyString { - - // Basic validation - if (![[self class] isValidHotKey:hotKeyDict_]) { - [super setStringValue:@""]; - return; - } - - // Pretty string - NSString *prettyString = [[self class] displayStringForHotKey:hotKeyDict_]; - if (!prettyString) { - prettyString = @""; - } - [super setStringValue:prettyString]; - -} - -+ (NSString *)displayStringForHotKey:(NSDictionary *)hotKeyDict { - - if (!hotKeyDict) return nil; - - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - - // Modifiers - unsigned int flags - = [[hotKeyDict objectForKey:kGTMHotKeyModifierFlagsKey] unsignedIntValue]; - NSString *mods = [GTMHotKeyTextField stringForModifierFlags:flags]; - if (!mods || ![mods length]) return nil; - // Handle double modifier case - if ([[hotKeyDict objectForKey:kGTMHotKeyDoubledModifierKey] boolValue]) { - return [NSString stringWithFormat:@"%@ + %@", mods, mods]; - } - // Keycode - unsigned int keycode - = [[hotKeyDict objectForKey:kGTMHotKeyKeyCodeKey] unsignedIntValue]; - NSString *keystroke = [GTMHotKeyTextField stringForKeycode:keycode - useGlyph:NO - resourceBundle:bundle]; - if (!keystroke || ![keystroke length]) return nil; - return [NSString stringWithFormat:@"%@%@", mods, keystroke]; - -} - - -#pragma mark Field Editor Callbacks - -- (BOOL)textShouldBeginEditing:(GTMHotKeyFieldEditor *)fieldEditor { - - // Sanity - if (![fieldEditor isKindOfClass:[GTMHotKeyFieldEditor class]]) { - _GTMDevLog(@"Field editor not appropriate for field, check window delegate"); - return NO; - } - - // We don't call super from here, because we are defeating default behavior - // as a result we have to call the delegate ourself. - id myDelegate = [self delegate]; - SEL selector = @selector(control:textShouldBeginEditing:); - if ([myDelegate respondsToSelector:selector]) { - if (![myDelegate control:self textShouldBeginEditing:fieldEditor]) return NO; - } - - // Update the field editor internal hotkey representation - [fieldEditor setHotKeyDictionary:hotKeyDict_]; // OK if its nil - return YES; - -} - -- (void)textDidChange:(NSNotification *)notification { - - // Sanity - GTMHotKeyFieldEditor *fieldEditor = [notification object]; - if (![fieldEditor isKindOfClass:[GTMHotKeyFieldEditor class]]) { - _GTMDevLog(@"Field editor not appropriate for field, check window delegate"); - return; - } - - // When the field changes we want to read in the current hotkey value so - // bindings can validate - [self setHotKeyValue:[fieldEditor hotKeyDictionary]]; - - // Let super handle the notifications - [super textDidChange:notification]; - -} - -- (BOOL)textShouldEndEditing:(GTMHotKeyFieldEditor *)fieldEditor { - - // Sanity - if (![fieldEditor isKindOfClass:[GTMHotKeyFieldEditor class]]) { - _GTMDevLog(@"Field editor not appropriate for field, check window delegate"); - return NO; - } - - // Again we are defeating default behavior so we have to do delegate handling - // ourself. In this case our goal is simply to prevent the superclass from - // doing its own KVO, but we can also skip [[self cell] isEntryAcceptable:]. - // We'll also ignore the delegate control:textShouldEndEditing:. The field - // editor is done whether they like it or not. - id myDelegate = [self delegate]; - SEL selector = @selector(control:textShouldEndEditing:); - if ([myDelegate respondsToSelector:selector]) { - [myDelegate control:self textShouldEndEditing:fieldEditor]; - } - - // The end is always allowed, so set new value - [self setHotKeyValue:[fieldEditor hotKeyDictionary]]; - - return YES; - -} - -#pragma mark Class methods building strings for use w/in the UI. - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -+ (void)initialize { - if (!GTM_TISCopyCurrentKeyboardLayoutInputSource - && [GTMSystemVersion isLeopardOrGreater]) { - CFBundleRef hiToolbox - = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.HIToolbox")); - if (hiToolbox) { - kGTM_TISPropertyUnicodeKeyLayoutData - = *(CFStringRef*)CFBundleGetDataPointerForName(hiToolbox, - CFSTR("kTISPropertyUnicodeKeyLayoutData")); - GTM_TISCopyCurrentKeyboardLayoutInputSource - = CFBundleGetFunctionPointerForName(hiToolbox, - CFSTR("TISCopyCurrentKeyboardLayoutInputSource")); - GTM_TISGetInputSourceProperty - = CFBundleGetFunctionPointerForName(hiToolbox, - CFSTR("TISGetInputSourceProperty")); - } - } -} -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -#pragma mark Useful String Class Methods - -// These are not in a category on NSString because this class could be used -// within multiple preference panes at the same time. If we put it in a category -// it would require setting up some magic so that the categories didn't conflict -// between the multiple pref panes. By putting it in the class, you can just -// #define the class name to something else, and then you won't have any -// conflicts. - -+ (NSString *)stringForModifierFlags:(unsigned int)flags { - - UniChar modChars[4]; // We only look for 4 flags - unsigned int charCount = 0; - // These are in the same order as the menu manager shows them - if (flags & NSControlKeyMask) modChars[charCount++] = kControlUnicode; - if (flags & NSAlternateKeyMask) modChars[charCount++] = kOptionUnicode; - if (flags & NSShiftKeyMask) modChars[charCount++] = kShiftUnicode; - if (flags & NSCommandKeyMask) modChars[charCount++] = kCommandUnicode; - if (charCount == 0) return nil; - return [NSString stringWithCharacters:modChars length:charCount]; - -} - -+ (NSString *)stringForKeycode:(UInt16)keycode - useGlyph:(BOOL)useGlyph - resourceBundle:(NSBundle *)bundle { - - // Some keys never move in any layout (to the best of our knowledge at least) - // so we can hard map them. - UniChar key = 0; - NSString *localizedKey = nil; - - switch (keycode) { - - // Of the hard mapped keys some can be represented with pretty and obvioous - // Unicode or simple strings without localization. - - // Arrow keys - case 123: key = NSLeftArrowFunctionKey; break; - case 124: key = NSRightArrowFunctionKey; break; - case 125: key = NSDownArrowFunctionKey; break; - case 126: key = NSUpArrowFunctionKey; break; - case 122: key = NSF1FunctionKey; break; - case 120: key = NSF2FunctionKey; break; - case 99: key = NSF3FunctionKey; break; - case 118: key = NSF4FunctionKey; break; - case 96: key = NSF5FunctionKey; break; - case 97: key = NSF6FunctionKey; break; - case 98: key = NSF7FunctionKey; break; - case 100: key = NSF8FunctionKey; break; - case 101: key = NSF9FunctionKey; break; - case 109: key = NSF10FunctionKey; break; - case 103: key = NSF11FunctionKey; break; - case 111: key = NSF12FunctionKey; break; - case 105: key = NSF13FunctionKey; break; - case 107: key = NSF14FunctionKey; break; - case 113: key = NSF15FunctionKey; break; - case 106: key = NSF16FunctionKey; break; - // Forward delete is a terrible name so we'll use the glyph Apple puts on - // their current keyboards - case 117: key = 0x2326; break; - - // Now we have keys that can be hard coded but don't have good glyph - // representations. Sure, the Apple menu manager has glyphs for them, but - // an informal poll of Google developers shows no one really knows what - // they mean, so its probably a good idea to use strings. Unfortunately - // this also means localization (*sigh*). We'll use the real English - // strings here as keys so that even if localization is missed we'll do OK - // in output. - - // Whitespace - case 36: key = '\r'; localizedKey = @"Return"; break; - case 76: key = 0x3; localizedKey = @"Enter"; break; - case 48: key = 0x9; localizedKey = @"Tab"; break; - case 49: key = 0xA0; localizedKey = @"Space"; break; - // Control keys - case 51: key = 0x8; localizedKey = @"Delete"; break; - case 71: key = NSClearDisplayFunctionKey; localizedKey = @"Clear"; break; - case 53: key = 0x1B; localizedKey = @"Esc"; break; - case 115: key = NSHomeFunctionKey; localizedKey = @"Home"; break; - case 116: key = NSPageUpFunctionKey; localizedKey = @"Page Up"; break; - case 119: key = NSEndFunctionKey; localizedKey = @"End"; break; - case 121: key = NSPageDownFunctionKey; localizedKey = @"Page Down"; break; - case 114: key = NSHelpFunctionKey; localizedKey = @"Help"; break; - // Keypad keys - // There is no good way we could find to glyph these. We tried a variety - // of Unicode glyphs, and the menu manager wouldn't take them. We tried - // subscript numbers, circled numbers and superscript numbers with no - // luck. It may be a bit confusing to the user, but we're happy to hear - // any suggestions. - case 65: key = '.'; localizedKey = @"Keypad ."; break; - case 67: key = '*'; localizedKey = @"Keypad *"; break; - case 69: key = '+'; localizedKey = @"Keypad +"; break; - case 75: key = '/'; localizedKey = @"Keypad /"; break; - case 78: key = '-'; localizedKey = @"Keypad -"; break; - case 81: key = '='; localizedKey = @"Keypad ="; break; - case 82: key = '0'; localizedKey = @"Keypad 0"; break; - case 83: key = '1'; localizedKey = @"Keypad 1"; break; - case 84: key = '2'; localizedKey = @"Keypad 2"; break; - case 85: key = '3'; localizedKey = @"Keypad 3"; break; - case 86: key = '4'; localizedKey = @"Keypad 4"; break; - case 87: key = '5'; localizedKey = @"Keypad 5"; break; - case 88: key = '6'; localizedKey = @"Keypad 6"; break; - case 89: key = '7'; localizedKey = @"Keypad 7"; break; - case 91: key = '8'; localizedKey = @"Keypad 8"; break; - case 92: key = '9'; localizedKey = @"Keypad 9"; break; - - } - - // If they asked for strings, and we have one return it. Otherwise, return - // any key we've picked. - if (!useGlyph && localizedKey) { - return NSLocalizedStringFromTableInBundle(localizedKey, @"KeyCode", - bundle, @""); - } else if (key != 0) { - return [NSString stringWithFormat:@"%C", key]; - } - - // Everything else should be printable so look it up in the current keyboard - UCKeyboardLayout *uchrData = NULL; - - OSStatus err = noErr; -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - // layout - KeyboardLayoutRef currentLayout = NULL; - // Get the layout kind - SInt32 currentLayoutKind = -1; - if ([GTMSystemVersion isLeopardOrGreater] - && kGTM_TISPropertyUnicodeKeyLayoutData - && GTM_TISGetInputSourceProperty - && GTM_TISCopyCurrentKeyboardLayoutInputSource) { - // On Leopard we use the new improved TIS interfaces which work for input - // sources as well as keyboard layouts. - TISInputSourceRef inputSource - = GTM_TISCopyCurrentKeyboardLayoutInputSource(); - if (inputSource) { - CFDataRef uchrDataRef - = GTM_TISGetInputSourceProperty(inputSource, - kGTM_TISPropertyUnicodeKeyLayoutData); - if(uchrDataRef) { - uchrData = (UCKeyboardLayout*)CFDataGetBytePtr(uchrDataRef); - } - CFRelease(inputSource); - } - } else { - // Tiger we use keyboard layouts as it's the best we can officially do. - err = KLGetCurrentKeyboardLayout(¤tLayout); - if (err != noErr) { // COV_NF_START - _GTMDevLog(@"failed to fetch the keyboard layout, err=%d", err); - return nil; - } // COV_NF_END - - err = KLGetKeyboardLayoutProperty(currentLayout, - kKLKind, - (const void **)¤tLayoutKind); - if (err != noErr) { // COV_NF_START - _GTMDevLog(@"failed to fetch the keyboard layout kind property, err=%d", - err); - return nil; - } // COV_NF_END - - if (currentLayoutKind != kKLKCHRKind) { - err = KLGetKeyboardLayoutProperty(currentLayout, - kKLuchrData, - (const void **)&uchrData); - if (err != noErr) { // COV_NF_START - _GTMDevLog(@"failed to fetch the keyboard layout uchar data, err=%d", - err); - return nil; - } // COV_NF_END - } - } -#else - TISInputSourceRef inputSource = TISCopyCurrentKeyboardLayoutInputSource(); - if (inputSource) { - CFDataRef uchrDataRef - = TISGetInputSourceProperty(inputSource, kTISPropertyUnicodeKeyLayoutData); - if(uchrDataRef) { - uchrData = (UCKeyboardLayout*)CFDataGetBytePtr(uchrDataRef); - } - CFRelease(inputSource); - } -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - - NSString *keystrokeString = nil; - if (uchrData) { - // uchr layout data is available, this is our preference - UniCharCount uchrCharLength = 0; - UniChar uchrChars[256] = { 0 }; - UInt32 uchrDeadKeyState = 0; - err = UCKeyTranslate(uchrData, - keycode, - kUCKeyActionDisplay, - 0, // No modifiers - LMGetKbdType(), - kUCKeyTranslateNoDeadKeysMask, - &uchrDeadKeyState, - sizeof(uchrChars) / sizeof(UniChar), - &uchrCharLength, - uchrChars); - if (err != noErr) { - // COV_NF_START - _GTMDevLog(@"failed to translate the keycode, err=%d", err); - return nil; - // COV_NF_END - } - if (uchrCharLength < 1) return nil; - keystrokeString = [NSString stringWithCharacters:uchrChars - length:uchrCharLength]; - } -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - else if (currentLayoutKind == kKLKCHRKind) { - // Only KCHR layout data is available, go old school - void *KCHRData = NULL; - err = KLGetKeyboardLayoutProperty(currentLayout, kKLKCHRData, - (const void **)&KCHRData); - if (err != noErr) { // COV_NF_START - _GTMDevLog(@"failed to fetch the keyboard layout uchar data, err=%d", - err); - return nil; - } // COV_NF_END - // Turn into character code - UInt32 keyTranslateState = 0; - UInt32 twoKCHRChars = KeyTranslate(KCHRData, keycode, &keyTranslateState); - if (!twoKCHRChars) return nil; - // Unpack the fields - char firstChar = (char)((twoKCHRChars & 0x00FF0000) >> 16); - char secondChar = (char)(twoKCHRChars & 0x000000FF); - // May have one or two characters - if (firstChar && secondChar) { - NSString *str1 - = [[[NSString alloc] initWithBytes:&firstChar - length:1 - encoding:NSMacOSRomanStringEncoding] autorelease]; - NSString *str2 - = [[[NSString alloc] initWithBytes:&secondChar - length:1 - encoding:NSMacOSRomanStringEncoding] autorelease]; - keystrokeString = [NSString stringWithFormat:@"%@%@", - [str1 uppercaseString], - [str2 uppercaseString]]; - } else { - keystrokeString = [[[NSString alloc] initWithBytes:&secondChar - length:1 - encoding:NSMacOSRomanStringEncoding] autorelease]; - [keystrokeString uppercaseString]; - } - } -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - - // Sanity we got a stroke - if (!keystrokeString || ![keystrokeString length]) return nil; - - // Sanity check the keystroke string for unprintable characters - NSMutableCharacterSet *validChars = - [[[NSMutableCharacterSet alloc] init] autorelease]; - - [validChars formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]]; - [validChars formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; - [validChars formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]]; - for (unsigned int i = 0; i < [keystrokeString length]; i++) { - if (![validChars characterIsMember:[keystrokeString characterAtIndex:i]]) { - return nil; - } - } - - if (!useGlyph) { - // menus want glyphs in the original lowercase forms, so we only upper this - // if we aren't using it as a glyph. - keystrokeString = [keystrokeString uppercaseString]; - } - - return keystrokeString; - -} - -@end - -@implementation GTMHotKeyFieldEditor - -GTMOBJECT_SINGLETON_BOILERPLATE(GTMHotKeyFieldEditor, sharedHotKeyFieldEditor) - -- (id)init { - - self = [super init]; - if (!self) return nil; - [self setFieldEditor:YES]; // We are a field editor - - return self; - -} - -- (void)dealloc { - - [hotKeyDict_ release]; - [super dealloc]; - -} - -- (NSArray *)acceptableDragTypes { - - // Don't take drags - return [NSArray array]; - -} - -- (NSArray *)readablePasteboardTypes { - - // No pasting - return [NSArray array]; - -} - -- (NSArray *)writablePasteboardTypes { - - // No copying - return [NSArray array]; - -} - -- (BOOL)becomeFirstResponder { - - // We need to lose focus any time the window is not key - NSNotificationCenter *dc = [NSNotificationCenter defaultCenter]; - [dc addObserver:self - selector:@selector(windowResigned:) - name:NSWindowDidResignKeyNotification - object:[self window]]; - return [super becomeFirstResponder]; - -} - -- (BOOL)resignFirstResponder { - - // No longer interested in window resign - [[NSNotificationCenter defaultCenter] removeObserver:self]; - return [super resignFirstResponder]; - -} - -// Private method we use to get out of global hotkey capture when the window -// is no longer front -- (void)windowResigned:(NSNotification *)notification { - - // Lose our focus - [[self window] makeFirstResponder:[self window]]; - -} - -- (BOOL)shouldDrawInsertionPoint { - - // Show an insertion point, because we'll kill our own focus after - // each entry - return YES; - -} - -- (NSRange)selectionRangeForProposedRange:(NSRange)proposedSelRange - granularity:(NSSelectionGranularity)granularity { - - // Always select everything - return NSMakeRange(0, [[self textStorage] length]); - -} - -- (void)keyDown:(NSEvent *)theEvent { - - if ([self shouldBypassEvent:theEvent]) { - [super keyDown:theEvent]; - } else { - // Try to eat the event - [self processEventToHotKeyAndString:theEvent]; - } - -} - -- (BOOL)performKeyEquivalent:(NSEvent *)theEvent { - - if ([self shouldBypassEvent:theEvent]) { - return [super performKeyEquivalent:theEvent]; - } else { - // We always eat these key strokes while we have focus - [self processEventToHotKeyAndString:theEvent]; - return YES; - } - -} - -// Private do method that tell us to ignore certain events -- (BOOL)shouldBypassEvent:(NSEvent *)theEvent { - - UInt16 keyCode = [theEvent keyCode]; - NSUInteger modifierFlags - = [theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask; - - // Ignore all events containing tabs. They have special meaning to fields - // and some (Cmd Tab variants) are always consumed by the Dock, so users - // just shouldn't be able to use them. - if (keyCode == 48) { // Tab - // Just to be extra clear if the user is trying to use Dock hotkeys beep - // at them - if ((modifierFlags == NSCommandKeyMask) || - (modifierFlags == (NSCommandKeyMask | NSShiftKeyMask))) { - NSBeep(); - } - return YES; - } - - // Don't eat Cmd-Q. Users could have it as a hotkey, but its more likely - // they're trying to quit - if ((keyCode == 12) && (modifierFlags == NSCommandKeyMask)) { - return YES; - } - // Same for Cmd-W, user is probably trying to close the window - if ((keyCode == 13) && (modifierFlags == NSCommandKeyMask)) { - return YES; - } - - return NO; - -} - -// Private method that turns events into strings and dictionaries for our -// hotkey plumbing. -- (void)processEventToHotKeyAndString:(NSEvent *)theEvent { - - // Construct a dictionary of the event as a hotkey pref - NSDictionary *newHotKey = [self hotKeyDictionaryForEvent:theEvent]; - if (!newHotKey) { - NSBeep(); - return; // No action, but don't give up focus - } - NSString *prettyString = [GTMHotKeyTextField displayStringForHotKey:newHotKey]; - if (!prettyString) { - NSBeep(); - return; - } - - // Replacement range - NSRange replaceRange = NSMakeRange(0, [[self textStorage] length]); - - // Ask for permission to replace - if (![self shouldChangeTextInRange:replaceRange - replacementString:prettyString]) { - // If replacement was disallowed, change nothing, including hotKeyDict_ - NSBeep(); - return; - } - - // Replacement was allowed, update - [hotKeyDict_ autorelease]; - hotKeyDict_ = [newHotKey retain]; - - // Set string on self, allowing super to handle attribute copying - [self setString:prettyString]; - - // Finish the change - [self didChangeText]; - - // Force editing to end. This sends focus off into space slightly, but - // its better than constantly capturing user events. This is exactly - // like the Apple editor in their Keyboard pref pane. - [[[self delegate] cell] endEditing:self]; - -} - -- (NSDictionary *)hotKeyDictionary { - - return hotKeyDict_; - -} - -- (void)setHotKeyDictionary:(NSDictionary *)hotKey { - - [hotKeyDict_ autorelease]; - hotKeyDict_ = [hotKey copy]; - // Update content - NSString *prettyString = nil; - if (hotKeyDict_) { - prettyString = [GTMHotKeyTextField displayStringForHotKey:hotKey]; - } - if (!prettyString) { - prettyString = @""; - } - [self setString:prettyString]; - -} - -- (NSDictionary *)hotKeyDictionaryForEvent:(NSEvent *)event{ - - if (!event) return nil; - - // Check event - NSUInteger flags = [event modifierFlags]; - UInt16 keycode = [event keyCode]; - // If the event has no modifiers do nothing - NSUInteger allModifiers = (NSCommandKeyMask | NSAlternateKeyMask | - NSControlKeyMask | NSShiftKeyMask); - if (!(flags & allModifiers)) return nil; - // If the event has high bits in keycode do nothing - if (keycode & 0xFF00) return nil; - - // Clean the flags to only contain things we care about - UInt32 cleanFlags = 0; - if (flags & NSCommandKeyMask) cleanFlags |= NSCommandKeyMask; - if (flags & NSAlternateKeyMask) cleanFlags |= NSAlternateKeyMask; - if (flags & NSControlKeyMask) cleanFlags |= NSControlKeyMask; - if (flags & NSShiftKeyMask) cleanFlags |= NSShiftKeyMask; - - return [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:keycode], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:cleanFlags], - kGTMHotKeyModifierFlagsKey, - nil]; - -} -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextFieldTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextFieldTest.m deleted file mode 100644 index ee1bfc2b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMHotKeyTextFieldTest.m +++ /dev/null @@ -1,204 +0,0 @@ -// GTMHotKeyTextFieldTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMHotKeyTextField.h" - -#import "GTMSenTestCase.h" - -@interface GTMHotKeyTextField (PrivateMethods) -// Private methods which we want to access to test -+ (BOOL)isValidHotKey:(NSDictionary *)hotKey; -+ (NSString *)displayStringForHotKey:(NSDictionary *)hotKey; -@end - -@interface GTMHotKeyTextFieldTest : GTMTestCase -@end - -@implementation GTMHotKeyTextFieldTest - -- (void)testStringForModifierFlags { - - // Make sure only the flags we expect generate things in their strings - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlphaShiftKeyMask] length], - (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSShiftKeyMask] length], - (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSControlKeyMask] length], - (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlternateKeyMask] length], - (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSCommandKeyMask] length], - (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSNumericPadKeyMask] length], - (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSHelpKeyMask] length], - (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSFunctionKeyMask] length], - (NSUInteger)0, nil); - - // And some quick checks combining flags to make sure the string gets longer - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask)] length], - (NSUInteger)2, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask | - NSCommandKeyMask)] length], - (NSUInteger)3, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask | - NSCommandKeyMask | - NSControlKeyMask)] length], - (NSUInteger)4, nil); - -} - -- (void)testStringForKeycode_useGlyph_resourceBundle { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - STAssertNotNil(bundle, @"failed to get our bundle?"); - NSString *str; - - // We need a better test, but for now, we'll just loop through things we know - // we handle. - - // TODO: we need to force the pre leopard code path during tests. - - UInt16 testData[] = { - 123, 124, 125, 126, 122, 120, 99, 118, 96, 97, 98, 100, 101, 109, 103, 111, - 105, 107, 113, 106, 117, 36, 76, 48, 49, 51, 71, 53, 115, 116, 119, 121, - 114, 65, 67, 69, 75, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, - }; - for (int useGlyph = 0 ; useGlyph < 2 ; ++useGlyph) { - for (size_t i = 0; i < (sizeof(testData) / sizeof(UInt16)); ++i) { - UInt16 keycode = testData[i]; - - str = [GTMHotKeyTextField stringForKeycode:keycode - useGlyph:useGlyph - resourceBundle:bundle]; - STAssertNotNil(str, - @"failed to get a string for keycode %u (useGlyph:%@)", - keycode, (useGlyph ? @"YES" : @"NO")); - STAssertGreaterThan([str length], (NSUInteger)0, - @"got an empty string for keycode %u (useGlyph:%@)", - keycode, (useGlyph ? @"YES" : @"NO")); - } - } -} - -- (void)testGTMHotKeyPrettyString { - NSDictionary *hkDict; - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionary]; - STAssertNotNil(hkDict, nil); - STAssertNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - STAssertNil([GTMHotKeyTextField displayStringForHotKey:nil], nil); - -} - -- (void)testGTMHotKeyDictionaryAppearsValid { - NSDictionary *hkDict; - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertTrue([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionary]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - STAssertFalse([GTMHotKeyTextField isValidHotKey:nil], nil); - - // Make sure it doesn't choke w/ an object of the wrong time (since the dicts - // have to be saved/reloaded. - hkDict = (id)[NSString string]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.h deleted file mode 100644 index 0a7759f5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// GTMLargeTypeWindow.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// GTMLargeTypeWindow displays a block of text in a large panel window much -// like Address Book displays phone numbers. It will also display an image -// so you can pop up "alerts" similar to the way BBEdit does when you attempt -// to do a find and find nothing. It will fade in and out appropriately when -// ordered forward or backward. -// A typical fire-and-forget type usage would be: -// GTMLargeTypeWindow *window -// = [[[GTMLargeTypeWindow alloc] initWithString:@"Foo"] autorelease]; -// [window makeKeyAndOrderFront:nil]; - -// NB This class appears to have a problem with GC on 10.5.6 and below. -// Radar 6137322 CIFilter crashing when run with GC enabled -// This appears to be an Apple bug with GC. -// We do a copy animation that causes things to crash, but only with GC -// on. Currently I have left this enabled in GTMLargeTypeWindow pending -// info from Apple on the bug. It's hard to reproduce, and only appears -// at this time on our test machines. -// Dual-Core Intel Xeon with ATI Radeon X1300 - -// Amount of time to fade the window in or out -const NSTimeInterval kGTMLargeTypeWindowFadeTime; - -@interface GTMLargeTypeWindow : NSPanel -// Creates a display window with |string| displayed. -// Formats |string| as best as possible to fill the screen. -- (id)initWithString:(NSString *)string; -// Creates a display window with |attrString| displayed. -// Expects you to format it as you want it to appear. -- (id)initWithAttributedString:(NSAttributedString *)attrString; -// Creates a display window with |image| displayed. -// Make sure you set the image size to what you want -- (id)initWithImage:(NSImage*)image; -// Creates a display window with |view| displayed. -- (id)initWithContentView:(NSView *)view; - -// Copy the text out of the window if appropriate. This is normally called -// as part of the responder chain so that the user can copy the displayed text -// using cmd-c. -- (void)copy:(id)sender; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.m deleted file mode 100644 index 97847aaa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindow.m +++ /dev/null @@ -1,366 +0,0 @@ -// -// GTMLargeTypeWindow.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -#import "GTMLargeTypeWindow.h" -#import "GTMGeometryUtils.h" -#import "GTMNSBezierPath+RoundRect.h" -#import "GTMMethodCheck.h" - -// Amount of time to fade the window in or out -const NSTimeInterval kGTMLargeTypeWindowFadeTime = 0.333; - -// How far to inset the text from the edge of the window -static const CGFloat kEdgeInset = 16.0; - -// Give us an alpha value for our backing window -static const CGFloat kTwoThirdsAlpha = 0.66; - -@interface GTMLargeTypeCopyAnimation : NSAnimation -@end - -@interface GTMLargeTypeBackgroundView : NSView { - CIFilter *transition_; - GTMLargeTypeCopyAnimation *animation_; -} -- (void)animateCopy; -@end - -@interface GTMLargeTypeWindow (GTMLargeTypeWindowPrivate) -+ (CGFloat)displayWidth; -- (void)animateWithEffect:(NSString*)effect; -@end - -@implementation GTMLargeTypeWindow - -- (id)initWithString:(NSString *)string { - if ([string length] == 0) { - _GTMDevLog(@"GTMLargeTypeWindow got an empty string"); - [self release]; - return nil; - } - CGFloat displayWidth = [[self class] displayWidth]; - NSMutableAttributedString *attrString - = [[[NSMutableAttributedString alloc] initWithString:string] autorelease]; - - NSRange fullRange = NSMakeRange(0, [string length]); - [attrString addAttribute:NSForegroundColorAttributeName - value:[NSColor whiteColor] - range:fullRange]; - - NSMutableParagraphStyle *style - = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; - [style setAlignment:NSCenterTextAlignment]; - [attrString addAttribute:NSParagraphStyleAttributeName - value:style - range:fullRange]; - - NSShadow *textShadow = [[[NSShadow alloc] init] autorelease]; - [textShadow setShadowOffset:NSMakeSize( 5, -5 )]; - [textShadow setShadowBlurRadius:10]; - [textShadow setShadowColor:[NSColor colorWithCalibratedWhite:0 - alpha:kTwoThirdsAlpha]]; - [attrString addAttribute:NSShadowAttributeName - value:textShadow - range:fullRange]; - - // Try and find a size that fits without iterating too many times. - // We start going 50 pixels at a time, then 10, then 1 - int size = -26; // start at 24 (-26 + 50) - int offsets[] = { 50, 10, 1 }; - NSSize bigSize = NSMakeSize(MAXFLOAT, MAXFLOAT); - NSStringDrawingOptions options = (NSStringDrawingUsesDeviceMetrics | - NSStringDrawingOneShot); - for (size_t i = 0; i < sizeof(offsets) / sizeof(int); ++i) { - for(size = size + offsets[i]; size >= 24 && size < 300; size += offsets[i]) { - NSFont *font = [NSFont boldSystemFontOfSize:size] ; - [attrString addAttribute:NSFontAttributeName - value:font - range:fullRange]; - NSRect textSize = [attrString boundingRectWithSize:bigSize - options:options]; - NSSize maxAdvanceSize = [font maximumAdvancement]; - if (textSize.size.width + maxAdvanceSize.width > displayWidth) { - size = size - offsets[i]; - break; - } - } - } - - // Bounds check our values - if (size > 300) { - size = 300; - } else if (size < 24) { - size = 24; - } - [attrString addAttribute:NSFontAttributeName - value:[NSFont boldSystemFontOfSize:size] - range:fullRange]; - return [self initWithAttributedString:attrString]; -} - -- (id)initWithAttributedString:(NSAttributedString *)attrString { - if ([attrString length] == 0) { - _GTMDevLog(@"GTMLargeTypeWindow got an empty string"); - [self release]; - return nil; - } - CGFloat displayWidth =[[self class] displayWidth]; - NSRect frame = NSMakeRect(0, 0, displayWidth, 0); - NSTextView *textView = [[[NSTextView alloc] initWithFrame:frame] autorelease]; - [textView setEditable:NO]; - [textView setSelectable:NO]; - [textView setDrawsBackground:NO]; - [[textView textStorage] setAttributedString:attrString]; - [textView sizeToFit]; - - return [self initWithContentView:textView]; -} - -- (id)initWithImage:(NSImage*)image { - if (!image) { - _GTMDevLog(@"GTMLargeTypeWindow got an empty image"); - [self release]; - return nil; - } - NSRect rect = GTMNSRectOfSize([image size]); - NSImageView *imageView - = [[[NSImageView alloc] initWithFrame:rect] autorelease]; - [imageView setImage:image]; - return [self initWithContentView:imageView]; -} - -- (id)initWithContentView:(NSView *)view { - NSRect bounds = NSZeroRect; - if (view) { - bounds = [view bounds]; - } - if (!view || bounds.size.height <= 0 || bounds.size.width <= 0) { - _GTMDevLog(@"GTMLargeTypeWindow got an empty view"); - [self release]; - return nil; - } - NSRect screenRect = [[NSScreen mainScreen] frame]; - NSRect windowRect = GTMNSAlignRectangles([view frame], - screenRect, - GTMRectAlignCenter); - windowRect = NSInsetRect(windowRect, -kEdgeInset, -kEdgeInset); - windowRect = NSIntegralRect(windowRect); - NSUInteger mask = NSBorderlessWindowMask | NSNonactivatingPanelMask; - self = [super initWithContentRect:windowRect - styleMask:mask - backing:NSBackingStoreBuffered - defer:NO]; - if (self) { - [self setFrame:GTMNSAlignRectangles(windowRect, - screenRect, - GTMRectAlignCenter) - display:YES]; - [self setBackgroundColor:[NSColor clearColor]]; - [self setOpaque:NO]; - [self setLevel:NSFloatingWindowLevel]; - [self setHidesOnDeactivate:NO]; - - GTMLargeTypeBackgroundView *content - = [[[GTMLargeTypeBackgroundView alloc] initWithFrame:NSZeroRect] - autorelease]; - [self setHasShadow:YES]; - [self setContentView:content]; - [self setAlphaValue:0]; - [self setIgnoresMouseEvents:YES]; - [view setFrame:GTMNSAlignRectangles([view frame], - [content frame], - GTMRectAlignCenter)]; - [content addSubview:view]; - [self setInitialFirstResponder:view]; - } - return self; -} - -- (void)copy:(id)sender { - id firstResponder = [self initialFirstResponder]; - if ([firstResponder respondsToSelector:@selector(textStorage)]) { - NSPasteboard *pb = [NSPasteboard generalPasteboard]; - [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self]; - [pb setString:[[firstResponder textStorage] string] - forType:NSStringPboardType]; - } - - // Give the user some feedback that a copy has occurred - [(GTMLargeTypeBackgroundView*)[self contentView] animateCopy]; -} - -- (BOOL)canBecomeKeyWindow { - return YES; -} - -- (BOOL)performKeyEquivalent:(NSEvent *)theEvent { - NSString *chars = [theEvent charactersIgnoringModifiers]; - NSUInteger flags = ([theEvent modifierFlags] & - NSDeviceIndependentModifierFlagsMask); - BOOL isValid = (flags == NSCommandKeyMask) && [chars isEqualToString:@"c"]; - if (isValid) { - [self copy:self]; - } - return isValid; -} - -- (void)keyDown:(NSEvent *)theEvent { - [self close]; -} - -- (void)resignKeyWindow { - [super resignKeyWindow]; - if([self isVisible]) { - [self close]; - } -} - -- (void)makeKeyAndOrderFront:(id)sender { - [super makeKeyAndOrderFront:sender]; - [self animateWithEffect:NSViewAnimationFadeInEffect]; -} - -- (void)orderFront:(id)sender { - [super orderFront:sender]; - [self animateWithEffect:NSViewAnimationFadeInEffect]; -} - -- (void)orderOut:(id)sender { - [self animateWithEffect:NSViewAnimationFadeOutEffect]; - [super orderOut:sender]; -} - -+ (CGFloat)displayWidth { - NSRect screenRect = [[NSScreen mainScreen] frame]; - // This is just a rough calculation to make us fill a good proportion - // of the main screen. - return NSWidth( screenRect ) * 11.0 / 12.0 - 2.0 * kEdgeInset; -} - -- (void)animateWithEffect:(NSString*)effect { - NSDictionary *fadeIn = [NSDictionary dictionaryWithObjectsAndKeys: - self, NSViewAnimationTargetKey, - effect, NSViewAnimationEffectKey, - nil]; - NSArray *animation = [NSArray arrayWithObject:fadeIn]; - NSViewAnimation *viewAnim - = [[[NSViewAnimation alloc] initWithViewAnimations:animation] autorelease]; - [viewAnim setDuration:kGTMLargeTypeWindowFadeTime]; - [viewAnim setAnimationBlockingMode:NSAnimationBlocking]; - [viewAnim startAnimation]; -} -@end - -@implementation GTMLargeTypeBackgroundView -GTM_METHOD_CHECK(NSBezierPath, gtm_appendBezierPathWithRoundRect:cornerRadius:); - -- (void)dealloc { - // If we get released while animating, we'd better clean up. - [animation_ stopAnimation]; - [animation_ release]; - [transition_ release]; - [super dealloc]; -} - -- (BOOL)isOpaque { - return NO; -} - -- (void)drawRect:(NSRect)rect { - rect = [self bounds]; - NSBezierPath *roundRect = [NSBezierPath bezierPath]; - CGFloat minRadius = MIN(NSWidth(rect), NSHeight(rect)) * 0.5f; - - [roundRect gtm_appendBezierPathWithRoundRect:rect - cornerRadius:MIN(minRadius, 32)]; - [roundRect addClip]; - if (transition_) { - NSNumber *val = [NSNumber numberWithFloat:[animation_ currentValue]]; - [transition_ setValue:val forKey:@"inputTime"]; - CIImage *outputCIImage = [transition_ valueForKey:@"outputImage"]; - [outputCIImage drawInRect:rect - fromRect:rect - operation:NSCompositeSourceOver - fraction:1.0]; - } else { - [[NSColor colorWithDeviceWhite:0 alpha:kTwoThirdsAlpha] set]; - - NSRectFill(rect); - } -} - -- (void)animateCopy { - // This does a photocopy swipe to show folks that their copy has succceeded - // Store off a copy of our background - NSRect bounds = [self bounds]; - NSBitmapImageRep *rep = [self bitmapImageRepForCachingDisplayInRect:bounds]; - NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithBitmapImageRep:rep]; - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext:context]; - [self drawRect:bounds]; - [NSGraphicsContext restoreGraphicsState]; - CIVector *extent = [CIVector vectorWithX:bounds.origin.x - Y:bounds.origin.y - Z:bounds.size.width - W:bounds.size.height]; - CIFilter *transition = [CIFilter filterWithName:@"CICopyMachineTransition"]; - [transition setDefaults]; - [transition setValue:extent - forKey:@"inputExtent"]; - CIImage *image = [[CIImage alloc] initWithBitmapImageRep:rep]; - - [transition setValue:image forKey:@"inputImage"]; - [transition setValue:image forKey:@"inputTargetImage"]; - [transition setValue:[NSNumber numberWithInt:0] - forKey:@"inputTime"]; - [transition valueForKey:@"outputImage"]; - [image release]; - transition_ = [transition retain]; - animation_ = [[GTMLargeTypeCopyAnimation alloc] initWithDuration:0.5 - animationCurve:NSAnimationLinear]; - [animation_ setFrameRate:0.0f]; - [animation_ setDelegate:self]; - [animation_ setAnimationBlockingMode:NSAnimationBlocking]; - [animation_ startAnimation]; -} - -- (void)animationDidEnd:(NSAnimation*)animation { - [animation_ release]; - animation_ = nil; - [transition_ release]; - transition_ = nil; - [self display]; -} - -- (float)animation:(NSAnimation*)animation - valueForProgress:(NSAnimationProgress)progress { - // This gives us half the copy animation, so we don't swing back - // Don't want too much gratuitous effect - // 0.6 is required by experimentation. 0.5 doesn't do it - return progress * 0.6f; -} -@end - -@implementation GTMLargeTypeCopyAnimation -- (void)setCurrentProgress:(NSAnimationProgress)progress { - [super setCurrentProgress:progress]; - [[self delegate] display]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindowTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindowTest.m deleted file mode 100644 index 65ea1013..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLargeTypeWindowTest.m +++ /dev/null @@ -1,198 +0,0 @@ -// -// GTMLargeTypeWindowTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMLargeTypeWindow.h" -#import "GTMNSObject+UnitTesting.h" -#import "GTMUnitTestDevLog.h" -#import "GTMGarbageCollection.h" -#import "GTMSystemVersion.h" - -NSString *const kLongTextBlock = - @"`Twas brillig, and the slithy toves " - "Did gyre and gimble in the wabe: " - "all mimsy were the borogoves, " - "and the mome raths outgrabe. " - "Beware the Jabberwock, my son! " - "The jaws that bite, the claws that catch! " - "Beware the Jubjub bird, and shun " - "the frumious Bandersnatch! " - "He took his vorpal sword in hand: " - "long time the manxome foe he sought -- " - "so rested he by the Tumtum tree, " - "and stood awhile in thought. " - "And, as in uffish thought he stood, " - "the Jabberwock, with eyes of flame, " - "came whiffling through the tulgey wood, " - "and burbled as it came! " - "One, two! One, two! And through and through " - "the vorpal blade went snicker-snack! " - "He left it dead, and with its head " - "he went galumphing back. " - "And, has thou slain the Jabberwock? " - "Come to my arms, my beamish boy! " - "O frabjous day! Callooh! Callay! " - "He chortled in his joy."; - -NSString *const kMediumTextBlock = @"For the Snark was a Boojum, you see."; - -NSString *const kShortTextBlock = @"Short"; - -@interface GTMLargeTypeWindowTest : GTMTestCase -@end - -@implementation GTMLargeTypeWindowTest -- (BOOL)shouldDoAnimateCopy { - // NOTE: Animated copy tests are disabled when GC is on. - // See the comment/warning in the GTMLargeTypeWindow.h for more details, - // but we disable them to avoid the tests failing (crashing) when it's Apple's - // bug. Please bump the system check as appropriate when new systems are - // tested. Currently broken on 10.5.6 and below. - // Radar 6137322 CIFilter crashing when run with GC enabled - SInt32 major, minor, bugfix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugfix]; - if (!(GTMIsGarbageCollectionEnabled() - && major <= 10 && minor <= 5 && bugfix <= 6)) { - return YES; - } else { - NSLog(@"--- animated copy not run because of GC incompatibilites ---"); - return NO; - } -} - -- (void)testLargeTypeWindowIllegalInits { - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"]; - GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc] - initWithString:@""] autorelease]; - STAssertNil(window, nil); - - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"]; - window = [[[GTMLargeTypeWindow alloc] initWithString:nil] autorelease]; - STAssertNil(window, nil); - - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"]; - NSAttributedString *attrString = [[[NSAttributedString alloc] - initWithString:@""] autorelease]; - window = [[[GTMLargeTypeWindow alloc] - initWithAttributedString:attrString] autorelease]; - STAssertNil(window, nil); - - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty string"]; - window = [[[GTMLargeTypeWindow alloc] - initWithAttributedString:nil] autorelease]; - STAssertNil(window, nil); - - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty view"]; - window = [[[GTMLargeTypeWindow alloc] initWithContentView:nil] autorelease]; - STAssertNil(window, nil); - - [GTMUnitTestDevLog expectString:@"GTMLargeTypeWindow got an empty image"]; - window = [[[GTMLargeTypeWindow alloc] initWithImage:nil] autorelease]; - STAssertNil(window, nil); -} - -- (void)testLargeTypeWindowMediumText { - GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc] - initWithString:kMediumTextBlock] autorelease]; - STAssertNotNil(window, nil); - STAssertTrue([window canBecomeKeyWindow], nil); - [window makeKeyAndOrderFront:nil]; - NSDate *endDate - = [NSDate dateWithTimeIntervalSinceNow:kGTMLargeTypeWindowFadeTime]; - [[NSRunLoop currentRunLoop] runUntilDate:endDate]; - GTMAssertObjectStateEqualToStateNamed(window, - @"GTMLargeTypeWindowMediumTextTest", - nil); - if ([self shouldDoAnimateCopy]) { - [window copy:nil]; - NSPasteboard *pb = [NSPasteboard generalPasteboard]; - NSString *pbString = [pb stringForType:NSStringPboardType]; - STAssertEqualObjects(pbString, kMediumTextBlock, nil); - } - [window keyDown:nil]; -} - -- (void)testLargeTypeWindowShortText { - GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc] - initWithString:kShortTextBlock] autorelease]; - STAssertNotNil(window, nil); - STAssertTrue([window canBecomeKeyWindow], nil); - [window makeKeyAndOrderFront:nil]; - NSDate *endDate - = [NSDate dateWithTimeIntervalSinceNow:kGTMLargeTypeWindowFadeTime]; - [[NSRunLoop currentRunLoop] runUntilDate:endDate]; - GTMAssertObjectStateEqualToStateNamed(window, - @"GTMLargeTypeWindowShortTextTest", - nil); - if ([self shouldDoAnimateCopy]) { - [window copy:nil]; - NSPasteboard *pb = [NSPasteboard generalPasteboard]; - NSString *pbString = [pb stringForType:NSStringPboardType]; - STAssertEqualObjects(pbString, kShortTextBlock, nil); - } - [window resignKeyWindow]; -} - -- (void)testLargeTypeWindowLongText { - GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc] - initWithString:kLongTextBlock] autorelease]; - STAssertNotNil(window, nil); - [window orderFront:nil]; - NSDate *endDate - = [NSDate dateWithTimeIntervalSinceNow:kGTMLargeTypeWindowFadeTime]; - [[NSRunLoop currentRunLoop] runUntilDate:endDate]; - // Can't do state for long text as it will wrap differently on different - // sized screens. - GTMAssertObjectStateEqualToStateNamed(window, - @"GTMLargeTypeWindowLongTextTest", - nil); - if ([self shouldDoAnimateCopy]) { - [window copy:nil]; - NSPasteboard *pb = [NSPasteboard generalPasteboard]; - NSString *pbString = [pb stringForType:NSStringPboardType]; - STAssertEqualObjects(pbString, kLongTextBlock, nil); - } - [window keyDown:nil]; -} - -- (void)testLargeTypeWindowImageText { - NSImage *image = [NSApp applicationIconImage]; - GTMLargeTypeWindow *window = [[[GTMLargeTypeWindow alloc] - initWithImage:image] autorelease]; - STAssertNotNil(window, nil); - [window makeKeyAndOrderFront:nil]; - NSDate *endDate - = [NSDate dateWithTimeIntervalSinceNow:kGTMLargeTypeWindowFadeTime]; - [[NSRunLoop currentRunLoop] runUntilDate:endDate]; - GTMAssertObjectStateEqualToStateNamed(window, - @"GTMLargeTypeWindowImageTest", - nil); - NSString *testString = @"TestString"; - NSPasteboard *pb = [NSPasteboard generalPasteboard]; - [pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self]; - [pb setString:testString forType:NSStringPboardType]; - if ([self shouldDoAnimateCopy]) { - [window copy:nil]; - // Pasteboard should not change for an image - NSString *pbString = [pb stringForType:NSStringPboardType]; - STAssertEqualObjects(pbString, testString, nil); - } - [window resignKeyWindow]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.h deleted file mode 100644 index d85a4eb9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.h +++ /dev/null @@ -1,76 +0,0 @@ -// -// GTMLinearRGBShading.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMShading.h" -#import "GTMCalculatedRange.h" - -/// A shading that does returns smooth linear values for RGB. -// -/// Thus if you create a shading from 0.0->red to 1.0->blue you will get -/// \verbatim -/// - 0.5->purple -/// - 0.75->eggplant -/// - 0.25->magenta -/// \endverbatim - -@interface GTMLinearRGBShading : GTMCalculatedRange { -@private - CGFunctionRef function_; // function used to calculated shading (STRONG) - CGColorSpaceRef colorSpace_; // colorspace used for shading (STRONG) - BOOL isCalibrated_; // are we using calibrated or device RGB. - CGFloat colorValue_[4]; // the RGBA color values -} - -/// Generate a shading with color |begin| at position 0.0 and color |end| at 1.0. -// -// Args: -// begin: color at beginning of range -// end: color at end of range -// colorSpaceName: name of colorspace to draw into must be either -// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace -// -// Returns: -// a GTMLinearRGBShading -+ (id)shadingFromColor:(NSColor *)begin toColor:(NSColor *)end - fromSpaceNamed:(NSString*)colorSpaceName; - -/// Generate a shading with a collection of colors at various positions. -// -// Args: -// colors: a C style array containg the colors we are adding -// colorSpaceName: name of colorspace to draw into must be either -// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace -// positions: a C style array containg the positions we want to -// add the colors at -// numberOfColors: how many colors/positions we are adding -// -// Returns: -// a GTMLinearRGBShading -+ (id)shadingWithColors:(NSColor **)colors - fromSpaceNamed:(NSString*)colorSpaceName - atPositions:(CGFloat *)positions - count:(NSUInteger)numberOfColors; - -/// Designated initializer -// Args: -// colorSpaceName - name of the colorspace to use must be either -// NSCalibratedRGBColorSpace or NSDeviceRGBColorSpace -- (id)initWithColorSpaceName:(NSString*)colorSpaceName; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.m deleted file mode 100644 index 9434186c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShading.m +++ /dev/null @@ -1,204 +0,0 @@ -// -// GTMLinearRGBShading.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMLinearRGBShading.h" -#import "GTMDefines.h" - -// Carbon callback function required for CoreGraphics -static void cShadeFunction(void *info, const CGFloat *inPos, CGFloat *outVals); - -@implementation GTMLinearRGBShading -+ (id)shadingFromColor:(NSColor *)begin toColor:(NSColor *)end - fromSpaceNamed:(NSString*)colorSpaceName { - NSColor *theColors[] = { begin, end }; - CGFloat thePositions[] = { 0.0, 1.0 }; - return [[self class] shadingWithColors:theColors - fromSpaceNamed:colorSpaceName - atPositions:thePositions - count:(sizeof(thePositions)/sizeof(CGFloat))]; -} - -+ (id)shadingWithColors:(NSColor **)colors fromSpaceNamed:(NSString*)colorSpaceName - atPositions:(CGFloat *)positions count:(NSUInteger)count { - - GTMLinearRGBShading *theShading = [[[[self class] alloc] initWithColorSpaceName:colorSpaceName] autorelease]; - for (NSUInteger i = 0; i < count; ++i) { - [theShading insertStop:colors[i] atPosition:positions[i]]; - } - return theShading; -} - -- (id)initWithColorSpaceName:(NSString*)colorSpaceName { - if ((self = [super init])) { - if ([colorSpaceName isEqualToString:NSDeviceRGBColorSpace]) { - isCalibrated_ = NO; - } else if ([colorSpaceName isEqualToString:NSCalibratedRGBColorSpace]) { - isCalibrated_ = YES; - } - else { - [self release]; - self = nil; - } - } - return self; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - if (nil != function_) { - CGFunctionRelease(function_); - } - if (nil != colorSpace_) { - CGColorSpaceRelease(colorSpace_); - } - [super finalize]; -} -#endif - -- (void)dealloc { - if (nil != function_) { - CGFunctionRelease(function_); - } - if (nil != colorSpace_) { - CGColorSpaceRelease(colorSpace_); - } - [super dealloc]; -} - - -- (void)insertStop:(id)item atPosition:(CGFloat)position { - NSString *colorSpaceName = isCalibrated_ ? NSCalibratedRGBColorSpace : NSDeviceRGBColorSpace; - NSColor *tempColor = [item colorUsingColorSpaceName: colorSpaceName]; - if (nil != tempColor) { - [super insertStop:tempColor atPosition:position]; - } -} - -// Calculate a linear value based on our stops -- (id)valueAtPosition:(CGFloat)position { - NSUInteger positionIndex = 0; - NSUInteger colorCount = [self stopCount]; - CGFloat stop1Position = 0.0; - NSColor *stop1Color = [self stopAtIndex:positionIndex position:&stop1Position]; - positionIndex += 1; - CGFloat stop2Position = 0.0; - NSColor *stop2Color = nil; - if (colorCount > 1) { - stop2Color = [self stopAtIndex:positionIndex position:&stop2Position]; - positionIndex += 1; - } else { - // if we only have one value, that's what we return - stop2Position = stop1Position; - stop2Color = stop1Color; - } - - while (positionIndex < colorCount && stop2Position < position) { - stop1Color = stop2Color; - stop1Position = stop2Position; - stop2Color = [self stopAtIndex:positionIndex position:&stop2Position]; - positionIndex += 1; - } - - if (position <= stop1Position) { - // if we are less than our lowest position, return our first color - [stop1Color getRed:&colorValue_[0] green:&colorValue_[1] - blue:&colorValue_[2] alpha:&colorValue_[3]]; - } else if (position >= stop2Position) { - // likewise if we are greater than our highest position, return the last color - [stop2Color getRed:&colorValue_[0] green:&colorValue_[1] - blue:&colorValue_[2] alpha:&colorValue_[3]]; - } else { - // otherwise interpolate between the two - position = (position - stop1Position) / (stop2Position - stop1Position); - CGFloat red1, red2, green1, green2, blue1, blue2, alpha1, alpha2; - [stop1Color getRed:&red1 green:&green1 blue:&blue1 alpha:&alpha1]; - [stop2Color getRed:&red2 green:&green2 blue:&blue2 alpha:&alpha2]; - - colorValue_[0] = (red2 - red1) * position + red1; - colorValue_[1] = (green2 - green1) * position + green1; - colorValue_[2] = (blue2 - blue1) * position + blue1; - colorValue_[3] = (alpha2 - alpha1) * position + alpha1; - } - - // Yes, I am casting a CGFloat[] to an id to pass it by the compiler. This - // significantly improves performance though as I avoid creating an NSColor - // for every scanline which later has to be cleaned up in an autorelease pool - // somewhere. Causes guardmalloc to run significantly faster. - return (id)colorValue_; -} - -// -// switch from C to obj-C. The callback to a shader is a c function -// but we want to call our objective c object to do all the -// calculations for us. We have passed our function our -// GTMLinearRGBShading as an obj-c object in the |info| so -// we just turn around and ask it to calculate our value based -// on |inPos| and then stick the results back in |outVals| -// -// Args: -// info: is the GTMLinearRGBShading as an -// obj-C object. -// inPos: the position to calculate values for. This is a pointer to -// a single float value -// outVals: where we store our return values. Since we are calculating -// an RGBA color, this is a pointer to an array of four float values -// ranging from 0.0 to 1.0 -// -// -static void cShadeFunction(void *info, const CGFloat *inPos, CGFloat *outVals) { - id object = (id)info; - CGFloat *colorValue = (CGFloat*)[object valueAtPosition:*inPos]; - outVals[0] = colorValue[0]; - outVals[1] = colorValue[1]; - outVals[2] = colorValue[2]; - outVals[3] = colorValue[3]; -} - -- (CGFunctionRef) shadeFunction { - // lazily create the function as necessary - if (nil == function_) { - // We have to go to carbon here, and create the CGFunction. Note that this - // diposed if necessary in the dealloc call. - const CGFunctionCallbacks shadeFunctionCallbacks = { 0, &cShadeFunction, NULL }; - - // TODO: this code assumes that we have a range from 0.0 to 1.0 - // which may not be true according to the stops that the user has given us. - // In general you have stops at 0.0 and 1.0, so this will do for right now - // but may be an issue in the future. - const CGFloat inRange[2] = { 0.0, 1.0 }; - const CGFloat outRange[8] = { 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 }; - function_ = CGFunctionCreate(self, - sizeof(inRange) / (sizeof(CGFloat) * 2), inRange, - sizeof(outRange) / (sizeof(CGFloat) * 2), outRange, - &shadeFunctionCallbacks); - } - return function_; -} - -- (CGColorSpaceRef)colorSpace { - // lazily create the colorspace as necessary - if (nil == colorSpace_) { - if (isCalibrated_) { - colorSpace_ = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - } else { - colorSpace_ = CGColorSpaceCreateDeviceRGB(); - } - } - return colorSpace_; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShadingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShadingTest.m deleted file mode 100644 index 38802e60..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLinearRGBShadingTest.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// GTMLinearRGBShadingTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMSenTestCase.h" -#import "GTMLinearRGBShading.h" - -@interface GTMLinearRGBShadingTest : GTMTestCase -@end - -@implementation GTMLinearRGBShadingTest -- (void)testShadingFrom { - // Create a shading from red to blue, and check if 50% is purple - NSColor *red = [NSColor redColor]; - NSColor *blue = [NSColor blueColor]; - NSColor *purple = [NSColor purpleColor]; - GTMLinearRGBShading *theShading = - [GTMLinearRGBShading shadingFromColor:red - toColor:blue - fromSpaceNamed:NSCalibratedRGBColorSpace]; - STAssertNotNil(theShading,nil); - STAssertEquals([theShading stopCount], (NSUInteger)2, nil); - CGFloat *theColor = (CGFloat*)[theShading valueAtPosition: 0.5]; - STAssertEqualsWithAccuracy(theColor[0], [purple redComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[1], [purple greenComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[2], [purple blueComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[3], [purple alphaComponent], 0.001, nil); -} - -- (void)testShadingWith { - // Create a shading with kColorCount colors and make sure all the values are there. - enum { kColorCount = 100 }; - NSColor *theColors[kColorCount]; - CGFloat thePositions[kColorCount]; - const CGFloat kColorIncrement = 1.0 / kColorCount; - for (NSUInteger i = 0; i < kColorCount; i++) { - CGFloat newValue = kColorIncrement * i; - thePositions[i] = newValue; - theColors[i] = [NSColor colorWithCalibratedRed:newValue - green:newValue - blue:newValue - alpha:newValue]; - } - GTMLinearRGBShading *theShading = - [GTMLinearRGBShading shadingWithColors:theColors - fromSpaceNamed:NSCalibratedRGBColorSpace - atPositions:thePositions - count:kColorCount]; - for (NSUInteger i = 0; i < kColorCount; i++) { - CGFloat newValue = kColorIncrement * i; - CGFloat *theColor = (CGFloat*)[theShading valueAtPosition:newValue]; - STAssertEqualsWithAccuracy(theColor[0], newValue, 0.001, nil); - STAssertEqualsWithAccuracy(theColor[1], newValue, 0.001, nil); - STAssertEqualsWithAccuracy(theColor[2], newValue, 0.001, nil); - STAssertEqualsWithAccuracy(theColor[3], newValue, 0.001, nil); - } - // Create a shading with 1 color to test that special handling - NSColor *purple = [NSColor purpleColor]; - NSColor *singleColor[1] = { purple }; - CGFloat singlePosition[1] = { 0.5 }; - theShading = - [GTMLinearRGBShading shadingWithColors:singleColor - fromSpaceNamed:NSCalibratedRGBColorSpace - atPositions:singlePosition - count:1]; - // test over a range to make sure we always get the same color - for (NSUInteger i = 0; i < kColorCount; i++) { - CGFloat newValue = kColorIncrement * i; - CGFloat *theColor = (CGFloat*)[theShading valueAtPosition:newValue]; - STAssertEqualsWithAccuracy(theColor[0], [purple redComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[1], [purple greenComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[2], [purple blueComponent], 0.001, nil); - STAssertEqualsWithAccuracy(theColor[3], [purple alphaComponent], 0.001, nil); - } -} - -- (void)testShadeFunction { - GTMLinearRGBShading *theShading = - [GTMLinearRGBShading shadingWithColors:nil - fromSpaceNamed:NSCalibratedRGBColorSpace - atPositions:nil - count:0]; - CGFunctionRef theFunction = [theShading shadeFunction]; - STAssertNotNULL(theFunction, nil); - STAssertEquals(CFGetTypeID(theFunction), CGFunctionGetTypeID(), nil); -} - -- (void)testColorSpace { - // Calibrated RGB - GTMLinearRGBShading *theShading = - [GTMLinearRGBShading shadingWithColors:nil - fromSpaceNamed:NSCalibratedRGBColorSpace - atPositions:nil - count:0]; - CGColorSpaceRef theColorSpace = [theShading colorSpace]; - STAssertNotNULL(theColorSpace, nil); - STAssertEquals(CFGetTypeID(theColorSpace), CGColorSpaceGetTypeID(), nil); - - // Device RGB - theShading = - [GTMLinearRGBShading shadingWithColors:nil - fromSpaceNamed:NSDeviceRGBColorSpace - atPositions:nil - count:0]; - theColorSpace = [theShading colorSpace]; - STAssertNotNULL(theColorSpace, nil); - STAssertEquals(CFGetTypeID(theColorSpace), CGColorSpaceGetTypeID(), nil); - - // Device CMYK (not supported) - theShading = - [GTMLinearRGBShading shadingWithColors:nil - fromSpaceNamed:NSDeviceCMYKColorSpace - atPositions:nil - count:0]; - STAssertNULL(theShading, nil); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.h deleted file mode 100644 index b4375b4c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.h +++ /dev/null @@ -1,88 +0,0 @@ -// -// GTMLoginItems.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -/// Login items key constants, used as keys in |+loginItems| -// -// Item name -GTM_EXTERN NSString * const kGTMLoginItemsNameKey; -// Item path -GTM_EXTERN NSString * const kGTMLoginItemsPathKey; -// Hidden (NSNumber bool) -GTM_EXTERN NSString * const kGTMLoginItemsHiddenKey; - -/// GTMLoginItems -// -/// A helper class to manipulate the user's Login Items. -@interface GTMLoginItems : NSObject - -/// Obtain a complete list of all login items. -// -// Returns: -// Autoreleased array of dictionaries keyed with kGTMLoginItemsPathKey, etc. -// -+ (NSArray *)loginItems:(NSError **)errorInfo; - -/// Check if the given path is in the current user's Login Items -// -// Args: -// path: path to the application -// -// Returns: -// YES if the path is in the Login Items -// -+ (BOOL)pathInLoginItems:(NSString *)path; - -/// Check if the given name is in the current user's Login Items -// -// Args: -// name: name to the application -// -// Returns: -// YES if the name is in the Login Items -// -+ (BOOL)itemWithNameInLoginItems:(NSString *)name; - -/// Add the given path to the current user's Login Items. Does nothing if the -/// path is already there. -// -// Args: -// path: path to add -// hide: Set to YES to have the item launch hidden -// -+ (void)addPathToLoginItems:(NSString *)path hide:(BOOL)hide; - -/// Remove the given path from the current user's Login Items. Does nothing if -/// the path is not there. -// -// Args: -// path: the path to remove -// -+ (void)removePathFromLoginItems:(NSString *)path; - -/// Remove the given item name from the current user's Login Items. Does nothing -/// if no item with that name is present. -// -// Args: -// name: name of the item to remove -// -+ (void)removeItemWithNameFromLoginItems:(NSString *)name; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.m deleted file mode 100644 index f124ef50..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItems.m +++ /dev/null @@ -1,193 +0,0 @@ -// -// GTMLoginItems.m -// Based on AELoginItems from DTS. -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLoginItems.h" -#import "GTMDefines.h" - -#include - -// Exposed constants -NSString * const kGTMLoginItemsNameKey = @"Name"; -NSString * const kGTMLoginItemsPathKey = @"Path"; -NSString * const kGTMLoginItemsHiddenKey = @"Hide"; - -@interface GTMLoginItems (PrivateMethods) -+ (NSInteger)indexOfLoginItemWithValue:(id)value - forKey:(NSString *)key - loginItems:(NSArray *)items; -+ (BOOL)compileAndRunScript:(NSString *)script - withError:(NSError **)errorInfo; -@end - -@implementation GTMLoginItems (PrivateMethods) - -+ (NSInteger)indexOfLoginItemWithValue:(id)value - forKey:(NSString *)key - loginItems:(NSArray *)items { - if (!value || !key || !items) return NSNotFound; - NSDictionary *item = nil; - NSInteger found = -1; - GTM_FOREACH_OBJECT(item, items) { - ++found; - id itemValue = [item objectForKey:key]; - if (itemValue && [itemValue isEqual:value]) { - return found; - } - } - return NSNotFound; -} - -+ (BOOL)compileAndRunScript:(NSString *)script - withError:(NSError **)errorInfo { - if ([script length] == 0) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-90 userInfo:nil]; - return NO; - // COV_NF_END - } - NSAppleScript *query = [[[NSAppleScript alloc] initWithSource:script] autorelease]; - NSDictionary *errDict = nil; - if ( ![query compileAndReturnError:&errDict]) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-91 userInfo:errDict]; - return NO; - // COV_NF_END - } - NSAppleEventDescriptor *scriptResult = [query executeAndReturnError:&errDict]; - if (!scriptResult) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-92 userInfo:errDict]; - return NO; - // COV_NF_END - } - // we don't process the result - return YES; -} - -@end - -@implementation GTMLoginItems - -+ (NSArray*)loginItems:(NSError **)errorInfo { - NSDictionary *errDict = nil; - // get the script compiled and saved off - static NSAppleScript *query = nil; - if (!query) { - NSString *querySource = @"tell application \"System Events\" to get properties of login items"; - query = [[NSAppleScript alloc] initWithSource:querySource]; - if ( ![query compileAndReturnError:&errDict]) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-1 userInfo:errDict]; - [query release]; - query = nil; - return nil; - // COV_NF_END - } - } - // run the script - NSAppleEventDescriptor *scriptResult = [query executeAndReturnError:&errDict]; - if (!scriptResult) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-2 userInfo:errDict]; - return nil; - // COV_NF_END - } - // build our results - NSMutableArray *result = [NSMutableArray array]; - NSInteger count = [scriptResult numberOfItems]; - for (NSInteger i = 0; i < count; ++i) { - NSAppleEventDescriptor *aeItem = [scriptResult descriptorAtIndex:i+1]; - NSAppleEventDescriptor *hidn = [aeItem descriptorForKeyword:kAEHidden]; - NSAppleEventDescriptor *nam = [aeItem descriptorForKeyword:pName]; - NSAppleEventDescriptor *ppth = [aeItem descriptorForKeyword:'ppth']; - NSMutableDictionary *item = [NSMutableDictionary dictionary]; - if (hidn && [hidn booleanValue]) { - [item setObject:[NSNumber numberWithBool:YES] forKey:kGTMLoginItemsHiddenKey]; - } - if (nam) { - NSString *name = [nam stringValue]; - if (name) { - [item setObject:name forKey:kGTMLoginItemsNameKey]; - } - } - if (ppth) { - NSString *path = [ppth stringValue]; - if (path) { - [item setObject:path forKey:kGTMLoginItemsPathKey]; - } - } - [result addObject:item]; - } - - return result; -} - -+ (BOOL)pathInLoginItems:(NSString *)path { - NSArray *loginItems = [self loginItems:nil]; - NSInteger itemIndex = [self indexOfLoginItemWithValue:path - forKey:kGTMLoginItemsPathKey - loginItems:loginItems]; - return (itemIndex != NSNotFound) ? YES : NO; -} - -+ (BOOL)itemWithNameInLoginItems:(NSString *)name { - NSArray *loginItems = [self loginItems:nil]; - NSInteger itemIndex = [self indexOfLoginItemWithValue:name - forKey:kGTMLoginItemsNameKey - loginItems:loginItems]; - return (itemIndex != NSNotFound) ? YES : NO; -} - -+ (void)addPathToLoginItems:(NSString*)path hide:(BOOL)hide { - if (!path) return; - // make sure it isn't already there - if ([self pathInLoginItems:path]) return; - // now append it - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to make new login item with properties { path:\"%s\", hidden:%s } at end", - [path UTF8String], - (hide ? "yes" : "no")]; - [self compileAndRunScript:scriptSource withError:nil]; -} - -+ (void)removePathFromLoginItems:(NSString*)path { - if ([path length] == 0) return; - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to delete (login items whose path is \"%s\")", - [path UTF8String]]; - [self compileAndRunScript:scriptSource withError:nil]; -} - -+ (void)removeItemWithNameFromLoginItems:(NSString *)name { - if ([name length] == 0) return; - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to delete (login items whose name is \"%s\")", - [name UTF8String]]; - [self compileAndRunScript:scriptSource withError:nil]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItemsTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItemsTest.m deleted file mode 100644 index 50b74820..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMLoginItemsTest.m +++ /dev/null @@ -1,137 +0,0 @@ -// -// GTMLoginItemsTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMSenTestCase.h" -#import "GTMLoginItems.h" - - // we don't really run this test because if someone had it in some automated - // tests, then if something did fail, it could leave things in the login items - // on the computer which could be a nasty surprise. -#define MODIFICATION_TESTS_ENABLED 0 - - -@interface GTMLoginItemsTest : GTMTestCase -@end - -static BOOL ItemsListHasPath(NSArray *items, NSString *path) { - NSDictionary *item = nil; - GTM_FOREACH_OBJECT(item, items) { - NSString *itemPath = [item objectForKey:kGTMLoginItemsPathKey]; - if (itemPath && [itemPath isEqual:path]) { - return YES; - } - } - return NO; -} - -@implementation GTMLoginItemsTest - -- (void)testNoModification { - - NSError *error = nil; - NSString *bogusAppPath = @"/Applications/AppThatDoesNotExist.app"; - NSString *bogusAppName = @"AppThatDoesNotExist"; - - // fetch the starting values - NSArray *initialItems = [GTMLoginItems loginItems:&error]; - STAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); - STAssertFalse(ItemsListHasPath(initialItems, bogusAppPath), - @"bogusApp shouldn't be in list to start for test (%@)", initialItems); - - // check by path - STAssertFalse([GTMLoginItems pathInLoginItems:bogusAppPath], nil); - - // check by name - STAssertFalse([GTMLoginItems itemWithNameInLoginItems:bogusAppName], nil); - - // remove it by path - [GTMLoginItems removePathFromLoginItems:bogusAppPath]; - NSArray *curItems = [GTMLoginItems loginItems:nil]; - STAssertEqualObjects(initialItems, curItems, nil); - - // remove it by name - [GTMLoginItems removeItemWithNameFromLoginItems:bogusAppName]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertEqualObjects(initialItems, curItems, nil); - -} - -- (void)testModification { - -#if MODIFICATION_TESTS_ENABLED - - NSError *error = nil; - NSString *textEditPath = @"/Applications/TextEdit.app"; - NSString *textEditName = @"TextEdit"; - - // fetch the starting values - NSArray *initialItems = [GTMLoginItems loginItems:&error]; - STAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); - STAssertFalse(ItemsListHasPath(initialItems, textEditPath), - @"textedit shouldn't be in list to start for test (%@)", initialItems); - - // add textedit - [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; - NSArray *curItems = [GTMLoginItems loginItems:nil]; - STAssertNotEqualObjects(initialItems, curItems, nil); - - // check by path - STAssertTrue([GTMLoginItems pathInLoginItems:textEditPath], nil); - - // check by name - STAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName], nil); - - // remove it by path - [GTMLoginItems removePathFromLoginItems:textEditPath]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertEqualObjects(initialItems, curItems, nil); - - // check by path - STAssertFalse([GTMLoginItems pathInLoginItems:textEditPath], nil); - - // check by name - STAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName], nil); - - // add textedit - [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertNotEqualObjects(initialItems, curItems, nil); - - // check by path - STAssertTrue([GTMLoginItems pathInLoginItems:textEditPath], nil); - - // check by name - STAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName], nil); - - // remove it by name - [GTMLoginItems removeItemWithNameFromLoginItems:textEditName]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertEqualObjects(initialItems, curItems, nil); - - // check by path - STAssertFalse([GTMLoginItems pathInLoginItems:textEditPath], nil); - - // check by name - STAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName], nil); - -#endif // MODIFICATION_TESTS_ENABLED - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.h deleted file mode 100644 index a1b022ed..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// GTMNSBezierPath+CGPath.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -/// Category for extracting a CGPathRef from a NSBezierPath -@interface NSBezierPath (GTMBezierPathCGPathAdditions) - -/// Extract a CGPathRef from a NSBezierPath. -// -// Args: -// -// Returns: -// Converted autoreleased CGPathRef. -// nil if failure. -- (CGPathRef)gtm_CGPath; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.m deleted file mode 100644 index 3624d9eb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPath.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// GTMNSBezierPath+CGPath.m -// -// Category for extracting a CGPathRef from a NSBezierPath -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// -#import "GTMNSBezierPath+CGPath.h" -#import "GTMDefines.h" -#import "GTMGarbageCollection.h" - -@implementation NSBezierPath (GTMBezierPathCGPathAdditions) - -// Extract a CGPathRef from a NSBezierPath. -// -// Args: -// -// Returns: -// Converted CGPathRef. -// nil if failure. -- (CGPathRef)gtm_CGPath { - CGMutablePathRef thePath = CGPathCreateMutable(); - if (!thePath) return nil; - - NSInteger elementCount = [self elementCount]; - - // The maximum number of points is 3 for a NSCurveToBezierPathElement. - // (controlPoint1, controlPoint2, and endPoint) - NSPoint controlPoints[3]; - - for (NSInteger i = 0; i < elementCount; i++) { - switch ([self elementAtIndex:i associatedPoints:controlPoints]) { - case NSMoveToBezierPathElement: - CGPathMoveToPoint(thePath, &CGAffineTransformIdentity, - controlPoints[0].x, controlPoints[0].y); - break; - case NSLineToBezierPathElement: - CGPathAddLineToPoint(thePath, &CGAffineTransformIdentity, - controlPoints[0].x, controlPoints[0].y); - break; - case NSCurveToBezierPathElement: - CGPathAddCurveToPoint(thePath, &CGAffineTransformIdentity, - controlPoints[0].x, controlPoints[0].y, - controlPoints[1].x, controlPoints[1].y, - controlPoints[2].x, controlPoints[2].y); - break; - case NSClosePathBezierPathElement: - CGPathCloseSubpath(thePath); - break; - default: // COV_NF_START - _GTMDevLog(@"Unknown element at [NSBezierPath (GTMBezierPathCGPathAdditions) cgPath]"); - break; // COV_NF_END - }; - } - return (CGPathRef)GTMCFAutorelease(thePath); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPathTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPathTest.m deleted file mode 100644 index 3c99a19c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+CGPathTest.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// GTMNSBezierPath+CGPathTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -#import -#import "GTMNSBezierPath+CGPath.h" -#import "GTMAppKit+UnitTesting.h" -#import "GTMSenTestCase.h" - -@interface GTMNSBezierPath_CGPathTest : GTMTestCase -@end - -@implementation GTMNSBezierPath_CGPathTest - -- (void)testCGPath { - GTMAssertDrawingEqualToImageNamed(self, - NSMakeSize(100, 100), - @"GTMNSBezierPath+CGPathTest", - nil, nil); -} - - -// Draws all of our tests so that we can compare this to our stored image file. -- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo{ - NSBezierPath *thePath = [NSBezierPath bezierPath]; - NSPoint theStart = NSMakePoint(20.0, 20.0); - - // Test moveto/lineto - [thePath moveToPoint: theStart]; - for (NSUInteger i = 0; i < 10; ++i) { - NSPoint theNewPoint = NSMakePoint(i * 5, i * 10); - [thePath lineToPoint: theNewPoint]; - theNewPoint = NSMakePoint(i * 2, i * 6); - [thePath moveToPoint: theNewPoint]; - } - - // Test moveto/curveto - for (NSUInteger i = 0; i < 10; ++i) { - NSPoint startPoint = NSMakePoint(5.0, 50.0); - NSPoint endPoint = NSMakePoint(55.0, 50.0); - NSPoint controlPoint1 = NSMakePoint(17.5, 50.0 + 5.0 * i); - NSPoint controlPoint2 = NSMakePoint(42.5, 50.0 - 5.0 * i); - [thePath moveToPoint:startPoint]; - [thePath curveToPoint:endPoint controlPoint1:controlPoint1 controlPoint2:controlPoint2]; - } - // test close - [thePath closePath]; - - CGPathRef cgPath = [thePath gtm_CGPath]; - STAssertNotNULL(cgPath, @"Nil CGPath"); - - CGContextRef cgContext = [[NSGraphicsContext currentContext] graphicsPort]; - STAssertNotNULL(cgContext, @"Nil cgContext"); - - CGContextAddPath(cgContext, cgPath); - CGContextStrokePath(cgContext); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.h deleted file mode 100644 index b0b48de5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// GTMNSBezierPath+RoundRect.h -// -// Category for adding utility functions for creating -// round rectangles. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -/// Category for adding utility functions for creating round rectangles. -@interface NSBezierPath (GMBezierPathRoundRectAdditions) - -/// Inscribe a round rectangle inside of rectangle |rect| with a corner radius of |radius| -// -// Args: -// rect: outer rectangle to inscribe into -// radius: radius of the corners. |radius| is clamped internally -// to be no larger than the smaller of half |rect|'s width or height -// -// Returns: -// Auto released NSBezierPath -+ (NSBezierPath *)gtm_bezierPathWithRoundRect:(NSRect)rect - cornerRadius:(CGFloat)radius; - -/// Adds a path which is a round rectangle inscribed inside of rectangle |rect| with a corner radius of |radius| -// -// Args: -// rect: outer rectangle to inscribe into -// radius: radius of the corners. |radius| is clamped internally -// to be no larger than the smaller of half |rect|'s width or height -- (void)gtm_appendBezierPathWithRoundRect:(NSRect)rect - cornerRadius:(CGFloat)radius; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.m deleted file mode 100644 index d4e5050d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRect.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// GTMNSBezierPath+RoundRect.h -// -// Category for adding utility functions for creating -// round rectangles. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSBezierPath+RoundRect.h" - -@implementation NSBezierPath (GTMBezierPathRoundRectAdditions) - - -+ (NSBezierPath *)gtm_bezierPathWithRoundRect:(NSRect)rect - cornerRadius:(CGFloat)radius { - NSBezierPath *bezier = [NSBezierPath bezierPath]; - [bezier gtm_appendBezierPathWithRoundRect:rect cornerRadius:radius]; - return bezier; -} - - -- (void)gtm_appendBezierPathWithRoundRect:(NSRect)rect - cornerRadius:(CGFloat)radius { - if (!NSIsEmptyRect(rect)) { - if (radius > 0.0) { - // Clamp radius to be no larger than half the rect's width or height. - radius = MIN(radius, 0.5 * MIN(rect.size.width, rect.size.height)); - - NSPoint topLeft = NSMakePoint(NSMinX(rect), NSMaxY(rect)); - NSPoint topRight = NSMakePoint(NSMaxX(rect), NSMaxY(rect)); - NSPoint bottomRight = NSMakePoint(NSMaxX(rect), NSMinY(rect)); - - [self moveToPoint:NSMakePoint(NSMidX(rect), NSMaxY(rect))]; - [self appendBezierPathWithArcFromPoint:topLeft - toPoint:rect.origin - radius:radius]; - [self appendBezierPathWithArcFromPoint:rect.origin - toPoint:bottomRight - radius:radius]; - [self appendBezierPathWithArcFromPoint:bottomRight - toPoint:topRight - radius:radius]; - [self appendBezierPathWithArcFromPoint:topRight - toPoint:topLeft - radius:radius]; - [self closePath]; - } else { - // When radius <= 0.0, use plain rectangle. - [self appendBezierPathWithRect:rect]; - } - } -} - - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRectTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRectTest.m deleted file mode 100644 index 5bdf3a38..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+RoundRectTest.m +++ /dev/null @@ -1,102 +0,0 @@ -// -// GTMNSBezierPath+RoundRectTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -#import -#import "GTMNSBezierPath+RoundRect.h" -#import "GTMAppKit+UnitTesting.h" - -@interface GTMNSBezierPath_RoundRectTest : GTMTestCase -@end - -@implementation GTMNSBezierPath_RoundRectTest - -- (void)testRoundRects { - GTMAssertDrawingEqualToImageNamed(self, NSMakeSize(490, 430), - @"GTMNSBezierPath+RoundRectTest", nil, nil); -} - -// Draws all of our tests so that we can compare this to our stored TIFF file. -- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo{ - NSRect theRects[] = { - NSMakeRect(0.0, 10.0, 0.0, 0.0), //Empty Rect test - NSMakeRect(50.0, 10.0, 30.0, 30.0), //Square Test - NSMakeRect(100.0, 10.0, 1.0, 2.0), //Small Test - NSMakeRect(120.0, 10.0, 15.0, 20.0), //Medium Test - NSMakeRect(140.0, 10.0, 150.0, 30.0), //Large Test - NSMakeRect(300.0, 10.0, 150.0, 30.0) //Large Test 2 (for different radius) - }; - const NSUInteger theRectCount = sizeof(theRects) / sizeof(NSRect); - - // Line Width Tests - CGFloat theLineWidths[] = { 0.5, 50.0, 2.0 }; - const NSUInteger theLineWidthCount = sizeof(theLineWidths) / sizeof(CGFloat); - NSUInteger i,j; - - for (i = 0; i < theLineWidthCount; ++i) { - for (j = 0; j < theRectCount; ++j) { - CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 20.0 : 0.0 ); - NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j] - cornerRadius:cornerRadius]; - [roundRect setLineWidth: theLineWidths[i]]; - [roundRect stroke]; - CGFloat newWidth = 35.0; - if (i < theLineWidthCount - 1) { - newWidth += theLineWidths[i + 1] + theLineWidths[i]; - } - theRects[j].origin.y += newWidth; - } - } - - // Fill test - NSColor *theColors[] = { - [NSColor colorWithCalibratedRed:1.0 green:0.0 blue:0.0 alpha:1.0], - [NSColor colorWithCalibratedRed:0.2 green:0.4 blue:0.6 alpha:0.4] - }; - const NSUInteger theColorCount = sizeof(theColors)/sizeof(NSColor); - - for (i = 0; i < theColorCount; ++i) { - for (j = 0; j < theRectCount; ++j) { - CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 10.0 : 0.0 ); - NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j] - cornerRadius:cornerRadius]; - [theColors[i] setFill]; - [roundRect fill]; - theRects[j].origin.y += 35.0; - } - } - - // Flatness test - CGFloat theFlatness[] = {0.0, 0.1, 1.0, 10.0}; - const NSUInteger theFlatnessCount = sizeof(theFlatness)/sizeof(CGFloat); - - for (i = 0; i < theFlatnessCount; i++) { - for (j = 0; j < theRectCount; ++j) { - CGFloat cornerRadius = ( (j < (theRectCount - 1)) ? 6.0 : 0.0 ); - NSBezierPath *roundRect = [NSBezierPath gtm_bezierPathWithRoundRect:theRects[j] - cornerRadius:cornerRadius]; - [roundRect setFlatness:theFlatness[i]]; - [roundRect stroke]; - theRects[j].origin.y += 35.0; - } - } -} - - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.h deleted file mode 100644 index 5d687282..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.h +++ /dev/null @@ -1,121 +0,0 @@ -// -// GTMNSBezierPath+Shading.h -// -// Category for radial and axial stroke and fill functions for NSBezierPaths -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -@protocol GTMShading; - -// -/// Category for radial and axial stroke and fill functions for NSBezierPaths -// -@interface NSBezierPath (GTMBezierPathShadingAdditions) - -/// Stroke the path axially with a color blend defined by |shading|. -// -/// The fill will extend from |fromPoint| to |toPoint| and will extend -/// indefinitely perpendicular to the axis of the line defined by the -/// two points. You can extend beyond the |fromPoint|/|toPoint by setting -/// |extendingStart|/|extendingEnd| respectively. -// -// Args: -// fromPoint: point to start the shading at -// toPoint: point to end the shading at -// extendingStart: should we extend the shading before |fromPoint| using -// the first color in our shading? -// extendingEnd: should we extend the shading after |toPoint| using the -// last color in our shading? -// shading: the shading to use to take our colors from. -// -- (void)gtm_strokeAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading; - -/// Stroke the path radially with a color blend defined by |shading|. -// -/// The fill will extend from the circle with center |fromPoint| -/// and radius |fromRadius| to the circle with center |toPoint| -/// with radius |toRadius|. -/// You can extend beyond the |fromPoint|/|toPoint| by setting -/// |extendingStart|/|extendingEnd| respectively. -// -// Args: -// fromPoint: center of the circle to start the shading at -// fromRadius: radius of the circle to start the shading at -// toPoint: center of the circle to to end the shading at -// toRadius: raidus of the circle to end the shading at -// extendingStart: should we extend the shading before |fromPoint| using -// the first color in our shading? -// extendingEnd: should we extend the shading after |toPoint| using the -// last color in our shading? -// shading: the shading to use to take our colors from. -// -- (void)gtm_strokeRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading; - -/// Fill the path radially with a color blend defined by |shading|. -// -/// The fill will extend from the circle with center |fromPoint| -/// and radius |fromRadius| to the circle with center |toPoint| -/// with radius |toRadius|. -/// You can extend beyond the |fromPoint|/|toPoint by setting -/// |extendingStart|/|extendingEnd| respectively. -// -// Args: -// fromPoint: center of the circle to start the shading at -// fromRadius: radius of the circle to start the shading at -// toPoint: center of the circle to to end the shading at -// toRadius: radius of the circle to end the shading at -// extendingStart: should we extend the shading before |fromPoint| using -// the first color in our shading? -// extendingEnd: should we extend the shading after |toPoint| using the -// last color in our shading? -// shading: the shading to use to take our colors from. -// -- (void)gtm_fillAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading; - -/// Fill the path radially with a color blend defined by |shading|. -// -/// The fill will extend from the circle with center |fromPoint| -/// and radius |fromRadius| to the circle with center |toPoint| -/// with radius |toRadius|. -/// You can extend beyond the |fromPoint|/|toPoint by setting -/// |extendingStart|/|extendingEnd| respectively. -// -// Args: -// fromPoint: center of the circle to start the shading at -// fromRadius: radius of the circle to start the shading at -// toPoint: center of the circle to to end the shading at -// toRadius: radius of the circle to end the shading at -// extendingStart: should we extend the shading before |fromPoint| using -// the first color in our shading? -// extendingEnd: should we extend the shading after |toPoint| using the -// last color in our shading? -// shading: the shading to use to take our colors from. -// -- (void)gtm_fillRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.m deleted file mode 100644 index d4c1ddd3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+Shading.m +++ /dev/null @@ -1,216 +0,0 @@ -// -// GTMNSBezierPath+Shading.m -// -// Category for radial and axial stroke and fill functions for NSBezierPaths -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSBezierPath+Shading.h" -#import "GTMNSBezierPath+CGPath.h" -#import "GTMShading.h" -#import "GTMGeometryUtils.h" -#import "GTMMethodCheck.h" - -@interface NSBezierPath (GTMBezierPathShadingAdditionsPrivate) -// Fills a CGPathRef either axially or radially with the given shading. -// -// Args: -// path: path to fill -// axially: if YES fill axially, otherwise fill radially -// asStroke: if YES, clip to the stroke of the path, otherwise -// clip to the fill -// from: where to shade from -// fromRadius: in a radial fill, the radius of the from circle -// to: where to shade to -// toRadius: in a radial fill, the radius of the to circle -// extendingStart: if true, extend the fill with the first color of the shade -// beyond |from| away from |to| -// extendingEnd: if true, extend the fill with the last color of the shade -// beyond |to| away from |from| -// shading: the shading to use for the fill -// -- (void)gtm_fillCGPath:(CGPathRef)path - axially:(BOOL)axially - asStroke:(BOOL)asStroke - from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading; - -// Returns the point which is the projection of a line from point |pointA| -// to |pointB| by length -// -// Args: -// pointA: first point -// pointB: second point -// length: distance to project beyond |pointB| which is in line with -// |pointA| and |pointB| -// -// Returns: -// the projected point -- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA - to:(NSPoint)pointB - by:(CGFloat)length; -@end - - -@implementation NSBezierPath (GTMBezierPathAdditionsPrivate) - -- (void)gtm_fillCGPath:(CGPathRef)path - axially:(BOOL)axially asStroke:(BOOL)asStroke - from:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading { - CGFunctionRef shadingFunction = [shading shadeFunction]; - if (nil != shadingFunction) { - CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; - if (nil != currentContext) { - CGContextSaveGState(currentContext); - CGFloat lineWidth = [self lineWidth]; - CGContextSetLineWidth(currentContext, lineWidth); - if (asStroke) { - // if we are using the stroke, we offset the from and to points - // by half the stroke width away from the center of the stroke. - // Otherwise we tend to end up with fills that only cover half of the - // because users set the start and end points based on the center - // of the stroke. - CGFloat halfWidth = lineWidth * 0.5; - fromPoint = [self gtm_projectLineFrom:toPoint to:fromPoint by:halfWidth]; - toPoint = [self gtm_projectLineFrom:fromPoint to:toPoint by:-halfWidth]; - } - CGColorSpaceRef colorspace = [shading colorSpace]; - if (nil != colorspace) { - CGPoint toCGPoint = GTMNSPointToCGPoint(toPoint); - CGPoint fromCGPoint = GTMNSPointToCGPoint(fromPoint); - CGShadingRef myCGShading; - if(axially) { - myCGShading = CGShadingCreateAxial(colorspace, fromCGPoint, - toCGPoint, shadingFunction, - extendingStart == YES, - extendingEnd == YES); - } - else { - myCGShading = CGShadingCreateRadial(colorspace, fromCGPoint, fromRadius, - toCGPoint, toRadius, shadingFunction, - extendingStart == YES, - extendingEnd == YES); - } - - if (nil != myCGShading) { - CGContextAddPath(currentContext,path); - if(asStroke) { - CGContextReplacePathWithStrokedPath(currentContext); - } - CGContextClip(currentContext); - CGContextDrawShading(currentContext, myCGShading); - CGShadingRelease(myCGShading); - } - } - CGContextRestoreGState(currentContext); - } - } -} - - -- (NSPoint)gtm_projectLineFrom:(NSPoint)pointA - to:(NSPoint)pointB - by:(CGFloat)length { - NSPoint newPoint = pointB; - CGFloat x = (pointB.x - pointA.x); - CGFloat y = (pointB.y - pointA.y); - if (fpclassify(x) == FP_ZERO) { - newPoint.y += length; - } else if (fpclassify(y) == FP_ZERO) { - newPoint.x += length; - } else { -#if CGFLOAT_IS_DOUBLE - CGFloat angle = atan(y / x); - newPoint.x += sin(angle) * length; - newPoint.y += cos(angle) * length; -#else - CGFloat angle = atanf(y / x); - newPoint.x += sinf(angle) * length; - newPoint.y += cosf(angle) * length; -#endif - } - return newPoint; -} - -@end - - -@implementation NSBezierPath (GTMBezierPathShadingAdditions) -GTM_METHOD_CHECK(NSBezierPath, gtm_CGPath); - -- (void)gtm_strokeAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading { - CGPathRef thePath = [self gtm_CGPath]; - if (nil != thePath) { - [self gtm_fillCGPath:thePath axially:YES asStroke:YES - from:fromPoint fromRadius:(CGFloat)0.0 - to:toPoint toRadius:(CGFloat)0.0 - extendingStart:extendingStart extendingEnd:extendingEnd - shading:shading]; - } -} - - -- (void)gtm_strokeRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading { - CGPathRef thePath = [self gtm_CGPath]; - if (nil != thePath) { - [self gtm_fillCGPath:thePath axially:NO asStroke:YES - from:fromPoint fromRadius:fromRadius - to:toPoint toRadius:toRadius - extendingStart:extendingStart extendingEnd:extendingEnd - shading:shading]; - } -} - - -- (void)gtm_fillAxiallyFrom:(NSPoint)fromPoint to:(NSPoint)toPoint - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading { - CGPathRef thePath = [self gtm_CGPath]; - if (nil != thePath) { - [self gtm_fillCGPath:thePath axially:YES asStroke:NO - from:fromPoint fromRadius:(CGFloat)0.0 - to:toPoint toRadius:(CGFloat)0.0 - extendingStart:extendingStart extendingEnd:extendingEnd - shading:shading]; - } -} - - -- (void)gtm_fillRadiallyFrom:(NSPoint)fromPoint fromRadius:(CGFloat)fromRadius - to:(NSPoint)toPoint toRadius:(CGFloat)toRadius - extendingStart:(BOOL)extendingStart extendingEnd:(BOOL)extendingEnd - shading:(id)shading { - CGPathRef thePath = [self gtm_CGPath]; - if (nil != thePath) { - [self gtm_fillCGPath:thePath axially:NO asStroke:NO - from:fromPoint fromRadius:fromRadius - to:toPoint toRadius:toRadius - extendingStart:extendingStart extendingEnd:extendingEnd - shading:shading]; - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+ShadingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+ShadingTest.m deleted file mode 100644 index a9dfbefa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSBezierPath+ShadingTest.m +++ /dev/null @@ -1,177 +0,0 @@ -// -// GTMNSBezierPath+ShadingTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -#import - -#import "GTMLinearRGBShading.h" -#import "GTMAppKit+UnitTesting.h" -#import "GTMNSBezierPath+Shading.h" - -@interface GTMNSBezierPath_ShadingTest : GTMTestCase -@end - -@implementation GTMNSBezierPath_ShadingTest - -- (void)testShadings { - GTMAssertDrawingEqualToImageNamed(self, - NSMakeSize(310, 410), - @"GTMNSBezierPath+ShadingTest", nil, nil); -} - -- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo { - - NSColor *theColorArray[] = { [NSColor blueColor], - [NSColor redColor], [NSColor yellowColor], - [NSColor blueColor], [NSColor greenColor], - [NSColor redColor] }; - CGFloat theFloatArray[] = { 0.0, 0.2, 0.4, 0.6, 0.8, 1.0 }; - - GTMLinearRGBShading *shading = - [GTMLinearRGBShading shadingWithColors:theColorArray - fromSpaceNamed:NSCalibratedRGBColorSpace - atPositions:theFloatArray - count:sizeof(theFloatArray)/sizeof(CGFloat)]; - NSBezierPath *shadedPath; - - // axial stroke rect - diagonal fill - NSRect axialStrokeRect = NSMakeRect(10.0f, 10.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect]; - [shadedPath setLineWidth: 10.0f]; - NSPoint startPoint = NSMakePoint(axialStrokeRect.origin.x + 20.0f, - axialStrokeRect.origin.y + 20.0f); - NSPoint endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width - 20.0f, - axialStrokeRect.origin.y + axialStrokeRect.size.height - 20.0f); - [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // axial stroke rect - v line fill - axialStrokeRect = NSMakeRect(110.0f, 10.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect]; - [shadedPath setLineWidth: 10.0f]; - startPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width / 2.0f, - axialStrokeRect.origin.y + 20.0f); - endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width / 2.0f, - axialStrokeRect.origin.y + axialStrokeRect.size.height - 20.0f); - [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // axial stroke rect - h line fill - axialStrokeRect = NSMakeRect(210.0f, 10.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialStrokeRect]; - [shadedPath setLineWidth: 10.0f]; - startPoint = NSMakePoint(axialStrokeRect.origin.x + 20.0f, - axialStrokeRect.origin.y + axialStrokeRect.size.height / 2.0f); - endPoint = NSMakePoint(axialStrokeRect.origin.x + axialStrokeRect.size.width - 20.0f, - axialStrokeRect.origin.y + axialStrokeRect.size.height / 2.0f); - [shadedPath gtm_strokeAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // axial fill rect - diagonal fill - NSRect axialFillRect = NSMakeRect(10.0f, 110.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect]; - startPoint = NSMakePoint(axialFillRect.origin.x + 20.0f, - axialFillRect.origin.y + 20.0f); - endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width - 20.0f, - axialFillRect.origin.y + axialFillRect.size.height - 20.0f); - [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // axial fill rect - v line fill - axialFillRect = NSMakeRect(110.0f, 110.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect]; - startPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width / 2.0f, - axialFillRect.origin.y + 20.0f); - endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width / 2.0f, - axialFillRect.origin.y + axialFillRect.size.height - 20.0f); - [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // axial fill rect - h line fill - axialFillRect = NSMakeRect(210.0f, 110.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:axialFillRect]; - startPoint = NSMakePoint(axialFillRect.origin.x + 20.0f, - axialFillRect.origin.y + axialFillRect.size.height / 2.0f); - endPoint = NSMakePoint(axialFillRect.origin.x + axialFillRect.size.width - 20.0f, - axialFillRect.origin.y + axialFillRect.size.height / 2.0f); - [shadedPath gtm_fillAxiallyFrom:startPoint to:endPoint extendingStart:YES extendingEnd:YES shading:shading]; - - // radial stroke rect - diagonal fill - NSRect radialStrokeRect = NSMakeRect(10.0f, 210.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect]; - startPoint = NSMakePoint(radialStrokeRect.origin.x + 20.0f, - radialStrokeRect.origin.y + 20.0f); - endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width - 20.0f, - radialStrokeRect.origin.y + radialStrokeRect.size.height - 20.0f); - [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; - - // radial stroke rect - v line fill - radialStrokeRect = NSMakeRect(110.0f, 210.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect]; - startPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width / 2.0f, - radialStrokeRect.origin.y + 20.0f); - endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width / 2.0f, - radialStrokeRect.origin.y + radialStrokeRect.size.height - 20.0f); - [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; - - // radial stroke rect - h line fill - radialStrokeRect = NSMakeRect(210.0f, 210.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialStrokeRect]; - startPoint = NSMakePoint(radialStrokeRect.origin.x + 20.0f, - radialStrokeRect.origin.y + radialStrokeRect.size.height / 2.0f); - endPoint = NSMakePoint(radialStrokeRect.origin.x + radialStrokeRect.size.width - 20.0f, - radialStrokeRect.origin.y + radialStrokeRect.size.height / 2.0f); - [shadedPath gtm_strokeRadiallyFrom:startPoint fromRadius:60.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; - - // radial fill rect - diagonal fill - NSRect radialFillRect = NSMakeRect(10.0f, 310.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect]; - startPoint = NSMakePoint(radialFillRect.origin.x + 20.0f, - radialFillRect.origin.y + 20.0f); - endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width - 20.0f, - radialFillRect.origin.y + radialFillRect.size.height - 20.0f); - [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; - - // radial fill rect - v line fill - radialFillRect = NSMakeRect(110.0f, 310.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect]; - startPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width / 2.0f, - radialFillRect.origin.y + 20.0f); - endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width / 2.0f, - radialFillRect.origin.y + radialFillRect.size.height - 20.0f); - [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; - - // radial fill rect - h line fill - radialFillRect = NSMakeRect(210.0f, 310.0f, 90.0f, 90.0f); - shadedPath = [NSBezierPath bezierPathWithRect:radialFillRect]; - startPoint = NSMakePoint(radialFillRect.origin.x + 20.0f, - radialFillRect.origin.y + radialFillRect.size.height / 2.0f); - endPoint = NSMakePoint(radialFillRect.origin.x + radialFillRect.size.width - 20.0f, - radialFillRect.origin.y + radialFillRect.size.height / 2.0f); - [shadedPath gtm_fillRadiallyFrom:startPoint fromRadius:10.0f - to:endPoint toRadius:20.0f - extendingStart:YES extendingEnd:YES shading:shading]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.h deleted file mode 100644 index c1501cdc..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// GTMNSColor+Luminance.h -// -// Copyright 2009 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -enum { - GTMColorationBaseHighlight, - GTMColorationBaseMidtone, - GTMColorationBaseShadow, - GTMColorationBasePenumbra, - GTMColorationLightHighlight, - GTMColorationLightMidtone, - GTMColorationLightShadow, - GTMColorationLightPenumbra, - GTMColorationDarkHighlight, - GTMColorationDarkMidtone, - GTMColorationDarkShadow, - GTMColorationDarkPenumbra -}; -typedef NSUInteger GTMColorationUse; - -@interface NSColorSpace (GTMNSColorSpaceLuminanceHelpers) -+ (NSColorSpace *)gtm_labColorSpace; -@end - -@interface NSColor (GTMLuminanceAdditions) -- (CGFloat)gtm_luminance; - -// Create a color modified by lightening or darkening it (-1.0 to 1.0) -- (NSColor *)gtm_colorByAdjustingLuminance:(CGFloat)luminance; - -// Create a color modified by lightening or darkening it (-1.0 to 1.0) -- (NSColor *)gtm_colorByAdjustingLuminance:(CGFloat)luminance - saturation:(CGFloat)saturation; - -// Returns a color adjusted for a specific usage -- (NSColor *)gtm_colorAdjustedFor:(GTMColorationUse)use; -- (NSColor *)gtm_colorAdjustedFor:(GTMColorationUse)use faded:(BOOL)fade; - -// Returns whether the color is in the dark half of the spectrum -- (BOOL)gtm_isDarkColor; - -// Returns a color that is legible on this color. (Nothing to do with textColor) -- (NSColor *)gtm_legibleTextColor; -@end - -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.m deleted file mode 100644 index 5b10dbe6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+Luminance.m +++ /dev/null @@ -1,153 +0,0 @@ -// -// GTMNSColor+Luminance.m -// -// Copyright 2009 Google Inc. -// -// 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. -// - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -#import "GTMNSColor+Luminance.h" - -static const CGFloat kGTMLuminanceDarkCutoff = 0.6; - -@implementation NSColorSpace (GTMNSColorSpaceLuminanceHelpers) - -// TODO(alcor): we may want to keep one of these around for performance reasons -+ (NSColorSpace *)gtm_labColorSpace { - // Observer= 2°, Illuminant= D65 - // TODO(alcor): these should come from ColorSync - CGFloat whitePoint[3] = {0.95047, 1.0, 1.08883}; - CGFloat blackPoint[3] = {0, 0, 0}; - CGFloat range[4] = {-127, 127, -127, 127}; - CGColorSpaceRef cs = CGColorSpaceCreateLab(whitePoint, blackPoint, range); - NSColorSpace *space = nil; - if (cs) { - space = [[[NSColorSpace alloc] initWithCGColorSpace:cs] autorelease]; - CGColorSpaceRelease(cs); - } - return space; -} -@end - -@implementation NSColor (GTMLuminance) - -- (NSColor *)labColor { - return [self colorUsingColorSpace:[NSColorSpace gtm_labColorSpace]]; -} - -- (CGFloat)gtm_luminance { - CGFloat lab[4]; - lab[0] = 0.0; - [[self labColor] getComponents:lab]; - return lab[0] / 100.0; -} - -- (NSColor *)gtm_colorByAdjustingLuminance:(CGFloat)luminance - saturation:(CGFloat)saturation { - CGFloat lab[4]; - [[self labColor] getComponents:lab]; - lab[0] *= 1.0 + luminance; - // If luminance is greater than 100, we desaturate it so that we don't get - // wild colors coming out of the forumula - if (lab[0] > 100) { - CGFloat clipping = lab[0] - 100; - CGFloat desaturation = (50.0 - clipping) / 50.0; - saturation = MIN(saturation, desaturation); - } - lab[1] *= saturation; - lab[2] *= saturation; - return [NSColor colorWithColorSpace:[NSColorSpace gtm_labColorSpace] - components:lab - count:sizeof(lab) / sizeof(lab[0])]; -} - -- (NSColor *)gtm_colorByAdjustingLuminance:(CGFloat)luminance { - return [self gtm_colorByAdjustingLuminance:luminance saturation:1.0]; -} - -// TODO(alcor): these constants are largely made up, come up with a consistent -// set of values or at least guidelines -- (NSColor *)gtm_colorAdjustedFor:(GTMColorationUse)use { - NSColor *color = nil; - switch (use) { - case GTMColorationBaseHighlight: - color = [self gtm_colorByAdjustingLuminance:0.15]; - break; - case GTMColorationBaseMidtone: - color = self; - break; - case GTMColorationBaseShadow: - color = [self gtm_colorByAdjustingLuminance:-0.15]; - break; - case GTMColorationBasePenumbra: - color = [self gtm_colorByAdjustingLuminance:-0.10]; - break; - case GTMColorationLightHighlight: - color = [self gtm_colorByAdjustingLuminance:0.25]; - color = [color blendedColorWithFraction:0.9 ofColor:[NSColor whiteColor]]; - break; - case GTMColorationLightMidtone: - color = [self blendedColorWithFraction:0.8 ofColor:[NSColor whiteColor]]; - break; - case GTMColorationLightShadow: - color = [self blendedColorWithFraction:0.7 ofColor:[NSColor whiteColor]]; - color = [color gtm_colorByAdjustingLuminance:-0.02]; - break; - case GTMColorationLightPenumbra: - color = [self blendedColorWithFraction:0.8 ofColor:[NSColor whiteColor]]; - color = [color gtm_colorByAdjustingLuminance:-0.01]; - break; - case GTMColorationDarkHighlight: - color = [self gtm_colorByAdjustingLuminance:-0.20]; - break; - case GTMColorationDarkMidtone: - color = [self gtm_colorByAdjustingLuminance:-0.25]; - break; - case GTMColorationDarkShadow: - color = [self gtm_colorByAdjustingLuminance:-0.30 saturation:1.4]; - break; - case GTMColorationDarkPenumbra: - color = [self gtm_colorByAdjustingLuminance:-0.25]; - break; - default: - _GTMDevLog(@"Invalid Coloration Use %d", use); - color = self; - break; - } - return color; -} -const CGFloat kDefaultFade = 0.3; - -- (NSColor *)gtm_colorAdjustedFor:(GTMColorationUse)use faded:(BOOL)fade { - NSColor *color = [self gtm_colorAdjustedFor:use]; - if (fade) { - CGFloat luminance = [color gtm_luminance]; - color = [color gtm_colorByAdjustingLuminance: - kDefaultFade * (1.0 - luminance) - saturation:kDefaultFade]; - } - return color; -} - -- (BOOL)gtm_isDarkColor { - return [self gtm_luminance] < kGTMLuminanceDarkCutoff; -} - -- (NSColor *)gtm_legibleTextColor { - return [self gtm_isDarkColor] ? [NSColor whiteColor] : [NSColor blackColor]; -} - -@end -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+LuminanceTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+LuminanceTest.m deleted file mode 100644 index 82eb0145..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSColor+LuminanceTest.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// GTMNSColor+LuminanceTest.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -#import "GTMSenTestCase.h" -#import "GTMNSColor+Luminance.h" - -@interface GTMNSColor_LuminanceTest : GTMTestCase -@end - -@implementation GTMNSColor_LuminanceTest - -- (void)testLuminance { - NSColor *midtone = [NSColor blueColor]; - NSColor *darker = [midtone gtm_colorAdjustedFor:GTMColorationBaseShadow]; - NSColor *lighter = [midtone gtm_colorAdjustedFor:GTMColorationBaseHighlight]; - NSColor *lightest = [midtone gtm_colorAdjustedFor:GTMColorationLightHighlight]; - NSColor *darkest = [midtone gtm_colorAdjustedFor:GTMColorationDarkShadow]; - - // The relationships of the other values are not set, so we don't test them yet - STAssertGreaterThanOrEqual([lightest gtm_luminance], - [lighter gtm_luminance], nil); - STAssertGreaterThanOrEqual([lighter gtm_luminance], - [midtone gtm_luminance], nil); - STAssertGreaterThanOrEqual([midtone gtm_luminance], - [darker gtm_luminance], nil); - STAssertGreaterThanOrEqual([darker gtm_luminance], - [darkest gtm_luminance], nil); - STAssertGreaterThanOrEqual([[NSColor whiteColor] gtm_luminance], - (CGFloat)0.95, nil); - STAssertGreaterThanOrEqual([[NSColor yellowColor] gtm_luminance], - (CGFloat)0.90, nil); - STAssertEqualsWithAccuracy([[NSColor blueColor] gtm_luminance], - (CGFloat)0.35, 0.10, nil); - STAssertEqualsWithAccuracy([[NSColor redColor] gtm_luminance], - (CGFloat)0.50, 0.10, nil); - STAssertLessThanOrEqual([[NSColor blackColor] gtm_luminance], - (CGFloat)0.30, nil); - STAssertTrue([[NSColor blackColor] gtm_isDarkColor], nil); - STAssertTrue([[NSColor blueColor] gtm_isDarkColor], nil); - STAssertTrue([[NSColor redColor] gtm_isDarkColor], nil); - STAssertTrue(![[NSColor whiteColor] gtm_isDarkColor], nil); - STAssertTrue(![[NSColor yellowColor] gtm_isDarkColor], nil); - STAssertGreaterThanOrEqual([[[NSColor blackColor] gtm_legibleTextColor] - gtm_luminance], - [[NSColor grayColor] gtm_luminance], nil); - STAssertLessThanOrEqual([[[NSColor whiteColor] gtm_legibleTextColor] - gtm_luminance], - [[NSColor grayColor] gtm_luminance], nil); -} - -@end - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.h deleted file mode 100644 index 7d485771..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// GTMNSImage+Scaling.h -// -// Scales NSImages to a variety of sizes for drawing -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - - -#import -#import "GTMDefines.h" - -@interface NSImage (GTMNSImageScaling) - -// Return an existing representation of a size -- (NSImageRep *)gtm_representationOfSize:(NSSize)size; - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 -// Return the exact or next largest representation for a size -// If you are on SnowLeopard use -// -[NSImage bestRepresentationForRect:context:hints:] -- (NSImageRep *)gtm_bestRepresentationForSize:(NSSize)size; -#endif - -// Create a new represetation for a given size -- (BOOL)gtm_createRepresentationOfSize:(NSSize)size; - -// Create 32 and 16px reps -- (BOOL)gtm_createIconRepresentations; - -// Remove reps larger than a given size and create a new rep if needed -- (void)gtm_shrinkToSize:(NSSize)size; - -// Remove reps larger than a given size -- (void)gtm_removeRepresentationsLargerThanSize:(NSSize)size; - -// Return a dup shrunk to a given size -- (NSImage *)gtm_duplicateOfSize:(NSSize)size; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.m deleted file mode 100644 index 8283b298..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+Scaling.m +++ /dev/null @@ -1,183 +0,0 @@ -// -// GTMNSImage+Scaling.m -// -// Scales NSImages to a variety of sizes for drawing -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSImage+Scaling.h" -#import "GTMGeometryUtils.h" - -@implementation NSImage (GTMNSImageScaling) - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 -// If you are on SnowLeopard use -// -[NSImage bestRepresentationForRect:context:hints:] -- (NSImageRep *)gtm_bestRepresentationForSize:(NSSize)size { - NSImageRep *bestRep = [self gtm_representationOfSize:size]; - if (bestRep) { - return bestRep; - } - NSArray *reps = [self representations]; - - CGFloat repDistance = CGFLOAT_MAX; - - NSImageRep *thisRep; - GTM_FOREACH_OBJECT(thisRep, reps) { - CGFloat thisDistance; - thisDistance = MIN(size.width - [thisRep size].width, - size.height - [thisRep size].height); - - if (repDistance < 0 && thisDistance > 0) continue; - if (ABS(thisDistance) < ABS(repDistance) - || (thisDistance < 0 && repDistance > 0)) { - repDistance = thisDistance; - bestRep = thisRep; - } - } - - if (!bestRep) { - bestRep = [self bestRepresentationForDevice:nil]; - } - - return bestRep; -} -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 - -- (NSImageRep *)gtm_representationOfSize:(NSSize)size { - NSArray *reps = [self representations]; - - NSImageRep *thisRep; - GTM_FOREACH_OBJECT(thisRep, reps) { - if (NSEqualSizes([thisRep size], size)) { - return thisRep; - } - } - return nil; -} - -- (BOOL)gtm_createIconRepresentations { - [self setFlipped:NO]; - [self gtm_createRepresentationOfSize:NSMakeSize(16, 16)]; - [self gtm_createRepresentationOfSize:NSMakeSize(32, 32)]; - [self setScalesWhenResized:NO]; - return YES; -} - -- (BOOL)gtm_createRepresentationOfSize:(NSSize)size { - if ([self gtm_representationOfSize:size]) { - return NO; - } - - NSBitmapImageRep *bestRep; -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 - bestRep = (NSBitmapImageRep *)[self gtm_bestRepresentationForSize:size]; -#else - bestRep - = (NSBitmapImageRep *)[self bestRepresentationForRect:GTMNSRectOfSize(size) - context:nil - hints:nil]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6 - - NSRect drawRect = GTMNSScaleRectToRect(GTMNSRectOfSize([bestRep size]), - GTMNSRectOfSize(size), - GTMScaleProportionally, - GTMRectAlignCenter); - - if ([bestRep respondsToSelector:@selector(CGImage)]) { - CGImageRef imageRef = (CGImageRef)[bestRep performSelector:@selector(CGImage)]; - - CGColorSpaceRef cspace = CGColorSpaceCreateDeviceRGB(); - if (!cspace) return NO; - - CGContextRef smallContext = - CGBitmapContextCreate(NULL, - size.width, - size.height, - 8, // bits per component - size.width * 4, // bytes per pixel - cspace, - kCGBitmapByteOrder32Host - | kCGImageAlphaPremultipliedLast); - CFRelease(cspace); - - if (!smallContext) return NO; - - - CGContextDrawImage(smallContext, GTMNSRectToCGRect(drawRect), imageRef); - - CGImageRef smallImage = CGBitmapContextCreateImage(smallContext); - - if (smallImage) { - NSBitmapImageRep *cgRep = - [[[NSBitmapImageRep alloc] initWithCGImage:smallImage] autorelease]; - [self addRepresentation:cgRep]; - CGImageRelease(smallImage); - } else { - CGContextRelease(smallContext); - return NO; - } - CGContextRelease(smallContext); - return YES; - } else { - // This functionality is here to allow it to work under Tiger - // It can probably only be called safely from the main thread - NSImage* scaledImage = [[NSImage alloc] initWithSize:size]; - [scaledImage lockFocus]; - NSGraphicsContext *graphicsContext = [NSGraphicsContext currentContext]; - [graphicsContext setImageInterpolation:NSImageInterpolationHigh]; - [graphicsContext setShouldAntialias:YES]; - [bestRep drawInRect:drawRect]; - NSBitmapImageRep* iconRep = - [[[NSBitmapImageRep alloc] initWithFocusedViewRect: - NSMakeRect(0, 0, size.width, size.height)] autorelease]; - [scaledImage unlockFocus]; - [scaledImage release]; - [self addRepresentation:iconRep]; - return YES; - } - return NO; -} - -- (void)gtm_removeRepresentationsLargerThanSize:(NSSize)size { - NSMutableArray *repsToRemove = [NSMutableArray array]; - NSImageRep *thisRep; - // Remove them in a second loop so we don't change things will doing the - // initial loop. - GTM_FOREACH_OBJECT(thisRep, [self representations]) { - if ([thisRep size].width > size.width - && [thisRep size].height > size.height) { - [repsToRemove addObject:thisRep]; - } - } - GTM_FOREACH_OBJECT(thisRep, repsToRemove) { - [self removeRepresentation:thisRep]; - } -} - -- (NSImage *)gtm_duplicateOfSize:(NSSize)size { - NSImage *duplicate = [[self copy] autorelease]; - [duplicate gtm_shrinkToSize:size]; - [duplicate setFlipped:NO]; - return duplicate; -} - -- (void)gtm_shrinkToSize:(NSSize)size { - [self gtm_createRepresentationOfSize:size]; - [self setSize:size]; - [self gtm_removeRepresentationsLargerThanSize:size]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+ScalingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+ScalingTest.m deleted file mode 100644 index 5679b7c2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSImage+ScalingTest.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// GTMNSImage+ScalingTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -#import "GTMSenTestCase.h" - -#import "GTMNSImage+Scaling.h" -#import "GTMGeometryUtils.h" - -@interface GTMNSImage_ScalingTest : GTMTestCase -@end - -@implementation GTMNSImage_ScalingTest - -- (void)testScaling { - NSImage *testImage = [NSImage imageNamed:@"NSApplicationIcon"]; - - NSImageRep *rep = nil; - NSRect bestRepRect = NSMakeRect(0, 0, 99, 99); - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 - rep = [testImage bestRepresentationForRect:bestRepRect - context:nil - hints:nil]; -#else - rep = [testImage gtm_bestRepresentationForSize:bestRepRect.size]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 - - STAssertTrue(NSEqualSizes([rep size], NSMakeSize(128, 128)), nil); - - [testImage gtm_createIconRepresentations]; - STAssertNotNil([testImage gtm_representationOfSize:NSMakeSize(16, 16)], nil); - STAssertNotNil([testImage gtm_representationOfSize:NSMakeSize(32, 32)], nil); - - NSImage *duplicate = [testImage gtm_duplicateOfSize: NSMakeSize(48, 48)]; - bestRepRect = NSMakeRect(0, 0, 50, 50); -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 - rep = [duplicate bestRepresentationForRect:bestRepRect - context:nil - hints:nil]; -#else - rep = [duplicate gtm_bestRepresentationForSize:bestRepRect.size]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 - STAssertTrue(NSEqualSizes([rep size], NSMakeSize(48, 48)), nil); - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.h deleted file mode 100644 index 483833fa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.h +++ /dev/null @@ -1,92 +0,0 @@ -// -// GTMNSWorkspace+Running.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// Process Dictionary keys -// -// NOTE: According to ProcessInformationCopyDictionary, the following may not be -// in the dictionary depending on the type of process: -// kGTMWorkspaceRunningParentPSN, kGTMWorkspaceRunningFileType, -// kGTMWorkspaceRunningFileCreator, kGTMWorkspaceRunningPID, -// kGTMWorkspaceRunningBundlePath, kGTMWorkspaceRunningBundleIdentifier, -// kGTMWorkspaceRunningBundleName, kGTMWorkspaceRunningBundleExecutable, -// And experience says the follow might also not be there: -// kGTMWorkspaceRunningIsHidden - -// Make sure to use numberToProcessSerialNumber: on the return values -// of these keys to get valid PSNs on both Leopard and Tiger. -// Numeric types come back as a NSNumber. -GTM_EXTERN NSString *const kGTMWorkspaceRunningPSN; // long long -GTM_EXTERN NSString *const kGTMWorkspaceRunningParentPSN; // long long - -GTM_EXTERN NSString *const kGTMWorkspaceRunningFlavor; // SInt32 -GTM_EXTERN NSString *const kGTMWorkspaceRunningAttributes; // SInt32 -GTM_EXTERN NSString *const kGTMWorkspaceRunningFileType; // NSString -GTM_EXTERN NSString *const kGTMWorkspaceRunningFileCreator; // NSString -GTM_EXTERN NSString *const kGTMWorkspaceRunningPID; // long -GTM_EXTERN NSString *const kGTMWorkspaceRunningLSBackgroundOnly; // bool -GTM_EXTERN NSString *const kGTMWorkspaceRunningLSUIElement; // bool -GTM_EXTERN NSString *const kGTMWorkspaceRunningIsHidden; // bool -GTM_EXTERN NSString *const kGTMWorkspaceRunningCheckedIn; // bool -GTM_EXTERN NSString *const kGTMWorkspaceRunningLSUIPresentationMode; // Short -GTM_EXTERN NSString *const kGTMWorkspaceRunningBundlePath; // NSString -GTM_EXTERN NSString *const kGTMWorkspaceRunningBundleVersion; // NSString -// The docs for ProcessInformationCopyDictionary say we should use the constants -// instead of the raw string values, so map our values to those keys. -#define kGTMWorkspaceRunningBundleIdentifier (NSString*)kCFBundleIdentifierKey // NSString -#define kGTMWorkspaceRunningBundleName (NSString*)kCFBundleNameKey // NSString -#define kGTMWorkspaceRunningBundleExecutable (NSString*)kCFBundleExecutableKey // NSString - -// A category for getting information about other running processes -@interface NSWorkspace (GTMWorkspaceRunningAdditions) - -// Returns a YES/NO if a process w/ the given identifier is running -- (BOOL)gtm_isAppWithIdentifierRunning:(NSString *)identifier; - -// Returns a dictionary with info for our process. -//See Process Dictionary Keys above for values -- (NSDictionary *)gtm_processInfoDictionary; - -// Returns a dictionary with info for the active process. -// See Process Dictionary Keys above for values -- (NSDictionary *)gtm_processInfoDictionaryForActiveApp; - -// Returns a dictionary with info for the process. -//See Process Dictionary Keys above for values -- (NSDictionary *)gtm_processInfoDictionaryForPID:(pid_t)pid; - -// Returns a dictionary with info for the process. -// See Process Dictionary Keys above for values -- (NSDictionary *)gtm_processInfoDictionaryForPSN:(const ProcessSerialNumberPtr)psn; - -// Returns true if we were launched as a login item. -- (BOOL)gtm_wasLaunchedAsLoginItem; - -// Returns true if we were launched by a given bundleid -- (BOOL)gtm_wasLaunchedByProcess:(NSString*)bundleid; - -// Returns true if the PSN was found for the running app with bundleID -- (BOOL)gtm_processSerialNumber:(ProcessSerialNumber*)outPSN - withBundleID:(NSString*)bundleID; - -// Converts PSNs stored in NSNumbers to real PSNs -- (ProcessSerialNumber)gtm_numberToProcessSerialNumber:(NSNumber*)number; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.m deleted file mode 100644 index 973ad22b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+Running.m +++ /dev/null @@ -1,173 +0,0 @@ -// -// GTMNSWorkspace+Running.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMNSWorkspace+Running.h" -#import -#import -#import "GTMGarbageCollection.h" -#import "GTMSystemVersion.h" - -NSString *const kGTMWorkspaceRunningPSN = @"PSN"; -NSString *const kGTMWorkspaceRunningFlavor = @"Flavor"; -NSString *const kGTMWorkspaceRunningAttributes = @"Attributes"; -NSString *const kGTMWorkspaceRunningParentPSN = @"ParentPSN"; -NSString *const kGTMWorkspaceRunningFileType = @"FileType"; -NSString *const kGTMWorkspaceRunningFileCreator = @"FileCreator"; -NSString *const kGTMWorkspaceRunningPID = @"pid"; -NSString *const kGTMWorkspaceRunningLSBackgroundOnly = @"LSBackgroundOnly"; -NSString *const kGTMWorkspaceRunningLSUIElement = @"LSUIElement"; -NSString *const kGTMWorkspaceRunningIsHidden = @"IsHiddenAttr"; -NSString *const kGTMWorkspaceRunningCheckedIn = @"IsCheckedInAttr"; -NSString *const kGTMWorkspaceRunningLSUIPresentationMode - = @"LSUIPresentationMode"; -NSString *const kGTMWorkspaceRunningBundlePath = @"BundlePath"; -NSString *const kGTMWorkspaceRunningBundleVersion = @"CFBundleVersion"; - -@implementation NSWorkspace (GTMWorkspaceRunningAdditions) - -/// Returns a YES/NO if a process w/ the given identifier is running -- (BOOL)gtm_isAppWithIdentifierRunning:(NSString *)identifier { - if ([identifier length] == 0) return NO; - NSArray *launchedApps = [self launchedApplications]; - NSArray *buildIDs - = [launchedApps valueForKey:@"NSApplicationBundleIdentifier"]; - return [buildIDs containsObject:identifier]; -} - -- (NSDictionary *)gtm_processInfoDictionaryForPID:(pid_t)pid { - NSDictionary *dict = nil; - ProcessSerialNumber psn; - if (GetProcessForPID(pid, &psn) == noErr) { - dict = [self gtm_processInfoDictionaryForPSN:&psn]; - } - return dict; -} - -- (NSDictionary *)gtm_processInfoDictionaryForPSN:(ProcessSerialNumberPtr)psn { - NSDictionary *dict = nil; - if (psn) { - CFDictionaryRef cfDict - = ProcessInformationCopyDictionary(psn, - kProcessDictionaryIncludeAllInformationMask); - dict = GTMCFAutorelease(cfDict); - } - return dict; -} - -- (NSDictionary *)gtm_processInfoDictionary { - NSDictionary *dict = nil; - ProcessSerialNumber selfNumber; - if (MacGetCurrentProcess(&selfNumber) == noErr) { - dict = [self gtm_processInfoDictionaryForPSN:&selfNumber]; - } - return dict; -} - -- (NSDictionary *)gtm_processInfoDictionaryForActiveApp { - NSDictionary *processDict = nil; - ProcessSerialNumber psn; - OSStatus status = GetFrontProcess(&psn); - if (status == noErr) { - processDict = [self gtm_processInfoDictionaryForPSN:&psn]; - } - return processDict; -} - -- (BOOL)gtm_wasLaunchedAsLoginItem { - // If the launching process was 'loginwindow', we were launched as a login - // item - return [self gtm_wasLaunchedByProcess:@"com.apple.loginwindow"]; -} - -- (BOOL)gtm_wasLaunchedByProcess:(NSString*)bundleid { - BOOL wasLaunchedByProcess = NO; - NSDictionary *processInfo = [self gtm_processInfoDictionary]; - if (processInfo) { - NSNumber *processNumber - = [processInfo objectForKey:kGTMWorkspaceRunningParentPSN]; - ProcessSerialNumber parentPSN - = [self gtm_numberToProcessSerialNumber:processNumber]; - NSDictionary *parentProcessInfo - = [self gtm_processInfoDictionaryForPSN:&parentPSN]; - NSString *parentBundle - = [parentProcessInfo objectForKey:kGTMWorkspaceRunningBundleIdentifier]; - wasLaunchedByProcess - = [parentBundle isEqualToString:bundleid]; - } - return wasLaunchedByProcess; -} - -- (BOOL)gtm_processSerialNumber:(ProcessSerialNumber*)outPSN - withBundleID:(NSString*)bundleID { - if (!outPSN || [bundleID length] == 0) { - return NO; - } - - NSArray *apps = [self launchedApplications]; - - NSEnumerator *enumerator = [apps objectEnumerator]; - NSDictionary *dict; - - while ((dict = [enumerator nextObject])) { - NSString *nextID = [dict objectForKey:@"NSApplicationBundleIdentifier"]; - - if ([nextID isEqualToString:bundleID]) { - NSNumber *psn - = [dict objectForKey:@"NSApplicationProcessSerialNumberLow"]; - outPSN->lowLongOfPSN = [psn unsignedIntValue]; - - psn = [dict objectForKey:@"NSApplicationProcessSerialNumberHigh"]; - outPSN->highLongOfPSN = [psn unsignedIntValue]; - - return YES; - } - } - - return NO; -} - -- (ProcessSerialNumber)gtm_numberToProcessSerialNumber:(NSNumber*)number { - // There is a bug in Tiger where they were packing ProcessSerialNumbers - // incorrectly into the longlong that they stored in the dictionary. - // This fixes it. - ProcessSerialNumber outPSN = { kNoProcess, kNoProcess}; - if (number) { - long long temp = [number longLongValue]; - UInt32 hi = (UInt32)((temp >> 32) & 0x00000000FFFFFFFFLL); - UInt32 lo = (UInt32)((temp >> 0) & 0x00000000FFFFFFFFLL); -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - outPSN.highLongOfPSN = hi; - outPSN.lowLongOfPSN = lo; -#else // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - if ([GTMSystemVersion isLeopardOrGreater]) { - outPSN.highLongOfPSN = hi; - outPSN.lowLongOfPSN = lo; - } else { -#if TARGET_RT_BIG_ENDIAN - outPSN.highLongOfPSN = hi; - outPSN.lowLongOfPSN = lo; -#else - outPSN.highLongOfPSN = lo; - outPSN.lowLongOfPSN = hi; -#endif // TARGET_RT_BIG_ENDIAN - } -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - } - return outPSN; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+RunningTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+RunningTest.m deleted file mode 100644 index 4c9af6c5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMNSWorkspace+RunningTest.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// GTMNSWorkspace+RunningTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSWorkspace+Running.h" -#import - -@interface GTMNSWorkspace_RunningTest : GTMTestCase -@end - -@implementation GTMNSWorkspace_RunningTest - -- (void)testBasics { - NSWorkspace *ws = [NSWorkspace sharedWorkspace]; - STAssertTrue([ws gtm_isAppWithIdentifierRunning:@"com.apple.finder"], nil); - STAssertFalse([ws gtm_isAppWithIdentifierRunning:@"com.google.nothing"], nil); - - NSDictionary *processInfo = [ws gtm_processInfoDictionary]; - STAssertNotNil(processInfo, nil); - - BOOL wasLaunchedAsLoginItem = [ws gtm_wasLaunchedAsLoginItem]; - STAssertFalse(wasLaunchedAsLoginItem, nil); - - pid_t pid = getpid(); - NSDictionary *processInfo2 = [ws gtm_processInfoDictionaryForPID:pid]; - STAssertNotNil(processInfo2, nil); - STAssertEqualObjects(processInfo, processInfo2, nil); - - ProcessSerialNumber num = { 0, 0 }; - BOOL gotPSN = [ws gtm_processSerialNumber:&num - withBundleID:@"com.apple.finder"]; - STAssertTrue(gotPSN, nil); - STAssertGreaterThan(num.highLongOfPSN + num.lowLongOfPSN, (UInt32)0, nil); - gotPSN = [ws gtm_processSerialNumber:&num - withBundleID:@"bad.bundle.id"]; - STAssertFalse(gotPSN, nil); - - gotPSN = [ws gtm_processSerialNumber:NULL - withBundleID:nil]; - STAssertFalse(gotPSN, nil); - - processInfo = [ws gtm_processInfoDictionaryForActiveApp]; - STAssertNotNil(processInfo, nil); - - // Only check the keys that have to be there - NSString *const keys[] = { - kGTMWorkspaceRunningPSN, - kGTMWorkspaceRunningFlavor, kGTMWorkspaceRunningAttributes, - kGTMWorkspaceRunningLSBackgroundOnly, - kGTMWorkspaceRunningLSUIElement, - kGTMWorkspaceRunningCheckedIn, - kGTMWorkspaceRunningBundleVersion, - kGTMWorkspaceRunningLSUIPresentationMode, - - }; - for (size_t i = 0; i < sizeof(keys) / sizeof(NSString *); ++i) { - NSString *const key = keys[i]; - STAssertNotNil([processInfo objectForKey:key], - @"Couldn't get %@ from %@", key, processInfo); - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMShading.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMShading.h deleted file mode 100644 index 27e163ea..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMShading.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// GTMShading.h -// -// A protocol for an object that can be used as a shader. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -/// \cond Protocols - -@protocol GTMShading -// Returns the shadefunction for using in a shader. -// This shadefunction shoud never be released. It is owned by the implementor -// of the GTMShading protocol. -// -// Returns: -// a shading function. -- (CGFunctionRef)shadeFunction; - -// Returns the colorSpace for using in a shader. -// This colorSpace shoud never be released. It is owned by the implementor -// of the GTMShading protocol. -// -// Returns: -// a color space. -- (CGColorSpaceRef)colorSpace; -@end - -/// \endcond diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.h deleted file mode 100644 index 5f4700e3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.h +++ /dev/null @@ -1,78 +0,0 @@ -// -// GTMTheme.h -// -// Copyright 2009 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -// Sent whenever the theme changes. Object => GTMTheme that changed -GTM_EXTERN NSString *kGTMThemeDidChangeNotification; - -enum { - GTMThemeStyleTabBarSelected, - GTMThemeStyleTabBarDeselected, - GTMThemeStyleWindow, - GTMThemeStyleToolBar, - GTMThemeStyleToolBarButton, - GTMThemeStyleToolBarButtonPressed, - GTMThemeStyleBookmarksBar, -}; -typedef NSUInteger GTMThemeStyle; - -// GTMTheme provides a range of values for procedural drawing of UI elements -// based on interpolation of a single background color - -@interface GTMTheme : NSObject { - @private - NSColor *backgroundColor_; // bound to user defaults - NSImage *backgroundImage_; // bound to user defaults - NSMutableDictionary *values_; // cached values -} - -// Access the global theme. By default this is bound to user defaults -+ (GTMTheme *)defaultTheme; -+ (void)setDefaultTheme:(GTMTheme *)theme; - -// returns base theme color -- (NSColor *)backgroundColor; - -// base background color -- (NSImage *)backgroundImage; - -// NSColor (or pattern color) for the background of the window -- (NSColor *)windowBackgroundColor:(BOOL)active; - -// NSGradient for specific usage, active indicates whether the window is key -- (NSGradient *)gradientForStyle:(GTMThemeStyle)style active:(BOOL)active; - -// Outline color for stroke, active indicates whether the window is key -- (NSColor *)strokeColorForStyle:(GTMThemeStyle)style active:(BOOL)active; - -// Indicates whether luminance is dark or light -- (BOOL)styleIsDark:(GTMThemeStyle)style active:(BOOL)active; - -// Background style for this style and state -- (NSBackgroundStyle)interiorBackgroundStyleForStyle:(GTMThemeStyle)style - active:(BOOL)active; - -// NSColor version of the gradient (for window backgrounds, etc) -- (NSColor *)patternColorForStyle:(GTMThemeStyle)style active:(BOOL)active; -@end - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.m deleted file mode 100644 index aa7c9be0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMTheme.m +++ /dev/null @@ -1,390 +0,0 @@ -// -// GTMTheme.m -// -// Copyright 2009 Google Inc. -// -// 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. -// - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -#import "GTMTheme.h" -#import "GTMNSColor+Luminance.h" - -static GTMTheme *gGTMDefaultTheme = nil; -NSString *kGTMThemeDidChangeNotification = @"kGTMThemeDidChangeNotification"; - -@interface GTMTheme () -- (void)bindToUserDefaults; -- (void)sendChangeNotification; -@end - -@implementation GTMTheme - -+ (void)setDefaultTheme:(GTMTheme *)theme { - if (gGTMDefaultTheme != theme) { - [gGTMDefaultTheme release]; - gGTMDefaultTheme = [theme retain]; - [gGTMDefaultTheme sendChangeNotification]; - } -} - -+ (GTMTheme *)defaultTheme { - @synchronized (self) { - if (!gGTMDefaultTheme) { - gGTMDefaultTheme = [[self alloc] init]; - [gGTMDefaultTheme bindToUserDefaults]; - } - } - return gGTMDefaultTheme; -} - -- (void)bindToUserDefaults { - NSUserDefaultsController * controller - = [NSUserDefaultsController sharedUserDefaultsController]; - [self bind:@"backgroundColor" - toObject:controller - withKeyPath:@"values.GTMThemeBackgroundColor" - options:[NSDictionary dictionaryWithObjectsAndKeys: - NSUnarchiveFromDataTransformerName, - NSValueTransformerNameBindingOption, - nil]]; - - [self bind:@"backgroundImage" - toObject:controller - withKeyPath:@"values.GTMThemeBackgroundImageData" - options:[NSDictionary dictionaryWithObjectsAndKeys: - NSUnarchiveFromDataTransformerName, - NSValueTransformerNameBindingOption, - nil]]; -} - -- (id)init { - self = [super init]; - if (self != nil) { - values_ = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (void)finalize { - [self unbind:@"backgroundColor"]; - [self unbind:@"backgroundImage"]; - [super finalize]; -} - -- (void)dealloc { - [self unbind:@"backgroundColor"]; - [self unbind:@"backgroundImage"]; - [values_ release]; - [super dealloc]; -} - -- (void)sendChangeNotification { - [[NSNotificationCenter defaultCenter] - postNotificationName:kGTMThemeDidChangeNotification - object:self]; -} - -- (id)keyForSelector:(SEL)selector - style:(GTMThemeStyle)style - active:(BOOL)active { - return [NSString stringWithFormat:@"%p.%d.%d", selector, style, active]; -} - -- (id)valueForSelector:(SEL)selector - style:(GTMThemeStyle)style - active:(BOOL)active { - id value = [values_ objectForKey: - [self keyForSelector:selector style:style active:active]]; - return value; -} - -- (void)cacheValue:(id)value - forSelector:(SEL)selector - style:(GTMThemeStyle)style - active:(BOOL)active { - id key = [self keyForSelector:selector style:style active:active]; - if (key && value) [values_ setObject:value forKey:key]; -} - -- (void)setBackgroundColor:(NSColor *)value { - if (backgroundColor_ != value) { - [backgroundColor_ release]; - backgroundColor_ = [value retain]; - [values_ removeAllObjects]; - [self sendChangeNotification]; - } -} -- (NSColor *)backgroundColor { - // For nil, we return a color that works with a normal textured window - if (!backgroundColor_) - return [NSColor colorWithCalibratedWhite:0.75 alpha:1.0]; - return backgroundColor_; -} - -- (void)setBackgroundImage:(NSImage *)value { - if (backgroundImage_ != value) { - [backgroundImage_ release]; - backgroundImage_ = [value retain]; - [self sendChangeNotification]; - } -} - -- (NSColor *)windowBackgroundColor:(BOOL)active { - NSColor *color = nil; - if (backgroundImage_) { - // TODO(alcor): dim images when disabled - color = [NSColor colorWithPatternImage:backgroundImage_]; - } else if (backgroundColor_) { - color = [self patternColorForStyle:GTMThemeStyleWindow active:active]; - } - return color; -} - -- (NSImage *)backgroundImage { - return backgroundImage_; -} - -- (NSBackgroundStyle)interiorBackgroundStyleForStyle:(GTMThemeStyle)style - active:(BOOL)active { - id value = [self valueForSelector:_cmd style:style active:active]; - if (value) return [value intValue]; - - NSGradient *gradient = [self gradientForStyle:style active:active]; - NSColor *color = [gradient interpolatedColorAtLocation:0.5]; - BOOL dark = [color gtm_isDarkColor]; - value = [NSNumber numberWithInt: dark ? NSBackgroundStyleLowered - : NSBackgroundStyleRaised]; - [self cacheValue:value forSelector:_cmd style:style active:active]; - return [value intValue]; -} - -- (BOOL)styleIsDark:(GTMThemeStyle)style active:(BOOL)active { - id value = [self valueForSelector:_cmd style:style active:active]; - if (value) return [value boolValue]; - - if (style == GTMThemeStyleToolBarButtonPressed) { - value = [NSNumber numberWithBool:YES]; - } else { - value = [NSNumber numberWithBool:[[self backgroundColor] gtm_isDarkColor]]; - } - [self cacheValue:value forSelector:_cmd style:style active:active]; - return [value boolValue]; -} - -- (NSColor *)patternColorForStyle:(GTMThemeStyle)style active:(BOOL)active { - NSColor *color = [self valueForSelector:_cmd style:style active:active]; - if (color) return color; - - NSGradient *gradient = [self gradientForStyle:style active:active]; - if (gradient) { - // create a gradient image for the background - CGRect r = CGRectZero; - // TODO(alcor): figure out a better way to get an image that is the right - // size - r.size = CGSizeMake(4, 36); - size_t bytesPerRow = 4 * r.size.width; - - CGColorSpaceRef space = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - CGContextRef context = CGBitmapContextCreate(NULL, - r.size.width, - r.size.height, - 8, - bytesPerRow, - space, - kCGImageAlphaPremultipliedFirst); - CGColorSpaceRelease(space); - NSGraphicsContext *nsContext - = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:YES]; - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext:nsContext]; - [gradient drawInRect:NSMakeRect(0, 0, r.size.width, r.size.height) - angle:270]; - [NSGraphicsContext restoreGraphicsState]; - - CGImageRef cgImage = CGBitmapContextCreateImage(context); - CGContextRelease(context); - NSBitmapImageRep *rep = nil; - if (cgImage) { - rep = [[[NSBitmapImageRep alloc] initWithCGImage:cgImage] - autorelease]; - CGImageRelease(cgImage); - } - - NSImage *image = [[[NSImage alloc] initWithSize:NSSizeFromCGSize(r.size)] - autorelease]; - [image addRepresentation:rep]; - - color = [NSColor colorWithPatternImage:image]; - } - [self cacheValue:color forSelector:_cmd style:style active:active]; - return color; -} - -- (NSGradient *)gradientForStyle:(GTMThemeStyle)style active:(BOOL)active { - NSGradient *gradient = [self valueForSelector:_cmd style:style active:active]; - if (gradient) return gradient; - - BOOL useDarkColors = backgroundImage_ != nil || style == GTMThemeStyleWindow; - - NSUInteger uses[4]; - if (useDarkColors) { - uses[0] = GTMColorationBaseHighlight; - uses[1] = GTMColorationBaseMidtone; - uses[2] = GTMColorationBaseShadow; - uses[3] = GTMColorationBasePenumbra; - } else { - uses[0] = GTMColorationLightHighlight; - uses[1] = GTMColorationLightMidtone; - uses[2] = GTMColorationLightShadow; - uses[3] = GTMColorationLightPenumbra; - } - NSColor *backgroundColor = [self backgroundColor]; - switch (style) { - case GTMThemeStyleTabBarDeselected: { - NSColor *startColor = [[backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active] - colorWithAlphaComponent:0.667]; - NSColor *endColor = [[backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active] - colorWithAlphaComponent:0.667]; - - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - break; - } - case GTMThemeStyleTabBarSelected: { - NSColor *startColor = [backgroundColor gtm_colorAdjustedFor:uses[0] - faded:!active]; - NSColor *endColor = [backgroundColor gtm_colorAdjustedFor:uses[1] - faded:!active]; - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - break; - } - case GTMThemeStyleWindow: { - CGFloat luminance = [backgroundColor gtm_luminance]; - - // Adjust luminance so it never hits black - if (luminance < 0.5) { - CGFloat adjustment = (0.5 - luminance) / 1.5; - backgroundColor - = [backgroundColor gtm_colorByAdjustingLuminance:adjustment]; - } - NSColor *startColor = [backgroundColor gtm_colorAdjustedFor:uses[1] - faded:!active]; - NSColor *endColor = [backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active]; - - - if (!active) { - startColor = [startColor gtm_colorByAdjustingLuminance:0.1 - saturation:0.5]; - endColor = [endColor gtm_colorByAdjustingLuminance:0.1 - saturation:0.5]; - - } - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - break; - } - case GTMThemeStyleToolBar: { - NSColor *startColor = [backgroundColor gtm_colorAdjustedFor:uses[1] - faded:!active]; - NSColor *endColor = [backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active]; - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - break; - } - case GTMThemeStyleToolBarButton: { - NSColor *startColor = [backgroundColor gtm_colorAdjustedFor:uses[0] - faded:!active]; - NSColor *midColor = [backgroundColor gtm_colorAdjustedFor:uses[1] - faded:!active]; - NSColor *endColor = [backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active]; - NSColor *glowColor = [backgroundColor gtm_colorAdjustedFor:uses[3] - faded:!active]; - - gradient = [[[NSGradient alloc] initWithColorsAndLocations: - startColor, 0.0, - midColor, 0.5, - endColor, 0.9, - glowColor, 1.0, - nil] autorelease]; - break; - } - case GTMThemeStyleToolBarButtonPressed: { - NSColor *startColor = [backgroundColor - gtm_colorAdjustedFor:GTMColorationBaseShadow - faded:!active]; - NSColor *endColor = [backgroundColor - gtm_colorAdjustedFor:GTMColorationBaseMidtone - faded:!active]; - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - break; - } - case GTMThemeStyleBookmarksBar: { - NSColor *startColor = [backgroundColor gtm_colorAdjustedFor:uses[2] - faded:!active]; - NSColor *endColor = [backgroundColor gtm_colorAdjustedFor:uses[3] - faded:!active]; - - gradient = [[[NSGradient alloc] initWithStartingColor:startColor - endingColor:endColor] - autorelease]; - - break; - } - default: - _GTMDevLog(@"Unexpected style: %d", style); - break; - } - - [self cacheValue:gradient forSelector:_cmd style:style active:active]; - return gradient; -} - -- (NSColor *)strokeColorForStyle:(GTMThemeStyle)style active:(BOOL)active { - NSColor *color = [self valueForSelector:_cmd style:style active:active]; - if (color) return color; - NSColor *backgroundColor = [self backgroundColor]; - switch (style) { - case GTMThemeStyleToolBarButton: - color = [[backgroundColor gtm_colorAdjustedFor:GTMColorationDarkShadow - faded:!active] - colorWithAlphaComponent:0.3]; - break; - case GTMThemeStyleToolBar: - case GTMThemeStyleBookmarksBar: - default: - color = [[self backgroundColor] gtm_colorAdjustedFor:GTMColorationBaseShadow - faded:!active]; - break; - } - - [self cacheValue:color forSelector:_cmd style:style active:active]; - return color; -} - -@end - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMThemeTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMThemeTest.m deleted file mode 100644 index 3e37c1fe..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/AppKit/GTMThemeTest.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// GTMThemeTest.m -// -// Copyright 2009 Google Inc. -// -// 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. -// - -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -#import "GTMSenTestCase.h" -#import "GTMTheme.h" - -@interface GTMThemeTest : GTMTestCase -@end - -@implementation GTMThemeTest - -- (void)testTheming { - GTMTheme *theme = [GTMTheme defaultTheme]; - - // When there are no values, use window default colors - STAssertEqualObjects([theme backgroundColor], - [NSColor colorWithCalibratedWhite:0.75 alpha:1.0], nil); - STAssertNil([theme windowBackgroundColor:YES], nil); - STAssertNil([theme backgroundImage], nil); - - NSColor *color = [NSColor redColor]; - NSData *colorData = [NSArchiver archivedDataWithRootObject:color]; - [[NSUserDefaults standardUserDefaults] setObject:colorData - forKey:@"GTMThemeBackgroundColor"]; - - STAssertNotNil([theme windowBackgroundColor:YES], nil); - STAssertNotNil([theme patternColorForStyle:GTMThemeStyleToolBar - active:YES], nil); - STAssertNotNil([theme strokeColorForStyle:GTMThemeStyleToolBar - active:YES], nil); - STAssertNotNil([theme gradientForStyle:GTMThemeStyleToolBar - active:YES], nil); - - STAssertEqualObjects([theme backgroundColor], - color, nil); - - // TODO(alcor): add more of these cases once the constants are more concrete - STAssertEquals([theme interiorBackgroundStyleForStyle:GTMThemeStyleToolBar - active:YES], - (NSBackgroundStyle)NSBackgroundStyleRaised, nil); - - [[NSUserDefaults standardUserDefaults] removeObjectForKey: - @"GTMThemeBackgroundColor"]; -} - -@end - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildScripts/BuildAllSDKs.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildScripts/BuildAllSDKs.sh deleted file mode 100644 index 32a867d4..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildScripts/BuildAllSDKs.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/sh -# BuildAllSDKs.sh -# -# This script builds the Tiger, Leopard, SnowLeopard and iPhone versions of the -# requested target in the current basic config (debug, release, debug-gcov). -# -# Copyright 2006-2008 Google Inc. -# -# 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. - -GTM_PROJECT_TARGET="$1" -GTMIPHONE_PROJECT_TARGET="$2" -STARTING_TARGET="${TARGET_NAME}" -SCRIPT_APP="${TMPDIR}DoBuild.app" - -REQUESTED_BUILD_STYLE=$(echo "${BUILD_STYLE}" | sed -E "s/(.*OrLater-)?(.*)/\2/") -# See if we were told to clean instead of build. -PROJECT_ACTION="build" -if [ "${ACTION}" == "clean" ]; then - PROJECT_ACTION="clean" -fi - -# get available SDKs and PLATFORMS -AVAILABLE_MACOS_SDKS=`eval ls ${DEVELOPER_SDK_DIR}` -AVAILABLE_PLATFORMS=`eval ls ${DEVELOPER_DIR}/Platforms` - -# build up our GTMiPhone parts -GTMIPHONE_OPEN_EXTRAS="" -GTMIPHONE_BUILD_EXTRAS="" -if [ "${GTMIPHONE_PROJECT_TARGET}" != "" ]; then - GTMIPHONE_OPEN_EXTRAS=" - if \"${AVAILABLE_PLATFORMS}\" contains \"iPhoneSimulator.platform\" then - -- make sure both project files are open - open posix file \"${SRCROOT}/GTM.xcodeproj\" - open posix file \"${SRCROOT}/GTMiPhone.xcodeproj\" - end if" - GTMIPHONE_BUILD_EXTRAS=" - if \"${AVAILABLE_PLATFORMS}\" contains \"iPhoneSimulator.platform\" then - with timeout of 9999 seconds - tell project \"GTMiPhone\" - -- do the GTMiPhone build - ${PROJECT_ACTION} using build configuration \"${REQUESTED_BUILD_STYLE}\" - set active target to target \"${STARTING_TARGET}\" - end tell - end timeout - end if" -fi - -# build up our GTM AppleScript -OUR_BUILD_SCRIPT="on run - tell application \"Xcode\" - activate - ${GTMIPHONE_OPEN_EXTRAS} - if \"${AVAILABLE_PLATFORMS}\" contains \"MacOSX.platform\" then - tell project \"GTM\" - -- wait for build to finish - set x to 0 - repeat while currently building - delay 0.5 - set x to x + 1 - if x > 6 then - display alert \"GTM is still building, can't start.\" - return - end if - end repeat - -- do the GTM builds - with timeout of 9999 seconds - if \"{$AVAILABLE_MACOS_SDKS}\" contains \"MacOSX10.4u.sdk\" then - set active target to target \"${GTM_PROJECT_TARGET}\" - set buildResult to ${PROJECT_ACTION} using build configuration \"TigerOrLater-${REQUESTED_BUILD_STYLE}\" - set active target to target \"${STARTING_TARGET}\" - if buildResult is not equal to \"Build succeeded\" then - return - end if - end if - if \"{$AVAILABLE_MACOS_SDKS}\" contains \"MacOSX10.5.sdk\" then - set active target to target \"${GTM_PROJECT_TARGET}\" - set buildResult to ${PROJECT_ACTION} using build configuration \"LeopardOrLater-${REQUESTED_BUILD_STYLE}\" - set active target to target \"${STARTING_TARGET}\" - if buildResult is not equal to \"Build succeeded\" then - return - end if - end if - if \"{$AVAILABLE_MACOS_SDKS}\" contains \"MacOSX10.6.sdk\" then - set active target to target \"${GTM_PROJECT_TARGET}\" - set buildResult to ${PROJECT_ACTION} using build configuration \"SnowLeopardOrLater-${REQUESTED_BUILD_STYLE}\" - set active target to target \"${STARTING_TARGET}\" - if buildResult is not equal to \"Build succeeded\" then - return - end if - end if - end timeout - end tell - end if - ${GTMIPHONE_BUILD_EXTRAS} - end tell -end run" - -# Xcode won't actually let us spawn this and run it w/ osascript because it -# watches and waits for everything we have spawned to exit before the build is -# considered done, so instead we compile this to a script app, and then use -# open to invoke it, there by escaping our little sandbox. -# xcode defeats this: ( echo "${OUR_BUILD_SCRIPT}" | osascript - & ) -rm -rf "${SCRIPT_APP}" -echo "${OUR_BUILD_SCRIPT}" | osacompile -o "${SCRIPT_APP}" -x -open "${SCRIPT_APP}" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildingAndUsing.txt b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildingAndUsing.txt deleted file mode 100644 index 67bbd797..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/BuildingAndUsing.txt +++ /dev/null @@ -1,18 +0,0 @@ -The GTM project provides a Framework target and Unit Testing targets. - -Unit Testing Targets - - -These targets are there to make sure all of GTM is working, and reflect the -hierarchy of the source tree. - -Building the "All UnitTests" target will build all of the unittests for the -current configuration included in the GTM package. We require that "All -UnitTests" builds cleanly before we will accept any code submissions. - -Framework Target - - -These targets are there to make it easy for anyone to quickly add GTM sources -to their own project to start using it or playing around with it. However, -the intent is for a developer to manually add the sources to their project in -the end to reduce the total size of their product (since they only have to -include the parts of GTM they need). diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/COPYING b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/COPYING deleted file mode 100644 index a95e82aa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/COPYING +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2007 Google Inc. - - 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. \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugSelectorValidation.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugSelectorValidation.h deleted file mode 100644 index 19d8b8eb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugSelectorValidation.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// GTMDebugSelectorValidation.h -// -// This file should only be included within an implimation file. In any -// function that takes an object and selector to invoke, you should call: -// -// GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, @encode(arg1type), ..., NULL) -// or -// GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, @encode(returnType), @encode(arg1type), ..., NULL) -// -// This will then validate that the selector is defined and using the right -// type(s), this can help catch errors much earlier then waiting for the -// selector to actually fire (and in the case of error selectors, might never -// really be tested until in the field). -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#if DEBUG - -#import -#import "GTMDefines.h" - -static void GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(id obj, SEL sel, const char *retType, ...) { - - // verify that the object's selector is implemented with the proper - // number and type of arguments - va_list argList; - va_start(argList, retType); - - if (obj && sel) { - // check that the selector is implemented - _GTMDevAssert([obj respondsToSelector:sel], - @"\"%@\" selector \"%@\" is unimplemented or misnamed", - NSStringFromClass([obj class]), - NSStringFromSelector(sel)); - - const char *expectedArgType; - NSUInteger argCount = 2; // skip self and _cmd - NSMethodSignature *sig = [obj methodSignatureForSelector:sel]; - - // check that each expected argument is present and of the correct type - while ((expectedArgType = va_arg(argList, const char*)) != 0) { - - if ([sig numberOfArguments] > argCount) { - const char *foundArgType = [sig getArgumentTypeAtIndex:argCount]; - - _GTMDevAssert(0 == strncmp(foundArgType, expectedArgType, strlen(expectedArgType)), - @"\"%@\" selector \"%@\" argument %d should be type %s", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - (argCount - 2), - expectedArgType); - } - argCount++; - } - - // check that the proper number of arguments are present in the selector - _GTMDevAssert(argCount == [sig numberOfArguments], - @"\"%@\" selector \"%@\" should have %d arguments", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - (argCount - 2)); - - // if asked, validate the return type - if (retType && (strcmp("gtm_skip_return_test", retType) != 0)) { - const char *foundRetType = [sig methodReturnType]; - _GTMDevAssert(0 == strncmp(foundRetType, retType, strlen(retType)), - @"\"%@\" selector \"%@\" return type should be type %s", - NSStringFromClass([obj class]), - NSStringFromSelector(sel), - retType); - } - } - - va_end(argList); -} - -#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) \ - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments((obj), (sel), "gtm_skip_return_test", __VA_ARGS__) - -#else // DEBUG - -// make it go away if not debug -#define GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(obj, sel, retType, ...) do { } while (0) -#define GTMAssertSelectorNilOrImplementedWithArguments(obj, sel, ...) do { } while (0) - -#endif // DEBUG diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.h deleted file mode 100644 index 0636159c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// GTMDebugThreadValidation.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#if DEBUG -#import "GTMDefines.h" -#import - -// GTMAssertRunningOnMainThread will allow you to verify that you are -// currently running on the main thread. This can be useful for checking -// under DEBUG to make sure that code that requires being run on the main thread -// is doing so. Use the GTMAssertRunningOnMainThread macro, don't use -// the _GTMAssertRunningOnMainThread or _GTMIsRunningOnMainThread -// helper functions. - -// On Leopard and above we can just use NSThread functionality. -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -BOOL _GTMIsRunningOnMainThread(void); -#else // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -#import -GTM_INLINE BOOL _GTMIsRunningOnMainThread(void) { - return [NSThread isMainThread]; -} -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -GTM_INLINE void _GTMAssertRunningOnMainThread(const char *func, - const char *file, - int lineNum) { - _GTMDevAssert(_GTMIsRunningOnMainThread(), - @"%s not being run on main thread (%s - %d)", - func, file, lineNum); -} - -#define GTMAssertRunningOnMainThread() \ - (_GTMAssertRunningOnMainThread(__func__, __FILE__, __LINE__)) - -#else // DEBUG - -#define GTMAssertRunningOnMainThread() do { } while (0) - -#endif // DEBUG diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.m deleted file mode 100644 index 5889cd88..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidation.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// GTMDebugThreadValidation.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - - -#if DEBUG && MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -#import "GTMDebugThreadValidation.h" - -static NSThread *gGTMMainThread = nil; - -static __attribute__((constructor)) void _GTMInitThread(void) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - gGTMMainThread = [NSThread currentThread]; - [gGTMMainThread retain]; - [pool release]; -} - - -BOOL _GTMIsRunningOnMainThread(void) { - return [[NSThread currentThread] isEqual:gGTMMainThread]; -} - -#endif // DEBUG && MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidationTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidationTest.m deleted file mode 100644 index 66bd51b7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMDebugThreadValidationTest.m +++ /dev/null @@ -1,110 +0,0 @@ -// -// GTMDebugThreadValidationTest.m -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMDebugThreadValidation.h" - -// GTMDebugThreadValidation only happens on debug builds -#if DEBUG - -@interface GTMDebugThreadValidationTest : GTMTestCase -@end - -// A cheap flag for knowing when our thread has run - -static volatile BOOL gGTMDebugThreadValidationTestDone = NO; - -// This is an assertion handler that just records that an assertion has fired. -@interface GTMDebugThreadValidationCheckAssertionHandler : NSAssertionHandler { - @private - BOOL handledAssertion_; -} -- (void)handleFailureInMethod:(SEL)selector - object:(id)object - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format,...; - -- (void)handleFailureInFunction:(NSString *)functionName - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format,...; -- (BOOL)didHandleAssertion; -@end - -@implementation GTMDebugThreadValidationTest -- (void)testOnMainThread { - STAssertNoThrow(GTMAssertRunningOnMainThread(), nil); -} - -- (void)threadFunc:(NSMutableString *)result { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - // We'll insert our own assertion handler that will get called on the assert - // so that we don't have to worry about the log, and exception being thrown. - GTMDebugThreadValidationCheckAssertionHandler *handler = - [[[GTMDebugThreadValidationCheckAssertionHandler alloc] init] autorelease]; - NSMutableDictionary *threadDictionary - = [[NSThread currentThread] threadDictionary]; - [threadDictionary setObject:handler forKey:@"NSAssertionHandler"]; - GTMAssertRunningOnMainThread(); - if ([handler didHandleAssertion]) { - [result setString:@"ASSERTED"]; - } - [threadDictionary removeObjectForKey:@"NSAssertionHandler"]; - gGTMDebugThreadValidationTestDone = YES; - [pool release]; -} - -- (void)testOnOtherThread { - NSMutableString *result = [NSMutableString string]; - gGTMDebugThreadValidationTestDone = NO; - [NSThread detachNewThreadSelector:@selector(threadFunc:) - toTarget:self - withObject:result]; - NSRunLoop *loop = [NSRunLoop currentRunLoop]; - - while (!gGTMDebugThreadValidationTestDone) { - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0.01]; - [loop runUntilDate:date]; - } - STAssertEqualStrings(result, @"ASSERTED", @"GTMAssertRunningOnMainThread did " - @"not assert while running on another thread"); -} -@end - -@implementation GTMDebugThreadValidationCheckAssertionHandler - -- (void)handleFailureInMethod:(SEL)selector - object:(id)object - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format,... { - handledAssertion_ = YES; -} - -- (void)handleFailureInFunction:(NSString *)functionName - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format,... { - handledAssertion_ = YES; -} - -- (BOOL)didHandleAssertion { - return handledAssertion_; -} -@end -#endif // DEBUG diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.h deleted file mode 100644 index 7b0919b0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.h +++ /dev/null @@ -1,88 +0,0 @@ -// -// GTMMethodCheck.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import -#import - -/// A macro for enforcing debug time checks to make sure all required methods are linked in -// -// When using categories, it can be very easy to forget to include the -// implementation of a category. -// Let's say you had a class foo that depended on method bar of class baz, and -// method bar was implemented as a member of a category. -// You could add the following code: -// @implementation foo -// GTM_METHOD_CHECK(baz, bar) -// @end -// and the code would check to make sure baz was implemented just before main -// was called. This works for both dynamic libraries, and executables. -// -// Classes (or one of their superclasses) being checked must conform to the -// NSObject protocol. We will check this, and spit out a warning if a class does -// not conform to NSObject. -// -// This is not compiled into release builds. - -#ifdef DEBUG - -#ifdef __cplusplus -extern "C" { -#endif - -// If you get an error for GTMMethodCheckMethodChecker not being defined, -// you need to link in GTMMethodCheck.m. We keep it hidden so that we can have -// it living in several separate images without conflict. -// Functions with the ((constructor)) attribute are called after all +loads -// have been called. See "Initializing Objective-C Classes" in -// http://developer.apple.com/documentation/DeveloperTools/Conceptual/DynamicLibraries/Articles/DynamicLibraryDesignGuidelines.html#//apple_ref/doc/uid/TP40002013-DontLinkElementID_20 - -__attribute__ ((constructor, visibility("hidden"))) void GTMMethodCheckMethodChecker(void); - -#ifdef __cplusplus -}; -#endif - -// This is the "magic". -// A) we need a multi layer define here so that the stupid preprocessor -// expands __LINE__ out the way we want it. We need LINE so that each of -// out GTM_METHOD_CHECKs generates a unique class method for the class. -#define GTM_METHOD_CHECK(class, method) GTM_METHOD_CHECK_INNER(class, method, __LINE__) -#define GTM_METHOD_CHECK_INNER(class, method, line) GTM_METHOD_CHECK_INNER_INNER(class, method, line) - -// B) Create up a class method called xxGMethodCheckMethod+class+line that the -// GTMMethodCheckMethodChecker function can look for and call. We -// look for GTMMethodCheckMethodChecker to enforce linkage of -// GTMMethodCheck.m. -#define GTM_METHOD_CHECK_INNER_INNER(class, method, line) \ -+ (void)xxGTMMethodCheckMethod ## class ## line { \ - void (*addr)() = GTMMethodCheckMethodChecker; \ - if (addr && ![class instancesRespondToSelector:@selector(method)] \ - && ![class respondsToSelector:@selector(method)]) { \ - fprintf(stderr, "%s:%d: error: We need method '%s' to be linked in for class '%s'\n", \ - __FILE__, line, #method, #class); \ - exit(EX_SOFTWARE); \ - } \ -} - -#else // !DEBUG - -// Do nothing in release. -#define GTM_METHOD_CHECK(class, method) - -#endif // DEBUG diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.m deleted file mode 100644 index 2f88dc36..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheck.m +++ /dev/null @@ -1,163 +0,0 @@ -// -// GTMMethodCheck.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Don't want any of this in release builds -#ifdef DEBUG -#import "GTMDefines.h" -#import "GTMMethodCheck.h" -#import "GTMObjC2Runtime.h" -#import - -// Checks to see if the cls passed in (or one of it's superclasses) conforms -// to NSObject protocol. Inheriting from NSObject is the easiest way to do this -// but not all classes (i.e. NSProxy) inherit from NSObject. Also, some classes -// inherit from Object instead of NSObject which is fine, and we'll count as -// conforming to NSObject for our needs. -static BOOL ConformsToNSObjectProtocol(Class cls) { - // If we get nil, obviously doesn't conform. - if (!cls) return NO; - const char *className = class_getName(cls); - if (!className) return NO; - - // We're going to assume that all Apple classes will work - // (and aren't being checked) - // Note to apple: why doesn't obj-c have real namespaces instead of two - // letter hacks? If you name your own classes starting with NS this won't - // work for you. - // Some classes (like _NSZombie) start with _NS. - // On Leopard we have to look for CFObject as well. - // On iPhone we check Object as well - if ((strncmp(className, "NS", 2) == 0) - || (strncmp(className, "_NS", 3) == 0) - || (strcmp(className, "CFObject") == 0) -#if GTM_IPHONE_SDK - || (strcmp(className, "Object") == 0) -#endif - ) { - return YES; - } - -// iPhone SDK does not define the |Object| class, so we instead test for the -// |NSObject| class. -#if GTM_IPHONE_SDK - // Iterate through all the protocols |cls| supports looking for NSObject. - if (cls == [NSObject class] - || class_conformsToProtocol(cls, @protocol(NSObject))) { - return YES; - } -#else - // Iterate through all the protocols |cls| supports looking for NSObject. - if (cls == [Object class] - || class_conformsToProtocol(cls, @protocol(NSObject))) { - return YES; - } -#endif - - // Recursively check the superclasses. - return ConformsToNSObjectProtocol(class_getSuperclass(cls)); -} - -void GTMMethodCheckMethodChecker(void) { - // Run through all the classes looking for class methods that are - // prefixed with xxGMMethodCheckMethod. If it finds one, it calls it. - // See GTMMethodCheck.h to see what it does. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - int numClasses = 0; - int newNumClasses = objc_getClassList(NULL, 0); - int i; - Class *classes = NULL; - while (numClasses < newNumClasses) { - numClasses = newNumClasses; - classes = realloc(classes, sizeof(Class) * numClasses); - _GTMDevAssert(classes, @"Unable to allocate memory for classes"); - newNumClasses = objc_getClassList(classes, numClasses); - } - for (i = 0; i < numClasses && classes; ++i) { - Class cls = classes[i]; - - // Since we are directly calling objc_msgSend, we need to conform to - // @protocol(NSObject), or else we will tumble into a _objc_msgForward - // recursive loop when we try and call a function by name. - if (!ConformsToNSObjectProtocol(cls)) { - // COV_NF_START - _GTMDevLog(@"GTMMethodCheckMethodChecker: Class %s does not conform to " - "@protocol(NSObject), so won't be checked", - class_getName(cls)); - continue; - // COV_NF_END - } - // Since we are looking for a class method (+xxGMMethodCheckMethod...) - // we need to query the isa pointer to see what methods it support, but - // send the method (if it's supported) to the class itself. - unsigned int count; - Class metaClass = objc_getMetaClass(class_getName(cls)); - Method *methods = class_copyMethodList(metaClass, &count); - unsigned int j; - for (j = 0; j < count; ++j) { - SEL selector = method_getName(methods[j]); - const char *name = sel_getName(selector); - if (strstr(name, "xxGTMMethodCheckMethod") == name) { - // Check to make sure that the method we are checking comes - // from the same image that we are in. Since GTMMethodCheckMethodChecker - // is not exported, we should always find the copy in our local - // image. We compare the address of it's image with the address of - // the image which implements the method we want to check. If - // they match we continue. This does two things: - // a) minimizes the amount of calls we make to the xxxGTMMethodCheck - // methods. They should only be called once. - // b) prevents initializers for various classes being called too early - Dl_info methodCheckerInfo; - if (!dladdr(GTMMethodCheckMethodChecker, - &methodCheckerInfo)) { - // COV_NF_START - // Don't know how to force this case in a unittest. - // Certainly hope we never see it. - _GTMDevLog(@"GTMMethodCheckMethodChecker: Unable to get dladdr info " - "for GTMMethodCheckMethodChecker while introspecting +[%@ %@]]", - class_getName(cls), name); - continue; - // COV_NF_END - } - Dl_info methodInfo; - if (!dladdr(method_getImplementation(methods[j]), - &methodInfo)) { - // COV_NF_START - // Don't know how to force this case in a unittest - // Certainly hope we never see it. - _GTMDevLog(@"GTMMethodCheckMethodChecker: Unable to get dladdr info " - "for %@ while introspecting +[%@ %@]]", name, - class_getName(cls), name); - continue; - // COV_NF_END - } - if (methodCheckerInfo.dli_fbase == methodInfo.dli_fbase) { - objc_msgSend(cls, selector); - } - } - } - if (methods) { - free(methods); - } - } - if (classes) { - free(classes); - } - [pool release]; -} - -#endif // DEBUG diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheckTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheckTest.m deleted file mode 100644 index 974dfafd..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/DebugUtils/GTMMethodCheckTest.m +++ /dev/null @@ -1,53 +0,0 @@ -// -// GTMMethodCheckTest.m -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMMethodCheck.h" - -static BOOL gTestCheckVar = NO; - -@interface GTMMethodCheckTest : GTMTestCase -+ (void)GTMMethodCheckTestClassMethod; -@end - -@implementation GTMMethodCheckTest -GTM_METHOD_CHECK(GTMMethodCheckTest, GTMMethodCheckTestMethod); -GTM_METHOD_CHECK(GTMMethodCheckTest, GTMMethodCheckTestClassMethod); - -- (void)GTMMethodCheckTestMethod { -} - -+ (void)GTMMethodCheckTestClassMethod { -} - -+ (void)xxGTMMethodCheckMethodTestCheck { - // This gets called because of its special name by GMMethodCheck - // Look at the Macros in GMMethodCheck.h for details. - gTestCheckVar = YES; -} - -- (void)testGTMMethodCheck { -#ifdef DEBUG - // GTMMethodCheck only runs in debug - STAssertTrue(gTestCheckVar, @"Should be true"); -#endif - - // Next two calls just verify our code coverage - [self GTMMethodCheckTestMethod]; - [[self class] GTMMethodCheckTestClassMethod]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.h deleted file mode 100644 index e8657279..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.h +++ /dev/null @@ -1,222 +0,0 @@ -// -// GTMAbstractDOListener.h -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -@class GTMReceivePortDelegate; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -// Abstract base class for DO "listeners". -// A class that needs to vend itself over DO should subclass this abstract -// class. This class takes care of certain things like creating a new thread -// to handle requests, setting request/reply timeouts, and ensuring the vended -// object only gets requests that comply with the specified protocol. -// -// Subclassers will want to use the -// GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL macro for easier debugging -// of stack traces. Please read it's description below. -// -@interface GTMAbstractDOListener : NSObject { - @protected - NSString *registeredName_; - __weak Protocol *protocol_; - NSConnection *connection_; - BOOL isRunningInNewThread_; - BOOL shouldShutdown_; - NSTimeInterval requestTimeout_; - NSTimeInterval replyTimeout_; - NSPort *port_; - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - GTMReceivePortDelegate *receivePortDelegate_; // Strong (only used on Tiger) -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -} - -// Returns a set of all live instances of GTMAbstractDOListener subclasses. -// If no listeners have been created, this will return an empty array--not nil. -// -// TODO: Remove this method -// -+ (NSArray *)allListeners; - -// Initializer. This actually calls -// initWithRegisteredName:protocol:port with [NSMachPort port] as the port. -// -// Args: -// name - the name that the object will register under -// proto - the protocol that this object (self) should conform to -// -- (id)initWithRegisteredName:(NSString *)name protocol:(Protocol *)proto; - -// The designated initializer. -// -// Args: -// name - the name used to register the port. While not necessarily required -// for an NSSocketPort this class still requires it. -// proto - the protocol that this object (self) should conform to -// port - the port to be used when creating the NSConnection. If a NSMachPort -// is being used then initWithRegisteredName:protocol is recommended. -// Otherwise the port must be allocted by the caller. -// -- (id)initWithRegisteredName:(NSString *)name - protocol:(Protocol *)proto - port:(NSPort *)port; - -// Returns the name that this server will register with the -// mach port name sever. This is the name of the port that this class -// will "listen" on when -runInNewThread is called. -// -// Returns: -// The registered name as a string -// -- (NSString *)registeredName; - -// Sets the registered name to use when listening over DO. This only makes -// sense to be called before -runInNewThread has been called, because -// -runInNewThread will listen on this "registered name", so setting it -// afterwards would do nothing. -// -// Args: -// name - the name to register under. May not be nil. -// -- (void)setRegisteredName:(NSString *)name; - -// Get/set the request timeout interval. If set to a value less than 0, -// the default DO connection timeout will be used (maximum possible value). -// -- (NSTimeInterval)requestTimeout; -- (void)setRequestTimeout:(NSTimeInterval)timeout; - -// Get/set the reply timeout interval. If set to a value less than 0, -// the default DO connection timeout will be used (maximum possible value). -// -- (NSTimeInterval)replyTimeout; -- (void)setReplyTimeout:(NSTimeInterval)timeout; - -// Returns the listeners associated NSConnection. May be nil if no connection -// has been setup yet. -// -- (NSConnection *)connection; - -// Starts the DO system listening using the current thread and current runloop. -// It only makes sense to call this method -OR- -runInNewThread, but not both. -// Returns YES if it was able to startup the DO listener, NO otherwise. -// -- (BOOL)runInCurrentThread; - -// Starts the DO system listening, and creates a new thread to handle the DO -// connections. It only makes sense to call this method -OR- -// -runInCurrentThread, but not both. -// if |errObject| is non nil, it will be used along with |selector| and -// |argument| to signal that the startup of the listener in the new thread -// failed. The actual selector will be invoked back on the main thread so -// it does not have to be thread safe. -// The most basic way to call this method is as follows: -// [listener runInNewThreadWithErrorTarget:nil -// selector:NULL -// withObjectArgument:nil]; -// -// Note: Using the example above you will not know if the listener failed to -// startup due to some error. -// -- (void)runInNewThreadWithErrorTarget:(id)errObject - selector:(SEL)selector - withObjectArgument:(id)argument; - -// Shuts down the connection. If it was running in a new thread, that thread -// should exit (within about 10 seconds). This call does not block. -// -// NOTE: This method is called in -dealloc, so if -runInNewThread had previously -// been called, -dealloc will return *before* the thread actually exits. This -// can be a problem as "self" may be gone before the thread exits. This is a -// bug and needs to be fixed. Currently, to be safe, only call -shutdown if -// -runInCurrentThread had previously been called. -// -- (void)shutdown; - -@end - - -// Methods that subclasses may implement to vary the behavior of this abstract -// class. -// -@interface GTMAbstractDOListener (GTMAbstractDOListenerSubclassMethods) - -// Called by the -runIn* methods. In the case where a new thread is being used, -// this method is called on the new thread. The default implementation of this -// method just returns YES, but subclasses can override it to do subclass -// specific initialization. If this method returns NO, the -runIn* method that -// called it will fail with an error. -// -// Returns: -// YES if the -runIn* method should continue successfully, NO if the it should -// fail. -// -- (BOOL)doRunInitialization; - -// Called as the "main" for the thread spun off by GTMAbstractDOListener. -// Not really for use by subclassers, except to use the -// GTMABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL macro defined below. -// -// This method runs forever in a new thread. This method actually starts the -// DO connection listening. -// -- (void)threadMain:(NSInvocation *)failureCallback; - -@end - -// GTMAbstractDOListeners used to be hard to debug because crashes in their -// stacks looked like this: -// -// #0 0x90009cd7 in mach_msg_trap () -// #1 0x90009c38 in mach_msg () -// #2 0x9082d2b3 in CFRunLoopRunSpecific () -// #3 0x9082cace in CFRunLoopRunInMode () -// #4 0x9282ad3a in -[NSRunLoop runMode:beforeDate:] () -// #5 0x928788e4 in -[NSRunLoop runUntilDate:] () -// #6 0x00052696 in -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:] ... -// #7 0x927f52e0 in forkThreadForFunction () -// #8 0x90024227 in _pthread_body () -// -// and there was no good way to figure out what thread had the problem because -// they all originated from -// -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:] -// -// If you add GTMABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL to the impl of your -// subclass you will get a stack that looks like this: -// #0 0x90009cd7 in mach_msg_trap () -// #1 0x90009c38 in mach_msg () -// #2 0x9082d2b3 in CFRunLoopRunSpecific () -// #3 0x9082cace in CFRunLoopRunInMode () -// #4 0x9282ad3a in -[NSRunLoop runMode:beforeDate:] () -// #5 0x928788e4 in -[NSRunLoop runUntilDate:] () -// #6 0x00052696 in -[GTMAbstractDOListener(GTMAbstractDOListenerSubclassMethods) threadMain:] ... -// #7 0x0004b35c in -[GDStatsListener threadMain:] -// #8 0x927f52e0 in forkThreadForFunction () #9 0x90024227 in _pthread_body () -// -// so we can see that this was the GDStatsListener thread that failed. -// It will look something like this -// @implemetation MySubclassOfGTMAbstractDOListenerSubclassMethods -// GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL -// .... -// @end - -#define GTM_ABSTRACTDOLISTENER_SUBCLASS_THREADMAIN_IMPL \ - - (void)threadMain:(NSInvocation *)failureCallback { \ - [super threadMain:failureCallback]; \ - } diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.m deleted file mode 100644 index 772960bb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListener.m +++ /dev/null @@ -1,438 +0,0 @@ -// -// GTMAbstractDOListener.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMAbstractDOListener.h" -#import "GTMSystemVersion.h" -#import - -// Hack workaround suggested by DTS for the DO deadlock bug. Basically, this -// class intercepts the delegate role for DO's receive port (which is an -// NSMachPort). When -handlePortMessage: is called, it verifies that the send -// and receive ports are not nil, then forwards the message on to the original -// delegate. If the ports are nil, then the resulting NSConnection would -// eventually cause us to deadlock. In this case, it simply ignores the -// message. This is only need on Tiger. -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -@interface GTMReceivePortDelegate : NSObject { - __weak id delegate_; -} -- (id)initWithDelegate:(id)delegate; -- (void)handlePortMessage:(NSPortMessage *)message; -@end -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -@interface GTMAbstractDOListener (PrivateMethods) -- (BOOL)startListening; -- (void)stopListening; - -// Returns a description of the port based on the type of port. -- (NSString *)portDescription; - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -// Uses the GTMReceivePortDelegate hack (see comments above) if we're on Tiger. -- (void)hackaroundTigerDOWedgeBug:(NSConnection *)conn; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -@end - -// Static global set that holds a pointer to all instances of -// GTMAbstractDOListener subclasses. -// -static NSMutableSet *gAllListeners = nil; - -@implementation GTMAbstractDOListener - -+ (void)initialize { - if (self == [GTMAbstractDOListener class]) { - // We create the set using CFSetCreateMutable because we don't - // want to retain things in this set. If we retained things in the - // set we would never be able to dealloc ourselves because we - // add "self" to this set in it's init routine would cause an - // extra retain to be added to it. - gAllListeners = (NSMutableSet*)CFSetCreateMutable(NULL, 0, NULL); - } -} - -+ (NSArray *)allListeners { - // We return an NSArray instead of an NSSet here because NSArrays look nicer - // when displayed as %@ - NSArray *allListeners = nil; - - @synchronized (gAllListeners) { - allListeners = [gAllListeners allObjects]; - } - return allListeners; -} - -- (id)init { - return [self initWithRegisteredName:nil protocol:NULL]; -} - -- (id)initWithRegisteredName:(NSString *)name protocol:(Protocol *)proto { - return [self initWithRegisteredName:name - protocol:proto - port:[NSMachPort port]]; -} - -- (id)initWithRegisteredName:(NSString *)name - protocol:(Protocol *)proto - port:(NSPort *)port { - self = [super init]; - if (!self) { - return nil; - } - - if ((!proto) || (!port) || (!name)) { - if (!proto) { - _GTMDevLog(@"Failed to create a listener, a protocol must be specified"); - } - - if (!port) { - _GTMDevLog(@"Failed to create a listener, a port must be specified"); - } - - if (!name) { - _GTMDevLog(@"Failed to create a listener, a name must be specified"); - } - - [self release]; - return nil; - } - - registeredName_ = [name copy]; - protocol_ = proto; // Can't retain protocols - port_ = [port retain]; - - requestTimeout_ = -1; - replyTimeout_ = -1; - - _GTMDevAssert(gAllListeners, @"gAllListeners is not nil"); - @synchronized (gAllListeners) { - [gAllListeners addObject:self]; - } - - return self; -} - -- (void)dealloc { - _GTMDevAssert(gAllListeners, @"gAllListeners is not nil"); - @synchronized (gAllListeners) { - [gAllListeners removeObject:self]; - } - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [receivePortDelegate_ release]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - - [self shutdown]; - [port_ release]; - [registeredName_ release]; - [super dealloc]; -} - - -#pragma mark Getters and Setters - -- (NSString *)registeredName { - return registeredName_; -} - -- (void)setRegisteredName:(NSString *)name { - if (!name) { - return; - } - [registeredName_ autorelease]; - registeredName_ = [name copy]; -} - -- (NSTimeInterval)requestTimeout { - return requestTimeout_; -} - -- (void)setRequestTimeout:(NSTimeInterval)timeout { - requestTimeout_ = timeout; -} - -- (NSTimeInterval)replyTimeout { - return replyTimeout_; -} - -- (void)setReplyTimeout:(NSTimeInterval)timeout { - replyTimeout_ = timeout; -} - -- (NSConnection *)connection { - return connection_; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@<%p> { name=\"%@\", %@ }", - [self class], self, registeredName_, [self portDescription]]; -} - -#pragma mark "Run" methods - -- (BOOL)runInCurrentThread { - return [self startListening]; -} - -- (void)runInNewThreadWithErrorTarget:(id)errObject - selector:(SEL)selector - withObjectArgument:(id)argument { - NSInvocation *invocation = nil; - - _GTMDevAssert(((errObject != nil && selector != NULL) || - (!errObject && !selector)), @"errObject and selector must " - @"both be nil or not nil"); - - // create an invocation we can use if things fail - if (errObject) { - NSMethodSignature *signature = - [errObject methodSignatureForSelector:selector]; - invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setSelector:selector]; - [invocation setTarget:errObject]; - - // If the selector they passed in takes an arg (i.e., it has at least one - // colon in the selector name), then set the first user-specified arg to be - // the |argument| they specified. The first two args are self and _cmd. - if ([signature numberOfArguments] > 2) { - [invocation setArgument:&argument atIndex:2]; - } - - [invocation retainArguments]; - } - - shouldShutdown_ = NO; - [NSThread detachNewThreadSelector:@selector(threadMain:) - toTarget:self - withObject:invocation]; -} - -- (void)shutdown { - // If we're not running in a new thread (then we're running in the "current" - // thread), tear down the NSConnection here. If we are running in a new - // thread we just set the shouldShutdown_ flag, and the thread will teardown - // the NSConnection itself. - if (!isRunningInNewThread_) { - [self stopListening]; - } else { - shouldShutdown_ = YES; - } -} - -@end - -@implementation GTMAbstractDOListener (PrivateMethods) - -- (BOOL)startListening { - BOOL result = NO; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - connection_ = [[NSConnection alloc] initWithReceivePort:port_ sendPort:nil]; - - NSProtocolChecker *checker = - [NSProtocolChecker protocolCheckerWithTarget:self - protocol:protocol_]; - - if (requestTimeout_ >= 0) { - [connection_ setRequestTimeout:requestTimeout_]; - } - - if (replyTimeout_ >= 0) { - [connection_ setReplyTimeout:replyTimeout_]; - } - - // Set the connection's root object to be the protocol checker so that only - // methods listed in the protocol_ are available via DO. - [connection_ setRootObject:checker]; - - // Allow subclasses to be the connection delegate - [connection_ setDelegate:self]; - - // Because of radar 5493309 we need to do this. [NSConnection registeredName:] - // returns NO when the connection is created using an NSSocketPort under - // Leopard. - // - // The recommendation from Apple was to use the command: - // [NSConnection registerName:withNameServer:]. - NSPortNameServer *server; - if ([port_ isKindOfClass:[NSSocketPort class]]) { - server = [NSSocketPortNameServer sharedInstance]; - } else { - server = [NSPortNameServer systemDefaultPortNameServer]; - } - - BOOL registered = [connection_ registerName:registeredName_ - withNameServer:server]; - - if (registeredName_ && registered) { -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [self hackaroundTigerDOWedgeBug:connection_]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - - result = YES; - - _GTMDevLog(@"listening on %@ with name '%@'", [self portDescription], - registeredName_); - } else { - _GTMDevLog(@"failed to register %@ with %@", connection_, registeredName_); - } - - // we're good, so call the overrideable initializer - if (result) { - // Call the virtual "runIn*" initializer - result = [self doRunInitialization]; - } - - [pool drain]; - - return result; -} - -- (void)stopListening { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [connection_ invalidate]; - [connection_ release]; - connection_ = nil; - [pool drain]; -} - -- (NSString *)portDescription { - NSString *portDescription; - if ([port_ isKindOfClass:[NSMachPort class]]) { - portDescription = [NSString stringWithFormat:@"mach_port=%#x", - [(NSMachPort *)port_ machPort]]; - } else { - portDescription = [NSString stringWithFormat:@"port=%@", - [port_ description]]; - } - return portDescription; -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -- (void)hackaroundTigerDOWedgeBug:(NSConnection *)conn { - if ([GTMSystemVersion isTiger]) { - NSPort *receivePort = [conn receivePort]; - if ([receivePort isKindOfClass:[NSMachPort class]]) { - id portDelegate = [receivePort delegate]; - receivePortDelegate_ = - [[GTMReceivePortDelegate alloc] initWithDelegate:portDelegate]; - [receivePort setDelegate:receivePortDelegate_]; - } - } -} -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -@end - -@implementation GTMAbstractDOListener (GTMAbstractDOListenerSubclassMethods) - -- (BOOL)doRunInitialization { - return YES; -} - -// -// -threadMain: -// - -// -- (void)threadMain:(NSInvocation *)failureCallback { - isRunningInNewThread_ = YES; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - // register - if ([self startListening]) { - // spin - for (;;) { // Run forever - - // check if we were asked to shutdown - if (shouldShutdown_) { - break; - } - - NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init]; - // Wrap our runloop in case we get an exception from DO - @try { - NSDate *waitDate = [NSDate dateWithTimeIntervalSinceNow:10]; - [[NSRunLoop currentRunLoop] runUntilDate:waitDate]; - } @catch (id e) { - _GTMDevLog(@"Listener '%@' caught exception: %@", registeredName_, e); - } - [localPool drain]; - } - } else { - // failed, if we had something to invoke, call it on the main thread - if (failureCallback) { - [failureCallback performSelectorOnMainThread:@selector(invoke) - withObject:nil - waitUntilDone:NO]; - } - } - - [self stopListening]; - [pool drain]; - - isRunningInNewThread_ = NO; -} - -@end - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -@implementation GTMReceivePortDelegate - -- (id)initWithDelegate:(id)delegate { - if ((self = [super init])) { - delegate_ = delegate; // delegates aren't retained - } - return self; -} - -- (void)handlePortMessage:(NSPortMessage *)message { - NSPort *receivePort = [message receivePort]; - NSPort *sendPort = [message sendPort]; - - // If we don't have a sensible send or receive port, just act like - // the message never arrived. Otherwise, hand it off to the original - // delegate (which is the NSMachPort itself). - if (receivePort == nil || sendPort == nil || [receivePort isEqual:sendPort]) { - _GTMDevLog(@"Dropping port message destined for itself to avoid DO wedge."); - } else { - // Uncomment for super-duper verbose DO message forward logging - // _GTMDevLog(@"--> Forwarding message %@ to delegate %@", - // message, delegate_); - [delegate_ handlePortMessage:message]; - } - - // If processing the message caused us to drop no longer being the delegate, - // set us back. Due to interactions between NSConnection and NSMachPort, - // it's possible for the NSMachPort's delegate to get set back to its - // original value. If that happens, we set it back to the value we want. - if ([delegate_ delegate] != self) { - if ([delegate_ delegate] == delegate_) { - _GTMDevLog(@"Restoring DO delegate to %@", self); - [delegate_ setDelegate:self]; - } else { - _GTMDevLog(@"GMReceivePortDelegate replaced with %@", - [delegate_ delegate]); - } - } -} -@end -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListenerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListenerTest.m deleted file mode 100644 index 6076724a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMAbstractDOListenerTest.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// GTMAbstractDOListenerTest.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMAbstractDOListener.h" - -// Needed for GTMIsGarbageCollectionEnabled -#import "GTMGarbageCollection.h" - -@interface GTMAbstractDOListenerTest : GTMTestCase -@end - -// TODO: we need to add more tests for this class. Examples: send messages and -// send messages that are in the protocol. - -@implementation GTMAbstractDOListenerTest - -- (void)testAbstractDOListenerRelease { - NSUInteger listenerCount = [[GTMAbstractDOListener allListeners] count]; - GTMAbstractDOListener *listener = - [[GTMAbstractDOListener alloc] initWithRegisteredName:@"FOO" - protocol:@protocol(NSObject) - port:[NSPort port]]; - STAssertNotNil(listener, nil); - - // We throw an autorelease pool here because allStores does a couple of - // autoreleased retains on us which would screws up our retain count - // numbers. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - STAssertEquals([[GTMAbstractDOListener allListeners] count], - listenerCount + 1, nil); - [pool drain]; - - if (!GTMIsGarbageCollectionEnabled()) { - // Not much point with GC on. - STAssertEquals([listener retainCount], (NSUInteger)1, nil); - } - - [listener release]; - if (!GTMIsGarbageCollectionEnabled()) { - STAssertEquals([[GTMAbstractDOListener allListeners] count], listenerCount, - nil); - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.h deleted file mode 100644 index 169b1c3c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.h +++ /dev/null @@ -1,183 +0,0 @@ -// -// GTMBase64.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// GTMBase64 -// -/// Helper for handling Base64 and WebSafeBase64 encodings -// -/// The webSafe methods use different character set and also the results aren't -/// always padded to a multiple of 4 characters. This is done so the resulting -/// data can be used in urls and url query arguments without needing any -/// encoding. You must use the webSafe* methods together, the data does not -/// interop with the RFC methods. -// -@interface GTMBase64 : NSObject - -// -// Standard Base64 (RFC) handling -// - -// encodeData: -// -/// Base64 encodes contents of the NSData object. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)encodeData:(NSData *)data; - -// decodeData: -// -/// Base64 decodes contents of the NSData object. -// -/// Returns: -/// A new autoreleased NSData with the decoded payload. nil for any error. -// -+(NSData *)decodeData:(NSData *)data; - -// encodeBytes:length: -// -/// Base64 encodes the data pointed at by |bytes|. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length; - -// decodeBytes:length: -// -/// Base64 decodes the data pointed at by |bytes|. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length; - -// stringByEncodingData: -// -/// Base64 encodes contents of the NSData object. -// -/// Returns: -/// A new autoreleased NSString with the encoded payload. nil for any error. -// -+(NSString *)stringByEncodingData:(NSData *)data; - -// stringByEncodingBytes:length: -// -/// Base64 encodes the data pointed at by |bytes|. -// -/// Returns: -/// A new autoreleased NSString with the encoded payload. nil for any error. -// -+(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length; - -// decodeString: -// -/// Base64 decodes contents of the NSString. -// -/// Returns: -/// A new autoreleased NSData with the decoded payload. nil for any error. -// -+(NSData *)decodeString:(NSString *)string; - -// -// Modified Base64 encoding so the results can go onto urls. -// -// The changes are in the characters generated and also allows the result to -// not be padded to a multiple of 4. -// Must use the matching call to encode/decode, won't interop with the -// RFC versions. -// - -// webSafeEncodeData:padded: -// -/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES -/// then padding characters are added so the result length is a multiple of 4. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)webSafeEncodeData:(NSData *)data - padded:(BOOL)padded; - -// webSafeDecodeData: -// -/// WebSafe Base64 decodes contents of the NSData object. -// -/// Returns: -/// A new autoreleased NSData with the decoded payload. nil for any error. -// -+(NSData *)webSafeDecodeData:(NSData *)data; - -// webSafeEncodeBytes:length:padded: -// -/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES -/// then padding characters are added so the result length is a multiple of 4. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)webSafeEncodeBytes:(const void *)bytes - length:(NSUInteger)length - padded:(BOOL)padded; - -// webSafeDecodeBytes:length: -// -/// WebSafe Base64 decodes the data pointed at by |bytes|. -// -/// Returns: -/// A new autoreleased NSData with the encoded payload. nil for any error. -// -+(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length; - -// stringByWebSafeEncodingData:padded: -// -/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES -/// then padding characters are added so the result length is a multiple of 4. -// -/// Returns: -/// A new autoreleased NSString with the encoded payload. nil for any error. -// -+(NSString *)stringByWebSafeEncodingData:(NSData *)data - padded:(BOOL)padded; - -// stringByWebSafeEncodingBytes:length:padded: -// -/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES -/// then padding characters are added so the result length is a multiple of 4. -// -/// Returns: -/// A new autoreleased NSString with the encoded payload. nil for any error. -// -+(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes - length:(NSUInteger)length - padded:(BOOL)padded; - -// webSafeDecodeString: -// -/// WebSafe Base64 decodes contents of the NSString. -// -/// Returns: -/// A new autoreleased NSData with the decoded payload. nil for any error. -// -+(NSData *)webSafeDecodeString:(NSString *)string; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.m deleted file mode 100644 index 9f9ffbfc..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64.m +++ /dev/null @@ -1,694 +0,0 @@ -// -// GTMBase64.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMBase64.h" -#import "GTMDefines.h" - -static const char *kBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static const char *kWebSafeBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; -static const char kBase64PaddingChar = '='; -static const char kBase64InvalidChar = 99; - -static const char kBase64DecodeChars[] = { - // This array was generated by the following code: - // #include - // #include - // #include - // main() - // { - // static const char Base64[] = - // "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - // char *pos; - // int idx, i, j; - // printf(" "); - // for (i = 0; i < 255; i += 8) { - // for (j = i; j < i + 8; j++) { - // pos = strchr(Base64, j); - // if ((pos == NULL) || (j == 0)) - // idx = 99; - // else - // idx = pos - Base64; - // if (idx == 99) - // printf(" %2d, ", idx); - // else - // printf(" %2d/*%c*/,", idx, j); - // } - // printf("\n "); - // } - // } - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 62/*+*/, 99, 99, 99, 63/*/ */, - 52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/, - 60/*8*/, 61/*9*/, 99, 99, 99, 99, 99, 99, - 99, 0/*A*/, 1/*B*/, 2/*C*/, 3/*D*/, 4/*E*/, 5/*F*/, 6/*G*/, - 7/*H*/, 8/*I*/, 9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/, - 15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/, - 23/*X*/, 24/*Y*/, 25/*Z*/, 99, 99, 99, 99, 99, - 99, 26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/, - 33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/, - 41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/, - 49/*x*/, 50/*y*/, 51/*z*/, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99 -}; - -static const char kWebSafeBase64DecodeChars[] = { - // This array was generated by the following code: - // #include - // #include - // #include - // main() - // { - // static const char Base64[] = - // "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; - // char *pos; - // int idx, i, j; - // printf(" "); - // for (i = 0; i < 255; i += 8) { - // for (j = i; j < i + 8; j++) { - // pos = strchr(Base64, j); - // if ((pos == NULL) || (j == 0)) - // idx = 99; - // else - // idx = pos - Base64; - // if (idx == 99) - // printf(" %2d, ", idx); - // else - // printf(" %2d/*%c*/,", idx, j); - // } - // printf("\n "); - // } - // } - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 62/*-*/, 99, 99, - 52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/, - 60/*8*/, 61/*9*/, 99, 99, 99, 99, 99, 99, - 99, 0/*A*/, 1/*B*/, 2/*C*/, 3/*D*/, 4/*E*/, 5/*F*/, 6/*G*/, - 7/*H*/, 8/*I*/, 9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/, - 15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/, - 23/*X*/, 24/*Y*/, 25/*Z*/, 99, 99, 99, 99, 63/*_*/, - 99, 26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/, - 33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/, - 41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/, - 49/*x*/, 50/*y*/, 51/*z*/, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99 -}; - - -// Tests a character to see if it's a whitespace character. -// -// Returns: -// YES if the character is a whitespace character. -// NO if the character is not a whitespace character. -// -GTM_INLINE BOOL IsSpace(unsigned char c) { - // we use our own mapping here because we don't want anything w/ locale - // support. - static BOOL kSpaces[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, // 0-9 - 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 10-19 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20-29 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, // 30-39 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40-49 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50-59 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60-69 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70-79 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 80-89 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 90-99 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 100-109 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 110-119 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 120-129 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 130-139 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 140-149 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 150-159 - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160-169 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170-179 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 180-189 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 190-199 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 200-209 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 210-219 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 220-229 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 230-239 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 240-249 - 0, 0, 0, 0, 0, 1, // 250-255 - }; - return kSpaces[c]; -} - -// Calculate how long the data will be once it's base64 encoded. -// -// Returns: -// The guessed encoded length for a source length -// -GTM_INLINE NSUInteger CalcEncodedLength(NSUInteger srcLen, BOOL padded) { - NSUInteger intermediate_result = 8 * srcLen + 5; - NSUInteger len = intermediate_result / 6; - if (padded) { - len = ((len + 3) / 4) * 4; - } - return len; -} - -// Tries to calculate how long the data will be once it's base64 decoded. -// Unlike the above, this is always an upperbound, since the source data -// could have spaces and might end with the padding characters on them. -// -// Returns: -// The guessed decoded length for a source length -// -GTM_INLINE NSUInteger GuessDecodedLength(NSUInteger srcLen) { - return (srcLen + 3) / 4 * 3; -} - - -@interface GTMBase64 (PrivateMethods) - -+(NSData *)baseEncode:(const void *)bytes - length:(NSUInteger)length - charset:(const char *)charset - padded:(BOOL)padded; - -+(NSData *)baseDecode:(const void *)bytes - length:(NSUInteger)length - charset:(const char*)charset - requirePadding:(BOOL)requirePadding; - -+(NSUInteger)baseEncode:(const char *)srcBytes - srcLen:(NSUInteger)srcLen - destBytes:(char *)destBytes - destLen:(NSUInteger)destLen - charset:(const char *)charset - padded:(BOOL)padded; - -+(NSUInteger)baseDecode:(const char *)srcBytes - srcLen:(NSUInteger)srcLen - destBytes:(char *)destBytes - destLen:(NSUInteger)destLen - charset:(const char *)charset - requirePadding:(BOOL)requirePadding; - -@end - - -@implementation GTMBase64 - -// -// Standard Base64 (RFC) handling -// - -+(NSData *)encodeData:(NSData *)data { - return [self baseEncode:[data bytes] - length:[data length] - charset:kBase64EncodeChars - padded:YES]; -} - -+(NSData *)decodeData:(NSData *)data { - return [self baseDecode:[data bytes] - length:[data length] - charset:kBase64DecodeChars - requirePadding:YES]; -} - -+(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length { - return [self baseEncode:bytes - length:length - charset:kBase64EncodeChars - padded:YES]; -} - -+(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length { - return [self baseDecode:bytes - length:length - charset:kBase64DecodeChars - requirePadding:YES]; -} - -+(NSString *)stringByEncodingData:(NSData *)data { - NSString *result = nil; - NSData *converted = [self baseEncode:[data bytes] - length:[data length] - charset:kBase64EncodeChars - padded:YES]; - if (converted) { - result = [[[NSString alloc] initWithData:converted - encoding:NSASCIIStringEncoding] autorelease]; - } - return result; -} - -+(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length { - NSString *result = nil; - NSData *converted = [self baseEncode:bytes - length:length - charset:kBase64EncodeChars - padded:YES]; - if (converted) { - result = [[[NSString alloc] initWithData:converted - encoding:NSASCIIStringEncoding] autorelease]; - } - return result; -} - -+(NSData *)decodeString:(NSString *)string { - NSData *result = nil; - NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding]; - if (data) { - result = [self baseDecode:[data bytes] - length:[data length] - charset:kBase64DecodeChars - requirePadding:YES]; - } - return result; -} - -// -// Modified Base64 encoding so the results can go onto urls. -// -// The changes are in the characters generated and also the result isn't -// padded to a multiple of 4. -// Must use the matching call to encode/decode, won't interop with the -// RFC versions. -// - -+(NSData *)webSafeEncodeData:(NSData *)data - padded:(BOOL)padded { - return [self baseEncode:[data bytes] - length:[data length] - charset:kWebSafeBase64EncodeChars - padded:padded]; -} - -+(NSData *)webSafeDecodeData:(NSData *)data { - return [self baseDecode:[data bytes] - length:[data length] - charset:kWebSafeBase64DecodeChars - requirePadding:NO]; -} - -+(NSData *)webSafeEncodeBytes:(const void *)bytes - length:(NSUInteger)length - padded:(BOOL)padded { - return [self baseEncode:bytes - length:length - charset:kWebSafeBase64EncodeChars - padded:padded]; -} - -+(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length { - return [self baseDecode:bytes - length:length - charset:kWebSafeBase64DecodeChars - requirePadding:NO]; -} - -+(NSString *)stringByWebSafeEncodingData:(NSData *)data - padded:(BOOL)padded { - NSString *result = nil; - NSData *converted = [self baseEncode:[data bytes] - length:[data length] - charset:kWebSafeBase64EncodeChars - padded:padded]; - if (converted) { - result = [[[NSString alloc] initWithData:converted - encoding:NSASCIIStringEncoding] autorelease]; - } - return result; -} - -+(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes - length:(NSUInteger)length - padded:(BOOL)padded { - NSString *result = nil; - NSData *converted = [self baseEncode:bytes - length:length - charset:kWebSafeBase64EncodeChars - padded:padded]; - if (converted) { - result = [[[NSString alloc] initWithData:converted - encoding:NSASCIIStringEncoding] autorelease]; - } - return result; -} - -+(NSData *)webSafeDecodeString:(NSString *)string { - NSData *result = nil; - NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding]; - if (data) { - result = [self baseDecode:[data bytes] - length:[data length] - charset:kWebSafeBase64DecodeChars - requirePadding:NO]; - } - return result; -} - -@end - -@implementation GTMBase64 (PrivateMethods) - -// -// baseEncode:length:charset:padded: -// -// Does the common lifting of creating the dest NSData. it creates & sizes the -// data for the results. |charset| is the characters to use for the encoding -// of the data. |padding| controls if the encoded data should be padded to a -// multiple of 4. -// -// Returns: -// an autorelease NSData with the encoded data, nil if any error. -// -+(NSData *)baseEncode:(const void *)bytes - length:(NSUInteger)length - charset:(const char *)charset - padded:(BOOL)padded { - // how big could it be? - NSUInteger maxLength = CalcEncodedLength(length, padded); - // make space - NSMutableData *result = [NSMutableData data]; - [result setLength:maxLength]; - // do it - NSUInteger finalLength = [self baseEncode:bytes - srcLen:length - destBytes:[result mutableBytes] - destLen:[result length] - charset:charset - padded:padded]; - if (finalLength) { - _GTMDevAssert(finalLength == maxLength, @"how did we calc the length wrong?"); - } else { - // shouldn't happen, this means we ran out of space - result = nil; - } - return result; -} - -// -// baseDecode:length:charset:requirePadding: -// -// Does the common lifting of creating the dest NSData. it creates & sizes the -// data for the results. |charset| is the characters to use for the decoding -// of the data. -// -// Returns: -// an autorelease NSData with the decoded data, nil if any error. -// -// -+(NSData *)baseDecode:(const void *)bytes - length:(NSUInteger)length - charset:(const char *)charset - requirePadding:(BOOL)requirePadding { - // could try to calculate what it will end up as - NSUInteger maxLength = GuessDecodedLength(length); - // make space - NSMutableData *result = [NSMutableData data]; - [result setLength:maxLength]; - // do it - NSUInteger finalLength = [self baseDecode:bytes - srcLen:length - destBytes:[result mutableBytes] - destLen:[result length] - charset:charset - requirePadding:requirePadding]; - if (finalLength) { - if (finalLength != maxLength) { - // resize down to how big it was - [result setLength:finalLength]; - } - } else { - // either an error in the args, or we ran out of space - result = nil; - } - return result; -} - -// -// baseEncode:srcLen:destBytes:destLen:charset:padded: -// -// Encodes the buffer into the larger. returns the length of the encoded -// data, or zero for an error. -// |charset| is the characters to use for the encoding -// |padded| tells if the result should be padded to a multiple of 4. -// -// Returns: -// the length of the encoded data. zero if any error. -// -+(NSUInteger)baseEncode:(const char *)srcBytes - srcLen:(NSUInteger)srcLen - destBytes:(char *)destBytes - destLen:(NSUInteger)destLen - charset:(const char *)charset - padded:(BOOL)padded { - if (!srcLen || !destLen || !srcBytes || !destBytes) { - return 0; - } - - char *curDest = destBytes; - const unsigned char *curSrc = (const unsigned char *)(srcBytes); - - // Three bytes of data encodes to four characters of cyphertext. - // So we can pump through three-byte chunks atomically. - while (srcLen > 2) { - // space? - _GTMDevAssert(destLen >= 4, @"our calc for encoded length was wrong"); - curDest[0] = charset[curSrc[0] >> 2]; - curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)]; - curDest[2] = charset[((curSrc[1] & 0x0f) << 2) + (curSrc[2] >> 6)]; - curDest[3] = charset[curSrc[2] & 0x3f]; - - curDest += 4; - curSrc += 3; - srcLen -= 3; - destLen -= 4; - } - - // now deal with the tail (<=2 bytes) - switch (srcLen) { - case 0: - // Nothing left; nothing more to do. - break; - case 1: - // One byte left: this encodes to two characters, and (optionally) - // two pad characters to round out the four-character cypherblock. - _GTMDevAssert(destLen >= 2, @"our calc for encoded length was wrong"); - curDest[0] = charset[curSrc[0] >> 2]; - curDest[1] = charset[(curSrc[0] & 0x03) << 4]; - curDest += 2; - destLen -= 2; - if (padded) { - _GTMDevAssert(destLen >= 2, @"our calc for encoded length was wrong"); - curDest[0] = kBase64PaddingChar; - curDest[1] = kBase64PaddingChar; - curDest += 2; - } - break; - case 2: - // Two bytes left: this encodes to three characters, and (optionally) - // one pad character to round out the four-character cypherblock. - _GTMDevAssert(destLen >= 3, @"our calc for encoded length was wrong"); - curDest[0] = charset[curSrc[0] >> 2]; - curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)]; - curDest[2] = charset[(curSrc[1] & 0x0f) << 2]; - curDest += 3; - destLen -= 3; - if (padded) { - _GTMDevAssert(destLen >= 1, @"our calc for encoded length was wrong"); - curDest[0] = kBase64PaddingChar; - curDest += 1; - } - break; - } - // return the length - return (curDest - destBytes); -} - -// -// baseDecode:srcLen:destBytes:destLen:charset:requirePadding: -// -// Decodes the buffer into the larger. returns the length of the decoded -// data, or zero for an error. -// |charset| is the character decoding buffer to use -// -// Returns: -// the length of the encoded data. zero if any error. -// -+(NSUInteger)baseDecode:(const char *)srcBytes - srcLen:(NSUInteger)srcLen - destBytes:(char *)destBytes - destLen:(NSUInteger)destLen - charset:(const char *)charset - requirePadding:(BOOL)requirePadding { - if (!srcLen || !destLen || !srcBytes || !destBytes) { - return 0; - } - - int decode; - NSUInteger destIndex = 0; - int state = 0; - char ch = 0; - while (srcLen-- && (ch = *srcBytes++) != 0) { - if (IsSpace(ch)) // Skip whitespace - continue; - - if (ch == kBase64PaddingChar) - break; - - decode = charset[(unsigned int)ch]; - if (decode == kBase64InvalidChar) - return 0; - - // Four cyphertext characters decode to three bytes. - // Therefore we can be in one of four states. - switch (state) { - case 0: - // We're at the beginning of a four-character cyphertext block. - // This sets the high six bits of the first byte of the - // plaintext block. - _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong"); - destBytes[destIndex] = decode << 2; - state = 1; - break; - case 1: - // We're one character into a four-character cyphertext block. - // This sets the low two bits of the first plaintext byte, - // and the high four bits of the second plaintext byte. - _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong"); - destBytes[destIndex] |= decode >> 4; - destBytes[destIndex+1] = (decode & 0x0f) << 4; - destIndex++; - state = 2; - break; - case 2: - // We're two characters into a four-character cyphertext block. - // This sets the low four bits of the second plaintext - // byte, and the high two bits of the third plaintext byte. - // However, if this is the end of data, and those two - // bits are zero, it could be that those two bits are - // leftovers from the encoding of data that had a length - // of two mod three. - _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong"); - destBytes[destIndex] |= decode >> 2; - destBytes[destIndex+1] = (decode & 0x03) << 6; - destIndex++; - state = 3; - break; - case 3: - // We're at the last character of a four-character cyphertext block. - // This sets the low six bits of the third plaintext byte. - _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong"); - destBytes[destIndex] |= decode; - destIndex++; - state = 0; - break; - } - } - - // We are done decoding Base-64 chars. Let's see if we ended - // on a byte boundary, and/or with erroneous trailing characters. - if (ch == kBase64PaddingChar) { // We got a pad char - if ((state == 0) || (state == 1)) { - return 0; // Invalid '=' in first or second position - } - if (srcLen == 0) { - if (state == 2) { // We run out of input but we still need another '=' - return 0; - } - // Otherwise, we are in state 3 and only need this '=' - } else { - if (state == 2) { // need another '=' - while ((ch = *srcBytes++) && (srcLen-- > 0)) { - if (!IsSpace(ch)) - break; - } - if (ch != kBase64PaddingChar) { - return 0; - } - } - // state = 1 or 2, check if all remain padding is space - while ((ch = *srcBytes++) && (srcLen-- > 0)) { - if (!IsSpace(ch)) { - return 0; - } - } - } - } else { - // We ended by seeing the end of the string. - - if (requirePadding) { - // If we require padding, then anything but state 0 is an error. - if (state != 0) { - return 0; - } - } else { - // Make sure we have no partial bytes lying around. Note that we do not - // require trailing '=', so states 2 and 3 are okay too. - if (state == 1) { - return 0; - } - } - } - - // If then next piece of output was valid and got written to it means we got a - // very carefully crafted input that appeared valid but contains some trailing - // bits past the real length, so just toss the thing. - if ((destIndex < destLen) && - (destBytes[destIndex] != 0)) { - return 0; - } - - return destIndex; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64Test.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64Test.m deleted file mode 100644 index 084ea1e0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMBase64Test.m +++ /dev/null @@ -1,437 +0,0 @@ -// -// GTMBase64Test.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMBase64.h" -#include // for randiom/srandomdev - -static void FillWithRandom(char *data, NSUInteger len) { - char *max = data + len; - for ( ; data < max ; ++data) { - *data = random() & 0xFF; - } -} - -static BOOL NoEqualChar(NSData *data) { - const char *scan = [data bytes]; - const char *max = scan + [data length]; - for ( ; scan < max ; ++scan) { - if (*scan == '=') { - return NO; - } - } - return YES; -} - -@interface GTMBase64Test : GTMTestCase -@end - -@implementation GTMBase64Test - -- (void)setUp { - // seed random from /dev/random - srandomdev(); -} - -- (void)testBase64 { - // generate a range of sizes w/ random content - for (int x = 1 ; x < 1024 ; ++x) { - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:x]; - FillWithRandom([data mutableBytes], [data length]); - - // w/ *Bytes apis - NSData *encoded = [GTMBase64 encodeBytes:[data bytes] length:[data length]]; - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - NSData *dataPrime = [GTMBase64 decodeBytes:[encoded bytes] - length:[encoded length]]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Bytes apis"); - - // w/ *Data apis - encoded = [GTMBase64 encodeData:data]; - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - dataPrime = [GTMBase64 decodeData:encoded]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Data apis"); - - // Bytes to String and back - NSString *encodedString = [GTMBase64 stringByEncodingBytes:[data bytes] - length:[data length]]; - STAssertEquals(([encodedString length] % 4), (NSUInteger)0, - @"encoded size for Bytes to Strings should be a multiple of 4"); - dataPrime = [GTMBase64 decodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Bytes to Strings"); - - // Data to String and back - encodedString = [GTMBase64 stringByEncodingData:data]; - STAssertEquals(([encodedString length] % 4), (NSUInteger)0, - @"encoded size for Data to Strings should be a multiple of 4"); - dataPrime = [GTMBase64 decodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Bytes to Strings"); - } - - { - // now test all byte values - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:256]; - unsigned char *scan = (unsigned char*)[data mutableBytes]; - for (int x = 0 ; x <= 255 ; ++x) { - *scan++ = x; - } - - // w/ *Bytes apis - NSData *encoded = [GTMBase64 encodeBytes:[data bytes] length:[data length]]; - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - NSData *dataPrime = [GTMBase64 decodeBytes:[encoded bytes] - length:[encoded length]]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Bytes apis"); - - // w/ *Data apis - encoded = [GTMBase64 encodeData:data]; - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - dataPrime = [GTMBase64 decodeData:encoded]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Data apis"); - - // Bytes to String and back - NSString *encodedString = [GTMBase64 stringByEncodingBytes:[data bytes] - length:[data length]]; - STAssertEquals(([encodedString length] % 4), (NSUInteger)0, - @"encoded size for Bytes to Strings should be a multiple of 4"); - dataPrime = [GTMBase64 decodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Bytes to Strings"); - - // Data to String and back - encodedString = [GTMBase64 stringByEncodingData:data]; - STAssertEquals(([encodedString length] % 4), (NSUInteger)0, - @"encoded size for Data to Strings should be a multiple of 4"); - dataPrime = [GTMBase64 decodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Data to Strings"); - } - - { - // test w/ a mix of spacing characters - - // generate some data, encode it, and add spaces - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:253]; // should get some padding chars on the end - FillWithRandom([data mutableBytes], [data length]); - - NSString *encodedString = [GTMBase64 stringByEncodingData:data]; - NSMutableString *encodedAndSpaced = - [[encodedString mutableCopy] autorelease]; - - NSString *spaces[] = { @"\t", @"\n", @"\r", @" " }; - const NSUInteger numSpaces = sizeof(spaces) / sizeof(NSString*); - for (int x = 0 ; x < 512 ; ++x) { - NSUInteger offset = random() % ([encodedAndSpaced length] + 1); - [encodedAndSpaced insertString:spaces[random() % numSpaces] - atIndex:offset]; - } - - // we'll need it as data for apis - NSData *encodedAsData = - [encodedAndSpaced dataUsingEncoding:NSASCIIStringEncoding]; - STAssertNotNil(encodedAsData, @"failed to extract from string"); - STAssertEquals([encodedAsData length], [encodedAndSpaced length], - @"lengths for encoded string and data didn't match?"); - - // all the decode modes - NSData *dataPrime = [GTMBase64 decodeData:encodedAsData]; - STAssertEqualObjects(data, dataPrime, - @"failed Data decode w/ spaces"); - dataPrime = [GTMBase64 decodeBytes:[encodedAsData bytes] - length:[encodedAsData length]]; - STAssertEqualObjects(data, dataPrime, - @"failed Bytes decode w/ spaces"); - dataPrime = [GTMBase64 decodeString:encodedAndSpaced]; - STAssertEqualObjects(data, dataPrime, - @"failed String decode w/ spaces"); - } -} - -- (void)testWebSafeBase64 { - // loop to test w/ and w/o padding - for (int paddedLoop = 0; paddedLoop < 2 ; ++paddedLoop) { - BOOL padded = (paddedLoop == 1); - - // generate a range of sizes w/ random content - for (int x = 1 ; x < 1024 ; ++x) { - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:x]; - FillWithRandom([data mutableBytes], [data length]); - - // w/ *Bytes apis - NSData *encoded = [GTMBase64 webSafeEncodeBytes:[data bytes] - length:[data length] - padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via *Bytes apis had a base64 padding char"); - } - NSData *dataPrime = [GTMBase64 webSafeDecodeBytes:[encoded bytes] - length:[encoded length]]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Bytes apis"); - - // w/ *Data apis - encoded = [GTMBase64 webSafeEncodeData:data padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via *Data apis had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeData:encoded]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Data apis"); - - // Bytes to String and back - NSString *encodedString = - [GTMBase64 stringByWebSafeEncodingBytes:[data bytes] - length:[data length] - padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via Bytes to Strings had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Bytes to Strings"); - - // Data to String and back - encodedString = - [GTMBase64 stringByWebSafeEncodingData:data padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via Data to Strings had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Data to Strings"); - } - - { - // now test all byte values - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:256]; - unsigned char *scan = (unsigned char*)[data mutableBytes]; - for (int x = 0 ; x <= 255 ; ++x) { - *scan++ = x; - } - - // w/ *Bytes apis - NSData *encoded = - [GTMBase64 webSafeEncodeBytes:[data bytes] - length:[data length] - padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via *Bytes apis had a base64 padding char"); - } - NSData *dataPrime = [GTMBase64 webSafeDecodeBytes:[encoded bytes] - length:[encoded length]]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Bytes apis"); - - // w/ *Data apis - encoded = [GTMBase64 webSafeEncodeData:data padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via *Data apis had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeData:encoded]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Data apis"); - - // Bytes to String and back - NSString *encodedString = - [GTMBase64 stringByWebSafeEncodingBytes:[data bytes] - length:[data length] - padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Bytes apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via Bytes to Strings had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Bytes to Strings"); - - // Data to String and back - encodedString = - [GTMBase64 stringByWebSafeEncodingData:data padded:padded]; - if (padded) { - STAssertEquals(([encoded length] % 4), (NSUInteger)0, - @"encoded size via *Data apis should be a multiple of 4"); - } else { - STAssertTrue(NoEqualChar(encoded), - @"encoded via Data to Strings had a base64 padding char"); - } - dataPrime = [GTMBase64 webSafeDecodeString:encodedString]; - STAssertEqualObjects(data, dataPrime, - @"failed to round trip for Data to Strings"); - } - - { - // test w/ a mix of spacing characters - - // generate some data, encode it, and add spaces - NSMutableData *data = [NSMutableData data]; - STAssertNotNil(data, @"failed to alloc data block"); - - [data setLength:253]; // should get some padding chars on the end - FillWithRandom([data mutableBytes], [data length]); - - NSString *encodedString = [GTMBase64 stringByWebSafeEncodingData:data - padded:padded]; - NSMutableString *encodedAndSpaced = - [[encodedString mutableCopy] autorelease]; - - NSString *spaces[] = { @"\t", @"\n", @"\r", @" " }; - const NSUInteger numSpaces = sizeof(spaces) / sizeof(NSString*); - for (int x = 0 ; x < 512 ; ++x) { - NSUInteger offset = random() % ([encodedAndSpaced length] + 1); - [encodedAndSpaced insertString:spaces[random() % numSpaces] - atIndex:offset]; - } - - // we'll need it as data for apis - NSData *encodedAsData = - [encodedAndSpaced dataUsingEncoding:NSASCIIStringEncoding]; - STAssertNotNil(encodedAsData, @"failed to extract from string"); - STAssertEquals([encodedAsData length], [encodedAndSpaced length], - @"lengths for encoded string and data didn't match?"); - - // all the decode modes - NSData *dataPrime = [GTMBase64 webSafeDecodeData:encodedAsData]; - STAssertEqualObjects(data, dataPrime, - @"failed Data decode w/ spaces"); - dataPrime = [GTMBase64 webSafeDecodeBytes:[encodedAsData bytes] - length:[encodedAsData length]]; - STAssertEqualObjects(data, dataPrime, - @"failed Bytes decode w/ spaces"); - dataPrime = [GTMBase64 webSafeDecodeString:encodedAndSpaced]; - STAssertEqualObjects(data, dataPrime, - @"failed String decode w/ spaces"); - } - } // paddedLoop -} - -- (void)testErrors { - const int something = 0; - NSString *nonAscString = [NSString stringWithUTF8String:"This test ©™®๒०᠐٧"]; - - STAssertNil([GTMBase64 encodeData:nil], @"it worked?"); - STAssertNil([GTMBase64 decodeData:nil], @"it worked?"); - STAssertNil([GTMBase64 encodeBytes:NULL length:10], @"it worked?"); - STAssertNil([GTMBase64 encodeBytes:&something length:0], @"it worked?"); - STAssertNil([GTMBase64 decodeBytes:NULL length:10], @"it worked?"); - STAssertNil([GTMBase64 decodeBytes:&something length:0], @"it worked?"); - STAssertNil([GTMBase64 stringByEncodingData:nil], @"it worked?"); - STAssertNil([GTMBase64 stringByEncodingBytes:NULL length:10], @"it worked?"); - STAssertNil([GTMBase64 stringByEncodingBytes:&something length:0], @"it worked?"); - STAssertNil([GTMBase64 decodeString:nil], @"it worked?"); - // test some pads at the end that aren't right - STAssertNil([GTMBase64 decodeString:@"=="], @"it worked?"); // just pads - STAssertNil([GTMBase64 decodeString:@"vw="], @"it worked?"); // missing pad (in state 2) - STAssertNil([GTMBase64 decodeString:@"vw"], @"it worked?"); // missing pad (in state 2) - STAssertNil([GTMBase64 decodeString:@"NNw"], @"it worked?"); // missing pad (in state 3) - STAssertNil([GTMBase64 decodeString:@"vw=v"], @"it worked?"); // missing pad, has something else - STAssertNil([GTMBase64 decodeString:@"v="], @"it worked?"); // missing a needed char, has pad instead - STAssertNil([GTMBase64 decodeString:@"v"], @"it worked?"); // missing a needed char - STAssertNil([GTMBase64 decodeString:@"vw== vw"], @"it worked?"); - STAssertNil([GTMBase64 decodeString:nonAscString], @"it worked?"); - STAssertNil([GTMBase64 decodeString:@"@@@not valid###"], @"it worked?"); - // carefully crafted bad input to make sure we don't overwalk - STAssertNil([GTMBase64 decodeString:@"WD=="], @"it worked?"); - - STAssertNil([GTMBase64 webSafeEncodeData:nil padded:YES], @"it worked?"); - STAssertNil([GTMBase64 webSafeDecodeData:nil], @"it worked?"); - STAssertNil([GTMBase64 webSafeEncodeBytes:NULL length:10 padded:YES], - @"it worked?"); - STAssertNil([GTMBase64 webSafeEncodeBytes:&something length:0 padded:YES], - @"it worked?"); - STAssertNil([GTMBase64 webSafeDecodeBytes:NULL length:10], @"it worked?"); - STAssertNil([GTMBase64 webSafeDecodeBytes:&something length:0], @"it worked?"); - STAssertNil([GTMBase64 stringByWebSafeEncodingData:nil padded:YES], - @"it worked?"); - STAssertNil([GTMBase64 stringByWebSafeEncodingBytes:NULL - length:10 - padded:YES], - @"it worked?"); - STAssertNil([GTMBase64 stringByWebSafeEncodingBytes:&something - length:0 - padded:YES], - @"it worked?"); - STAssertNil([GTMBase64 webSafeDecodeString:nil], @"it worked?"); - // test some pads at the end that aren't right - STAssertNil([GTMBase64 webSafeDecodeString:@"=="], @"it worked?"); // just pad chars - STAssertNil([GTMBase64 webSafeDecodeString:@"aw="], @"it worked?"); // missing pad - STAssertNil([GTMBase64 webSafeDecodeString:@"aw=a"], @"it worked?"); // missing pad, has something else - STAssertNil([GTMBase64 webSafeDecodeString:@"a"], @"it worked?"); // missing a needed char - STAssertNil([GTMBase64 webSafeDecodeString:@"a="], @"it worked?"); // missing a needed char, has pad instead - STAssertNil([GTMBase64 webSafeDecodeString:@"aw== a"], @"it worked?"); // missing pad - STAssertNil([GTMBase64 webSafeDecodeString:nonAscString], @"it worked?"); - STAssertNil([GTMBase64 webSafeDecodeString:@"@@@not valid###"], @"it worked?"); - // carefully crafted bad input to make sure we don't overwalk - STAssertNil([GTMBase64 webSafeDecodeString:@"WD=="], @"it worked?"); - - // make sure our local helper is working right - STAssertFalse(NoEqualChar([NSData dataWithBytes:"aa=zz" length:5]), @""); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.h deleted file mode 100644 index 5710da61..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.h +++ /dev/null @@ -1,102 +0,0 @@ -// -// GTMCalculatedRange.h -// -// This is a collection that allows you to calculate a value based on -// defined stops in a range. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -/// Allows you to calculate a value based on defined stops in a range. -// -/// For example if you have a range from 0.0 to 1.0 where the stop -/// located at 0.0 is red and the stop located at 1.0 is blue, -/// the value based on the position 0.5 would come out as purple assuming -/// that the valueAtPosition function calculates a purely linear mapping between -/// the stops at 0.0 and 1.0. Stops have indices and are sorted from lowest to -/// highest. The example above would have 2 stops. Stop 0 would be red and stop -/// 1 would be blue. -/// -/// Subclasses of GTMCalculatedRange are expected to override the valueAtPosition: -/// method to return a value based on the position passed in, and the stops -/// that are currently set in the range. Stops do not necessarily have to -/// be the same type as the values that are calculated, but normally they are. -@interface GTMCalculatedRange : NSObject { - NSMutableArray *storage_; -} - -// Adds a stop to the range at |position|. If there is already a stop -// at position |position| it is replaced. -// -// Args: -// item: the object to place at |position|. -// position: the position in the range to put |item|. -// -- (void)insertStop:(id)item atPosition:(CGFloat)position; - -// Removes a stop from the range at |position|. -// -// Args: -// position: the position in the range to remove |item|. -// -// Returns: -// YES if there is a stop at |position| that has been removed -// NO if there is not a stop at the |position| -- (BOOL)removeStopAtPosition:(CGFloat)position; - -// Removes stop |index| from the range. Stops are ordered -// based on position where index of x < index of y if position -// of x < position of y. -// -// Args: -// item: the object to place at |position|. -// position: the position in the range to put |item|. -// -- (void)removeStopAtIndex:(NSUInteger)index; - -// Returns the number of stops in the range. -// -// Returns: -// number of stops -- (NSUInteger)stopCount; - -// Returns the value at position |position|. -// This function should be overridden by subclasses to calculate a -// value for any given range. -// The default implementation returns a value if there happens to be -// a stop for the given position. Otherwise it returns nil. -// -// Args: -// position: the position to calculate a value for. -// -// Returns: -// value for position -- (id)valueAtPosition:(CGFloat)position; - -// Returns the |index|'th stop and position in the set. -// Throws an exception if out of range. -// -// Args: -// index: the index of the stop -// outPosition: a pointer to a value to be filled in with a position. -// this can be NULL, in which case no position is returned. -// -// Returns: -// the stop at the index. -- (id)stopAtIndex:(NSUInteger)index position:(CGFloat*)outPosition; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.m deleted file mode 100644 index 5ab491d8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRange.m +++ /dev/null @@ -1,148 +0,0 @@ -// -// GTMCalculatedRange.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMCalculatedRange.h" - -// Our internal storage type. It keeps track of an item and it's -// position. -@interface GTMCalculatedRangeStopPrivate : NSObject { - id item_; // the item (STRONG) - CGFloat position_; // -} -+ (id)stopWithObject:(id)item position:(CGFloat)inPosition; -- (id)initWithObject:(id)item position:(CGFloat)inPosition; -- (id)item; -- (CGFloat)position; -@end - -GTM_INLINE BOOL FPEqual(CGFloat a, CGFloat b) { - return (fpclassify(a - b) == FP_ZERO); -} - -@implementation GTMCalculatedRangeStopPrivate -+ (id)stopWithObject:(id)item position:(CGFloat)inPosition { - return [[[[self class] alloc] initWithObject:item position:inPosition] autorelease]; -} - -- (id)initWithObject:(id)item position:(CGFloat)inPosition { - self = [super init]; - if (self != nil) { - item_ = [item retain]; - position_ = inPosition; - } - return self; -} - -- (void)dealloc { - [item_ release]; - [super dealloc]; -} - -- (id)item { - return item_; -} - -- (CGFloat)position { - return position_; -} - -- (NSString *)description { - return [NSString stringWithFormat: @"%f %@", position_, item_]; -} -@end - -@implementation GTMCalculatedRange -- (id)init { - self = [super init]; - if (self != nil) { - storage_ = [[NSMutableArray arrayWithCapacity:0] retain]; - } - return self; -} -- (void)dealloc { - [storage_ release]; - [super dealloc]; -} - -- (void)insertStop:(id)item atPosition:(CGFloat)position { - NSUInteger positionIndex = 0; - GTMCalculatedRangeStopPrivate *theStop; - GTM_FOREACH_OBJECT(theStop, storage_) { - if ([theStop position] < position) { - positionIndex += 1; - } - else if (FPEqual([theStop position], position)) { - // remove and stop the enum since we just modified the object - [storage_ removeObjectAtIndex:positionIndex]; - break; - } - } - [storage_ insertObject:[GTMCalculatedRangeStopPrivate stopWithObject:item position:position] - atIndex:positionIndex]; -} - -- (BOOL)removeStopAtPosition:(CGFloat)position { - NSUInteger positionIndex = 0; - BOOL foundStop = NO; - GTMCalculatedRangeStopPrivate *theStop; - GTM_FOREACH_OBJECT(theStop, storage_) { - if (FPEqual([theStop position], position)) { - break; - } else { - positionIndex += 1; - } - } - if (nil != theStop) { - [self removeStopAtIndex:positionIndex]; - foundStop = YES; - } - return foundStop; -} - -- (void)removeStopAtIndex:(NSUInteger)positionIndex { - [storage_ removeObjectAtIndex:positionIndex]; -} - -- (NSUInteger)stopCount { - return [storage_ count]; -} - -- (id)stopAtIndex:(NSUInteger)positionIndex position:(CGFloat*)outPosition { - GTMCalculatedRangeStopPrivate *theStop = [storage_ objectAtIndex:positionIndex]; - if (nil != outPosition) { - *outPosition = [theStop position]; - } - return [theStop item]; -} - -- (id)valueAtPosition:(CGFloat)position { - id theValue = nil; - GTMCalculatedRangeStopPrivate *theStop; - GTM_FOREACH_OBJECT(theStop, storage_) { - if (FPEqual([theStop position], position)) { - theValue = [theStop item]; - break; - } - } - return theValue; -} - -- (NSString *)description { - return [storage_ description]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRangeTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRangeTest.m deleted file mode 100644 index 1790072a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMCalculatedRangeTest.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// GTMCalculatedRangeTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMCalculatedRange.h" -#import "GTMSenTestCase.h" - -@interface GTMCalculatedRangeTest : GTMTestCase { - GTMCalculatedRange *range_; -} -@end - -@implementation GTMCalculatedRangeTest -NSString *kStrings[] = { @"Fee", @"Fi", @"Fo", @"Fum" }; -const NSUInteger kStringCount = sizeof(kStrings) / sizeof(NSString*); -const CGFloat kOddPosition = 0.14159265f; -const CGFloat kExistingPosition = 0.5f; -const NSUInteger kExisitingIndex = 2; - -- (void)setUp { - range_ = [[GTMCalculatedRange alloc] init]; - for(NSUInteger i = kStringCount; i > 0; --i) { - [range_ insertStop:kStrings[kStringCount - i] atPosition: 1.0f / i]; - } -} - -- (void)tearDown { - [range_ release]; -} - -- (void)testInsertStop { - // new position - NSString *theString = @"I smell the blood of an Englishman!"; - [range_ insertStop:theString atPosition:kOddPosition]; - STAssertEquals([range_ stopCount], kStringCount + 1, @"Stop count was bad"); - NSString *getString = [range_ valueAtPosition:kOddPosition]; - STAssertNotNil(getString, @"String was bad"); - STAssertEquals(theString, getString, @"Stops weren't equal"); - // existing position - NSString *theStringTake2 = @"I smell the blood of an Englishman! Take 2"; - [range_ insertStop:theStringTake2 atPosition:kOddPosition]; - STAssertEquals([range_ stopCount], kStringCount + 1, @"Stop count was bad"); - getString = [range_ valueAtPosition:kOddPosition]; - STAssertNotNil(getString, @"String was bad"); - STAssertEquals(theStringTake2, getString, @"Stops weren't equal"); - STAssertNotEquals(theString, getString, @"Should be the new value"); - STAssertNotEqualObjects(theString, getString, @"Should be the new value"); -} - -- (void)testRemoveStopAtPosition { - STAssertFalse([range_ removeStopAtPosition: kOddPosition], @"Was able to remove non-existant stop"); - STAssertTrue([range_ removeStopAtPosition: kExistingPosition], @"Was unable to remove good stop"); - STAssertEquals([range_ stopCount], kStringCount - 1, @"Removing stop should adjust stop count"); -} - -- (void)testRemoveStopAtIndex { - STAssertThrows([range_ removeStopAtIndex: kStringCount], @"Was able to remove non-existant stop"); - STAssertNoThrow([range_ removeStopAtIndex: kStringCount - 1], @"Was unable to remove good stop"); - STAssertEquals([range_ stopCount], kStringCount - 1, @"Removing stop should adjust stop count"); -} - -- (void)testStopCount { - STAssertEquals([range_ stopCount], kStringCount, @"Bad stop count"); -} - -- (void)testValueAtPosition { - STAssertEqualObjects([range_ valueAtPosition: kExistingPosition], kStrings[kExisitingIndex], nil); - STAssertNotEqualObjects([range_ valueAtPosition: kExistingPosition], kStrings[kStringCount - 1], nil); - STAssertNil([range_ valueAtPosition: kOddPosition], nil); -} - -- (void)testStopAtIndex { - CGFloat thePosition; - - STAssertEqualObjects([range_ stopAtIndex:kStringCount - 1 position:nil], kStrings[kStringCount - 1], nil); - STAssertEqualObjects([range_ stopAtIndex:kExisitingIndex position:&thePosition], kStrings[kExisitingIndex], nil); - STAssertEquals(thePosition, kExistingPosition, nil); - STAssertNotEqualObjects([range_ stopAtIndex:kStringCount - 1 position:nil], kStrings[2], nil); - STAssertThrows([range_ stopAtIndex:kStringCount position:nil], nil); -} - -- (void)testDescription { - // we expect a description of atleast a few chars - STAssertGreaterThan([[range_ description] length], (NSUInteger)10, nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.h deleted file mode 100644 index ce30db99..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// GTMExceptionalInlines.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// This file exists because when you have full warnings on you can run into -// troubles with functions that Apple has inlined that have structures or -// local variables defined in them. -// You only see this warning if you have -Wuninitialized turned on, -// and you will only see them in release mode. -Wno-unitialized turns them -// off, but you also lose all the good warnings that come with -Wuninitialized. -// If you have the inline versions of any of the functions below in a -// @syncronized, or @try block, you will get -// warning: variable 'r' might be clobbered by 'longjmp' or 'vfork' -// By moving this local vars "out of line" you fix the problem. -// These functions do nothing more than act as "out of line" calls to the -// functions they are masking to avoid the warning. -// If you run into others, feel free to add them. - -// Please only use these to avoid the warning above. Use the Apple defined -// functions where possible. - -FOUNDATION_EXPORT NSRange GTMNSMakeRange(NSUInteger loc, NSUInteger len); -FOUNDATION_EXPORT CFRange GTMCFRangeMake(NSUInteger loc, NSUInteger len); - -FOUNDATION_EXPORT CGPoint GTMCGPointMake(CGFloat x, CGFloat y); -FOUNDATION_EXPORT CGSize GTMCGSizeMake(CGFloat width, CGFloat height); -FOUNDATION_EXPORT CGRect GTMCGRectMake(CGFloat x, CGFloat y, - CGFloat width, CGFloat height); - -#if !GTM_IPHONE_SDK -// iPhone does not have NSTypes defined, only CGTypes. So no NSRect, NSPoint etc. -FOUNDATION_EXPORT NSPoint GTMNSMakePoint(CGFloat x, CGFloat y); -FOUNDATION_EXPORT NSSize GTMNSMakeSize(CGFloat w, CGFloat h); -FOUNDATION_EXPORT NSRect GTMNSMakeRect(CGFloat x, CGFloat y, - CGFloat w, CGFloat h); -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.m deleted file mode 100644 index d803ea9d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlines.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// GTMExceptionalInlines.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMExceptionalInlines.h" - -NSRange GTMNSMakeRange(NSUInteger loc, NSUInteger len) { - return NSMakeRange(loc, len); -} - -CFRange GTMCFRangeMake(NSUInteger loc, NSUInteger len) { - return CFRangeMake(loc, len); -} - -CGPoint GTMCGPointMake(CGFloat x, CGFloat y) { - return CGPointMake(x, y); -} - -CGSize GTMCGSizeMake(CGFloat width, CGFloat height) { - return CGSizeMake(width, height); -} - -CGRect GTMCGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height) { - return CGRectMake(x, y, width, height); -} - -#if !GTM_IPHONE_SDK -// iPhone does not have NSTypes defined, only CGTypes. So no NSRect, NSPoint etc. - -NSPoint GTMNSMakePoint(CGFloat x, CGFloat y) { - return NSMakePoint(x, y); -} - -NSSize GTMNSMakeSize(CGFloat w, CGFloat h) { - return NSMakeSize(w, h); -} - -NSRect GTMNSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) { - return NSMakeRect(x, y, w, h); -} - -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlinesTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlinesTest.m deleted file mode 100644 index 61422362..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMExceptionalInlinesTest.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// GTMExceptionalInlinesTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMExceptionalInlines.h" - -@interface GTMExceptionalInlinesTest : GTMTestCase -@end - -@implementation GTMExceptionalInlinesTest -- (void)testExceptionalInlines { - // Numbers chosen basically at random. - NSUInteger loc = 5; - NSUInteger len = 10; - CGFloat x = 22.5; - CGFloat y = 40.2; - CGFloat h = 21.6; - CGFloat w = 54.2; - - NSRange range1 = GTMNSMakeRange(loc, len); - NSRange range2 = NSMakeRange(loc, len); - STAssertTrue(NSEqualRanges(range1, range2), nil); - - CFRange cfrange1 = GTMCFRangeMake(loc, len); - CFRange cfrange2 = CFRangeMake(loc, len); - STAssertEquals(cfrange1.length, cfrange2.length, nil); - STAssertEquals(cfrange1.location, cfrange2.location, nil); - - - CGPoint cgpoint1 = GTMCGPointMake(x, y); - CGPoint cgpoint2 = CGPointMake(x, y); - STAssertTrue(CGPointEqualToPoint(cgpoint1, cgpoint2), nil); - - CGSize cgsize1 = GTMCGSizeMake(x, y); - CGSize cgsize2 = CGSizeMake(x, y); - STAssertTrue(CGSizeEqualToSize(cgsize1, cgsize2), nil); - - CGRect cgrect1 = GTMCGRectMake(x, y, w, h); - CGRect cgrect2 = CGRectMake(x, y, w, h); - STAssertTrue(CGRectEqualToRect(cgrect1, cgrect2), nil); - -#if !GTM_IPHONE_SDK - NSPoint point1 = GTMNSMakePoint(x, y); - NSPoint point2 = NSMakePoint(x, y); - STAssertTrue(NSEqualPoints(point1, point2), nil); - - NSSize size1 = GTMNSMakeSize(w, h); - NSSize size2 = NSMakeSize(w, h); - STAssertTrue(NSEqualSizes(size1, size2), nil); - - NSRect rect1 = GTMNSMakeRect(x, y, w, h); - NSRect rect2 = NSMakeRect(x, y, w, h); - STAssertTrue(NSEqualRects(rect1, rect2), nil); -#endif -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.h deleted file mode 100644 index a81d433e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.h +++ /dev/null @@ -1,78 +0,0 @@ -// -// GTMFileSystemKQueue.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -#import // for kqueue() and kevent and the NOTE_* constants - -// Event constants -enum { - kGTMFileSystemKQueueDeleteEvent = NOTE_DELETE, - kGTMFileSystemKQueueWriteEvent = NOTE_WRITE, - kGTMFileSystemKQueueExtendEvent = NOTE_EXTEND, - kGTMFileSystemKQueueAttributeChangeEvent = NOTE_ATTRIB, - kGTMFileSystemKQueueLinkChangeEvent = NOTE_LINK, - kGTMFileSystemKQueueRenameEvent = NOTE_RENAME, - kGTMFileSystemKQueueRevokeEvent = NOTE_REVOKE, - kGTMFileSystemKQueueAllEvents = NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | - NOTE_ATTRIB | NOTE_LINK | NOTE_RENAME | - NOTE_REVOKE, -}; -typedef unsigned int GTMFileSystemKQueueEvents; - -// GTMFileSystemKQueue. -// -// This is a very simple, easy-to-use class for registering handlers that get -// called when a events happen to a given file system path. -// -// The default runloop for the first path kqueued is used for notification -// delivery, so keep that in mind when you're using this class. This class -// explicitly does not handle arbitrary runloops and threading. -// -@interface GTMFileSystemKQueue : NSObject { - @private - NSString *path_; - int fd_; - GTMFileSystemKQueueEvents events_; - BOOL acrossReplace_; - __weak id target_; - SEL action_; -} - -// |path| is the full path to monitor. |events| is a combination of events -// listed above that you want notification of. |acrossReplace| will cause this -// object to reattach when a the file is deleted & recreated or moved out of the -// way and a new one put in place. |selector| should be of the signature: -// - (void)fileSystemKQueue:(GTMFileSystemKQueue *)fskq -// events:(GTMFileSystemKQueueEvents)events; -// where the events can be one or more of the events listed above ORed together. -// -// NOTE: |acrossReplace| is not fool proof. If the file is renamed/deleted, -// then the object will make one attempt at the time it gets the rename/delete -// to reopen the file. If the new file has not been created, no more action is -// taken. To handle the file coming into existance later, you need to monitor -// the directory in some other way. -- (id)initWithPath:(NSString *)path - forEvents:(GTMFileSystemKQueueEvents)events - acrossReplace:(BOOL)acrossReplace - target:(id)target - action:(SEL)action; - -- (NSString *)path; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.m deleted file mode 100644 index ad516f70..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueue.m +++ /dev/null @@ -1,259 +0,0 @@ -// -// GTMFileSystemKQueue.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMFileSystemKQueue.h" -#import -#import "GTMDefines.h" -#import "GTMDebugSelectorValidation.h" - - -// File descriptor for the kqueue that will hold all of our file system events. -static int gFileSystemKQueueFileDescriptor = 0; - -// A wrapper around the kqueue file descriptor so we can put it into a -// runloop. -static CFSocketRef gRunLoopSocket = NULL; - - -@interface GTMFileSystemKQueue (PrivateMethods) -- (void)notify:(GTMFileSystemKQueueEvents)eventFFlags; -- (void)addFileDescriptorMonitor:(int)fd; -- (int)registerWithKQueue; -- (void)unregisterWithKQueue; -@end - - -@implementation GTMFileSystemKQueue - --(id)init { - // Folks shouldn't call init directly, so they get what they deserve. - _GTMDevLog(@"Don't call init, use " - @"initWithPath:forEvents:acrossReplace:target:action:"); - return [self initWithPath:nil forEvents:0 acrossReplace:NO - target:nil action:nil]; -} - - -- (id)initWithPath:(NSString *)path - forEvents:(GTMFileSystemKQueueEvents)events - acrossReplace:(BOOL)acrossReplace - target:(id)target - action:(SEL)action { - - if ((self = [super init])) { - - fd_ = -1; - path_ = [path copy]; - events_ = events; - acrossReplace_ = acrossReplace; - - target_ = target; // Don't retain since target will most likely retain us. - action_ = action; - if ([path_ length] == 0 || !events_ || !target_ || !action_) { - [self release]; - return nil; - } - - // Make sure it imples what we expect - GTMAssertSelectorNilOrImplementedWithArguments(target_, - action_, - @encode(GTMFileSystemKQueue*), - @encode(GTMFileSystemKQueueEvents), - NULL); - - fd_ = [self registerWithKQueue]; - if (fd_ < 0) { - [self release]; - return nil; - } - } - return self; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - [self unregisterWithKQueue]; - - [super finalize]; -} -#endif - -- (void)dealloc { - [self unregisterWithKQueue]; - [path_ release]; - - [super dealloc]; -} - -- (NSString *)path { - return path_; -} - -// Cribbed from Advanced Mac OS X Programming. -static void SocketCallBack(CFSocketRef socketref, CFSocketCallBackType type, - CFDataRef address, const void *data, void *info) { - // We're using CFRunLoop calls here. Even when used on the main thread, they - // don't trigger the draining of the main application's autorelease pool that - // NSRunLoop provides. If we're used in a UI-less app, this means that - // autoreleased objects would never go away, so we provide our own pool here. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - struct kevent event; - - if (kevent(gFileSystemKQueueFileDescriptor, NULL, 0, &event, 1, NULL) == -1) { - _GTMDevLog(@"could not pick up kqueue event. Errno %d", errno); // COV_NF_LINE - } else { - GTMFileSystemKQueue *fskq = (GTMFileSystemKQueue *)event.udata; - [fskq notify:event.fflags]; - } - - [pool drain]; -} - -// Cribbed from Advanced Mac OS X Programming -- (void)addFileDescriptorMonitor:(int)fd { - _GTMDevAssert(gRunLoopSocket == NULL, @"socket should be NULL at this point"); - - CFSocketContext context = { 0, NULL, NULL, NULL, NULL }; - gRunLoopSocket = CFSocketCreateWithNative(kCFAllocatorDefault, - fd, - kCFSocketReadCallBack, - SocketCallBack, - &context); - if (gRunLoopSocket == NULL) { - _GTMDevLog(@"could not CFSocketCreateWithNative"); // COV_NF_LINE - goto bailout; // COV_NF_LINE - } - - CFRunLoopSourceRef rls; - rls = CFSocketCreateRunLoopSource(NULL, gRunLoopSocket, 0); - if (rls == NULL) { - _GTMDevLog(@"could not create a run loop source"); // COV_NF_LINE - goto bailout; // COV_NF_LINE - } - - CFRunLoopAddSource(CFRunLoopGetCurrent(), rls, - kCFRunLoopDefaultMode); - CFRelease(rls); - - bailout: - return; - -} - -// Returns the FD we got in registering -- (int)registerWithKQueue { - - // Make sure we have our kqueue. - if (gFileSystemKQueueFileDescriptor == 0) { - gFileSystemKQueueFileDescriptor = kqueue(); - - if (gFileSystemKQueueFileDescriptor == -1) { - // COV_NF_START - _GTMDevLog(@"could not make filesystem kqueue. Errno %d", errno); - return -1; - // COV_NF_END - } - - // Add the kqueue file descriptor to the runloop. - [self addFileDescriptorMonitor:gFileSystemKQueueFileDescriptor]; - } - - int newFD = open([path_ fileSystemRepresentation], O_EVTONLY, 0); - if (newFD >= 0) { - - // Add a new event for the file. - struct kevent filter; - EV_SET(&filter, newFD, EVFILT_VNODE, EV_ADD | EV_ENABLE | EV_CLEAR, - events_, 0, self); - - const struct timespec noWait = { 0, 0 }; - if (kevent(gFileSystemKQueueFileDescriptor, &filter, 1, NULL, 0, &noWait) == -1) { - // COV_NF_START - _GTMDevLog(@"could not add event for path %@. Errno %d", path_, errno); - close(newFD); - newFD = -1; - // COV_NF_END - } - } - - return newFD; -} - -- (void)unregisterWithKQueue { - // Short-circuit cases where we didn't actually register a kqueue event. - if (fd_ < 0) return; - - struct kevent filter; - EV_SET(&filter, fd_, EVFILT_VNODE, EV_DELETE, 0, 0, self); - - const struct timespec noWait = { 0, 0 }; - if (kevent(gFileSystemKQueueFileDescriptor, &filter, 1, NULL, 0, &noWait) != 0) { - _GTMDevLog(@"could not remove event for path %@. Errno %d", path_, errno); // COV_NF_LINE - } - - // Now close the file down - close(fd_); - fd_ = -1; -} - - -- (void)notify:(GTMFileSystemKQueueEvents)eventFFlags { - - // Some notifications get a little bit of overhead first - - if (eventFFlags & NOTE_REVOKE) { - // COV_NF_START - no good way to do this in a unittest - // Assume revoke means unmount and give up - [self unregisterWithKQueue]; - // COV_NF_END - } - - if (eventFFlags & NOTE_DELETE) { - [self unregisterWithKQueue]; - if (acrossReplace_) { - fd_ = [self registerWithKQueue]; - } - } - - if (eventFFlags & NOTE_RENAME) { - // If we're doing it across replace, we move to the new fd for the new file - // that might have come onto the path. if we aren't doing accross replace, - // nothing to do, just stay on the file. - if (acrossReplace_) { - int newFD = [self registerWithKQueue]; - if (newFD >= 0) { - [self unregisterWithKQueue]; - fd_ = newFD; - } - } - } - - // Now, fire the selector - NSMethodSignature *methodSig = [target_ methodSignatureForSelector:action_]; - _GTMDevAssert(methodSig != nil, @"failed to get the signature?"); - NSInvocation *invocation - = [NSInvocation invocationWithMethodSignature:methodSig]; - [invocation setTarget:target_]; - [invocation setSelector:action_]; - [invocation setArgument:self atIndex:2]; - [invocation setArgument:&eventFFlags atIndex:3]; - [invocation invoke]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueueTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueueTest.m deleted file mode 100644 index c2ded100..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFileSystemKQueueTest.m +++ /dev/null @@ -1,394 +0,0 @@ -// -// GTMFileSystemKQueueTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMFileSystemKQueue.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMFileSystemKQueueTest : GTMTestCase { - @private - NSString *testPath_; - NSString *testPath2_; -} -@end - - -// Helper class to serve as callback target of the kqueue test -@interface GTMFSKQTestHelper : NSObject { - @private - int writes_, renames_, deletes_; -} -@end - -@implementation GTMFSKQTestHelper - -- (void)callbackForQueue:(GTMFileSystemKQueue *)queue - events:(GTMFileSystemKQueueEvents)event { - if (event & kGTMFileSystemKQueueWriteEvent) { - ++writes_; - } - if (event & kGTMFileSystemKQueueDeleteEvent) { - ++deletes_; - } - if (event & kGTMFileSystemKQueueRenameEvent) { - ++renames_; - } -} -- (int)totals { - return writes_ + renames_ + deletes_; -} -- (int)writes { - return writes_; -} -- (int)renames { - return renames_; -} -- (int)deletes { - return deletes_; -} -@end - - -@implementation GTMFileSystemKQueueTest - -- (void)setUp { - NSString *temp = NSTemporaryDirectory(); - testPath_ - = [[temp stringByAppendingPathComponent: - @"GTMFileSystemKQueueTest.testfile"] retain]; - testPath2_ = [[testPath_ stringByAppendingPathExtension:@"2"] retain]; - - // make sure the files aren't in the way of the test - NSFileManager *fm = [NSFileManager defaultManager]; - [fm removeFileAtPath:testPath_ handler:nil]; - [fm removeFileAtPath:testPath2_ handler:nil]; -} - -- (void)tearDown { - // make sure we clean up the files from a failed test - NSFileManager *fm = [NSFileManager defaultManager]; - [fm removeFileAtPath:testPath_ handler:nil]; - [fm removeFileAtPath:testPath2_ handler:nil]; - - [testPath_ release]; - testPath_ = nil; - [testPath2_ release]; - testPath2_ = nil; -} - -- (void)testInit { - GTMFileSystemKQueue *testKQ; - GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper, nil); - - // init should fail - [GTMUnitTestDevLog expectString:@"Don't call init, use " - @"initWithPath:forEvents:acrossReplace:target:action:"]; - testKQ = [[[GTMFileSystemKQueue alloc] init] autorelease]; - STAssertNil(testKQ, nil); - - // no path - testKQ - = [[[GTMFileSystemKQueue alloc] initWithPath:nil - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)] autorelease]; - STAssertNil(testKQ, nil); - - // not events - testKQ - = [[[GTMFileSystemKQueue alloc] initWithPath:@"/var/log/system.log" - forEvents:0 - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)] autorelease]; - STAssertNil(testKQ, nil); - - // no target - testKQ - = [[[GTMFileSystemKQueue alloc] initWithPath:@"/var/log/system.log" - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:nil - action:@selector(callbackForQueue:events:)] autorelease]; - STAssertNil(testKQ, nil); - - // no handler - testKQ - = [[[GTMFileSystemKQueue alloc] initWithPath:@"/var/log/system.log" - forEvents:0 - acrossReplace:YES - target:helper - action:nil] autorelease]; - STAssertNil(testKQ, nil); - - - // path that doesn't exist - testKQ - = [[[GTMFileSystemKQueue alloc] initWithPath:@"/path/that/does/not/exist" - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)] autorelease]; - STAssertNil(testKQ, nil); -} - -- (void)spinForEvents:(GTMFSKQTestHelper *)helper { - // Spin the runloop for a second so that the helper callbacks fire - unsigned int attempts = 0; - int initialTotals = [helper totals]; - while (([helper totals] == initialTotals) && (attempts < 10)) { // Try for up to 2s - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; - attempts++; - } -} - -- (void)testWriteAndDelete { - - NSFileManager *fm = [NSFileManager defaultManager]; - GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper, nil); - - STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil); - NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_]; - STAssertNotNil(testFH, nil); - - // Start monitoring the file - GTMFileSystemKQueue *testKQ - = [[GTMFileSystemKQueue alloc] initWithPath:testPath_ - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)]; - STAssertNotNil(testKQ, nil); - STAssertEqualObjects([testKQ path], testPath_, nil); - - // Write to the file - [testFH writeData:[@"doh!" dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 1, nil); - - // Close and delete - [testFH closeFile]; - STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil); - - [self spinForEvents:helper]; - STAssertEquals([helper totals], 2, nil); - - // Clean up the kqueue - [testKQ release]; - testKQ = nil; - - STAssertEquals([helper writes], 1, nil); - STAssertEquals([helper deletes], 1, nil); - STAssertEquals([helper renames], 0, nil); -} - -- (void)testWriteAndDeleteAndWrite { - - // One will pass YES to |acrossReplace|, the other will pass NO. - - NSFileManager *fm = [NSFileManager defaultManager]; - GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper, nil); - GTMFSKQTestHelper *helper2 = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper, nil); - - // Create a temp file path - STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil); - NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_]; - STAssertNotNil(testFH, nil); - - // Start monitoring the file - GTMFileSystemKQueue *testKQ - = [[GTMFileSystemKQueue alloc] initWithPath:testPath_ - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)]; - STAssertNotNil(testKQ, nil); - STAssertEqualObjects([testKQ path], testPath_, nil); - GTMFileSystemKQueue *testKQ2 - = [[GTMFileSystemKQueue alloc] initWithPath:testPath_ - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:NO - target:helper2 - action:@selector(callbackForQueue:events:)]; - STAssertNotNil(testKQ2, nil); - STAssertEqualObjects([testKQ2 path], testPath_, nil); - - // Write to the file - [testFH writeData:[@"doh!" dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 1, nil); - STAssertEquals([helper2 totals], 1, nil); - - // Close and delete - [testFH closeFile]; - STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil); - - // Recreate - STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil); - testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_]; - STAssertNotNil(testFH, nil); - [testFH writeData:[@"ha!" dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 2, nil); - STAssertEquals([helper2 totals], 2, nil); - - // Write to it again - [testFH writeData:[@"continued..." dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 3, nil); - STAssertEquals([helper2 totals], 2, nil); - - // Close and delete - [testFH closeFile]; - STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil); - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 4, nil); - STAssertEquals([helper2 totals], 2, nil); - - // Clean up the kqueue - [testKQ release]; - testKQ = nil; - [testKQ2 release]; - testKQ2 = nil; - - STAssertEquals([helper writes], 2, nil); - STAssertEquals([helper deletes], 2, nil); - STAssertEquals([helper renames], 0, nil); - STAssertEquals([helper2 writes], 1, nil); - STAssertEquals([helper2 deletes], 1, nil); - STAssertEquals([helper2 renames], 0, nil); -} - -- (void)testWriteAndRenameAndWrite { - - // One will pass YES to |acrossReplace|, the other will pass NO. - - NSFileManager *fm = [NSFileManager defaultManager]; - GTMFSKQTestHelper *helper = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper, nil); - GTMFSKQTestHelper *helper2 = [[[GTMFSKQTestHelper alloc] init] autorelease]; - STAssertNotNil(helper2, nil); - - // Create a temp file path - STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil); - NSFileHandle *testFH = [NSFileHandle fileHandleForWritingAtPath:testPath_]; - STAssertNotNil(testFH, nil); - - // Start monitoring the file - GTMFileSystemKQueue *testKQ - = [[GTMFileSystemKQueue alloc] initWithPath:testPath_ - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:YES - target:helper - action:@selector(callbackForQueue:events:)]; - STAssertNotNil(testKQ, nil); - STAssertEqualObjects([testKQ path], testPath_, nil); - GTMFileSystemKQueue *testKQ2 - = [[GTMFileSystemKQueue alloc] initWithPath:testPath_ - forEvents:kGTMFileSystemKQueueAllEvents - acrossReplace:NO - target:helper2 - action:@selector(callbackForQueue:events:)]; - STAssertNotNil(testKQ2, nil); - STAssertEqualObjects([testKQ2 path], testPath_, nil); - - // Write to the file - [testFH writeData:[@"doh!" dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 1, nil); - STAssertEquals([helper2 totals], 1, nil); - - // Move it and create the file again - STAssertTrue([fm movePath:testPath_ toPath:testPath2_ handler:nil], nil); - STAssertTrue([fm createFileAtPath:testPath_ contents:nil attributes:nil], nil); - NSFileHandle *testFHPrime - = [NSFileHandle fileHandleForWritingAtPath:testPath_]; - STAssertNotNil(testFHPrime, nil); - [testFHPrime writeData:[@"eh?" dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 2, nil); - STAssertEquals([helper2 totals], 2, nil); - - // Write to the new file - [testFHPrime writeData:[@"continue..." dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 3, nil); - STAssertEquals([helper2 totals], 2, nil); - - // Write to the old file - [testFH writeData:[@"continue old..." dataUsingEncoding:NSUnicodeStringEncoding]]; - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 3, nil); - STAssertEquals([helper2 totals], 3, nil); - - // and now close old - [testFH closeFile]; - STAssertTrue([fm removeFileAtPath:testPath2_ handler:nil], nil); - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 3, nil); - STAssertEquals([helper2 totals], 4, nil); - - // and now close new - [testFHPrime closeFile]; - STAssertTrue([fm removeFileAtPath:testPath_ handler:nil], nil); - - // Spin the runloop for a second so that the helper callbacks fire - [self spinForEvents:helper]; - STAssertEquals([helper totals], 4, nil); - STAssertEquals([helper2 totals], 4, nil); - - // Clean up the kqueue - [testKQ release]; - testKQ = nil; - [testKQ2 release]; - testKQ2 = nil; - - STAssertEquals([helper writes], 2, nil); - STAssertEquals([helper deletes], 1, nil); - STAssertEquals([helper renames], 1, nil); - STAssertEquals([helper2 writes], 2, nil); - STAssertEquals([helper2 deletes], 1, nil); - STAssertEquals([helper2 renames], 1, nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.h deleted file mode 100644 index 90853b54..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// GTMFourCharCode -// Wrapper for FourCharCodes -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// FourCharCodes are OSTypes, ResTypes etc. This class wraps them if -// you need to store them in dictionaries etc. -@interface GTMFourCharCode : NSObject { - FourCharCode code_; -} - -// returns a string for a FourCharCode -+ (id)stringWithFourCharCode:(FourCharCode)code; - -// String must be 4 chars or less, or you will get nil back. -+ (id)fourCharCodeWithString:(NSString*)string; -+ (id)fourCharCodeWithFourCharCode:(FourCharCode)code; - -// String must be 4 chars or less, or you will get nil back. -- (id)initWithString:(NSString*)string; - -// Designated Initializer -- (id)initWithFourCharCode:(FourCharCode)code; - -// Returns 'APPL' for "APPL" -- (FourCharCode)fourCharCode; - -// For FourCharCode of 'APPL' returns "APPL". For 1 returns "\0\0\0\1" -- (NSString*)stringValue; - -// For FourCharCode of "APPL" returns an NSNumber with 1095782476 (0x4150504C). -// For 1 returns 1. -- (NSNumber*)numberValue; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.m deleted file mode 100644 index f5a08bff..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCode.m +++ /dev/null @@ -1,98 +0,0 @@ -// -// GTMFourCharCode.m -// Wrapper for FourCharCodes -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import "GTMFourCharCode.h" -#import "GTMGarbageCollection.h" -#import - -@implementation GTMFourCharCode - -+ (id)stringWithFourCharCode:(FourCharCode)code { - return GTMCFAutorelease(UTCreateStringForOSType(code)); -} - -+ (id)fourCharCodeWithString:(NSString*)string { - return [[[self alloc] initWithString:string] autorelease]; -} - -+ (id)fourCharCodeWithFourCharCode:(FourCharCode)code { - return [[[self alloc] initWithFourCharCode:code] autorelease]; -} - -- (id)initWithString:(NSString*)string { - NSUInteger length = [string length]; - if (length == 0 || length > 4) { - [self release]; - return nil; - } else { - return [self initWithFourCharCode:UTGetOSTypeFromString((CFStringRef)string)]; - } -} - -- (id)initWithFourCharCode:(FourCharCode)code { - if ((self = [super init])) { - code_ = code; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)aDecoder { - if ((self = [super init])) { - code_ = [aDecoder decodeInt32ForKey:@"FourCharCode"]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder { - [aCoder encodeInt32:code_ forKey:@"FourCharCode"]; -} - -- (id)copyWithZone:(NSZone *)zone { - return [[[self class] alloc] initWithFourCharCode:code_]; -} - -- (BOOL)isEqual:(id)object { - return [object isKindOfClass:[self class]] && [object fourCharCode] == code_; -} - -- (NSUInteger)hash { - return (NSUInteger)code_; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@ - %@ (0x%X)", - [self class], - [self stringValue], - code_]; -} - -- (FourCharCode)fourCharCode { - return code_; -} - -- (NSString*)stringValue { - return GTMCFAutorelease(UTCreateStringForOSType(code_)); -} - -- (NSNumber*)numberValue { - return [NSNumber numberWithUnsignedInt:code_]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCodeTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCodeTest.m deleted file mode 100644 index f91b8f2b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMFourCharCodeTest.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// GTMFourCharCodeTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMFourCharCode.h" - -@interface GTMFourCharCodeTest : GTMTestCase -@end - -@implementation GTMFourCharCodeTest - -const FourCharCode kGTMHighMacOSRomanCode = 0xA5A8A9AA; // '•®©™' - -- (void)testFourCharCode { - GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithString:@"APPL"]; - STAssertNotNil(fcc, nil); - STAssertEqualObjects([fcc stringValue], @"APPL", nil); - STAssertEqualObjects([fcc numberValue], [NSNumber numberWithUnsignedInt:'APPL'], nil); - STAssertEquals([fcc fourCharCode], (FourCharCode)'APPL', nil); - - STAssertEqualObjects([fcc description], @"GTMFourCharCode - APPL (0x4150504C)", nil); - STAssertEquals([fcc hash], (NSUInteger)'APPL', nil); - - GTMFourCharCode *fcc2 = [GTMFourCharCode fourCharCodeWithFourCharCode:kGTMHighMacOSRomanCode]; - STAssertNotNil(fcc2, nil); - STAssertEqualObjects([fcc2 stringValue], @"•®©™", nil); - STAssertEqualObjects([fcc2 numberValue], [NSNumber numberWithUnsignedInt:kGTMHighMacOSRomanCode], nil); - STAssertEquals([fcc2 fourCharCode], (FourCharCode)kGTMHighMacOSRomanCode, nil); - - STAssertNotEqualObjects(fcc, fcc2, nil); - - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:fcc]; - STAssertNotNil(data, nil); - fcc2 = (GTMFourCharCode*)[NSKeyedUnarchiver unarchiveObjectWithData:data]; - STAssertNotNil(fcc2, nil); - STAssertEqualObjects(fcc, fcc2, nil); - - fcc = [[[GTMFourCharCode alloc] initWithFourCharCode:'\?\?\?\?'] autorelease]; - STAssertNotNil(fcc, nil); - STAssertEqualObjects([fcc stringValue], @"????", nil); - STAssertEqualObjects([fcc numberValue], [NSNumber numberWithUnsignedInt:'\?\?\?\?'], nil); - STAssertEquals([fcc fourCharCode], (FourCharCode)'\?\?\?\?', nil); - - fcc = [[[GTMFourCharCode alloc] initWithString:@"????"] autorelease]; - STAssertNotNil(fcc, nil); - STAssertEqualObjects([fcc stringValue], @"????", nil); - STAssertEqualObjects([fcc numberValue], [NSNumber numberWithUnsignedInt:'\?\?\?\?'], nil); - STAssertEquals([fcc fourCharCode], (FourCharCode)'\?\?\?\?', nil); - - fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:1]; - STAssertNotNil(fcc, nil); - STAssertEqualObjects([fcc stringValue], @"\0\0\0\1", nil); - STAssertEqualObjects([fcc numberValue], [NSNumber numberWithUnsignedInt:1], nil); - STAssertEquals([fcc fourCharCode], (FourCharCode)1, nil); - - - fcc = [GTMFourCharCode fourCharCodeWithString:@"BADDSTRING"]; - STAssertNil(fcc, nil); -} - -- (void)testStringWithCode { - STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:'APPL'], @"APPL", nil); - STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:1], @"\0\0\0\1", nil); - STAssertEqualObjects([GTMFourCharCode stringWithFourCharCode:kGTMHighMacOSRomanCode], @"•®©™", nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGarbageCollection.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGarbageCollection.h deleted file mode 100644 index 93d4efab..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGarbageCollection.h +++ /dev/null @@ -1,72 +0,0 @@ -// -// GTMGarbageCollection.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - -#import "GTMDefines.h" - -// This allows us to easily move our code from GC to non GC. -// They are no-ops unless we are require Leopard or above. -// See -// http://developer.apple.com/documentation/Cocoa/Conceptual/GarbageCollection/index.html -// and -// http://developer.apple.com/documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcCoreFoundation.html#//apple_ref/doc/uid/TP40006687-SW1 -// for details. - -#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) && !GTM_IPHONE_SDK -// General use would be to call this through GTMCFAutorelease -// but there may be a reason the you want to make something collectable -// but not autoreleased, especially in pure GC code where you don't -// want to bother with the nop autorelease. Done as a define instead of an -// inline so that tools like Clang's scan-build don't report code as leaking. -#define GTMNSMakeCollectable(cf) ((id)NSMakeCollectable(cf)) - -// GTMNSMakeUncollectable is for global maps, etc. that we don't -// want released ever. You should still retain these in non-gc code. -GTM_INLINE void GTMNSMakeUncollectable(id object) { - [[NSGarbageCollector defaultCollector] disableCollectorForPointer:object]; -} - -// Hopefully no code really needs this, but GTMIsGarbageCollectionEnabled is -// a common way to check at runtime if GC is on. -// There are some places where GC doesn't work w/ things w/in Apple's -// frameworks, so this is here so GTM unittests and detect it, and not run -// individual tests to work around bugs in Apple's frameworks. -GTM_INLINE BOOL GTMIsGarbageCollectionEnabled(void) { - return ([NSGarbageCollector defaultCollector] != nil); -} - -#else - -#define GTMNSMakeCollectable(cf) ((id)(cf)) - -GTM_INLINE void GTMNSMakeUncollectable(id object) { -} - -GTM_INLINE BOOL GTMIsGarbageCollectionEnabled(void) { - return NO; -} - -#endif - -// GTMCFAutorelease makes a CF object collectable in GC mode, or adds it -// to the autorelease pool in non-GC mode. Either way it is taken care -// of. Done as a define instead of an inline so that tools like Clang's -// scan-build don't report code as leaking. -#define GTMCFAutorelease(cf) ([GTMNSMakeCollectable(cf) autorelease]) - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.h deleted file mode 100644 index c3d6b1af..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.h +++ /dev/null @@ -1,452 +0,0 @@ -// -// GTMGeometryUtils.h -// -// Utilities for geometrical utilities such as conversions -// between different types. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -enum { - GTMScaleProportionally = 0, // Fit proportionally - GTMScaleToFit, // Forced fit (distort if necessary) - GTMScaleNone, // Don't scale (clip) - GTMScaleToFillProportionally = 101 // Scale proportionally to fill area -}; -typedef NSUInteger GTMScaling; - -enum { - GTMRectAlignCenter = 0, - GTMRectAlignTop, - GTMRectAlignTopLeft, - GTMRectAlignTopRight, - GTMRectAlignLeft, - GTMRectAlignBottom, - GTMRectAlignBottomLeft, - GTMRectAlignBottomRight, - GTMRectAlignRight -}; -typedef NSUInteger GTMRectAlignment; - -#pragma mark - -#pragma mark CG - Point On Rect -/// Return middle of min X side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of min X side of rect -GTM_INLINE CGPoint GTMCGMidMinX(CGRect rect) { - return CGPointMake(CGRectGetMinX(rect), CGRectGetMidY(rect)); -} - -/// Return middle of max X side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of max X side of rect -GTM_INLINE CGPoint GTMCGMidMaxX(CGRect rect) { - return CGPointMake(CGRectGetMaxX(rect), CGRectGetMidY(rect)); -} - -/// Return middle of max Y side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of max Y side of rect -GTM_INLINE CGPoint GTMCGMidMaxY(CGRect rect) { - return CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect)); -} - -/// Return middle of min Y side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of min Y side of rect -GTM_INLINE CGPoint GTMCGMidMinY(CGRect rect) { - return CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect)); -} - -/// Return center of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the center of rect -GTM_INLINE CGPoint GTMCGCenter(CGRect rect) { - return CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)); -} - -#pragma mark - -#pragma mark CG - Rect-Size Conversion - -/// Return size of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// size of rectangle -GTM_INLINE CGSize GTMCGRectSize(CGRect rect) { - return CGSizeMake(CGRectGetWidth(rect), CGRectGetHeight(rect)); -} - -/// Return rectangle of size -// -// Args: -// size - size -// -// Returns: -// rectangle of size (origin 0,0) -GTM_INLINE CGRect GTMCGRectOfSize(CGSize size) { - return CGRectMake(0.0f, 0.0f, size.width, size.height); -} - -#pragma mark - -#pragma mark CG - Rect Scaling and Alignment - -/// Scales an CGRect -// -// Args: -// inRect: Rect to scale -// xScale: fraction to scale (1.0 is 100%) -// yScale: fraction to scale (1.0 is 100%) -// -// Returns: -// Converted Rect -GTM_INLINE CGRect GTMCGRectScale(CGRect inRect, CGFloat xScale, CGFloat yScale) { - return CGRectMake(inRect.origin.x, inRect.origin.y, - inRect.size.width * xScale, inRect.size.height * yScale); -} - - -/// Align rectangles -// -// Args: -// alignee - rect to be aligned -// aligner - rect to be aligned from -// alignment - way to align the rectangles -CGRect GTMCGAlignRectangles(CGRect alignee, CGRect aligner, - GTMRectAlignment alignment); -/// Scale rectangle -// -// Args: -// scalee - rect to be scaled -// size - size to scale to -// scaling - way to scale the rectangle -CGRect GTMCGScaleRectangleToSize(CGRect scalee, CGSize size, - GTMScaling scaling); - -#pragma mark - -#pragma mark CG - Miscellaneous - -/// Calculate the distance between two points. -// -// Args: -// pt1 first point -// pt2 second point -// -// Returns: -// Distance -GTM_INLINE CGFloat GTMCGDistanceBetweenPoints(CGPoint pt1, CGPoint pt2) { - CGFloat dX = pt1.x - pt2.x; - CGFloat dY = pt1.y - pt2.y; -#if CGFLOAT_IS_DOUBLE - return sqrt(dX * dX + dY * dY); -#else - return sqrtf(dX * dX + dY * dY); -#endif -} - -#if !GTM_IPHONE_SDK -// iPhone does not have NSTypes defined, only CGTypes. So no NSRect, NSPoint etc. - -#pragma mark - -// All of the conversion routines below are basically copied from the -// NSGeometry header in the 10.5 sdk. - -#pragma mark NS <-> CG Point Conversion - -/// Quickly convert from a CGPoint to a NSPoint. -// -/// CGPoints are relative to 0,0 in lower left; -/// NSPoints are relative to 0,0 in lower left -// -// Args: -// inPoint: CGPoint to convert -// -// Returns: -// Converted NSPoint -GTM_INLINE NSPoint GTMCGPointToNSPoint(CGPoint inPoint) { - _GTMCompileAssert(sizeof(NSPoint) == sizeof(CGPoint), NSPoint_and_CGPoint_must_be_the_same_size); - union convertUnion {NSPoint ns; CGPoint cg;}; - return ((union convertUnion *)&inPoint)->ns; -} - -/// Quickly convert from a NSPoint to a CGPoint. -// -/// CGPoints are relative to 0,0 in lower left; -/// NSPoints are relative to 0,0 in lower left -// -// Args: -// inPoint: NSPoint to convert -// -// Returns: -// Converted CGPoint -GTM_INLINE CGPoint GTMNSPointToCGPoint(NSPoint inPoint) { - _GTMCompileAssert(sizeof(NSPoint) == sizeof(CGPoint), NSPoint_and_CGPoint_must_be_the_same_size); - union convertUnion {NSPoint ns; CGPoint cg;}; - return ((union convertUnion *)&inPoint)->cg; -} - -#pragma mark - -#pragma mark NS <-> CG Rect Conversion - -/// Convert from a CGRect to a NSRect. -// -/// NSRect are relative to 0,0 in lower left; -/// CGRect are relative to 0,0 in lower left -// -// Args: -// inRect: CGRect to convert -// -// Returns: -// Converted NSRect -GTM_INLINE NSRect GTMCGRectToNSRect(CGRect inRect) { - _GTMCompileAssert(sizeof(NSRect) == sizeof(CGRect), NSRect_and_CGRect_must_be_the_same_size); - union convertUnion {NSRect ns; CGRect cg;}; - return ((union convertUnion *)&inRect)->ns; -} - -/// Convert from a NSRect to a CGRect. -// -/// NSRect are relative to 0,0 in lower left; -/// CGRect are relative to 0,0 in lower left -// -// Args: -// inRect: NSRect to convert -// -// Returns: -// Converted CGRect -GTM_INLINE CGRect GTMNSRectToCGRect(NSRect inRect) { - _GTMCompileAssert(sizeof(NSRect) == sizeof(CGRect), NSRect_and_CGRect_must_be_the_same_size); - union convertUnion {NSRect ns; CGRect cg;}; - return ((union convertUnion *)&inRect)->cg; -} - - -#pragma mark - -#pragma mark NS <-> CG Size Conversion - -/// Convert from a CGSize to an NSSize. -// -// Args: -// inSize: CGSize to convert -// -// Returns: -// Converted NSSize -GTM_INLINE NSSize GTMCGSizeToNSSize(CGSize inSize) { - _GTMCompileAssert(sizeof(NSSize) == sizeof(CGSize), NSSize_and_CGSize_must_be_the_same_size); - union convertUnion {NSSize ns; CGSize cg;}; - return ((union convertUnion *)&inSize)->ns; -} - -/// Convert from a NSSize to a CGSize. -// -// Args: -// inSize: NSSize to convert -// -// Returns: -// Converted CGSize -GTM_INLINE CGSize GTMNSSizeToCGSize(NSSize inSize) { - _GTMCompileAssert(sizeof(NSSize) == sizeof(CGSize), NSSize_and_CGSize_must_be_the_same_size); - union convertUnion {NSSize ns; CGSize cg;}; - return ((union convertUnion *)&inSize)->cg; -} - -#pragma mark - -#pragma mark NS - Point On Rect - -/// Return middle of min X side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of min X side of rect -GTM_INLINE NSPoint GTMNSMidMinX(NSRect rect) { - return NSMakePoint(NSMinX(rect), NSMidY(rect)); -} - -/// Return middle of max X side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of max X side of rect -GTM_INLINE NSPoint GTMNSMidMaxX(NSRect rect) { - return NSMakePoint(NSMaxX(rect), NSMidY(rect)); -} - -/// Return middle of max Y side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of max Y side of rect -GTM_INLINE NSPoint GTMNSMidMaxY(NSRect rect) { - return NSMakePoint(NSMidX(rect), NSMaxY(rect)); -} - -/// Return middle of min Y side of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the middle of min Y side of rect -GTM_INLINE NSPoint GTMNSMidMinY(NSRect rect) { - return NSMakePoint(NSMidX(rect), NSMinY(rect)); -} - -/// Return center of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// point located in the center of rect -GTM_INLINE NSPoint GTMNSCenter(NSRect rect) { - return NSMakePoint(NSMidX(rect), NSMidY(rect)); -} - -#pragma mark - -#pragma mark NS - Rect-Size Conversion - -/// Return size of rectangle -// -// Args: -// rect - rectangle -// -// Returns: -// size of rectangle -GTM_INLINE NSSize GTMNSRectSize(NSRect rect) { - return NSMakeSize(NSWidth(rect), NSHeight(rect)); -} - -/// Return rectangle of size -// -// Args: -// size - size -// -// Returns: -// rectangle of size (origin 0,0) -GTM_INLINE NSRect GTMNSRectOfSize(NSSize size) { - return NSMakeRect(0.0f, 0.0f, size.width, size.height); -} - -#pragma mark - -#pragma mark NS - Rect Scaling and Alignment - -/// Scales an NSRect -// -// Args: -// inRect: Rect to scale -// xScale: fraction to scale (1.0 is 100%) -// yScale: fraction to scale (1.0 is 100%) -// -// Returns: -// Converted Rect -GTM_INLINE NSRect GTMNSRectScale(NSRect inRect, CGFloat xScale, CGFloat yScale) { - return NSMakeRect(inRect.origin.x, inRect.origin.y, - inRect.size.width * xScale, inRect.size.height * yScale); -} - -/// Align rectangles -// -// Args: -// alignee - rect to be aligned -// aligner - rect to be aligned from -GTM_INLINE NSRect GTMNSAlignRectangles(NSRect alignee, NSRect aligner, - GTMRectAlignment alignment) { - return GTMCGRectToNSRect(GTMCGAlignRectangles(GTMNSRectToCGRect(alignee), - GTMNSRectToCGRect(aligner), - alignment)); -} - -/// Align a rectangle to another -// -// Args: -// scalee - rect to be scaled -// scaler - rect to scale to -// scaling - way to scale the rectangle -// alignment - way to align the scaled rectangle -GTM_INLINE NSRect GTMNSScaleRectToRect(NSRect scalee, - NSRect scaler, - GTMScaling scaling, - GTMRectAlignment alignment) { - - return GTMCGRectToNSRect( - GTMCGAlignRectangles( - GTMCGScaleRectangleToSize(GTMNSRectToCGRect(scalee), - GTMNSSizeToCGSize(scaler.size), - scaling), - GTMNSRectToCGRect(scaler), - alignment)); -} - -/// Scale rectangle -// -// Args: -// scalee - rect to be scaled -// size - size to scale to -// scaling - way to scale the rectangle -GTM_INLINE NSRect GTMNSScaleRectangleToSize(NSRect scalee, NSSize size, - GTMScaling scaling) { - return GTMCGRectToNSRect(GTMCGScaleRectangleToSize(GTMNSRectToCGRect(scalee), - GTMNSSizeToCGSize(size), - scaling)); -} - -#pragma mark - -#pragma mark NS - Miscellaneous - -/// Calculate the distance between two points. -// -// Args: -// pt1 first point -// pt2 second point -// -// Returns: -// Distance -GTM_INLINE CGFloat GTMNSDistanceBetweenPoints(NSPoint pt1, NSPoint pt2) { - return GTMCGDistanceBetweenPoints(GTMNSPointToCGPoint(pt1), - GTMNSPointToCGPoint(pt2)); -} - -#endif // !GTM_IPHONE_SDK diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.m deleted file mode 100644 index 07de80c3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtils.m +++ /dev/null @@ -1,108 +0,0 @@ -// -// GTMGeometryUtils.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMGeometryUtils.h" - -/// Align rectangles -// -// Args: -// alignee - rect to be aligned -// aligner - rect to be aligned to -// alignment - alignment to be applied to alignee based on aligner - -CGRect GTMCGAlignRectangles(CGRect alignee, CGRect aligner, GTMRectAlignment alignment) { - switch (alignment) { - case GTMRectAlignTop: - alignee.origin.x = aligner.origin.x + (CGRectGetWidth(aligner) * .5f - CGRectGetWidth(alignee) * .5f); - alignee.origin.y = aligner.origin.y + CGRectGetHeight(aligner) - CGRectGetHeight(alignee); - break; - - case GTMRectAlignTopLeft: - alignee.origin.x = aligner.origin.x; - alignee.origin.y = aligner.origin.y + CGRectGetHeight(aligner) - CGRectGetHeight(alignee); - break; - - case GTMRectAlignTopRight: - alignee.origin.x = aligner.origin.x + CGRectGetWidth(aligner) - CGRectGetWidth(alignee); - alignee.origin.y = aligner.origin.y + CGRectGetHeight(aligner) - CGRectGetHeight(alignee); - break; - - case GTMRectAlignLeft: - alignee.origin.x = aligner.origin.x; - alignee.origin.y = aligner.origin.y + (CGRectGetHeight(aligner) * .5f - CGRectGetHeight(alignee) * .5f); - break; - - case GTMRectAlignBottomLeft: - alignee.origin.x = aligner.origin.x; - alignee.origin.y = aligner.origin.y; - break; - - case GTMRectAlignBottom: - alignee.origin.x = aligner.origin.x + (CGRectGetWidth(aligner) * .5f - CGRectGetWidth(alignee) * .5f); - alignee.origin.y = aligner.origin.y; - break; - - case GTMRectAlignBottomRight: - alignee.origin.x = aligner.origin.x + CGRectGetWidth(aligner) - CGRectGetWidth(alignee); - alignee.origin.y = aligner.origin.y; - break; - - case GTMRectAlignRight: - alignee.origin.x = aligner.origin.x + CGRectGetWidth(aligner) - CGRectGetWidth(alignee); - alignee.origin.y = aligner.origin.y + (CGRectGetHeight(aligner) * .5f - CGRectGetHeight(alignee) * .5f); - break; - - default: - case GTMRectAlignCenter: - alignee.origin.x = aligner.origin.x + (CGRectGetWidth(aligner) * .5f - CGRectGetWidth(alignee) * .5f); - alignee.origin.y = aligner.origin.y + (CGRectGetHeight(aligner) * .5f - CGRectGetHeight(alignee) * .5f); - break; - } - return alignee; -} - -CGRect GTMCGScaleRectangleToSize(CGRect scalee, CGSize size, GTMScaling scaling) { - switch (scaling) { - - case GTMScaleToFillProportionally: - case GTMScaleProportionally: { - CGFloat height = CGRectGetHeight(scalee); - CGFloat width = CGRectGetWidth(scalee); - if (isnormal(height) && isnormal(width) && - (height > size.height || width > size.width)) { - CGFloat horiz = size.width / width; - CGFloat vert = size.height / height; - BOOL expand = (scaling == GTMScaleToFillProportionally); - // We use the smaller scale unless expand is true. In that case, larger. - CGFloat newScale = ((horiz < vert) ^ expand) ? horiz : vert; - scalee = GTMCGRectScale(scalee, newScale, newScale); - } - break; - } - - case GTMScaleToFit: - scalee.size = size; - break; - - case GTMScaleNone: - default: - // Do nothing - break; - } - return scalee; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtilsTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtilsTest.m deleted file mode 100644 index 38b86fbd..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMGeometryUtilsTest.m +++ /dev/null @@ -1,331 +0,0 @@ -// -// GTMGeometryUtilsTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMGeometryUtils.h" - -@interface GTMGeometryUtilsTest : GTMTestCase -@end - -@implementation GTMGeometryUtilsTest - -#if !GTM_IPHONE_SDK -- (void)testGTMCGPointToNSPoint { - CGPoint cgPoint = CGPointMake(15.1,6.2); - NSPoint nsPoint = GTMCGPointToNSPoint(cgPoint); - STAssertTrue(CGPointEqualToPoint(*(CGPoint*)&nsPoint, cgPoint), nil); -} - -- (void)testGTMNSPointToCGPoint { - NSPoint nsPoint = NSMakePoint(10.2,1.5); - CGPoint cgPoint = GTMNSPointToCGPoint(nsPoint); - STAssertTrue(CGPointEqualToPoint(cgPoint, *(CGPoint*)&nsPoint), nil); -} - -- (void)testGTMCGRectToNSRect { - CGRect cgRect = CGRectMake(1.5,2.4,10.6,11.7); - NSRect nsRect = GTMCGRectToNSRect(cgRect); - STAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect), nil); -} - -- (void)testGTMNSRectToCGRect { - NSRect nsRect = NSMakeRect(4.6,3.2,22.1,45.0); - CGRect cgRect = GTMNSRectToCGRect(nsRect); - STAssertTrue(CGRectEqualToRect(cgRect, *(CGRect*)&nsRect), nil); -} - -- (void)testGTMCGSizeToNSSize { - CGSize cgSize = {5,6}; - NSSize nsSize = GTMCGSizeToNSSize(cgSize); - STAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize), nil); -} - -- (void)testGTMNSSizeToCGSize { - NSSize nsSize = {22,15}; - CGSize cgSize = GTMNSSizeToCGSize(nsSize); - STAssertTrue(CGSizeEqualToSize(cgSize, *(CGSize*)&nsSize), nil); -} - -- (void)testGTMNSPointsOnRect { - NSRect rect = NSMakeRect(0, 0, 2, 2); - - NSPoint point = GTMNSMidMinX(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)0.0, (CGFloat)0.01, nil); - - point = GTMNSMidMaxX(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)2.0, (CGFloat)0.01, nil); - - point = GTMNSMidMaxY(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)2.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); - - point = GTMNSMidMinY(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)0.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); - - point = GTMNSCenter(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); -} - -- (void)testGTMNSRectSize { - NSSize nsSize = GTMNSRectSize(NSMakeRect(1, 1, 10, 5)); - STAssertEqualsWithAccuracy(nsSize.width, (CGFloat)10.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(nsSize.height, (CGFloat)5.0, (CGFloat)0.01, nil); -} - -- (void)testGTMNSRectOfSize { - NSRect outRect = GTMNSRectOfSize(NSMakeSize(10, 5)); - NSRect expectedRect = NSMakeRect(0, 0, 10, 5); - STAssertEquals(outRect, expectedRect, nil); -} - -- (void)testGTMNSAlignRectangles { - typedef struct { - NSPoint expectedOrigin; - GTMRectAlignment alignment; - } TestData; - - TestData data[] = { - { {1,2}, GTMRectAlignTop }, - { {0,2}, GTMRectAlignTopLeft }, - { {2,2}, GTMRectAlignTopRight }, - { {0,1}, GTMRectAlignLeft }, - { {1,0}, GTMRectAlignBottom }, - { {0,0}, GTMRectAlignBottomLeft }, - { {2,0}, GTMRectAlignBottomRight }, - { {2,1}, GTMRectAlignRight }, - { {1,1}, GTMRectAlignCenter }, - }; - - NSRect rect1 = NSMakeRect(0, 0, 4, 4); - NSRect rect2 = NSMakeRect(0, 0, 2, 2); - - NSRect expectedRect; - expectedRect.size = NSMakeSize(2, 2); - - for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) { - expectedRect.origin = data[i].expectedOrigin; - NSRect outRect = GTMNSAlignRectangles(rect2, rect1, data[i].alignment); - STAssertEquals(outRect, expectedRect, nil); - } -} - -- (void)testGTMNSScaleRectangleToSize { - NSRect rect = NSMakeRect(0.0f, 0.0f, 10.0f, 10.0f); - typedef struct { - NSSize size_; - NSSize newSize_; - } Test; - Test tests[] = { - { { 5.0, 10.0 }, { 5.0, 5.0 } }, - { { 10.0, 5.0 }, { 5.0, 5.0 } }, - { { 10.0, 10.0 }, { 10.0, 10.0 } }, - { { 11.0, 11.0, }, { 10.0, 10.0 } }, - { { 5.0, 2.0 }, { 2.0, 2.0 } }, - { { 2.0, 5.0 }, { 2.0, 2.0 } }, - { { 2.0, 2.0 }, { 2.0, 2.0 } }, - { { 0.0, 10.0 }, { 0.0, 0.0 } } - }; - - for (size_t i = 0; i < sizeof(tests) / sizeof(Test); ++i) { - NSRect result = GTMNSScaleRectangleToSize(rect, tests[i].size_, - GTMScaleProportionally); - STAssertEquals(result, GTMNSRectOfSize(tests[i].newSize_), @"failed on test %zd", i); - } - - NSRect result = GTMNSScaleRectangleToSize(NSZeroRect, tests[0].size_, - GTMScaleProportionally); - STAssertEquals(result, NSZeroRect, nil); - - result = GTMNSScaleRectangleToSize(rect, tests[0].size_, - GTMScaleToFit); - STAssertEquals(result, GTMNSRectOfSize(tests[0].size_), nil); - - result = GTMNSScaleRectangleToSize(rect, tests[0].size_, - GTMScaleNone); - STAssertEquals(result, rect, nil); -} - - -- (void)testGTMNSScaleRectToRect { - typedef struct { - NSRect expectedRect; - GTMScaling scaling; - GTMRectAlignment alignment; - } TestData; - - NSRect rect1 = NSMakeRect(0, 0, 4, 4); - NSRect rect2 = NSMakeRect(0, 0, 2, 1); - - TestData data[] = { - { NSMakeRect(2, 3, 2, 1), GTMScaleToFillProportionally, GTMRectAlignTopRight }, - { NSMakeRect(0, 0, 4, 4), GTMScaleToFit, GTMRectAlignCenter }, - { NSMakeRect(1, 1.5, 2, 1), GTMScaleNone, GTMRectAlignCenter }, - { NSMakeRect(1, 0, 2, 1), GTMScaleProportionally, GTMRectAlignBottom }, - }; - - for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) { - NSRect outRect = GTMNSScaleRectToRect(rect2, rect1, data[i].scaling, data[i].alignment); - STAssertEquals(outRect, data[i].expectedRect, nil); - } -} - - -- (void)testGTMNSDistanceBetweenPoints { - NSPoint pt1 = NSMakePoint(0, 0); - NSPoint pt2 = NSMakePoint(3, 4); - STAssertEquals(GTMNSDistanceBetweenPoints(pt1, pt2), (CGFloat)5.0, nil); - STAssertEquals(GTMNSDistanceBetweenPoints(pt2, pt1), (CGFloat)5.0, nil); - pt1 = NSMakePoint(1, 1); - pt2 = NSMakePoint(1, 1); - STAssertEquals(GTMNSDistanceBetweenPoints(pt1, pt2), (CGFloat)0.0, nil); -} - -- (void)testGTMNSRectScaling { - NSRect rect = NSMakeRect(1.0f, 2.0f, 5.0f, 10.0f); - NSRect rect2 = NSMakeRect((CGFloat)1.0, (CGFloat)2.0, (CGFloat)1.0, (CGFloat)12.0); - STAssertEquals(GTMNSRectScale(rect, (CGFloat)0.2, (CGFloat)1.2), - rect2, nil); -} - -#endif // !GTM_IPHONE_SDK - -- (void)testGTMCGDistanceBetweenPoints { - CGPoint pt1 = CGPointMake(0, 0); - CGPoint pt2 = CGPointMake(3, 4); - STAssertEquals(GTMCGDistanceBetweenPoints(pt1, pt2), (CGFloat)5.0, nil); - STAssertEquals(GTMCGDistanceBetweenPoints(pt2, pt1), (CGFloat)5.0, nil); - pt1 = CGPointMake(1, 1); - pt2 = CGPointMake(1, 1); - STAssertEquals(GTMCGDistanceBetweenPoints(pt1, pt2), (CGFloat)0.0, nil); -} - -- (void)testGTMCGAlignRectangles { - typedef struct { - CGPoint expectedOrigin; - GTMRectAlignment alignment; - } TestData; - - TestData data[] = { - { {1,2}, GTMRectAlignTop }, - { {0,2}, GTMRectAlignTopLeft }, - { {2,2}, GTMRectAlignTopRight }, - { {0,1}, GTMRectAlignLeft }, - { {1,0}, GTMRectAlignBottom }, - { {0,0}, GTMRectAlignBottomLeft }, - { {2,0}, GTMRectAlignBottomRight }, - { {2,1}, GTMRectAlignRight }, - { {1,1}, GTMRectAlignCenter }, - }; - - CGRect rect1 = CGRectMake(0, 0, 4, 4); - CGRect rect2 = CGRectMake(0, 0, 2, 2); - - CGRect expectedRect; - expectedRect.size = CGSizeMake(2, 2); - - for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) { - expectedRect.origin = data[i].expectedOrigin; - CGRect outRect = GTMCGAlignRectangles(rect2, rect1, data[i].alignment); - STAssertEquals(outRect, expectedRect, nil); - } -} - -- (void)testGTMCGPointsOnRect { - CGRect rect = CGRectMake(0, 0, 2, 2); - - CGPoint point = GTMCGMidMinX(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)0.0, (CGFloat)0.01, nil); - - point = GTMCGMidMaxX(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)2.0, (CGFloat)0.01, nil); - - point = GTMCGMidMaxY(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)2.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); - - point = GTMCGMidMinY(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)0.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); - - point = GTMCGCenter(rect); - STAssertEqualsWithAccuracy(point.y, (CGFloat)1.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(point.x, (CGFloat)1.0, (CGFloat)0.01, nil); -} - -- (void)testGTMCGRectSize { - CGSize cgSize = GTMCGRectSize(CGRectMake(1, 1, 10, 5)); - STAssertEqualsWithAccuracy(cgSize.width, (CGFloat)10.0, (CGFloat)0.01, nil); - STAssertEqualsWithAccuracy(cgSize.height, (CGFloat)5.0, (CGFloat)0.01, nil); -} - -- (void)testGTMCGRectOfSize { - CGRect outRect = GTMCGRectOfSize(CGSizeMake(10, 5)); - CGRect expectedRect = CGRectMake(0, 0, 10, 5); - STAssertEquals(outRect, expectedRect, nil); -} - -- (void)testGTMCGRectScaling { - CGRect rect = CGRectMake(1.0f, 2.0f, 5.0f, 10.0f); - CGRect rect2 = CGRectMake((CGFloat)1.0, (CGFloat)2.0, (CGFloat)1.0, (CGFloat)12.0); - STAssertEquals(GTMCGRectScale(rect, (CGFloat)0.2, (CGFloat)1.2), - rect2, nil); -} - -- (void)testGTMCGScaleRectangleToSize { - CGRect rect = CGRectMake(0.0f, 0.0f, 10.0f, 10.0f); - typedef struct { - CGSize size_; - CGSize newSize_; - } Test; - Test tests[] = { - { { 5.0, 10.0 }, { 5.0, 5.0 } }, - { { 10.0, 5.0 }, { 5.0, 5.0 } }, - { { 10.0, 10.0 }, { 10.0, 10.0 } }, - { { 11.0, 11.0, }, { 10.0, 10.0 } }, - { { 5.0, 2.0 }, { 2.0, 2.0 } }, - { { 2.0, 5.0 }, { 2.0, 2.0 } }, - { { 2.0, 2.0 }, { 2.0, 2.0 } }, - { { 0.0, 10.0 }, { 0.0, 0.0 } } - }; - - for (size_t i = 0; i < sizeof(tests) / sizeof(Test); ++i) { - CGRect result = GTMCGScaleRectangleToSize(rect, tests[i].size_, - GTMScaleProportionally); - STAssertEquals(result, GTMCGRectOfSize(tests[i].newSize_), @"failed on test %zd", i); - } - - CGRect result = GTMCGScaleRectangleToSize(CGRectZero, tests[0].size_, - GTMScaleProportionally); - STAssertEquals(result, CGRectZero, nil); - - result = GTMCGScaleRectangleToSize(rect, tests[0].size_, - GTMScaleToFit); - STAssertEquals(result, GTMCGRectOfSize(tests[0].size_), nil); - - result = GTMCGScaleRectangleToSize(rect, tests[0].size_, - GTMScaleNone); - STAssertEquals(result, rect, nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPFetcher.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPFetcher.h deleted file mode 100644 index 7377d1c3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPFetcher.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// GTMHTTPFetcher.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -// This class is no more. If you want something like it's functionality, look -// at using the version in the Objective-C GData Client -// (http://code.google.com/p/gdata-objectivec-client/). It provides the same -// functionality and will continue to be maintained. diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.h deleted file mode 100644 index 0caa1492..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.h +++ /dev/null @@ -1,137 +0,0 @@ -// -// GTMHTTPServer.h -// -// This is a *very* *simple* webserver that can be built into something, it is -// not meant to stand up a site, it sends all requests to its delegate for -// processing on the main thread. It does not support pipelining, etc. It's -// great for places where you need a simple webserver to unittest some code -// that hits a server. -// -// NOTE: there are several TODOs left in here as markers for things that could -// be done if one wanted to add more to this class. -// -// Copyright 2008 Google Inc. -// -// 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. -// -// Based a little on HTTPServer, part of the CocoaHTTPServer sample code -// http://developer.apple.com/samplecode/CocoaHTTPServer/index.html -// - -#import -#import "GTMDefines.h" - -#if GTM_IPHONE_SDK -#import -#endif // GTM_IPHONE_SDK - -// Global contants needed for errors from start - -#undef _EXTERN -#undef _INITIALIZE_AS -#ifdef GTMHTTPSERVER_DEFINE_GLOBALS -#define _EXTERN -#define _INITIALIZE_AS(x) =x -#else -#define _EXTERN GTM_EXTERN -#define _INITIALIZE_AS(x) -#endif - -_EXTERN NSString* kGTMHTTPServerErrorDomain _INITIALIZE_AS(@"com.google.mactoolbox.HTTPServerDomain"); -enum { - kGTMHTTPServerSocketCreateFailedError = -100, - kGTMHTTPServerBindFailedError = -101, - kGTMHTTPServerListenFailedError = -102, - kGTMHTTPServerHandleCreateFailedError = -103, -}; - -@class GTMHTTPRequestMessage, GTMHTTPResponseMessage; - -// ---------------------------------------------------------------------------- - -// See comment at top of file for the intened use of this class. -@interface GTMHTTPServer : NSObject { - @private - __weak id delegate_; - uint16_t port_; - BOOL localhostOnly_; - NSFileHandle *listenHandle_; - NSMutableArray *connections_; -} - -// The delegate must support the httpServer:handleRequest: method in -// NSObject(GTMHTTPServerDeletateMethods) below. -- (id)initWithDelegate:(id)delegate; - -- (id)delegate; - -// Passing port zero will let one get assigned. -- (uint16_t)port; -- (void)setPort:(uint16_t)port; - -// Receive connections on the localHost loopback address only or on all -// interfaces for this machine. The default is to only listen on localhost. -- (BOOL)localhostOnly; -- (void)setLocalhostOnly:(BOOL)yesno; - -// Start/Stop the web server. If there is an error starting up the server, |NO| -// is returned, and the specific startup failure can be returned in |error| (see -// above for the error domain and error codes). If the server is started, |YES| -// is returned and the server's delegate is called for any requests that come -// in. -- (BOOL)start:(NSError **)error; -- (void)stop; - -// returns the number of requests currently active in the server (i.e.-being -// read in, sent replies). -- (NSUInteger)activeRequestCount; - -@end - -@interface NSObject (GTMHTTPServerDeletateMethods) -- (GTMHTTPResponseMessage *)httpServer:(GTMHTTPServer *)server - handleRequest:(GTMHTTPRequestMessage *)request; -@end - -// ---------------------------------------------------------------------------- - -// Encapsulates an http request, one of these is sent to the server's delegate -// for each request. -@interface GTMHTTPRequestMessage : NSObject { - @private - CFHTTPMessageRef message_; -} -- (NSString *)version; -- (NSURL *)URL; -- (NSString *)method; -- (NSData *)body; -- (NSDictionary *)allHeaderFieldValues; -@end - -// ---------------------------------------------------------------------------- - -// Encapsulates an http response, the server's delegate should return one for -// each request received. -@interface GTMHTTPResponseMessage : NSObject { - @private - CFHTTPMessageRef message_; -} -+ (id)responseWithHTMLString:(NSString *)htmlString; -+ (id)responseWithBody:(NSData *)body - contentType:(NSString *)contentType - statusCode:(int)statusCode; -+ (id)emptyResponseWithCode:(int)statusCode; -// TODO: class method for redirections? -// TODO: add helper for expire/no-cache -- (void)setValue:(NSString*)value forHeaderField:(NSString*)headerField; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.m deleted file mode 100644 index 4a7a859c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServer.m +++ /dev/null @@ -1,595 +0,0 @@ -// -// GTMHTTPServer.m -// -// Copyright 2008 Google Inc. -// -// 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. -// -// Based a little on HTTPServer, part of the CocoaHTTPServer sample code -// http://developer.apple.com/samplecode/CocoaHTTPServer/index.html -// - -#import -#import -#import - -#define GTMHTTPSERVER_DEFINE_GLOBALS -#import "GTMHTTPServer.h" -#import "GTMDebugSelectorValidation.h" -#import "GTMGarbageCollection.h" -#import "GTMDefines.h" - -@interface GTMHTTPServer (PrivateMethods) -- (void)acceptedConnectionNotification:(NSNotification *)notification; -- (NSMutableDictionary *)connectionWithFileHandle:(NSFileHandle *)fileHandle; -- (void)dataAvailableNotification:(NSNotification *)notification; -- (NSMutableDictionary *)lookupConnection:(NSFileHandle *)fileHandle; -- (void)closeConnection:(NSMutableDictionary *)connDict; -- (void)sendResponseOnNewThread:(NSMutableDictionary *)connDict; -- (void)sentResponse:(NSMutableDictionary *)connDict; -@end - -// keys for our connection dictionaries -static NSString *kFileHandle = @"FileHandle"; -static NSString *kRequest = @"Request"; -static NSString *kResponse = @"Response"; - -@interface GTMHTTPRequestMessage (PrivateHelpers) -- (BOOL)isHeaderComplete; -- (BOOL)appendData:(NSData *)data; -- (NSString *)headerFieldValueForKey:(NSString *)key; -- (UInt32)contentLength; -- (void)setBody:(NSData *)body; -@end - -@interface GTMHTTPResponseMessage (PrivateMethods) -- (id)initWithBody:(NSData *)body - contentType:(NSString *)contentType - statusCode:(int)statusCode; -- (NSData*)serializedData; -@end - -@implementation GTMHTTPServer - -- (id)init { - return [self initWithDelegate:nil]; -} - -- (id)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - if (!delegate) { - _GTMDevLog(@"missing delegate"); - [self release]; - return nil; - } - delegate_ = delegate; - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(delegate_, - @selector(httpServer:handleRequest:), - // return type - @encode(GTMHTTPResponseMessage *), - // args - @encode(GTMHTTPServer *), - @encode(GTMHTTPRequestMessage *), - NULL); - localhostOnly_ = YES; - connections_ = [[NSMutableArray alloc] init]; - } - return self; -} - -- (void)dealloc { - [self stop]; - [connections_ release]; - [super dealloc]; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - [self stop]; - [super finalize]; -} -#endif - -- (id)delegate { - return delegate_; -} - -- (uint16_t)port { - return port_; -} - -- (void)setPort:(uint16_t)port { - port_ = port; -} - -- (BOOL)localhostOnly { - return localhostOnly_; -} - -- (void)setLocalhostOnly:(BOOL)yesno { - localhostOnly_ = yesno; -} - -- (BOOL)start:(NSError **)error { - _GTMDevAssert(listenHandle_ == nil, - @"start called when we already have a listenHandle_"); - - if (error) *error = NULL; - - NSInteger startFailureCode = 0; - int fd = socket(AF_INET, SOCK_STREAM, 0); - if (fd <= 0) { - // COV_NF_START - we'd need to use up *all* sockets to test this? - startFailureCode = kGTMHTTPServerSocketCreateFailedError; - goto startFailed; - // COV_NF_END - } - - // enable address reuse quicker after we are done w/ our socket - int yes = 1; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, - (void *)&yes, (socklen_t)sizeof(yes)) != 0) { - _GTMDevLog(@"failed to mark the socket as reusable"); // COV_NF_LINE - } - - // bind - struct sockaddr_in addr; - bzero(&addr, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - addr.sin_port = htons(port_); - if (localhostOnly_) { - addr.sin_addr.s_addr = htonl(0x7F000001); - } else { - // COV_NF_START - testing this could cause a leopard firewall prompt during tests. - addr.sin_addr.s_addr = htonl(INADDR_ANY); - // COV_NF_END - } - if (bind(fd, (struct sockaddr*)(&addr), (socklen_t)sizeof(addr)) != 0) { - startFailureCode = kGTMHTTPServerBindFailedError; - goto startFailed; - } - - // collect the port back out - if (port_ == 0) { - socklen_t len = (socklen_t)sizeof(addr); - if (getsockname(fd, (struct sockaddr*)(&addr), &len) == 0) { - port_ = ntohs(addr.sin_port); - } - } - - // tell it to listen for connections - if (listen(fd, 5) != 0) { - // COV_NF_START - startFailureCode = kGTMHTTPServerListenFailedError; - goto startFailed; - // COV_NF_END - } - - // now use a filehandle to accept connections - listenHandle_ = - [[NSFileHandle alloc] initWithFileDescriptor:fd closeOnDealloc:YES]; - if (listenHandle_ == nil) { - // COV_NF_START - we'd need to run out of memory to test this? - startFailureCode = kGTMHTTPServerHandleCreateFailedError; - goto startFailed; - // COV_NF_END - } - - // setup notifications for connects - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - [center addObserver:self - selector:@selector(acceptedConnectionNotification:) - name:NSFileHandleConnectionAcceptedNotification - object:listenHandle_]; - [listenHandle_ acceptConnectionInBackgroundAndNotify]; - - // TODO: maybe hit the delegate incase it wants to register w/ NSNetService, - // or just know we're up and running? - - return YES; - -startFailed: - if (error) { - *error = [[[NSError alloc] initWithDomain:kGTMHTTPServerErrorDomain - code:startFailureCode - userInfo:nil] autorelease]; - } - if (fd > 0) { - close(fd); - } - return NO; -} - -- (void)stop { - if (listenHandle_) { - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - [center removeObserver:self - name:NSFileHandleConnectionAcceptedNotification - object:listenHandle_]; - [listenHandle_ release]; - listenHandle_ = nil; - // TODO: maybe hit the delegate in case it wants to unregister w/ - // NSNetService, or just know we've stopped running? - } - [connections_ removeAllObjects]; -} - -- (NSUInteger)activeRequestCount { - return [connections_ count]; -} - -- (NSString *)description { - NSString *result = - [NSString stringWithFormat:@"%@<%p>{ port=%d localHostOnly=%@ status=%@ }", - [self class], self, port_, (localhostOnly_ ? @"YES" : @"NO"), - (listenHandle_ != nil ? @"Started" : @"Stopped") ]; - return result; -} - - -@end - -@implementation GTMHTTPServer (PrivateMethods) - -- (void)acceptedConnectionNotification:(NSNotification *)notification { - NSDictionary *userInfo = [notification userInfo]; - NSFileHandle *newConnection = - [userInfo objectForKey:NSFileHandleNotificationFileHandleItem]; - _GTMDevAssert(newConnection != nil, - @"failed to get the connection in the notification: %@", - notification); - - // make sure we accept more... - [listenHandle_ acceptConnectionInBackgroundAndNotify]; - - // TODO: could let the delegate look at the address, before we start working - // on it. - - NSMutableDictionary *connDict = - [self connectionWithFileHandle:newConnection]; - [connections_ addObject:connDict]; -} - -- (NSMutableDictionary *)connectionWithFileHandle:(NSFileHandle *)fileHandle { - NSMutableDictionary *result = [NSMutableDictionary dictionary]; - - [result setObject:fileHandle forKey:kFileHandle]; - - GTMHTTPRequestMessage *request = - [[[GTMHTTPRequestMessage alloc] init] autorelease]; - [result setObject:request forKey:kRequest]; - - // setup for data notifications - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - [center addObserver:self - selector:@selector(dataAvailableNotification:) - name:NSFileHandleReadCompletionNotification - object:fileHandle]; - [fileHandle readInBackgroundAndNotify]; - - return result; -} - -- (void)dataAvailableNotification:(NSNotification *)notification { - NSFileHandle *connectionHandle = [notification object]; - NSMutableDictionary *connDict = [self lookupConnection:connectionHandle]; - if (connDict == nil) return; // we are no longer tracking this one - - NSDictionary *userInfo = [notification userInfo]; - NSData *readData = [userInfo objectForKey:NSFileHandleNotificationDataItem]; - if ([readData length] == 0) { - // remote side closed - [self closeConnection:connDict]; - return; - } - - // Like Apple's sample, we just keep adding data until we get a full header - // and any referenced body. - - GTMHTTPRequestMessage *request = [connDict objectForKey:kRequest]; - [request appendData:readData]; - - // Is the header complete yet? - if (![request isHeaderComplete]) { - // more data... - [connectionHandle readInBackgroundAndNotify]; - return; - } - - // Do we have all the body? - UInt32 contentLength = [request contentLength]; - NSData *body = [request body]; - NSUInteger bodyLength = [body length]; - if (contentLength > bodyLength) { - // need more data... - [connectionHandle readInBackgroundAndNotify]; - return; - } - - if (contentLength < bodyLength) { - // We got extra (probably someone trying to pipeline on us), trim - // and let the extra data go... - NSData *newBody = [NSData dataWithBytes:[body bytes] - length:contentLength]; - [request setBody:newBody]; - _GTMDevLog(@"Got %lu extra bytes on http request, ignoring them", - (unsigned long)(bodyLength - contentLength)); - } - - GTMHTTPResponseMessage *response = nil; - @try { - // Off to the delegate - response = [delegate_ httpServer:self handleRequest:request]; - } @catch (NSException *e) { - _GTMDevLog(@"Exception trying to handle http request: %@", e); - } // COV_NF_LINE - radar 5851992 only reachable w/ an uncaught exception which isn't testable - - if (!response) { - [self closeConnection:connDict]; - return; - } - - // We don't support connection reuse, so we add (force) the header to close - // every connection. - [response setValue:@"close" forHeaderField:@"Connection"]; - - // spawn thread to send reply (since we do a blocking send) - [connDict setObject:response forKey:kResponse]; - [NSThread detachNewThreadSelector:@selector(sendResponseOnNewThread:) - toTarget:self - withObject:connDict]; -} - -- (NSMutableDictionary *)lookupConnection:(NSFileHandle *)fileHandle { - NSMutableDictionary *result = nil; - NSUInteger max = [connections_ count]; - for (NSUInteger x = 0; x < max; ++x) { - NSMutableDictionary *connDict = [connections_ objectAtIndex:x]; - if (fileHandle == [connDict objectForKey:kFileHandle]) { - result = connDict; - break; - } - } - return result; -} - -- (void)closeConnection:(NSMutableDictionary *)connDict { - // remove the notification - NSFileHandle *connectionHandle = [connDict objectForKey:kFileHandle]; - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - [center removeObserver:self - name:NSFileHandleReadCompletionNotification - object:connectionHandle]; - // in a non GC world, we're fine just letting the connect get closed when - // the object is release when it comes out of connections_, but in a GC world - // it won't get cleaned up - [connectionHandle closeFile]; - - // remove it from the list - [connections_ removeObject:connDict]; -} - -- (void)sendResponseOnNewThread:(NSMutableDictionary *)connDict { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - @try { - GTMHTTPResponseMessage *response = [connDict objectForKey:kResponse]; - NSFileHandle *connectionHandle = [connDict objectForKey:kFileHandle]; - NSData *serialized = [response serializedData]; - [connectionHandle writeData:serialized]; - } @catch (NSException *e) { // COV_NF_START - causing an exception here is to hard in a test - // TODO: let the delegate know about the exception (but do it on the main - // thread) - _GTMDevLog(@"exception while sending reply: %@", e); - } // COV_NF_END - - // back to the main thread to close things down - [self performSelectorOnMainThread:@selector(sentResponse:) - withObject:connDict - waitUntilDone:NO]; - - [pool release]; -} - -- (void)sentResponse:(NSMutableDictionary *)connDict { - // make sure we're still tracking this connection (in case server was stopped) - NSFileHandle *connection = [connDict objectForKey:kFileHandle]; - NSMutableDictionary *connDict2 = [self lookupConnection:connection]; - if (connDict != connDict2) return; - - // TODO: message the delegate that it was sent - - // close it down - [self closeConnection:connDict]; -} - -@end - -#pragma mark - - -@implementation GTMHTTPRequestMessage - -- (id)init { - self = [super init]; - if (self) { - message_ = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, YES); - } - return self; -} - -- (void)dealloc { - if (message_) { - CFRelease(message_); - } - [super dealloc]; -} - -- (NSString *)version { - return GTMCFAutorelease(CFHTTPMessageCopyVersion(message_)); -} - -- (NSURL *)URL { - return GTMCFAutorelease(CFHTTPMessageCopyRequestURL(message_)); -} - -- (NSString *)method { - return GTMCFAutorelease(CFHTTPMessageCopyRequestMethod(message_)); -} - -- (NSData *)body { - return GTMCFAutorelease(CFHTTPMessageCopyBody(message_)); -} - -- (NSDictionary *)allHeaderFieldValues { - return GTMCFAutorelease(CFHTTPMessageCopyAllHeaderFields(message_)); -} - -- (NSString *)description { - CFStringRef desc = CFCopyDescription(message_); - NSString *result = - [NSString stringWithFormat:@"%@<%p>{ message=%@ }", [self class], self, desc]; - CFRelease(desc); - return result; -} - -@end - -@implementation GTMHTTPRequestMessage (PrivateHelpers) - -- (BOOL)isHeaderComplete { - return CFHTTPMessageIsHeaderComplete(message_) ? YES : NO; -} - -- (BOOL)appendData:(NSData *)data { - return CFHTTPMessageAppendBytes(message_, - [data bytes], [data length]) ? YES : NO; -} - -- (NSString *)headerFieldValueForKey:(NSString *)key { - CFStringRef value = NULL; - if (key) { - value = CFHTTPMessageCopyHeaderFieldValue(message_, (CFStringRef)key); - } - return GTMCFAutorelease(value); -} - -- (UInt32)contentLength { - return [[self headerFieldValueForKey:@"Content-Length"] intValue]; -} - -- (void)setBody:(NSData *)body { - if (!body) { - body = [NSData data]; // COV_NF_LINE - can only happen in we fail to make the new data object - } - CFHTTPMessageSetBody(message_, (CFDataRef)body); -} - -@end - -#pragma mark - - -@implementation GTMHTTPResponseMessage - -- (id)init { - return [self initWithBody:nil contentType:nil statusCode:0]; -} - -- (void)dealloc { - if (message_) { - CFRelease(message_); - } - [super dealloc]; -} - -+ (id)responseWithHTMLString:(NSString *)htmlString { - return [self responseWithBody:[htmlString dataUsingEncoding:NSUTF8StringEncoding] - contentType:@"text/html; charset=UTF-8" - statusCode:200]; -} - -+ (id)responseWithBody:(NSData *)body - contentType:(NSString *)contentType - statusCode:(int)statusCode { - return [[[[self class] alloc] initWithBody:body - contentType:contentType - statusCode:statusCode] autorelease]; -} - -+ (id)emptyResponseWithCode:(int)statusCode { - return [[[[self class] alloc] initWithBody:nil - contentType:nil - statusCode:statusCode] autorelease]; -} - -- (void)setValue:(NSString*)value forHeaderField:(NSString*)headerField { - if ([headerField length] == 0) return; - if (value == nil) { - value = @""; - } - CFHTTPMessageSetHeaderFieldValue(message_, - (CFStringRef)headerField, (CFStringRef)value); -} - -- (NSString *)description { - CFStringRef desc = CFCopyDescription(message_); - NSString *result = - [NSString stringWithFormat:@"%@<%p>{ message=%@ }", [self class], self, desc]; - CFRelease(desc); - return result; -} - -@end - -@implementation GTMHTTPResponseMessage (PrivateMethods) - -- (id)initWithBody:(NSData *)body - contentType:(NSString *)contentType - statusCode:(int)statusCode { - self = [super init]; - if (self) { - if ((statusCode < 100) || (statusCode > 599)) { - [self release]; - return nil; - } - message_ = CFHTTPMessageCreateResponse(kCFAllocatorDefault, - statusCode, NULL, - kCFHTTPVersion1_0); - if (!message_) { - // COV_NF_START - [self release]; - return nil; - // COV_NF_END - } - NSUInteger bodyLength = 0; - if (body) { - bodyLength = [body length]; - CFHTTPMessageSetBody(message_, (CFDataRef)body); - } - if ([contentType length] == 0) { - contentType = @"text/html"; - } - NSString *bodyLenStr = - [NSString stringWithFormat:@"%lu", (unsigned long)bodyLength]; - [self setValue:bodyLenStr forHeaderField:@"Content-Length"]; - [self setValue:contentType forHeaderField:@"Content-Type"]; - } - return self; -} - -- (NSData *)serializedData { - return GTMCFAutorelease(CFHTTPMessageCopySerializedMessage(message_)); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServerTest.m deleted file mode 100644 index fd962afc..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMHTTPServerTest.m +++ /dev/null @@ -1,574 +0,0 @@ -// -// GTMHTTPServerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import -#import -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "GTMHTTPServer.h" -#import "GTMRegex.h" - -@interface GTMHTTPServerTest : GTMTestCase { - NSData *fetchedData_; -} -@end - -@interface GTMHTTPServerTest (PrivateMethods) -- (NSData *)fetchFromPort:(unsigned short)port - payload:(NSString *)payload - chunkSize:(NSUInteger)chunkSize; -- (NSFileHandle *)fileHandleSendingToPort:(unsigned short)port - payload:(NSString *)payload - chunkSize:(NSUInteger)chunkSize; -- (void)readFinished:(NSNotification *)notification; -@end - -// helper class -@interface TestServerDelegate : NSObject { - NSMutableArray *requests_; - NSMutableArray *responses_; -} -+ (id)testServerDelegate; -- (NSUInteger)requestCount; -- (GTMHTTPRequestMessage *)popRequest; -- (void)pushResponse:(GTMHTTPResponseMessage *)message; -@end - -// helper that throws while handling its request -@interface TestThrowingServerDelegate : TestServerDelegate -- (GTMHTTPResponseMessage *)httpServer:(GTMHTTPServer *)server - handleRequest:(GTMHTTPRequestMessage *)request; -@end - -// The timings used for waiting for replies -const NSTimeInterval kGiveUpInterval = 5.0; -const NSTimeInterval kRunLoopInterval = 0.01; - -// the size we break writes up into to test the reading code and how long to -// wait between writes. -const NSUInteger kSendChunkSize = 12; -const NSTimeInterval kSendChunkInterval = 0.05; - -// ---------------------------------------------------------------------------- - -@implementation GTMHTTPServerTest - -- (void)testInit { - // bad delegates - [GTMUnitTestDevLog expectString:@"missing delegate"]; - STAssertNil([[GTMHTTPServer alloc] init], nil); - [GTMUnitTestDevLog expectString:@"missing delegate"]; - STAssertNil([[GTMHTTPServer alloc] initWithDelegate:nil], nil); - - TestServerDelegate *delegate = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate, nil); - GTMHTTPServer *server = - [[[GTMHTTPServer alloc] initWithDelegate:delegate] autorelease]; - STAssertNotNil(server, nil); - - // some attributes - - STAssertTrue([server delegate] == delegate, nil); - - [server setLocalhostOnly:NO]; - STAssertFalse([server localhostOnly], nil); - [server setLocalhostOnly:YES]; - STAssertTrue([server localhostOnly], nil); - - STAssertEquals([server port], (uint16_t)0, nil); - [server setPort:8080]; - STAssertEquals([server port], (uint16_t)8080, nil); - [server setPort:80]; - STAssertEquals([server port], (uint16_t)80, nil); - - // description (atleast 10 chars) - STAssertGreaterThan([[server description] length], (NSUInteger)10, nil); -} - -- (void)testStartStop { - TestServerDelegate *delegate1 = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate1, nil); - GTMHTTPServer *server1 = - [[[GTMHTTPServer alloc] initWithDelegate:delegate1] autorelease]; - STAssertNotNil(server1, nil); - NSError *error = nil; - STAssertTrue([server1 start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - STAssertGreaterThanOrEqual([server1 port], (uint16_t)1024, - @"how'd we get a reserved port?"); - - TestServerDelegate *delegate2 = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate2, nil); - GTMHTTPServer *server2 = - [[[GTMHTTPServer alloc] initWithDelegate:delegate2] autorelease]; - STAssertNotNil(server2, nil); - - // try the reserved port - [server2 setPort:666]; - error = nil; - STAssertFalse([server2 start:&error], nil); - STAssertNotNil(error, nil); - STAssertEqualObjects([error domain], kGTMHTTPServerErrorDomain, nil); - STAssertEquals([error code], (NSInteger)kGTMHTTPServerBindFailedError, - @"port should have been reserved"); - - // try the same port - [server2 setPort:[server1 port]]; - error = nil; - STAssertFalse([server2 start:&error], nil); - STAssertNotNil(error, nil); - STAssertEqualObjects([error domain], kGTMHTTPServerErrorDomain, nil); - STAssertEquals([error code], (NSInteger)kGTMHTTPServerBindFailedError, - @"port should have been in use"); - - // try a random port again so we really start (prove two can run at once) - [server2 setPort:0]; - error = nil; - STAssertTrue([server2 start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - - // shut them down - [server1 stop]; - [server2 stop]; -} - -- (void)testRequests { - TestServerDelegate *delegate = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate, nil); - GTMHTTPServer *server = - [[[GTMHTTPServer alloc] initWithDelegate:delegate] autorelease]; - STAssertNotNil(server, nil); - NSError *error = nil; - STAssertTrue([server start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - - // a request to test all the fields of a request object - - NSString *payload = - @"PUT /some/server/path HTTP/1.0\r\n" - @"Content-Length: 16\r\n" - @"Custom-Header: Custom_Value\r\n" - @"\r\n" - @"this is the body"; - NSData *reply = - [self fetchFromPort:[server port] payload:payload chunkSize:kSendChunkSize]; - STAssertNotNil(reply, nil); - - GTMHTTPRequestMessage *request = [delegate popRequest]; - STAssertEqualObjects([request version], @"HTTP/1.0", nil); - STAssertEqualObjects([[request URL] absoluteString], @"/some/server/path", nil); - STAssertEqualObjects([request method], @"PUT", nil); - STAssertEqualObjects([request body], - [@"this is the body" dataUsingEncoding:NSUTF8StringEncoding], - nil); - NSDictionary *allHeaders = [request allHeaderFieldValues]; - STAssertNotNil(allHeaders, nil); - STAssertEquals([allHeaders count], (NSUInteger)2, nil); - STAssertEqualObjects([allHeaders objectForKey:@"Content-Length"], - @"16", nil); - STAssertEqualObjects([allHeaders objectForKey:@"Custom-Header"], - @"Custom_Value", nil); - STAssertGreaterThan([[request description] length], (NSUInteger)10, nil); - - // test different request types (in simple form) - - typedef struct { - NSString *method; - NSString *url; - } TestData; - - TestData data[] = { - { @"GET", @"/foo/bar" }, - { @"HEAD", @"/foo/baz" }, - { @"POST", @"/foo" }, - { @"PUT", @"/foo/spam" }, - { @"DELETE", @"/fooby/doo" }, - { @"TRACE", @"/something.html" }, - { @"CONNECT", @"/spam" }, - { @"OPTIONS", @"/wee/doggies" }, - }; - - for (size_t i = 0; i < sizeof(data) / sizeof(TestData); i++) { - payload = [NSString stringWithFormat:@"%@ %@ HTTP/1.0\r\n\r\n", - data[i].method, data[i].url]; - STAssertNotNil(payload, nil); - reply = [self fetchFromPort:[server port] - payload:payload - chunkSize:kSendChunkSize]; - STAssertNotNil(reply, // just want a reply in this test - @"failed of method %@", data[i].method); - request = [delegate popRequest]; - STAssertEqualObjects([[request URL] absoluteString], data[i].url, - @"urls didn't match for index %d", i); - STAssertEqualObjects([request method], data[i].method, - @"methods didn't match for index %d", i); - } - - [server stop]; -} - -- (void)testResponses { - - // some quick init tests for invalid things - STAssertNil([[GTMHTTPResponseMessage alloc] init], nil); - STAssertNil([GTMHTTPResponseMessage responseWithBody:nil - contentType:nil - statusCode:99], - nil); - STAssertNil([GTMHTTPResponseMessage responseWithBody:nil - contentType:nil - statusCode:602], - nil); - - TestServerDelegate *delegate = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate, nil); - GTMHTTPServer *server = - [[[GTMHTTPServer alloc] initWithDelegate:delegate] autorelease]; - STAssertNotNil(server, nil); - NSError *error = nil; - STAssertTrue([server start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - - // test the html helper - - GTMHTTPResponseMessage *expectedResponse = - [GTMHTTPResponseMessage responseWithHTMLString:@"Success!"]; - STAssertNotNil(expectedResponse, nil); - STAssertGreaterThan([[expectedResponse description] length], - (NSUInteger)0, nil); - [delegate pushResponse:expectedResponse]; - NSData *responseData = [self fetchFromPort:[server port] - payload:@"GET /foo HTTP/1.0\r\n\r\n" - chunkSize:kSendChunkSize]; - STAssertNotNil(responseData, nil); - NSString *responseString = - [[[NSString alloc] initWithData:responseData - encoding:NSUTF8StringEncoding] autorelease]; - STAssertNotNil(responseString, nil); - STAssertTrue([responseString hasPrefix:@"HTTP/1.0 200 OK"], nil); - STAssertTrue([responseString hasSuffix:@"Success!"], @"should end w/ our data"); - STAssertNotEquals([responseString rangeOfString:@"Content-Length: 8"].location, - (NSUInteger)NSNotFound, nil); - STAssertNotEquals([responseString rangeOfString:@"Content-Type: text/html; charset=UTF-8"].location, - (NSUInteger)NSNotFound, nil); - - // test the plain code response - - expectedResponse = [GTMHTTPResponseMessage emptyResponseWithCode:299]; - STAssertNotNil(expectedResponse, nil); - STAssertGreaterThan([[expectedResponse description] length], - (NSUInteger)0, nil); - [delegate pushResponse:expectedResponse]; - responseData = [self fetchFromPort:[server port] - payload:@"GET /foo HTTP/1.0\r\n\r\n" - chunkSize:kSendChunkSize]; - STAssertNotNil(responseData, nil); - responseString = - [[[NSString alloc] initWithData:responseData - encoding:NSUTF8StringEncoding] autorelease]; - STAssertNotNil(responseString, nil); - STAssertTrue([responseString hasPrefix:@"HTTP/1.0 299 "], nil); - STAssertNotEquals([responseString rangeOfString:@"Content-Length: 0"].location, - (NSUInteger)NSNotFound, nil); - STAssertNotEquals([responseString rangeOfString:@"Content-Type: text/html"].location, - (NSUInteger)NSNotFound, nil); - - // test the general api w/ extra header add - - expectedResponse = - [GTMHTTPResponseMessage responseWithBody:[@"FOO" dataUsingEncoding:NSUTF8StringEncoding] - contentType:@"some/type" - statusCode:298]; - STAssertNotNil(expectedResponse, nil); - STAssertGreaterThan([[expectedResponse description] length], - (NSUInteger)0, nil); - [expectedResponse setValue:@"Custom_Value" - forHeaderField:@"Custom-Header"]; - [expectedResponse setValue:nil - forHeaderField:@"Custom-Header2"]; - [delegate pushResponse:expectedResponse]; - responseData = [self fetchFromPort:[server port] - payload:@"GET /foo HTTP/1.0\r\n\r\n" - chunkSize:kSendChunkSize]; - STAssertNotNil(responseData, nil); - responseString = - [[[NSString alloc] initWithData:responseData - encoding:NSUTF8StringEncoding] autorelease]; - STAssertNotNil(responseString, nil); - STAssertTrue([responseString hasPrefix:@"HTTP/1.0 298"], nil); - STAssertTrue([responseString hasSuffix:@"FOO"], @"should end w/ our data"); - STAssertNotEquals([responseString rangeOfString:@"Content-Length: 3"].location, - (NSUInteger)NSNotFound, nil); - STAssertNotEquals([responseString rangeOfString:@"Content-Type: some/type"].location, - (NSUInteger)NSNotFound, nil); - STAssertNotEquals([responseString rangeOfString:@"Custom-Header: Custom_Value"].location, - (NSUInteger)NSNotFound, nil); - STAssertNotEquals([responseString rangeOfString:@"Custom-Header2: "].location, - (NSUInteger)NSNotFound, nil); - - [server stop]; -} - -- (void)testRequstEdgeCases { - // test all the odd things about requests - - TestServerDelegate *delegate = [TestServerDelegate testServerDelegate]; - STAssertNotNil(delegate, nil); - GTMHTTPServer *server = - [[[GTMHTTPServer alloc] initWithDelegate:delegate] autorelease]; - STAssertNotNil(server, nil); - NSError *error = nil; - STAssertTrue([server start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - - // extra data (ie-pipelining) - - NSString *payload = - @"GET /some/server/path HTTP/1.0\r\n" - @"\r\n" - @"GET /some/server/path/too HTTP/1.0\r\n" - @"\r\n"; - // don't chunk this, we want to make sure both requests get to our server - [GTMUnitTestDevLog expectString:@"Got 38 extra bytes on http request, " - "ignoring them"]; - NSData *reply = - [self fetchFromPort:[server port] payload:payload chunkSize:0]; - STAssertNotNil(reply, nil); - STAssertEquals([delegate requestCount], (NSUInteger)1, nil); - - // close w/o full request - { - // local pool so we can force our handle to close - NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init]; - NSFileHandle *handle = - [self fileHandleSendingToPort:[server port] - payload:@"GET /some/server/path HTTP/" - chunkSize:kSendChunkSize]; - STAssertNotNil(handle, nil); - // spin the run loop so reads the start of the request - NSDate* loopIntervalDate = - [NSDate dateWithTimeIntervalSinceNow:kRunLoopInterval]; - [[NSRunLoop currentRunLoop] runUntilDate:loopIntervalDate]; - // make sure we see the request at this point - STAssertEquals([server activeRequestCount], (NSUInteger)1, - @"should have started the request by now"); - // force the connection closed and drop the pool to get all the cleanup to - // happen. - [handle closeFile]; - [localPool drain]; - // spin the run loop so it should see the close - loopIntervalDate = [NSDate dateWithTimeIntervalSinceNow:kRunLoopInterval]; - [[NSRunLoop currentRunLoop] runUntilDate:loopIntervalDate]; - // make sure we didn't get a request (1 is from test before) and make sure - // we don't have some in flight. - STAssertEquals([delegate requestCount], (NSUInteger)1, - @"shouldn't have gotten another request"); - STAssertEquals([server activeRequestCount], (NSUInteger)0, - @"should have cleaned up the pending connection"); - } - -} - -- (void)testExceptionDuringRequest { - - TestServerDelegate *delegate = [TestThrowingServerDelegate testServerDelegate]; - STAssertNotNil(delegate, nil); - GTMHTTPServer *server = - [[[GTMHTTPServer alloc] initWithDelegate:delegate] autorelease]; - STAssertNotNil(server, nil); - NSError *error = nil; - STAssertTrue([server start:&error], @"failed to start (error=%@)", error); - STAssertNil(error, @"error: %@", error); - [GTMUnitTestDevLog expectString:@"Exception trying to handle http request: " - "To test our handling"]; - NSData *responseData = [self fetchFromPort:[server port] - payload:@"GET /foo HTTP/1.0\r\n\r\n" - chunkSize:kSendChunkSize]; - STAssertNotNil(responseData, nil); - STAssertEquals([responseData length], (NSUInteger)0, nil); - STAssertEquals([delegate requestCount], (NSUInteger)1, nil); - STAssertEquals([server activeRequestCount], (NSUInteger)0, nil); -} - -@end - -// ---------------------------------------------------------------------------- - -@implementation GTMHTTPServerTest (PrivateMethods) - -- (NSData *)fetchFromPort:(unsigned short)port - payload:(NSString *)payload - chunkSize:(NSUInteger)chunkSize { - fetchedData_ = nil; - - NSFileHandle *handle = [self fileHandleSendingToPort:port - payload:payload - chunkSize:chunkSize]; - - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - [center addObserver:self - selector:@selector(readFinished:) - name:NSFileHandleReadToEndOfFileCompletionNotification - object:handle]; - [handle readToEndOfFileInBackgroundAndNotify]; - - // wait for our reply - NSDate* giveUpDate = [NSDate dateWithTimeIntervalSinceNow:kGiveUpInterval]; - while (!fetchedData_ && [giveUpDate timeIntervalSinceNow] > 0) { - NSDate* loopIntervalDate = - [NSDate dateWithTimeIntervalSinceNow:kRunLoopInterval]; - [[NSRunLoop currentRunLoop] runUntilDate:loopIntervalDate]; - } - - [center removeObserver:self - name:NSFileHandleReadToEndOfFileCompletionNotification - object:handle]; - - NSData *result = [fetchedData_ autorelease]; - fetchedData_ = nil; - return result; -} - -- (NSFileHandle *)fileHandleSendingToPort:(unsigned short)port - payload:(NSString *)payload - chunkSize:(NSUInteger)chunkSize { - int fd = socket(AF_INET, SOCK_STREAM, 0); - STAssertGreaterThan(fd, 0, @"failed to create socket"); - - struct sockaddr_in addr; - bzero(&addr, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = htonl(0x7F000001); - int connectResult = - connect(fd, (struct sockaddr*)(&addr), (socklen_t)sizeof(addr)); - STAssertEquals(connectResult, 0, nil); - - NSFileHandle *handle = - [[[NSFileHandle alloc] initWithFileDescriptor:fd - closeOnDealloc:YES] autorelease]; - STAssertNotNil(handle, nil); - - NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding]; - - // we can send in one block or in chunked mode - if (chunkSize > 0) { - // we don't write the data in one large block, instead of write it out - // in bits to help test the data collection code. - NSUInteger length = [payloadData length]; - for (NSUInteger x = 0 ; x < length ; x += chunkSize) { - NSUInteger dataChunkSize = length - x; - if (dataChunkSize > chunkSize) { - dataChunkSize = chunkSize; - } - NSData *dataChunk - = [payloadData subdataWithRange:NSMakeRange(x, dataChunkSize)]; - [handle writeData:dataChunk]; - // delay after all but the last chunk to give it time to be read. - if ((x + chunkSize) < length) { - NSDate* loopIntervalDate = - [NSDate dateWithTimeIntervalSinceNow:kSendChunkInterval]; - [[NSRunLoop currentRunLoop] runUntilDate:loopIntervalDate]; - } - } - } else { - [handle writeData:payloadData]; - } - - return handle; -} - -- (void)readFinished:(NSNotification *)notification { - NSDictionary *userInfo = [notification userInfo]; - fetchedData_ = - [[userInfo objectForKey:NSFileHandleNotificationDataItem] retain]; -} - -@end - -// ---------------------------------------------------------------------------- - -@implementation TestServerDelegate - -- (id)init { - self = [super init]; - if (self) { - requests_ = [[NSMutableArray alloc] init]; - responses_ = [[NSMutableArray alloc] init]; - } - return self; -} - -- (void)dealloc { - [requests_ release]; - [responses_ release]; - [super dealloc]; -} - -+ (id)testServerDelegate { - return [[[[self class] alloc] init] autorelease]; -} - -- (NSUInteger)requestCount { - return [requests_ count]; -} - -- (GTMHTTPRequestMessage *)popRequest { - GTMHTTPRequestMessage *result = [[[requests_ lastObject] retain] autorelease]; - [requests_ removeLastObject]; - return result; -} - -- (void)pushResponse:(GTMHTTPResponseMessage *)message { - [responses_ addObject:message]; -} - -- (GTMHTTPResponseMessage *)httpServer:(GTMHTTPServer *)server - handleRequest:(GTMHTTPRequestMessage *)request { - [requests_ addObject:request]; - - GTMHTTPResponseMessage *result = nil; - if ([responses_ count] > 0) { - result = [[[responses_ lastObject] retain] autorelease]; - [responses_ removeLastObject]; - } else { - result = [GTMHTTPResponseMessage responseWithHTMLString:@"success"]; - } - return result; -} - -@end - -// ---------------------------------------------------------------------------- - -@implementation TestThrowingServerDelegate - -- (GTMHTTPResponseMessage *)httpServer:(GTMHTTPServer *)server - handleRequest:(GTMHTTPRequestMessage *)request { - // let the base do its normal work for counts, etc. - [super httpServer:server handleRequest:request]; - NSException *exception = - [NSException exceptionWithName:@"InternalTestingException" - reason:@"To test our handling" - userInfo:nil]; - @throw exception; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.h deleted file mode 100644 index 2e2a7487..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// GTMLightweightProxy.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -// -// GTMLightweightProxy -// -// An object which does nothing but stand in for another object and forward -// messages (other than basic NSObject messages) to it, suitable for breaking -// retain cycles. It does *not* retain the represented object, so the -// represented object must be set to nil when that object is deallocated. -// -// Messages sent to a GTMLightweightProxy with no represented object set will -// be silently discarded. -// -@interface GTMLightweightProxy : NSProxy { - @private - __weak id representedObject_; -} - -// Initializes the object to represent |object|. -- (id)initWithRepresentedObject:(id)object; - -// Gets the object that the proxy represents. -- (id)representedObject; - -// Changes the proxy to represent |object| -- (void)setRepresentedObject:(id)object; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.m deleted file mode 100644 index c00e44bd..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxy.m +++ /dev/null @@ -1,114 +0,0 @@ -// -// GTMLightweightProxy.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMLightweightProxy.h" -#import "GTMDefines.h" - -@implementation GTMLightweightProxy - -- (id)initWithRepresentedObject:(id)object { - // it's weak, we don't retain - representedObject_ = object; - return self; -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -#if GTM_SUPPORT_GC -// -[NSProxy finalize] is only in 10.5 or later -- (void)finalize { - representedObject_ = nil; - [super finalize]; -} -#endif -#endif - -- (void)dealloc { - // it's weak, we don't release - representedObject_ = nil; - [super dealloc]; -} - -- (id)representedObject { - // Use a local variable to avoid a bogus compiler warning. - id repObject = nil; - @synchronized(self) { - // Even though we don't retain this object, we hang it on the lifetime - // of the calling threads pool so it's lifetime is safe for at least that - // long. - repObject = [representedObject_ retain]; - } - return [repObject autorelease]; -} - -- (void)setRepresentedObject:(id)object { - @synchronized(self) { - representedObject_ = object; - } -} - -// Passes any unhandled method to the represented object if it responds to that -// method. -- (void)forwardInvocation:(NSInvocation*)invocation { - id target = [self representedObject]; - // Silently discard all messages when there's no represented object - if (!target) - return; - - SEL aSelector = [invocation selector]; - if ([target respondsToSelector:aSelector]) - [invocation invokeWithTarget:target]; -} - -// Gets the represented object's method signature for |selector|; necessary for -// forwardInvocation. -- (NSMethodSignature*)methodSignatureForSelector:(SEL)selector { - id target = [self representedObject]; - if (target) { - return [target methodSignatureForSelector:selector]; - } else { - // Apple's underlying forwarding code crashes if we return nil here. - // Since we are not going to use the invocation being constructed - // if there's no representedObject, a random valid NSMethodSignature is fine. - return [NSObject methodSignatureForSelector:@selector(alloc)]; - } -} - -// Prevents exceptions from unknown selectors if there is no represented -// object, and makes the exception come from the right place if there is one. -- (void)doesNotRecognizeSelector:(SEL)selector { - id target = [self representedObject]; - if (target) - [target doesNotRecognizeSelector:selector]; -} - -// Checks the represented object's selectors to allow clients of the proxy to -// do respondsToSelector: tests. -- (BOOL)respondsToSelector:(SEL)selector { - if ([super respondsToSelector:selector] || - selector == @selector(initWithRepresentedObject:) || - selector == @selector(representedObject) || - selector == @selector(setRepresentedObject:)) - { - return YES; - } - - id target = [self representedObject]; - return target && [target respondsToSelector:selector]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxyTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxyTest.m deleted file mode 100644 index e50a9dc2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLightweightProxyTest.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// GTMLightweightProxyTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMLightweightProxy.h" - -@interface GTMLightweightProxyTest : GTMTestCase -- (BOOL)returnYes; -@end - -// Declare a non-existent method that we can call without compiler warnings. -@interface GTMLightweightProxyTest (GTMLightweightProxyTestMadeUpMethodDeclaration) -- (void)someMadeUpMethod; -@end - -@implementation GTMLightweightProxyTest - -- (void)testProxy { - id proxy - = [[[GTMLightweightProxy alloc] initWithRepresentedObject:self] autorelease]; - STAssertEqualObjects(self, [proxy representedObject], - @"Represented object setup failed"); - - // Check that it identifies itself as a proxy. - STAssertTrue([proxy isProxy], @"Should identify as a proxy"); - // Check that it passes class requests on - STAssertTrue([proxy isMemberOfClass:[self class]], - @"Should pass class requests through"); - - // Check that it claims to respond to its selectors. - STAssertTrue([proxy respondsToSelector:@selector(initWithRepresentedObject:)], - @"Claims not to respond to initWithRepresentedObject:"); - STAssertTrue([proxy respondsToSelector:@selector(representedObject)], - @"Claims not to respond to representedObject:"); - STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)], - @"Claims not to respond to setRepresentedObject:"); - // Check that it responds to its represented object's selectors - STAssertTrue([proxy respondsToSelector:@selector(returnYes)], - @"Claims not to respond to returnYes"); - // ... but not to made up selectors. - STAssertThrows([proxy someMadeUpMethod], - @"Calling a bogus method should throw"); - - // Check that callthrough works. - STAssertTrue([proxy returnYes], - @"Calling through to the represented object failed"); - - // Check that nilling out the represented object works. - [proxy setRepresentedObject:nil]; - STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)], - @"Claims not to respond to setRepresentedObject: after nilling" - @" out represented object"); - STAssertFalse([proxy respondsToSelector:@selector(returnYes)], - @"Claims to respond to returnYes after nilling out represented" - @" object"); - // Calling through once the represented object is nil should fail silently - STAssertNoThrow([proxy returnYes], - @"Calling through without a represented object should fail" - @" silently"); - // ... even when they are made up. - STAssertNoThrow([proxy someMadeUpMethod], - @"Calling a bogus method on a nilled proxy should not throw"); -} - -// Simple method to test calling through the proxy. -- (BOOL)returnYes { - return YES; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.h deleted file mode 100644 index 689a0d95..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.h +++ /dev/null @@ -1,87 +0,0 @@ -// -// GTMLogger+ASL.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import -#import "GTMLogger.h" - - -// GTMLogger (GTMLoggerASLAdditions) -// -// Adds a convenience creation method that allows you to get a standard -// GTMLogger object that is configured to write to ASL (Apple System Log) using -// the GTMLogASLWriter (declared below). -// -@interface GTMLogger (GTMLoggerASLAdditions) - -// Returns a new autoreleased GTMLogger instance that will log to ASL, using -// the GTMLogStandardFormatter, and the GTMLogLevelFilter filter. -+ (id)standardLoggerWithASL; - -@end - - -@class GTMLoggerASLClient; - -// GTMLogASLWriter -// -// A GTMLogWriter implementation that will send log messages to ASL (Apple -// System Log facility). To use with GTMLogger simply set the "writer" for a -// GTMLogger to be an instance of this class. The following example sets the -// shared system logger to lot to ASL. -// -// [[GTMLogger sharedLogger] setWriter:[GTMLogASLWriter aslWriter]]; -// GTMLoggerInfo(@"Hi"); // This is sent to ASL -// -// See GTMLogger.h for more details and a higher-level view. -// -@interface GTMLogASLWriter : NSObject { - @private - __weak Class aslClientClass_; -} - -// Returns an autoreleased GTMLogASLWriter instance that uses an instance of -// GTMLoggerASLClient. -+ (id)aslWriter; - -// Designated initializer. Uses instances of the specified |clientClass| to talk -// to the ASL system. This method is typically only useful for testing. Users -// should generally NOT use this method to get an instance. Instead, simply use -// the +aslWriter method to obtain an instance. -- (id)initWithClientClass:(Class)clientClass; - -@end // GTMLogASLWriter - - -// Helper class used by GTMLogASLWriter to create an ASL client and write to the -// ASL log. This class is need to make management/cleanup of the aslclient work -// in a multithreaded environment. You'll need one of these GTMLoggerASLClient -// per thread (this is automatically handled by GTMLogASLWriter). -// -// This class should rarely (if EVER) be used directly. It's designed to be used -// internally by GTMLogASLWriter, and by some unit tests. It should not be -// used externally. -@interface GTMLoggerASLClient : NSObject { - @private - aslclient client_; -} - -// Sends the given string to ASL at the specified ASL log |level|. -- (void)log:(NSString *)msg level:(int)level; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.m deleted file mode 100644 index 90ea7e57..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASL.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// GTMLogger+ASL.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLogger+ASL.h" -#import "GTMDefines.h" - - -@implementation GTMLogger (GTMLoggerASLAdditions) - -+ (id)standardLoggerWithASL { - id me = [self standardLogger]; - [me setWriter:[[[GTMLogASLWriter alloc] init] autorelease]]; - [me setFormatter:[[[GTMLogBasicFormatter alloc] init] autorelease]]; - return me; -} - -@end - - -@implementation GTMLogASLWriter - -+ (id)aslWriter { - return [[[self alloc] init] autorelease]; -} - -- (id)init { - return [self initWithClientClass:nil]; -} - -- (id)initWithClientClass:(Class)clientClass { - if ((self = [super init])) { - aslClientClass_ = clientClass; - if (aslClientClass_ == nil) { - aslClientClass_ = [GTMLoggerASLClient class]; - } - } - return self; -} - -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - static NSString *const kASLClientKey = @"GTMLoggerASLClientKey"; - - // Lookup the ASL client in the thread-local storage dictionary - NSMutableDictionary *tls = [[NSThread currentThread] threadDictionary]; - GTMLoggerASLClient *client = [tls objectForKey:kASLClientKey]; - - // If the ASL client wasn't found (e.g., the first call from this thread), - // then create it and store it in the thread-local storage dictionary - if (client == nil) { - client = [[[aslClientClass_ alloc] init] autorelease]; - [tls setObject:client forKey:kASLClientKey]; - } - - // Map the GTMLoggerLevel level to an ASL level. - int aslLevel = ASL_LEVEL_INFO; - switch (level) { - case kGTMLoggerLevelUnknown: - case kGTMLoggerLevelDebug: - case kGTMLoggerLevelInfo: - aslLevel = ASL_LEVEL_NOTICE; - break; - case kGTMLoggerLevelError: - aslLevel = ASL_LEVEL_ERR; - break; - case kGTMLoggerLevelAssert: - aslLevel = ASL_LEVEL_ALERT; - break; - } - - [client log:msg level:aslLevel]; -} - -@end // GTMLogASLWriter - - -@implementation GTMLoggerASLClient - -- (id)init { - if ((self = [super init])) { - client_ = asl_open(NULL, NULL, 0); - if (client_ == nil) { - // COV_NF_START - no real way to test this - [self release]; - return nil; - // COV_NF_END - } - } - return self; -} - -- (void)dealloc { - if (client_) asl_close(client_); - [super dealloc]; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - if (client_) asl_close(client_); - [super finalize]; -} -#endif - -// We don't test this one line because we don't want to pollute actual system -// logs with test messages. -// COV_NF_START -- (void)log:(NSString *)msg level:(int)level { - asl_log(client_, NULL, level, "%s", [msg UTF8String]); -} -// COV_NF_END - -@end // GTMLoggerASLClient diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASLTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASLTest.m deleted file mode 100644 index cd324843..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger+ASLTest.m +++ /dev/null @@ -1,90 +0,0 @@ -// -// GTMLogger+ASLTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLogger+ASL.h" -#import "GTMSenTestCase.h" - -@interface DummyASLClient : GTMLoggerASLClient -@end - -static NSMutableArray *gDummyLog; // weak - -@implementation DummyASLClient - -- (void)log:(NSString *)msg level:(int)level { - NSString *line = [msg stringByAppendingFormat:@"@%d", level]; - [gDummyLog addObject:line]; -} - -@end - - -@interface GTMLogger_ASLTest : GTMTestCase -@end - -@implementation GTMLogger_ASLTest - -- (void)testCreation { - GTMLogger *aslLogger = [GTMLogger standardLoggerWithASL]; - STAssertNotNil(aslLogger, nil); - - GTMLogASLWriter *writer = [GTMLogASLWriter aslWriter]; - STAssertNotNil(writer, nil); -} - -- (void)testLogWriter { - gDummyLog = [[[NSMutableArray alloc] init] autorelease]; - GTMLogASLWriter *writer = [[[GTMLogASLWriter alloc] - initWithClientClass:[DummyASLClient class]] - autorelease]; - - - STAssertNotNil(writer, nil); - STAssertTrue([gDummyLog count] == 0, nil); - - // Log some messages - [writer logMessage:@"unknown" level:kGTMLoggerLevelUnknown]; - [writer logMessage:@"debug" level:kGTMLoggerLevelDebug]; - [writer logMessage:@"info" level:kGTMLoggerLevelInfo]; - [writer logMessage:@"error" level:kGTMLoggerLevelError]; - [writer logMessage:@"assert" level:kGTMLoggerLevelAssert]; - - // Inspect the logged message to make sure they were logged correctly. The - // dummy writer will save the messages w/ @level concatenated. The "level" - // will be the ASL level, not the GTMLogger level. GTMLogASLWriter will log - // all - NSArray *expected = [NSArray arrayWithObjects: - @"unknown@5", - @"debug@5", - @"info@5", - @"error@3", - @"assert@1", - nil]; - - STAssertEqualObjects(gDummyLog, expected, nil); - - gDummyLog = nil; -} - -- (void)testASLClient { - GTMLoggerASLClient *client = [[GTMLoggerASLClient alloc] init]; - STAssertNotNil(client, nil); - [client release]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.h deleted file mode 100644 index 1626b1b6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.h +++ /dev/null @@ -1,458 +0,0 @@ -// -// GTMLogger.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -// Key Abstractions -// ---------------- -// -// This file declares multiple classes and protocols that are used by the -// GTMLogger logging system. The 4 main abstractions used in this file are the -// following: -// -// * logger (GTMLogger) - The main logging class that users interact with. It -// has methods for logging at different levels and uses a log writer, a log -// formatter, and a log filter to get the job done. -// -// * log writer (GTMLogWriter) - Writes a given string to some log file, where -// a "log file" can be a physical file on disk, a POST over HTTP to some URL, -// or even some in-memory structure (e.g., a ring buffer). -// -// * log formatter (GTMLogFormatter) - Given a format string and arguments as -// a va_list, returns a single formatted NSString. A "formatted string" could -// be a string with the date prepended, a string with values in a CSV format, -// or even a string of XML. -// -// * log filter (GTMLogFilter) - Given a formatted log message as an NSString -// and the level at which the message is to be logged, this class will decide -// whether the given message should be logged or not. This is a flexible way -// to filter out messages logged at a certain level, messages that contain -// certain text, or filter nothing out at all. This gives the caller the -// flexibility to dynamically enable debug logging in Release builds. -// -// This file also declares some classes to handle the common log writer, log -// formatter, and log filter cases. Callers can also create their own writers, -// formatters, and filters and they can even build them on top of the ones -// declared here. Keep in mind that your custom writer/formatter/filter may be -// called from multiple threads, so it must be thread-safe. - -#import - -// Predeclaration of used protocols that are declared later in this file. -@protocol GTMLogWriter, GTMLogFormatter, GTMLogFilter; - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -#define CHECK_FORMAT_NSSTRING(a, b) __attribute__((format(__NSString__, a, b))) -#else -#define CHECK_FORMAT_NSSTRING(a, b) -#endif - -// GTMLogger -// -// GTMLogger is the primary user-facing class for an object-oriented logging -// system. It is built on the concept of log formatters (GTMLogFormatter), log -// writers (GTMLogWriter), and log filters (GTMLogFilter). When a message is -// sent to a GTMLogger to log a message, the message is formatted using the log -// formatter, then the log filter is consulted to see if the message should be -// logged, and if so, the message is sent to the log writer to be written out. -// -// GTMLogger is intended to be a flexible and thread-safe logging solution. Its -// flexibility comes from the fact that GTMLogger instances can be customized -// with user defined formatters, filters, and writers. And these writers, -// filters, and formatters can be combined, stacked, and customized in arbitrary -// ways to suit the needs at hand. For example, multiple writers can be used at -// the same time, and a GTMLogger instance can even be used as another -// GTMLogger's writer. This allows for arbitrarily deep logging trees. -// -// A standard GTMLogger uses a writer that sends messages to standard out, a -// formatter that smacks a timestamp and a few other bits of interesting -// information on the message, and a filter that filters out debug messages from -// release builds. Using the standard log settings, a log message will look like -// the following: -// -// 2007-12-30 10:29:24.177 myapp[4588/0xa07d0f60] [lvl=1] foo= -// -// The output contains the date and time of the log message, the name of the -// process followed by its process ID/thread ID, the log level at which the -// message was logged (in the previous example the level was 1: -// kGTMLoggerLevelDebug), and finally, the user-specified log message itself (in -// this case, the log message was @"foo=%@", foo). -// -// Multiple instances of GTMLogger can be created, each configured their own -// way. Though GTMLogger is not a singleton (in the GoF sense), it does provide -// access to a shared (i.e., globally accessible) GTMLogger instance. This makes -// it convenient for all code in a process to use the same GTMLogger instance. -// The shared GTMLogger instance can also be configured in an arbitrary, and -// these configuration changes will affect all code that logs through the shared -// instance. - -// -// Log Levels -// ---------- -// GTMLogger has 3 different log levels: Debug, Info, and Error. GTMLogger -// doesn't take any special action based on the log level; it simply forwards -// this information on to formatters, filters, and writers, each of which may -// optionally take action based on the level. Since log level filtering is -// performed at runtime, log messages are typically not filtered out at compile -// time. The exception to this rule is that calls to the GTMLoggerDebug() macro -// *ARE* filtered out of non-DEBUG builds. This is to be backwards compatible -// with behavior that many developers are currently used to. Note that this -// means that GTMLoggerDebug(@"hi") will be compiled out of Release builds, but -// [[GTMLogger sharedLogger] logDebug:@"hi"] will NOT be compiled out. -// -// Standard loggers are created with the GTMLogLevelFilter log filter, which -// filters out certain log messages based on log level, and some other settings. -// -// In addition to the -logDebug:, -logInfo:, and -logError: methods defined on -// GTMLogger itself, there are also C macros that make usage of the shared -// GTMLogger instance very convenient. These macros are: -// -// GTMLoggerDebug(...) -// GTMLoggerInfo(...) -// GTMLoggerError(...) -// -// Again, a notable feature of these macros is that GTMLogDebug() calls *will be -// compiled out of non-DEBUG builds*. -// -// Standard Loggers -// ---------------- -// GTMLogger has the concept of "standard loggers". A standard logger is simply -// a logger that is pre-configured with some standard/common writer, formatter, -// and filter combination. Standard loggers are created using the creation -// methods beginning with "standard". The alternative to a standard logger is a -// regular logger, which will send messages to stdout, with no special -// formatting, and no filtering. -// -// How do I use GTMLogger? -// ---------------------- -// The typical way you will want to use GTMLogger is to simply use the -// GTMLogger*() macros for logging from code. That way we can easily make -// changes to the GTMLogger class and simply update the macros accordingly. Only -// your application startup code (perhaps, somewhere in main()) should use the -// GTMLogger class directly in order to configure the shared logger, which all -// of the code using the macros will be using. Again, this is just the typical -// situation. -// -// To be complete, there are cases where you may want to use GTMLogger directly, -// or even create separate GTMLogger instances for some reason. That's fine, -// too. -// -// Examples -// -------- -// The following show some common GTMLogger use cases. -// -// 1. You want to log something as simply as possible. Also, this call will only -// appear in debug builds. In non-DEBUG builds it will be completely removed. -// -// GTMLoggerDebug(@"foo = %@", foo); -// -// 2. The previous example is similar to the following. The major difference is -// that the previous call (example 1) will be compiled out of Release builds -// but this statement will not be compiled out. -// -// [[GTMLogger sharedLogger] logDebug:@"foo = %@", foo]; -// -// 3. Send all logging output from the shared logger to a file. We do this by -// creating an NSFileHandle for writing associated with a file, and setting -// that file handle as the logger's writer. -// -// NSFileHandle *f = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/f.log" -// create:YES]; -// [[GTMLogger sharedLogger] setWriter:f]; -// GTMLoggerError(@"hi"); // This will be sent to /tmp/f.log -// -// 4. Create a new GTMLogger that will log to a file. This example differs from -// the previous one because here we create a new GTMLogger that is different -// from the shared logger. -// -// GTMLogger *logger = [GTMLogger standardLoggerWithPath:@"/tmp/temp.log"]; -// [logger logInfo:@"hi temp log file"]; -// -// 5. Create a logger that writes to stdout and does NOT do any formatting to -// the log message. This might be useful, for example, when writing a help -// screen for a command-line tool to standard output. -// -// GTMLogger *logger = [GTMLogger logger]; -// [logger logInfo:@"%@ version 0.1 usage", progName]; -// -// 6. Send log output to stdout AND to a log file. The trick here is that -// NSArrays function as composite log writers, which means when an array is -// set as the log writer, it forwards all logging messages to all of its -// contained GTMLogWriters. -// -// // Create array of GTMLogWriters -// NSArray *writers = [NSArray arrayWithObjects: -// [NSFileHandle fileHandleForWritingAtPath:@"/tmp/f.log" create:YES], -// [NSFileHandle fileHandleWithStandardOutput], nil]; -// -// GTMLogger *logger = [GTMLogger standardLogger]; -// [logger setWriter:writers]; -// [logger logInfo:@"hi"]; // Output goes to stdout and /tmp/f.log -// -// For futher details on log writers, formatters, and filters, see the -// documentation below. -// -// NOTE: GTMLogger is application level logging. By default it does nothing -// with _GTMDevLog/_GTMDevAssert (see GTMDefines.h). An application can choose -// to bridge _GTMDevLog/_GTMDevAssert to GTMLogger by providing macro -// definitions in its prefix header (see GTMDefines.h for how one would do -// that). -// -@interface GTMLogger : NSObject { - @private - id writer_; - id formatter_; - id filter_; -} - -// -// Accessors for the shared logger instance -// - -// Returns a shared/global standard GTMLogger instance. Callers should typically -// use this method to get a GTMLogger instance, unless they explicitly want -// their own instance to configure for their own needs. This is the only method -// that returns a shared instance; all the rest return new GTMLogger instances. -+ (id)sharedLogger; - -// Sets the shared logger instance to |logger|. Future calls to +sharedLogger -// will return |logger| instead. -+ (void)setSharedLogger:(GTMLogger *)logger; - -// -// Creation methods -// - -// Returns a new autoreleased GTMLogger instance that will log to stdout, using -// the GTMLogStandardFormatter, and the GTMLogLevelFilter filter. -+ (id)standardLogger; - -// Same as +standardLogger, but logs to stderr. -+ (id)standardLoggerWithStderr; - -// Returns a new standard GTMLogger instance with a log writer that will -// write to the file at |path|, and will use the GTMLogStandardFormatter and -// GTMLogLevelFilter classes. If |path| does not exist, it will be created. -+ (id)standardLoggerWithPath:(NSString *)path; - -// Returns an autoreleased GTMLogger instance that will use the specified -// |writer|, |formatter|, and |filter|. -+ (id)loggerWithWriter:(id)writer - formatter:(id)formatter - filter:(id)filter; - -// Returns an autoreleased GTMLogger instance that logs to stdout, with the -// basic formatter, and no filter. The returned logger differs from the logger -// returned by +standardLogger because this one does not do any filtering and -// does not do any special log formatting; this is the difference between a -// "regular" logger and a "standard" logger. -+ (id)logger; - -// Designated initializer. This method returns a GTMLogger initialized with the -// specified |writer|, |formatter|, and |filter|. See the setter methods below -// for what values will be used if nil is passed for a parameter. -- (id)initWithWriter:(id)writer - formatter:(id)formatter - filter:(id)filter; - -// -// Logging methods -// - -// Logs a message at the debug level (kGTMLoggerLevelDebug). -- (void)logDebug:(NSString *)fmt, ... CHECK_FORMAT_NSSTRING(1, 2); -// Logs a message at the info level (kGTMLoggerLevelInfo). -- (void)logInfo:(NSString *)fmt, ... CHECK_FORMAT_NSSTRING(1, 2); -// Logs a message at the error level (kGTMLoggerLevelError). -- (void)logError:(NSString *)fmt, ... CHECK_FORMAT_NSSTRING(1, 2); -// Logs a message at the assert level (kGTMLoggerLevelAssert). -- (void)logAssert:(NSString *)fmt, ... CHECK_FORMAT_NSSTRING(1, 2); - - -// -// Accessors -// - -// Accessor methods for the log writer. If the log writer is set to nil, -// [NSFileHandle fileHandleWithStandardOutput] is used. -- (id)writer; -- (void)setWriter:(id)writer; - -// Accessor methods for the log formatter. If the log formatter is set to nil, -// GTMLogBasicFormatter is used. This formatter will format log messages in a -// plain printf style. -- (id)formatter; -- (void)setFormatter:(id)formatter; - -// Accessor methods for the log filter. If the log filter is set to nil, -// GTMLogNoFilter is used, which allows all log messages through. -- (id)filter; -- (void)setFilter:(id)filter; - -@end // GTMLogger - - -// Helper functions that are used by the convenience GTMLogger*() macros that -// enable the logging of function names. -@interface GTMLogger (GTMLoggerMacroHelpers) -- (void)logFuncDebug:(const char *)func msg:(NSString *)fmt, ... - CHECK_FORMAT_NSSTRING(2, 3); -- (void)logFuncInfo:(const char *)func msg:(NSString *)fmt, ... - CHECK_FORMAT_NSSTRING(2, 3); -- (void)logFuncError:(const char *)func msg:(NSString *)fmt, ... - CHECK_FORMAT_NSSTRING(2, 3); -- (void)logFuncAssert:(const char *)func msg:(NSString *)fmt, ... - CHECK_FORMAT_NSSTRING(2, 3); -@end // GTMLoggerMacroHelpers - - -// Convenience macros that log to the shared GTMLogger instance. These macros -// are how users should typically log to GTMLogger. Notice that GTMLoggerDebug() -// calls will be compiled out of non-Debug builds. -#define GTMLoggerDebug(...) \ - [[GTMLogger sharedLogger] logFuncDebug:__func__ msg:__VA_ARGS__] -#define GTMLoggerInfo(...) \ - [[GTMLogger sharedLogger] logFuncInfo:__func__ msg:__VA_ARGS__] -#define GTMLoggerError(...) \ - [[GTMLogger sharedLogger] logFuncError:__func__ msg:__VA_ARGS__] -#define GTMLoggerAssert(...) \ - [[GTMLogger sharedLogger] logFuncAssert:__func__ msg:__VA_ARGS__] - -// If we're not in a debug build, remove the GTMLoggerDebug statements. This -// makes calls to GTMLoggerDebug "compile out" of Release builds -#ifndef DEBUG -#undef GTMLoggerDebug -#define GTMLoggerDebug(...) do {} while(0) -#endif - -// Log levels. -typedef enum { - kGTMLoggerLevelUnknown, - kGTMLoggerLevelDebug, - kGTMLoggerLevelInfo, - kGTMLoggerLevelError, - kGTMLoggerLevelAssert, -} GTMLoggerLevel; - - -// -// Log Writers -// - -// Protocol to be implemented by a GTMLogWriter instance. -@protocol GTMLogWriter -// Writes the given log message to where the log writer is configured to write. -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level; -@end // GTMLogWriter - - -// Simple category on NSFileHandle that makes NSFileHandles valid log writers. -// This is convenient because something like, say, +fileHandleWithStandardError -// now becomes a valid log writer. Log messages are written to the file handle -// with a newline appended. -@interface NSFileHandle (GTMFileHandleLogWriter) -// Opens the file at |path| in append mode, and creates the file with |mode| -// if it didn't previously exist. -+ (id)fileHandleForLoggingAtPath:(NSString *)path mode:(mode_t)mode; -@end // NSFileHandle - - -// This category makes NSArray a GTMLogWriter that can be composed of other -// GTMLogWriters. This is the classic Composite GoF design pattern. When the -// GTMLogWriter -logMessage:level: message is sent to the array, the array -// forwards the message to all of its elements that implement the GTMLogWriter -// protocol. -// -// This is useful in situations where you would like to send log output to -// multiple log writers at the same time. Simply create an NSArray of the log -// writers you wish to use, then set the array as the "writer" for your -// GTMLogger instance. -@interface NSArray (GTMArrayCompositeLogWriter) -@end // GTMArrayCompositeLogWriter - - -// This category adapts the GTMLogger interface so that it can be used as a log -// writer; it's an "adapter" in the GoF Adapter pattern sense. -// -// This is useful when you want to configure a logger to log to a specific -// writer with a specific formatter and/or filter. But you want to also compose -// that with a different log writer that may have its own formatter and/or -// filter. -@interface GTMLogger (GTMLoggerLogWriter) -@end // GTMLoggerLogWriter - - -// -// Log Formatters -// - -// Protocol to be implemented by a GTMLogFormatter instance. -@protocol GTMLogFormatter -// Returns a formatted string using the format specified in |fmt| and the va -// args specified in |args|. -- (NSString *)stringForFunc:(NSString *)func - withFormat:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level; -@end // GTMLogFormatter - - -// A basic log formatter that formats a string the same way that NSLog (or -// printf) would. It does not do anything fancy, nor does it add any data of its -// own. -@interface GTMLogBasicFormatter : NSObject -@end // GTMLogBasicFormatter - - -// A log formatter that formats the log string like the basic formatter, but -// also prepends a timestamp and some basic process info to the message, as -// shown in the following sample output. -// 2007-12-30 10:29:24.177 myapp[4588/0xa07d0f60] [lvl=1] log mesage here -@interface GTMLogStandardFormatter : GTMLogBasicFormatter { - @private - NSDateFormatter *dateFormatter_; // yyyy-MM-dd HH:mm:ss.SSS - NSString *pname_; - pid_t pid_; -} -@end // GTMLogStandardFormatter - - -// -// Log Filters -// - -// Protocol to be imlemented by a GTMLogFilter instance. -@protocol GTMLogFilter -// Returns YES if |msg| at |level| should be filtered out; NO otherwise. -- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level; -@end // GTMLogFilter - - -// A log filter that filters messages at the kGTMLoggerLevelDebug level out of -// non-debug builds. Messages at the kGTMLoggerLevelInfo level are also filtered -// out of non-debug builds unless GTMVerboseLogging is set in the environment or -// the processes's defaults. Messages at the kGTMLoggerLevelError level are -// never filtered. -@interface GTMLogLevelFilter : NSObject -@end // GTMLogLevelFilter - - -// A simple log filter that does NOT filter anything out; -// -filterAllowsMessage:level will always return YES. This can be a convenient -// way to enable debug-level logging in release builds (if you so desire). -@interface GTMLogNoFilter : NSObject -@end // GTMLogNoFilter - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.m deleted file mode 100644 index de941d2e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLogger.m +++ /dev/null @@ -1,445 +0,0 @@ -// -// GTMLogger.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLogger.h" -#import "GTMGarbageCollection.h" -#import -#import -#import -#import - - -// Define a trivial assertion macro to avoid dependencies -#ifdef DEBUG - #define GTMLOGGER_ASSERT(expr) assert(expr) -#else - #define GTMLOGGER_ASSERT(expr) -#endif - - -@interface GTMLogger (PrivateMethods) - -- (void)logInternalFunc:(const char *)func - format:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level; - -@end - - -// Reference to the shared GTMLogger instance. This is not a singleton, it's -// just an easy reference to one shared instance. -static GTMLogger *gSharedLogger = nil; - - -@implementation GTMLogger - -// Returns a pointer to the shared logger instance. If none exists, a standard -// logger is created and returned. -+ (id)sharedLogger { - @synchronized(self) { - if (gSharedLogger == nil) { - gSharedLogger = [[self standardLogger] retain]; - } - GTMLOGGER_ASSERT(gSharedLogger != nil); - } - return [[gSharedLogger retain] autorelease]; -} - -+ (void)setSharedLogger:(GTMLogger *)logger { - @synchronized(self) { - [gSharedLogger autorelease]; - gSharedLogger = [logger retain]; - } -} - -+ (id)standardLogger { - id writer = [NSFileHandle fileHandleWithStandardOutput]; - id fr = [[[GTMLogStandardFormatter alloc] init] autorelease]; - id filter = [[[GTMLogLevelFilter alloc] init] autorelease]; - return [self loggerWithWriter:writer formatter:fr filter:filter]; -} - -+ (id)standardLoggerWithStderr { - id me = [self standardLogger]; - [me setWriter:[NSFileHandle fileHandleWithStandardError]]; - return me; -} - -+ (id)standardLoggerWithPath:(NSString *)path { - NSFileHandle *fh = [NSFileHandle fileHandleForLoggingAtPath:path mode:0644]; - if (fh == nil) return nil; - id me = [self standardLogger]; - [me setWriter:fh]; - return me; -} - -+ (id)loggerWithWriter:(id)writer - formatter:(id)formatter - filter:(id)filter { - return [[[self alloc] initWithWriter:writer - formatter:formatter - filter:filter] autorelease]; -} - -+ (id)logger { - return [[[self alloc] init] autorelease]; -} - -- (id)init { - return [self initWithWriter:nil formatter:nil filter:nil]; -} - -- (id)initWithWriter:(id)writer - formatter:(id)formatter - filter:(id)filter { - if ((self = [super init])) { - [self setWriter:writer]; - [self setFormatter:formatter]; - [self setFilter:filter]; - GTMLOGGER_ASSERT(formatter_ != nil); - GTMLOGGER_ASSERT(filter_ != nil); - GTMLOGGER_ASSERT(writer_ != nil); - } - return self; -} - -- (void)dealloc { - GTMLOGGER_ASSERT(writer_ != nil); - GTMLOGGER_ASSERT(formatter_ != nil); - GTMLOGGER_ASSERT(filter_ != nil); - [writer_ release]; - [formatter_ release]; - [filter_ release]; - [super dealloc]; -} - -- (id)writer { - GTMLOGGER_ASSERT(writer_ != nil); - return [[writer_ retain] autorelease]; -} - -- (void)setWriter:(id)writer { - @synchronized(self) { - [writer_ autorelease]; - if (writer == nil) - writer_ = [[NSFileHandle fileHandleWithStandardOutput] retain]; - else - writer_ = [writer retain]; - } - GTMLOGGER_ASSERT(writer_ != nil); -} - -- (id)formatter { - GTMLOGGER_ASSERT(formatter_ != nil); - return [[formatter_ retain] autorelease]; -} - -- (void)setFormatter:(id)formatter { - @synchronized(self) { - [formatter_ autorelease]; - if (formatter == nil) - formatter_ = [[GTMLogBasicFormatter alloc] init]; - else - formatter_ = [formatter retain]; - } - GTMLOGGER_ASSERT(formatter_ != nil); -} - -- (id)filter { - GTMLOGGER_ASSERT(filter_ != nil); - return [[filter_ retain] autorelease]; -} - -- (void)setFilter:(id)filter { - @synchronized(self) { - [filter_ autorelease]; - if (filter == nil) - filter_ = [[GTMLogNoFilter alloc] init]; - else - filter_ = [filter retain]; - } - GTMLOGGER_ASSERT(filter_ != nil); -} - -- (void)logDebug:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelDebug]; - va_end(args); -} - -- (void)logInfo:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelInfo]; - va_end(args); -} - -- (void)logError:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelError]; - va_end(args); -} - -- (void)logAssert:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:NULL format:fmt valist:args level:kGTMLoggerLevelAssert]; - va_end(args); -} - -@end // GTMLogger - - -@implementation GTMLogger (GTMLoggerMacroHelpers) - -- (void)logFuncDebug:(const char *)func msg:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelDebug]; - va_end(args); -} - -- (void)logFuncInfo:(const char *)func msg:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelInfo]; - va_end(args); -} - -- (void)logFuncError:(const char *)func msg:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelError]; - va_end(args); -} - -- (void)logFuncAssert:(const char *)func msg:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - [self logInternalFunc:func format:fmt valist:args level:kGTMLoggerLevelAssert]; - va_end(args); -} - -@end // GTMLoggerMacroHelpers - - -@implementation GTMLogger (PrivateMethods) - -- (void)logInternalFunc:(const char *)func - format:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level { - GTMLOGGER_ASSERT(formatter_ != nil); - GTMLOGGER_ASSERT(filter_ != nil); - GTMLOGGER_ASSERT(writer_ != nil); - - NSString *fname = func ? [NSString stringWithUTF8String:func] : nil; - NSString *msg = [formatter_ stringForFunc:fname - withFormat:fmt - valist:args - level:level]; - if (msg && [filter_ filterAllowsMessage:msg level:level]) - [writer_ logMessage:msg level:level]; -} - -@end // PrivateMethods - - -@implementation NSFileHandle (GTMFileHandleLogWriter) - -+ (id)fileHandleForLoggingAtPath:(NSString *)path mode:(mode_t)mode { - int fd = -1; - if (path) { - int flags = O_WRONLY | O_APPEND | O_CREAT; - fd = open([path fileSystemRepresentation], flags, mode); - } - if (fd == -1) return nil; - return [[[self alloc] initWithFileDescriptor:fd - closeOnDealloc:YES] autorelease]; -} - -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - @synchronized(self) { - NSString *line = [NSString stringWithFormat:@"%@\n", msg]; - [self writeData:[line dataUsingEncoding:NSUTF8StringEncoding]]; - } -} - -@end // GTMFileHandleLogWriter - - -@implementation NSArray (GTMArrayCompositeLogWriter) - -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - @synchronized(self) { - id child = nil; - GTM_FOREACH_OBJECT(child, self) { - if ([child conformsToProtocol:@protocol(GTMLogWriter)]) - [child logMessage:msg level:level]; - } - } -} - -@end // GTMArrayCompositeLogWriter - - -@implementation GTMLogger (GTMLoggerLogWriter) - -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - switch (level) { - case kGTMLoggerLevelDebug: - [self logDebug:@"%@", msg]; - break; - case kGTMLoggerLevelInfo: - [self logInfo:@"%@", msg]; - break; - case kGTMLoggerLevelError: - [self logError:@"%@", msg]; - break; - case kGTMLoggerLevelAssert: - [self logAssert:@"%@", msg]; - break; - default: - // Ignore the message. - break; - } -} - -@end // GTMLoggerLogWriter - - -@implementation GTMLogBasicFormatter - -- (NSString *)stringForFunc:(NSString *)func - withFormat:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level { - // Performance note: since we always have to create a new NSString from the - // returned CFStringRef, we may want to do a quick check here to see if |fmt| - // contains a '%', and if not, simply return 'fmt'. - CFStringRef cfmsg = NULL; - cfmsg = CFStringCreateWithFormatAndArguments(kCFAllocatorDefault, - NULL, // format options - (CFStringRef)fmt, - args); - return GTMCFAutorelease(cfmsg); -} - -@end // GTMLogBasicFormatter - - -@implementation GTMLogStandardFormatter - -- (id)init { - if ((self = [super init])) { - dateFormatter_ = [[NSDateFormatter alloc] init]; - [dateFormatter_ setFormatterBehavior:NSDateFormatterBehavior10_4]; - [dateFormatter_ setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; - pname_ = [[[NSProcessInfo processInfo] processName] copy]; - pid_ = [[NSProcessInfo processInfo] processIdentifier]; - } - return self; -} - -- (void)dealloc { - [dateFormatter_ release]; - [pname_ release]; - [super dealloc]; -} - -- (NSString *)stringForFunc:(NSString *)func - withFormat:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level { - GTMLOGGER_ASSERT(dateFormatter_ != nil); - NSString *tstamp = nil; - @synchronized (dateFormatter_) { - tstamp = [dateFormatter_ stringFromDate:[NSDate date]]; - } - return [NSString stringWithFormat:@"%@ %@[%d/%p] [lvl=%d] %@ %@", - tstamp, pname_, pid_, pthread_self(), - level, (func ? func : @"(no func)"), - [super stringForFunc:func withFormat:fmt valist:args level:level]]; -} - -@end // GTMLogStandardFormatter - - -@implementation GTMLogLevelFilter - -// Check the environment and the user preferences for the GTMVerboseLogging key -// to see if verbose logging has been enabled. The environment variable will -// override the defaults setting, so check the environment first. -// COV_NF_START -static BOOL IsVerboseLoggingEnabled(void) { - static NSString *const kVerboseLoggingKey = @"GTMVerboseLogging"; - static char *env = NULL; - if (env == NULL) - env = getenv([kVerboseLoggingKey UTF8String]); - - if (env && env[0]) { - return (strtol(env, NULL, 10) != 0); - } - - return [[NSUserDefaults standardUserDefaults] boolForKey:kVerboseLoggingKey]; -} -// COV_NF_END - -// In DEBUG builds, log everything. If we're not in a debug build we'll assume -// that we're in a Release build. -- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level { -#if DEBUG - return YES; -#endif - - BOOL allow = YES; - - switch (level) { - case kGTMLoggerLevelDebug: - allow = NO; - break; - case kGTMLoggerLevelInfo: - allow = (IsVerboseLoggingEnabled() == YES); - break; - case kGTMLoggerLevelError: - allow = YES; - break; - case kGTMLoggerLevelAssert: - allow = YES; - break; - default: - allow = YES; - break; - } - - return allow; -} - -@end // GTMLogLevelFilter - - -@implementation GTMLogNoFilter - -- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level { - return YES; // Allow everything through -} - -@end // GTMLogNoFilter diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.h deleted file mode 100644 index 30e58ffa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.h +++ /dev/null @@ -1,97 +0,0 @@ -// -// GTMLoggerRingBufferWriter.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLogger.h" -#import "GTMDefines.h" - -typedef struct GTMRingBufferPair GTMRingBufferPair; - -// GTMLoggerRingBufferWriter is a GTMLogWriter that accumulates logged Info -// and Debug messages (when they're not compiled out in a release build) -// into a ring buffer. If an Error or Assert message is -// logged, all of the previously logged messages (up to the size of the -// buffer) are then logged. At that point the buffer resets itself. -// -// How to use: -// -// * Create a logger writer that you want to use to do the ultimate writing, -// such as to stdErr, or a log file, or an NSArray that aggregates other -// writers. -// id someWriter = ... -// -// * Make a new ring buffer with this writer, along with the buffer's -// capacity (which must be >= 1): -// rbw = -// [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:32 -// writer:someWriter]; -// -// * Set your logger's writer to be the ring buffer writer: -// [[GTMLogger sharedLogger] setWriter:rbw]; -// -// Note that this writer is at the end of the GTMLogger food chain, where the -// default filter removes Info messages in Release mode (Debug messages are -// compiled out). You can pass nil to GTMLogger's -setFilter to have it pass -// along all the messages. -// -@interface GTMLoggerRingBufferWriter : NSObject { - @private - id writer_; - GTMRingBufferPair *buffer_; - NSUInteger capacity_; - NSUInteger nextIndex_; // Index of the next element of |buffer_| to fill. - NSUInteger totalLogged_; // This > 0 and |nextIndex_| == 0 means we've wrapped. -} - -// Returns an autoreleased ring buffer writer. If |writer| is nil, -// then nil is returned. -+ (id)ringBufferWriterWithCapacity:(NSUInteger)capacity - writer:(id)loggerWriter; - -// Designated initializer. If |writer| is nil, then nil is returned. -// If you just use -init, nil will be returned. -- (id)initWithCapacity:(NSUInteger)capacity - writer:(id)loggerWriter; - -// How many messages will be logged before older messages get dropped -// on the floor. -- (NSUInteger)capacity; - -// The log writer that will get the buffered log messages if/when they -// need to be displayed. -- (id)writer; - -// How many log messages are currently in the buffer. -- (NSUInteger)count; - -// How many have been dropped on the floor since creation, or the last -// reset. -- (NSUInteger)droppedLogCount; - -// The total number of messages processed since creation, or the last -// reset. -- (NSUInteger)totalLogged; - -// Purge the contents and reset the counters. -- (void)reset; - -// Print out the contents without resetting anything. -// Contents are automatically printed and reset when an error-level -// message comes through. -- (void)dumpContents; - -@end // GTMLoggerRingBufferWriter diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.m deleted file mode 100644 index 4a8c7c6e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriter.m +++ /dev/null @@ -1,248 +0,0 @@ -// -// GTMLoggerRingBufferWriter.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLoggerRingBufferWriter.h" - -// Holds a message and a level. -struct GTMRingBufferPair { - // Explicitly using CFStringRef instead of NSString because in a GC world, the - // NSString will be collected because there is no way for the GC to know that - // there is a strong reference to the NSString in this data structure. By - // using a CFStringRef we can CFRetain it, and avoid the problem. - CFStringRef logMessage_; - GTMLoggerLevel level_; -}; - - -// There are two operations that involve iterating over the buffer -// contents and doing Something to them. This is a callback function -// that is called for every pair living in the buffer. -typedef void (GTMRingBufferPairCallback)(GTMLoggerRingBufferWriter *rbw, - GTMRingBufferPair *pair); - - -@interface GTMLoggerRingBufferWriter (PrivateMethods) - -// Add the message and level to the ring buffer. -- (void)addMessage:(NSString *)message level:(GTMLoggerLevel)level; - -// Walk the buffer invoking the callback. -- (void)iterateBufferWithCallback:(GTMRingBufferPairCallback)callback; - -@end // PrivateMethods - - -@implementation GTMLoggerRingBufferWriter - -+ (id)ringBufferWriterWithCapacity:(NSUInteger)capacity - writer:(id)writer { - GTMLoggerRingBufferWriter *rbw = - [[[self alloc] initWithCapacity:capacity - writer:writer] autorelease]; - return rbw; - -} // ringBufferWriterWithCapacity - - -- (id)initWithCapacity:(NSUInteger)capacity - writer:(id)writer { - if ((self = [super init])) { - writer_ = [writer retain]; - capacity_ = capacity; - - buffer_ = (GTMRingBufferPair *)calloc(capacity_, sizeof(GTMRingBufferPair)); - - nextIndex_ = 0; - - if (capacity_ == 0 || !buffer_ || !writer_) { - [self release]; - self = nil; - } - } - return self; - -} // initWithCapacity - - -- (id)init { - return [self initWithCapacity:0 writer:nil]; -} // init - - -- (void)dealloc { - [self reset]; - - [writer_ release]; - if (buffer_) { - free(buffer_); - } - - [super dealloc]; - -} // dealloc - - -- (NSUInteger)capacity { - return capacity_; -} // capacity - - -- (id)writer { - return writer_; -} // writer - - -- (NSUInteger)count { - NSUInteger count = 0; - @synchronized(self) { - if ((nextIndex_ == 0 && totalLogged_ > 0) - || totalLogged_ >= capacity_) { - // We've wrapped around - count = capacity_; - } else { - count = nextIndex_; - } - } - - return count; - -} // count - - -- (NSUInteger)droppedLogCount { - NSUInteger droppedCount = 0; - - @synchronized(self) { - if (capacity_ > totalLogged_) { - droppedCount = 0; - } else { - droppedCount = totalLogged_ - capacity_; - } - } - - return droppedCount; - -} // droppedLogCount - - -- (NSUInteger)totalLogged { - return totalLogged_; -} // totalLogged - - -// Assumes caller will do any necessary synchronization. -// This walks over the buffer, taking into account any wrap-around, -// and calls the callback on each pair. -- (void)iterateBufferWithCallback:(GTMRingBufferPairCallback)callback { - GTMRingBufferPair *scan, *stop; - - // If we've wrapped around, print out the ring buffer from |nextIndex_| - // to the end. - if (totalLogged_ >= capacity_) { - scan = buffer_ + nextIndex_; - stop = buffer_ + capacity_; - while (scan < stop) { - callback(self, scan); - ++scan; - } - } - - // And then print from the beginning to right before |nextIndex_| - scan = buffer_; - stop = buffer_ + nextIndex_; - while (scan < stop) { - callback(self, scan); - ++scan; - } - -} // iterateBufferWithCallback - - -// Used when resetting the buffer. This frees the string and zeros out -// the structure. -static void ResetCallback(GTMLoggerRingBufferWriter *rbw, - GTMRingBufferPair *pair) { - if (pair->logMessage_) { - CFRelease(pair->logMessage_); - } - pair->logMessage_ = nil; - pair->level_ = kGTMLoggerLevelUnknown; -} // ResetCallback - - -// Reset the contents. -- (void)reset { - @synchronized(self) { - [self iterateBufferWithCallback:ResetCallback]; - nextIndex_ = 0; - totalLogged_ = 0; - } - -} // reset - - -// Go ahead and log the stored backlog, writing it through the -// ring buffer's |writer_|. -static void PrintContentsCallback(GTMLoggerRingBufferWriter *rbw, - GTMRingBufferPair *pair) { - [[rbw writer] logMessage:(NSString*)pair->logMessage_ level:pair->level_]; -} // PrintContentsCallback - - -- (void)dumpContents { - @synchronized(self) { - [self iterateBufferWithCallback:PrintContentsCallback]; - } -} // printContents - - -// Assumes caller will do any necessary synchronization. -- (void)addMessage:(NSString *)message level:(GTMLoggerLevel)level { - NSUInteger newIndex = nextIndex_; - nextIndex_ = (nextIndex_ + 1) % capacity_; - - ++totalLogged_; - - // Now store the goodies. - GTMRingBufferPair *pair = buffer_ + newIndex; - if (pair->logMessage_) { - CFRelease(pair->logMessage_); - pair->logMessage_ = nil; - } - if (message) { - pair->logMessage_ = CFStringCreateCopy(kCFAllocatorDefault, (CFStringRef)message); - } - pair->level_ = level; - -} // addMessage - - -// From the GTMLogWriter protocol. -- (void)logMessage:(NSString *)message level:(GTMLoggerLevel)level { - @synchronized(self) { - [self addMessage:(NSString*)message level:level]; - - if (level >= kGTMLoggerLevelError) { - [self dumpContents]; - [self reset]; - } - } - -} // logMessage - -@end // GTMLoggerRingBufferWriter diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriterTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriterTest.m deleted file mode 100644 index 1c5d72b1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerRingBufferWriterTest.m +++ /dev/null @@ -1,363 +0,0 @@ -// -// GTMLoggerRingBufferWriterTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMLoggerRingBufferWriter.h" -#import "GTMLogger.h" -#import "GTMUnitTestDevLog.h" - -// -------------------------------------------------- -// CountingWriter keeps a count of the number of times it has been -// told to write something, and also keeps track of what it was -// asked to log. - -@interface CountingWriter : NSObject { - @private - NSMutableArray *loggedContents_; -} - -- (NSUInteger)count; -- (NSArray *)loggedContents; -- (void)reset; - -@end // CountingWriter - -@implementation CountingWriter -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - if (!loggedContents_) { - loggedContents_ = [[NSMutableArray alloc] init]; - } - [loggedContents_ addObject:msg]; -} // logMessage - -- (void)dealloc { - [loggedContents_ release]; - [super dealloc]; -} // dealloc - -- (void)reset { - [loggedContents_ release]; - loggedContents_ = nil; -} // reset - -- (NSUInteger)count { - return [loggedContents_ count]; -} // count - -- (NSArray *)loggedContents { - return loggedContents_; -} // loggedContents - -@end // CountingWriter - - -@interface GTMLoggerRingBufferWriterTest : GTMTestCase { - @private - GTMLogger *logger_; - CountingWriter *countingWriter_; -} -@end // GTMLoggerRingBufferWriterTest - - -// -------------------------------------------------- - -@implementation GTMLoggerRingBufferWriterTest - -// Utilty to compare the set of messages captured by a CountingWriter -// with an array of expected messages. The messages are expected to -// be in the same order in both places. - -- (void)compareWriter:(CountingWriter *)writer - withExpectedLogging:(NSArray *)expected - line:(int)line { - NSArray *loggedContents = [writer loggedContents]; - - STAssertEquals([expected count], [loggedContents count], - @"count mismatch from line %d", line); - - for (unsigned int i = 0; i < [expected count]; i++) { - STAssertEqualObjects([expected objectAtIndex:i], - [loggedContents objectAtIndex:i], - @"logging mistmatch at index %d from line %d", - i, line); - } - -} // compareWithExpectedLogging - - -- (void)setUp { - countingWriter_ = [[CountingWriter alloc] init]; - logger_ = [[GTMLogger alloc] init]; -} // setUp - - -- (void)tearDown { - [countingWriter_ release]; - [logger_ release]; -} // tearDown - - -- (void)testCreation { - - // Make sure initializers work. - GTMLoggerRingBufferWriter *writer = - [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:32 - writer:countingWriter_]; - STAssertEquals([writer capacity], (NSUInteger)32, nil); - STAssertTrue([writer writer] == countingWriter_, nil); - STAssertEquals([writer count], (NSUInteger)0, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([writer totalLogged], (NSUInteger)0, nil); - - // Try with invalid arguments. Should always get nil back. - writer = - [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:0 - writer:countingWriter_]; - STAssertNil(writer, nil); - - writer = [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:32 - writer:nil]; - STAssertNil(writer, nil); - - writer = [[GTMLoggerRingBufferWriter alloc] init]; - STAssertNil(writer, nil); - -} // testCreation - - -- (void)testLogging { - GTMLoggerRingBufferWriter *writer = - [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:4 - writer:countingWriter_]; - [logger_ setWriter:writer]; - - // Shouldn't do anything if there are no contents. - [writer dumpContents]; - STAssertEquals([writer count], (NSUInteger)0, nil); - STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); - - // Log a single item. Make sure the counts are accurate. - [logger_ logDebug:@"oop"]; - STAssertEquals([writer count], (NSUInteger)1, nil); - STAssertEquals([writer totalLogged], (NSUInteger)1, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); - - // Log a second item. Also make sure counts are accurate. - [logger_ logDebug:@"ack"]; - STAssertEquals([writer count], (NSUInteger)2, nil); - STAssertEquals([writer totalLogged], (NSUInteger)2, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); - - // Print them, and make sure the countingWriter sees the right stuff. - [writer dumpContents]; - STAssertEquals([countingWriter_ count], (NSUInteger)2, nil); - STAssertEquals([writer count], (NSUInteger)2, nil); // Should not be zeroed. - STAssertEquals([writer totalLogged], (NSUInteger)2, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"oop",@"ack", nil] - line:__LINE__]; - - - // Wipe the slates clean. - [writer reset]; - [countingWriter_ reset]; - STAssertEquals([writer count], (NSUInteger)0, nil); - STAssertEquals([writer totalLogged], (NSUInteger)0, nil); - - // An error log level should print the buffer and empty it. - [logger_ logDebug:@"oop"]; - [logger_ logInfo:@"ack"]; - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([writer totalLogged], (NSUInteger)2, nil); - - [logger_ logError:@"blargh"]; - STAssertEquals([countingWriter_ count], (NSUInteger)3, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"ack", - @"blargh", nil] - line:__LINE__]; - - - // An assert log level should do the same. This also fills the - // buffer to its limit without wrapping. - [countingWriter_ reset]; - [logger_ logDebug:@"oop"]; - [logger_ logInfo:@"ack"]; - [logger_ logDebug:@"blargh"]; - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([writer count], (NSUInteger)3, nil); - STAssertEquals([writer totalLogged], (NSUInteger)3, nil); - - [logger_ logAssert:@"ouch"]; - STAssertEquals([countingWriter_ count], (NSUInteger)4, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"ack", - @"blargh", @"ouch", nil] - line:__LINE__]; - - - // Try with exactly one wrap around. - [countingWriter_ reset]; - [logger_ logInfo:@"ack"]; - [logger_ logDebug:@"oop"]; - [logger_ logDebug:@"blargh"]; - [logger_ logDebug:@"flong"]; // Fills buffer - STAssertEquals([writer droppedLogCount], (NSUInteger)0, nil); - STAssertEquals([writer count], (NSUInteger)4, nil); - - [logger_ logAssert:@"ouch"]; // should drop "ack" - STAssertEquals([countingWriter_ count], (NSUInteger)4, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"oop", @"blargh", - @"flong", @"ouch", nil] - line:__LINE__]; - - - // Try with more than one wrap around. - [countingWriter_ reset]; - [logger_ logInfo:@"ack"]; - [logger_ logDebug:@"oop"]; - [logger_ logDebug:@"blargh"]; - [logger_ logDebug:@"flong"]; // Fills buffer - [logger_ logDebug:@"bloogie"]; // should drop "ack" - STAssertEquals([writer droppedLogCount], (NSUInteger)1, nil); - STAssertEquals([writer count], (NSUInteger)4, nil); - - [logger_ logAssert:@"ouch"]; // should drop "oop" - STAssertEquals([countingWriter_ count], (NSUInteger)4, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"blargh", - @"flong", @"bloogie", @"ouch", nil] - line:__LINE__]; -} // testBasics - - -- (void)testCornerCases { - // make sure we work with small buffer sizes. - - GTMLoggerRingBufferWriter *writer = - [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:1 - writer:countingWriter_]; - [logger_ setWriter:writer]; - - [logger_ logInfo:@"ack"]; - STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); - STAssertEquals([writer count], (NSUInteger)1, nil); - [writer dumpContents]; - STAssertEquals([countingWriter_ count], (NSUInteger)1, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"ack", nil] - line:__LINE__]; - - [logger_ logDebug:@"oop"]; // should drop "ack" - STAssertEquals([writer count], (NSUInteger)1, nil); - STAssertEquals([writer droppedLogCount], (NSUInteger)1, nil); - - [countingWriter_ reset]; - [logger_ logError:@"snoogy"]; // should drop "oop" - STAssertEquals([countingWriter_ count], (NSUInteger)1, nil); - - [self compareWriter:countingWriter_ - withExpectedLogging:[NSArray arrayWithObjects:@"snoogy", nil] - line:__LINE__]; - -} // testCornerCases - - - -// Run 10 threads, all logging through the same logger. - -static volatile NSUInteger gStoppedThreads = 0; // Total number that have stopped. - -- (void)bangMe:(id)info { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - GTMLogger *logger = (GTMLogger *)info; - - // Log a string. - for (int i = 0; i < 27; i++) { - [logger logDebug:@"oop"]; - } - - // log another string which should push the first string out. - // if we see any "oop"s in the logger output, then we know it got - // confused. - for (int i = 0; i < 15; i++) { - [logger logDebug:@"ack"]; - } - - [pool release]; - @synchronized ([self class]) { - gStoppedThreads++; - } - -} // bangMe - - -- (void)testThreading { - const NSUInteger kThreadCount = 10; - const NSUInteger kCapacity = 10; - - GTMLoggerRingBufferWriter *writer = - [GTMLoggerRingBufferWriter ringBufferWriterWithCapacity:kCapacity - writer:countingWriter_]; - [logger_ setWriter:writer]; - - for (NSUInteger i = 0; i < kThreadCount; i++) { - [NSThread detachNewThreadSelector:@selector(bangMe:) - toTarget:self - withObject:logger_]; - } - - // The threads are running, so wait for them all to finish. - while (1) { - NSDate *quick = [NSDate dateWithTimeIntervalSinceNow:0.2]; - [[NSRunLoop currentRunLoop] runUntilDate:quick]; - @synchronized ([self class]) { - if (gStoppedThreads == kThreadCount) break; - } - } - - // Now make sure we get back what's expected. - STAssertEquals([writer count], kThreadCount, nil); - STAssertEquals([countingWriter_ count], (NSUInteger)0, nil); // Nothing should be logged - STAssertEquals([writer totalLogged], (NSUInteger)420, nil); - - [logger_ logError:@"bork"]; - STAssertEquals([countingWriter_ count], kCapacity, nil); - - NSArray *expected = [NSArray arrayWithObjects: - @"ack", @"ack", @"ack", @"ack", @"ack", - @"ack", @"ack", @"ack", @"ack", @"bork", - nil]; - [self compareWriter:countingWriter_ - withExpectedLogging:expected - line:__LINE__]; - -} // testThreading - -@end // GTMLoggerRingBufferWriterTest diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerTest.m deleted file mode 100644 index 86ced5ef..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMLoggerTest.m +++ /dev/null @@ -1,451 +0,0 @@ -// -// GTMLoggerTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMLogger.h" -#import "GTMRegex.h" -#import "GTMSenTestCase.h" - - -// A test writer that stores log messages in an array for easy retrieval. -@interface ArrayWriter : NSObject { - @private - NSMutableArray *messages_; -} -- (NSArray *)messages; -- (void)clear; -@end -@implementation ArrayWriter -- (id)init { - if ((self = [super init])) { - messages_ = [[NSMutableArray alloc] init]; - } - return self; -} -- (void)dealloc { - [messages_ release]; - [super dealloc]; -} -- (NSArray *)messages { - return messages_; -} -- (void)logMessage:(NSString *)msg level:(GTMLoggerLevel)level { - [messages_ addObject:msg]; -} -- (void)clear { - [messages_ removeAllObjects]; -} -@end // ArrayWriter - - -// A formatter for testing that prepends the word DUMB to log messages, along -// with the log level number. -@interface DumbFormatter : GTMLogBasicFormatter -@end -@implementation DumbFormatter -- (NSString *)stringForFunc:(NSString *)func - withFormat:(NSString *)fmt - valist:(va_list)args - level:(GTMLoggerLevel)level { - return [NSString stringWithFormat:@"DUMB [%d] %@", level, - [super stringForFunc:nil withFormat:fmt valist:args level:level]]; -} -@end // DumbFormatter - - -// A test filter that ignores messages with the string "ignore". -@interface IgnoreFilter : NSObject -@end -@implementation IgnoreFilter -- (BOOL)filterAllowsMessage:(NSString *)msg level:(GTMLoggerLevel)level { - NSRange range = [msg rangeOfString:@"ignore"]; - return (range.location == NSNotFound); -} -@end // IgnoreFilter - -// -// Begin test harness -// - -@interface GTMLoggerTest : GTMTestCase { - @private - NSString *path_; -} -@end - -@implementation GTMLoggerTest - -- (void)setUp { - path_ = [[NSTemporaryDirectory() stringByAppendingPathComponent: - @"GTMLoggerUnitTest.log"] retain]; - STAssertNotNil(path_, nil); - // Make sure we're cleaned up from the last run -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - [[NSFileManager defaultManager] removeFileAtPath:path_ handler:nil]; -#else - [[NSFileManager defaultManager] removeItemAtPath:path_ error:NULL]; -#endif -} - -- (void)tearDown { - STAssertNotNil(path_, nil); -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - [[NSFileManager defaultManager] removeFileAtPath:path_ handler:nil]; -#else - [[NSFileManager defaultManager] removeItemAtPath:path_ error:NULL]; -#endif - [path_ release]; - path_ = nil; -} - -- (void)testCreation { - GTMLogger *logger1 = nil, *logger2 = nil; - - logger1 = [GTMLogger sharedLogger]; - logger2 = [GTMLogger sharedLogger]; - - STAssertTrue(logger1 == logger2, nil); - - STAssertNotNil([logger1 writer], nil); - STAssertNotNil([logger1 formatter], nil); - STAssertNotNil([logger1 filter], nil); - - // Get a new instance; not the shared instance - logger2 = [GTMLogger standardLogger]; - - STAssertTrue(logger1 != logger2, nil); - STAssertNotNil([logger2 writer], nil); - STAssertNotNil([logger2 formatter], nil); - STAssertNotNil([logger2 filter], nil); - - // Set the new instance to be the shared logger. - [GTMLogger setSharedLogger:logger2]; - STAssertTrue(logger2 == [GTMLogger sharedLogger], nil); - STAssertTrue(logger1 != [GTMLogger sharedLogger], nil); - - // Set the shared logger to nil, which should reset it to a new "standard" - // logger. - [GTMLogger setSharedLogger:nil]; - STAssertNotNil([GTMLogger sharedLogger], nil); - STAssertTrue(logger2 != [GTMLogger sharedLogger], nil); - STAssertTrue(logger1 != [GTMLogger sharedLogger], nil); - - GTMLogger *logger = [GTMLogger logger]; - STAssertNotNil(logger, nil); - - logger = [GTMLogger standardLoggerWithStderr]; - STAssertNotNil(logger, nil); - - logger = [GTMLogger standardLoggerWithPath:path_]; - STAssertNotNil(logger, nil); -} - -- (void)testAccessors { - GTMLogger *logger = [GTMLogger standardLogger]; - STAssertNotNil(logger, nil); - - STAssertNotNil([logger writer], nil); - STAssertNotNil([logger formatter], nil); - STAssertNotNil([logger filter], nil); - - [logger setWriter:nil]; - [logger setFormatter:nil]; - [logger setFilter:nil]; - - // These attributes should NOT be nil. They should be set to their defaults. - STAssertNotNil([logger writer], nil); - STAssertNotNil([logger formatter], nil); - STAssertNotNil([logger filter], nil); -} - -- (void)testLogger { - ArrayWriter *writer = [[[ArrayWriter alloc] init] autorelease]; - IgnoreFilter *filter = [[[IgnoreFilter alloc] init] autorelease]; - - // We actually only need the array writer instance for this unit test to pass, - // but we combine that writer with a stdout writer for two reasons: - // - // 1. To test the NSArray composite writer object - // 2. To make debugging easier by sending output to stdout - // - // We also include in the array an object that is not a GTMLogWriter to make - // sure that we don't crash when presented with an array of non-GTMLogWriters. - NSArray *writers = [NSArray arrayWithObjects:writer, - [NSFileHandle fileHandleWithStandardOutput], - @"blah", nil]; - - GTMLogger *logger = [GTMLogger loggerWithWriter:writers - formatter:nil // basic formatter - filter:filter]; - - STAssertNotNil(logger, nil); - - // Log a few messages to test with - [logger logInfo:@"hi"]; - [logger logDebug:@"foo"]; - [logger logError:@"blah"]; - [logger logAssert:@"baz"]; - - // Makes sure the messages got logged - NSArray *messages = [writer messages]; - STAssertNotNil(messages, nil); - STAssertEquals([messages count], (NSUInteger)4, nil); - STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil); - STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil); - STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil); - - // Log a message that should be ignored, and make sure it did NOT get logged - [logger logInfo:@"please ignore this"]; - messages = [writer messages]; - STAssertNotNil(messages, nil); - STAssertEquals([messages count], (NSUInteger)4, nil); - STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil); - STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil); - STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil); - - // Change the formatter to our "dumb formatter" - id formatter = [[[DumbFormatter alloc] init] autorelease]; - [logger setFormatter:formatter]; - - [logger logInfo:@"bleh"]; - messages = [writer messages]; - STAssertNotNil(messages, nil); - STAssertEquals([messages count], (NSUInteger)5, nil); // Message count should increase - // The previously logged messages should not change - STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil); - STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil); - STAssertEqualObjects([messages objectAtIndex:3], @"baz", nil); - STAssertEqualObjects([messages objectAtIndex:4], @"DUMB [2] bleh", nil); -} - -- (void)testConvenienceMacros { - ArrayWriter *writer = [[[ArrayWriter alloc] init] autorelease]; - NSArray *writers = [NSArray arrayWithObjects:writer, - [NSFileHandle fileHandleWithStandardOutput], nil]; - - [[GTMLogger sharedLogger] setWriter:writers]; - - // Here we log a message using a convenience macro, which should log the - // message along with the name of the function it was called from. Here we - // test to make sure the logged message does indeed contain the name of the - // current function "testConvenienceMacros". - GTMLoggerError(@"test ========================"); - STAssertEquals([[writer messages] count], (NSUInteger)1, nil); - NSRange rangeOfFuncName = - [[[writer messages] objectAtIndex:0] rangeOfString:@"testConvenienceMacros"]; - STAssertTrue(rangeOfFuncName.location != NSNotFound, nil); - [writer clear]; - - [[GTMLogger sharedLogger] setFormatter:nil]; - - GTMLoggerInfo(@"test %d", 1); - GTMLoggerDebug(@"test %d", 2); - GTMLoggerError(@"test %d", 3); - GTMLoggerAssert(@"test %d", 4); - - NSArray *messages = [writer messages]; - STAssertNotNil(messages, nil); - -#ifdef DEBUG - STAssertEquals([messages count], (NSUInteger)4, nil); - STAssertEqualObjects([messages objectAtIndex:0], @"test 1", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"test 2", nil); - STAssertEqualObjects([messages objectAtIndex:2], @"test 3", nil); - STAssertEqualObjects([messages objectAtIndex:3], @"test 4", nil); -#else - // In Release builds, only the Error and Assert messages will be logged - STAssertEquals([messages count], (NSUInteger)2, nil); - STAssertEqualObjects([messages objectAtIndex:0], @"test 3", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"test 4", nil); -#endif - -} - -- (void)testFileHandleWriter { - NSFileHandle *fh = nil; - - fh = [NSFileHandle fileHandleForWritingAtPath:path_]; - STAssertNil(fh, nil); - - fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644]; - STAssertNotNil(fh, nil); - - [fh logMessage:@"test 0" level:kGTMLoggerLevelUnknown]; - [fh logMessage:@"test 1" level:kGTMLoggerLevelDebug]; - [fh logMessage:@"test 2" level:kGTMLoggerLevelInfo]; - [fh logMessage:@"test 3" level:kGTMLoggerLevelError]; - [fh logMessage:@"test 4" level:kGTMLoggerLevelAssert]; - [fh closeFile]; - - NSString *contents = [NSString stringWithContentsOfFile:path_]; - - STAssertEqualObjects(@"test 0\ntest 1\ntest 2\ntest 3\ntest 4\n", contents, nil); -} - -- (void)testLoggerAdapterWriter { - ArrayWriter *writer = [[[ArrayWriter alloc] init] autorelease]; - STAssertNotNil(writer, nil); - - GTMLogger *sublogger = [GTMLogger loggerWithWriter:writer - formatter:nil - filter:nil]; - STAssertNotNil(sublogger, nil); - - GTMLogger *logger = [GTMLogger loggerWithWriter:sublogger - formatter:nil - filter:nil]; - - STAssertNotNil(logger, nil); - - // Log a few messages to test with - [logger logInfo:@"hi"]; - [logger logDebug:@"foo"]; - [logger logError:@"blah"]; - [logger logAssert:@"assert"]; - - // Makes sure the messages got logged - NSArray *messages = [writer messages]; - STAssertNotNil(messages, nil); - STAssertEquals([messages count], (NSUInteger)4, nil); - STAssertEqualObjects([messages objectAtIndex:0], @"hi", nil); - STAssertEqualObjects([messages objectAtIndex:1], @"foo", nil); - STAssertEqualObjects([messages objectAtIndex:2], @"blah", nil); - STAssertEqualObjects([messages objectAtIndex:3], @"assert", nil); -} - -// Helper method to help testing GTMLogFormatters -- (NSString *)stringFromFormatter:(id)formatter - level:(GTMLoggerLevel)level - format:(NSString *)fmt, ... { - va_list args; - va_start(args, fmt); - NSString *msg = [formatter stringForFunc:nil - withFormat:fmt - valist:args - level:level]; - va_end(args); - return msg; -} - -- (void)testBasicFormatter { - id fmtr = [[[GTMLogBasicFormatter alloc] init] autorelease]; - STAssertNotNil(fmtr, nil); - NSString *msg = nil; - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@"test"]; - STAssertEqualObjects(msg, @"test", nil); - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@"test %d", 1]; - STAssertEqualObjects(msg, @"test 1", nil); - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@"test %@", @"foo"]; - STAssertEqualObjects(msg, @"test foo", nil); - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@""]; - STAssertEqualObjects(msg, @"", nil); - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@" ", 1]; - STAssertEqualObjects(msg, @" ", nil); -} - -- (void)testStandardFormatter { - id fmtr = [[[GTMLogStandardFormatter alloc] init] autorelease]; - STAssertNotNil(fmtr, nil); - - // E.g. 2008-01-04 09:16:26.906 otest[5567/0xa07d0f60] [lvl=1] (no func) test - NSString * kFormatBasePattern = - @"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3} ((otest)|(GTMiPhoneTest))\\[[0-9]+/0x[0-9a-f]+\\] \\[lvl=[0-3]\\] \\(no func\\) "; - NSString *msg = nil; - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelDebug - format:@"test"]; - STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test"]], nil); - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelError - format:@"test %d", 1]; - STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test 1"]], nil); - - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelInfo - format:@"test %@", @"hi"]; - STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test hi"]], nil); - - - msg = [self stringFromFormatter:fmtr - level:kGTMLoggerLevelUnknown - format:@"test"]; - STAssertTrue([msg gtm_matchesPattern:[kFormatBasePattern stringByAppendingString:@"test"]], nil); -} - -- (void)testNoFilter { - id filter = [[[GTMLogNoFilter alloc] init] autorelease]; - STAssertNotNil(filter, nil); - - STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelUnknown], nil); - STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelDebug], nil); - STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelInfo], nil); - STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelError], nil); - STAssertTrue([filter filterAllowsMessage:@"hi" level:kGTMLoggerLevelAssert], nil); - STAssertTrue([filter filterAllowsMessage:@"" level:kGTMLoggerLevelDebug], nil); - STAssertTrue([filter filterAllowsMessage:nil level:kGTMLoggerLevelDebug], nil); -} - -- (void)testFileHandleCreation { - NSFileHandle *fh = nil; - - fh = [NSFileHandle fileHandleForLoggingAtPath:nil mode:0644]; - STAssertNil(fh, nil); - - fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644]; - STAssertNotNil(fh, nil); - - [fh logMessage:@"test 1" level:kGTMLoggerLevelInfo]; - [fh logMessage:@"test 2" level:kGTMLoggerLevelInfo]; - [fh logMessage:@"test 3" level:kGTMLoggerLevelInfo]; - [fh closeFile]; - - // Re-open file and make sure our log messages get appended - fh = [NSFileHandle fileHandleForLoggingAtPath:path_ mode:0644]; - STAssertNotNil(fh, nil); - - [fh logMessage:@"test 4" level:kGTMLoggerLevelInfo]; - [fh logMessage:@"test 5" level:kGTMLoggerLevelInfo]; - [fh logMessage:@"test 6" level:kGTMLoggerLevelInfo]; - [fh closeFile]; - - NSString *contents = [NSString stringWithContentsOfFile:path_]; - STAssertNotNil(contents, nil); - STAssertEqualObjects(@"test 1\ntest 2\ntest 3\ntest 4\ntest 5\ntest 6\n", contents, nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEvent+HandlerTest.applescript b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEvent+HandlerTest.applescript deleted file mode 100644 index 377d7338..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEvent+HandlerTest.applescript +++ /dev/null @@ -1,60 +0,0 @@ --- --- Copyright 2008 Google Inc. --- --- 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. --- - -script parentTestScript - property parentTestScriptProperty : 6 - on parentTestScriptFunc() - return "parent" - end parentTestScriptFunc -end script - -script testScript - property parent : parentTestScript - property testScriptProperty : 5 - on testScriptFunc() - return "child" - end testScriptFunc - on open foo - end open -end script - -property foo : 1 - -on test() -end test - -on testReturnOne() - return 1 -end testReturnOne - -on testReturnParam(param) - return param -end testReturnParam - -on testAddParams(param1, param2) - return param1 + param2 -end testAddParams - -on testAdd of a onto b given otherValue:d - return a + b + d -end testAdd - -on testGetScript() - return testScript -end testGetScript - -on print -end print diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.h deleted file mode 100644 index fe3e1f02..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// GTMNSAppleEventDescriptor+Foundation.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" -#import "GTMFourCharCode.h" - -// A category for dealing with NSAppleEventDescriptors and NSArrays. -@interface NSAppleEventDescriptor (GTMAppleEventDescriptorArrayAdditions) -// Used to register the types you know how to convert into -// NSAppleEventDescriptors. -// See examples in GTMNSAppleEventDescriptor+Foundation. -// Args: -// selector - selector to call for any of the types in |types| -// -(NSAppleEventDesc *)selector_name; -// types - an std c array of types of length |count| -// count - number of types in |types| -+ (void)gtm_registerSelector:(SEL)selector - forTypes:(DescType*)types - count:(NSUInteger)count; - -// Returns an NSObject for any NSAppleEventDescriptor -// Uses types registerd by registerSelector:forTypes:count: to determine -// what type of object to create. If it doesn't know a type, it attempts -// to return [self stringValue]. -- (id)gtm_objectValue; - -// Return an NSArray for an AEList -// Returns nil on failure. -- (NSArray*)gtm_arrayValue; - -// Return an NSDictionary for an AERecord -// Returns nil on failure. -- (NSDictionary*)gtm_dictionaryValue; - -// Return an NSNull for a desc of typeNull -// Returns nil on failure. -- (NSNull*)gtm_nullValue; - -// Return a NSAppleEventDescriptor for a double value. -+ (NSAppleEventDescriptor*)gtm_descriptorWithDouble:(double)real; - -// Return a NSAppleEventDescriptor for a float value. -+ (NSAppleEventDescriptor*)gtm_descriptorWithFloat:(float)real; - -// Return a NSAppleEventDescriptor for a CGFloat value. -+ (NSAppleEventDescriptor*)gtm_descriptorWithCGFloat:(CGFloat)real; - -// Attempt to extract a double value. Returns NAN on error. -- (double)gtm_doubleValue; - -// Attempt to extract a float value. Returns NAN on error. -- (float)gtm_floatValue; - -// Attempt to extract a CGFloat value. Returns NAN on error. -- (CGFloat)gtm_cgFloatValue; - -// Attempt to extract a NSNumber. Returns nil on error. -- (NSNumber*)gtm_numberValue; - -@end - -@interface NSObject (GTMAppleEventDescriptorObjectAdditions) -// A informal protocol that objects can override to return appleEventDescriptors -// for their type. The default is to return [self description] rolled up -// in an NSAppleEventDescriptor. Built in support for: -// NSArray, NSDictionary, NSNull, NSString, NSNumber and NSProcessInfo -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor; -@end - -@interface NSAppleEventDescriptor (GTMAppleEventDescriptorAdditions) -// Allows you to send events. -// Returns YES if send was successful. -- (BOOL)gtm_sendEventWithMode:(AESendMode)mode - timeOut:(NSTimeInterval)timeout - reply:(NSAppleEventDescriptor**)reply; -@end - -@interface GTMFourCharCode (GTMAppleEventDescriptorObjectAdditions) - -// if you call gtm_appleEventDescriptor on GTMFourCharCode it will be of -// type typeType. If you need something different (like typeProperty) this -// allows you to define the type you want. -- (NSAppleEventDescriptor*)gtm_appleEventDescriptorOfType:(DescType)type; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.m deleted file mode 100644 index b3556074..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Foundation.m +++ /dev/null @@ -1,536 +0,0 @@ -// -// GTMNSAppleEventDescriptor+Foundation.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMDebugSelectorValidation.h" -#import // Needed Solely For keyASUserRecordFields - -// Map of types to selectors. -static NSMutableDictionary *gTypeMap = nil; - -@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorArrayAdditions) - -+ (void)gtm_registerSelector:(SEL)selector - forTypes:(DescType*)types - count:(NSUInteger)count { - if (selector && types && count > 0) { -#if DEBUG - NSAppleEventDescriptor *desc - = [[[NSAppleEventDescriptor alloc] initListDescriptor] autorelease]; - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(desc, - selector, - @encode(id), - NULL); -#endif - @synchronized(self) { - if (!gTypeMap) { - gTypeMap = [[NSMutableDictionary alloc] init]; - } - NSString *selString = NSStringFromSelector(selector); - for (NSUInteger i = 0; i < count; ++i) { - NSNumber *key = [NSNumber numberWithUnsignedInt:types[i]]; - NSString *exists = [gTypeMap objectForKey:key]; - if (exists) { - _GTMDevLog(@"%@ being replaced with %@ exists for type: %@", - exists, selString, key); - } - [gTypeMap setObject:selString forKey:key]; - } - } - } -} - -- (id)gtm_objectValue { - id value = nil; - - // Check our registered types to see if we have anything - if (gTypeMap) { - @synchronized(gTypeMap) { - DescType type = [self descriptorType]; - NSNumber *key = [NSNumber numberWithUnsignedInt:type]; - NSString *selectorString = [gTypeMap objectForKey:key]; - if (selectorString) { - SEL selector = NSSelectorFromString(selectorString); - value = [self performSelector:selector]; - } else { - value = [self stringValue]; - } - } - } - return value; -} - -- (NSArray*)gtm_arrayValue { - NSUInteger count = [self numberOfItems]; - NSAppleEventDescriptor *workingDesc = self; - if (count == 0) { - // Create a list to work with. - workingDesc = [self coerceToDescriptorType:typeAEList]; - count = [workingDesc numberOfItems]; - } - NSMutableArray *items = [NSMutableArray arrayWithCapacity:count]; - for (NSUInteger i = 1; i <= count; ++i) { - NSAppleEventDescriptor *desc = [workingDesc descriptorAtIndex:i]; - id value = [desc gtm_objectValue]; - if (!value) { - _GTMDevLog(@"Unknown type of descriptor %@", [desc description]); - return nil; - } - [items addObject:value]; - } - return items; -} - -- (NSDictionary*)gtm_dictionaryValue { - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - NSAppleEventDescriptor *userRecord = [self descriptorForKeyword:keyASUserRecordFields]; - if (userRecord) { - NSArray *userItems = [userRecord gtm_arrayValue]; - NSString *key = nil; - NSString *item; - GTM_FOREACH_OBJECT(item, userItems) { - if (key) { - // Save the pair and reset our state - [dictionary setObject:item forKey:key]; - key = nil; - } else { - // Save it for the next pair - key = item; - } - } - if (key) { - _GTMDevLog(@"Got a key %@ with no value in %@", key, userItems); - return nil; - } - } else { - NSUInteger count = [self numberOfItems]; - for (NSUInteger i = 1; i <= count; ++i) { - AEKeyword key = [self keywordForDescriptorAtIndex:i]; - NSAppleEventDescriptor *desc = [self descriptorForKeyword:key]; - id value = [desc gtm_objectValue]; - if (!value) { - _GTMDevLog(@"Unknown type of descriptor %@", [desc description]); - return nil; - } - [dictionary setObject:value - forKey:[GTMFourCharCode fourCharCodeWithFourCharCode:key]]; - } - } - return dictionary; -} - -- (NSNull*)gtm_nullValue { - return [NSNull null]; -} - -+ (NSAppleEventDescriptor*)gtm_descriptorWithDouble:(double)real { - return [NSAppleEventDescriptor descriptorWithDescriptorType:typeIEEE64BitFloatingPoint - bytes:&real - length:sizeof(real)]; -} - -+ (NSAppleEventDescriptor*)gtm_descriptorWithFloat:(float)real { - return [NSAppleEventDescriptor descriptorWithDescriptorType:typeIEEE32BitFloatingPoint - bytes:&real - length:sizeof(real)]; -} - - -+ (NSAppleEventDescriptor*)gtm_descriptorWithCGFloat:(CGFloat)real { -#if CGFLOAT_IS_DOUBLE - return [self gtm_descriptorWithDouble:real]; -#else - return [self gtm_descriptorWithFloat:real]; -#endif -} - -- (double)gtm_doubleValue { - double value = NAN; - NSNumber *number = [self gtm_numberValue]; - if (number) { - value = [number doubleValue]; - } - return value; -} - -- (float)gtm_floatValue { - float value = NAN; - NSNumber *number = [self gtm_numberValue]; - if (number) { - value = [number floatValue]; - } - return value; -} - -- (CGFloat)gtm_cgFloatValue { -#if CGFLOAT_IS_DOUBLE - return [self gtm_doubleValue]; -#else - return [self gtm_floatValue]; -#endif -} - -- (NSNumber*)gtm_numberValue { - typedef struct { - DescType type; - SEL selector; - } TypeSelectorMap; - TypeSelectorMap typeSelectorMap[] = { - { typeFalse, @selector(numberWithBool:) }, - { typeTrue, @selector(numberWithBool:) }, - { typeBoolean, @selector(numberWithBool:) }, - { typeSInt16, @selector(numberWithShort:) }, - { typeSInt32, @selector(numberWithInt:) }, - { typeUInt32, @selector(numberWithUnsignedInt:) }, - { typeSInt64, @selector(numberWithLongLong:) }, - { typeIEEE32BitFloatingPoint, @selector(numberWithFloat:) }, - { typeIEEE64BitFloatingPoint, @selector(numberWithDouble:) } - }; - DescType type = [self descriptorType]; - SEL selector = nil; - for (size_t i = 0; i < sizeof(typeSelectorMap) / sizeof(TypeSelectorMap); ++i) { - if (type == typeSelectorMap[i].type) { - selector = typeSelectorMap[i].selector; - break; - } - } - NSAppleEventDescriptor *desc = self; - if (!selector) { - // COV_NF_START - Don't know how to force this in a unittest - _GTMDevLog(@"Didn't get a valid selector?"); - desc = [self coerceToDescriptorType:typeIEEE64BitFloatingPoint]; - selector = @selector(numberWithDouble:); - // COV_NF_END - } - NSData *descData = [desc data]; - const void *bytes = [descData bytes]; - if (!bytes) { - // COV_NF_START - Don't know how to force this in a unittest - _GTMDevLog(@"Unable to get bytes from %@", desc); - return nil; - // COV_NF_END - } - Class numberClass = [NSNumber class]; - NSMethodSignature *signature = [numberClass methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setSelector:selector]; - [invocation setArgument:(void*)bytes atIndex:2]; - [invocation setTarget:numberClass]; - [invocation invoke]; - NSNumber *value = nil; - [invocation getReturnValue:&value]; - return value; -} - -- (GTMFourCharCode*)gtm_fourCharCodeValue { - return [GTMFourCharCode fourCharCodeWithFourCharCode:[self typeCodeValue]]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return self; -} - -@end - -@implementation NSObject (GTMAppleEventDescriptorObjectAdditions) -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return [NSAppleEventDescriptor descriptorWithString:[self description]]; -} -@end - -@implementation NSArray (GTMAppleEventDescriptorObjectAdditions) - -+ (void)load { - DescType types[] = { - typeAEList, - }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_arrayValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - NSAppleEventDescriptor *desc = [NSAppleEventDescriptor listDescriptor]; - NSUInteger count = [self count]; - for (NSUInteger i = 1; i <= count; ++i) { - id item = [self objectAtIndex:i-1]; - NSAppleEventDescriptor *itemDesc = [item gtm_appleEventDescriptor]; - if (!itemDesc) { - _GTMDevLog(@"Unable to create Apple Event Descriptor for %@", [self description]); - return nil; - } - [desc insertDescriptor:itemDesc atIndex:i]; - } - return desc; -} -@end - -@implementation NSDictionary (GTMAppleEventDescriptorObjectAdditions) - -+ (void)load { - DescType types[] = { - typeAERecord, - }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_dictionaryValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - Class keyClass = nil; - id key = nil; - GTM_FOREACH_KEY(key, self) { - if (!keyClass) { - if ([key isKindOfClass:[GTMFourCharCode class]]) { - keyClass = [GTMFourCharCode class]; - } else if ([key isKindOfClass:[NSString class]]) { - keyClass = [NSString class]; - } else { - _GTMDevLog(@"Keys must be of type NSString or GTMFourCharCode: %@", key); - return nil; - } - } - if (![key isKindOfClass:keyClass]) { - _GTMDevLog(@"Keys must be homogenous (first key was of type %@) " - "and of type NSString or GTMFourCharCode: %@", keyClass, key); - return nil; - } - } - NSAppleEventDescriptor *desc = [NSAppleEventDescriptor recordDescriptor]; - if ([keyClass isEqual:[NSString class]]) { - NSMutableArray *array = [NSMutableArray arrayWithCapacity:[self count] * 2]; - GTM_FOREACH_KEY(key, self) { - [array addObject:key]; - [array addObject:[self objectForKey:key]]; - } - NSAppleEventDescriptor *userRecord = [array gtm_appleEventDescriptor]; - if (!userRecord) { - return nil; - } - [desc setDescriptor:userRecord forKeyword:keyASUserRecordFields]; - } else { - GTM_FOREACH_KEY(key, self) { - id value = [self objectForKey:key]; - NSAppleEventDescriptor *valDesc = [value gtm_appleEventDescriptor]; - if (!valDesc) { - return nil; - } - [desc setDescriptor:valDesc forKeyword:[key fourCharCode]]; - } - } - return desc; -} - -@end - -@implementation NSNull (GTMAppleEventDescriptorObjectAdditions) -+ (void)load { - DescType types[] = { - typeNull - }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_nullValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return [NSAppleEventDescriptor nullDescriptor]; -} -@end - -@implementation NSString (GTMAppleEventDescriptorObjectAdditions) - -+ (void)load { - DescType types[] = { - typeUTF16ExternalRepresentation, - typeUnicodeText, - typeUTF8Text, - typeCString, - typePString, - typeChar, - typeIntlText }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(stringValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return [NSAppleEventDescriptor descriptorWithString:self]; -} -@end - -@implementation NSNumber (GTMAppleEventDescriptorObjectAdditions) - -+ (void)load { - DescType types[] = { - typeTrue, - typeFalse, - typeBoolean, - typeSInt16, - typeSInt32, - typeUInt32, - typeSInt64, - typeIEEE32BitFloatingPoint, - typeIEEE64BitFloatingPoint }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_numberValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - const char *type = [self objCType]; - if (!type || strlen(type) != 1) return nil; - - DescType desiredType = typeNull; - NSAppleEventDescriptor *desc = nil; - switch (type[0]) { - // COV_NF_START - // I can't seem to convince objcType to return something of this type - case 'B': - desc = [NSAppleEventDescriptor descriptorWithBoolean:[self boolValue]]; - break; - // COV_NF_END - - case 'c': - case 'C': - case 's': - case 'S': - desiredType = typeSInt16; - break; - - case 'i': - case 'l': - desiredType = typeSInt32; - break; - - // COV_NF_START - // I can't seem to convince objcType to return something of this type - case 'I': - case 'L': - desiredType = typeUInt32; - break; - // COV_NF_END - - case 'q': - case 'Q': - desiredType = typeSInt64; - break; - - case 'f': - desiredType = typeIEEE32BitFloatingPoint; - break; - - case 'd': - default: - desiredType = typeIEEE64BitFloatingPoint; - break; - } - - if (!desc) { - desc = [NSAppleEventDescriptor gtm_descriptorWithDouble:[self doubleValue]]; - if (desc && desiredType != typeIEEE64BitFloatingPoint) { - desc = [desc coerceToDescriptorType:desiredType]; - } - } - return desc; -} - -@end - -@implementation NSProcessInfo (GTMAppleEventDescriptorObjectAdditions) - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - ProcessSerialNumber psn = { 0, kCurrentProcess }; - return [NSAppleEventDescriptor descriptorWithDescriptorType:typeProcessSerialNumber - bytes:&psn - length:sizeof(ProcessSerialNumber)]; -} - -@end - -@implementation GTMFourCharCode (GTMAppleEventDescriptorObjectAdditions) - -+ (void)load { - DescType types[] = { - typeType, - typeKeyword, - typeApplSignature, - typeEnumerated, - }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_fourCharCodeValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return [self gtm_appleEventDescriptorOfType:typeType]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptorOfType:(DescType)type { - FourCharCode code = [self fourCharCode]; - return [NSAppleEventDescriptor descriptorWithDescriptorType:type - bytes:&code - length:sizeof(code)]; -} -@end - -@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorAdditions) - -- (BOOL)gtm_sendEventWithMode:(AESendMode)mode - timeOut:(NSTimeInterval)timeout - reply:(NSAppleEventDescriptor**)reply { - BOOL isGood = YES; - AppleEvent replyEvent = { typeNull, NULL }; - OSStatus err = AESendMessage([self aeDesc], &replyEvent, mode, timeout * 60); - NSAppleEventDescriptor *replyDesc - = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&replyEvent] autorelease]; - if (err) { - isGood = NO; - _GTMDevLog(@"Unable to send message: %@ %d", self, err); - } - if (isGood) { - NSAppleEventDescriptor *errorDesc = [replyDesc descriptorForKeyword:keyErrorNumber]; - if (errorDesc && [errorDesc int32Value]) { - isGood = NO; - } - } - if (reply) { - *reply = replyDesc; - } - return isGood; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m deleted file mode 100644 index f346e992..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+FoundationTest.m +++ /dev/null @@ -1,643 +0,0 @@ -// -// GTMNSAppleEventDescriptor+FoundationTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMFourCharCode.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMNSAppleEventDescriptor_TestObject : NSObject -@end - -@implementation GTMNSAppleEventDescriptor_TestObject - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - return nil; -} - -@end - -@interface GTMNSAppleEventDescriptor_FoundationTest : GTMTestCase { - BOOL gotEvent_; -} -- (void)handleEvent:(NSAppleEventDescriptor*)event - withReply:(NSAppleEventDescriptor*)reply; -- (void)handleEvent:(NSAppleEventDescriptor*)event - withError:(NSAppleEventDescriptor*)reply; - -@end - -@implementation GTMNSAppleEventDescriptor_FoundationTest -- (void)testRegisterSelectorForTypesCount { - // Weird edge casey stuff. - // + (void)registerSelector:(SEL)selector - // forTypes:(DescType*)types count:(int)count - // is tested heavily by the other NSAppleEventDescriptor+foo categories. - DescType type; - [NSAppleEventDescriptor gtm_registerSelector:nil - forTypes:&type count:1]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor) - forTypes:nil count:1]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor) - forTypes:&type count:0]; - // Test the duplicate case - [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor) - forTypes:&type count:1]; - [GTMUnitTestDevLog expectPattern:@"initListDescriptor being replaced with " - "initListDescriptor exists for type: [0-9]+"]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(initListDescriptor) - forTypes:&type count:1]; -} - -- (void)testObjectValue { - // - (void)testObjectValue is tested heavily by the other - // NSAppleEventDescriptor+foo categories. - long data = 1; - // v@#f is just a bogus descriptor type that we don't recognize. - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor descriptorWithDescriptorType:'v@#f' - bytes:&data - length:sizeof(data)]; - id value = [desc gtm_objectValue]; - STAssertNil(value, nil); -} - -- (void)testAppleEventDescriptor { - // - (NSAppleEventDescriptor*)appleEventDescriptor is tested heavily by the - // other NSAppleEventDescriptor+foo categories. - NSAppleEventDescriptor *desc = [self gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - STAssertEquals([desc descriptorType], (DescType)typeUnicodeText, nil); -} - -- (void)testDescriptorWithArrayAndArrayValue { - // Test empty array - NSAppleEventDescriptor *desc = [[NSArray array] gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - STAssertEquals([desc numberOfItems], (NSInteger)0, nil); - - // Complex array - NSArray *array = [NSArray arrayWithObjects: - [NSNumber numberWithInt:4], - @"foo", - [NSNumber numberWithInt:2], - @"bar", - [NSArray arrayWithObjects: - @"bam", - [NSArray arrayWithObject:[NSNumber numberWithFloat:4.2f]], - nil], - nil]; - STAssertNotNil(array, nil); - desc = [array gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - NSArray *array2 = [desc gtm_objectValue]; - STAssertNotNil(array2, nil); - NSArray *array3 = [desc gtm_arrayValue]; - STAssertNotNil(array3, nil); - STAssertTrue([array isEqualToArray:array2], - @"array: %@\narray2: %@\ndesc: %@", - [array description], [array2 description], [desc description]); - STAssertTrue([array2 isEqualToArray:array3], - @"array: %@\narray2: %@\ndesc: %@", - [array description], [array2 description], [desc description]); - - // Test a single object - array = [NSArray arrayWithObject:@"foo"]; - desc = [NSAppleEventDescriptor descriptorWithString:@"foo"]; - STAssertNotNil(desc, nil); - array2 = [desc gtm_arrayValue]; - STAssertTrue([array isEqualToArray:array2], - @"array: %@\narray2: %@\ndesc: %@", - [array description], [array2 description], [desc description]); - - // Something that doesn't know how to register itself. - GTMNSAppleEventDescriptor_TestObject *obj - = [[[GTMNSAppleEventDescriptor_TestObject alloc] init] autorelease]; - [GTMUnitTestDevLog expectPattern:@"Unable to create Apple Event Descriptor for .*"]; - desc = [[NSArray arrayWithObject:obj] gtm_appleEventDescriptor]; - STAssertNil(desc, @"Should be nil"); - - // A list containing something we don't know how to deal with - desc = [NSAppleEventDescriptor listDescriptor]; - NSAppleEventDescriptor *desc2 - = [NSAppleEventDescriptor descriptorWithDescriptorType:'@!@#' - bytes:&desc - length:sizeof(desc)]; - [GTMUnitTestDevLog expectPattern:@"Unknown type of descriptor " - ""]; - [desc insertDescriptor:desc2 atIndex:0]; - array = [desc gtm_objectValue]; - STAssertEquals([array count], (NSUInteger)0, @"Should have 0 items"); -} - -- (void)testDescriptorWithDictionaryAndDictionaryValue { - // Test empty dictionary - NSAppleEventDescriptor *desc - = [[NSDictionary dictionary] gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - STAssertEquals([desc numberOfItems], (NSInteger)0, nil); - - // Complex dictionary - NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: - @"fooobject", - @"fookey", - @"barobject", - @"barkey", - [NSDictionary dictionaryWithObjectsAndKeys: - @"january", - [GTMFourCharCode fourCharCodeWithFourCharCode:cJanuary], - @"february", - [GTMFourCharCode fourCharCodeWithFourCharCode:cFebruary], - nil], - @"dictkey", - nil]; - STAssertNotNil(dictionary, nil); - desc = [dictionary gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - NSDictionary *dictionary2 = [desc gtm_objectValue]; - STAssertNotNil(dictionary2, nil); - NSDictionary *dictionary3 = [desc gtm_dictionaryValue]; - STAssertNotNil(dictionary3, nil); - STAssertEqualObjects(dictionary, dictionary2, - @"desc: %@", [desc description]); - STAssertEqualObjects(dictionary2, dictionary3, - @"desc: %@", [desc description]); - - // Something that doesn't know how to register itself. - GTMNSAppleEventDescriptor_TestObject *obj - = [[[GTMNSAppleEventDescriptor_TestObject alloc] init] autorelease]; - [GTMUnitTestDevLog expectPattern:@"Unable to create Apple Event Descriptor for .*"]; - desc = [[NSDictionary dictionaryWithObject:obj - forKey:@"foo"] gtm_appleEventDescriptor]; - STAssertNil(desc, @"Should be nil"); - - GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:cJanuary]; - desc = [[NSDictionary dictionaryWithObject:obj - forKey:fcc] gtm_appleEventDescriptor]; - STAssertNil(desc, @"Should be nil"); - - // A list containing something we don't know how to deal with - desc = [NSAppleEventDescriptor recordDescriptor]; - NSAppleEventDescriptor *desc2 - = [NSAppleEventDescriptor descriptorWithDescriptorType:'@!@#' - bytes:&desc - length:sizeof(desc)]; - [desc setDescriptor:desc2 forKeyword:cJanuary]; - [GTMUnitTestDevLog expectPattern:@"Unknown type of descriptor " - ""]; - dictionary = [desc gtm_objectValue]; - STAssertEquals([dictionary count], (NSUInteger)0, @"Should have 0 items"); - - // A bad dictionary - dictionary = [NSDictionary dictionaryWithObjectsAndKeys: - @"foo", - [GTMFourCharCode fourCharCodeWithFourCharCode:'APPL'], - @"bam", - @"bar", - nil]; - STAssertNotNil(dictionary, nil); - // I cannot use expectString here to the exact string because interestingly - // dictionaries in 64 bit enumerate in a different order from dictionaries - // on 32 bit. This is the closest pattern I can match. - [GTMUnitTestDevLog expectPattern:@"Keys must be homogenous .*"]; - desc = [dictionary gtm_appleEventDescriptor]; - STAssertNil(desc, nil); - - // Another bad dictionary - dictionary = [NSDictionary dictionaryWithObjectsAndKeys: - @"foo", - [NSNumber numberWithInt:4], - @"bam", - @"bar", - nil]; - STAssertNotNil(dictionary, nil); - // I cannot use expectString here to the exact string because interestingly - // dictionaries in 64 bit enumerate in a different order from dictionaries - // on 32 bit. This is the closest pattern I can match. - [GTMUnitTestDevLog expectPattern:@"Keys must be .*"]; - desc = [dictionary gtm_appleEventDescriptor]; - STAssertNil(desc, nil); - - // A bad descriptor - desc = [NSAppleEventDescriptor recordDescriptor]; - STAssertNotNil(desc, @""); - NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", @"bam", nil]; - STAssertNotNil(array, @""); - NSAppleEventDescriptor *userRecord = [array gtm_appleEventDescriptor]; - STAssertNotNil(userRecord, @""); - [desc setDescriptor:userRecord forKeyword:keyASUserRecordFields]; - [GTMUnitTestDevLog expectPattern:@"Got a key bam with no value in \\(.*"]; - dictionary = [desc gtm_objectValue]; - STAssertNil(dictionary, @"Should be nil"); -} - -- (void)testDescriptorWithNull { - // Test Null - NSNull *null = [NSNull null]; - NSAppleEventDescriptor *desc = [null gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - NSNull *null2 = [desc gtm_objectValue]; - STAssertNotNil(null2, nil); - NSNull *null3 = [desc gtm_nullValue]; - STAssertNotNil(null2, nil); - STAssertEqualObjects(null, null2, - @"null: %@\null2: %@\ndesc: %@", - [null description], [null2 description], - [desc description]); - STAssertEqualObjects(null, null3, - @"null: %@\null3: %@\ndesc: %@", - [null description], [null3 description], - [desc description]); -} - -- (void)testDescriptorWithString { - // Test empty String - NSAppleEventDescriptor *desc = [[NSString string] gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - - // Test String - NSString *string = @"Ratatouille!"; - desc = [string gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - NSString *string2 = [desc gtm_objectValue]; - STAssertNotNil(string2, nil); - STAssertEqualObjects(string, string2, - @"string: %@\nstring: %@\ndesc: %@", - [string description], [string2 description], [desc description]); - -} - -- (void)testDescriptorWithNumberAndNumberValue { - // There's really no good way to make this into a loop sadly due - // to me having to pass a pointer of bytes to NSInvocation as an argument. - // I want the compiler to convert my int to the appropriate type. - - NSNumber *original = [NSNumber numberWithBool:YES]; - STAssertNotNil(original, @"Value: YES"); - NSAppleEventDescriptor *desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: YES"); - id returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: YES"); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: YES"); - STAssertEqualObjects(original, returned, @"Value: YES"); - desc = [desc coerceToDescriptorType:typeBoolean]; - NSNumber *number = [desc gtm_numberValue]; - STAssertEqualObjects(number, original, @"Value: YES"); - - original = [NSNumber numberWithBool:NO]; - STAssertNotNil(original, @"Value: NO"); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: NO"); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: NO"); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: NO"); - STAssertEqualObjects(original, returned, @"Value: NO"); - - sranddev(); - double value = rand(); - - original = [NSNumber numberWithChar:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithUnsignedChar:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithShort:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithUnsignedShort:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithInt:(int)value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithUnsignedInt:(unsigned int)value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithLong:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithUnsignedLong:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithLongLong:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithUnsignedLongLong:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - float floatA = rand(); - float floatB = rand(); - value = floatA / floatB; - original = [NSNumber numberWithFloat:(float)value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - double doubleA = rand(); - double doubleB = rand(); - value = doubleA / doubleB; - original = [NSNumber numberWithDouble:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = rand(); - original = [NSNumber numberWithBool:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = NAN; - original = [NSNumber numberWithDouble:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = INFINITY; - original = [NSNumber numberWithDouble:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = -0.0; - original = [NSNumber numberWithDouble:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); - - value = -INFINITY; - original = [NSNumber numberWithDouble:value]; - STAssertNotNil(original, @"Value: %g", value); - desc = [original gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Value: %g", value); - returned = [desc gtm_objectValue]; - STAssertNotNil(returned, @"Value: %g", value); - STAssertTrue([returned isKindOfClass:[NSNumber class]], @"Value: %g", value); - STAssertEqualObjects(original, returned, @"Value: %g", value); -} - -- (void)testDescriptorWithDoubleAndDoubleValue { - sranddev(); - for (int i = 0; i < 1000; ++i) { - double value1 = rand(); - double value2 = rand(); - double value = value1 / value2; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithDouble:value]; - STAssertNotNil(desc, @"Value: %g", value); - double returnedValue = [desc gtm_doubleValue]; - STAssertEquals(value, returnedValue, @"Value: %g", value); - } - - double specialCases[] = { 0.0f, __DBL_MIN__, __DBL_EPSILON__, INFINITY, NAN }; - for (size_t i = 0; i < sizeof(specialCases) / sizeof(double); ++i) { - double value = specialCases[i]; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithDouble:value]; - STAssertNotNil(desc, @"Value: %g", value); - double returnedValue = [desc gtm_doubleValue]; - STAssertEquals(value, returnedValue, @"Value: %g", value); - } -} - -- (void)testDescriptorWithFloatAndFloatValue { - sranddev(); - for (int i = 0; i < 1000; ++i) { - float value1 = rand(); - float value2 = rand(); - float value = value1 / value2; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithFloat:value]; - STAssertNotNil(desc, @"Value: %f", value); - float returnedValue = [desc gtm_floatValue]; - STAssertEquals(value, returnedValue, @"Value: %f", value); - } - - float specialCases[] = { 0.0f, FLT_MIN, FLT_MAX, FLT_EPSILON, INFINITY, NAN }; - for (size_t i = 0; i < sizeof(specialCases) / sizeof(float); ++i) { - float value = specialCases[i]; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithFloat:value]; - STAssertNotNil(desc, @"Value: %f", value); - float returnedValue = [desc gtm_floatValue]; - STAssertEquals(value, returnedValue, @"Value: %f", value); - } -} - -- (void)testDescriptorWithCGFloatAndCGFloatValue { - sranddev(); - for (int i = 0; i < 1000; ++i) { - CGFloat value1 = rand(); - CGFloat value2 = rand(); - CGFloat value = value1 / value2; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithCGFloat:value]; - STAssertNotNil(desc, @"Value: %g", (double)value); - CGFloat returnedValue = [desc gtm_cgFloatValue]; - STAssertEquals(value, returnedValue, @"Value: %g", (double)value); - } - - CGFloat specialCases[] = { 0.0f, CGFLOAT_MIN, CGFLOAT_MAX, NAN }; - for (size_t i = 0; i < sizeof(specialCases) / sizeof(CGFloat); ++i) { - CGFloat value = specialCases[i]; - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithCGFloat:value]; - STAssertNotNil(desc, @"Value: %g", (double)value); - CGFloat returnedValue = [desc gtm_cgFloatValue]; - STAssertEquals(value, returnedValue, @"Value: %g", (double)value); - } -} - -- (void)testDescriptorWithGTMFourCharCode { - GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:'APPL']; - STAssertNotNil(fcc, nil); - NSAppleEventDescriptor *desc = [fcc gtm_appleEventDescriptor]; - STAssertNotNil(desc, nil); - GTMFourCharCode *fcc2 = [desc gtm_objectValue]; - STAssertNotNil(fcc2, nil); - STAssertEqualObjects(fcc, fcc2, nil); - STAssertEquals([desc descriptorType], (DescType)typeType, nil); - desc = [fcc gtm_appleEventDescriptorOfType:typeKeyword]; - STAssertNotNil(desc, nil); - fcc2 = [desc gtm_objectValue]; - STAssertNotNil(fcc2, nil); - STAssertEqualObjects(fcc, fcc2, nil); - STAssertEquals([desc descriptorType], (DescType)typeKeyword, nil); -} - -- (void)testDescriptorWithDescriptor { - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor descriptorWithString:@"foo"]; - NSAppleEventDescriptor *desc2 = [desc gtm_appleEventDescriptor]; - STAssertEqualObjects(desc, desc2, nil); -} - -- (void)handleEvent:(NSAppleEventDescriptor*)event - withReply:(NSAppleEventDescriptor*)reply { - gotEvent_ = YES; - NSAppleEventDescriptor *answer = [NSAppleEventDescriptor descriptorWithInt32:1]; - [reply setDescriptor:answer forKeyword:keyDirectObject]; -} - -- (void)handleEvent:(NSAppleEventDescriptor*)event - withError:(NSAppleEventDescriptor*)error { - gotEvent_ = YES; - NSAppleEventDescriptor *answer = [NSAppleEventDescriptor descriptorWithInt32:1]; - [error setDescriptor:answer forKeyword:keyErrorNumber]; -} - -- (void)testSend { - const AEEventClass eventClass = 'Fooz'; - const AEEventID eventID = 'Ball'; - NSAppleEventManager *mgr = [NSAppleEventManager sharedAppleEventManager]; - [mgr setEventHandler:self - andSelector:@selector(handleEvent:withReply:) - forEventClass:eventClass - andEventID:'Ball']; - NSAppleEventDescriptor *currentProcess - = [[NSProcessInfo processInfo] gtm_appleEventDescriptor]; - NSAppleEventDescriptor *event - = [NSAppleEventDescriptor appleEventWithEventClass:eventClass - eventID:eventID - targetDescriptor:currentProcess - returnID:kAutoGenerateReturnID - transactionID:kAnyTransactionID]; - gotEvent_ = NO; - NSAppleEventDescriptor *reply; - BOOL goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply]; - [mgr removeEventHandlerForEventClass:eventClass andEventID:eventID]; - STAssertTrue(goodEvent, @"bad event?"); - STAssertTrue(gotEvent_, @"Handler not called"); - NSAppleEventDescriptor *value = [reply descriptorForKeyword:keyDirectObject]; - STAssertEquals([value int32Value], (SInt32)1, @"didn't get reply"); - - - gotEvent_ = NO; - [GTMUnitTestDevLog expectString:@"Unable to send message: " - " -1708"]; - goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply]; - STAssertFalse(goodEvent, @"good event?"); - STAssertFalse(gotEvent_, @"Handler called?"); - - [mgr setEventHandler:self - andSelector:@selector(handleEvent:withError:) - forEventClass:eventClass - andEventID:eventID]; - gotEvent_ = NO; - goodEvent = [event gtm_sendEventWithMode:kAEWaitReply timeOut:60 reply:&reply]; - STAssertFalse(goodEvent, @"good event?"); - STAssertTrue(gotEvent_, @"Handler not called?"); - [mgr removeEventHandlerForEventClass:eventClass andEventID:eventID]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.h deleted file mode 100644 index f2ac8800..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// GTMNSAppleEventDescriptor+Handler.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -@interface NSAppleEventDescriptor (GTMAppleEventDescriptorHandlerAdditions) -+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler - parametersArray:(NSArray*)params; -+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler - parametersDescriptor:(NSAppleEventDescriptor*)params; -+ (id)gtm_descriptorWithLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count; - -- (id)gtm_initWithPositionalHandler:(NSString*)handler - parametersArray:(NSArray*)params; -- (id)gtm_initWithPositionalHandler:(NSString*)handler - parametersDescriptor:(NSAppleEventDescriptor*)params; -- (id)gtm_initWithLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.m deleted file mode 100644 index 76b6e858..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+Handler.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// GTMNSAppleEventDescriptor+Handler.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMNSAppleEventDescriptor+Handler.h" -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMMethodCheck.h" -#import - -@implementation NSAppleEventDescriptor (GTMAppleEventDescriptorHandlerAdditions) -GTM_METHOD_CHECK(NSProcessInfo, gtm_appleEventDescriptor); - -+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler - parametersArray:(NSArray*)params { - return [[[self alloc] gtm_initWithPositionalHandler:handler - parametersArray:params] autorelease]; -} - -+ (id)gtm_descriptorWithPositionalHandler:(NSString*)handler - parametersDescriptor:(NSAppleEventDescriptor*)params { - return [[[self alloc] gtm_initWithPositionalHandler:handler - parametersDescriptor:params] autorelease]; -} - -+ (id)gtm_descriptorWithLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count { - return [[[self alloc] gtm_initWithLabeledHandler:handler - labels:labels - parameters:params - count:count] autorelease]; -} - -- (id)gtm_initWithPositionalHandler:(NSString*)handler - parametersArray:(NSArray*)params { - return [self gtm_initWithPositionalHandler:handler - parametersDescriptor:[params gtm_appleEventDescriptor]]; -} - -- (id)gtm_initWithPositionalHandler:(NSString*)handler - parametersDescriptor:(NSAppleEventDescriptor*)params { - if ((self = [self initWithEventClass:kASAppleScriptSuite - eventID:kASSubroutineEvent - targetDescriptor:[[NSProcessInfo processInfo] gtm_appleEventDescriptor] - returnID:kAutoGenerateReturnID - transactionID:kAnyTransactionID])) { - // Create an NSAppleEventDescriptor with the method handler. Note that the - // name must be lowercase (even if it is uppercase in AppleScript). - // http://developer.apple.com/qa/qa2001/qa1111.html - // has details. - handler = [handler lowercaseString]; - if (!handler) { - [self release]; - return nil; - } - NSAppleEventDescriptor *handlerDesc - = [NSAppleEventDescriptor descriptorWithString:handler]; - [self setParamDescriptor:handlerDesc forKeyword:keyASSubroutineName]; - if (params) { - [self setParamDescriptor:params forKeyword:keyDirectObject]; - } - } - return self; -} - - -- (id)gtm_initWithLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count { - if ((self = [self initWithEventClass:kASAppleScriptSuite - eventID:kASSubroutineEvent - targetDescriptor:[[NSProcessInfo processInfo] gtm_appleEventDescriptor] - returnID:kAutoGenerateReturnID - transactionID:kAnyTransactionID])) { - if (!handler) { - [self release]; - return nil; - } - // Create an NSAppleEventDescriptor with the method handler. Note that the - // name must be lowercase (even if it is uppercase in AppleScript). - NSAppleEventDescriptor *handlerDesc - = [NSAppleEventDescriptor descriptorWithString:[handler lowercaseString]]; - [self setParamDescriptor:handlerDesc forKeyword:keyASSubroutineName]; - for (NSUInteger i = 0; i < count; i++) { - NSAppleEventDescriptor *paramDesc = [params[i] gtm_appleEventDescriptor]; - if(labels[i] == keyASPrepositionGiven) { - if (![params[i] isKindOfClass:[NSDictionary class]]) { - _GTMDevLog(@"Must pass in dictionary for keyASPrepositionGiven " - "(got %@)", params[i]); - [self release]; - self = nil; - break; - } - NSAppleEventDescriptor *userDesc - = [paramDesc descriptorForKeyword:keyASUserRecordFields]; - if (!userDesc) { - _GTMDevLog(@"Dictionary for keyASPrepositionGiven must be a user " - "record field dictionary (got %@)", params[i]); - [self release]; - self = nil; - break; - } - [self setParamDescriptor:userDesc - forKeyword:keyASUserRecordFields]; - } else { - [self setParamDescriptor:paramDesc - forKeyword:labels[i]]; - } - } - } - return self; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m deleted file mode 100644 index a137d8a8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleEventDescriptor+HandlerTest.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// GTNNSAppleEventDescriptor+HandlerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMSenTestCase.h" -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMNSAppleEventDescriptor+Handler.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMNSAppleEventDescriptor_HandlerTest : GTMTestCase -@end - -@implementation GTMNSAppleEventDescriptor_HandlerTest -// Most of this gets tested by the NSAppleScript+Handler tests. -- (void)testPositionalHandlers { - NSAppleEventDescriptor *desc - = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:nil - parametersArray:[NSArray array]]; - STAssertNil(desc, @"got a desc?"); - - desc = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:@"happy" - parametersDescriptor:nil]; - STAssertNotNil(desc, @"didn't get a desc?"); - - desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:nil - labels:nil - parameters:nil - count:0]; - STAssertNil(desc, @"got a desc?"); - - AEKeyword keys[] = { keyASPrepositionGiven }; - NSString *string = @"foo"; - [GTMUnitTestDevLog expectString:@"Must pass in dictionary for " - "keyASPrepositionGiven (got foo)"]; - desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:@"happy" - labels:keys - parameters:&string - count:1]; - STAssertNil(desc, @"got a desc?"); - - NSDictionary *dict = [NSDictionary dictionaryWithObject:@"bart" - forKey:[NSNumber numberWithInt:4]]; - [GTMUnitTestDevLog expectString:@"Keys must be of type NSString or " - "GTMFourCharCode: 4"]; - [GTMUnitTestDevLog expectPattern:@"Dictionary for keyASPrepositionGiven must " - "be a user record field dictionary \\(got .*"]; - desc = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:@"happy" - labels:keys - parameters:&dict - count:1]; - STAssertNil(desc, @"got a desc?"); - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.h deleted file mode 100644 index 65f57c56..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// GTMNSAppleScript+Handler.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// :::WARNING::: NSAppleScript and Garbage Collect (GC) -// -// As of 10.5.6 (and below) Apple has bugs in NSAppleScript when running with -// GC; ie-things crash that have nothing to do w/ this or your code. See -// http://rails.wincent.com/issues/640 for a good amount of detail about the -// problems and simple cases that show it. - -// A category for calling handlers in NSAppleScript - -enum { - // Data type is OSAID. These will generally be representing - // scripts. - typeGTMOSAID = 'GTMO' -}; - -@interface NSAppleScript(GTMAppleScriptHandlerAdditions) -// Allows us to call a specific handler in an AppleScript. -// parameters are passed in left-right order 0-n. -// -// Args: -// handler - name of the handler to call in the Applescript -// params - the parameters to pass to the handler -// error - in non-nil returns any error that may have occurred. -// -// Returns: -// The result of the handler being called. nil on failure. -- (NSAppleEventDescriptor*)gtm_executePositionalHandler:(NSString*)handler - parameters:(NSArray*)params - error:(NSDictionary**)error; - - -// Allows us to call a specific labeled handler in an AppleScript. -// Parameters for a labeled handler can be in any order, as long as the -// order of the params array corresponds to the order of the labels array -// such that labels are associated with their correct parameter values. -// -// Args: -// handler - name of the handler to call in the Applescript -// labels - the labels to associate with the parameters -// params - the parameters to pass to the handler -// count - number of labels/parameters -// error - in non-nil returns any error that may have occurred. -// -// Returns: -// The result of the handler being called. nil on failure. -- (NSAppleEventDescriptor*)gtm_executeLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count - error:(NSDictionary **)error; - -// Same as executeAppleEvent:error: except that it handles return values of -// script correctly. Return values containing scripts will have the -// typeGTMOSAID. Calling gtm_objectValue on a NSAppleEventDescriptor of -// typeGTMOSAID will resolve correctly to a script value. We don't use -// typeScript because that actually copies the script instead of returning the -// actual value. Therefore if you called executeAppleEvent:error: (instead of -// the GTM version) to execute an event that returns a script, you will -// get a completely new Applescript, instead of the actual script you wanted. If -// you are working with script information, use gtm_executeAppleEvent:error -// instead of executeAppleEvent:error: to avoid the problem. -- (NSAppleEventDescriptor *)gtm_executeAppleEvent:(NSAppleEventDescriptor *)event - error:(NSDictionary **)error; - -// The set of all handlers that are defined in this script and its parents. -// Remember that handlers that are defined in an sdef will have their -// eventclass/eventid as their handler instead of the name seen in the script. -// So: -// on open(a) -// blah -// end open -// won't be "open" it will be "aevtodoc". -- (NSSet*)gtm_handlers; - -// The set of all properties that are defined in this script and its parents. -// Note that properties can be strings or GTMNSFourCharCodes, so expect both -// coming back in the set. -- (NSSet*)gtm_properties; - -// Return a value for a property. Will look up the inheritence tree. -// Property must be an NSString or a GTMFourCharCode. -- (id)gtm_valueForProperty:(id)property; - -// Return a value for a property by type (eg pASParent). Will look up the -// inheritence tree -- (id)gtm_valueForPropertyEnum:(DescType)property; - -// Set a script property value. Returns YES/NO on success/failure. -// Property must be of kind NSString or GTMFourCharCode. -// If addingDefinition is YES, it will add a definition to the script -// if the value doesn't exist in the script or one of it's parents. -- (BOOL)gtm_setValue:(id)value - forProperty:(id)property - addingDefinition:(BOOL)adding; - -// Set a value for a property by type (eg pASParent). See note above -// for gtm_setValue:forProperty. -- (BOOL)gtm_setValue:(id)value - forPropertyEnum:(DescType)property - addingDefinition:(BOOL)adding; - -// Return YES if the script has an open documents (odoc) handler -// Does not require script compilation, so it's a fast check. -- (BOOL)gtm_hasOpenDocumentsHandler; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.m deleted file mode 100644 index 8c236495..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+Handler.m +++ /dev/null @@ -1,518 +0,0 @@ -// -// GTMNSAppleScript+Handler.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMNSAppleScript+Handler.h" -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMNSAppleEventDescriptor+Handler.h" -#import "GTMFourCharCode.h" -#import "GTMMethodCheck.h" -#import "GTMDebugThreadValidation.h" - -// Some private methods that we need to call -@interface NSAppleScript (NSPrivate) -+ (ComponentInstance)_defaultScriptingComponent; -- (OSAID) _compiledScriptID; -- (id)_initWithData:(NSData*)data error:(NSDictionary**)error; -- (id)_initWithScriptIDNoCopy:(OSAID)osaID; -+ (id)_infoForOSAError:(OSAError)error; -@end - -@interface NSMethodSignature (NSPrivate) -+ (id)signatureWithObjCTypes:(const char *)fp8; -@end - -// Our own private interfaces. -@interface NSAppleScript (GTMAppleScriptHandlerAdditionsPrivate) - -// Return an descriptor for a property. Properties are only supposed to be -// of type NSString or GTMFourCharCode. GTMFourCharCode's need special handling -// as they must be turned into NSAppleEventDescriptors of typeProperty. -- (NSAppleEventDescriptor*)gtm_descriptorForPropertyValue:(id)property; - -// Return an NSAppleEventDescriptor for a given property. -// |property| must be kind of class GTMFourCharCode -- (NSAppleEventDescriptor*)gtm_valueDescriptorForProperty:(id)property; - -// Utility routine for extracting multiple values in scripts and their -// parents. -- (NSSet*)gtm_allValuesUsingSelector:(SEL)selector; - -// Utility routine for extracting the handlers for a specific script without -// referring to parent scripts. -- (NSSet*)gtm_scriptHandlers; - -// Utility routine for extracting the properties for a specific script without -// referring to parent scripts. -- (NSSet*)gtm_scriptProperties; - -// Handles creating an NSAppleEventDescriptor from an OSAID -- (NSAppleEventDescriptor*)descForScriptID:(OSAID)scriptID - component:(ComponentInstance)component; - -// Utility methods for converting between real and generic OSAIDs. -- (OSAID)gtm_genericID:(OSAID)osaID forComponent:(ComponentInstance)component; -- (OSAID)gtm_realIDAndComponent:(ComponentInstance*)component; -@end - -@implementation NSAppleScript(GTMAppleScriptHandlerAdditions) -GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_descriptorWithPositionalHandler:parametersArray:); -GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_descriptorWithLabeledHandler:labels:parameters:count:); -GTM_METHOD_CHECK(NSAppleEventDescriptor, gtm_registerSelector:forTypes:count:); - -+ (void)load { - DescType types[] = { - typeScript - }; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_scriptValue) - forTypes:types - count:sizeof(types)/sizeof(DescType)]; - - DescType types2[] = { - 'evnt' // No type code for this one - }; - - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_eventValue) - forTypes:types2 - count:sizeof(types2)/sizeof(DescType)]; - - DescType types3[] = { - typeGTMOSAID - }; - - [NSAppleEventDescriptor gtm_registerSelector:@selector(gtm_osaIDValue) - forTypes:types3 - count:sizeof(types3)/sizeof(DescType)]; - [pool release]; -} - -- (NSAppleEventDescriptor *)gtm_executeAppleEvent:(NSAppleEventDescriptor *)event - error:(NSDictionary **)error { - GTMAssertRunningOnMainThread(); - if (![self isCompiled]) { - if (![self compileAndReturnError:error]) { - return nil; - } - } - NSAppleEventDescriptor *desc = nil; - ComponentInstance component; - OSAID scriptID = [self gtm_realIDAndComponent:&component]; - OSAID valueID; - OSAError err = OSAExecuteEvent(component, [event aeDesc], scriptID, - kOSAModeNull, &valueID); - if (err == noErr) { - // descForScriptID:component: is what sets this apart from the - // standard executeAppelEvent:error: in that it handles - // taking script results and turning them into AEDescs of typeGTMOSAID - // instead of typeScript. - desc = [self descForScriptID:valueID component:component]; - } - if (err && error) { - *error = [NSAppleScript _infoForOSAError:err]; - } - return desc; -} - -- (NSAppleEventDescriptor*)gtm_executePositionalHandler:(NSString*)handler - parameters:(NSArray*)params - error:(NSDictionary**)error { - NSAppleEventDescriptor *event - = [NSAppleEventDescriptor gtm_descriptorWithPositionalHandler:handler - parametersArray:params]; - return [self gtm_executeAppleEvent:event error:error]; -} - -- (NSAppleEventDescriptor*)gtm_executeLabeledHandler:(NSString*)handler - labels:(AEKeyword*)labels - parameters:(id*)params - count:(NSUInteger)count - error:(NSDictionary **)error { - NSAppleEventDescriptor *event - = [NSAppleEventDescriptor gtm_descriptorWithLabeledHandler:handler - labels:labels - parameters:params - count:count]; - return [self gtm_executeAppleEvent:event error:error]; -} - -- (NSSet*)gtm_handlers { - return [self gtm_allValuesUsingSelector:@selector(gtm_scriptHandlers)]; -} - -- (NSSet*)gtm_properties { - return [self gtm_allValuesUsingSelector:@selector(gtm_scriptProperties)]; -} - -// Set a value for a property by type (eg pASTopLevelScript) -- (BOOL)gtm_setValue:(id)value - forPropertyEnum:(DescType)property - addingDefinition:(BOOL)adding { - GTMFourCharCode *fcc - = [GTMFourCharCode fourCharCodeWithFourCharCode:property]; - return [self gtm_setValue:value forProperty:fcc addingDefinition:adding]; -} - -- (BOOL)gtm_setValue:(id)value - forProperty:(id)property - addingDefinition:(BOOL)adding{ - OSAError error = paramErr; - BOOL wasGood = NO; - NSAppleEventDescriptor *propertyName - = [self gtm_descriptorForPropertyValue:property]; - NSAppleEventDescriptor *desc = [value gtm_appleEventDescriptor]; - if (propertyName && desc) { - NSAppleScript *script = self; - OSAID valueID = kOSANullScript; - ComponentInstance component; - OSAID scriptID = [script gtm_realIDAndComponent:&component]; - error = OSACoerceFromDesc(component, - [desc aeDesc], - kOSAModeNull, - &valueID); - if (error == noErr) { - error = OSASetProperty(component, - adding ? kOSAModeNull : kOSAModeDontDefine, - scriptID, - [propertyName aeDesc], - valueID); - if (error == noErr) { - wasGood = YES; - } - } - } - if (!wasGood) { - _GTMDevLog(@"Unable to setValue:%@ forProperty:%@ from %@ (%d)", - value, property, self, error); - } - return wasGood; -} - -- (id)gtm_valueForProperty:(id)property { - return [[self gtm_valueDescriptorForProperty:property] gtm_objectValue]; -} - -- (id)gtm_valueForPropertyEnum:(DescType)property { - GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:property]; - return [self gtm_valueForProperty:fcc]; -} - -- (NSAppleEventDescriptor*)gtm_appleEventDescriptor { - ComponentInstance component; - OSAID osaID = [self gtm_realIDAndComponent:&component]; - AEDesc result = { typeNull, NULL }; - NSAppleEventDescriptor *desc = nil; - OSAError error = OSACoerceToDesc(component, - osaID, - typeScript, - kOSAModeNull, - &result); - if (error == noErr) { - desc = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&result] - autorelease]; - } else { - _GTMDevLog(@"Unable to coerce script %d", error); - } - return desc; -} - -- (BOOL)gtm_hasOpenDocumentsHandler { - ComponentInstance component; - OSAID osaID = [self gtm_realIDAndComponent:&component]; - long value = 0; - OSAError error = OSAGetScriptInfo(component, - osaID, - kASHasOpenHandler, - &value); - if (error) { - _GTMDevLog(@"Unable to get script info about open handler %d", error); - value = 0; - } - return value != 0; -} - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { - NSMethodSignature *signature = [super methodSignatureForSelector:aSelector]; - if (!signature) { - NSMutableString *types = [NSMutableString stringWithString:@"@@:"]; - NSString *selName = NSStringFromSelector(aSelector); - NSArray *selArray = [selName componentsSeparatedByString:@":"]; - NSUInteger count = [selArray count]; - for (NSUInteger i = 1; i < count; i++) { - [types appendString:@"@"]; - } - signature = [NSMethodSignature signatureWithObjCTypes:[types UTF8String]]; - } - return signature; -} - -- (void)forwardInvocation:(NSInvocation *)invocation { - SEL sel = [invocation selector]; - NSMutableString *handlerName - = [NSMutableString stringWithString:NSStringFromSelector(sel)]; - NSUInteger handlerOrigLength = [handlerName length]; - [handlerName replaceOccurrencesOfString:@":" - withString:@"" - options:0 - range:NSMakeRange(0,handlerOrigLength)]; - NSUInteger argCount = handlerOrigLength - [handlerName length]; - NSMutableArray *args = [NSMutableArray arrayWithCapacity:argCount]; - for (NSUInteger i = 0; i < argCount; ++i) { - id arg; - // +2 to ignore _sel and _cmd - [invocation getArgument:&arg atIndex:i + 2]; - [args addObject:arg]; - } - NSDictionary *error = nil; - NSAppleEventDescriptor *desc = [self gtm_executePositionalHandler:handlerName - parameters:args - error:&error]; - if ([[invocation methodSignature] methodReturnLength] > 0) { - id returnValue = [desc gtm_objectValue]; - [invocation setReturnValue:&returnValue]; - } -} -@end - -@implementation NSAppleScript (GTMAppleScriptHandlerAdditionsPrivate) - -- (NSAppleEventDescriptor*)gtm_descriptorForPropertyValue:(id)property { - NSAppleEventDescriptor *propDesc = nil; - if ([property isKindOfClass:[GTMFourCharCode class]]) { - propDesc = [property gtm_appleEventDescriptorOfType:typeProperty]; - } else if ([property isKindOfClass:[NSString class]]) { - propDesc = [property gtm_appleEventDescriptor]; - } - return propDesc; -} - -- (NSAppleEventDescriptor*)gtm_valueDescriptorForProperty:(id)property { - GTMAssertRunningOnMainThread(); - OSAError error = paramErr; - NSAppleEventDescriptor *desc = nil; - NSAppleEventDescriptor *propertyName - = [self gtm_descriptorForPropertyValue:property]; - if (propertyName) { - ComponentInstance component; - OSAID scriptID = [self gtm_realIDAndComponent:&component]; - OSAID valueID = kOSANullScript; - error = OSAGetProperty(component, - kOSAModeNull, - scriptID, - [propertyName aeDesc], - &valueID); - if (error == noErr) { - desc = [self descForScriptID:valueID component:component]; - } - } - if (error) { - _GTMDevLog(@"Unable to get valueForProperty:%@ from %@ (%d)", - property, self, error); - } - return desc; -} - -- (NSSet*)gtm_allValuesUsingSelector:(SEL)selector { - NSMutableSet *resultSet = [NSMutableSet set]; - NSAppleEventDescriptor *scriptDesc = [self gtm_appleEventDescriptor]; - NSMutableSet *scriptDescsWeveSeen = [NSMutableSet set]; - GTMFourCharCode *fcc = [GTMFourCharCode fourCharCodeWithFourCharCode:pASParent]; - Class appleScriptClass = [NSAppleScript class]; - while (scriptDesc) { - NSAppleScript *script = [scriptDesc gtm_objectValue]; - if ([script isKindOfClass:appleScriptClass]) { - NSData *data = [scriptDesc data]; - if (!data || [scriptDescsWeveSeen containsObject:data]) { - break; - } else { - [scriptDescsWeveSeen addObject:data]; - } - NSSet *newSet = [script performSelector:selector]; - [resultSet unionSet:newSet]; - scriptDesc = [script gtm_valueDescriptorForProperty:fcc]; - } else { - break; - } - } - return resultSet; -} - -- (NSSet*)gtm_scriptHandlers { - GTMAssertRunningOnMainThread(); - AEDescList names = { typeNull, NULL }; - NSArray *array = nil; - ComponentInstance component; - OSAID osaID = [self gtm_realIDAndComponent:&component]; - OSAError error = OSAGetHandlerNames(component, kOSAModeNull, osaID, &names); - if (error == noErr) { - NSAppleEventDescriptor *desc - = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&names] - autorelease]; - array = [desc gtm_objectValue]; - } - if (error != noErr) { - _GTMDevLog(@"Error getting handlers: %d", error); // COV_NF_LINE - } - return [NSSet setWithArray:array]; -} - -- (NSSet*)gtm_scriptProperties { - GTMAssertRunningOnMainThread(); - AEDescList names = { typeNull, NULL }; - NSArray *array = nil; - ComponentInstance component; - OSAID osaID = [self gtm_realIDAndComponent:&component]; - OSAError error = OSAGetPropertyNames(component, kOSAModeNull, osaID, &names); - if (error == noErr) { - NSAppleEventDescriptor *desc - = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&names] - autorelease]; - array = [desc gtm_objectValue]; - } - if (error != noErr) { - _GTMDevLog(@"Error getting properties: %d", error); // COV_NF_LINE - } - return [NSSet setWithArray:array]; -} - -- (OSAID)gtm_genericID:(OSAID)osaID forComponent:(ComponentInstance)component { - GTMAssertRunningOnMainThread(); - ComponentInstance genericComponent = [NSAppleScript _defaultScriptingComponent]; - OSAID exactID = osaID; - OSAError error = OSARealToGenericID(genericComponent, &exactID, component); - if (error != noErr) { - _GTMDevLog(@"Unable to get real id script: %@ %d", self, error); // COV_NF_LINE - exactID = kOSANullScript; // COV_NF_LINE - } - return exactID; -} - -- (NSAppleEventDescriptor*)descForScriptID:(OSAID)osaID - component:(ComponentInstance)component { - GTMAssertRunningOnMainThread(); - NSAppleEventDescriptor *desc = nil; - // If we have a script, return a typeGTMOSAID, otherwise convert it to - // it's default AEDesc using OSACoerceToDesc with typeWildCard. - long value = 0; - OSAError err = noErr; - if (osaID == 0) { - desc = [NSAppleEventDescriptor nullDescriptor]; - } else { - err = OSAGetScriptInfo(component, - osaID, - kOSAScriptBestType, - &value); - if (err == noErr) { - if (value == typeScript) { - osaID = [self gtm_genericID:osaID forComponent:component]; - desc = [NSAppleEventDescriptor descriptorWithDescriptorType:typeGTMOSAID - bytes:&osaID - length:sizeof(osaID)]; - } else { - AEDesc aeDesc; - err = OSACoerceToDesc(component, - osaID, - typeWildCard, - kOSAModeNull, - &aeDesc); - if (err == noErr) { - desc = [[[NSAppleEventDescriptor alloc] - initWithAEDescNoCopy:&aeDesc] autorelease]; - } - } - } - } - if (err != noErr) { - _GTMDevLog(@"Unable to create desc for id:%d (%d)", osaID, err); // COV_NF_LINE - } - return desc; -} - -- (OSAID)gtm_realIDAndComponent:(ComponentInstance*)component { - GTMAssertRunningOnMainThread(); - if (![self isCompiled]) { - NSDictionary *error; - if (![self compileAndReturnError:&error]) { - _GTMDevLog(@"Unable to compile script: %@ %@", self, error); - return kOSANullScript; - } - } - OSAID genericID = [self _compiledScriptID]; - ComponentInstance genericComponent = [NSAppleScript _defaultScriptingComponent]; - OSAError error = OSAGenericToRealID(genericComponent, &genericID, component); - if (error != noErr) { - _GTMDevLog(@"Unable to get real id script: %@ %d", self, error); // COV_NF_LINE - genericID = kOSANullScript; // COV_NF_LINE - } - return genericID; -} - -@end - -// Private methods for dealing with Scripts/Events and NSAppleEventDescriptors -@interface NSAppleEventDescriptor (GTMAppleEventDescriptorScriptAdditions) - -// Return an NSAppleScript for a desc of typeScript. This will create a new -// Applescript that is a copy of the script that you want. -// Returns nil on failure. -- (NSAppleScript*)gtm_scriptValue; - -// Return an NSAppleScript for a desc of typeGTMOSAID. This will not copy the -// script, but will create an NSAppleScript wrapping the script represented -// by the OSAID. -// Returns nil on failure. -- (NSAppleScript*)gtm_osaIDValue; - -// Return a NSString with [eventClass][eventID] for typeEvent 'evnt' -- (NSString*)gtm_eventValue; -@end - - -@implementation NSAppleEventDescriptor (GMAppleEventDescriptorScriptAdditions) - -- (NSAppleScript*)gtm_scriptValue { - NSDictionary *error; - NSAppleScript *script = [[[NSAppleScript alloc] _initWithData:[self data] - error:&error] autorelease]; - if (!script) { - _GTMDevLog(@"Unable to create script: %@", error); // COV_NF_LINE - } - return script; -} - -- (NSAppleScript*)gtm_osaIDValue { - _GTMDevAssert([[self data] length] == sizeof(OSAID), nil); - OSAID osaID = *(const OSAID*)[[self data] bytes]; - return [[[NSAppleScript alloc] _initWithScriptIDNoCopy:osaID] autorelease]; -} - -- (NSString*)gtm_eventValue { - struct AEEventRecordStruct { - AEEventClass eventClass; - AEEventID eventID; - }; - NSData *data = [self data]; - const struct AEEventRecordStruct *record - = (const struct AEEventRecordStruct*)[data bytes]; - NSString *eClass = [GTMFourCharCode stringWithFourCharCode:record->eventClass]; - NSString *eID = [GTMFourCharCode stringWithFourCharCode:record->eventID]; - return [eClass stringByAppendingString:eID]; -} -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+HandlerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+HandlerTest.m deleted file mode 100644 index 44d0a0c6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSAppleScript+HandlerTest.m +++ /dev/null @@ -1,506 +0,0 @@ -// -// GTMNSAppleScript+HandlerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import -#import "GTMNSAppleScript+Handler.h" -#import "GTMNSAppleEventDescriptor+Foundation.h" -#import "GTMUnitTestDevLog.h" -#import "GTMGarbageCollection.h" -#import "GTMSystemVersion.h" -#import "GTMFourCharCode.h" - -@interface GTMNSAppleScript_HandlerTest : GTMTestCase { - NSAppleScript *script_; -} -@end - -@implementation GTMNSAppleScript_HandlerTest -- (void)invokeTest { - // NOTE: These tests are disabled in GC is on. See the comment/warning in the - // GTMNSAppleScript+Handler.h for more details, but we disable them to avoid - // the tests failing (crashing) when it's Apple's bug. Please bump the system - // check as appropriate when new systems are tested. Currently broken on - // 10.5.6 and below. Radar 6126682. - SInt32 major, minor, bugfix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugfix]; - if (!(GTMIsGarbageCollectionEnabled() - && major <= 10 && minor <= 5 && bugfix <= 6)) { - [super invokeTest]; - } else { - NSLog(@"--- %@ NOT run because of GC incompatibilites ---", [self name]); - } -} - -- (void)setUp { - NSBundle *bundle - = [NSBundle bundleForClass:[GTMNSAppleScript_HandlerTest class]]; - STAssertNotNil(bundle, nil); - NSString *path = [bundle pathForResource:@"GTMNSAppleEvent+HandlerTest" - ofType:@"scpt" - inDirectory:@"Scripts"]; - STAssertNotNil(path, [bundle description]); - NSDictionary *error = nil; - script_ - = [[NSAppleScript alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] - error:&error]; - STAssertNotNil(script_, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); -} - -- (void)tearDown { - [script_ release]; - script_ = nil; -} - -- (void)testExecuteAppleEvent { - NSString *source = @"on test()\nreturn 1\nend test"; - NSAppleScript *script - = [[[NSAppleScript alloc] initWithSource:source] autorelease]; - STAssertNotNil(script, nil); - NSDictionary *error = nil; - NSAppleEventDescriptor *desc = [script gtm_executePositionalHandler:@"test" - parameters:nil - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc gtm_objectValue], [NSNumber numberWithInt:1], nil); - - // bogus script - source = @"adf872345ba asdf asdf gr"; - script = [[[NSAppleScript alloc] initWithSource:source] autorelease]; - STAssertNotNil(script, nil); - desc = [script gtm_executePositionalHandler:@"test" - parameters:nil - error:&error]; - STAssertNil(desc, nil); - STAssertNotNil(error, @"Error should not be nil"); -} - -- (void)testHandlerNoParamsNoReturn { - NSDictionary *error = nil; - NSAppleEventDescriptor *desc = [script_ gtm_executePositionalHandler:@"test" - parameters:nil - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeNull, nil); - desc = [script_ gtm_executePositionalHandler:@"test" - parameters:[NSArray array] - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeNull, nil); - - //Applescript doesn't appear to get upset about extra params - desc = [script_ gtm_executePositionalHandler:@"test" - parameters:[NSArray arrayWithObject:@"foo"] - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeNull, nil); -} - -- (void)testHandlerNoParamsWithReturn { - NSDictionary *error = nil; - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"testReturnOne" - parameters:nil - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)1, nil); - desc = [script_ gtm_executePositionalHandler:@"testReturnOne" - parameters:[NSArray array] - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)1, nil); - - //Applescript doesn't appear to get upset about extra params - desc = [script_ gtm_executePositionalHandler:@"testReturnOne" - parameters:[NSArray arrayWithObject:@"foo"] - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)1, nil); -} - -- (void)testHandlerOneParamWithReturn { - NSDictionary *error = nil; - // Note case change in executeHandler call - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"testreturnParam" - parameters:nil - error:&error]; - STAssertNil(desc, @"Desc should by nil %@", desc); - STAssertNotNil(error, nil); - error = nil; - - desc = [script_ gtm_executePositionalHandler:@"testReturnParam" - parameters:[NSArray array] - error:&error]; - STAssertNil(desc, @"Desc should by nil %@", desc); - STAssertNotNil(error, nil); - error = nil; - - desc = [script_ gtm_executePositionalHandler:@"testReturnParam" - parameters:[NSArray arrayWithObject:@"foo"] - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeUnicodeText, nil); - STAssertEqualObjects([desc gtm_objectValue], @"foo", nil); -} - -- (void)testHandlerTwoParamsWithReturn { - NSDictionary *error = nil; - // Note case change in executeHandler call - // Test case and empty params - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"testADDPArams" - parameters:nil - error:&error]; - STAssertNil(desc, @"Desc should by nil %@", desc); - STAssertNotNil(error, nil); - - // Test empty params - error = nil; - desc = [script_ gtm_executePositionalHandler:@"testAddParams" - parameters:[NSArray array] - error:&error]; - STAssertNil(desc, @"Desc should by nil %@", desc); - STAssertNotNil(error, nil); - - error = nil; - NSArray *args = [NSArray arrayWithObjects: - [NSNumber numberWithInt:1], - [NSNumber numberWithInt:2], - nil]; - desc = [script_ gtm_executePositionalHandler:@"testAddParams" - parameters:args - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)3, nil); - - // Test bad params - error = nil; - args = [NSArray arrayWithObjects: - @"foo", - @"bar", - nil]; - desc = [script_ gtm_executePositionalHandler:@"testAddParams" - parameters:args - error:&error]; - STAssertNil(desc, @"Desc should by nil %@", desc); - STAssertNotNil(error, nil); - - // Test too many params. Currently Applescript allows this so it should pass - error = nil; - args = [NSArray arrayWithObjects: - [NSNumber numberWithInt:1], - [NSNumber numberWithInt:2], - [NSNumber numberWithInt:3], - nil]; - desc = [script_ gtm_executePositionalHandler:@"testAddParams" - parameters:args - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)3, nil);} - -- (void)testLabeledHandler { - NSDictionary *error = nil; - AEKeyword labels[] = { keyDirectObject, - keyASPrepositionOnto, - keyASPrepositionGiven }; - id params[3]; - params[0] = [NSNumber numberWithInt:1]; - params[1] = [NSNumber numberWithInt:3]; - params[2] = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:4] - forKey:@"othervalue"]; - - NSAppleEventDescriptor *desc - = [script_ gtm_executeLabeledHandler:@"testAdd" - labels:labels - parameters:params - count:sizeof(params) / sizeof(id) - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)8, nil); - - // Test too many params. Currently Applescript allows this so it should pass - AEKeyword labels2[] = { keyDirectObject, - keyASPrepositionOnto, - keyASPrepositionBetween, - keyASPrepositionGiven }; - id params2[4]; - params2[0] = [NSNumber numberWithInt:1]; - params2[1] = [NSNumber numberWithInt:3]; - params2[2] = [NSNumber numberWithInt:5]; - params2[3] = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:4] - forKey:@"othervalue"]; - - error = nil; - desc = [script_ gtm_executeLabeledHandler:@"testAdd" - labels:labels2 - parameters:params2 - count:sizeof(params2) / sizeof(id) - error:&error]; - STAssertNotNil(desc, [error description]); - STAssertNil(error, @"Error should be nil. Error = %@", [error description]); - STAssertEquals([desc descriptorType], (DescType)typeSInt32, nil); - STAssertEquals([desc int32Value], (SInt32)8, nil);} - -- (void)testHandlers { - NSSet *handlers = [script_ gtm_handlers]; - NSSet *expected = [NSSet setWithObjects: - @"aevtpdoc", - @"test", - @"testreturnone", - @"testreturnparam", - @"testaddparams", - @"testadd", - @"testgetscript", - nil]; - if ([GTMSystemVersion isBuildEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // Workaround for bug in SnowLeopard - // rdar://66688601 OSAGetHandlersNames returns names in camelcase instead - // of smallcaps. - handlers = [handlers valueForKey:@"lowercaseString"]; - } - STAssertEqualObjects(handlers, expected, @"Unexpected handlers?"); -} - -- (void)testInheritedHandlers { - NSDictionary *error = nil; - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"testGetScript" - parameters:nil - error:&error]; - STAssertNil(error, nil); - STAssertNotNil(desc, nil); - NSAppleScript *script = [desc gtm_objectValue]; - STAssertTrue([script isKindOfClass:[NSAppleScript class]], nil); - error = nil; - desc = [script gtm_executePositionalHandler:@"parentTestScriptFunc" - parameters:nil error:&error]; - STAssertNil(error, nil); - STAssertNotNil(desc, nil); - NSString *value = [desc gtm_objectValue]; - STAssertEqualObjects(value, @"parent", nil); -} - -- (void)testProperties { - NSDictionary *error = nil; - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"testGetScript" - parameters:nil - error:&error]; - STAssertNil(error, nil); - STAssertNotNil(desc, nil); - NSAppleScript *script = [desc gtm_objectValue]; - STAssertTrue([script isKindOfClass:[NSAppleScript class]], nil); - - NSSet *properties = [script gtm_properties]; - NSSet *expected - = [NSSet setWithObjects: - @"testscriptproperty", - @"parenttestscriptproperty", - @"foo", - @"testscript", - @"parenttestscript", - @"asdscriptuniqueidentifier", - [GTMFourCharCode fourCharCodeWithFourCharCode:pVersion], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASPrintDepth], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASTopLevelScript], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASResult], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASMinutes], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASDays], - // No constant for linefeed in the 10.5 sdk - // Radar 6132775 Need a constant for the Applescript Property 'lnfd' - [GTMFourCharCode fourCharCodeWithFourCharCode:'lnfd'], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASPi], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASReturn], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASSpace], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASPrintLength], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASQuote], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASWeeks], - [GTMFourCharCode fourCharCodeWithFourCharCode:pTextItemDelimiters], - // Applescript properties should be pASSeconds, but - // on 10.5.4/10.5.5 it is actually using cSeconds. - // Radar 6132696 Applescript root level property is cSeconds - // instead of pASSeconds - [GTMFourCharCode fourCharCodeWithFourCharCode:cSeconds], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASHours], - [GTMFourCharCode fourCharCodeWithFourCharCode:pASTab], - nil]; - if ([GTMSystemVersion isBuildEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // Workaround for bug in SnowLeopard - // rdar://6289077 OSAGetPropertyNames returns names in camelcase instead - // of lowercase. - properties = [properties valueForKey:@"lowercaseString"]; - } - STAssertEqualObjects(properties, expected, @"Unexpected properties?"); - id value = [script gtm_valueForProperty:@"testScriptProperty"]; - STAssertEqualObjects(value, [NSNumber numberWithInt:5], @"bad property?"); - BOOL goodSet = [script gtm_setValue:@"bar" - forProperty:@"foo" - addingDefinition:NO]; - STAssertTrue(goodSet, @"Couldn't set property"); - - // Test local set - value = [script gtm_valueForProperty:@"foo"]; - STAssertEqualObjects(value, @"bar", @"bad property?"); - - // Test inherited set - value = [script_ gtm_valueForProperty:@"foo"]; - STAssertEqualObjects(value, @"bar", @"bad property?"); - - [GTMUnitTestDevLog expectPattern:@"Unable to setValue:bar forProperty:" - "\\(null\\) from \\(-50\\)"]; - goodSet = [script gtm_setValue:@"bar" - forProperty:nil - addingDefinition:NO]; - STAssertFalse(goodSet, @"Set property?"); - - [GTMUnitTestDevLog expectPattern:@"Unable to setValue:bar forProperty:3" - " from \\(-50\\)"]; - goodSet = [script gtm_setValue:@"bar" - forProperty:[NSNumber numberWithInt:3] - addingDefinition:YES]; - STAssertFalse(goodSet, @"Set property?"); - - - [GTMUnitTestDevLog expectPattern:@"Unable to get valueForProperty:gargle " - "from \\(-1753\\)"]; - value = [script gtm_valueForProperty:@"gargle"]; - STAssertNil(value, @"Property named gargle?"); - - goodSet = [script_ gtm_setValue:@"wow" - forProperty:@"addedProperty" - addingDefinition:YES]; - STAssertTrue(goodSet, @"Unable to addProperty"); - - value = [script gtm_valueForProperty:@"addedProperty"]; - STAssertNotNil(value, nil); - STAssertEqualObjects(value, @"wow", nil); - - // http://www.straightdope.com/classics/a3_341.html - NSNumber *newPI = [NSNumber numberWithInt:3]; - goodSet = [script gtm_setValue:newPI - forPropertyEnum:pASPi - addingDefinition:NO]; - STAssertTrue(goodSet, @"Unable to set property"); - value = [script_ gtm_valueForPropertyEnum:pASPi]; - STAssertNotNil(value, nil); - STAssertEqualObjects(value, newPI, @"bad property"); -} - -- (void)testFailures { - NSDictionary *error = nil; - NSAppleEventDescriptor *desc - = [script_ gtm_executePositionalHandler:@"noSuchTest" - parameters:nil - error:&error]; - STAssertNil(desc, nil); - STAssertNotNil(error, nil); - - // Test with empty handler name - error = nil; - desc = [script_ gtm_executePositionalHandler:@"" - parameters:[NSArray array] - error:&error]; - STAssertNil(desc, nil); - STAssertNotNil(error, nil); - - // Test with nil handler - error = nil; - desc = [script_ gtm_executePositionalHandler:nil - parameters:[NSArray array] - error:&error]; - STAssertNil(desc, nil); - STAssertNotNil(error, nil); - - // Test with nil handler and nil error - desc = [script_ gtm_executePositionalHandler:nil - parameters:nil - error:nil]; - STAssertNil(desc, nil); - - // Test with a bad script - NSAppleScript *script - = [[[NSAppleScript alloc] initWithSource:@"david hasselhoff"] autorelease]; - [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"]; - [GTMUnitTestDevLog expectString:@"Unable to coerce script -2147450879"]; - NSSet *handlers = [script gtm_handlers]; - STAssertEquals([handlers count], (NSUInteger)0, @"Should have no handlers"); - [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"]; - [GTMUnitTestDevLog expectString:@"Unable to coerce script -2147450879"]; - NSSet *properties = [script gtm_properties]; - STAssertEquals([properties count], - (NSUInteger)0, - @"Should have no properties"); - [GTMUnitTestDevLog expectPattern:@"Unable to compile script: .*"]; - [GTMUnitTestDevLog expectString:@"Unable to get script info about " - @"open handler -2147450879"]; - STAssertFalse([script gtm_hasOpenDocumentsHandler], - @"Has an opendoc handler?"); -} - -- (void)testScriptDescriptors { - NSAppleEventDescriptor *desc = [script_ gtm_appleEventDescriptor]; - STAssertNotNil(desc, @"Couldn't make a script desc"); - NSAppleScript *script = [desc gtm_objectValue]; - STAssertNotNil(script, @"Couldn't get a script back"); - NSSet *handlers = [script gtm_handlers]; - STAssertNotNil(handlers, @"Couldn't get handlers"); -} - -- (void)testOpenHandler { - STAssertFalse([script_ gtm_hasOpenDocumentsHandler], nil); - id script = [script_ gtm_valueForProperty:@"testscript"]; - STAssertNotNil(script, nil); - STAssertTrue([script gtm_hasOpenDocumentsHandler], nil); -} - - -@protocol ScriptInterface -- (id)test; -- (id)testReturnParam:(id)param; -- (id)testAddParams:(id)param1 :(id)param2; -@end - -- (void)testForwarding { - id foo = (id)script_; - [foo test]; - NSNumber *val = [foo testReturnParam:[NSNumber numberWithInt:2]]; - STAssertEquals([val intValue], 2, @"should be 2"); - val = [foo testAddParams:[NSNumber numberWithInt:2] - :[NSNumber numberWithInt:3]]; - STAssertEquals([val intValue], 5, @"should be 5"); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.h deleted file mode 100644 index 8140f804..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// GTMNSArray+Merge.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// Extension to NSArray to allow merging of arrays. -// -@interface NSArray (GTMNSArrayMergingAdditions) - -// Merge our array with |newArray| by sorting each array then merging the -// two arrays. If |merger| is provided then call that method on any old -// items that compare as equal to a new item, passing the new item as -// the only argument. If |merger| is not provided, then insert new items -// in front of matching old items. If neither array has any items then -// nil is returned. -// -// The signature of the |merger| is: -// - (id)merge:(id)newItem; -// -// Returns a new, sorted array. -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - mergeSelector:(SEL)merger; - -// Same as above, only |comparer| is used to sort/compare the objects, just like -// -[NSArray sortedArrayUsingSelector]. If |comparer| is nil, nil is returned. -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - compareSelector:(SEL)comparer - mergeSelector:(SEL)merger; - -@end - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.m deleted file mode 100644 index 5bf07c8f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+Merge.m +++ /dev/null @@ -1,111 +0,0 @@ -// -// GTMNSArray+Merge.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMNSArray+Merge.h" - -#import "GTMDefines.h" - -#if GTM_IPHONE_SDK -#import -#else // GTM_IPHONE_SDK -#import -#endif // GTM_IPHONE_SDK - -@implementation NSArray (GTMNSArrayMergingAdditions) - -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - mergeSelector:(SEL)merger { - return [self gtm_mergeArray:newArray - compareSelector:@selector(compare:) - mergeSelector:merger]; -} - -- (NSArray *)gtm_mergeArray:(NSArray *)newArray - compareSelector:(SEL)comparer - mergeSelector:(SEL)merger { - // must have a compare selector - if (!comparer) return nil; - - // Sort and merge the contents of |self| with |newArray|. - NSArray *sortedMergedArray = nil; - if ([self count] && [newArray count]) { - NSMutableArray *mergingArray = [NSMutableArray arrayWithArray:self]; - [mergingArray sortUsingSelector:comparer]; - NSArray *sortedNewArray - = [newArray sortedArrayUsingSelector:comparer]; - - NSUInteger oldIndex = 0; - NSUInteger oldCount = [mergingArray count]; - id oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:0] - : nil; - - id newItem = nil; - GTM_FOREACH_OBJECT(newItem, sortedNewArray) { - BOOL stillLooking = YES; - while (oldIndex < oldCount && stillLooking) { - // We must take care here, since Intel leaves junk in high bytes of - // return register for predicates that return BOOL. - // For details see: - // http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html - // and - // http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187 - NSComparisonResult result - = ((NSComparisonResult (*)(id, SEL, id))objc_msgSend)(newItem, comparer, oldItem); - if (result == NSOrderedSame && merger) { - // It's a match! - id repItem = [oldItem performSelector:merger - withObject:newItem]; - [mergingArray replaceObjectAtIndex:oldIndex - withObject:repItem]; - ++oldIndex; - oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:oldIndex] - : nil; - stillLooking = NO; - } else if (result == NSOrderedAscending - || (result == NSOrderedSame && !merger)) { - // This is either a new item and belongs right here, or it's - // a match to an existing item but we're not merging. - [mergingArray insertObject:newItem - atIndex:oldIndex]; - ++oldIndex; - ++oldCount; - stillLooking = NO; - } else { - ++oldIndex; - oldItem = (oldIndex < oldCount) - ? [mergingArray objectAtIndex:oldIndex] - : nil; - } - } - if (stillLooking) { - // Once we get here, the rest of the new items get appended. - [mergingArray addObject:newItem]; - } - } - sortedMergedArray = mergingArray; - } else if ([self count]) { - sortedMergedArray = [self sortedArrayUsingSelector:comparer]; - } else if ([newArray count]) { - sortedMergedArray = [newArray sortedArrayUsingSelector:comparer]; - } - return sortedMergedArray; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+MergeTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+MergeTest.m deleted file mode 100644 index 0d8eb81f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSArray+MergeTest.m +++ /dev/null @@ -1,219 +0,0 @@ -// -// GTMNSArray+MergeTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSArray+Merge.h" - -@interface GTMNSArray_MergeTest : GTMTestCase -@end - - -@interface NSString (GTMStringMergingTestAdditions) - -- (NSString *)mergeString:(NSString *)stringB; - -@end - - -@implementation GTMNSArray_MergeTest - -- (void)testMergingTwoEmptyArrays { - NSArray *emptyArrayA = [NSArray array]; - NSArray *emptyArrayB = [NSArray array]; - NSArray *mergedArray = [emptyArrayA gtm_mergeArray:emptyArrayB - mergeSelector:nil]; - STAssertNil(mergedArray, - @"merge of two empty arrays with no merger should render nil"); -} - -- (void)testMergingTwoEmptyArraysWithMerger { - NSArray *emptyArrayA = [NSArray array]; - NSArray *emptyArrayB = [NSArray array]; - NSArray *mergedArray - = [emptyArrayA gtm_mergeArray:emptyArrayB - mergeSelector:@selector(mergeString:)]; - STAssertNil(mergedArray, - @"merge of two empty arrays with merger should render nil"); -} - -- (void)testMergingEmptyWithNilArray { - NSArray *emptyArrayA = [NSArray array]; - NSArray *nilArrayB = nil; - NSArray *mergedArray = [emptyArrayA gtm_mergeArray:nilArrayB - mergeSelector:nil]; - STAssertNil(mergedArray, - @"merge of empty with nil array with no merger should render nil"); -} - -- (void)testMergingEmptyWithNilArrayWithMerger { - NSArray *emptyArrayA = [NSArray array]; - NSArray *nilArrayB = nil; - NSArray *mergedArray - = [emptyArrayA gtm_mergeArray:nilArrayB - mergeSelector:@selector(mergeObject:)]; - STAssertNil(mergedArray, - @"merge of empty with nil array with merger should render nil"); -} - -- (void)testMergingTwoOneItemArraysThatDontMatch { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - STAssertNotNil(mergedArray, - @"merge of two non empty arrays with no merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)2, - @"merged array should have two items"); - STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil); - STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil); -} - -- (void)testMergingTwoOneItemArraysThatDontMatchWithMerger { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.ghi"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - STAssertNotNil(mergedArray, - @"merge of two non empty arrays with merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)2, - @"merged array should have two items"); - STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil); - STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.ghi", nil); -} - -- (void)testMergingTwoOneItemArraysThatMatch { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - STAssertNotNil(mergedArray, - @"merge of two matching arrays with no merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)2, - @"merged array with no merger should have two items"); - STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil); - STAssertEqualObjects([mergedArray objectAtIndex:1], @"abc.def", nil); -} - -- (void)testMergingTwoOneItemArraysThatMatchWithMerger { - NSArray *arrayA = [NSArray arrayWithObject:@"abc.def"]; - NSArray *arrayB = [NSArray arrayWithObject:@"abc.def"]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - STAssertNotNil(mergedArray, - @"merge of two matching arrays with merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)1, - @"merged array with merger should have one items"); - STAssertEqualObjects([mergedArray objectAtIndex:0], @"abc.def", nil); -} - -- (void)testMergingMultipleItemArray { - NSArray *arrayA = [NSArray arrayWithObjects: - @"Kansas", - @"Arkansas", - @"Wisconson", - @"South Carolina", - nil]; - NSArray *arrayB = [NSArray arrayWithObjects: - @"South Carolina", - @"Quebec", - @"British Columbia", - @"Arkansas", - @"South Hamptom", - nil]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - STAssertNotNil(mergedArray, - @"merge of two non empty arrays with no merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)9, - @"merged array should have 9 items"); -} - -- (void)testMergingMultipleItemArrayWithMerger { - NSArray *arrayA = [NSArray arrayWithObjects: - @"Kansas", - @"Arkansas", - @"Wisconson", - @"South Carolina", - nil]; - NSArray *arrayB = [NSArray arrayWithObjects: - @"South Carolina", - @"Quebec", - @"British Columbia", - @"Arkansas", - @"South Hamptom", - nil]; - NSArray *mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - STAssertNotNil(mergedArray, - @"merge of two non empty arrays with merger should render " - @"an array"); - STAssertEquals([mergedArray count], (NSUInteger)7, - @"merged array should have 7 items"); -} - -- (void)testMergeWithEmptyArrays { - NSArray *arrayA = [NSArray arrayWithObjects:@"xyz", @"abc", @"mno", nil]; - NSArray *arrayB = [NSArray array]; - NSArray *expected = [NSArray arrayWithObjects:@"abc", @"mno", @"xyz", nil]; - STAssertNotNil(arrayA, nil); - STAssertNotNil(arrayB, nil); - STAssertNotNil(expected, nil); - NSArray *mergedArray; - - // no merger - mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:nil]; - STAssertNotNil(mergedArray, nil); - STAssertEqualObjects(mergedArray, expected, nil); - - // w/ merger - mergedArray = [arrayA gtm_mergeArray:arrayB - mergeSelector:@selector(mergeString:)]; - STAssertNotNil(mergedArray, nil); - STAssertEqualObjects(mergedArray, expected, nil); - - // no merger and array args reversed - mergedArray = [arrayB gtm_mergeArray:arrayA - mergeSelector:nil]; - STAssertNotNil(mergedArray, nil); - STAssertEqualObjects(mergedArray, expected, nil); - - // w/ merger and array args reversed - mergedArray = [arrayB gtm_mergeArray:arrayA - mergeSelector:@selector(mergeString:)]; - STAssertNotNil(mergedArray, nil); - STAssertEqualObjects(mergedArray, expected, nil); - -} - -@end - - -@implementation NSString (GTMStringMergingTestAdditions) - -- (NSString *)mergeString:(NSString *)stringB { - return stringB; -} - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.h deleted file mode 100644 index df31d24c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.h +++ /dev/null @@ -1,84 +0,0 @@ -// -// GTMNSData+zlib.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -/// Helpers for dealing w/ zlib inflate/deflate calls. -@interface NSData (GTMZLibAdditions) - -/// Return an autoreleased NSData w/ the result of gzipping the bytes. -// -// Uses the default compression level. -+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes - length:(NSUInteger)length; - -/// Return an autoreleased NSData w/ the result of gzipping the payload of |data|. -// -// Uses the default compression level. -+ (NSData *)gtm_dataByGzippingData:(NSData *)data; - -/// Return an autoreleased NSData w/ the result of gzipping the bytes using |level| compression level. -// -// |level| can be 1-9, any other values will be clipped to that range. -+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level; - -/// Return an autoreleased NSData w/ the result of gzipping the payload of |data| using |level| compression level. -+ (NSData *)gtm_dataByGzippingData:(NSData *)data - compressionLevel:(int)level; - -// NOTE: deflate is *NOT* gzip. deflate is a "zlib" stream. pick which one -// you really want to create. (the inflate api will handle either) - -/// Return an autoreleased NSData w/ the result of deflating the bytes. -// -// Uses the default compression level. -+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes - length:(NSUInteger)length; - -/// Return an autoreleased NSData w/ the result of deflating the payload of |data|. -// -// Uses the default compression level. -+ (NSData *)gtm_dataByDeflatingData:(NSData *)data; - -/// Return an autoreleased NSData w/ the result of deflating the bytes using |level| compression level. -// -// |level| can be 1-9, any other values will be clipped to that range. -+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level; - -/// Return an autoreleased NSData w/ the result of deflating the payload of |data| using |level| compression level. -+ (NSData *)gtm_dataByDeflatingData:(NSData *)data - compressionLevel:(int)level; - - -/// Return an autoreleased NSData w/ the result of decompressing the bytes. -// -// The bytes to decompress can be zlib or gzip payloads. -+ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes - length:(NSUInteger)length; - -/// Return an autoreleased NSData w/ the result of decompressing the payload of |data|. -// -// The data to decompress can be zlib or gzip payloads. -+ (NSData *)gtm_dataByInflatingData:(NSData *)data; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.m deleted file mode 100644 index 8ba1ddca..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlib.m +++ /dev/null @@ -1,267 +0,0 @@ -// -// GTMNSData+zlib.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMNSData+zlib.h" -#import -#import "GTMDefines.h" - -#define kChunkSize 1024 - -@interface NSData (GTMZlibAdditionsPrivate) -+ (NSData *)gtm_dataByCompressingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level - useGzip:(BOOL)useGzip; -@end - -@implementation NSData (GTMZlibAdditionsPrivate) -+ (NSData *)gtm_dataByCompressingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level - useGzip:(BOOL)useGzip { - if (!bytes || !length) { - return nil; - } - - // TODO: support 64bit inputs - // avail_in is a uInt, so if length > UINT_MAX we actually need to loop - // feeding the data until we've gotten it all in. not supporting this - // at the moment. - _GTMDevAssert(length <= UINT_MAX, @"Currently don't support >32bit lengths"); - - if (level == Z_DEFAULT_COMPRESSION) { - // the default value is actually outside the range, so we have to let it - // through specifically. - } else if (level < Z_BEST_SPEED) { - level = Z_BEST_SPEED; - } else if (level > Z_BEST_COMPRESSION) { - level = Z_BEST_COMPRESSION; - } - - z_stream strm; - bzero(&strm, sizeof(z_stream)); - - int windowBits = 15; // the default - int memLevel = 8; // the default - if (useGzip) { - windowBits += 16; // enable gzip header instead of zlib header - } - int retCode; - if ((retCode = deflateInit2(&strm, level, Z_DEFLATED, windowBits, - memLevel, Z_DEFAULT_STRATEGY)) != Z_OK) { - // COV_NF_START - no real way to force this in a unittest (we guard all args) - _GTMDevLog(@"Failed to init for deflate w/ level %d, error %d", - level, retCode); - return nil; - // COV_NF_END - } - - // hint the size at 1/4 the input size - NSMutableData *result = [NSMutableData dataWithCapacity:(length/4)]; - unsigned char output[kChunkSize]; - - // setup the input - strm.avail_in = (unsigned int)length; - strm.next_in = (unsigned char*)bytes; - - // loop to collect the data - do { - // update what we're passing in - strm.avail_out = kChunkSize; - strm.next_out = output; - retCode = deflate(&strm, Z_FINISH); - if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) { - // COV_NF_START - no real way to force this in a unittest - // (in inflate, we can feed bogus/truncated data to test, but an error - // here would be some internal issue w/in zlib, and there isn't any real - // way to test it) - _GTMDevLog(@"Error trying to deflate some of the payload, error %d", - retCode); - deflateEnd(&strm); - return nil; - // COV_NF_END - } - // collect what we got - unsigned gotBack = kChunkSize - strm.avail_out; - if (gotBack > 0) { - [result appendBytes:output length:gotBack]; - } - - } while (retCode == Z_OK); - - // if the loop exits, we used all input and the stream ended - _GTMDevAssert(strm.avail_in == 0, - @"thought we finished deflate w/o using all input, %u bytes left", - strm.avail_in); - _GTMDevAssert(retCode == Z_STREAM_END, - @"thought we finished deflate w/o getting a result of stream end, code %d", - retCode); - - // clean up - deflateEnd(&strm); - - return result; -} // gtm_dataByCompressingBytes:length:compressionLevel:useGzip: - - -@end - - -@implementation NSData (GTMZLibAdditions) - -+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes - length:(NSUInteger)length { - return [self gtm_dataByCompressingBytes:bytes - length:length - compressionLevel:Z_DEFAULT_COMPRESSION - useGzip:YES]; -} // gtm_dataByGzippingBytes:length: - -+ (NSData *)gtm_dataByGzippingData:(NSData *)data { - return [self gtm_dataByCompressingBytes:[data bytes] - length:[data length] - compressionLevel:Z_DEFAULT_COMPRESSION - useGzip:YES]; -} // gtm_dataByGzippingData: - -+ (NSData *)gtm_dataByGzippingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level { - return [self gtm_dataByCompressingBytes:bytes - length:length - compressionLevel:level - useGzip:YES]; -} // gtm_dataByGzippingBytes:length:level: - -+ (NSData *)gtm_dataByGzippingData:(NSData *)data - compressionLevel:(int)level { - return [self gtm_dataByCompressingBytes:[data bytes] - length:[data length] - compressionLevel:level - useGzip:YES]; -} // gtm_dataByGzippingData:level: - -+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes - length:(NSUInteger)length { - return [self gtm_dataByCompressingBytes:bytes - length:length - compressionLevel:Z_DEFAULT_COMPRESSION - useGzip:NO]; -} // gtm_dataByDeflatingBytes:length: - -+ (NSData *)gtm_dataByDeflatingData:(NSData *)data { - return [self gtm_dataByCompressingBytes:[data bytes] - length:[data length] - compressionLevel:Z_DEFAULT_COMPRESSION - useGzip:NO]; -} // gtm_dataByDeflatingData: - -+ (NSData *)gtm_dataByDeflatingBytes:(const void *)bytes - length:(NSUInteger)length - compressionLevel:(int)level { - return [self gtm_dataByCompressingBytes:bytes - length:length - compressionLevel:level - useGzip:NO]; -} // gtm_dataByDeflatingBytes:length:level: - -+ (NSData *)gtm_dataByDeflatingData:(NSData *)data - compressionLevel:(int)level { - return [self gtm_dataByCompressingBytes:[data bytes] - length:[data length] - compressionLevel:level - useGzip:NO]; -} // gtm_dataByDeflatingData:level: - -+ (NSData *)gtm_dataByInflatingBytes:(const void *)bytes - length:(NSUInteger)length { - if (!bytes || !length) { - return nil; - } - - // TODO: support 64bit inputs - // avail_in is a uInt, so if length > UINT_MAX we actually need to loop - // feeding the data until we've gotten it all in. not supporting this - // at the moment. - _GTMDevAssert(length <= UINT_MAX, @"Currently don't support >32bit lengths"); - - z_stream strm; - bzero(&strm, sizeof(z_stream)); - - // setup the input - strm.avail_in = (unsigned int)length; - strm.next_in = (unsigned char*)bytes; - - int windowBits = 15; // 15 to enable any window size - windowBits += 32; // and +32 to enable zlib or gzip header detection. - int retCode; - if ((retCode = inflateInit2(&strm, windowBits)) != Z_OK) { - // COV_NF_START - no real way to force this in a unittest (we guard all args) - _GTMDevLog(@"Failed to init for inflate, error %d", retCode); - return nil; - // COV_NF_END - } - - // hint the size at 4x the input size - NSMutableData *result = [NSMutableData dataWithCapacity:(length*4)]; - unsigned char output[kChunkSize]; - - // loop to collect the data - do { - // update what we're passing in - strm.avail_out = kChunkSize; - strm.next_out = output; - retCode = inflate(&strm, Z_NO_FLUSH); - if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) { - _GTMDevLog(@"Error trying to inflate some of the payload, error %d", - retCode); - inflateEnd(&strm); - return nil; - } - // collect what we got - unsigned gotBack = kChunkSize - strm.avail_out; - if (gotBack > 0) { - [result appendBytes:output length:gotBack]; - } - - } while (retCode == Z_OK); - - // make sure there wasn't more data tacked onto the end of a valid compressed - // stream. - if (strm.avail_in != 0) { - _GTMDevLog(@"thought we finished inflate w/o using all input, %u bytes left", - strm.avail_in); - result = nil; - } - // the only way out of the loop was by hitting the end of the stream - _GTMDevAssert(retCode == Z_STREAM_END, - @"thought we finished inflate w/o getting a result of stream end, code %d", - retCode); - - // clean up - inflateEnd(&strm); - - return result; -} // gtm_dataByInflatingBytes:length: - -+ (NSData *)gtm_dataByInflatingData:(NSData *)data { - return [self gtm_dataByInflatingBytes:[data bytes] - length:[data length]]; -} // gtm_dataByInflatingData: - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlibTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlibTest.m deleted file mode 100644 index 0d868864..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSData+zlibTest.m +++ /dev/null @@ -1,360 +0,0 @@ -// -// GTMNSData+zlibTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "GTMNSData+zlib.h" -#import // for randiom/srandomdev -#import - -@interface GTMNSData_zlibTest : GTMTestCase -@end - -// NOTE: we don't need to test the actually compressor/inflation (we're using -// zlib, it works), we just need to test our wrapper. So we can use canned -// data, etc. (and yes, when using random data, things once failed because -// we generated a random block of data that was valid compressed data?!) - -static unsigned char randomDataLarge[] = { - // openssl rand -rand /dev/random 512 | xxd -i - 0xe1, 0xa6, 0xe2, 0xa2, 0x0b, 0xf7, 0x8d, 0x6b, 0x31, 0xfe, 0xaa, 0x64, - 0x50, 0xbe, 0x52, 0x7e, 0x83, 0x74, 0x00, 0x8f, 0x62, 0x96, 0xc7, 0xe9, - 0x20, 0x59, 0x78, 0xc6, 0xea, 0x10, 0xd5, 0xdb, 0x3f, 0x6b, 0x13, 0xd9, - 0x44, 0x18, 0x24, 0x17, 0x63, 0xc8, 0x74, 0xa5, 0x37, 0x6c, 0x9c, 0x00, - 0xe5, 0xcf, 0x0a, 0xdf, 0xb9, 0x66, 0xb1, 0xbd, 0x04, 0x8f, 0x55, 0x9e, - 0xb0, 0x24, 0x4e, 0xf0, 0xc4, 0x69, 0x2c, 0x1f, 0x63, 0x9f, 0x41, 0xa8, - 0x89, 0x9b, 0x98, 0x00, 0xb6, 0x78, 0xf7, 0xe4, 0x4c, 0x72, 0x14, 0x84, - 0xaa, 0x3d, 0xc1, 0x42, 0x9f, 0x12, 0x85, 0xdd, 0x16, 0x8b, 0x8f, 0x67, - 0xe0, 0x26, 0x5b, 0x5e, 0xaa, 0xe7, 0xd3, 0x67, 0xfe, 0x21, 0x77, 0xa6, - 0x52, 0xde, 0x33, 0x8b, 0x96, 0x49, 0x6a, 0xd6, 0x58, 0x58, 0x36, 0x00, - 0x23, 0xd2, 0x45, 0x13, 0x9f, 0xd9, 0xc7, 0x2d, 0x55, 0x12, 0xb4, 0xfe, - 0x53, 0x27, 0x1f, 0x14, 0x71, 0x9b, 0x7e, 0xcc, 0x5e, 0x8c, 0x59, 0xef, - 0x80, 0xac, 0x89, 0xf4, 0x45, 0x8d, 0x98, 0x6d, 0x97, 0xfd, 0x53, 0x5f, - 0x19, 0xd6, 0x11, 0xf7, 0xcb, 0x5d, 0xca, 0xab, 0xe1, 0x01, 0xf1, 0xe9, - 0x1f, 0x1f, 0xf3, 0x53, 0x76, 0xa2, 0x59, 0x8e, 0xb3, 0x91, 0xff, 0xe8, - 0x1b, 0xc0, 0xc0, 0xda, 0xdd, 0x93, 0xb5, 0x9d, 0x62, 0x13, 0xb8, 0x07, - 0xf2, 0xf5, 0xb9, 0x4b, 0xe1, 0x09, 0xed, 0xdb, 0xe6, 0xd9, 0x2d, 0xc4, - 0x0d, 0xb6, 0xbd, 0xfc, 0xdb, 0x5c, 0xcc, 0xf6, 0x53, 0x4e, 0x01, 0xa4, - 0x03, 0x95, 0x4a, 0xa4, 0xaa, 0x4f, 0x45, 0xaf, 0xbf, 0xf1, 0x7e, 0x60, - 0x1d, 0x86, 0x93, 0x65, 0x7b, 0x24, 0x0c, 0x09, 0xe0, 0xd1, 0xd8, 0x60, - 0xd9, 0xd9, 0x55, 0x2a, 0xec, 0xd5, 0xdc, 0xd0, 0xc6, 0x5e, 0x2c, 0x22, - 0xf5, 0x19, 0x0b, 0xc3, 0xa1, 0x38, 0x11, 0x67, 0x6f, 0x6c, 0x0e, 0x34, - 0x44, 0x83, 0xee, 0xd3, 0xf2, 0x4b, 0x7b, 0x03, 0x68, 0xfe, 0xc5, 0x76, - 0xb2, 0x2e, 0x26, 0xeb, 0x1f, 0x66, 0x02, 0xa4, 0xd9, 0xda, 0x28, 0x3a, - 0xc3, 0x94, 0x03, 0xe8, 0x29, 0x7e, 0xfe, 0x3d, 0xc8, 0xc1, 0x0a, 0x74, - 0xc7, 0xaf, 0xa6, 0x84, 0x86, 0x85, 0xc3, 0x8c, 0x00, 0x38, 0xd4, 0xb5, - 0xb2, 0xe0, 0xf0, 0xc4, 0x8d, 0x10, 0x0d, 0xf1, 0xcd, 0x05, 0xdb, 0xd0, - 0xcf, 0x17, 0x4f, 0xa8, 0xe5, 0xf0, 0x53, 0x55, 0x62, 0xc7, 0x55, 0xe5, - 0xbe, 0x18, 0x2f, 0xda, 0x48, 0xf1, 0xaa, 0x85, 0x46, 0x80, 0x15, 0x70, - 0x82, 0xd2, 0xa6, 0xb0, 0x3d, 0x31, 0xb5, 0xcc, 0x23, 0x95, 0x5e, 0x15, - 0x35, 0x32, 0xd0, 0x86, 0xd1, 0x6e, 0x2d, 0xc0, 0xfe, 0x45, 0xae, 0x28, - 0x24, 0xa7, 0x14, 0xf4, 0xe9, 0xb5, 0x6f, 0xac, 0x25, 0xf9, 0x88, 0xf6, - 0x60, 0x5d, 0x6b, 0x5c, 0xf2, 0x38, 0xe8, 0xdc, 0xbd, 0xa6, 0x13, 0xc0, - 0xa4, 0xc8, 0xe9, 0x7a, 0xc6, 0xb6, 0x88, 0x26, 0x98, 0x9f, 0xe3, 0x9a, - 0xd9, 0x5b, 0xd4, 0xd0, 0x02, 0x1f, 0x55, 0x30, 0xbe, 0xde, 0x9c, 0xd1, - 0x53, 0x93, 0x72, 0xe6, 0x19, 0x79, 0xe9, 0xf1, 0x70, 0x78, 0x92, 0x31, - 0xf6, 0x17, 0xc0, 0xdd, 0x99, 0xc8, 0x97, 0x67, 0xdc, 0xf6, 0x67, 0x6b, - 0x9b, 0x1c, 0x90, 0xea, 0x1a, 0x9e, 0x26, 0x68, 0xc2, 0x13, 0x94, 0x3a, - 0x3e, 0x73, 0x61, 0x4e, 0x37, 0xa8, 0xa1, 0xfa, 0xf8, 0x22, 0xdd, 0x20, - 0x40, 0xc6, 0x52, 0x27, 0x47, 0x1a, 0x79, 0xfa, 0x40, 0xa6, 0x62, 0x6b, - 0xe6, 0xc7, 0x67, 0xb7, 0xa8, 0x2d, 0xd1, 0x9f, 0x17, 0xb8, 0x77, 0x5e, - 0x97, 0x1e, 0x92, 0xd7, 0xd2, 0x25, 0x04, 0x92, 0xf9, 0x41, 0x70, 0x93, - 0xe1, 0x13, 0x07, 0x94, 0x8e, 0x0b, 0x82, 0x98 -}; - -static unsigned char randomDataSmall[] = { - // openssl rand -rand /dev/random 24 | xxd -i - 0xd1, 0xec, 0x35, 0xc3, 0xa0, 0x4c, 0x73, 0x37, 0x2f, 0x5a, 0x12, 0x44, - 0xee, 0xe4, 0x22, 0x07, 0x29, 0xa8, 0x4a, 0xde, 0xc8, 0xbb, 0xe7, 0xdb -}; - - -static BOOL HasGzipHeader(NSData *data) { - // very simple check - const unsigned char *bytes = [data bytes]; - return ([data length] > 2) && - ((bytes[0] == 0x1f) && (bytes[1] == 0x8b)); -} - - -@implementation GTMNSData_zlibTest - -- (void)testBoundryValues { - // build some test data - NSData *data = [NSData dataWithBytes:randomDataLarge - length:sizeof(randomDataLarge)]; - STAssertNotNil(data, @"failed to alloc data block"); - - // bogus args to start - STAssertNil([NSData gtm_dataByDeflatingData:nil], nil); - STAssertNil([NSData gtm_dataByDeflatingBytes:nil length:666], nil); - STAssertNil([NSData gtm_dataByDeflatingBytes:[data bytes] length:0], nil); - STAssertNil([NSData gtm_dataByGzippingData:nil], nil); - STAssertNil([NSData gtm_dataByGzippingBytes:nil length:666], nil); - STAssertNil([NSData gtm_dataByGzippingBytes:[data bytes] length:0], nil); - STAssertNil([NSData gtm_dataByInflatingData:nil], nil); - STAssertNil([NSData gtm_dataByInflatingBytes:nil length:666], nil); - STAssertNil([NSData gtm_dataByInflatingBytes:[data bytes] length:0], nil); - - // test deflate w/ compression levels out of range - NSData *deflated = [NSData gtm_dataByDeflatingData:data - compressionLevel:-4]; - STAssertNotNil(deflated, nil); - STAssertFalse(HasGzipHeader(deflated), nil); - NSData *dataPrime = [NSData gtm_dataByInflatingData:deflated]; - STAssertNotNil(dataPrime, nil); - STAssertEqualObjects(data, dataPrime, nil); - deflated = [NSData gtm_dataByDeflatingData:data - compressionLevel:20]; - STAssertNotNil(deflated, nil); - STAssertFalse(HasGzipHeader(deflated), nil); - dataPrime = [NSData gtm_dataByInflatingData:deflated]; - STAssertNotNil(dataPrime, nil); - STAssertEqualObjects(data, dataPrime, nil); - - // test gzip w/ compression levels out of range - NSData *gzipped = [NSData gtm_dataByGzippingData:data - compressionLevel:-4]; - STAssertNotNil(gzipped, nil); - STAssertTrue(HasGzipHeader(gzipped), nil); - dataPrime = [NSData gtm_dataByInflatingData:gzipped]; - STAssertNotNil(dataPrime, nil); - STAssertEqualObjects(data, dataPrime, nil); - gzipped = [NSData gtm_dataByGzippingData:data - compressionLevel:20]; - STAssertNotNil(gzipped, nil); - STAssertTrue(HasGzipHeader(gzipped), nil); - dataPrime = [NSData gtm_dataByInflatingData:gzipped]; - STAssertNotNil(dataPrime, nil); - STAssertEqualObjects(data, dataPrime, nil); - - // test non-compressed data data itself - [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the " - "payload, error -3"]; - STAssertNil([NSData gtm_dataByInflatingData:data], nil); - - // test deflated data runs that end before they are done - [GTMUnitTestDevLog expect:([deflated length] / 11) + 1 - casesOfString:@"Error trying to inflate some of the payload, " - "error -5"]; - for (NSUInteger x = 1 ; x < [deflated length] ; x += 11) { - STAssertNil([NSData gtm_dataByInflatingBytes:[deflated bytes] - length:x], nil); - } - - // test gzipped data runs that end before they are done - [GTMUnitTestDevLog expect:([gzipped length] / 11) + 1 - casesOfString:@"Error trying to inflate some of the payload, " - "error -5"]; - for (NSUInteger x = 1 ; x < [gzipped length] ; x += 11) { - STAssertNil([NSData gtm_dataByInflatingBytes:[gzipped bytes] - length:x], nil); - } - - // test extra data before the deflated/gzipped data (just to make sure we - // don't seek to the "real" data) - NSMutableData *prefixedDeflated = - [NSMutableData dataWithBytes:randomDataSmall length:sizeof(randomDataSmall)]; - STAssertNotNil(prefixedDeflated, @"failed to alloc data block"); - [prefixedDeflated appendData:deflated]; - [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the " - "payload, error -3"]; - STAssertNil([NSData gtm_dataByInflatingData:prefixedDeflated], nil); - [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the " - "payload, error -3"]; - STAssertNil([NSData gtm_dataByInflatingBytes:[prefixedDeflated bytes] - length:[prefixedDeflated length]], - nil); - NSMutableData *prefixedGzipped = - [NSMutableData dataWithBytes:randomDataSmall length:sizeof(randomDataSmall)]; - STAssertNotNil(prefixedDeflated, @"failed to alloc data block"); - [prefixedGzipped appendData:gzipped]; - [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the " - "payload, error -3"]; - STAssertNil([NSData gtm_dataByInflatingData:prefixedGzipped], nil); - [GTMUnitTestDevLog expectString:@"Error trying to inflate some of the " - "payload, error -3"]; - STAssertNil([NSData gtm_dataByInflatingBytes:[prefixedGzipped bytes] - length:[prefixedGzipped length]], - nil); - - // test extra data after the deflated/gzipped data (just to make sure we - // don't ignore some of the data) - NSMutableData *suffixedDeflated = [NSMutableData data]; - STAssertNotNil(suffixedDeflated, @"failed to alloc data block"); - [suffixedDeflated appendData:deflated]; - [suffixedDeflated appendBytes:[data bytes] length:20]; - [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using " - "all input, 20 bytes left"]; - STAssertNil([NSData gtm_dataByInflatingData:suffixedDeflated], nil); - [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using " - "all input, 20 bytes left"]; - STAssertNil([NSData gtm_dataByInflatingBytes:[suffixedDeflated bytes] - length:[suffixedDeflated length]], - nil); - NSMutableData *suffixedGZipped = [NSMutableData data]; - STAssertNotNil(suffixedGZipped, @"failed to alloc data block"); - [suffixedGZipped appendData:gzipped]; - [suffixedGZipped appendBytes:[data bytes] length:20]; - [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using " - "all input, 20 bytes left"]; - STAssertNil([NSData gtm_dataByInflatingData:suffixedGZipped], nil); - [GTMUnitTestDevLog expectString:@"thought we finished inflate w/o using " - "all input, 20 bytes left"]; - STAssertNil([NSData gtm_dataByInflatingBytes:[suffixedGZipped bytes] - length:[suffixedGZipped length]], - nil); -} - -- (void)testInflateDeflate { - NSData *data = [NSData dataWithBytes:randomDataLarge - length:sizeof(randomDataLarge)]; - STAssertNotNil(data, @"failed to alloc data block"); - - // w/ *Bytes apis, default level - NSData *deflated = [NSData gtm_dataByDeflatingBytes:[data bytes] - length:[data length]]; - STAssertNotNil(deflated, @"failed to deflate data block"); - STAssertGreaterThan([deflated length], - (NSUInteger)0, @"failed to deflate data block"); - STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data"); - NSData *dataPrime = [NSData gtm_dataByInflatingBytes:[deflated bytes] - length:[deflated length]]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Bytes apis"); - - // w/ *Data apis, default level - deflated = [NSData gtm_dataByDeflatingData:data]; - STAssertNotNil(deflated, @"failed to deflate data block"); - STAssertGreaterThan([deflated length], - (NSUInteger)0, @"failed to deflate data block"); - STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data"); - dataPrime = [NSData gtm_dataByInflatingData:deflated]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Data apis"); - - // loop over the compression levels - for (int level = 1 ; level < 9 ; ++level) { - // w/ *Bytes apis, using our level - deflated = [NSData gtm_dataByDeflatingBytes:[data bytes] - length:[data length] - compressionLevel:level]; - STAssertNotNil(deflated, @"failed to deflate data block"); - STAssertGreaterThan([deflated length], - (NSUInteger)0, @"failed to deflate data block"); - STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data"); - dataPrime = [NSData gtm_dataByInflatingBytes:[deflated bytes] - length:[deflated length]]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Bytes apis"); - - // w/ *Data apis, using our level - deflated = [NSData gtm_dataByDeflatingData:data compressionLevel:level]; - STAssertNotNil(deflated, @"failed to deflate data block"); - STAssertGreaterThan([deflated length], - (NSUInteger)0, @"failed to deflate data block"); - STAssertFalse(HasGzipHeader(deflated), @"has gzip header on zlib data"); - dataPrime = [NSData gtm_dataByInflatingData:deflated]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Data apis"); - } -} - -- (void)testInflateGzip { - NSData *data = [NSData dataWithBytes:randomDataLarge - length:sizeof(randomDataLarge)]; - STAssertNotNil(data, @"failed to alloc data block"); - - // w/ *Bytes apis, default level - NSData *gzipped = [NSData gtm_dataByGzippingBytes:[data bytes] - length:[data length]]; - STAssertNotNil(gzipped, @"failed to gzip data block"); - STAssertGreaterThan([gzipped length], - (NSUInteger)0, @"failed to gzip data block"); - STAssertTrue(HasGzipHeader(gzipped), - @"doesn't have gzip header on gzipped data"); - NSData *dataPrime = [NSData gtm_dataByInflatingBytes:[gzipped bytes] - length:[gzipped length]]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Bytes apis"); - - // w/ *Data apis, default level - gzipped = [NSData gtm_dataByGzippingData:data]; - STAssertNotNil(gzipped, @"failed to gzip data block"); - STAssertGreaterThan([gzipped length], - (NSUInteger)0, @"failed to gzip data block"); - STAssertTrue(HasGzipHeader(gzipped), - @"doesn't have gzip header on gzipped data"); - dataPrime = [NSData gtm_dataByInflatingData:gzipped]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Data apis"); - - // loop over the compression levels - for (int level = 1 ; level < 9 ; ++level) { - // w/ *Bytes apis, using our level - gzipped = [NSData gtm_dataByGzippingBytes:[data bytes] - length:[data length] - compressionLevel:level]; - STAssertNotNil(gzipped, @"failed to gzip data block"); - STAssertGreaterThan([gzipped length], - (NSUInteger)0, @"failed to gzip data block"); - STAssertTrue(HasGzipHeader(gzipped), - @"doesn't have gzip header on gzipped data"); - dataPrime = [NSData gtm_dataByInflatingBytes:[gzipped bytes] - length:[gzipped length]]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, dataPrime, - @"failed to round trip via *Bytes apis"); - - // w/ *Data apis, using our level - gzipped = [NSData gtm_dataByGzippingData:data compressionLevel:level]; - STAssertNotNil(gzipped, @"failed to gzip data block"); - STAssertGreaterThan([gzipped length], - (NSUInteger)0, @"failed to gzip data block"); - STAssertTrue(HasGzipHeader(gzipped), - @"doesn't have gzip header on gzipped data"); - dataPrime = [NSData gtm_dataByInflatingData:gzipped]; - STAssertNotNil(dataPrime, @"failed to inflate data block"); - STAssertGreaterThan([dataPrime length], - (NSUInteger)0, @"failed to inflate data block"); - STAssertEqualObjects(data, - dataPrime, @"failed to round trip via *Data apis"); - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.h deleted file mode 100644 index 4bc896d0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// GTMNSDictionary+URLArguments.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -/// Utility for building a URL or POST argument string. -@interface NSDictionary (GTMNSDictionaryURLArgumentsAdditions) - -/// Gets a string representation of the dictionary in the form -/// key1=value1&key2&value2&...&keyN=valueN, suitable for use as either -/// URL arguments (after a '?') or POST body. Keys and values will be escaped -/// automatically, so should be unescaped in the dictionary. -- (NSString *)gtm_httpArgumentsString; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.m deleted file mode 100644 index 89610e48..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArguments.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// GTMNSDictionary+URLArguments.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSDictionary+URLArguments.h" -#import "GTMNSString+URLArguments.h" -#import "GTMMethodCheck.h" -#import "GTMDefines.h" - -@implementation NSDictionary (GTMNSDictionaryURLArgumentsAdditions) - -GTM_METHOD_CHECK(NSString, gtm_stringByEscapingForURLArgument); - -- (NSString *)gtm_httpArgumentsString { - NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:[self count]]; - NSString* key; - GTM_FOREACH_KEY(key, self) { - [arguments addObject:[NSString stringWithFormat:@"%@=%@", - [key gtm_stringByEscapingForURLArgument], - [[[self objectForKey:key] description] gtm_stringByEscapingForURLArgument]]]; - } - - return [arguments componentsJoinedByString:@"&"]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArgumentsTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArgumentsTest.m deleted file mode 100644 index f01519e4..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+URLArgumentsTest.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// GTMNSDictionary+URLArgumentsTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSDictionary+URLArguments.h" -#import "GTMDefines.h" - -@interface GTMNSDictionary_URLArgumentsTest : GTMTestCase -@end - -@implementation GTMNSDictionary_URLArgumentsTest - -- (void)testArgumentsString { - STAssertEqualObjects([[NSDictionary dictionary] gtm_httpArgumentsString], @"", - @"- empty dictionary should give an empty string"); - STAssertEqualObjects([[NSDictionary dictionaryWithObject:@"123" forKey:@"abc"] gtm_httpArgumentsString], - @"abc=123", - @"- simple one-pair dictionary should work"); - NSDictionary* arguments = [NSDictionary dictionaryWithObjectsAndKeys: - @"1+1!=3 & 2*6/3=4", @"complex", - @"specialkey", @"a+b", - nil]; - NSString* argumentString = [arguments gtm_httpArgumentsString]; - // check for individual pieces since order is not guaranteed - NSString* component1 = @"a%2Bb=specialkey"; - NSString* component2 = @"complex=1%2B1%21%3D3%20%26%202%2A6%2F3%3D4"; - STAssertNotEquals([argumentString rangeOfString:component1].location, (NSUInteger)NSNotFound, - @"- '%@' not found in '%@'", component1, argumentString); - STAssertNotEquals([argumentString rangeOfString:component2].location, (NSUInteger)NSNotFound, - @"- '%@' not found in '%@'", component2, argumentString); - STAssertNotEquals([argumentString rangeOfString:@"&"].location, (NSUInteger)NSNotFound, - @"- special characters should be escaped"); - STAssertNotEquals([argumentString characterAtIndex:0], (unichar)'&', - @"- there should be no & at the beginning of the string"); - STAssertNotEquals([argumentString characterAtIndex:([argumentString length] - 1)], (unichar)'&', - @"- there should be no & at the end of the string"); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.h deleted file mode 100644 index 8e10d937..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// GTMNSEnumerator+Filter.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - -/// A generic category for methods that allow us to filter enumeratable -/// containers, inspired by C++ Standard Library's use of iterators. -/// Like in C++, these assume the underlying container is not modified during -/// the lifetime of the iterator. -/// -@interface NSEnumerator (GTMEnumeratorFilterAdditions) - -/// @argument predicate - the function return BOOL. will be applied to each element -/// @argument argument - optional argument to pass to predicate -/// @returns an enumerator that contains only elements where [element sel:argument] is true -- (NSEnumerator *)gtm_filteredEnumeratorByMakingEachObjectPerformSelector:(SEL)predicate - withObject:(id)argument; - -/// @argument selector - the function return a transformed object. will be applied to each element -/// @argument argument - optional argument to pass to transformer -/// @returns an enumerator that contains the transformed elements -- (NSEnumerator *)gtm_enumeratorByMakingEachObjectPerformSelector:(SEL)selector - withObject:(id)argument; - -/// @argument target - receiver for each method -/// @argument predicate - as in, [target predicate: [self nextObject]], return a BOOL -/// @returns an enumerator that contains only elements where [element sel:argument] is true -- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target - performOnEachSelector:(SEL)predicate; - -/// @argument target - receiver for each method -/// @argument sel - as in, [target selector: [self nextObject]], return a transformed object -/// @returns an enumerator that contains the transformed elements -- (NSEnumerator *)gtm_enumeratorByTarget:(id)target - performOnEachSelector:(SEL)selector; - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.m deleted file mode 100644 index 51d56f8b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+Filter.m +++ /dev/null @@ -1,179 +0,0 @@ -// -// GTMNSEnumerator+Filter.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMNSEnumerator+Filter.h" -#import "GTMDebugSelectorValidation.h" -#import "GTMDefines.h" -#if GTM_IPHONE_SDK -#import -#import -#else -#import -#endif - -// a private subclass of NSEnumerator that does all the work. -// public interface just returns one of these. -// This top level class contains all the additional boilerplate. Specific -// behavior is in the subclasses. -@interface GTMEnumeratorPrivateBase : NSEnumerator { - @protected - NSEnumerator *base_; // STRONG - SEL operation_; // either a predicate or a transform depending on context. - id other_; // STRONG, may be nil -} -@end - -@interface GTMEnumeratorPrivateBase (SubclassesMustProvide) -- (BOOL)filterObject:(id)obj returning:(id *)resultp; -@end - -@implementation GTMEnumeratorPrivateBase -- (id)initWithBase:(NSEnumerator *)base - sel:(SEL)filter - object:(id)optionalOther { - self = [super init]; - if (self) { - - // someone would have to subclass or directly create an object of this - // class, and this class is private to this impl. - _GTMDevAssert(base, @"can't initWithBase: a nil base enumerator"); - base_ = [base retain]; - operation_ = filter; - other_ = [optionalOther retain]; - } - return self; -} - -// we don't provide an init because this base class is private to this -// impl, and no one would be able to create it (if they do, they get whatever -// they happens...). - -- (void)dealloc { - [base_ release]; - [other_ release]; - [super dealloc]; -} - -- (id)nextObject { - for (id obj = [base_ nextObject]; obj; obj = [base_ nextObject]) { - id result = nil; - if ([self filterObject:obj returning:&result]) { - return result; - } - } - return nil; -} -@end - -// a transformer, for each item in the enumerator, returns a f(item). -@interface GTMEnumeratorTransformer : GTMEnumeratorPrivateBase -@end -@implementation GTMEnumeratorTransformer -- (BOOL)filterObject:(id)obj returning:(id *)resultp { - *resultp = [obj performSelector:operation_ withObject:other_]; - return nil != *resultp; -} -@end - -// a transformer, for each item in the enumerator, returns a f(item). -// a target transformer swaps the target and the argument. -@interface GTMEnumeratorTargetTransformer : GTMEnumeratorPrivateBase -@end -@implementation GTMEnumeratorTargetTransformer -- (BOOL)filterObject:(id)obj returning:(id *)resultp { - *resultp = [other_ performSelector:operation_ withObject:obj]; - return nil != *resultp; -} -@end - -// a filter, for each item in the enumerator, if(f(item)) { returns item. } -@interface GTMEnumeratorFilter : GTMEnumeratorPrivateBase -@end -@implementation GTMEnumeratorFilter -// We must take care here, since Intel leaves junk in high bytes of return register -// for predicates that return BOOL. -// For details see: -// http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html -// and -// http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187 -- (BOOL)filterObject:(id)obj returning:(id *)resultp { - *resultp = obj; - return ((BOOL (*)(id, SEL, id))objc_msgSend)(obj, operation_, other_); -} -@end - -// a target filter, for each item in the enumerator, if(f(item)) { returns item. } -// a target transformer swaps the target and the argument. -@interface GTMEnumeratorTargetFilter : GTMEnumeratorPrivateBase -@end -@implementation GTMEnumeratorTargetFilter -// We must take care here, since Intel leaves junk in high bytes of return register -// for predicates that return BOOL. -// For details see: -// http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html -// and -// http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187 -- (BOOL)filterObject:(id)obj returning:(id *)resultp { - *resultp = obj; - return ((BOOL (*)(id, SEL, id))objc_msgSend)(other_, operation_, obj); -} -@end - -@implementation NSEnumerator (GTMEnumeratorFilterAdditions) - -- (NSEnumerator *)gtm_filteredEnumeratorByMakingEachObjectPerformSelector:(SEL)selector - withObject:(id)argument { - return [[[GTMEnumeratorFilter alloc] initWithBase:self - sel:selector - object:argument] autorelease]; -} - -- (NSEnumerator *)gtm_enumeratorByMakingEachObjectPerformSelector:(SEL)selector - withObject:(id)argument { - return [[[GTMEnumeratorTransformer alloc] initWithBase:self - sel:selector - object:argument] autorelease]; -} - - -- (NSEnumerator *)gtm_filteredEnumeratorByTarget:(id)target - performOnEachSelector:(SEL)selector { - // make sure the object impls this selector taking an object as an arg. - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, selector, - @encode(BOOL), - @encode(id), - NULL); - return [[[GTMEnumeratorTargetFilter alloc] initWithBase:self - sel:selector - object:target] autorelease]; -} - -- (NSEnumerator *)gtm_enumeratorByTarget:(id)target - performOnEachSelector:(SEL)selector { - // make sure the object impls this selector taking an object as an arg. - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, selector, - @encode(id), - @encode(id), - NULL); - return [[[GTMEnumeratorTargetTransformer alloc] initWithBase:self - sel:selector - object:target] autorelease]; -} - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+FilterTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+FilterTest.m deleted file mode 100644 index ef0d9556..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSEnumerator+FilterTest.m +++ /dev/null @@ -1,133 +0,0 @@ -// -// GTMNSEnumerator+FilterTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSEnumerator+Filter.h" - -@interface GTMNSEnumerator_FilterTest : GTMTestCase -@end - -@implementation GTMNSEnumerator_FilterTest - -- (void)testEnumeratorByMakingEachObjectPerformSelector { - // test w/ a set of strings - NSSet *numbers = [NSSet setWithObjects: @"1", @"2", @"3", nil]; - NSEnumerator *e = [[numbers objectEnumerator] - gtm_enumeratorByMakingEachObjectPerformSelector:@selector(stringByAppendingString:) - withObject:@" "]; - NSMutableSet *trailingSpaces = [NSMutableSet set]; - id obj; - while (nil != (obj = [e nextObject])) { - [trailingSpaces addObject:obj]; - } - NSSet *trailingSpacesGood = [NSSet setWithObjects: @"1 ", @"2 ", @"3 ", nil]; - STAssertEqualObjects(trailingSpaces, trailingSpacesGood, @""); - - // test an empty set - NSSet *empty = [NSSet set]; - e = [[empty objectEnumerator] - gtm_enumeratorByMakingEachObjectPerformSelector:@selector(stringByAppendingString:) - withObject:@" "]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); -} - -- (void)testFilteredEnumeratorByMakingEachObjectPerformSelector { - // test with a dict of strings - NSDictionary *testDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"foo", @"1", - @"bar", @"2", - @"foobar", @"3", - nil]; - // test those that have prefixes - NSEnumerator *e = [[testDict objectEnumerator] - gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:) - withObject:@"foo"]; - // since the dictionary iterates in any order, compare as sets - NSSet *filteredValues = [NSSet setWithArray:[e allObjects]]; - NSSet *expectedValues = [NSSet setWithObjects:@"foo", @"foobar", nil]; - STAssertEqualObjects(filteredValues, expectedValues, @""); - - // test an empty set - NSSet *empty = [NSSet set]; - e = [[empty objectEnumerator] - gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:) - withObject:@"foo"]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); - - // test an set that will filter out - NSSet *filterAway = [NSSet setWithObjects:@"bar", @"baz", nil]; - e = [[filterAway objectEnumerator] - gtm_filteredEnumeratorByMakingEachObjectPerformSelector:@selector(hasPrefix:) - withObject:@"foo"]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); -} - -- (void)testEnumeratorByTargetPerformOnEachSelector { - // test w/ a set of strings - NSSet *numbers = [NSSet setWithObjects: @"1", @"2", @"3", nil]; - NSString *target = @"foo"; - NSEnumerator *e = [[numbers objectEnumerator] - gtm_enumeratorByTarget:target - performOnEachSelector:@selector(stringByAppendingString:)]; - // since the set iterates in any order, compare as sets - NSSet *collectedValues = [NSSet setWithArray:[e allObjects]]; - NSSet *expectedValues = [NSSet setWithObjects:@"foo1", @"foo2", @"foo3", nil]; - STAssertEqualObjects(collectedValues, expectedValues, @""); - - // test an empty set - NSSet *empty = [NSSet set]; - e = [[empty objectEnumerator] - gtm_enumeratorByTarget:target - performOnEachSelector:@selector(stringByAppendingString:)]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); -} - -- (void)testFilteredEnumeratorByTargetPerformOnEachSelector { - // test w/ a set of strings - NSSet *numbers = [NSSet setWithObjects:@"1", @"2", @"3", @"4", nil]; - NSSet *target = [NSSet setWithObjects:@"2", @"4", @"6", nil]; - NSEnumerator *e = [[numbers objectEnumerator] - gtm_filteredEnumeratorByTarget:target - performOnEachSelector:@selector(containsObject:)]; - // since the set iterates in any order, compare as sets - NSSet *filteredValues = [NSSet setWithArray:[e allObjects]]; - NSSet *expectedValues = [NSSet setWithObjects:@"2", @"4", nil]; - STAssertEqualObjects(filteredValues, expectedValues, @""); - - // test an empty set - NSSet *empty = [NSSet set]; - e = [[empty objectEnumerator] - gtm_filteredEnumeratorByTarget:target - performOnEachSelector:@selector(containsObject:)]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); - - // test an set that will filter out - NSSet *filterAway = [NSSet setWithObjects:@"bar", @"baz", nil]; - e = [[filterAway objectEnumerator] - gtm_filteredEnumeratorByTarget:target - performOnEachSelector:@selector(containsObject:)]; - STAssertNil([e nextObject], - @"shouldn't have gotten anything from first advance of enumerator"); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.h deleted file mode 100644 index 86215eaf..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// GTMNSFileManager+Carbon.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - - -// A few useful methods for dealing with paths and carbon structures -@interface NSFileManager (GTMFileManagerCarbonAdditions) - -// Converts a path to an alias -// Args: -// path - the path to convert -// -// Returns: -// An alias wrapped up in an autoreleased NSData. Nil on failure. -// -- (NSData *)gtm_aliasDataForPath:(NSString *)path; - -// Converts an alias to a path -// Args: -// alias - an alias wrapped up in an NSData -// -// Returns: -// The path. Nil on failure. -// -- (NSString *)gtm_pathFromAliasData:(NSData *)alias; - -// Converts a path to an FSRef * -// Args: -// path - the path to convert -// -// Returns: -// An autoreleased FSRef *. Nil on failure. -// -- (FSRef *)gtm_FSRefForPath:(NSString *)path; - -// Converts an FSRef to a path -// Args: -// fsRef - the FSRef to convert -// -// Returns: -// The path. Nil on failure. -// -- (NSString *)gtm_pathFromFSRef:(FSRef *)fsRef; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.m deleted file mode 100644 index 4f8ba8bd..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Carbon.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// GTMNSFileManager+Carbon.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMNSFileManager+Carbon.h" -#import -#import -#import "GTMDefines.h" - -@implementation NSFileManager (GTMFileManagerCarbonAdditions) - -- (NSData *)gtm_aliasDataForPath:(NSString *)path { - NSData *data = nil; - FSRef ref; - AliasHandle alias = NULL; - - require_quiet([path length], CantUseParams); - require_noerr(FSPathMakeRef((UInt8 *)[path fileSystemRepresentation], - &ref, NULL), CantMakeRef); - require_noerr(FSNewAlias(NULL, &ref, &alias), CantMakeAlias); - - Size length = GetAliasSize(alias); - data = [NSData dataWithBytes:*alias length:length]; - - DisposeHandle((Handle)alias); - -CantMakeAlias: -CantMakeRef: -CantUseParams: - return data; -} - -- (NSString *)gtm_pathFromAliasData:(NSData *)data { - NSString *path = nil; - require_quiet(data, CantUseParams); - - AliasHandle alias; - const void *bytes = [data bytes]; - NSUInteger length = [data length]; - require_noerr(PtrToHand(bytes, (Handle *)&alias, length), CantMakeHandle); - - FSRef ref; - Boolean wasChanged; - // we don't use a require here because it is quite legitimate for an alias - // resolve to fail. - if (FSResolveAlias(NULL, alias, &ref, &wasChanged) == noErr) { - path = [self gtm_pathFromFSRef:&ref]; - } - DisposeHandle((Handle)alias); -CantMakeHandle: -CantUseParams: - return path; -} - -- (FSRef *)gtm_FSRefForPath:(NSString *)path { - FSRef* fsRef = NULL; - require_quiet([path length], CantUseParams); - NSMutableData *fsRefData = [NSMutableData dataWithLength:sizeof(FSRef)]; - require(fsRefData, CantAllocateFSRef); - fsRef = (FSRef*)[fsRefData mutableBytes]; - Boolean isDir = FALSE; - const UInt8 *filePath = (const UInt8 *)[path fileSystemRepresentation]; - require_noerr_action(FSPathMakeRef(filePath, fsRef, &isDir), - CantMakeRef, fsRef = NULL); -CantMakeRef: -CantAllocateFSRef: -CantUseParams: - return fsRef; -} - -- (NSString *)gtm_pathFromFSRef:(FSRef *)fsRef { - NSString *nsPath = nil; - require_quiet(fsRef, CantUseParams); - - char path[MAXPATHLEN]; - require_noerr(FSRefMakePath(fsRef, (UInt8 *)path, MAXPATHLEN), CantMakePath); - nsPath = [self stringWithFileSystemRepresentation:path length:strlen(path)]; - nsPath = [nsPath stringByStandardizingPath]; - -CantMakePath: -CantUseParams: - return nsPath; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+CarbonTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+CarbonTest.m deleted file mode 100644 index 76692b0e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+CarbonTest.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// GTMNSFileManager+CarbonTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSFileManager+Carbon.h" -#import "GTMUnitTestDevLog.h" -#import - -@interface GTMNSFileManager_CarbonTest : GTMTestCase -@end - -@implementation GTMNSFileManager_CarbonTest - -- (void)testAliasPathFSRefConversion { - NSString *path = NSHomeDirectory(); - STAssertNotNil(path, nil); - NSFileManager *fileManager = [NSFileManager defaultManager]; - FSRef *fsRef = [fileManager gtm_FSRefForPath:path]; - STAssertNotNULL(fsRef, nil); - AliasHandle alias; - STAssertNoErr(FSNewAlias(nil, fsRef, &alias), nil); - STAssertNotNULL(alias, nil); - NSData *aliasData = [NSData dataWithBytes:*alias - length:GetAliasSize(alias)]; - STAssertNotNil(aliasData, nil); - NSString *path2 = [fileManager gtm_pathFromAliasData:aliasData]; - STAssertEqualObjects(path, path2, nil); - NSData *aliasData2 = [fileManager gtm_aliasDataForPath:path2]; - STAssertNotNil(aliasData2, nil); - NSString *path3 = [fileManager gtm_pathFromAliasData:aliasData2]; - STAssertEqualObjects(path2, path3, nil); - NSString *path4 = [fileManager gtm_pathFromFSRef:fsRef]; - STAssertEqualObjects(path, path4, nil); - - // Failure cases - [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: " - @"GoogleToolboxForMac: FSPathMakeRef.*"]; - STAssertNULL([fileManager gtm_FSRefForPath:@"/ptah/taht/dosent/esixt/"], - nil); - - STAssertNULL([fileManager gtm_FSRefForPath:@""], nil); - STAssertNULL([fileManager gtm_FSRefForPath:nil], nil); - STAssertNil([fileManager gtm_pathFromFSRef:nil], nil); - STAssertNil([fileManager gtm_pathFromAliasData:nil], nil); - STAssertNil([fileManager gtm_pathFromAliasData:[NSData data]], nil); - - [GTMUnitTestDevLogDebug expectPattern:@"DebugAssert: " - @"GoogleToolboxForMac: FSPathMakeRef.*"]; - STAssertNil([fileManager gtm_aliasDataForPath:@"/ptah/taht/dosent/esixt/"], nil); - STAssertNil([fileManager gtm_aliasDataForPath:@""], nil); - STAssertNil([fileManager gtm_aliasDataForPath:nil], nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.h deleted file mode 100644 index f3772154..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// GTMNSFileManager+Path.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - - -/// A few useful methods for dealing with paths. -@interface NSFileManager (GMFileManagerPathAdditions) - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -/// For the Unix-y at heart, this is "mkdir -p". It tries to create -/// the directory specified by |path|, and any intervening directories that -/// are needed. Each directory that is created is created with |attributes| -/// (see other NSFileManager doco for the details on |attributes|). -/// -/// If you are building for 10.5 or later, you should just use the new api: -/// createDirectoryAtPath:withIntermediateDirectories:attributes:error: -/// -/// Also if you need more control over the creation of paths and their -/// attributes, look into using GTMPath. -/// -/// Args: -/// path - the path of the directory to create. -/// attributes - these are defined in the "Constants" section of Apple's -/// NSFileManager doco -/// -/// Returns: -/// YES if |path| exists or was able to be created successfully -/// NO otherwise -/// -- (BOOL)gtm_createFullPathToDirectory:(NSString *)path - attributes:(NSDictionary *)attributes; - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -/// Return an the paths for all resources in |directoryPath| that have the -/// |extension| file extension. -/// -/// Args: -/// extension - the file extension (excluding the leading ".") to match. -/// If nil, all files are matched. -/// directoryPath - the directory to look in. NOTE: Subdirectories are NOT -/// traversed. -/// -/// Returns: -/// An NSArray of absolute file paths that have |extension|. nil is returned -/// if |directoryPath| doesn't exist or can't be opened, and returns an empty -/// array if |directoryPath| is empty. ".", "..", and resource forks are never returned. -/// -- (NSArray *)gtm_filePathsWithExtension:(NSString *)extension - inDirectory:(NSString *)directoryPath; - -/// Same as -filePathsWithExtension:inDirectory: except |extensions| is an -/// NSArray of extensions to match. -/// -- (NSArray *)gtm_filePathsWithExtensions:(NSArray *)extensions - inDirectory:(NSString *)directoryPath; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.m deleted file mode 100644 index 195cd9ee..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+Path.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// GTMNSFileManager+Path.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSFileManager+Path.h" -#import "GTMDefines.h" - -@implementation NSFileManager (GMFileManagerPathAdditions) - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (BOOL)gtm_createFullPathToDirectory:(NSString *)path - attributes:(NSDictionary *)attributes { - if (!path) return NO; - - BOOL isDir; - BOOL exists = [self fileExistsAtPath:path isDirectory:&isDir]; - - // Quick check for the case where we have nothing to do. - if (exists && isDir) - return YES; - - NSString *actualPath = @"/"; - NSString *directory; - - GTM_FOREACH_OBJECT(directory, [path pathComponents]) { - actualPath = [actualPath stringByAppendingPathComponent:directory]; - - if ([self fileExistsAtPath:actualPath isDirectory:&isDir] && isDir) { - continue; - } else if ([self createDirectoryAtPath:actualPath attributes:attributes]) { - continue; - } else { - return NO; - } - } - - return YES; -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (NSArray *)gtm_filePathsWithExtension:(NSString *)extension - inDirectory:(NSString *)directoryPath { - NSArray *extensions = nil; - - // Treat no extension and an empty extension as the user requesting all files - if (extension != nil && ![extension isEqualToString:@""]) - extensions = [NSArray arrayWithObject:extension]; - - return [self gtm_filePathsWithExtensions:extensions - inDirectory:directoryPath]; -} - -- (NSArray *)gtm_filePathsWithExtensions:(NSArray *)extensions - inDirectory:(NSString *)directoryPath { - if (directoryPath == nil) - return nil; - - // |basenames| will contain only the matching file names, not their full paths. - NSArray *basenames = [self directoryContentsAtPath:directoryPath]; - - // Check if dir doesn't exist or couldn't be opened. - if (basenames == nil) - return nil; - - // Check if dir is empty. - if ([basenames count] == 0) - return basenames; - - NSMutableArray *paths = [NSMutableArray arrayWithCapacity:[basenames count]]; - NSString *basename; - - // Convert all the |basenames| to full paths. - GTM_FOREACH_OBJECT(basename, basenames) { - NSString *fullPath = [directoryPath stringByAppendingPathComponent:basename]; - [paths addObject:fullPath]; - } - - // Check if caller wants all files, regardless of extension. - if (extensions == nil || [extensions count] == 0) - return paths; - - return [paths pathsMatchingExtensions:extensions]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+PathTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+PathTest.m deleted file mode 100644 index db40c68d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSFileManager+PathTest.m +++ /dev/null @@ -1,249 +0,0 @@ -// -// GTMNSFileManager+PathTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSFileManager+Path.h" - -@interface GTMNSFileManager_PathTest : GTMTestCase { - NSString *baseDir_; -} -@end - -@implementation GTMNSFileManager_PathTest - -- (void)setUp { - // make a directory to scribble in - baseDir_ = - [[NSTemporaryDirectory() - stringByAppendingPathComponent:@"GTMNSFileManager_PathTest"] retain]; - if (baseDir_) { - NSFileManager *fm = [NSFileManager defaultManager]; - if (![fm fileExistsAtPath:baseDir_] && - ![fm createDirectoryAtPath:baseDir_ attributes:nil]) { - // COV_NF_START - // if the dir exists or we failed to create it, drop the baseDir_ - [baseDir_ release]; - baseDir_ = nil; - // COV_NF_END - } - } -} - -- (void)tearDown { - if (baseDir_) { - // clean up our directory - NSFileManager *fm = [NSFileManager defaultManager]; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSError *error = nil; - [fm removeItemAtPath:baseDir_ error:&error]; - STAssertNil(error, - @"Unable to delete %@: %@", baseDir_, [error description]); -#else - [fm removeFileAtPath:baseDir_ handler:nil]; -#endif - - [baseDir_ release]; - baseDir_ = nil; - } -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (void)testCreateFullPathToDirectoryAttributes { - STAssertNotNil(baseDir_, @"setUp failed"); - - NSString *testPath = - [baseDir_ stringByAppendingPathComponent:@"/foo/bar/baz"]; - STAssertNotNil(testPath, nil); - NSFileManager *fm = [NSFileManager defaultManager]; - - STAssertFalse([fm fileExistsAtPath:testPath], - @"You must delete '%@' before running this test", testPath); - - STAssertFalse([fm gtm_createFullPathToDirectory:nil attributes:nil], - @"didn't fail on nil input"); - - STAssertTrue([fm gtm_createFullPathToDirectory:testPath attributes:nil], - @"Failed to create nested testPath"); - STAssertTrue([fm gtm_createFullPathToDirectory:testPath attributes:nil], - @"Failed to succeed on second create of testPath"); - - NSString *pathToFail = [@"/etc" stringByAppendingPathComponent:testPath]; - STAssertFalse([fm gtm_createFullPathToDirectory:pathToFail attributes:nil], - @"We were allowed to create a dir in '/etc'?!"); - - STAssertFalse([fm gtm_createFullPathToDirectory:nil attributes:nil], - @"Should have failed when passed (nil)"); -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (void)testfilePathsWithExtensionsInDirectory { - STAssertNotNil(baseDir_, @"setUp failed"); - - NSFileManager *fm = [NSFileManager defaultManager]; - NSString *bogusPath = @"/some/place/that/does/not/exist"; - - // -------------------------------------------------------------------------- - // test fail cases first - - // single - STAssertNil([fm gtm_filePathsWithExtension:nil inDirectory:nil], - @"shouldn't have gotten anything for nil dir"); - STAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:nil], - @"shouldn't have gotten anything for nil dir"); - STAssertNil([fm gtm_filePathsWithExtension:@"txt" inDirectory:bogusPath], - @"shouldn't have gotten anything for a bogus dir"); - // array - STAssertNil([fm gtm_filePathsWithExtensions:nil inDirectory:nil], - @"shouldn't have gotten anything for nil dir"); - STAssertNil([fm gtm_filePathsWithExtensions:[NSArray array] inDirectory:nil], - @"shouldn't have gotten anything for nil dir"); - STAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"] - inDirectory:nil], - @"shouldn't have gotten anything for nil dir"); - STAssertNil([fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"] - inDirectory:bogusPath], - @"shouldn't have gotten anything for a bogus dir"); - - // -------------------------------------------------------------------------- - // create some test data - - NSString *testDirs[] = { - @"", @"/foo", // mave a subdir to make sure we don't match w/in it - }; - NSString *testFiles[] = { - @"a.txt", @"b.txt", @"c.rtf", @"d.m", - }; - - for (size_t i = 0; i < sizeof(testDirs) / sizeof(NSString*); i++) { - NSString *testDir = nil; - if ([testDirs[i] length]) { - testDir = [baseDir_ stringByAppendingPathComponent:testDirs[i]]; - STAssertTrue([fm createDirectoryAtPath:testDir attributes:nil], nil); - } else { - testDir = baseDir_; - } - for (size_t j = 0; j < sizeof(testFiles) / sizeof(NSString*); j++) { - NSString *testFile = [testDir stringByAppendingPathComponent:testFiles[j]]; - STAssertTrue([@"test" writeToFile:testFile atomically:YES], nil); - } - } - - // build set of the top level items - NSMutableArray *allFiles = [NSMutableArray array]; - for (size_t i = 0; i < sizeof(testDirs) / sizeof(NSString*); i++) { - if ([testDirs[i] length]) { - NSString *testDir = [baseDir_ stringByAppendingPathComponent:testDirs[i]]; - [allFiles addObject:testDir]; - } - } - for (size_t j = 0; j < sizeof(testFiles) / sizeof(NSString*); j++) { - NSString *testFile = [baseDir_ stringByAppendingPathComponent:testFiles[j]]; - [allFiles addObject:testFile]; - } - - NSArray *matches = nil; - NSArray *expectedMatches = nil; - NSArray *extensions = nil; - - // NOTE: we do all compares w/ sets so order doesn't matter - - // -------------------------------------------------------------------------- - // test match all - - // single - matches = [fm gtm_filePathsWithExtension:nil inDirectory:baseDir_]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:allFiles], - @"didn't get all files for nil extension"); - matches = [fm gtm_filePathsWithExtension:@"" inDirectory:baseDir_]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:allFiles], - @"didn't get all files for nil extension"); - // array - matches = [fm gtm_filePathsWithExtensions:nil inDirectory:baseDir_]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:allFiles], - @"didn't get all files for nil extension"); - matches = [fm gtm_filePathsWithExtensions:[NSArray array] - inDirectory:baseDir_]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:allFiles], - @"didn't get all files for nil extension"); - - // -------------------------------------------------------------------------- - // test match something - - // single - extensions = [NSArray arrayWithObject:@"txt"]; - matches = [fm gtm_filePathsWithExtension:@"txt" inDirectory:baseDir_]; - expectedMatches = [allFiles pathsMatchingExtensions:extensions]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:expectedMatches], - @"didn't get expected files"); - // array - matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_]; - expectedMatches = [allFiles pathsMatchingExtensions:extensions]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:expectedMatches], - @"didn't get expected files"); - extensions = [NSArray arrayWithObjects:@"txt", @"rtf", @"xyz", nil]; - matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_]; - expectedMatches = [allFiles pathsMatchingExtensions:extensions]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:expectedMatches], - @"didn't get expected files"); - - // -------------------------------------------------------------------------- - // test match nothing - - // single - extensions = [NSArray arrayWithObject:@"xyz"]; - matches = [fm gtm_filePathsWithExtension:@"xyz" inDirectory:baseDir_]; - expectedMatches = [allFiles pathsMatchingExtensions:extensions]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:expectedMatches], - @"didn't get expected files"); - // array - matches = [fm gtm_filePathsWithExtensions:extensions inDirectory:baseDir_]; - expectedMatches = [allFiles pathsMatchingExtensions:extensions]; - STAssertEqualObjects([NSSet setWithArray:matches], - [NSSet setWithArray:expectedMatches], - @"didn't get expected files"); - - // -------------------------------------------------------------------------- - // test match an empty dir - - // create the empty dir - NSString *emptyDir = [baseDir_ stringByAppendingPathComponent:@"emptyDir"]; - STAssertTrue([fm createDirectoryAtPath:emptyDir attributes:nil], nil); - - // single - matches = [fm gtm_filePathsWithExtension:@"txt" inDirectory:emptyDir]; - STAssertEqualObjects([NSSet setWithArray:matches], [NSSet set], - @"expected empty dir"); - // array - matches = [fm gtm_filePathsWithExtensions:[NSArray arrayWithObject:@"txt"] - inDirectory:emptyDir]; - STAssertEqualObjects([NSSet setWithArray:matches], [NSSet set], - @"expected empty dir"); - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.h deleted file mode 100644 index de11aeb7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// GTMNSObject+KeyValueObserving.h -// -// Copyright 2009 Google Inc. -// -// 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. -// - -// -// MAKVONotificationCenter.h -// MAKVONotificationCenter -// -// Created by Michael Ash on 10/15/08. -// - -// This code is based on code by Michael Ash. -// Please see his excellent writeup at -// http://www.mikeash.com/?page=pyblog/key-value-observing-done-right.html -// You may also be interested in this writeup: -// http://www.dribin.org/dave/blog/archives/2008/09/24/proper_kvo_usage/ -// and the discussion on cocoa-dev that is linked to at the end of it. - -#import - -// If you read the articles above you will see that doing KVO correctly -// is actually pretty tricky, and that Apple's documentation may not be -// completely clear as to how things should be used. Use the methods below -// to make things a little easier instead of the stock addObserver, -// removeObserver methods. -// Selector should have the following signature: -// - (void)observeNotification:(GTMKeyValueChangeNotification *)notification -@interface NSObject (GTMKeyValueObservingAdditions) - -// Use this instead of [NSObject addObserver:forKeyPath:options:context:] -- (void)gtm_addObserver:(id)observer - forKeyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options; -// Use this instead of [NSObject removeObserver:forKeyPath:] -- (void)gtm_removeObserver:(id)observer - forKeyPath:(NSString *)keyPath - selector:(SEL)selector; -@end - -// This is the class that is sent to your notification selector as an -// argument. -@interface GTMKeyValueChangeNotification : NSObject { - @private - NSString *keyPath_; - id object_; - id userInfo_; - NSDictionary *change_; -} - -- (NSString *)keyPath; -- (id)object; -- (id)userInfo; -- (NSDictionary *)change; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.m deleted file mode 100644 index dc6883d5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObserving.m +++ /dev/null @@ -1,350 +0,0 @@ -// -// GTMNSObject+KeyValueObserving.h -// -// Copyright 2009 Google Inc. -// -// 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. -// - -// -// MAKVONotificationCenter.m -// MAKVONotificationCenter -// -// Created by Michael Ash on 10/15/08. -// - -// This code is based on code by Michael Ash. -// See comment in header. - -#import "GTMNSObject+KeyValueObserving.h" - -#import -#import "GTMDefines.h" -#import "GTMDebugSelectorValidation.h" -#import "GTMObjC2Runtime.h" - -// A singleton that works as a dispatch center for KVO -// -[NSObject observeValueForKeyPath:ofObject:change:context:] and turns them -// into selector dispatches. It stores a collection of -// GTMKeyValueObservingHelpers, and keys them via the key generated by -// -dictionaryKeyForObserver:ofObject:forKeyPath:selector. -@interface GTMKeyValueObservingCenter : NSObject { -@private - NSMutableDictionary *observerHelpers_; -} - -+ (id)defaultCenter; - -- (void)addObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options; -- (void)removeObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector; -- (id)dictionaryKeyForObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector; -@end - -@interface GTMKeyValueObservingHelper : NSObject { - @private - __weak id observer_; - SEL selector_; - id userInfo_; - id target_; - NSString* keyPath_; -} - -- (id)initWithObserver:(id)observer - object:(id)target - keyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options; -- (void)deregister; - -@end - -@interface GTMKeyValueChangeNotification () -- (id)initWithKeyPath:(NSString *)keyPath ofObject:(id)object - userInfo:(id)userInfo change:(NSDictionary *)change; -@end - -@implementation GTMKeyValueObservingHelper - -// For info how and why we use these statics: -// http://lists.apple.com/archives/cocoa-dev/2006/Jul/msg01038.html -static char GTMKeyValueObservingHelperContextData; -static char* GTMKeyValueObservingHelperContext - = >MKeyValueObservingHelperContextData; - -- (id)initWithObserver:(id)observer - object:(id)target - keyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options { - if((self = [super init])) { - observer_ = observer; - selector_ = selector; - userInfo_ = [userInfo retain]; - - target_ = target; - keyPath_ = [keyPath retain]; - - [target addObserver:self - forKeyPath:keyPath - options:options - context:GTMKeyValueObservingHelperContext]; - } - return self; -} - -- (void)dealloc { - [userInfo_ release]; - [keyPath_ release]; - [super dealloc]; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(id)object - change:(NSDictionary *)change - context:(void *)context { - if(context == GTMKeyValueObservingHelperContext) { - GTMKeyValueChangeNotification *notification - = [[GTMKeyValueChangeNotification alloc] initWithKeyPath:keyPath - ofObject:object - userInfo:userInfo_ - change:change]; - [observer_ performSelector:selector_ withObject:notification]; - [notification release]; - } else { - // COV_NF_START - // There's no way this should ever be called. - // If it is, the call will go up to NSObject which will assert. - [super observeValueForKeyPath:keyPath - ofObject:object - change:change - context:context]; - // COV_NF_END - } -} - -- (void)deregister { - [target_ removeObserver:self forKeyPath:keyPath_]; -} - -@end - -@implementation GTMKeyValueObservingCenter - -+ (id)defaultCenter { - static GTMKeyValueObservingCenter *center = nil; - if(!center) { - // do a bit of clever atomic setting to make this thread safe - // if two threads try to set simultaneously, one will fail - // and the other will set things up so that the failing thread - // gets the shared center - GTMKeyValueObservingCenter *newCenter = [[self alloc] init]; - if(!objc_atomicCompareAndSwapGlobalBarrier(nil, - newCenter, - (void *)¢er)) { - [newCenter release]; // COV_NF_LINE no guarantee we'll hit this line - } - } - return center; -} - -- (id)init { - if((self = [super init])) { - observerHelpers_ = [[NSMutableDictionary alloc] init]; - } - return self; -} - -// COV_NF_START -// Singletons don't get deallocated -- (void)dealloc { - [observerHelpers_ release]; - [super dealloc]; -} -// COV_NF_END - -- (id)dictionaryKeyForObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector { - NSString *key = [NSString stringWithFormat:@"%p:%p:%@:%p", - observer, target, keyPath, selector]; - return key; -} - -- (void)addObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options { - GTMKeyValueObservingHelper *helper - = [[GTMKeyValueObservingHelper alloc] initWithObserver:observer - object:target - keyPath:keyPath - selector:selector - userInfo:userInfo - options:options]; - id key = [self dictionaryKeyForObserver:observer - ofObject:target - forKeyPath:keyPath - selector:selector]; - @synchronized(self) { -#if DEBUG - GTMKeyValueObservingHelper *oldHelper = [observerHelpers_ objectForKey:key]; - if (oldHelper) { - _GTMDevLog(@"%@ already observing %@ forKeyPath %@", - observer, target, keyPath); - } -#endif // DEBUG - [observerHelpers_ setObject:helper forKey:key]; - } - [helper release]; -} - -- (void)removeObserver:(id)observer - ofObject:(id)target - forKeyPath:(NSString *)keyPath - selector:(SEL)selector { - id key = [self dictionaryKeyForObserver:observer - ofObject:target - forKeyPath:keyPath - selector:selector]; - GTMKeyValueObservingHelper *helper = nil; - @synchronized(self) { - helper = [[observerHelpers_ objectForKey:key] retain]; -#if DEBUG - if (!helper) { - _GTMDevLog(@"%@ was not observing %@ with keypath %@", - observer, target, keyPath); - } -#endif // DEBUG - [observerHelpers_ removeObjectForKey:key]; - } - [helper deregister]; - [helper release]; -} - -@end - -@implementation NSObject (GTMKeyValueObservingAdditions) - -- (void)gtm_addObserver:(id)observer - forKeyPath:(NSString *)keyPath - selector:(SEL)selector - userInfo:(id)userInfo - options:(NSKeyValueObservingOptions)options { - _GTMDevAssert(observer && [keyPath length] && selector, - @"Missing observer, keyPath, or selector"); - GTMKeyValueObservingCenter *center - = [GTMKeyValueObservingCenter defaultCenter]; - GTMAssertSelectorNilOrImplementedWithArguments(observer, - selector, - @encode(GTMKeyValueChangeNotification *), - NULL); - [center addObserver:observer - ofObject:self - forKeyPath:keyPath - selector:selector - userInfo:userInfo - options:options]; -} - -- (void)gtm_removeObserver:(id)observer - forKeyPath:(NSString *)keyPath - selector:(SEL)selector { - _GTMDevAssert(observer && [keyPath length] && selector, - @"Missing observer, keyPath, or selector"); - GTMKeyValueObservingCenter *center - = [GTMKeyValueObservingCenter defaultCenter]; - GTMAssertSelectorNilOrImplementedWithArguments(observer, - selector, - @encode(GTMKeyValueChangeNotification *), - NULL); - [center removeObserver:observer - ofObject:self - forKeyPath:keyPath - selector:selector]; -} - -@end - - -@implementation GTMKeyValueChangeNotification - -- (id)initWithKeyPath:(NSString *)keyPath ofObject:(id)object - userInfo:(id)userInfo change:(NSDictionary *)change { - if ((self = [super init])) { - keyPath_ = [keyPath copy]; - object_ = [object retain]; - userInfo_ = [userInfo retain]; - change_ = [change retain]; - } - return self; -} - -- (void)dealloc { - [keyPath_ release]; - [object_ release]; - [userInfo_ release]; - [change_ release]; - [super dealloc]; -} - -- (id)copyWithZone:(NSZone *)zone { - return [[[self class] allocWithZone:zone] initWithKeyPath:keyPath_ - ofObject:object_ - userInfo:userInfo_ - change:change_]; -} - -- (BOOL)isEqual:(id)object { - return ([keyPath_ isEqualToString:[object keyPath]] - && [object_ isEqual:[object object]] - && [userInfo_ isEqual:[object userInfo]] - && [change_ isEqual:[object change]]); -} - -- (NSUInteger)hash { - return [keyPath_ hash] + [object_ hash] + [userInfo_ hash] + [change_ hash]; -} - -- (NSString *)keyPath { - return keyPath_; -} - -- (id)object { - return object_; -} - -- (id)userInfo { - return userInfo_; -} - -- (NSDictionary *)change { - return change_; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObservingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObservingTest.m deleted file mode 100644 index b97f7ff7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSObject+KeyValueObservingTest.m +++ /dev/null @@ -1,106 +0,0 @@ -// -// GTMNSObject+KeyValueObservingTest.m -// -// Copyright 2009 Google Inc. -// -// 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. -// - -// -// Tester.m -// MAKVONotificationCenter -// -// Created by Michael Ash on 10/15/08. -// - -// This code is based on code by Michael Ash. -// See comment in header. - -#import "GTMSenTestCase.h" -#import "GTMNSObject+KeyValueObserving.h" -#import "GTMDefines.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMNSObject_KeyValueObservingTest : GTMTestCase { - int32_t count_; - NSMutableDictionary *dict_; - __weak NSString *expectedValue_; -} -@end - -@implementation GTMNSObject_KeyValueObservingTest -- (void)setUp { - dict_ = [[NSMutableDictionary alloc] initWithObjectsAndKeys: - @"foo", @"key", - nil]; -} - -- (void)tearDown { - [dict_ release]; -} - -- (void)testSingleChange { - [dict_ gtm_addObserver:self - forKeyPath:@"key" - selector:@selector(observeValueChange:) - userInfo:@"userInfo" - options:NSKeyValueObservingOptionNew]; - expectedValue_ = @"bar"; - [dict_ setObject:expectedValue_ forKey:@"key"]; - STAssertEquals(count_, (int32_t)1, nil); - [dict_ gtm_removeObserver:self - forKeyPath:@"key" - selector:@selector(observeValueChange:)]; - [dict_ setObject:@"foo" forKey:@"key"]; - STAssertEquals(count_, (int32_t)1, nil); -} - -- (void)testRemoving { - [GTMUnitTestDevLogDebug expectPattern:@"-\\[GTMNSObject_KeyValueObservingTest" - @" testRemoving\\] was not observing.*"]; - - [dict_ gtm_removeObserver:self - forKeyPath:@"key" - selector:@selector(observeValueChange:)]; -} - -- (void)testAdding { - [dict_ gtm_addObserver:self - forKeyPath:@"key" - selector:@selector(observeValueChange:) - userInfo:@"userInfo" - options:NSKeyValueObservingOptionNew]; - [GTMUnitTestDevLogDebug expectPattern:@"-\\[GTMNSObject_KeyValueObservingTest" - @" testAdding\\] already observing.*"]; - [dict_ gtm_addObserver:self - forKeyPath:@"key" - selector:@selector(observeValueChange:) - userInfo:@"userInfo" - options:NSKeyValueObservingOptionNew]; -} - -- (void)observeValueChange:(GTMKeyValueChangeNotification *)notification { - STAssertEqualObjects([notification userInfo], @"userInfo", nil); - STAssertEqualObjects([notification keyPath], @"key", nil); - STAssertEqualObjects([notification object], dict_, nil); - NSDictionary *change = [notification change]; - NSString *value = [change objectForKey:NSKeyValueChangeNewKey]; - STAssertEqualObjects(value, expectedValue_, nil); - ++count_; - - GTMKeyValueChangeNotification *copy = [[notification copy] autorelease]; - STAssertEqualObjects(notification, copy, nil); - STAssertEquals([notification hash], [copy hash], nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.h deleted file mode 100644 index 1b4d362f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// GTMNSString+FindFolder.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -@interface NSString (GTMStringFindFolderAdditions) - -// Create a path to a folder located with FindFolder -// -// Args: -// theFolderType: one of the folder types in Folders.h -// (kPreferencesFolderType, etc) -// theDomain: one of the domains in Folders.h (kLocalDomain, kUserDomain, etc) -// doCreate: create the folder if it does not already exist -// -// Returns: -// full path to folder, or nil if the folder doesn't exist or can't be created -// -+ (NSString *)gtm_stringWithPathForFolder:(OSType)theFolderType - inDomain:(short)theDomain - doCreate:(BOOL)doCreate; - -// Create a path to a folder inside a folder located with FindFolder -// -// Args: -// theFolderType: one of the folder types in Folders.h -// (kPreferencesFolderType, etc) -// subfolderName: name of directory inside the Apple folder to be located or created -// theDomain: one of the domains in Folders.h (kLocalDomain, kUserDomain, etc) -// doCreate: create the folder if it does not already exist -// -// Returns: -// full path to subdirectory, or nil if the folder doesn't exist or can't be created -// -+ (NSString *)gtm_stringWithPathForFolder:(OSType)theFolderType - subfolderName:(NSString *)subfolderName - inDomain:(short)theDomain - doCreate:(BOOL)doCreate; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.m deleted file mode 100644 index 3a44174f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolder.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// GTMNSString+FindFolder.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSString+FindFolder.h" -#import "GTMGarbageCollection.h" - -@implementation NSString (GTMStringFindFolderAdditions) - -+ (NSString *)gtm_stringWithPathForFolder:(OSType)theFolderType - inDomain:(short)theDomain - doCreate:(BOOL)doCreate { - - NSString* folderPath = nil; - FSRef folderRef; - - OSErr err = FSFindFolder(theDomain, theFolderType, doCreate, &folderRef); - if (err == noErr) { - - CFURLRef folderURL = CFURLCreateFromFSRef(kCFAllocatorSystemDefault, - &folderRef); - if (folderURL) { - folderPath = GTMCFAutorelease(CFURLCopyFileSystemPath(folderURL, - kCFURLPOSIXPathStyle)); - CFRelease(folderURL); - } - } - return folderPath; -} - -+ (NSString *)gtm_stringWithPathForFolder:(OSType)theFolderType - subfolderName:(NSString *)subfolderName - inDomain:(short)theDomain - doCreate:(BOOL)doCreate { - NSString *resultPath = nil; - NSString *subdirPath = nil; - NSString *parentFolderPath = [self gtm_stringWithPathForFolder:theFolderType - inDomain:theDomain - doCreate:doCreate]; - if (parentFolderPath) { - - // find the path to the subdirectory - subdirPath = [parentFolderPath stringByAppendingPathComponent:subfolderName]; - - NSFileManager* fileMgr = [NSFileManager defaultManager]; - BOOL isDir = NO; - if ([fileMgr fileExistsAtPath:subdirPath isDirectory:&isDir] && isDir) { - // it already exists - resultPath = subdirPath; - } else if (doCreate) { - - // create the subdirectory with the parent folder's attributes - NSDictionary* attrs = [fileMgr fileAttributesAtPath:parentFolderPath - traverseLink:YES]; - if ([fileMgr createDirectoryAtPath:subdirPath - attributes:attrs]) { - resultPath = subdirPath; - } - } - } - return resultPath; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolderTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolderTest.m deleted file mode 100644 index 66fd329e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+FindFolderTest.m +++ /dev/null @@ -1,77 +0,0 @@ -// -// GTMNSString+FindFolderTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSString+FindFolder.h" - -@interface GTMNSString_FindFolderTest : GTMTestCase -@end - -@implementation GTMNSString_FindFolderTest - -- (void)testStringWithPathForFolder { - // for gtm_stringWithPathForFolder:inDomain:doCreate: - // the parameters all get passed through to FSFindFolder so there's no point testing - // other combinations; our semantics will match FSFindFolder's - NSString *prefsPath = [NSString gtm_stringWithPathForFolder:kPreferencesFolderType - inDomain:kUserDomain - doCreate:NO]; - NSString *realPrefsPath = [@"~/Library/Preferences" stringByExpandingTildeInPath]; - STAssertEqualObjects(realPrefsPath, prefsPath, @"Found incorrect prefs path"); - - - // test the subfolder method; it should return nil if we pass NO and the - // subfolder doesn't already exist - - NSString *googCacheNoCreatePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType - subfolderName:@"GTMUnitTestDuzntExist" - inDomain:kUserDomain - doCreate:NO]; - STAssertNil(googCacheNoCreatePath, @"Should not exist: %@", googCacheNoCreatePath); - - // test creating ~/Library/Cache/GTMUnitTestCreated - - NSString *folderName = @"GTMUnitTestCreated"; - NSString *gtmCachePath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType - subfolderName:folderName - inDomain:kUserDomain - doCreate:YES]; - NSString *testPath = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType - inDomain:kUserDomain - doCreate:NO]; - NSString *testPathAppended = [testPath stringByAppendingPathComponent:folderName]; - STAssertEqualObjects(gtmCachePath, testPathAppended, @"Unexpected path name"); - - NSFileManager* fileMgr = [NSFileManager defaultManager]; - BOOL isDir = NO; - BOOL pathExists = [fileMgr fileExistsAtPath:gtmCachePath isDirectory:&isDir] && isDir; - STAssertTrue(pathExists, @"Path %@ is not existing like it should", gtmCachePath); - - // test finding it again w/o having to create it - NSString *gtmCachePath2 = [NSString gtm_stringWithPathForFolder:kCachedDataFolderType - subfolderName:folderName - inDomain:kUserDomain - doCreate:NO]; - STAssertEqualObjects(gtmCachePath2, gtmCachePath, nil); - - BOOL didRemove = [fileMgr removeFileAtPath:gtmCachePath - handler:nil]; - STAssertTrue(didRemove, @"Error removing %@", gtmCachePath); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.h deleted file mode 100644 index 1273cc3b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// GTMNSString+HTML.h -// Dealing with NSStrings that contain HTML -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -/// Utilities for NSStrings containing HTML -@interface NSString (GTMNSStringHTMLAdditions) - -/// Get a string where internal characters that need escaping for HTML are escaped -// -/// For example, '&' become '&'. This will only cover characters from table -/// A.2.2 of http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters -/// which is what you want for a unicode encoded webpage. If you have a ascii -/// or non-encoded webpage, please use stringByEscapingAsciiHTML which will -/// encode all characters. -/// -/// For obvious reasons this call is only safe once. -// -// Returns: -// Autoreleased NSString -// -- (NSString *)gtm_stringByEscapingForHTML; - -/// Get a string where internal characters that need escaping for HTML are escaped -// -/// For example, '&' become '&' -/// All non-mapped characters (unicode that don't have a &keyword; mapping) -/// will be converted to the appropriate &#xxx; value. If your webpage is -/// unicode encoded (UTF16 or UTF8) use stringByEscapingHTML instead as it is -/// faster, and produces less bloated and more readable HTML (as long as you -/// are using a unicode compliant HTML reader). -/// -/// For obvious reasons this call is only safe once. -// -// Returns: -// Autoreleased NSString -// -- (NSString *)gtm_stringByEscapingForAsciiHTML; - -/// Get a string where internal characters that are escaped for HTML are unescaped -// -/// For example, '&' becomes '&' -/// Handles and 2 cases as well -/// -// Returns: -// Autoreleased NSString -// -- (NSString *)gtm_stringByUnescapingFromHTML; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.m deleted file mode 100644 index 6853df07..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTML.m +++ /dev/null @@ -1,522 +0,0 @@ -// -// GTMNSString+HTML.m -// Dealing with NSStrings that contain HTML -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import "GTMNSString+HTML.h" - -typedef struct { - NSString *escapeSequence; - unichar uchar; -} HTMLEscapeMap; - -// Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters -// Ordered by uchar lowest to highest for bsearching -static HTMLEscapeMap gAsciiHTMLEscapeMap[] = { - // A.2.2. Special characters - { @""", 34 }, - { @"&", 38 }, - { @"'", 39 }, - { @"<", 60 }, - { @">", 62 }, - - // A.2.1. Latin-1 characters - { @" ", 160 }, - { @"¡", 161 }, - { @"¢", 162 }, - { @"£", 163 }, - { @"¤", 164 }, - { @"¥", 165 }, - { @"¦", 166 }, - { @"§", 167 }, - { @"¨", 168 }, - { @"©", 169 }, - { @"ª", 170 }, - { @"«", 171 }, - { @"¬", 172 }, - { @"­", 173 }, - { @"®", 174 }, - { @"¯", 175 }, - { @"°", 176 }, - { @"±", 177 }, - { @"²", 178 }, - { @"³", 179 }, - { @"´", 180 }, - { @"µ", 181 }, - { @"¶", 182 }, - { @"·", 183 }, - { @"¸", 184 }, - { @"¹", 185 }, - { @"º", 186 }, - { @"»", 187 }, - { @"¼", 188 }, - { @"½", 189 }, - { @"¾", 190 }, - { @"¿", 191 }, - { @"À", 192 }, - { @"Á", 193 }, - { @"Â", 194 }, - { @"Ã", 195 }, - { @"Ä", 196 }, - { @"Å", 197 }, - { @"Æ", 198 }, - { @"Ç", 199 }, - { @"È", 200 }, - { @"É", 201 }, - { @"Ê", 202 }, - { @"Ë", 203 }, - { @"Ì", 204 }, - { @"Í", 205 }, - { @"Î", 206 }, - { @"Ï", 207 }, - { @"Ð", 208 }, - { @"Ñ", 209 }, - { @"Ò", 210 }, - { @"Ó", 211 }, - { @"Ô", 212 }, - { @"Õ", 213 }, - { @"Ö", 214 }, - { @"×", 215 }, - { @"Ø", 216 }, - { @"Ù", 217 }, - { @"Ú", 218 }, - { @"Û", 219 }, - { @"Ü", 220 }, - { @"Ý", 221 }, - { @"Þ", 222 }, - { @"ß", 223 }, - { @"à", 224 }, - { @"á", 225 }, - { @"â", 226 }, - { @"ã", 227 }, - { @"ä", 228 }, - { @"å", 229 }, - { @"æ", 230 }, - { @"ç", 231 }, - { @"è", 232 }, - { @"é", 233 }, - { @"ê", 234 }, - { @"ë", 235 }, - { @"ì", 236 }, - { @"í", 237 }, - { @"î", 238 }, - { @"ï", 239 }, - { @"ð", 240 }, - { @"ñ", 241 }, - { @"ò", 242 }, - { @"ó", 243 }, - { @"ô", 244 }, - { @"õ", 245 }, - { @"ö", 246 }, - { @"÷", 247 }, - { @"ø", 248 }, - { @"ù", 249 }, - { @"ú", 250 }, - { @"û", 251 }, - { @"ü", 252 }, - { @"ý", 253 }, - { @"þ", 254 }, - { @"ÿ", 255 }, - - // A.2.2. Special characters cont'd - { @"Œ", 338 }, - { @"œ", 339 }, - { @"Š", 352 }, - { @"š", 353 }, - { @"Ÿ", 376 }, - - // A.2.3. Symbols - { @"ƒ", 402 }, - - // A.2.2. Special characters cont'd - { @"ˆ", 710 }, - { @"˜", 732 }, - - // A.2.3. Symbols cont'd - { @"Α", 913 }, - { @"Β", 914 }, - { @"Γ", 915 }, - { @"Δ", 916 }, - { @"Ε", 917 }, - { @"Ζ", 918 }, - { @"Η", 919 }, - { @"Θ", 920 }, - { @"Ι", 921 }, - { @"Κ", 922 }, - { @"Λ", 923 }, - { @"Μ", 924 }, - { @"Ν", 925 }, - { @"Ξ", 926 }, - { @"Ο", 927 }, - { @"Π", 928 }, - { @"Ρ", 929 }, - { @"Σ", 931 }, - { @"Τ", 932 }, - { @"Υ", 933 }, - { @"Φ", 934 }, - { @"Χ", 935 }, - { @"Ψ", 936 }, - { @"Ω", 937 }, - { @"α", 945 }, - { @"β", 946 }, - { @"γ", 947 }, - { @"δ", 948 }, - { @"ε", 949 }, - { @"ζ", 950 }, - { @"η", 951 }, - { @"θ", 952 }, - { @"ι", 953 }, - { @"κ", 954 }, - { @"λ", 955 }, - { @"μ", 956 }, - { @"ν", 957 }, - { @"ξ", 958 }, - { @"ο", 959 }, - { @"π", 960 }, - { @"ρ", 961 }, - { @"ς", 962 }, - { @"σ", 963 }, - { @"τ", 964 }, - { @"υ", 965 }, - { @"φ", 966 }, - { @"χ", 967 }, - { @"ψ", 968 }, - { @"ω", 969 }, - { @"ϑ", 977 }, - { @"ϒ", 978 }, - { @"ϖ", 982 }, - - // A.2.2. Special characters cont'd - { @" ", 8194 }, - { @" ", 8195 }, - { @" ", 8201 }, - { @"‌", 8204 }, - { @"‍", 8205 }, - { @"‎", 8206 }, - { @"‏", 8207 }, - { @"–", 8211 }, - { @"—", 8212 }, - { @"‘", 8216 }, - { @"’", 8217 }, - { @"‚", 8218 }, - { @"“", 8220 }, - { @"”", 8221 }, - { @"„", 8222 }, - { @"†", 8224 }, - { @"‡", 8225 }, - // A.2.3. Symbols cont'd - { @"•", 8226 }, - { @"…", 8230 }, - - // A.2.2. Special characters cont'd - { @"‰", 8240 }, - - // A.2.3. Symbols cont'd - { @"′", 8242 }, - { @"″", 8243 }, - - // A.2.2. Special characters cont'd - { @"‹", 8249 }, - { @"›", 8250 }, - - // A.2.3. Symbols cont'd - { @"‾", 8254 }, - { @"⁄", 8260 }, - - // A.2.2. Special characters cont'd - { @"€", 8364 }, - - // A.2.3. Symbols cont'd - { @"ℑ", 8465 }, - { @"℘", 8472 }, - { @"ℜ", 8476 }, - { @"™", 8482 }, - { @"ℵ", 8501 }, - { @"←", 8592 }, - { @"↑", 8593 }, - { @"→", 8594 }, - { @"↓", 8595 }, - { @"↔", 8596 }, - { @"↵", 8629 }, - { @"⇐", 8656 }, - { @"⇑", 8657 }, - { @"⇒", 8658 }, - { @"⇓", 8659 }, - { @"⇔", 8660 }, - { @"∀", 8704 }, - { @"∂", 8706 }, - { @"∃", 8707 }, - { @"∅", 8709 }, - { @"∇", 8711 }, - { @"∈", 8712 }, - { @"∉", 8713 }, - { @"∋", 8715 }, - { @"∏", 8719 }, - { @"∑", 8721 }, - { @"−", 8722 }, - { @"∗", 8727 }, - { @"√", 8730 }, - { @"∝", 8733 }, - { @"∞", 8734 }, - { @"∠", 8736 }, - { @"∧", 8743 }, - { @"∨", 8744 }, - { @"∩", 8745 }, - { @"∪", 8746 }, - { @"∫", 8747 }, - { @"∴", 8756 }, - { @"∼", 8764 }, - { @"≅", 8773 }, - { @"≈", 8776 }, - { @"≠", 8800 }, - { @"≡", 8801 }, - { @"≤", 8804 }, - { @"≥", 8805 }, - { @"⊂", 8834 }, - { @"⊃", 8835 }, - { @"⊄", 8836 }, - { @"⊆", 8838 }, - { @"⊇", 8839 }, - { @"⊕", 8853 }, - { @"⊗", 8855 }, - { @"⊥", 8869 }, - { @"⋅", 8901 }, - { @"⌈", 8968 }, - { @"⌉", 8969 }, - { @"⌊", 8970 }, - { @"⌋", 8971 }, - { @"⟨", 9001 }, - { @"⟩", 9002 }, - { @"◊", 9674 }, - { @"♠", 9824 }, - { @"♣", 9827 }, - { @"♥", 9829 }, - { @"♦", 9830 } -}; - -// Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters -// This is table A.2.2 Special Characters -static HTMLEscapeMap gUnicodeHTMLEscapeMap[] = { - // C0 Controls and Basic Latin - { @""", 34 }, - { @"&", 38 }, - { @"'", 39 }, - { @"<", 60 }, - { @">", 62 }, - - // Latin Extended-A - { @"Œ", 338 }, - { @"œ", 339 }, - { @"Š", 352 }, - { @"š", 353 }, - { @"Ÿ", 376 }, - - // Spacing Modifier Letters - { @"ˆ", 710 }, - { @"˜", 732 }, - - // General Punctuation - { @" ", 8194 }, - { @" ", 8195 }, - { @" ", 8201 }, - { @"‌", 8204 }, - { @"‍", 8205 }, - { @"‎", 8206 }, - { @"‏", 8207 }, - { @"–", 8211 }, - { @"—", 8212 }, - { @"‘", 8216 }, - { @"’", 8217 }, - { @"‚", 8218 }, - { @"“", 8220 }, - { @"”", 8221 }, - { @"„", 8222 }, - { @"†", 8224 }, - { @"‡", 8225 }, - { @"‰", 8240 }, - { @"‹", 8249 }, - { @"›", 8250 }, - { @"€", 8364 }, -}; - - -// Utility function for Bsearching table above -static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) { - const unichar *uchar = (const unichar*)ucharVoid; - const HTMLEscapeMap *map = (const HTMLEscapeMap*)mapVoid; - int val; - if (*uchar > map->uchar) { - val = 1; - } else if (*uchar < map->uchar) { - val = -1; - } else { - val = 0; - } - return val; -} - -@implementation NSString (GTMNSStringHTMLAdditions) - -- (NSString *)gtm_stringByEscapingHTMLUsingTable:(HTMLEscapeMap*)table - ofSize:(NSUInteger)size - escapingUnicode:(BOOL)escapeUnicode { - NSUInteger length = [self length]; - if (!length) { - return self; - } - - NSMutableString *finalString = [NSMutableString string]; - NSMutableData *data2 = [NSMutableData dataWithCapacity:sizeof(unichar) * length]; - - // this block is common between GTMNSString+HTML and GTMNSString+XML but - // it's so short that it isn't really worth trying to share. - const unichar *buffer = CFStringGetCharactersPtr((CFStringRef)self); - if (!buffer) { - // We want this buffer to be autoreleased. - NSMutableData *data = [NSMutableData dataWithLength:length * sizeof(UniChar)]; - if (!data) { - // COV_NF_START - Memory fail case - _GTMDevLog(@"couldn't alloc buffer"); - return nil; - // COV_NF_END - } - [self getCharacters:[data mutableBytes]]; - buffer = [data bytes]; - } - - if (!buffer || !data2) { - // COV_NF_START - _GTMDevLog(@"Unable to allocate buffer or data2"); - return nil; - // COV_NF_END - } - - unichar *buffer2 = (unichar *)[data2 mutableBytes]; - - NSUInteger buffer2Length = 0; - - for (NSUInteger i = 0; i < length; ++i) { - HTMLEscapeMap *val = bsearch(&buffer[i], table, - size / sizeof(HTMLEscapeMap), - sizeof(HTMLEscapeMap), EscapeMapCompare); - if (val || (escapeUnicode && buffer[i] > 127)) { - if (buffer2Length) { - CFStringAppendCharacters((CFMutableStringRef)finalString, - buffer2, - buffer2Length); - buffer2Length = 0; - } - if (val) { - [finalString appendString:val->escapeSequence]; - } - else { - _GTMDevAssert(escapeUnicode && buffer[i] > 127, @"Illegal Character"); - [finalString appendFormat:@"&#%d;", buffer[i]]; - } - } else { - buffer2[buffer2Length] = buffer[i]; - buffer2Length += 1; - } - } - if (buffer2Length) { - CFStringAppendCharacters((CFMutableStringRef)finalString, - buffer2, - buffer2Length); - } - return finalString; -} - -- (NSString *)gtm_stringByEscapingForHTML { - return [self gtm_stringByEscapingHTMLUsingTable:gUnicodeHTMLEscapeMap - ofSize:sizeof(gUnicodeHTMLEscapeMap) - escapingUnicode:NO]; -} // gtm_stringByEscapingHTML - -- (NSString *)gtm_stringByEscapingForAsciiHTML { - return [self gtm_stringByEscapingHTMLUsingTable:gAsciiHTMLEscapeMap - ofSize:sizeof(gAsciiHTMLEscapeMap) - escapingUnicode:YES]; -} // gtm_stringByEscapingAsciiHTML - -- (NSString *)gtm_stringByUnescapingFromHTML { - NSRange range = NSMakeRange(0, [self length]); - NSRange subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range]; - - // if no ampersands, we've got a quick way out - if (subrange.length == 0) return self; - NSMutableString *finalString = [NSMutableString stringWithString:self]; - do { - NSRange semiColonRange = NSMakeRange(subrange.location, NSMaxRange(range) - subrange.location); - semiColonRange = [self rangeOfString:@";" options:0 range:semiColonRange]; - range = NSMakeRange(0, subrange.location); - // if we don't find a semicolon in the range, we don't have a sequence - if (semiColonRange.location == NSNotFound) { - continue; - } - NSRange escapeRange = NSMakeRange(subrange.location, semiColonRange.location - subrange.location + 1); - NSString *escapeString = [self substringWithRange:escapeRange]; - NSUInteger length = [escapeString length]; - // a squence must be longer than 3 (<) and less than 11 (ϑ) - if (length > 3 && length < 11) { - if ([escapeString characterAtIndex:1] == '#') { - unichar char2 = [escapeString characterAtIndex:2]; - if (char2 == 'x' || char2 == 'X') { - // Hex escape squences £ - NSString *hexSequence = [escapeString substringWithRange:NSMakeRange(3, length - 4)]; - NSScanner *scanner = [NSScanner scannerWithString:hexSequence]; - unsigned value; - if ([scanner scanHexInt:&value] && - value < USHRT_MAX && - value > 0 - && [scanner scanLocation] == length - 4) { - unichar uchar = value; - NSString *charString = [NSString stringWithCharacters:&uchar length:1]; - [finalString replaceCharactersInRange:escapeRange withString:charString]; - } - - } else { - // Decimal Sequences { - NSString *numberSequence = [escapeString substringWithRange:NSMakeRange(2, length - 3)]; - NSScanner *scanner = [NSScanner scannerWithString:numberSequence]; - int value; - if ([scanner scanInt:&value] && - value < USHRT_MAX && - value > 0 - && [scanner scanLocation] == length - 3) { - unichar uchar = value; - NSString *charString = [NSString stringWithCharacters:&uchar length:1]; - [finalString replaceCharactersInRange:escapeRange withString:charString]; - } - } - } else { - // "standard" sequences - for (unsigned i = 0; i < sizeof(gAsciiHTMLEscapeMap) / sizeof(HTMLEscapeMap); ++i) { - if ([escapeString isEqualToString:gAsciiHTMLEscapeMap[i].escapeSequence]) { - [finalString replaceCharactersInRange:escapeRange withString:[NSString stringWithCharacters:&gAsciiHTMLEscapeMap[i].uchar length:1]]; - break; - } - } - } - } - } while ((subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range]).length != 0); - return finalString; -} // gtm_stringByUnescapingHTML - - - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTMLTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTMLTest.m deleted file mode 100644 index 1c7baf01..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+HTMLTest.m +++ /dev/null @@ -1,242 +0,0 @@ -// -// GTMNSString+HTMLTest.m -// -// Copyright 2005-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSString+HTML.h" - -@interface GTMNSString_HTMLTest : GTMTestCase -@end - -@implementation GTMNSString_HTMLTest - -- (void)testStringByEscapingHTML { - unichar chars[] = - { 34, 38, 39, 60, 62, 338, 339, 352, 353, 376, 710, 732, - 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, - 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, }; - - NSString *string1 = [NSString stringWithCharacters:chars - length:sizeof(chars) / sizeof(unichar)]; - NSString *string2 = - @""&'<>ŒœŠšŸ" - "ˆ˜   ‌‍‎‏–" - "—‘’‚“”„†‡" - "‰‹›€"; - - STAssertEqualObjects([string1 gtm_stringByEscapingForHTML], - string2, - @"HTML escaping failed"); - - STAssertEqualObjects([@"" gtm_stringByEscapingForHTML], - @"<this & that>", - @"HTML escaping failed"); - NSString *string = [NSString stringWithUTF8String:"パン・&ド・カンパーニュ"]; - NSString *escapeStr = [NSString stringWithUTF8String:"パン・&ド・カンパーニュ"]; - STAssertEqualObjects([string gtm_stringByEscapingForHTML], - escapeStr, - @"HTML escaping failed"); - - string = [NSString stringWithUTF8String:"abcا1ب<تdef&"]; - STAssertEqualObjects([string gtm_stringByEscapingForHTML], - [NSString stringWithUTF8String:"abcا1ب<تdef&"], - @"HTML escaping failed"); - - // test empty string - STAssertEqualObjects([@"" gtm_stringByEscapingForHTML], @"", nil); -} // testStringByEscapingHTML - -- (void)testStringByEscapingAsciiHTML { - unichar chars[] = - { 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376, - 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204, - 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, - 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476, - 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, - 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, - 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, - 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, - 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 }; - - NSString *string1 = [NSString stringWithCharacters:chars - length:sizeof(chars) / sizeof(unichar)]; - NSString *string2 = - @""&'<> ¡¢£¤¥" - "¦§¨©ª«¬­®¯°" - "±²³´µ¶·¸¹" - "º»¼½¾¿ÀÁ" - "ÂÃÄÅÆÇÈÉ" - "ÊËÌÍÎÏÐÑÒ" - "ÓÔÕÖ×ØÙÚ" - "ÛÜÝÞßàáâã" - "äåæçèéêëì" - "íîïðñòóôõ" - "ö÷øùúûüýþ" - "ÿŒœŠšŸƒˆ˜" - "ΑΒΓΔΕΖΗΘΙ" - "ΚΛΜΝΞΟΠΡΣΤ" - "ΥΦΧΨΩαβγδ" - "εζηθικλμνξ" - "οπρςστυφχψ" - "ωϑϒϖ   ‌‍" - "‎‏–—‘’‚“”" - "„†‡•…‰′″" - "‹›‾⁄€℘ℑℜ™" - "ℵ←↑→↓↔↵⇐⇑⇒" - "⇓⇔∀∂∃∅∇∈∉∋" - "∏∑−∗√∝∞∠∧∨" - "∩∪∫∴∼≅≈≠≡≤≥" - "⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈" - "⌉⌊⌋⟨⟩◊♠♣♥" - "♦"; - - STAssertEqualObjects([string1 gtm_stringByEscapingForAsciiHTML], - string2, - @"HTML escaping failed"); - - STAssertEqualObjects([@"" gtm_stringByEscapingForAsciiHTML], - @"<this & that>", - @"HTML escaping failed"); - NSString *string = [NSString stringWithUTF8String:"パン・ド・カンパーニュ"]; - STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML], - @"パン・ド・カ" - "ンパーニュ", - @"HTML escaping failed"); - - // Mix in some right - to left - string = [NSString stringWithUTF8String:"abcا1ب<تdef&"]; - STAssertEqualObjects([string gtm_stringByEscapingForAsciiHTML], - @"abcا1ب<تdef&", - @"HTML escaping failed"); -} // stringByEscapingAsciiHTML - -- (void)testStringByUnescapingHTML { - NSString *string1 = - @""&'<> ¡¢£¤¥" - "¦§¨©ª«¬­®¯°" - "±²³´µ¶·¸¹" - "º»¼½¾¿ÀÁ" - "ÂÃÄÅÆÇÈÉ" - "ÊËÌÍÎÏÐÑÒ" - "ÓÔÕÖ×ØÙÚ" - "ÛÜÝÞßàáâã" - "äåæçèéêëì" - "íîïðñòóôõ" - "ö÷øùúûüýþ" - "ÿŒœŠšŸƒˆ˜" - "ΑΒΓΔΕΖΗΘΙ" - "ΚΛΜΝΞΟΠΡΣΤ" - "ΥΦΧΨΩαβγδ" - "εζηθικλμνξ" - "οπρςστυφχψ" - "ωϑϒϖ   ‌‍" - "‎‏–—‘’‚“”" - "„†‡•…‰′″" - "‹›‾⁄€℘ℑℜ™" - "ℵ←↑→↓↔↵⇐⇑⇒" - "⇓⇔∀∂∃∅∇∈∉∋" - "∏∑−∗√∝∞∠∧∨" - "∩∪∫∴∼≅≈≠≡≤≥" - "⊂⊃⊄⊆⊇⊕⊗⊥⋅⌈" - "⌉⌊⌋⟨⟩◊♠♣♥" - "♦"; - - unichar chars[] = - { 34, 38, 39, 60, 62, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376, - 402, 710, 732, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8194, 8195, 8201, 8204, - 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, - 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8254, 8260, 8364, 8472, 8465, 8476, - 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, - 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, - 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, - 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, - 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830 }; - - NSString *string2 = [NSString stringWithCharacters:chars - length:sizeof(chars) / sizeof(unichar)]; - STAssertEqualObjects([string1 gtm_stringByUnescapingFromHTML], - string2, - @"HTML unescaping failed"); - - STAssertEqualObjects([@"ABC" gtm_stringByUnescapingFromHTML], - @"ABC", @"HTML unescaping failed"); - - STAssertEqualObjects([@"" gtm_stringByUnescapingFromHTML], - @"", @"HTML unescaping failed"); - - STAssertEqualObjects([@"A&Bang;C" gtm_stringByUnescapingFromHTML], - @"A&Bang;C", @"HTML unescaping failed"); - - STAssertEqualObjects([@"A&Bang;C" gtm_stringByUnescapingFromHTML], - @"A&Bang;C", @"HTML unescaping failed"); - - STAssertEqualObjects([@"A&Bang;C" gtm_stringByUnescapingFromHTML], - @"A&Bang;C", @"HTML unescaping failed"); - - STAssertEqualObjects([@"AA;" gtm_stringByUnescapingFromHTML], - @"AA;", @"HTML unescaping failed"); - - STAssertEqualObjects([@"&" gtm_stringByUnescapingFromHTML], - @"&", @"HTML unescaping failed"); - - STAssertEqualObjects([@"&;" gtm_stringByUnescapingFromHTML], - @"&;", @"HTML unescaping failed"); - - STAssertEqualObjects([@"&x;" gtm_stringByUnescapingFromHTML], - @"&x;", @"HTML unescaping failed"); - - STAssertEqualObjects([@"&X;" gtm_stringByUnescapingFromHTML], - @"&X;", @"HTML unescaping failed"); - - STAssertEqualObjects([@";" gtm_stringByUnescapingFromHTML], - @";", @"HTML unescaping failed"); - - STAssertEqualObjects([@"<this & that>" gtm_stringByUnescapingFromHTML], - @"", @"HTML unescaping failed"); - - -} // testStringByUnescapingHTML - -- (void)testStringRoundtrippingEscapedHTML { - NSString *string = [NSString stringWithUTF8String:"This test ©™®๒०᠐٧"]; - STAssertEqualObjects(string, - [[string gtm_stringByEscapingForHTML] gtm_stringByUnescapingFromHTML], - @"HTML Roundtripping failed"); - string = [NSString stringWithUTF8String:"This test ©™®๒०᠐٧"]; - STAssertEqualObjects(string, - [[string gtm_stringByEscapingForAsciiHTML] gtm_stringByUnescapingFromHTML], - @"HTML Roundtripping failed"); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.h deleted file mode 100644 index 71a98c5f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// GTMNSString+Replace.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -/// Give easy search-n-replace functionality to NSString. -@interface NSString (GTMStringReplaceAdditions) - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -// 10.5 has stringByReplacingOccurrencesOfString:withString:, use that directly. - -/// Returns a new autoreleased string by replacing all occurrences of -// |oldString| with |newString| (case sensitive). If |oldString| is nil or -// @"" nothing is done and |self| is returned. If |newString| is nil, it's -// treated as if |newString| were the empty string, thus effectively -// deleting all occurrences of |oldString| from |self|. -// -// Args: -// target - the NSString to search for -// replacement - the NSString to replace |oldString| with -// -// Returns: -// A new autoreleased NSString -// -- (NSString *)gtm_stringByReplacingString:(NSString *)target - withString:(NSString *)replacement; - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.m deleted file mode 100644 index ddaad5ed..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+Replace.m +++ /dev/null @@ -1,53 +0,0 @@ -// -// GTMNSString+Replace.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSString+Replace.h" - - -@implementation NSString (GTMStringReplaceAdditions) - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -// 10.5 has stringByReplacingOccurrencesOfString:withString:, use that directly. - -- (NSString *)gtm_stringByReplacingString:(NSString *)target - withString:(NSString *)replacement { - // If |target| was nil, then do nothing and return |self| - // - // We do the retain+autorelease dance here because of this use case: - // NSString *s1 = [[NSString alloc] init...]; - // NSString *s2 = [s1 stringByReplacingString:@"foo" withString:@"bar"]; - // [s1 release]; // |s2| still needs to be valid after this line - if (!target) - return [[self retain] autorelease]; - - // If |replacement| is nil we want it to be treated as if @"" was specified - // ... effectively removing |target| from self - if (!replacement) - replacement = @""; - - NSMutableString *result = [[self mutableCopy] autorelease]; - [result replaceOccurrencesOfString:target - withString:replacement - options:0 - range:NSMakeRange(0, [result length])]; - return result; -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+ReplaceTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+ReplaceTest.m deleted file mode 100644 index 4561af66..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+ReplaceTest.m +++ /dev/null @@ -1,59 +0,0 @@ -// -// GTMNSString+ReplaceTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSString+Replace.h" - -@interface GTMNSString_ReplaceTest : GTMTestCase -@end - -@implementation GTMNSString_ReplaceTest - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (void)testStringByReplacingStringWithString { - NSString *testString = @"a bc debc gh"; - NSString *result; - - result = [testString gtm_stringByReplacingString:@"bc" withString:@"BC"]; - STAssertEqualObjects(@"a BC deBC gh", result, - @"'bc' wasn't replaced with 'BC'"); - - result = [testString gtm_stringByReplacingString:@"bc" withString:@""]; - STAssertEqualObjects(@"a de gh", result, @"'bc' wasn't replaced with ''"); - - result = [testString gtm_stringByReplacingString:@"bc" withString:nil]; - STAssertEqualObjects(@"a de gh", result, @"'bc' wasn't replaced with (nil)"); - - result = [testString gtm_stringByReplacingString:@" " withString:@"S"]; - STAssertEqualObjects(@"aSbcSdebcSgh", result, @"' ' wasn't replaced with 'S'"); - - result = [testString gtm_stringByReplacingString:nil withString:@"blah"]; - STAssertEqualObjects(testString, result, @"(nil) wasn't replaced with 'blah'"); - - result = [testString gtm_stringByReplacingString:nil withString:nil]; - STAssertEqualObjects(testString, result, @"(nil) wasn't replaced with (nil)"); - - result = [testString gtm_stringByReplacingString:@"" withString:@"X"]; - STAssertEqualObjects(testString, result, - @"replacing '' with anything should yield the original string"); -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.h deleted file mode 100644 index d4c7e09a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// GTMNSString+URLArguments.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import - -/// Utilities for encoding and decoding URL arguments. -@interface NSString (GTMNSStringURLArgumentsAdditions) - -/// Returns a string that is escaped properly to be a URL argument. -// -/// This differs from stringByAddingPercentEscapesUsingEncoding: in that it -/// will escape all the reserved characters (per RFC 3986 -/// ) which -/// stringByAddingPercentEscapesUsingEncoding would leave. -/// -/// This will also escape '%', so this should not be used on a string that has -/// already been escaped unless double-escaping is the desired result. -- (NSString*)gtm_stringByEscapingForURLArgument; - -/// Returns the unescaped version of a URL argument -// -/// This has the same behavior as stringByReplacingPercentEscapesUsingEncoding:, -/// except that it will also convert '+' to space. -- (NSString*)gtm_stringByUnescapingFromURLArgument; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.m deleted file mode 100644 index 46d2c99e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArguments.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// GTMNSString+URLArguments.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSString+URLArguments.h" -#import "GTMGarbageCollection.h" - -@implementation NSString (GTMNSStringURLArgumentsAdditions) - -- (NSString*)gtm_stringByEscapingForURLArgument { - // Encode all the reserved characters, per RFC 3986 - // () - CFStringRef escaped = - CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, - (CFStringRef)self, - NULL, - (CFStringRef)@"!*'();:@&=+$,/?%#[]", - kCFStringEncodingUTF8); - return GTMCFAutorelease(escaped); -} - -- (NSString*)gtm_stringByUnescapingFromURLArgument { - NSMutableString *resultString = [NSMutableString stringWithString:self]; - [resultString replaceOccurrencesOfString:@"+" - withString:@" " - options:NSLiteralSearch - range:NSMakeRange(0, [resultString length])]; - return [resultString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArgumentsTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArgumentsTest.m deleted file mode 100644 index 90a5a813..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+URLArgumentsTest.m +++ /dev/null @@ -1,94 +0,0 @@ -// -// GTMNSString+URLArgumentsTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMNSString+URLArguments.h" - -@interface GTMNSString_URLArgumentsTest : GTMTestCase -@end - -@implementation GTMNSString_URLArgumentsTest - - -- (void)testEscaping { - // should be done already by the basic code - STAssertEqualObjects([@"this that" gtm_stringByEscapingForURLArgument], @"this%20that", @"- space should be escaped"); - STAssertEqualObjects([@"this\"that" gtm_stringByEscapingForURLArgument], @"this%22that", @"- double quote should be escaped"); - // make sure our additions are handled - STAssertEqualObjects([@"this!that" gtm_stringByEscapingForURLArgument], @"this%21that", @"- exclamation mark should be escaped"); - STAssertEqualObjects([@"this*that" gtm_stringByEscapingForURLArgument], @"this%2Athat", @"- asterisk should be escaped"); - STAssertEqualObjects([@"this'that" gtm_stringByEscapingForURLArgument], @"this%27that", @"- single quote should be escaped"); - STAssertEqualObjects([@"this(that" gtm_stringByEscapingForURLArgument], @"this%28that", @"- left paren should be escaped"); - STAssertEqualObjects([@"this)that" gtm_stringByEscapingForURLArgument], @"this%29that", @"- right paren should be escaped"); - STAssertEqualObjects([@"this;that" gtm_stringByEscapingForURLArgument], @"this%3Bthat", @"- semi-colon should be escaped"); - STAssertEqualObjects([@"this:that" gtm_stringByEscapingForURLArgument], @"this%3Athat", @"- colon should be escaped"); - STAssertEqualObjects([@"this@that" gtm_stringByEscapingForURLArgument], @"this%40that", @"- at sign should be escaped"); - STAssertEqualObjects([@"this&that" gtm_stringByEscapingForURLArgument], @"this%26that", @"- ampersand should be escaped"); - STAssertEqualObjects([@"this=that" gtm_stringByEscapingForURLArgument], @"this%3Dthat", @"- equals should be escaped"); - STAssertEqualObjects([@"this+that" gtm_stringByEscapingForURLArgument], @"this%2Bthat", @"- plus should be escaped"); - STAssertEqualObjects([@"this$that" gtm_stringByEscapingForURLArgument], @"this%24that", @"- dollar-sign should be escaped"); - STAssertEqualObjects([@"this,that" gtm_stringByEscapingForURLArgument], @"this%2Cthat", @"- comma should be escaped"); - STAssertEqualObjects([@"this/that" gtm_stringByEscapingForURLArgument], @"this%2Fthat", @"- slash should be escaped"); - STAssertEqualObjects([@"this?that" gtm_stringByEscapingForURLArgument], @"this%3Fthat", @"- question mark should be escaped"); - STAssertEqualObjects([@"this%that" gtm_stringByEscapingForURLArgument], @"this%25that", @"- percent should be escaped"); - STAssertEqualObjects([@"this#that" gtm_stringByEscapingForURLArgument], @"this%23that", @"- pound should be escaped"); - STAssertEqualObjects([@"this[that" gtm_stringByEscapingForURLArgument], @"this%5Bthat", @"- left bracket should be escaped"); - STAssertEqualObjects([@"this]that" gtm_stringByEscapingForURLArgument], @"this%5Dthat", @"- right bracket should be escaped"); - // make sure plus and space are handled in the right order - STAssertEqualObjects([@"this that+the other" gtm_stringByEscapingForURLArgument], @"this%20that%2Bthe%20other", @"- pluses and spaces should be different"); - // high char test - NSString *tester = [NSString stringWithUTF8String:"caf\xC3\xA9"]; - STAssertNotNil(tester, @"failed to create from utf8 run"); - STAssertEqualObjects([tester gtm_stringByEscapingForURLArgument], @"caf%C3%A9", @"- high chars should work"); -} - -- (void)testUnescaping { - // should be done already by the basic code - STAssertEqualObjects([@"this%20that" gtm_stringByUnescapingFromURLArgument], @"this that", @"- space should be unescaped"); - STAssertEqualObjects([@"this%22that" gtm_stringByUnescapingFromURLArgument], @"this\"that", @"- double quote should be unescaped"); - // make sure our additions are handled - STAssertEqualObjects([@"this%21that" gtm_stringByUnescapingFromURLArgument], @"this!that", @"- exclamation mark should be unescaped"); - STAssertEqualObjects([@"this%2Athat" gtm_stringByUnescapingFromURLArgument], @"this*that", @"- asterisk should be unescaped"); - STAssertEqualObjects([@"this%27that" gtm_stringByUnescapingFromURLArgument], @"this'that", @"- single quote should be unescaped"); - STAssertEqualObjects([@"this%28that" gtm_stringByUnescapingFromURLArgument], @"this(that", @"- left paren should be unescaped"); - STAssertEqualObjects([@"this%29that" gtm_stringByUnescapingFromURLArgument], @"this)that", @"- right paren should be unescaped"); - STAssertEqualObjects([@"this%3Bthat" gtm_stringByUnescapingFromURLArgument], @"this;that", @"- semi-colon should be unescaped"); - STAssertEqualObjects([@"this%3Athat" gtm_stringByUnescapingFromURLArgument], @"this:that", @"- colon should be unescaped"); - STAssertEqualObjects([@"this%40that" gtm_stringByUnescapingFromURLArgument], @"this@that", @"- at sign should be unescaped"); - STAssertEqualObjects([@"this%26that" gtm_stringByUnescapingFromURLArgument], @"this&that", @"- ampersand should be unescaped"); - STAssertEqualObjects([@"this%3Dthat" gtm_stringByUnescapingFromURLArgument], @"this=that", @"- equals should be unescaped"); - STAssertEqualObjects([@"this%2Bthat" gtm_stringByUnescapingFromURLArgument], @"this+that", @"- plus should be unescaped"); - STAssertEqualObjects([@"this%24that" gtm_stringByUnescapingFromURLArgument], @"this$that", @"- dollar-sign should be unescaped"); - STAssertEqualObjects([@"this%2Cthat" gtm_stringByUnescapingFromURLArgument], @"this,that", @"- comma should be unescaped"); - STAssertEqualObjects([@"this%2Fthat" gtm_stringByUnescapingFromURLArgument], @"this/that", @"- slash should be unescaped"); - STAssertEqualObjects([@"this%3Fthat" gtm_stringByUnescapingFromURLArgument], @"this?that", @"- question mark should be unescaped"); - STAssertEqualObjects([@"this%25that" gtm_stringByUnescapingFromURLArgument], @"this%that", @"- percent should be unescaped"); - STAssertEqualObjects([@"this%23that" gtm_stringByUnescapingFromURLArgument], @"this#that", @"- pound should be unescaped"); - STAssertEqualObjects([@"this%5Bthat" gtm_stringByUnescapingFromURLArgument], @"this[that", @"- left bracket should be unescaped"); - STAssertEqualObjects([@"this%5Dthat" gtm_stringByUnescapingFromURLArgument], @"this]that", @"- right bracket should be unescaped"); - // make sure a plus come back out as a space - STAssertEqualObjects([[NSString stringWithString:@"this+that"] gtm_stringByUnescapingFromURLArgument], @"this that", @"- plus should be unescaped"); - // make sure plus and %2B are handled in the right order - STAssertEqualObjects([@"this+that%2Bthe%20other" gtm_stringByUnescapingFromURLArgument], @"this that+the other", @"- pluses and spaces should be different"); - // high char test - NSString *tester = [NSString stringWithUTF8String:"caf\xC3\xA9"]; - STAssertNotNil(tester, @"failed to create from utf8 run"); - STAssertEqualObjects([[NSString stringWithString:@"caf%C3%A9"] gtm_stringByUnescapingFromURLArgument], tester, @"- high chars should work"); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.h deleted file mode 100644 index 6ef54d71..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// GTMNSString+XML.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - -/// Utilities for NSStrings containing XML -@interface NSString (GTMNSStringXMLAdditions) - -/// Get a string where characters that need escaping for XML are escaped and invalid characters removed -// -/// This call escapes '&', '<, '>', '\'', '"' per the xml spec and removes all -/// invalid characters as defined by Section 2.2 of the xml spec. -/// -/// For obvious reasons this call is only safe once. -// -// Returns: -// Autoreleased NSString -// -- (NSString *)gtm_stringBySanitizingAndEscapingForXML; - -/// Get a string where characters that invalid characters per the XML spec have been removed -// -/// This call removes all invalid characters as defined by Section 2.2 of the -/// xml spec. If you are writing XML yourself, you probably was to use the -/// above api (gtm_stringBySanitizingAndEscapingForXML) so any entities also -/// get escaped. -// -// Returns: -// Autoreleased NSString -// -- (NSString *)gtm_stringBySanitizingToXMLSpec; - -// There is no stringByUnescapingFromXML because the XML parser will do this. -// The above api is here just incase you need to create XML yourself. - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.m deleted file mode 100644 index 0e16ddba..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XML.m +++ /dev/null @@ -1,182 +0,0 @@ -// -// GTMNSString+XML.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import "GTMNSString+XML.h" -#import "GTMGarbageCollection.h" - -enum { - kGTMXMLCharModeEncodeQUOT = 0, - kGTMXMLCharModeEncodeAMP = 1, - kGTMXMLCharModeEncodeAPOS = 2, - kGTMXMLCharModeEncodeLT = 3, - kGTMXMLCharModeEncodeGT = 4, - kGTMXMLCharModeValid = 99, - kGTMXMLCharModeInvalid = 100, -}; -typedef NSUInteger GTMXMLCharMode; - -static NSString *gXMLEntityList[] = { - // this must match the above order - @""", - @"&", - @"'", - @"<", - @">", -}; - -GTM_INLINE GTMXMLCharMode XMLModeForUnichar(UniChar c) { - - // Per XML spec Section 2.2 Characters - // ( http://www.w3.org/TR/REC-xml/#charsets ) - // - // Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | - // [#x10000-#x10FFFF] - - if (c <= 0xd7ff) { - if (c >= 0x20) { - switch (c) { - case 34: - return kGTMXMLCharModeEncodeQUOT; - case 38: - return kGTMXMLCharModeEncodeAMP; - case 39: - return kGTMXMLCharModeEncodeAPOS; - case 60: - return kGTMXMLCharModeEncodeLT; - case 62: - return kGTMXMLCharModeEncodeGT; - default: - return kGTMXMLCharModeValid; - } - } else { - if (c == '\n') - return kGTMXMLCharModeValid; - if (c == '\r') - return kGTMXMLCharModeValid; - if (c == '\t') - return kGTMXMLCharModeValid; - return kGTMXMLCharModeInvalid; - } - } - - if (c < 0xE000) - return kGTMXMLCharModeInvalid; - - if (c <= 0xFFFD) - return kGTMXMLCharModeValid; - - // UniChar can't have the following values - // if (c < 0x10000) - // return kGTMXMLCharModeInvalid; - // if (c <= 0x10FFFF) - // return kGTMXMLCharModeValid; - - return kGTMXMLCharModeInvalid; -} // XMLModeForUnichar - - -static NSString *AutoreleasedCloneForXML(NSString *src, BOOL escaping) { - // - // NOTE: - // We don't use CFXMLCreateStringByEscapingEntities because it's busted in - // 10.3 (http://lists.apple.com/archives/Cocoa-dev/2004/Nov/msg00059.html) and - // it doesn't do anything about the chars that are actually invalid per the - // xml spec. - // - - // we can't use the CF call here because it leaves the invalid chars - // in the string. - NSUInteger length = [src length]; - if (!length) { - return src; - } - - NSMutableString *finalString = [NSMutableString string]; - - // this block is common between GTMNSString+HTML and GTMNSString+XML but - // it's so short that it isn't really worth trying to share. - const UniChar *buffer = CFStringGetCharactersPtr((CFStringRef)src); - if (!buffer) { - // We want this buffer to be autoreleased. - NSMutableData *data = [NSMutableData dataWithLength:length * sizeof(UniChar)]; - if (!data) { - // COV_NF_START - Memory fail case - _GTMDevLog(@"couldn't alloc buffer"); - return nil; - // COV_NF_END - } - [src getCharacters:[data mutableBytes]]; - buffer = [data bytes]; - } - - const UniChar *goodRun = buffer; - NSUInteger goodRunLength = 0; - - for (NSUInteger i = 0; i < length; ++i) { - - GTMXMLCharMode cMode = XMLModeForUnichar(buffer[i]); - - // valid chars go as is, and if we aren't doing entities, then - // everything goes as is. - if ((cMode == kGTMXMLCharModeValid) || - (!escaping && (cMode != kGTMXMLCharModeInvalid))) { - // goes as is - goodRunLength += 1; - } else { - // it's something we have to encode or something invalid - - // start by adding what we already collected (if anything) - if (goodRunLength) { - CFStringAppendCharacters((CFMutableStringRef)finalString, - goodRun, - goodRunLength); - goodRunLength = 0; - } - - // if it wasn't invalid, add the encoded version - if (cMode != kGTMXMLCharModeInvalid) { - // add this encoded - [finalString appendString:gXMLEntityList[cMode]]; - } - - // update goodRun to point to the next UniChar - goodRun = buffer + i + 1; - } - } - - // anything left to add? - if (goodRunLength) { - CFStringAppendCharacters((CFMutableStringRef)finalString, - goodRun, - goodRunLength); - } - return finalString; -} // AutoreleasedCloneForXML - -@implementation NSString (GTMNSStringXMLAdditions) - -- (NSString *)gtm_stringBySanitizingAndEscapingForXML { - return AutoreleasedCloneForXML(self, YES); -} // gtm_stringBySanitizingAndEscapingForXML - -- (NSString *)gtm_stringBySanitizingToXMLSpec { - return AutoreleasedCloneForXML(self, NO); -} // gtm_stringBySanitizingToXMLSpec - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XMLTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XMLTest.m deleted file mode 100644 index 4788690f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMNSString+XMLTest.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// GTMNSString+XMLTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - - -#import "GTMSenTestCase.h" -#import "GTMNSString+XML.h" - - -@interface GTMNSString_XMLTest : GTMTestCase -@end - -@implementation GTMNSString_XMLTest - -- (void)testStringBySanitizingAndEscapingForXML { - // test the substitutions cases - UniChar chars[] = { - 'z', 0, 'z', 1, 'z', 4, 'z', 5, 'z', 34, 'z', 38, 'z', 39, 'z', - 60, 'z', 62, 'z', ' ', 'z', 0xd800, 'z', 0xDFFF, 'z', 0xE000, - 'z', 0xFFFE, 'z', 0xFFFF, 'z', '\n', 'z', '\r', 'z', '\t', 'z' }; - - NSString *string1 = [NSString stringWithCharacters:chars - length:sizeof(chars) / sizeof(UniChar)]; - NSString *string2 = - [NSString stringWithFormat:@"zzzzz"z&z'z<z>z zzz%Czzz\nz\rz\tz", - 0xE000]; - - STAssertEqualObjects([string1 gtm_stringBySanitizingAndEscapingForXML], - string2, - @"Sanitize and Escape for XML failed"); - - // force the backing store of the NSString to test extraction paths - char ascBuffer[] = "a\01bcde\nf"; - NSString *ascString = - [[[NSString alloc] initWithBytesNoCopy:ascBuffer - length:sizeof(ascBuffer) / sizeof(char) - encoding:NSASCIIStringEncoding - freeWhenDone:NO] autorelease]; - STAssertEqualObjects([ascString gtm_stringBySanitizingAndEscapingForXML], - @"abcde\nf", - @"Sanitize and Escape for XML from asc buffer failed"); - - // test empty string - STAssertEqualObjects([@"" gtm_stringBySanitizingAndEscapingForXML], @"", nil); -} - -- (void)testStringBySanitizingToXMLSpec { - // test the substitutions cases - UniChar chars[] = { - 'z', 0, 'z', 1, 'z', 4, 'z', 5, 'z', 34, 'z', 38, 'z', 39, 'z', - 60, 'z', 62, 'z', ' ', 'z', 0xd800, 'z', 0xDFFF, 'z', 0xE000, - 'z', 0xFFFE, 'z', 0xFFFF, 'z', '\n', 'z', '\r', 'z', '\t', 'z' }; - - NSString *string1 = [NSString stringWithCharacters:chars - length:sizeof(chars) / sizeof(UniChar)]; - NSString *string2 = - [NSString stringWithFormat:@"zzzzz\"z&z'zz zzz%Czzz\nz\rz\tz", - 0xE000]; - - STAssertEqualObjects([string1 gtm_stringBySanitizingToXMLSpec], - string2, - @"Sanitize for XML failed"); - - // force the backing store of the NSString to test extraction paths - char ascBuffer[] = "a\01bcde\nf"; - NSString *ascString = - [[[NSString alloc] initWithBytesNoCopy:ascBuffer - length:sizeof(ascBuffer) / sizeof(char) - encoding:NSASCIIStringEncoding - freeWhenDone:NO] autorelease]; - STAssertEqualObjects([ascString gtm_stringBySanitizingToXMLSpec], - @"abcde\nf", - @"Sanitize and Escape for XML from asc buffer failed"); - - // test empty string - STAssertEqualObjects([@"" gtm_stringBySanitizingToXMLSpec], @"", nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.h deleted file mode 100644 index 2c258419..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// GTMObjC2Runtime.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// These functions exist for code that we want to compile on both the < 10.5 -// sdks and on the >= 10.5 sdks without warnings. It basically reimplements -// certain parts of the objc2 runtime in terms of the objc1 runtime. It is not -// a complete implementation as I've only implemented the routines I know we -// use. Feel free to add more as necessary. -// These functions are not documented because they conform to the documentation -// for the ObjC2 Runtime. - -#if OBJC_API_VERSION >= 2 // Only have optional and req'd keywords in ObjC2. -#define AT_OPTIONAL @optional -#define AT_REQUIRED @required -#else -#define AT_OPTIONAL -#define AT_REQUIRED -#endif - -// The file objc-runtime.h was moved to runtime.h and in Leopard, objc-runtime.h -// was just a wrapper around runtime.h. For the iPhone SDK, this objc-runtime.h -// is removed in the iPhoneOS2.0 SDK. -// -// The |Object| class was removed in the iPhone2.0 SDK too. -#if GTM_IPHONE_SDK -#import -#else -#import -#import -#endif - -#import - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -#import "objc/Protocol.h" - -OBJC_EXPORT Class object_getClass(id obj); -OBJC_EXPORT const char *class_getName(Class cls); -OBJC_EXPORT BOOL class_conformsToProtocol(Class cls, Protocol *protocol); -OBJC_EXPORT Class class_getSuperclass(Class cls); -OBJC_EXPORT Method *class_copyMethodList(Class cls, unsigned int *outCount); -OBJC_EXPORT SEL method_getName(Method m); -OBJC_EXPORT void method_exchangeImplementations(Method m1, Method m2); -OBJC_EXPORT IMP method_getImplementation(Method method); -OBJC_EXPORT IMP method_setImplementation(Method method, IMP imp); -OBJC_EXPORT struct objc_method_description protocol_getMethodDescription(Protocol *p, - SEL aSel, - BOOL isRequiredMethod, - BOOL isInstanceMethod); - -// If building for 10.4 but using the 10.5 SDK, don't include these. -#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 -// atomics -// On Leopard these are GC aware -// Intentionally did not include the non-barrier versions, because I couldn't -// come up with a case personally where you wouldn't want to use the -// barrier versions. -GTM_INLINE bool OSAtomicCompareAndSwapPtrBarrier(void *predicate, - void *replacement, - volatile void *theValue) { -#if defined(__LP64__) && __LP64__ - return OSAtomicCompareAndSwap64Barrier((int64_t)predicate, - (int64_t)replacement, - (int64_t *)theValue); -#else // defined(__LP64__) && __LP64__ - return OSAtomicCompareAndSwap32Barrier((int32_t)predicate, - (int32_t)replacement, - (int32_t *)theValue); -#endif // defined(__LP64__) && __LP64__ -} - -GTM_INLINE BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate, - id replacement, - volatile id *objectLocation) { - return OSAtomicCompareAndSwapPtrBarrier(predicate, - replacement, - objectLocation); -} -GTM_INLINE BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate, - id replacement, - volatile id *objectLocation) { - return OSAtomicCompareAndSwapPtrBarrier(predicate, - replacement, - objectLocation); -} -#endif - -#endif // OBJC2_UNAVAILABLE diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.m deleted file mode 100644 index 98356549..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2Runtime.m +++ /dev/null @@ -1,156 +0,0 @@ -// -// GTMObjC2Runtime.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMObjC2Runtime.h" - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -#import -#import - -Class object_getClass(id obj) { - if (!obj) return NULL; - return obj->isa; -} - -const char *class_getName(Class cls) { - if (!cls) return "nil"; - return cls->name; -} - -BOOL class_conformsToProtocol(Class cls, Protocol *protocol) { - // We intentionally don't check cls as it crashes on Leopard so we want - // to crash on Tiger as well. - // I logged - // Radar 5572978 class_conformsToProtocol crashes when arg1 is passed as nil - // because it seems odd that this API won't accept nil for cls considering - // all the other apis will accept nil args. - // If this does get fixed, remember to enable the unit tests. - if (!protocol) return NO; - - struct objc_protocol_list *protos; - for (protos = cls->protocols; protos != NULL; protos = protos->next) { - for (long i = 0; i < protos->count; i++) { - if ([protos->list[i] conformsTo:protocol]) { - return YES; - } - } - } - return NO; -} - -Class class_getSuperclass(Class cls) { - if (!cls) return NULL; - return cls->super_class; -} - -Method *class_copyMethodList(Class cls, unsigned int *outCount) { - if (!cls) return NULL; - - unsigned int count = 0; - void *iterator = NULL; - struct objc_method_list *mlist; - Method *methods = NULL; - if (outCount) *outCount = 0; - - while ( (mlist = class_nextMethodList(cls, &iterator)) ) { - if (mlist->method_count == 0) continue; - methods = (Method *)realloc(methods, - sizeof(Method) * (count + mlist->method_count + 1)); - if (!methods) { - //Memory alloc failed, so what can we do? - return NULL; // COV_NF_LINE - } - for (int i = 0; i < mlist->method_count; i++) { - methods[i + count] = &mlist->method_list[i]; - } - count += mlist->method_count; - } - - // List must be NULL terminated - if (methods) { - methods[count] = NULL; - } - if (outCount) *outCount = count; - return methods; -} - -SEL method_getName(Method method) { - if (!method) return NULL; - return method->method_name; -} - -IMP method_getImplementation(Method method) { - if (!method) return NULL; - return method->method_imp; -} - -IMP method_setImplementation(Method method, IMP imp) { - // We intentionally don't test method for nil. - // Leopard fails here, so should we. - // I logged this as Radar: - // 5572981 method_setImplementation crashes if you pass nil for the - // method arg (arg 1) - // because it seems odd that this API won't accept nil for method considering - // all the other apis will accept nil args. - // If this does get fixed, remember to enable the unit tests. - // This method works differently on SnowLeopard than - // on Leopard. If you pass in a nil for IMP on SnowLeopard - // it doesn't change anything. On Leopard it will. Since - // attempting to change a sel to nil is probably an error - // we follow the SnowLeopard way of doing things. - IMP oldImp = NULL; - if (imp) { - oldImp = method->method_imp; - method->method_imp = imp; - } - return oldImp; -} - -void method_exchangeImplementations(Method m1, Method m2) { - if (m1 == m2) return; - if (!m1 || !m2) return; - IMP imp2 = method_getImplementation(m2); - IMP imp1 = method_setImplementation(m1, imp2); - method_setImplementation(m2, imp1); -} - -struct objc_method_description protocol_getMethodDescription(Protocol *p, - SEL aSel, - BOOL isRequiredMethod, - BOOL isInstanceMethod) { - struct objc_method_description *descPtr = NULL; - // No such thing as required in ObjC1. - if (isInstanceMethod) { - descPtr = [p descriptionForInstanceMethod:aSel]; - } else { - descPtr = [p descriptionForClassMethod:aSel]; - } - - struct objc_method_description desc; - if (descPtr) { - desc = *descPtr; - } else { - bzero(&desc, sizeof(desc)); - } - return desc; -} - - -#endif - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2RuntimeTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2RuntimeTest.m deleted file mode 100644 index 7344a0f8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjC2RuntimeTest.m +++ /dev/null @@ -1,424 +0,0 @@ -// -// GTMObjC2RuntimeTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMObjC2Runtime.h" -#import "GTMSenTestCase.h" -#import "GTMSystemVersion.h" - - - -#import - -@protocol GTMObjC2Runtime_TestProtocol -@end - -@protocol GTMObjC2Runtime_Test2Protocol -AT_OPTIONAL -- (NSString*)optional; -AT_REQUIRED -- (NSString*)required; -AT_OPTIONAL -+ (NSString*)class_optional; -AT_REQUIRED -+ (NSString*)class_required; -@end - -@interface GTMObjC2RuntimeTest : GTMTestCase { - Class cls_; -} -@end - -@interface GTMObjC2Runtime_TestClass : NSObject -- (NSString*)kwyjibo; - -@end - -@interface GTMObjC2Runtime_TestClass (GMObjC2Runtime_TestClassCategory) -- (NSString*)eatMyShorts; -@end - -@implementation GTMObjC2Runtime_TestClass - -+ (NSString*)dontHaveACow { - return @"dontHaveACow"; -} - -- (NSString*)kwyjibo { - return @"kwyjibo"; -} -@end - -@implementation GTMObjC2Runtime_TestClass (GMObjC2Runtime_TestClassCategory) -- (NSString*)eatMyShorts { - return @"eatMyShorts"; -} - -+ (NSString*)brokeHisBrain { - return @"brokeHisBrain"; -} - -@end - -@interface GTMObjC2NotificationWatcher : NSObject -@end - -@implementation GTMObjC2NotificationWatcher -- (id)init { - if ((self = [super init])) { - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - // We release ourselves when we are notified. - [self retain]; - [nc addObserver:self - selector:@selector(startedTest:) - name:SenTestSuiteDidStartNotification - object:nil]; - - } - return self; -} - -- (void)startedTest:(NSNotification *)notification { - // Logs if we are testing on Tiger or Leopard runtime. - NSString *testName = [(SenTest*)[[notification object] test] name]; - NSString *className = NSStringFromClass([GTMObjC2RuntimeTest class]); - if ([testName isEqualToString:className]) { - NSString *runtimeString; -#ifndef OBJC2_UNAVAILABLE - runtimeString = @"ObjC1"; -#else - runtimeString = @"ObjC2"; -#endif - NSLog(@"Running GTMObjC2RuntimeTests using %@ runtime.", runtimeString); - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc removeObserver:self]; - [self autorelease]; - } -} -@end - -@implementation GTMObjC2RuntimeTest - -+ (void)initialize { - // This allows us to track which runtime we are actually testing. - [[[GTMObjC2NotificationWatcher alloc] init] autorelease]; -} - -- (void)setUp { - cls_ = [[GTMObjC2Runtime_TestClass class] retain]; -} - -- (void)tearDown { - [cls_ release]; -} - -- (void)test_object_getClass { - // Nil Checks - STAssertNil(object_getClass(nil), nil); - - // Standard use check - GTMObjC2Runtime_TestClass *test = [[[cls_ alloc] init] autorelease]; - Class cls = object_getClass(test); - STAssertEqualObjects(cls, cls_, nil); -} - -- (void)test_class_getName { - // Nil Checks - const char *name = class_getName(nil); - STAssertEqualCStrings(name, "nil", nil); - - // Standard use check - STAssertEqualCStrings(class_getName(cls_), "GTMObjC2Runtime_TestClass", nil); -} - -- (void)test_class_conformsToProtocol { - // Nil Checks - STAssertFalse(class_conformsToProtocol(cls_, @protocol(NSObject)), nil); - STAssertFalse(class_conformsToProtocol(cls_, nil), nil); - // The following two tests intentionally commented out as they fail on - // Leopard with a crash, so we fail on Tiger intentionally as well. - // STAssertFalse(class_conformsToProtocol(nil, @protocol(NSObject)), nil); - // STAssertFalse(class_conformsToProtocol(nil, nil), nil); - - // Standard use check - STAssertTrue(class_conformsToProtocol(cls_, - @protocol(GTMObjC2Runtime_TestProtocol)), - nil); -} - -- (void)test_class_getSuperclass { - // Nil Checks - STAssertNil(class_getSuperclass(nil), nil); - - // Standard use check - STAssertEqualObjects(class_getSuperclass(cls_), [NSObject class], nil); -} - -- (void)test_class_copyMethodList { - // Nil Checks - Method *list = class_copyMethodList(nil, nil); - STAssertNULL(list, nil); - - // Standard use check - list = class_copyMethodList(cls_, nil); - STAssertNotNULL(list, nil); - free(list); - unsigned int count = 0; - list = class_copyMethodList(cls_, &count); - STAssertNotNULL(list, nil); - STAssertEquals(count, 2U, nil); - STAssertNULL(list[count], nil); - free(list); - - // Now test meta class - count = 0; - list = class_copyMethodList((Class)objc_getMetaClass(class_getName(cls_)), - &count); - STAssertNotNULL(list, nil); - STAssertEquals(count, 2U, nil); - STAssertNULL(list[count], nil); - free(list); -} - -- (void)test_method_getName { - // Nil Checks - STAssertNULL(method_getName(nil), nil); - - // Standard use check - Method *list = class_copyMethodList(cls_, nil); - STAssertNotNULL(list, nil); - const char* selName1 = sel_getName(method_getName(list[0])); - const char* selName2 = sel_getName(@selector(kwyjibo)); - const char* selName3 = sel_getName(@selector(eatMyShorts)); - BOOL isGood = ((strcmp(selName1, selName2)) == 0 || (strcmp(selName1, selName3) == 0)); - STAssertTrue(isGood, nil); - free(list); -} - -- (void)test_method_exchangeImplementations { - // nil checks - method_exchangeImplementations(nil, nil); - - // Standard use check - GTMObjC2Runtime_TestClass *test = [[GTMObjC2Runtime_TestClass alloc] init]; - STAssertNotNil(test, nil); - - // Get initial values - NSString *val1 = [test kwyjibo]; - STAssertNotNil(val1, nil); - NSString *val2 = [test eatMyShorts]; - STAssertNotNil(val2, nil); - NSString *val3 = [GTMObjC2Runtime_TestClass dontHaveACow]; - STAssertNotNil(val3, nil); - NSString *val4 = [GTMObjC2Runtime_TestClass brokeHisBrain]; - STAssertNotNil(val4, nil); - - // exchange the imps - Method *list = class_copyMethodList(cls_, nil); - STAssertNotNULL(list, nil); - method_exchangeImplementations(list[0], list[1]); - - // test against initial values - NSString *val5 = [test kwyjibo]; - STAssertNotNil(val5, nil); - NSString *val6 = [test eatMyShorts]; - STAssertNotNil(val6, nil); - STAssertEqualStrings(val1, val6, nil); - STAssertEqualStrings(val2, val5, nil); - - // Check that other methods not affected - STAssertEqualStrings([GTMObjC2Runtime_TestClass dontHaveACow], val3, nil); - STAssertEqualStrings([GTMObjC2Runtime_TestClass brokeHisBrain], val4, nil); - - // exchange the imps back - method_exchangeImplementations(list[0], list[1]); - - // and test against initial values again - NSString *val7 = [test kwyjibo]; - STAssertNotNil(val7, nil); - NSString *val8 = [test eatMyShorts]; - STAssertNotNil(val8, nil); - STAssertEqualStrings(val1, val7, nil); - STAssertEqualStrings(val2, val8, nil); - - method_exchangeImplementations(list[0], nil); - method_exchangeImplementations(nil, list[0]); - - val7 = [test kwyjibo]; - STAssertNotNil(val7, nil); - val8 = [test eatMyShorts]; - STAssertNotNil(val8, nil); - STAssertEqualStrings(val1, val7, nil); - STAssertEqualStrings(val2, val8, nil); - - free(list); - [test release]; -} - -- (void)test_method_getImplementation { - // Nil Checks - STAssertNULL(method_getImplementation(nil), nil); - - // Standard use check - Method *list = class_copyMethodList(cls_, nil); - STAssertNotNULL(list, nil); - STAssertNotNULL(method_getImplementation(list[0]), nil); - free(list); -} - -- (void)test_method_setImplementation { - // Standard use check - GTMObjC2Runtime_TestClass *test = [[GTMObjC2Runtime_TestClass alloc] init]; - Method *list = class_copyMethodList(cls_, nil); - - // Get initial value - NSString *str1 = objc_msgSend(test, method_getName(list[0])); - STAssertNotNil(str1, nil); - - // set the imp to something else - IMP oldImp = method_setImplementation(list[0], method_getImplementation(list[1])); - STAssertNotNULL(oldImp, nil); - - // make sure they are different - NSString *str2 = objc_msgSend(test,method_getName(list[0])); - STAssertNotNil(str2, nil); - STAssertNotEqualStrings(str1, str2, nil); - - // reset the imp - IMP newImp = method_setImplementation(list[0], oldImp); - STAssertNotEquals(oldImp, newImp, nil); - - // test nils - // Apparently it was a bug that we could call setImplementation with a nil - // so we now test to make sure that setting to nil works as expected on - // all systems. -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - // Built for less then leopard gives us the behaviors we defined... - // (doesn't take nil) - IMP nullImp = method_setImplementation(list[0], nil); - STAssertNULL(nullImp, nil); - IMP testImp = method_setImplementation(list[0], newImp); - STAssertEquals(testImp, oldImp, nil); -#else - // Built for leopard or later means we get the os runtime behavior... - if ([GTMSystemVersion isLeopard]) { - // (takes nil) - oldImp = method_setImplementation(list[0], nil); - STAssertNotNULL(oldImp, nil); - newImp = method_setImplementation(list[0], oldImp); - STAssertNULL(newImp, nil); - } else { - // (doesn't take nil) - IMP nullImp = method_setImplementation(list[0], nil); - STAssertNULL(nullImp, nil); - IMP testImp = method_setImplementation(list[0], newImp); - STAssertEquals(testImp, oldImp, nil); - } -#endif - - // This case intentionally not tested. Passing nil to method_setImplementation - // on Leopard crashes. It does on Tiger as well. Half works on SnowLeopard. - // We made our Tiger implementation the same as the SnowLeopard - // implementation. - // Logged as radar 5572981. - if (![GTMSystemVersion isLeopard]) { - STAssertNULL(method_setImplementation(nil, nil), nil); - } - if ([GTMSystemVersion isBuildGreaterThan:kGTMSystemBuild10_6_0_WWDC]) { - STAssertNULL(method_setImplementation(nil, newImp), nil); - } - - [test release]; - free(list); -} - -- (void)test_protocol_getMethodDescription { - // Check nil cases - struct objc_method_description desc = protocol_getMethodDescription(nil, nil, - YES, YES); - STAssertNULL(desc.name, nil); - desc = protocol_getMethodDescription(nil, @selector(optional), YES, YES); - STAssertNULL(desc.name, nil); - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - nil, YES, YES); - STAssertNULL(desc.name, nil); - - // Instance Methods - // Check Required case. Only OBJC2 supports required. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(optional), YES, YES); -#if OBJC_API_VERSION >= 2 - STAssertNULL(desc.name, nil); -#else - STAssertNotNULL(desc.name, nil); -#endif - - // Check Required case. Only OBJC2 supports required. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(required), YES, YES); - - STAssertNotNULL(desc.name, nil); - - // Check Optional case. Only OBJC2 supports optional. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(optional), NO, YES); - - STAssertNotNULL(desc.name, nil); - - // Check Optional case. Only OBJC2 supports optional. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(required), NO, YES); -#if OBJC_API_VERSION >= 2 - STAssertNULL(desc.name, nil); -#else - STAssertNotNULL(desc.name, nil); -#endif - - // Class Methods - // Check Required case. Only OBJC2 supports required. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(class_optional), YES, NO); -#if OBJC_API_VERSION >= 2 - STAssertNULL(desc.name, nil); -#else - STAssertNotNULL(desc.name, nil); -#endif - - // Check Required case. Only OBJC2 supports required. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(class_required), YES, NO); - - STAssertNotNULL(desc.name, nil); - - // Check Optional case. Only OBJC2 supports optional. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(class_optional), NO, NO); - - STAssertNotNULL(desc.name, nil); - - // Check Optional case. Only OBJC2 supports optional. - desc = protocol_getMethodDescription(@protocol(GTMObjC2Runtime_Test2Protocol), - @selector(class_required), NO, NO); -#if OBJC_API_VERSION >= 2 - STAssertNULL(desc.name, nil); -#else - STAssertNotNULL(desc.name, nil); -#endif - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjectSingleton.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjectSingleton.h deleted file mode 100644 index 4763b687..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMObjectSingleton.h +++ /dev/null @@ -1,71 +0,0 @@ -// -// GTMObjectSingleton.h -// Macro to implement methods for a singleton -// -// Copyright 2005-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" - -/// This macro implements the various methods needed to make a safe singleton. -// -/// This Singleton pattern was taken from: -/// http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html -/// -/// Sample usage: -/// -/// GTMOBJECT_SINGLETON_BOILERPLATE(SomeUsefulManager, sharedSomeUsefulManager) -/// (with no trailing semicolon) -/// -#define GTMOBJECT_SINGLETON_BOILERPLATE(_object_name_, _shared_obj_name_) \ -static _object_name_ *z##_shared_obj_name_ = nil; \ -+ (_object_name_ *)_shared_obj_name_ { \ - @synchronized(self) { \ - if (z##_shared_obj_name_ == nil) { \ - /* Note that 'self' may not be the same as _object_name_ */ \ - /* first assignment done in allocWithZone but we must reassign in case init fails */ \ - z##_shared_obj_name_ = [[self alloc] init]; \ - _GTMDevAssert((z##_shared_obj_name_ != nil), @"didn't catch singleton allocation"); \ - } \ - } \ - return z##_shared_obj_name_; \ -} \ -+ (id)allocWithZone:(NSZone *)zone { \ - @synchronized(self) { \ - if (z##_shared_obj_name_ == nil) { \ - z##_shared_obj_name_ = [super allocWithZone:zone]; \ - return z##_shared_obj_name_; \ - } \ - } \ - \ - /* We can't return the shared instance, because it's been init'd */ \ - _GTMDevAssert(NO, @"use the singleton API, not alloc+init"); \ - return nil; \ -} \ -- (id)retain { \ - return self; \ -} \ -- (NSUInteger)retainCount { \ - return NSUIntegerMax; \ -} \ -- (void)release { \ -} \ -- (id)autorelease { \ - return self; \ -} \ -- (id)copyWithZone:(NSZone *)zone { \ - return self; \ -} \ - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.h deleted file mode 100644 index 6ac2347d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.h +++ /dev/null @@ -1,132 +0,0 @@ -// -// GTMPath.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - - -// GTMPath -// -// This class represents a single, absolute file system path. The represented -// path must exist at the time of creation. This class also allows you to easily -// create new paths (or full hierarchies) based on existing GTMPath instances. -// -// Given a GTMPath instance, new files and directories can be created inside -// that path providing the instance refers to a directory. It is an error to try -// to create a file/directory from a GTMPath that represents a file (this should -// be common sense: clearly mkdir /etc/passwd/foo won't work). -// -// === Examples === -// -// 1. This sample creates a GTMPath that references /tmp, then gets the -// attributes for that directory. -// -// GTMPath *tmp = [GTMPath pathWithFullPath:@"/tmp"]; -// NSDictionary *attr = [tmp attributes]; -// -// -// 2. This sample creates a new directory inside /tmp named "foo". -// -// GTMPath *tmp = [GTMPath pathWithFullPath:@"/tmp"]; -// GTMPath *foo = [tmp createDirectoryName:@"foo" mode:0755]; -// -// -// 3. This sample creates a GTMPath instance that represents a user's ~/Library -// folder. -// -// GTMPath *library = [GTMPath pathWithFullPath:@"/Users/bob/Library"]; -// ... -// -// -// 4. This sample creates a directory hierarchy, where each level has its own -// mode. Notice that the return value from these -create* methods is the -// GTMPath that was just created. This allows these creation calls to be -// chained together enabling easy creation of directory hierarchies. -// This is one of the big benefits of this class. -// -// GTMPath *tmp = [GTMPath pathWithFullPath:@"/tmp"]; -// GTMPath *baz = [[[tmp createDirectoryName:@"foo" mode:0755] -// createDirectoryName:@"bar" mode:0756] -// createDirectoryName:@"baz" mode:0757]; -// -@interface GTMPath : NSObject { - @private - NSString *fullPath_; -} - -// Returns a GTMPath instance that represents the full path specified by -// |fullPath|. Note that |fullPath| MUST be an absolute path. -+ (id)pathWithFullPath:(NSString *)fullPath; - -// Returns a GTMPath instance that represents the full path specified by -// |fullPath|. Note that |fullPath| MUST be an absolute path. This method is the -// designated initializer. -- (id)initWithFullPath:(NSString *)fullPath; - -// Returns the name of this GTMPath instance. This is not the full path. It is -// just the component name of this GTMPath instance. This is equivalent to -// the Unix basename(3) function. -- (NSString *)name; - -// Returns this path's parent GTMPath. This method will ONLY (and always) return -// nil when |name| is "/". In otherwords, parent will be nil IFF this GTMPath -// instance represents the root path, because "/" doesn't really have a parent. -- (GTMPath *)parent; - -// Returns YES if this GTMPath represents a directory. -- (BOOL)isDirectory; - -// Returns YES if this GTMPath instance represents the root path "/". -- (BOOL)isRoot; - -// Returns the file system attributes of the path represented by this GTMPath -// instance. See -[NSFileManager fileAttributesAtPath:...] for details. -- (NSDictionary *)attributes; - -// Returns a string representation of the absolute path represented by this -// GTMPath instance. -- (NSString *)fullPath; - -@end - - -// Methods for creating files and directories inside a GTMPath instance. These -// methods are only allowed to be called on GTMPath instances that represent -// directories. See the NSFileManager documentation for details about the -// |attributes| parameters. -@interface GTMPath (GTMPathGeneration) - -// Creates a new directory with the specified mode or attributes inside the -// current GTMPath instance. If the creation is successful, a GTMPath for the -// newly created directory is returned. Otherwise, nil is returned. -- (GTMPath *)createDirectoryName:(NSString *)name mode:(mode_t)mode; -- (GTMPath *)createDirectoryName:(NSString *)name - attributes:(NSDictionary *)attributes; - -// Creates a new file with the specified mode or attributes inside the -// current GTMPath instance. If the creation is successful, a GTMPath for the -// newly created file is returned. Otherwise, nil is returned. |data| is the -// data to put in the file when created. -- (GTMPath *)createFileName:(NSString *)name mode:(mode_t)mode; -- (GTMPath *)createFileName:(NSString *)name - attributes:(NSDictionary *)attributes; -- (GTMPath *)createFileName:(NSString *)name - attributes:(NSDictionary *)attributes - data:(NSData *)data; - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.m deleted file mode 100644 index 28ffad07..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPath.m +++ /dev/null @@ -1,156 +0,0 @@ -// -// GTMPath.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMPath.h" - - -@implementation GTMPath - -+ (id)pathWithFullPath:(NSString *)fullPath { - return [[[self alloc] initWithFullPath:fullPath] autorelease]; -} - -- (id)init { - return [self initWithFullPath:nil]; -} - -- (id)initWithFullPath:(NSString *)fullPath { - if ((self = [super init])) { - fullPath_ = [fullPath copy]; - if (![fullPath_ isAbsolutePath] || [self attributes] == nil) { - [self release]; - return nil; - } - } - - return self; -} - -- (void)dealloc { - [fullPath_ release]; - [super dealloc]; -} - -- (NSString *)description { - return [self fullPath]; -} - -- (NSString *)name { - return [fullPath_ lastPathComponent]; -} - -- (GTMPath *)parent { - if ([self isRoot]) return nil; - NSString *parentPath = [fullPath_ stringByDeletingLastPathComponent]; - return [[self class] pathWithFullPath:parentPath]; -} - -- (BOOL)isDirectory { - BOOL isDir = NO; - BOOL exists = [[NSFileManager defaultManager] - fileExistsAtPath:fullPath_ isDirectory:&isDir]; - return exists && isDir; -} - -- (BOOL)isRoot { - return [fullPath_ isEqualToString:@"/"]; -} - -- (NSDictionary *)attributes { - return [[NSFileManager defaultManager] - fileAttributesAtPath:fullPath_ - traverseLink:YES]; -} - -- (NSString *)fullPath { - return [[fullPath_ copy] autorelease]; -} - -@end - - -@implementation GTMPath (GTMPathGeneration) - -- (GTMPath *)createDirectoryName:(NSString *)name mode:(mode_t)mode { - NSDictionary *attributes = - [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:mode] - forKey:NSFilePosixPermissions]; - return [self createDirectoryName:name attributes:attributes]; -} - -- (GTMPath *)createDirectoryName:(NSString *)name - attributes:(NSDictionary *)attributes { - if ([name length] == 0) return nil; - - // We first check to see if the requested directory alread exists by trying - // to create a GTMPath from the desired new path string. Only if the path - // doesn't already exist do we attempt to create it. If the path already - // exists, we will end up returning a GTMPath for the pre-existing path. - NSString *newPath = [fullPath_ stringByAppendingPathComponent:name]; - GTMPath *nascentPath = [GTMPath pathWithFullPath:newPath]; - if (nascentPath != nil && ![nascentPath isDirectory]) { - return nil; // Return nil because the path exists, but it's not a dir - } - - if (nascentPath == nil) { - BOOL created = [[NSFileManager defaultManager] - createDirectoryAtPath:newPath - attributes:attributes]; - nascentPath = created ? [GTMPath pathWithFullPath:newPath] : nil; - } - - return nascentPath; -} - -- (GTMPath *)createFileName:(NSString *)name mode:(mode_t)mode { - NSDictionary *attributes = - [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:mode] - forKey:NSFilePosixPermissions]; - return [self createFileName:name attributes:attributes]; -} - -- (GTMPath *)createFileName:(NSString *)name - attributes:(NSDictionary *)attributes { - return [self createFileName:name attributes:attributes data:[NSData data]]; -} - -- (GTMPath *)createFileName:(NSString *)name - attributes:(NSDictionary *)attributes - data:(NSData *)data { - if ([name length] == 0) return nil; - - // See createDirectoryName:attribute: for some high-level notes about what and - // why this method does what it does. - NSString *newPath = [fullPath_ stringByAppendingPathComponent:name]; - GTMPath *nascentPath = [GTMPath pathWithFullPath:newPath]; - if (nascentPath != nil && [nascentPath isDirectory]) { - return nil; // Return nil because the path exists, but it's a dir - } - - if (nascentPath == nil) { - BOOL created = [[NSFileManager defaultManager] - createFileAtPath:newPath - contents:data - attributes:attributes]; - nascentPath = created ? [GTMPath pathWithFullPath:newPath] : nil; - } - - return nascentPath; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPathTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPathTest.m deleted file mode 100644 index 211206cb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMPathTest.m +++ /dev/null @@ -1,236 +0,0 @@ -// -// GTMPathTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMPath.h" -#import "GTMUnitTestDevLog.h" - - -@interface GTMPathTest : GTMTestCase { - @private - NSString *testDirectory_; -} -@end - -@implementation GTMPathTest - -- (void)setUp { - NSString *tmp = NSTemporaryDirectory(); - STAssertNotNil(tmp, nil); - - testDirectory_ = [[tmp stringByAppendingPathComponent:@"GTMPathTest"] retain]; - STAssertNotNil(testDirectory_, nil); - - BOOL created = [[NSFileManager defaultManager] - createDirectoryAtPath:testDirectory_ - attributes:nil]; - STAssertTrue(created, nil); -} - -- (void)tearDown { - // Make sure it's safe to remove this directory before nuking it. - STAssertNotNil(testDirectory_, nil); - STAssertNotEqualObjects(testDirectory_, @"/", nil); -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - [[NSFileManager defaultManager] removeFileAtPath:testDirectory_ handler:nil]; -#else - [[NSFileManager defaultManager] removeItemAtPath:testDirectory_ error:NULL]; -#endif - [testDirectory_ release]; -} - -- (void)testBasicCreation { - GTMPath *path = nil; - - path = [[[GTMPath alloc] init] autorelease]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"/"]; - STAssertNotNil(path, nil); - STAssertNil([path parent], nil); - STAssertTrue([path isRoot], nil); - STAssertTrue([path isDirectory], nil); - STAssertEqualObjects([path name], @"/", nil); - STAssertEqualObjects([path fullPath], @"/", nil); -} - -- (void)testRecursiveInitialization { - GTMPath *path = nil; - - path = [GTMPath pathWithFullPath:nil]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@""]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"etc"]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"/"]; - STAssertNotNil(path, nil); - STAssertNil([path parent], nil); - STAssertTrue([path isRoot], nil); - STAssertTrue([path isDirectory], nil); - STAssertEqualObjects([path name], @"/", nil); - STAssertEqualObjects([path fullPath], @"/", nil); - - path = [GTMPath pathWithFullPath:@"/etc"]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"etc", nil); - STAssertEqualObjects([path fullPath], @"/etc", nil); - STAssertTrue([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - STAssertNotNil([path parent], nil); - STAssertTrue([[path parent] isRoot], nil); - - path = [GTMPath pathWithFullPath:@"/etc/passwd"]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"passwd", nil); - STAssertEqualObjects([path fullPath], @"/etc/passwd", nil); - STAssertFalse([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - STAssertNotNil([path parent], nil); - STAssertFalse([[path parent] isRoot], nil); - STAssertTrue([[path parent] isDirectory], nil); - STAssertTrue([[[path parent] parent] isRoot], nil); - - STAssertTrue([[path description] length] > 1, nil); -} - -- (void)testCreationWithNonExistentPath { - GTMPath *path = nil; - - path = [GTMPath pathWithFullPath:@" "]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"/abcxyz"]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"/etc/foo"]; - STAssertNil(path, nil); - - path = [GTMPath pathWithFullPath:@"/foo/bar/baz"]; - STAssertNil(path, nil); -} - -- (void)testDirectoryCreation { - GTMPath *tmp = [GTMPath pathWithFullPath:testDirectory_]; - GTMPath *path = nil; - - NSString *fooPath = [[tmp fullPath] stringByAppendingPathComponent:@"foo"]; - path = [GTMPath pathWithFullPath:fooPath]; - STAssertNil(path, nil); - - path = [tmp createDirectoryName:@"foo" mode:0555]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"foo", nil); - // filePosixPermissions has odd return types in different SDKs, so we use - // STAssertTrue to avoid the macros type checks from choking us. - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertTrue([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - - // Trying to create a file where a dir already exists should fail - path = [tmp createFileName:@"foo" mode:0555]; - STAssertNil(path, nil); - - // Calling create again should succeed - path = [tmp createDirectoryName:@"foo" mode:0555]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertTrue([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - - GTMPath *foo = [GTMPath pathWithFullPath:fooPath]; - STAssertNotNil(foo, nil); - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertTrue([path isDirectory], nil); - STAssertFalse([path isRoot], nil); -} - -- (void)testFileCreation { - GTMPath *tmp = [GTMPath pathWithFullPath:testDirectory_]; - GTMPath *path = nil; - - NSString *fooPath = [[tmp fullPath] stringByAppendingPathComponent:@"foo"]; - path = [GTMPath pathWithFullPath:fooPath]; - STAssertNil(path, nil); - - path = [tmp createFileName:@"foo" mode:0555]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertFalse([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - - // Trying to create a dir where a file already exists should fail. - path = [tmp createDirectoryName:@"foo" mode:0555]; - STAssertNil(path, nil); - - // Calling create again should succeed - path = [tmp createFileName:@"foo" mode:0555]; - STAssertNotNil(path, nil); - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertFalse([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - - GTMPath *foo = [GTMPath pathWithFullPath:fooPath]; - STAssertNotNil(foo, nil); - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0555, nil); - STAssertFalse([path isDirectory], nil); - STAssertFalse([path isRoot], nil); - - // Make sure we can't create a file/directory rooted off of |foo|, since it's - // not a directory. - path = [foo createFileName:@"bar" mode:0555]; - STAssertNil(path, nil); - path = [foo createDirectoryName:@"bar" mode:0555]; - STAssertNil(path, nil); -} - -- (void)testHierarchyCreation { - GTMPath *tmp = [GTMPath pathWithFullPath:testDirectory_]; - NSString *fooPath = [[tmp fullPath] stringByAppendingPathComponent:@"foo"]; - GTMPath *path = [GTMPath pathWithFullPath:fooPath]; - STAssertNil(path, nil); - - path = [[[tmp createDirectoryName:@"foo" mode:0755] - createDirectoryName:@"bar" mode:0756] - createDirectoryName:@"baz" mode:0757]; - STAssertNotNil(path, nil); - - // Check "baz" - STAssertEqualObjects([path name], @"baz", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0757, nil); - - // Check "bar" - path = [path parent]; - STAssertEqualObjects([path name], @"bar", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0756, nil); - - // Check "foo" - path = [path parent]; - STAssertEqualObjects([path name], @"foo", nil); - STAssertTrue([[path attributes] filePosixPermissions] == 0755, nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMProgressMonitorInputStream.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMProgressMonitorInputStream.h deleted file mode 100644 index 5f779bc5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMProgressMonitorInputStream.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// GTMProgressMonitorInputStream.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -// This class is no more. If you want something like it's functionality, look -// at using the version in the Objective-C GData Client -// (http://code.google.com/p/gdata-objectivec-client/). It provides the same -// functionality and will continue to be maintained. diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.h deleted file mode 100644 index 3ef5604c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.h +++ /dev/null @@ -1,379 +0,0 @@ -// -// GTMRegex.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import -#import "GTMDefines.h" - -/// Options for controlling the behavior of the matches -enum { - - kGTMRegexOptionIgnoreCase = 0x01, - // Ignore case in matching, ie: 'a' matches 'a' or 'A' - - kGTMRegexOptionSupressNewlineSupport = 0x02, - // By default (without this option), regular expressions are implicitly - // processed on a line by line basis, where "lines" are delimited by newline - // characters. In this mode '.' (dot) does NOT match newline characters, and - // '^' and '$' match at the beginning and end of the string as well as - // around newline characters. This behavior matches the default behavior for - // regular expressions in other languages including Perl and Python. For - // example, - // foo.*bar - // would match - // fooAAAbar - // but would NOT match - // fooAAA\nbar - // With the kGTMRegexOptionSupressNewlineSupport option, newlines are treated - // just like any other character which means that '.' will match them. In - // this mode, ^ and $ only match the beginning and end of the input string - // and do NOT match around the newline characters. For example, - // foo.*bar - // would match - // fooAAAbar - // and would also match - // fooAAA\nbar - -}; -typedef NSUInteger GTMRegexOptions; - -/// Global contants needed for errors from consuming patterns - -#undef _EXTERN -#undef _INITIALIZE_AS -#ifdef GTMREGEX_DEFINE_GLOBALS -#define _EXTERN -#define _INITIALIZE_AS(x) =x -#else -#define _EXTERN GTM_EXTERN -#define _INITIALIZE_AS(x) -#endif - -_EXTERN NSString* kGTMRegexErrorDomain _INITIALIZE_AS(@"com.google.mactoolbox.RegexDomain"); - -enum { - kGTMRegexPatternParseFailedError = -100 -}; - -// Keys for the userInfo from a kGTMRegexErrorDomain/kGTMRegexPatternParseFailedError error -_EXTERN NSString* kGTMRegexPatternErrorPattern _INITIALIZE_AS(@"pattern"); -_EXTERN NSString* kGTMRegexPatternErrorErrorString _INITIALIZE_AS(@"patternError"); - -/// Class for doing Extended Regex operations w/ libregex (see re_format(7)). -// -// NOTE: the docs for recomp/regexec make *no* claims about i18n. All work -// within this class is done w/ UTF-8 so Unicode should move through it safely, -// however, the character classes described in re_format(7) might not really -// be unicode "savvy", so use them and this class w/ that in mind. -// -// Example usage: -// -// NSArray *inputArrayOfStrings = ... -// NSArray *matches = [NSMutableArray array]; -// -// GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"]; -// for (NSString *curStr in inputArrayOfStrings) { -// if ([regex matchesString:curStr]) -// [matches addObject:curStr]; -// } -// .... -// -// ------------- -// -// If you need to include something dynamic in a pattern: -// -// NSString *pattern = -// [NSString stringWithFormat:@"^foo:%@bar", -// [GTMRegex escapedPatternForString:inputStr]]; -// GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; -// .... -// -// ------------- -// -// GTMRegex *regex = [GTMRegex regexWithPattern:@"(foo+)(bar)"]; -// NSString *highlighted = -// [regex stringByReplacingMatchesInString:inputString -// withReplacement:@"\\1\\2"]; -// .... -// -@interface GTMRegex : NSObject { - @private - NSString *pattern_; - GTMRegexOptions options_; - regex_t regexData_; -} - -/// Create a new, autoreleased object w/ the given regex pattern with the default options -+ (id)regexWithPattern:(NSString *)pattern; - -/// Create a new, autoreleased object w/ the given regex pattern and specify the matching options -+ (id)regexWithPattern:(NSString *)pattern options:(GTMRegexOptions)options; - -/// Create a new, autoreleased object w/ the given regex pattern, specify the matching options and receive any error consuming the pattern. -+ (id)regexWithPattern:(NSString *)pattern - options:(GTMRegexOptions)options - withError:(NSError **)outErrorOrNULL; - -/// Returns a new, autoreleased copy of |str| w/ any pattern chars in it escaped so they have no meaning when used w/in a pattern. -+ (NSString *)escapedPatternForString:(NSString *)str; - -/// Initialize a new object w/ the given regex pattern with the default options -- (id)initWithPattern:(NSString *)pattern; - -/// Initialize a new object w/ the given regex pattern and specify the matching options -- (id)initWithPattern:(NSString *)pattern options:(GTMRegexOptions)options; - -/// Initialize a new object w/ the given regex pattern, specify the matching options, and receive any error consuming the pattern. -- (id)initWithPattern:(NSString *)pattern - options:(GTMRegexOptions)options - withError:(NSError **)outErrorOrNULL; - -/// Returns the number of sub patterns in the pattern -// -// Sub Patterns are basically the number of parenthesis blocks w/in the pattern. -// ie: The pattern "foo((bar)|(baz))" has 3 sub patterns. -// -- (NSUInteger)subPatternCount; - -/// Returns YES if the whole string |str| matches the pattern. -- (BOOL)matchesString:(NSString *)str; - -/// Returns a new, autoreleased array of string that contain the subpattern matches for the string. -// -// If the whole string does not match the pattern, nil is returned. -// -// The api follows the conventions of most regex engines, and index 0 (zero) is -// the full match, then the subpatterns are index 1, 2, ... going left to right. -// If the pattern has optional subpatterns, then anything that didn't match -// will have NSNull at that index. -// ie: The pattern "(fo(o+))((bar)|(baz))" has five subpatterns, and when -// applied to the string "foooooobaz" you'd get an array of: -// 0: "foooooobaz" -// 1: "foooooo" -// 2: "ooooo" -// 3: "baz" -// 4: NSNull -// 5: "baz" -// -- (NSArray *)subPatternsOfString:(NSString *)str; - -/// Returns the first match for this pattern in |str|. -- (NSString *)firstSubStringMatchedInString:(NSString *)str; - -/// Returns YES if this pattern some substring of |str|. -- (BOOL)matchesSubStringInString:(NSString *)str; - -/// Returns a new, autoreleased enumerator that will walk segments (GTMRegexStringSegment) of |str| based on the pattern. -// -// This will split the string into "segments" using the given pattern. You get -// both the matches and parts that are inbetween matches. ie-the entire string -// will eventually be returned. -// -// See GTMRegexStringSegment for more infomation and examples. -// -- (NSEnumerator *)segmentEnumeratorForString:(NSString *)str; - -/// Returns a new, autoreleased enumerator that will walk only the matching segments (GTMRegexStringSegment) of |str| based on the pattern. -// -// This extracts the "segments" of the string that used the pattern. So it can -// be used to collect all of the matching substrings from within a string. -// -// See GTMRegexStringSegment for more infomation and examples. -// -- (NSEnumerator *)matchSegmentEnumeratorForString:(NSString *)str; - -/// Returns a new, autoreleased string with all matches of the pattern in |str| replaced with |replacementPattern|. -// -// Replacement uses the SED substitution like syntax w/in |replacementPattern| -// to allow the use of matches in the replacment. The replacement pattern can -// make use of any number of match references by using a backslash followed by -// the match subexpression number (ie-"\2", "\0", ...), see subPatternsOfString: -// for details on the subexpression indexing. -// -// REMINDER: you need to double-slash since the slash has meaning to the -// compiler/preprocessor. ie: "\\0" -// -- (NSString *)stringByReplacingMatchesInString:(NSString *)str - withReplacement:(NSString *)replacementPattern; - -@end - -/// Class returned by the nextObject for the enumerators from GTMRegex -// -// The two enumerators on from GTMRegex return objects of this type. This object -// represents a "piece" of the string the enumerator is walking. It's the apis -// on this object allow you to figure out why each segment was returned and to -// act on it. -// -// The easiest way to under stand this how the enumerators and this class works -// is through and examples :: -// Pattern: "foo+" -// String: "fo bar foobar foofooo baz" -// If you walk this w/ -segmentEnumeratorForString you'll get: -// # nextObjects Calls -isMatch -string -// 1 NO "fo bar " -// 2 YES "foo" -// 3 NO "bar " -// 4 YES "foo" -// 5 YES "fooo" -// 6 NO " baz" -// And if you walk this w/ -matchSegmentEnumeratorForString you'll get: -// # nextObjects Calls -isMatch -string -// 1 YES "foo" -// 2 YES "foo" -// 3 YES "fooo" -// (see the comments on subPatternString for how it works) -// -// Example usage: -// -// NSMutableString processedStr = [NSMutableString string]; -// NSEnumerator *enumerator = -// [inputStr segmentEnumeratorForPattern:@"foo+((ba+r)|(ba+z))"]; -// GTMRegexStringSegment *segment = nil; -// while ((segment = [enumerator nextObject]) != nil) { -// if ([segment isMatch]) { -// if ([segment subPatterString:2] != nil) { -// // matched: "(ba+r)" -// [processStr appendFormat:@"%@", [segment string]]; -// } else { -// // matched: "(ba+z)" -// [processStr appendFormat:@"%@", [segment string]]; -// } -// } else { -// [processStr appendString:[segment string]]; -// } -// } -// // proccessedStr now has all the versions of foobar wrapped in bold tags, -// // and all the versons of foobaz in italics tags. -// // ie: " fooobar foobaaz " ==> " fooobar foobaaz " -// -@interface GTMRegexStringSegment : NSObject { - @private - NSData *utf8StrBuf_; - regmatch_t *regMatches_; // STRONG: ie-we call free - NSUInteger numRegMatches_; - BOOL isMatch_; -} - -/// Returns YES if this segment from from a match of the regex, false if it was a segment between matches. -// -// Use -isMatch to see if the segment from from a match of the pattern or if the -// segment is some text between matches. (NOTE: isMatch is always YES for -// matchSegmentEnumeratorForString) -// -- (BOOL)isMatch; - -/// Returns a new, autoreleased string w/ the full text segment from the original string. -- (NSString *)string; - -/// Returns a new, autoreleased string w/ the |index| sub pattern from this segment of the original string. -// -// This api follows the conventions of most regex engines, and index 0 (zero) is -// the full match, then the subpatterns are index 1, 2, ... going left to right. -// If the pattern has optional subpatterns, then anything that didn't match -// will return nil. -// ie: When using the pattern "(fo(o+))((bar)|(baz))" the following indexes -// fetch these values for a segment where -string is @"foooooobaz": -// 0: "foooooobaz" -// 1: "foooooo" -// 2: "ooooo" -// 3: "baz" -// 4: nil -// 5: "baz" -// -- (NSString *)subPatternString:(NSUInteger)index; - -@end - -/// Some helpers to streamline usage of GTMRegex -// -// Example usage: -// -// if ([inputStr matchesPattern:@"foo.*bar"]) { -// // act on match -// .... -// } -// -// ------------- -// -// NSString *subStr = [inputStr firstSubStringMatchedByPattern:@"^foo:.*$"]; -// if (subStr != nil) { -// // act on subStr -// .... -// } -// -// ------------- -// -// NSArray *headingList = -// [inputStr allSubstringsMatchedByPattern:@"^Heading:.*$"]; -// // act on the list of headings -// .... -// -// ------------- -// -// NSString *highlightedString = -// [inputString stringByReplacingMatchesOfPattern:@"(foo+)(bar)" -// withReplacement:@"\\1\\2"]; -// .... -// -@interface NSString (GTMRegexAdditions) - -/// Returns YES if the full string matches regex |pattern| using the default match options -- (BOOL)gtm_matchesPattern:(NSString *)pattern; - -/// Returns a new, autoreleased array of strings that contain the subpattern matches of |pattern| using the default match options -// -// See [GTMRegex subPatternsOfString:] for information about the returned array. -// -- (NSArray *)gtm_subPatternsOfPattern:(NSString *)pattern; - -/// Returns a new, autoreleased string w/ the first substring that matched the regex |pattern| using the default match options -- (NSString *)gtm_firstSubStringMatchedByPattern:(NSString *)pattern; - -/// Returns YES if a substring string matches regex |pattern| using the default match options -- (BOOL)gtm_subStringMatchesPattern:(NSString *)pattern; - -/// Returns a new, autoreleased array of substrings in the string that match the regex |pattern| using the default match options -// -// Note: if the string has no matches, you get an empty array. -- (NSArray *)gtm_allSubstringsMatchedByPattern:(NSString *)pattern; - -/// Returns a new, autoreleased segment enumerator that will break the string using pattern w/ the default match options -// -// The enumerator returns GTMRegexStringSegment options, see that class for more -// details and examples. -// -- (NSEnumerator *)gtm_segmentEnumeratorForPattern:(NSString *)pattern; - -/// Returns a new, autoreleased segment enumerator that will only return matching segments from the string using pattern w/ the default match options -// -// The enumerator returns GTMRegexStringSegment options, see that class for more -// details and examples. -// -- (NSEnumerator *)gtm_matchSegmentEnumeratorForPattern:(NSString *)pattern; - -/// Returns a new, autoreleased string with all matches for pattern |pattern| are replaced w/ |replacementPattern|. Uses the default match options. -// -// |replacemetPattern| has support for using any subExpression that matched, -// see [GTMRegex stringByReplacingMatchesInString:withReplacement:] above -// for details. -// -- (NSString *)gtm_stringByReplacingMatchesOfPattern:(NSString *)pattern - withReplacement:(NSString *)replacementPattern; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.m deleted file mode 100644 index 10272247..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegex.m +++ /dev/null @@ -1,817 +0,0 @@ -// -// GTMRegex.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#define GTMREGEX_DEFINE_GLOBALS 1 -#import "GTMRegex.h" -#import "GTMDefines.h" - -// This is the pattern to use for walking replacement text when doing -// substitutions. -// -// This pattern may look over-escaped, but remember the compiler will consume -// one layer of slashes, and then we have to escape the slashes for them to be -// seen as we want in the pattern. -static NSString *const kReplacementPattern = - @"((^|[^\\\\])(\\\\\\\\)*)(\\\\([0-9]+))"; -#define kReplacementPatternLeadingTextIndex 1 -#define kReplacementPatternSubpatternNumberIndex 5 - -@interface GTMRegex (PrivateMethods) -- (NSString *)errorMessage:(int)errCode; -- (BOOL)runRegexOnUTF8:(const char*)utf8Str - nmatch:(size_t)nmatch - pmatch:(regmatch_t *)pmatch - flags:(int)flags; -@end - -// private enumerator as impl detail -@interface GTMRegexEnumerator : NSEnumerator { - @private - GTMRegex *regex_; - NSData *utf8StrBuf_; - BOOL allSegments_; - BOOL treatStartOfNewSegmentAsBeginningOfString_; - regoff_t curParseIndex_; - __strong regmatch_t *savedRegMatches_; -} -- (id)initWithRegex:(GTMRegex *)regex - processString:(NSString *)str - allSegments:(BOOL)allSegments; -- (void)treatStartOfNewSegmentAsBeginningOfString:(BOOL)yesNo; -@end - -@interface GTMRegexStringSegment (PrivateMethods) -- (id)initWithUTF8StrBuf:(NSData *)utf8StrBuf - regMatches:(regmatch_t *)regMatches - numRegMatches:(NSUInteger)numRegMatches - isMatch:(BOOL)isMatch; -@end - -@implementation GTMRegex - -+ (id)regexWithPattern:(NSString *)pattern { - return [[[self alloc] initWithPattern:pattern] autorelease]; -} - -+ (id)regexWithPattern:(NSString *)pattern options:(GTMRegexOptions)options { - return [[[self alloc] initWithPattern:pattern - options:options] autorelease]; -} - -+ (id)regexWithPattern:(NSString *)pattern - options:(GTMRegexOptions)options - withError:(NSError **)outErrorOrNULL { - return [[[self alloc] initWithPattern:pattern - options:options - withError:outErrorOrNULL] autorelease]; -} - -+ (NSString *)escapedPatternForString:(NSString *)str { - if (str == nil) - return nil; - - // NOTE: this could be done more efficiently by fetching the whole string into - // a unichar buffer and scanning that, along w/ pushing the data over in - // chunks (when possible). - - NSUInteger len = [str length]; - NSMutableString *result = [NSMutableString stringWithCapacity:len]; - - for (NSUInteger x = 0; x < len; ++x) { - unichar ch = [str characterAtIndex:x]; - switch (ch) { - case '^': - case '.': - case '[': - case '$': - case '(': - case ')': - case '|': - case '*': - case '+': - case '?': - case '{': - case '\\': - [result appendFormat:@"\\%C", ch]; - break; - default: - [result appendFormat:@"%C", ch]; - break; - } - } - - return result; -} - -- (id)init { - return [self initWithPattern:nil]; -} - -- (id)initWithPattern:(NSString *)pattern { - return [self initWithPattern:pattern options:0]; -} - -- (id)initWithPattern:(NSString *)pattern options:(GTMRegexOptions)options { - return [self initWithPattern:pattern options:options withError:nil]; -} - -- (id)initWithPattern:(NSString *)pattern - options:(GTMRegexOptions)options - withError:(NSError **)outErrorOrNULL { - - self = [super init]; - if (!self) return nil; - - if (outErrorOrNULL) *outErrorOrNULL = nil; - - if ([pattern length] == 0) { - [self release]; - return nil; - } - - // figure out the flags - options_ = options; - int flags = REG_EXTENDED; - if (options_ & kGTMRegexOptionIgnoreCase) - flags |= REG_ICASE; - if ((options_ & kGTMRegexOptionSupressNewlineSupport) == 0) - flags |= REG_NEWLINE; - - // even if regcomp failes we need a flags that we did call regcomp so we'll - // call regfree (because the structure can get filled in some to allow better - // error info). we use pattern_ as this flag. - pattern_ = [pattern copy]; - if (!pattern_) { - // COV_NF_START - no real way to force this in a unittest - [self release]; - return nil; - // COV_NF_END - } - - // compile it - int compResult = regcomp(®exData_, [pattern_ UTF8String], flags); - if (compResult != 0) { - NSString *errorStr = [self errorMessage:compResult]; - if (outErrorOrNULL) { - // include the pattern and patternError message in the userInfo. - NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys: - pattern_, kGTMRegexPatternErrorPattern, - errorStr, kGTMRegexPatternErrorErrorString, - nil]; - *outErrorOrNULL = [NSError errorWithDomain:kGTMRegexErrorDomain - code:kGTMRegexPatternParseFailedError - userInfo:userInfo]; - } else { - // if caller didn't get us an NSError to fill in, we log the error to help - // debugging. - _GTMDevLog(@"Invalid pattern \"%@\", error: \"%@\"", - pattern_, errorStr); - } - - [self release]; - return nil; - } - - return self; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - // we used pattern_ as our flag that we initialized the regex_t - if (pattern_) { - regfree(®exData_); - [pattern_ release]; - // play it safe and clear it since we use it as a flag for regexData_ - pattern_ = nil; - } - [super finalize]; -} -#endif - -- (void)dealloc { - // we used pattern_ as our flag that we initialized the regex_t - if (pattern_) { - regfree(®exData_); - [pattern_ release]; - // play it safe and clear it since we use it as a flag for regexData_ - pattern_ = nil; - } - [super dealloc]; -} - -- (NSUInteger)subPatternCount { - return regexData_.re_nsub; -} - -- (BOOL)matchesString:(NSString *)str { - regmatch_t regMatch; - if (![self runRegexOnUTF8:[str UTF8String] - nmatch:1 - pmatch:®Match - flags:0]) { - // no match - return NO; - } - - // make sure the match is the full string - return (regMatch.rm_so == 0) && - (regMatch.rm_eo == (regoff_t)[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]); -} - -- (NSArray *)subPatternsOfString:(NSString *)str { - NSArray *result = nil; - - NSUInteger count = regexData_.re_nsub + 1; - regmatch_t *regMatches = malloc(sizeof(regmatch_t) * count); - if (!regMatches) - return nil; // COV_NF_LINE - no real way to force this in a unittest - - // wrap it all in a try so we don't leak the malloc - @try { - const char *utf8Str = [str UTF8String]; - if (![self runRegexOnUTF8:utf8Str - nmatch:count - pmatch:regMatches - flags:0]) { - // no match - return nil; - } - - // make sure the match is the full string - if ((regMatches[0].rm_so != 0) || - (regMatches[0].rm_eo != (regoff_t)[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding])) { - // only matched a sub part of the string - return nil; - } - - NSMutableArray *buildResult = [NSMutableArray arrayWithCapacity:count]; - - for (NSUInteger x = 0 ; x < count ; ++x) { - if ((regMatches[x].rm_so == -1) && (regMatches[x].rm_eo == -1)) { - // add NSNull since it wasn't used - [buildResult addObject:[NSNull null]]; - } else { - // fetch the string - const char *base = utf8Str + regMatches[x].rm_so; - regoff_t len = regMatches[x].rm_eo - regMatches[x].rm_so; - NSString *sub = - [[[NSString alloc] initWithBytes:base - length:(NSUInteger)len - encoding:NSUTF8StringEncoding] autorelease]; - [buildResult addObject:sub]; - } - } - - result = buildResult; - } // COV_NF_LINE - radar 5851992 only reachable w/ an uncaught exception which isn't testable - @finally { - free(regMatches); - } - - return result; -} - -- (NSString *)firstSubStringMatchedInString:(NSString *)str { - NSString *result = nil; - - regmatch_t regMatch; - const char *utf8Str = [str UTF8String]; - if ([self runRegexOnUTF8:utf8Str - nmatch:1 - pmatch:®Match - flags:0]) { - // fetch the string - const char *base = utf8Str + regMatch.rm_so; - regoff_t len = regMatch.rm_eo - regMatch.rm_so; - result = - [[[NSString alloc] initWithBytes:base - length:(NSUInteger)len - encoding:NSUTF8StringEncoding] autorelease]; - } - return result; -} - -- (BOOL)matchesSubStringInString:(NSString *)str { - regmatch_t regMatch; - if ([self runRegexOnUTF8:[str UTF8String] - nmatch:1 - pmatch:®Match - flags:0]) { - // don't really care what matched, just report the match - return YES; - } - return NO; -} - -- (NSEnumerator *)segmentEnumeratorForString:(NSString *)str { - return [[[GTMRegexEnumerator alloc] initWithRegex:self - processString:str - allSegments:YES] autorelease]; -} - -- (NSEnumerator *)matchSegmentEnumeratorForString:(NSString *)str { - return [[[GTMRegexEnumerator alloc] initWithRegex:self - processString:str - allSegments:NO] autorelease]; -} - -- (NSString *)stringByReplacingMatchesInString:(NSString *)str - withReplacement:(NSString *)replacementPattern { - if (!str) - return nil; - - // if we have a replacement, we go ahead and crack it now. if the replacement - // is just an empty string (or nil), just use the nil marker. - NSArray *replacements = nil; - if ([replacementPattern length]) { - // don't need newline support, just match the start of the pattern for '^' - GTMRegex *replacementRegex = - [GTMRegex regexWithPattern:kReplacementPattern - options:kGTMRegexOptionSupressNewlineSupport]; -#ifdef DEBUG - if (!replacementRegex) { - _GTMDevLog(@"failed to parse out replacement regex!!!"); // COV_NF_LINE - } -#endif - GTMRegexEnumerator *relacementEnumerator = - [[[GTMRegexEnumerator alloc] initWithRegex:replacementRegex - processString:replacementPattern - allSegments:YES] autorelease]; - // We turn on treatStartOfNewSegmentAsBeginningOfLine for this enumerator. - // As complex as kReplacementPattern is, it can't completely do what we want - // with the normal string walk. The problem is this, backreferences are a - // slash follow by a number ("\0"), but the replacement pattern might - // actually need to use backslashes (they have to be escaped). So if a - // replacement were "\\0", then there is no backreference, instead the - // replacement is a backslash and a zero. Generically this means an even - // number of backslashes are all escapes, and an odd are some number of - // literal backslashes followed by our backreference. Think of it as a "an - // odd number of slashes that comes after a non-backslash character." There - // is no way to rexpress this in re_format(7) extended expressions. Instead - // we look for a non-blackslash or string start followed by an optional even - // number of slashes followed by the backreference; and use the special - // flag; so after each match, we restart claiming it's the start of the - // string. (the problem match w/o this flag is a substition of "\2\1") - [relacementEnumerator treatStartOfNewSegmentAsBeginningOfString:YES]; - // pull them all into an array so we can walk this as many times as needed. - replacements = [relacementEnumerator allObjects]; - if (!replacements) { - // COV_NF_START - no real way to force this in a unittest - _GTMDevLog(@"failed to create the replacements for substitutions"); - return nil; - // COV_NF_END - } - } - - NSMutableString *result = [NSMutableString stringWithCapacity:[str length]]; - - NSEnumerator *enumerator = [self segmentEnumeratorForString:str]; - GTMRegexStringSegment *segment = nil; - while ((segment = [enumerator nextObject]) != nil) { - if (![segment isMatch]) { - // not a match, just move this chunk over - [result appendString:[segment string]]; - } else { - // match... - if (!replacements) { - // no replacements, they want to eat matches, nothing to do - } else { - // spin over the split up replacement - GTMRegexStringSegment *replacementSegment = nil; - GTM_FOREACH_OBJECT(replacementSegment, replacements) { - if (![replacementSegment isMatch]) { - // not a match, raw text to put in - [result appendString:[replacementSegment string]]; - } else { - // match... - - // first goes any leading text - NSString *leading = - [replacementSegment subPatternString:kReplacementPatternLeadingTextIndex]; - if (leading) - [result appendString:leading]; - // then use the subpattern number to find what goes in from the - // original string match. - int subPatternNum = - [[replacementSegment subPatternString:kReplacementPatternSubpatternNumberIndex] intValue]; - NSString *matchSubPatStr = [segment subPatternString:subPatternNum]; - // handle an unused subpattern (ie-nil result) - if (matchSubPatStr) - [result appendString:matchSubPatStr]; - } - } - } - } - } - return result; -} - -- (NSString *)description { - NSMutableString *result = - [NSMutableString stringWithFormat:@"%@<%p> { pattern=\"%@\", rawNumSubPatterns=%zd, options=(", - [self class], self, pattern_, regexData_.re_nsub]; - if (options_) { - if (options_ & kGTMRegexOptionIgnoreCase) - [result appendString:@" IgnoreCase"]; - if ((options_ & kGTMRegexOptionSupressNewlineSupport) == kGTMRegexOptionSupressNewlineSupport) - [result appendString:@" NoNewlineSupport"]; - } else { - [result appendString:@" None(Default)"]; - } - [result appendString:@" ) }"]; - return result; -} - -@end - -@implementation GTMRegex (PrivateMethods) - -- (NSString *)errorMessage:(int)errCode { - NSString *result = @"internal error"; - - // size the buffer we need - size_t len = regerror(errCode, ®exData_, NULL, 0); - char *buffer = (char*)malloc(sizeof(char) * len); - if (buffer) { - // fetch the error - if (len == regerror(errCode, ®exData_, buffer, len)) { - NSString *generatedError = [NSString stringWithUTF8String:buffer]; - if (generatedError) - result = generatedError; - } - free(buffer); - } - return result; -} - -// private helper to run the regex on a block -- (BOOL)runRegexOnUTF8:(const char*)utf8Str - nmatch:(size_t)nmatch - pmatch:(regmatch_t *)pmatch - flags:(int)flags { - if (!utf8Str) - return NO; - - int execResult = regexec(®exData_, utf8Str, nmatch, pmatch, flags); - if (execResult != 0) { -#ifdef DEBUG - if (execResult != REG_NOMATCH) { - // COV_NF_START - no real way to force this in a unittest - NSString *errorStr = [self errorMessage:execResult]; - _GTMDevLog(@"%@: matching string \"%.20s...\", had error: \"%@\"", - self, utf8Str, errorStr); - // COV_NF_END - } -#endif - return NO; - } - return YES; -} - -@end - -@implementation GTMRegexEnumerator - -// we don't block init because the class isn't exported, so no one can -// create one, or if they do, they get whatever happens... - -- (id)initWithRegex:(GTMRegex *)regex - processString:(NSString *)str - allSegments:(BOOL)allSegments { - self = [super init]; - if (!self) return nil; - - // collect args - regex_ = [regex retain]; - utf8StrBuf_ = [[str dataUsingEncoding:NSUTF8StringEncoding] retain]; - allSegments_ = allSegments; - - // arg check - if (!regex_ || !utf8StrBuf_) { - [self release]; - return nil; - } - - // parsing state initialized to zero for us by object creation - - return self; -} - -// Don't need a finalize because savedRegMatches_ is marked __strong -- (void)dealloc { - if (savedRegMatches_) { - free(savedRegMatches_); - savedRegMatches_ = nil; - } - [regex_ release]; - [utf8StrBuf_ release]; - [super dealloc]; -} - -- (void)treatStartOfNewSegmentAsBeginningOfString:(BOOL)yesNo { - // The way regexec works, it assumes the first char it's looking at to the - // start of the string. In normal use, this makes sense; but in this case, - // we're going to walk the entry string splitting it up by our pattern. That - // means for the first call, it is the string start, but for all future calls, - // it is NOT the string start, so we will pass regexec the flag to let it - // know. However, (you knew that was coming), there are some cases where you - // actually want the each pass to be considered as the start of the string - // (usually the cases are where a pattern can't express what's needed w/o - // this). There is no really good way to explain this behavior w/o all this - // text and lot of examples, so for now this is not in the public api, and - // just here. (Hint: see what w/in this file uses this for why we have it) - treatStartOfNewSegmentAsBeginningOfString_ = yesNo; -} - -- (id)nextObject { - - GTMRegexStringSegment *result = nil; - regmatch_t *nextMatches = nil; - BOOL isMatch = NO; - - // we do all this w/in a try, so if something throws, the memory we malloced - // will still get cleaned up - @try { - - // if we have a saved match, use that... - if (savedRegMatches_) { - nextMatches = savedRegMatches_; - savedRegMatches_ = nil; - isMatch = YES; // if we have something saved, it was a pattern match - } - // have we reached the end? - else if (curParseIndex_ >= (regoff_t)[utf8StrBuf_ length]) { - // done, do nothing, we'll return nil - } - // do the search. - else { - - // alloc the match structure (extra space for the zero (full) match) - size_t matchBufSize = ([regex_ subPatternCount] + 1) * sizeof(regmatch_t); - nextMatches = malloc(matchBufSize); - if (!nextMatches) - return nil; // COV_NF_LINE - no real way to force this in a unittest - - // setup our range to work on - nextMatches[0].rm_so = curParseIndex_; - nextMatches[0].rm_eo = [utf8StrBuf_ length]; - - // figure out our flags - int flags = REG_STARTEND; - if ((!treatStartOfNewSegmentAsBeginningOfString_) && - (curParseIndex_ != 0)) { - // see -treatStartOfNewSegmentAsBeginningOfString: for why we have - // this check here. - flags |= REG_NOTBOL; - } - - // call for the match - if ([regex_ runRegexOnUTF8:[utf8StrBuf_ bytes] - nmatch:([regex_ subPatternCount] + 1) - pmatch:nextMatches - flags:flags]) { - // match - - if (allSegments_ && - (nextMatches[0].rm_so != curParseIndex_)) { - // we should return all segments (not just matches), and there was - // something before this match. So safe off this match for later - // and create a range for this. - - savedRegMatches_ = nextMatches; - nextMatches = malloc(matchBufSize); - if (!nextMatches) - return nil; // COV_NF_LINE - no real way to force this in a unittest - - isMatch = NO; - // mark everything but the zero slot w/ not used - for (NSUInteger x = [regex_ subPatternCount]; x > 0; --x) { - nextMatches[x].rm_so = nextMatches[x].rm_eo = -1; - } - nextMatches[0].rm_so = curParseIndex_; - nextMatches[0].rm_eo = savedRegMatches_[0].rm_so; - - // advance our marker - curParseIndex_ = savedRegMatches_[0].rm_eo; - - } else { - // we only return matches or are pointed at a match - - // no real work to do, just fall through to return to return the - // current match. - isMatch = YES; - - // advance our marker - curParseIndex_ = nextMatches[0].rm_eo; - } - - } else { - // no match - - // should we return the last non matching segment? - if (allSegments_) { - isMatch = NO; - // mark everything but the zero slot w/ not used - for (NSUInteger x = [regex_ subPatternCount]; x > 0; --x) { - nextMatches[x].rm_so = nextMatches[x].rm_eo = -1; - } - nextMatches[0].rm_so = curParseIndex_; - nextMatches[0].rm_eo = [utf8StrBuf_ length]; - } else { - // drop match set, we don't want it - free(nextMatches); - nextMatches = nil; - } - - // advance our marker since we're done - curParseIndex_ = [utf8StrBuf_ length]; - - } - } - - // create the segment to return - if (nextMatches) { - result = - [[[GTMRegexStringSegment alloc] initWithUTF8StrBuf:utf8StrBuf_ - regMatches:nextMatches - numRegMatches:[regex_ subPatternCount] - isMatch:isMatch] autorelease]; - nextMatches = nil; - } - } @catch (id e) { // COV_NF_START - no real way to force this in a test - _GTMDevLog(@"Exceptions while trying to advance enumeration (%@)", e); - // if we still have something in our temp, free it - if (nextMatches) - free(nextMatches); - } // COV_NF_END - - return result; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@<%p> { regex=\"%@\", allSegments=%s, string=\"%.20s...\" }", - [self class], self, - regex_, - (allSegments_ ? "YES" : "NO"), - [utf8StrBuf_ bytes]]; -} - -@end - -@implementation GTMRegexStringSegment - -- (id)init { - // make sure init is never called, the class in in the header so someone - // could try to create it by mistake. - // Call super init and release so we don't leak - [[super init] autorelease]; - [self doesNotRecognizeSelector:_cmd]; - return nil; // COV_NF_LINE - return is just here to keep gcc happy -} - -- (void)dealloc { - if (regMatches_) { - free(regMatches_); - regMatches_ = nil; - } - [utf8StrBuf_ release]; - [super dealloc]; -} - -- (BOOL)isMatch { - return isMatch_; -} - -- (NSString *)string { - // fetch match zero - return [self subPatternString:0]; -} - -- (NSString *)subPatternString:(NSUInteger)patternIndex { - if (patternIndex > numRegMatches_) - return nil; - - // pick off when it wasn't found - if ((regMatches_[patternIndex].rm_so == -1) && - (regMatches_[patternIndex].rm_eo == -1)) - return nil; - - // fetch the string - const char *base = (const char*)[utf8StrBuf_ bytes] - + regMatches_[patternIndex].rm_so; - regoff_t len = regMatches_[patternIndex].rm_eo - - regMatches_[patternIndex].rm_so; - return [[[NSString alloc] initWithBytes:base - length:(NSUInteger)len - encoding:NSUTF8StringEncoding] autorelease]; -} - -- (NSString *)description { - NSMutableString *result = - [NSMutableString stringWithFormat:@"%@<%p> { isMatch=\"%s\", subPatterns=(", - [self class], self, (isMatch_ ? "YES" : "NO")]; - for (NSUInteger x = 0; x <= numRegMatches_; ++x) { - NSString *format = @", \"%.*s\""; - if (x == 0) - format = @" \"%.*s\""; - - [result appendFormat:format, - (int)(regMatches_[x].rm_eo - regMatches_[x].rm_so), - (((const char*)[utf8StrBuf_ bytes]) + regMatches_[x].rm_so)]; - } - [result appendString:@" ) }"]; - - return result; -} - -@end - -@implementation GTMRegexStringSegment (PrivateMethods) - -- (id)initWithUTF8StrBuf:(NSData *)utf8StrBuf - regMatches:(regmatch_t *)regMatches - numRegMatches:(NSUInteger)numRegMatches - isMatch:(BOOL)isMatch { - self = [super init]; - if (!self) return nil; - - utf8StrBuf_ = [utf8StrBuf retain]; - regMatches_ = regMatches; - numRegMatches_ = numRegMatches; - isMatch_ = isMatch; - - // check the args - if (!utf8StrBuf_ || !regMatches_) { - // COV_NF_START - // this could only happen something messed w/ our internal state. - [self release]; - return nil; - // COV_NF_END - } - - return self; -} - -@end - -@implementation NSString (GTMRegexAdditions) - -- (BOOL)gtm_matchesPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex matchesString:self]; -} - -- (NSArray *)gtm_subPatternsOfPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex subPatternsOfString:self]; -} - -- (NSString *)gtm_firstSubStringMatchedByPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex firstSubStringMatchedInString:self]; -} - -- (BOOL)gtm_subStringMatchesPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex matchesSubStringInString:self]; -} - -- (NSArray *)gtm_allSubstringsMatchedByPattern:(NSString *)pattern { - NSEnumerator *enumerator = [self gtm_matchSegmentEnumeratorForPattern:pattern]; - NSArray *allSegments = [enumerator allObjects]; - return [allSegments valueForKey:@"string"]; -} - -- (NSEnumerator *)gtm_segmentEnumeratorForPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex segmentEnumeratorForString:self]; -} - -- (NSEnumerator *)gtm_matchSegmentEnumeratorForPattern:(NSString *)pattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex matchSegmentEnumeratorForString:self]; -} - -- (NSString *)gtm_stringByReplacingMatchesOfPattern:(NSString *)pattern - withReplacement:(NSString *)replacementPattern { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - return [regex stringByReplacingMatchesInString:self - withReplacement:replacementPattern]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegexTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegexTest.m deleted file mode 100644 index 6f41d600..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMRegexTest.m +++ /dev/null @@ -1,1245 +0,0 @@ -// -// GTMRegexTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMRegex.h" -#import "GTMUnitTestDevLog.h" - -// -// NOTE: -// -// We don't really test any of the pattern matching since that's testing -// libregex, we just want to test our wrapper. -// - -@interface GTMRegexTest : GTMTestCase -@end - -@interface NSString_GTMRegexAdditions : GTMTestCase -@end - -@implementation GTMRegexTest - -- (void)testEscapedPatternForString { - STAssertEqualStrings([GTMRegex escapedPatternForString:@"abcdefghijklmnopqrstuvwxyz0123456789"], - @"abcdefghijklmnopqrstuvwxyz0123456789", - nil); - STAssertEqualStrings([GTMRegex escapedPatternForString:@"^.[$()|*+?{\\"], - @"\\^\\.\\[\\$\\(\\)\\|\\*\\+\\?\\{\\\\", - nil); - STAssertEqualStrings([GTMRegex escapedPatternForString:@"a^b.c[d$e(f)g|h*i+j?k{l\\m"], - @"a\\^b\\.c\\[d\\$e\\(f\\)g\\|h\\*i\\+j\\?k\\{l\\\\m", - nil); - - STAssertNil([GTMRegex escapedPatternForString:nil], nil); - STAssertEqualStrings([GTMRegex escapedPatternForString:@""], @"", nil); -} - - -- (void)testInit { - - // fail cases - STAssertNil([[[GTMRegex alloc] init] autorelease], nil); - STAssertNil([[[GTMRegex alloc] initWithPattern:nil] autorelease], nil); - STAssertNil([[[GTMRegex alloc] initWithPattern:nil - options:kGTMRegexOptionIgnoreCase] autorelease], nil); - [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""]; - STAssertNil([[[GTMRegex alloc] initWithPattern:@"(."] autorelease], nil); - [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""]; - STAssertNil([[[GTMRegex alloc] initWithPattern:@"(." - options:kGTMRegexOptionIgnoreCase] autorelease], nil); - // fail cases w/ error param - NSError *error = nil; - STAssertNil([[[GTMRegex alloc] initWithPattern:nil - options:kGTMRegexOptionIgnoreCase - withError:&error] autorelease], nil); - STAssertNil(error, @"no pattern, shouldn't get error object"); - STAssertNil([[[GTMRegex alloc] initWithPattern:@"(." - options:kGTMRegexOptionIgnoreCase - withError:&error] autorelease], nil); - STAssertNotNil(error, nil); - STAssertEqualObjects([error domain], kGTMRegexErrorDomain, nil); - STAssertEquals([error code], (NSInteger)kGTMRegexPatternParseFailedError, nil); - NSDictionary *userInfo = [error userInfo]; - STAssertNotNil(userInfo, @"failed to get userInfo from error"); - STAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.", nil); - STAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString], nil); - - // basic pattern w/ options - STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)"] autorelease], nil); - STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)" - options:0] autorelease], nil); - STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)" - options:kGTMRegexOptionIgnoreCase] autorelease], nil); - error = nil; - STAssertNotNil([[[GTMRegex alloc] initWithPattern:@"(.*)" - options:kGTMRegexOptionIgnoreCase - withError:&error] autorelease], nil); - STAssertNil(error, @"shouldn't have been any error"); - - // fail cases (helper) - STAssertNil([GTMRegex regexWithPattern:nil], nil); - STAssertNil([GTMRegex regexWithPattern:nil - options:0], nil); - [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""]; - STAssertNil([GTMRegex regexWithPattern:@"(."], nil); - [GTMUnitTestDevLog expectString:@"Invalid pattern \"(.\", error: \"parentheses not balanced\""]; - STAssertNil([GTMRegex regexWithPattern:@"(." - options:0], nil); - // fail cases (helper) w/ error param - STAssertNil([GTMRegex regexWithPattern:nil - options:kGTMRegexOptionIgnoreCase - withError:&error], nil); - STAssertNil(error, @"no pattern, shouldn't get error object"); - STAssertNil([GTMRegex regexWithPattern:@"(." - options:kGTMRegexOptionIgnoreCase - withError:&error], nil); - STAssertNotNil(error, nil); - STAssertEqualObjects([error domain], kGTMRegexErrorDomain, nil); - STAssertEquals([error code], (NSInteger)kGTMRegexPatternParseFailedError, nil); - userInfo = [error userInfo]; - STAssertNotNil(userInfo, @"failed to get userInfo from error"); - STAssertEqualObjects([userInfo objectForKey:kGTMRegexPatternErrorPattern], @"(.", nil); - STAssertNotNil([userInfo objectForKey:kGTMRegexPatternErrorErrorString], nil); - - // basic pattern w/ options (helper) - STAssertNotNil([GTMRegex regexWithPattern:@"(.*)"], nil); - STAssertNotNil([GTMRegex regexWithPattern:@"(.*)" - options:0], nil); - STAssertNotNil([GTMRegex regexWithPattern:@"(.*)" - options:kGTMRegexOptionIgnoreCase], nil); - error = nil; - STAssertNotNil([GTMRegex regexWithPattern:@"(.*)" - options:kGTMRegexOptionIgnoreCase - withError:&error], nil); - STAssertNil(error, @"shouldn't have been any error"); - - // not really a test on GTMRegex, but make sure we block attempts to directly - // alloc/init a GTMRegexStringSegment. - STAssertThrowsSpecificNamed([[[GTMRegexStringSegment alloc] init] autorelease], - NSException, NSInvalidArgumentException, - @"shouldn't have been able to alloc/init a GTMRegexStringSegment"); -} - -- (void)testOptions { - - NSString *testString = @"aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB"; - - // default options - GTMRegex *regex = [GTMRegex regexWithPattern:@"a+"]; - STAssertNotNil(regex, nil); - NSEnumerator *enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa" - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " AAA\nbbb BBB\n " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n ", nil); - // "aaa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" ", nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "A" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"A", nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "\n bbb BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\n bbb BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // kGTMRegexOptionIgnoreCase - regex = [GTMRegex regexWithPattern:@"a+" options:kGTMRegexOptionIgnoreCase]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" ", nil); - // "AAA" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"AAA", nil); - // "\nbbb BBB\n " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\nbbb BBB\n ", nil); - // "aaa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" ", nil); - // "aAa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aAa", nil); - // "\n bbb BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\n bbb BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // defaults w/ '^' - regex = [GTMRegex regexWithPattern:@"^a+"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " AAA\nbbb BBB\n aaa aAa\n bbb BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // defaults w/ '$' - regex = [GTMRegex regexWithPattern:@"B+$"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa AAA\nbbb " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa AAA\nbbb ", nil); - // "BBB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"BBB", nil); - // "\n aaa aAa\n bbb Bb" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\n aaa aAa\n bbb Bb", nil); - // "B" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"B", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // kGTMRegexOptionIgnoreCase w/ '$' - regex = [GTMRegex regexWithPattern:@"B+$" - options:kGTMRegexOptionIgnoreCase]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa AAA\nbbb " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa AAA\nbbb ", nil); - // "BBB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"BBB", nil); - // "\n aaa aAa\n bbb " - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\n aaa aAa\n bbb ", nil); - // "BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test w/ kGTMRegexOptionSupressNewlineSupport and \n in the string - regex = [GTMRegex regexWithPattern:@"a.*b" options:kGTMRegexOptionSupressNewlineSupport]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb", nil); - // "B" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"B", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test w/o kGTMRegexOptionSupressNewlineSupport and \n in the string - // (this is no match since it '.' can't match the '\n') - regex = [GTMRegex regexWithPattern:@"a.*b"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // kGTMRegexOptionSupressNewlineSupport w/ '^' - regex = [GTMRegex regexWithPattern:@"^a+" options:kGTMRegexOptionSupressNewlineSupport]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - // " AAA\nbbb BBB\n aaa aAa\n bbb BbB" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @" AAA\nbbb BBB\n aaa aAa\n bbb BbB", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // kGTMRegexOptionSupressNewlineSupport w/ '$' - regex = [GTMRegex regexWithPattern:@"B+$" options:kGTMRegexOptionSupressNewlineSupport]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:testString]; - STAssertNotNil(enumerator, nil); - // "aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa AAA\nbbb BBB\n aaa aAa\n bbb Bb", nil); - // "B" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"B", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); -} - -- (void)testSubPatternCount { - STAssertEquals((NSUInteger)0, [[GTMRegex regexWithPattern:@".*"] subPatternCount], nil); - STAssertEquals((NSUInteger)1, [[GTMRegex regexWithPattern:@"(.*)"] subPatternCount], nil); - STAssertEquals((NSUInteger)1, [[GTMRegex regexWithPattern:@"[fo]*(.*)[bar]*"] subPatternCount], nil); - STAssertEquals((NSUInteger)3, [[GTMRegex regexWithPattern:@"([fo]*)(.*)([bar]*)"] subPatternCount], nil); - STAssertEquals((NSUInteger)7, [[GTMRegex regexWithPattern:@"(([bar]*)|([fo]*))(.*)(([bar]*)|([fo]*))"] subPatternCount], nil); -} - -- (void)testMatchesString { - // simple pattern - GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"]; - STAssertNotNil(regex, nil); - STAssertTrue([regex matchesString:@"foobar"], nil); - STAssertTrue([regex matchesString:@"foobydoo spambar"], nil); - STAssertFalse([regex matchesString:@"zzfoobarzz"], nil); - STAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"], nil); - STAssertFalse([regex matchesString:@"abcdef"], nil); - STAssertFalse([regex matchesString:@""], nil); - STAssertFalse([regex matchesString:nil], nil); - // pattern w/ sub patterns - regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"]; - STAssertNotNil(regex, nil); - STAssertTrue([regex matchesString:@"foobar"], nil); - STAssertTrue([regex matchesString:@"foobydoo spambar"], nil); - STAssertFalse([regex matchesString:@"zzfoobarzz"], nil); - STAssertFalse([regex matchesString:@"zzfoobydoo spambarzz"], nil); - STAssertFalse([regex matchesString:@"abcdef"], nil); - STAssertFalse([regex matchesString:@""], nil); - STAssertFalse([regex matchesString:nil], nil); -} - -- (void)testSubPatternsOfString { - GTMRegex *regex = [GTMRegex regexWithPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNotNil(regex, nil); - STAssertEquals((NSUInteger)5, [regex subPatternCount], nil); - NSArray *subPatterns = [regex subPatternsOfString:@"foooooobaz"]; - STAssertNotNil(subPatterns, nil); - STAssertEquals((NSUInteger)6, [subPatterns count], nil); - STAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0], nil); - STAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1], nil); - STAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2], nil); - STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3], nil); - STAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4], nil); - STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5], nil); - - // not there - subPatterns = [regex subPatternsOfString:@"aaa"]; - STAssertNil(subPatterns, nil); - - // not extra stuff on either end - subPatterns = [regex subPatternsOfString:@"ZZZfoooooobaz"]; - STAssertNil(subPatterns, nil); - subPatterns = [regex subPatternsOfString:@"foooooobazZZZ"]; - STAssertNil(subPatterns, nil); - subPatterns = [regex subPatternsOfString:@"ZZZfoooooobazZZZ"]; - STAssertNil(subPatterns, nil); -} - -- (void)testFirstSubStringMatchedInString { - // simple pattern - GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"]; - STAssertNotNil(regex, nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"], - @"foobar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"], - @"foobydoo spambar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"], - @"foobar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"], - @"foobydoo spambar", nil); - STAssertNil([regex firstSubStringMatchedInString:@"abcdef"], nil); - STAssertNil([regex firstSubStringMatchedInString:@""], nil); - // pattern w/ sub patterns - regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"]; - STAssertNotNil(regex, nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobar"], - @"foobar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"foobydoo spambar"], - @"foobydoo spambar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobarzz"], - @"foobar", nil); - STAssertEqualStrings([regex firstSubStringMatchedInString:@"zzfoobydoo spambarzz"], - @"foobydoo spambar", nil); - STAssertNil([regex firstSubStringMatchedInString:@"abcdef"], nil); - STAssertNil([regex firstSubStringMatchedInString:@""], nil); -} - -- (void)testMatchesSubStringInString { - // simple pattern - GTMRegex *regex = [GTMRegex regexWithPattern:@"foo.*bar"]; - STAssertNotNil(regex, nil); - STAssertTrue([regex matchesSubStringInString:@"foobar"], nil); - STAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"], nil); - STAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"], nil); - STAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"], nil); - STAssertFalse([regex matchesSubStringInString:@"abcdef"], nil); - STAssertFalse([regex matchesSubStringInString:@""], nil); - // pattern w/ sub patterns - regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"]; - STAssertNotNil(regex, nil); - STAssertTrue([regex matchesSubStringInString:@"foobar"], nil); - STAssertTrue([regex matchesSubStringInString:@"foobydoo spambar"], nil); - STAssertTrue([regex matchesSubStringInString:@"zzfoobarzz"], nil); - STAssertTrue([regex matchesSubStringInString:@"zzfoobydoo spambarzz"], nil); - STAssertFalse([regex matchesSubStringInString:@"abcdef"], nil); - STAssertFalse([regex matchesSubStringInString:@""], nil); -} - -- (void)testSegmentEnumeratorForString { - GTMRegex *regex = [GTMRegex regexWithPattern:@"foo+ba+r"]; - STAssertNotNil(regex, nil); - - // test odd input - NSEnumerator *enumerator = [regex segmentEnumeratorForString:@""]; - STAssertNotNil(enumerator, nil); - enumerator = [regex segmentEnumeratorForString:nil]; - STAssertNil(enumerator, nil); - - // on w/ the normal tests - enumerator = [regex segmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"]; - STAssertNotNil(enumerator, nil); - // "a" - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "b" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"b", nil); - // "fooobaar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"fooobaar", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "zz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"zz", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test no match - enumerator = [regex segmentEnumeratorForString:@"aaa"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test only match - enumerator = [regex segmentEnumeratorForString:@"foobar"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // now test the saved sub segments - regex = [GTMRegex regexWithPattern:@"(foo)((bar)|(baz))"]; - STAssertNotNil(regex, nil); - STAssertEquals((NSUInteger)4, [regex subPatternCount], nil); - enumerator = [regex segmentEnumeratorForString:@"foobarxxfoobaz"]; - STAssertNotNil(enumerator, nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"bar", nil); - STAssertEqualStrings([seg subPatternString:3], @"bar", nil); - STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)" - STAssertNil([seg subPatternString:5], nil); - // "xx" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"xx", nil); - STAssertEqualStrings([seg subPatternString:0], @"xx", nil); - STAssertNil([seg subPatternString:1], nil); - // "foobaz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"baz", nil); - STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)" - STAssertEqualStrings([seg subPatternString:4], @"baz", nil); - STAssertNil([seg subPatternString:5], nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test all objects - regex = [GTMRegex regexWithPattern:@"foo+ba+r"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"]; - STAssertNotNil(enumerator, nil); - NSArray *allSegments = [enumerator allObjects]; - STAssertNotNil(allSegments, nil); - STAssertEquals((NSUInteger)6, [allSegments count], nil); - - // test we are getting the flags right for newline - regex = [GTMRegex regexWithPattern:@"^a"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:@"aa\naa"]; - STAssertNotNil(enumerator, nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "a\n" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a\n", nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test we are getting the flags right for newline, part 2 - regex = [GTMRegex regexWithPattern:@"^a*$"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:@"aa\naa\nbb\naa"]; - STAssertNotNil(enumerator, nil); - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // "\n" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\n", nil); - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // "\nbb\n" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"\nbb\n", nil); - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // make sure the enum cleans up if not walked to the end - regex = [GTMRegex regexWithPattern:@"b+"]; - STAssertNotNil(regex, nil); - enumerator = [regex segmentEnumeratorForString:@"aabbcc"]; - STAssertNotNil(enumerator, nil); - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // and done w/o walking the rest -} - -- (void)testMatchSegmentEnumeratorForString { - GTMRegex *regex = [GTMRegex regexWithPattern:@"foo+ba+r"]; - STAssertNotNil(regex, nil); - - // test odd input - NSEnumerator *enumerator = [regex matchSegmentEnumeratorForString:@""]; - STAssertNotNil(enumerator, nil); - enumerator = [regex matchSegmentEnumeratorForString:nil]; - STAssertNil(enumerator, nil); - - // on w/ the normal tests - enumerator = [regex matchSegmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"]; - STAssertNotNil(enumerator, nil); - // "a" - skipped - // "foobar" - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "b" - skipped - // "fooobaar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"fooobaar", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "zz" - skipped - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test no match - enumerator = [regex matchSegmentEnumeratorForString:@"aaa"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); // should have gotten nothing - - // test only match - enumerator = [regex matchSegmentEnumeratorForString:@"foobar"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // now test the saved sub segments - regex = [GTMRegex regexWithPattern:@"(foo)((bar)|(baz))"]; - STAssertNotNil(regex, nil); - STAssertEquals((NSUInteger)4, [regex subPatternCount], nil); - enumerator = [regex matchSegmentEnumeratorForString:@"foobarxxfoobaz"]; - STAssertNotNil(enumerator, nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"bar", nil); - STAssertEqualStrings([seg subPatternString:3], @"bar", nil); - STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)" - STAssertNil([seg subPatternString:5], nil); - // "xx" - skipped - // "foobaz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"baz", nil); - STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)" - STAssertEqualStrings([seg subPatternString:4], @"baz", nil); - STAssertNil([seg subPatternString:5], nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test all objects - regex = [GTMRegex regexWithPattern:@"foo+ba+r"]; - STAssertNotNil(regex, nil); - enumerator = [regex matchSegmentEnumeratorForString:@"afoobarbfooobaarfoobarzz"]; - STAssertNotNil(enumerator, nil); - NSArray *allSegments = [enumerator allObjects]; - STAssertNotNil(allSegments, nil); - STAssertEquals((NSUInteger)3, [allSegments count], nil); - - // test we are getting the flags right for newline - regex = [GTMRegex regexWithPattern:@"^a"]; - STAssertNotNil(regex, nil); - enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa"]; - STAssertNotNil(enumerator, nil); - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "a\n" - skipped - // "a" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "a" - skipped - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test we are getting the flags right for newline, part 2 - regex = [GTMRegex regexWithPattern:@"^a*$"]; - STAssertNotNil(regex, nil); - enumerator = [regex matchSegmentEnumeratorForString:@"aa\naa\nbb\naa"]; - STAssertNotNil(enumerator, nil); - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // "\n" - skipped - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // "\nbb\n" - skipped - // "aa" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aa", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); -} - -- (void)testStringByReplacingMatchesInStringWithReplacement { - GTMRegex *regex = [GTMRegex regexWithPattern:@"(foo)(.*)(bar)"]; - STAssertNotNil(regex, nil); - // the basics - STAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies", - [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies" - withReplacement:@"Z\\3Z\\2Z\\1Z"], - nil); - // nil/empty replacement - STAssertEqualStrings(@"weedoggies", - [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies" - withReplacement:nil], - nil); - STAssertEqualStrings(@"weedoggies", - [regex stringByReplacingMatchesInString:@"weefoobydoo spambardoggies" - withReplacement:@""], - nil); - STAssertEqualStrings(@"", - [regex stringByReplacingMatchesInString:@"" - withReplacement:@"abc"], - nil); - STAssertNil([regex stringByReplacingMatchesInString:nil - withReplacement:@"abc"], - nil); - // use optional and invale subexpression parts to confirm that works - regex = [GTMRegex regexWithPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNotNil(regex, nil); - STAssertEqualStrings(@"aaa baz bar bar foo baz aaa", - [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa" - withReplacement:@"\\4\\5"], - nil); - STAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa", - [regex stringByReplacingMatchesInString:@"aaa foooooobaz fooobar bar foo baz aaa" - withReplacement:@"Z\\10Z\\12Z"], - nil); - // test slashes in replacement that aren't part of the subpattern reference - regex = [GTMRegex regexWithPattern:@"a+"]; - STAssertNotNil(regex, nil); - STAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z", - [regex stringByReplacingMatchesInString:@"zaz" - withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"], - nil); - STAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az", - [regex stringByReplacingMatchesInString:@"zaz" - withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"], - nil); - STAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z", - [regex stringByReplacingMatchesInString:@"zaz" - withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"], - nil); -} - -- (void)testDescriptions { - // default options - GTMRegex *regex = [GTMRegex regexWithPattern:@"a+"]; - STAssertNotNil(regex, nil); - STAssertGreaterThan([[regex description] length], (NSUInteger)10, - @"failed to get a reasonable description for regex"); - // enumerator - NSEnumerator *enumerator = [regex segmentEnumeratorForString:@"aaabbbccc"]; - STAssertNotNil(enumerator, nil); - STAssertGreaterThan([[enumerator description] length], (NSUInteger)10, - @"failed to get a reasonable description for regex enumerator"); - // string segment - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertGreaterThan([[seg description] length], (NSUInteger)10, - @"failed to get a reasonable description for regex string segment"); - // regex w/ other options - regex = [GTMRegex regexWithPattern:@"a+" - options:(kGTMRegexOptionIgnoreCase | kGTMRegexOptionSupressNewlineSupport)]; - STAssertNotNil(regex, nil); - STAssertGreaterThan([[regex description] length], (NSUInteger)10, - @"failed to get a reasonable description for regex w/ options"); -} - -@end - -@implementation NSString_GTMRegexAdditions -// Only partial tests to test that the call get through correctly since the -// above really tests them. - -- (void)testMatchesPattern { - // simple pattern - STAssertTrue([@"foobar" gtm_matchesPattern:@"foo.*bar"], nil); - STAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"abcdef" gtm_matchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"" gtm_matchesPattern:@"foo.*bar"], nil); - // pattern w/ sub patterns - STAssertTrue([@"foobar" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertTrue([@"foobydoo spambar" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"zzfoobarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"zzfoobydoo spambarzz" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"abcdef" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"" gtm_matchesPattern:@"(foo)(.*)(bar)"], nil); -} - -- (void)testSubPatternsOfPattern { - NSArray *subPatterns = [@"foooooobaz" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNotNil(subPatterns, nil); - STAssertEquals((NSUInteger)6, [subPatterns count], nil); - STAssertEqualStrings(@"foooooobaz", [subPatterns objectAtIndex:0], nil); - STAssertEqualStrings(@"foooooo", [subPatterns objectAtIndex:1], nil); - STAssertEqualStrings(@"ooooo", [subPatterns objectAtIndex:2], nil); - STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:3], nil); - STAssertEqualObjects([NSNull null], [subPatterns objectAtIndex:4], nil); - STAssertEqualStrings(@"baz", [subPatterns objectAtIndex:5], nil); - - // not there - subPatterns = [@"aaa" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNil(subPatterns, nil); - - // not extra stuff on either end - subPatterns = [@"ZZZfoooooobaz" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNil(subPatterns, nil); - subPatterns = [@"foooooobazZZZ" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNil(subPatterns, nil); - subPatterns = [@"ZZZfoooooobazZZZ" gtm_subPatternsOfPattern:@"(fo(o+))((bar)|(baz))"]; - STAssertNil(subPatterns, nil); -} - -- (void)testFirstSubStringMatchedByPattern { - // simple pattern - STAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], - @"foobar", nil); - STAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], - @"foobydoo spambar", nil); - STAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], - @"foobar", nil); - STAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], - @"foobydoo spambar", nil); - STAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], nil); - STAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"foo.*bar"], nil); - // pattern w/ sub patterns - STAssertEqualStrings([@"foobar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], - @"foobar", nil); - STAssertEqualStrings([@"foobydoo spambar" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], - @"foobydoo spambar", nil); - STAssertEqualStrings([@"zzfoobarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], - @"foobar", nil); - STAssertEqualStrings([@"zzfoobydoo spambarzz" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], - @"foobydoo spambar", nil); - STAssertNil([@"abcdef" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], nil); - STAssertNil([@"" gtm_firstSubStringMatchedByPattern:@"(foo)(.*)(bar)"], nil); -} - -- (void)testSubStringMatchesPattern { - // simple pattern - STAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - STAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - STAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - STAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - STAssertFalse([@"" gtm_subStringMatchesPattern:@"foo.*bar"], nil); - // pattern w/ sub patterns - STAssertTrue([@"foobar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertTrue([@"foobydoo spambar" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertTrue([@"zzfoobarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertTrue([@"zzfoobydoo spambarzz" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"abcdef" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); - STAssertFalse([@"" gtm_subStringMatchesPattern:@"(foo)(.*)(bar)"], nil); -} - -- (void)testSegmentEnumeratorForPattern { - NSEnumerator *enumerator = - [@"afoobarbfooobaarfoobarzz" gtm_segmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - // "a" - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"a", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "b" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"b", nil); - // "fooobaar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"fooobaar", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "zz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"zz", nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test no match - enumerator = [@"aaa" gtm_segmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"aaa", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test only match - enumerator = [@"foobar" gtm_segmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // now test the saved sub segments - enumerator = - [@"foobarxxfoobaz" gtm_segmentEnumeratorForPattern:@"(foo)((bar)|(baz))"]; - STAssertNotNil(enumerator, nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"bar", nil); - STAssertEqualStrings([seg subPatternString:3], @"bar", nil); - STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)" - STAssertNil([seg subPatternString:5], nil); - // "xx" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertFalse([seg isMatch], nil); - STAssertEqualStrings([seg string], @"xx", nil); - STAssertEqualStrings([seg subPatternString:0], @"xx", nil); - STAssertNil([seg subPatternString:1], nil); - // "foobaz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"baz", nil); - STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)" - STAssertEqualStrings([seg subPatternString:4], @"baz", nil); - STAssertNil([seg subPatternString:5], nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test all objects - enumerator = [@"afoobarbfooobaarfoobarzz" gtm_segmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - NSArray *allSegments = [enumerator allObjects]; - STAssertNotNil(allSegments, nil); - STAssertEquals((NSUInteger)6, [allSegments count], nil); -} - -- (void)testMatchSegmentEnumeratorForPattern { - NSEnumerator *enumerator = - [@"afoobarbfooobaarfoobarzz" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - // "a" - skipped - // "foobar" - GTMRegexStringSegment *seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "b" - skipped - // "fooobaar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"fooobaar", nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - // "zz" - skipped - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test no match - enumerator = [@"aaa" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test only match - enumerator = [@"foobar" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // now test the saved sub segments - enumerator = - [@"foobarxxfoobaz" gtm_matchSegmentEnumeratorForPattern:@"(foo)((bar)|(baz))"]; - STAssertNotNil(enumerator, nil); - // "foobar" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobar", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"bar", nil); - STAssertEqualStrings([seg subPatternString:3], @"bar", nil); - STAssertNil([seg subPatternString:4], nil); // nothing matched "(baz)" - STAssertNil([seg subPatternString:5], nil); - // "xx" - skipped - // "foobaz" - seg = [enumerator nextObject]; - STAssertNotNil(seg, nil); - STAssertTrue([seg isMatch], nil); - STAssertEqualStrings([seg string], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:0], @"foobaz", nil); - STAssertEqualStrings([seg subPatternString:1], @"foo", nil); - STAssertEqualStrings([seg subPatternString:2], @"baz", nil); - STAssertNil([seg subPatternString:3], nil); // (nothing matched "(bar)" - STAssertEqualStrings([seg subPatternString:4], @"baz", nil); - STAssertNil([seg subPatternString:5], nil); - // (end) - seg = [enumerator nextObject]; - STAssertNil(seg, nil); - - // test all objects - enumerator = [@"afoobarbfooobaarfoobarzz" gtm_matchSegmentEnumeratorForPattern:@"foo+ba+r"]; - STAssertNotNil(enumerator, nil); - NSArray *allSegments = [enumerator allObjects]; - STAssertNotNil(allSegments, nil); - STAssertEquals((NSUInteger)3, [allSegments count], nil); -} - -- (void)testAllSubstringsMatchedByPattern { - NSArray *segments = - [@"afoobarbfooobaarfoobarzz" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"]; - STAssertNotNil(segments, nil); - STAssertEquals((NSUInteger)3, [segments count], nil); - STAssertEqualStrings([segments objectAtIndex:0], @"foobar", nil); - STAssertEqualStrings([segments objectAtIndex:1], @"fooobaar", nil); - STAssertEqualStrings([segments objectAtIndex:2], @"foobar", nil); - - // test no match - segments = [@"aaa" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"]; - STAssertNotNil(segments, nil); - STAssertEquals((NSUInteger)0, [segments count], nil); - - // test only match - segments = [@"foobar" gtm_allSubstringsMatchedByPattern:@"foo+ba+r"]; - STAssertNotNil(segments, nil); - STAssertEquals((NSUInteger)1, [segments count], nil); - STAssertEqualStrings([segments objectAtIndex:0], @"foobar", nil); -} - -- (void)testStringByReplacingMatchesOfPatternWithReplacement { - // the basics - STAssertEqualStrings(@"weeZbarZbydoo spamZfooZdoggies", - [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)" - withReplacement:@"Z\\3Z\\2Z\\1Z"], - nil); - // nil/empty replacement - STAssertEqualStrings(@"weedoggies", - [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)" - withReplacement:nil], - nil); - STAssertEqualStrings(@"weedoggies", - [@"weefoobydoo spambardoggies" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)" - withReplacement:@""], - nil); - STAssertEqualStrings(@"", - [@"" gtm_stringByReplacingMatchesOfPattern:@"(foo)(.*)(bar)" - withReplacement:@"abc"], - nil); - // use optional and invale subexpression parts to confirm that works - STAssertEqualStrings(@"aaa baz bar bar foo baz aaa", - [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))" - withReplacement:@"\\4\\5"], - nil); - STAssertEqualStrings(@"aaa ZZZ ZZZ bar foo baz aaa", - [@"aaa foooooobaz fooobar bar foo baz aaa" gtm_stringByReplacingMatchesOfPattern:@"(fo(o+))((bar)|(baz))" - withReplacement:@"Z\\10Z\\12Z"], - nil); - // test slashes in replacement that aren't part of the subpattern reference - STAssertEqualStrings(@"z\\\\0 \\\\a \\\\\\\\0z", - [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+" - withReplacement:@"\\\\0 \\\\\\0 \\\\\\\\0"], - nil); - STAssertEqualStrings(@"z\\\\a \\\\\\\\0 \\\\\\\\az", - [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+" - withReplacement:@"\\\\\\0 \\\\\\\\0 \\\\\\\\\\0"], - nil); - STAssertEqualStrings(@"z\\\\\\\\0 \\\\\\\\a \\\\\\\\\\\\0z", - [@"zaz" gtm_stringByReplacingMatchesOfPattern:@"a+" - withReplacement:@"\\\\\\\\0 \\\\\\\\\\0 \\\\\\\\\\\\0"], - nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.h deleted file mode 100644 index 0697d5aa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.h +++ /dev/null @@ -1,713 +0,0 @@ -// -// GTMSQLite.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// -// -// This class is a convenience wrapper for SQLite storage with -// release/retain semantics. In its most basic form, that is all this -// class offers. You have the option of activating "CFAdditions" on -// init which patches or overrides the following SQLite functionality: -// -// - Strings you pass through the API layer will always be converted -// to precomposed UTF-8 with compatibility mapping -// (kCFStringNormalizationFormKC). This is done in an attempt to -// make SQLite correctly handle string equality for composed -// character sequences. This change applies only to -// NSStrings/CFStrings passed through the GTMSQLiteDatabase or -// GTMSQLiteStatement. Direct access to the database using the -// underlying sqlite3_* handles is not affected. -// -// - The SQL UPPER/LOWER functions are replaced with CFString-based -// implementations which (unlike SQLite's native implementation) -// handle case conversion outside the ASCII range. These -// implementations seem to be 20-30% slower than the SQLite -// implementations but may be worth it for accuracy. -// -// - The SQLite "NOCASE" collation is replaced with a CFString-based -// collation that is case insensitive but still uses literal -// comparison (composition-sensitive). -// -// - Additional collation sequences can be created by using these keywords -// separated by underscores. Each option corresponds to a CFStringCompareFlags -// option. -// NOCASE (kCFCompareCaseInsensitive) -// NONLITERAL (kCFCompareNonliteral) -// LOCALIZED (kCFCompareLocalized) -// NUMERIC (kCFCompareNumerically) - -// These additional options are available when linking with the 10.5 SDK: -// NODIACRITIC (kCFCompareDiacriticInsensitive) -// WIDTHINSENSITIVE (kCFCompareWidthInsensitive) -// -// Ordering of the above options can be changed by adding "REVERSE". -// -// Thus, for a case-insensitive, width-insensitive, composition-insensitive -// comparison that ignores diacritical marks and sorts in reverse use: -// -// NOCASE_NONLITERAL_NODIACRITIC_WIDTHINSENSITIVE_REVERSE -// -// - SQL LIKE and GLOB commands are implemented with CFString/CFCharacterSet -// comparisons. As with the other CF additions, this gives us better handling -// of case and composed character sequences. However, whereever reasonable, -// SQLite semantics have been retained. Specific notes: -// -// * LIKE is case insensitive and uses non-literal comparison -// (kCFCompareNonliteral) by default. It is possible to modify this -// behavior using the accessor methods. You must use those methods -// instead of the SQLite "PRAGMA case_sensitive_like" in order for them -// to interact properly with our CFString implementations. -// -// * ESCAPE clauses to LIKE are honored, but the escape character must -// be expressable as a single UniChar (UTF16). The escaped characters in -// LIKE only escape the following UniChar, not a composed character -// sequence. This is not viewed as a limitation since the use of ESCAPE -// is typically only for characters with meaning to SQL LIKE ('%', '_') -// all of which can be expressed as a single UniChar. -// -// * GLOB is by default case sensitive but non-literal. Again, accessor -// methods are available to change this behavior. -// -// * Single character pattern matches ('_' for LIKE, '?' for GLOB) will -// always consume a full composed character sequence. -// -// * As with the standard SQLite implementation, character set comparisons -// are only available for GLOB. -// -// * Character set comparisons are always literal and case sensitive and do -// not take into account composed character sequences. Essentially -// character sets should always be expressed as a set of single UniChars -// or ranges between single UniChars. -// - -// SQLite is preinstalled on 10.4 only. As long as we're using the OS version -// of the library, limit ourself to Tiger+ -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_4 -#error SQLite support is Tiger or later -#endif - -#import -#import - -/// Wrapper for SQLite with release/retain semantics and CFString convenience features -@interface GTMSQLiteDatabase : NSObject { - @protected - sqlite3 *db_; // strong - NSString *path_; // strong - int timeoutMS_; - BOOL hasCFAdditions_; - CFOptionFlags likeOptions_; - CFOptionFlags globOptions_; - NSMutableArray *userArgDataPool_; // strong -} - -// Get the numeric version number of the SQLite library (compiled in value -// for SQLITE_VERSION_NUMBER). -// -// Returns: -// Integer version number -// -+ (int)sqliteVersionNumber; - -// Get the string version number of the SQLite library. -// -// Returns: -// Autoreleased NSString version string -// -+ (NSString *)sqliteVersionString; - -// Create and open a database instance on a file-based database. -// -// Args: -// path: Path to the database. If it does not exist an empty database -// will be created. -// withCFAdditions: If true, the SQLite database will include CFString -// based string functions and collation sequences. See -// the class header for information on these differences -// and performance impact. -// err: Result code from SQLite. If nil is returned by this function -// check the result code for the error. If NULL no result code is -// reported. -// -- (id)initWithPath:(NSString *)path - withCFAdditions:(BOOL)additions - utf8:(BOOL)useUTF8 - errorCode:(int *)err; - -// Create and open a memory-based database. Memory-based databases -// cannot be shared amongst threads, and each instance is unique. See -// SQLite documentation for details. -// -// For argument details see [... initWithPath:withCFAdditions:errorCode:] -// -- (id)initInMemoryWithCFAdditions:(BOOL)additions - utf8:(BOOL)useUTF8 - errorCode:(int *)err; - -// Get the underlying SQLite database handle. In general you should -// never do this, if you do use this be careful with how you compose -// and decompse strings you pass to the database. -// -// Returns: -// sqlite3 pointer -// -- (sqlite3 *)sqlite3DB; - -// Enable/Disable the database synchronous mode. Disabling -// synchronous mode results in much faster insert throughput at the -// cost of safety. See the SQlite documentation for details. -// -// Args: -// enable: Boolean flag to determine mode. -// -- (void)synchronousMode:(BOOL)enable; - -// Check if this database instance has our CFString functions and collation -// sequences (see top of file for details). -// -// Returns: -// YES if the GTMSQLiteDatabase instance has our CF additions -// -- (BOOL)hasCFAdditions; - -// Set comparison options for the "LIKE" operator for databases with -// our CF addtions active. -// -// Args: -// options: CFStringCompareFlags value. Note that a limited list -// of options are supported. For example one cannot -// use kCFCompareBackwards as an option. -// -- (void)setLikeComparisonOptions:(CFOptionFlags)options; - -// Get current comparison options for the "LIKE" operator in a database -// with our CF additions active. -// -// Returns: -// Current comparison options or zero if CF additions are inactive. -// -- (CFOptionFlags)likeComparisonOptions; - -// Set comparison options for the "GLOB" operator for databases with -// our CF addtions active. -// -// Args: -// options: CFStringCompareFlags value. Note that a limited list -// of options are supported. For example one cannot -// use kCFCompareBackwards as an option. -// -- (void)setGlobComparisonOptions:(CFOptionFlags)options; - -// Get current comparison options for the "GLOB" operator in a database -// with our CF additions active. -// -// Returns: -// Current comparison options or zero if CF additions are inactive. -// -- (CFOptionFlags)globComparisonOptions; - -// Obtain the last error code from the database -// -// Returns: -// SQLite error code, if no error is pending returns SQLITE_OK -// -- (int)lastErrorCode; - -// Obtain an error string for the last error from the database -// -// Returns: -// Autoreleased NSString error message -// -- (NSString *)lastErrorString; - -// Obtain a count of rows added, mmodified or deleted by the most recent -// statement. See sqlite3_changes() for details and limitations. -// -// Returns: -// Row count -// -- (int)lastChangeCount; - -// Obtain a count of rows added, mmodified or deleted since the database -// was opened. See sqlite3_total_changes() for details and limitations. -// -// Returns: -// Row count -// -- (int)totalChangeCount; - -// Obtain the last insert row ID -// -// Returns: -// 64-bit row ID -// -- (unsigned long long)lastInsertRowID; - -// Interrupt any currently running database operations as soon as possible. -// Running operations will receive a SQLITE_INTERRUPT and will need to -// handle it correctly (this is the callers problem to deal with). -// -- (void)interrupt; - -// Set the timeout value in milliseconds. This is a database global affecting -// all running and future statements. -// -// Args: -// timeoutMS: Integer count in ms SQLite will wait for the database to -// unlock before giving up and returning SQLITE_BUSY. A value -// of 0 or less means the database always returns immediately. -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)setBusyTimeoutMS:(int)timeoutMS; - -// Get the current busy timeout in milliseconds. -// -// Returns: -// Current database busy timeout value in ms, 0 or less means no timeout. -// -- (int)busyTimeoutMS; - -// Execute a string containing one or more SQL statements. No returned data -// is available, use GTMSQLiteStatement for that usage. -// -// Args: -// sql: Raw SQL statement to prepare. It is the caller's responsibility -// to properly escape the SQL. -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)executeSQL:(NSString *)sql; - -// Convenience method to start a deferred transaction (most common case). -// -// Returns: -// YES if the transaction started successfully -// -- (BOOL)beginDeferredTransaction; - -// Convenience method to roll back a transaction. -// -// Returns: -// YES if the transaction rolled back successfully -// -- (BOOL)rollback; - -// Convenience method to commit a transaction. -// -// Returns: -// YES if the transaction committed successfully -// -- (BOOL)commit; - -@end - -// Wrapper class for SQLite statements with retain/release semantics. -// Attempts to behave like an NSEnumerator, however you should bind -// your values before beginning enumeration and unlike NSEnumerator, -// a reset is supported. -// -// The GTMSQLiteDatabase class has options to modify some SQL -// functions and force particular string representations. This class -// honors the database preferences for those options. See the -// GTMSQLiteDatabase header for details. - -/// Wrapper class for SQLite statements with retain/release -/// semantics. -@interface GTMSQLiteStatement : NSObject { - -@protected - sqlite3_stmt *statement_; - BOOL hasCFAdditions_; -} - -#pragma mark Creation, Access and Finalization - -// Create an autoreleased prepared statement, see initWithSQL: for arguments. -// -// NOTE: Even though this object is autoreleased you MUST call -// [finalizeStatement] on this when your done. See the init for explanation. -// -// Returns: -// Autoreleased GTMSQLiteStatement -// -+ (id)statementWithSQL:(NSString *)sql - inDatabase:(GTMSQLiteDatabase *)gtmdb - errorCode:(int *)err; - -// Designated initializer, create a prepared statement. Positional and named -// parameters are supported, see the SQLite documentation. -// -// NOTE: Although this object will clean up its statement when deallocated, -// you are REQUIRED to "finalize" the statement when you are -// through with it. Failing to do this will prevent the database from allowing -// new transactions or queries. In other words, leaving an instance on the -// autorelease pool unfinalized may interfere with other database usage if any -// caller sharing the database uses transactions. -// -// Args: -// sql: Raw SQL statement to prepare. It is the caller's responsibility -// to properly escape the SQL and make sure that the SQL contains -// only _one_ statement. Additional statements are silently ignored. -// db: The GTMSQLiteDatabase (not retained) -// err: Result code from SQLite. If nil is returned by this function -// check the result code for the error. If NULL no result code is -// reported. -// -- (id)initWithSQL:(NSString *)sql - inDatabase:(GTMSQLiteDatabase *)gtmdb - errorCode:(int *)err; - -// Get the underlying SQLite statement handle. In general you should never -// do this, if you do use this be careful with how you compose and -// decompse strings you pass to the database. -// -// Returns: -// sqlite3_stmt pointer -// -- (sqlite3_stmt *)sqlite3Statement; - -// Finalize the statement, allowing other transactions to start on the database -// This method MUST be called when you are done with a statement. Failure to -// do so means that the database will not be torn down properly when it's -// retain count drops to 0 or GC collects it. -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)finalizeStatement; - -#pragma mark Parameters and Binding - -// Get the number of parameters that can be bound in the prepared statement. -// -// Returns: -// Integer count of parameters or -1 on error -// -- (int)parameterCount; - -// Get the position of a parameter with a given name. -// -// Args: -// paramName: String name of the parameter, including any leading punctuation -// (see SQLite docs) -// -// Returns: -// 1-based parameter position index or -1 on error -// -- (int)positionOfParameterNamed:(NSString *)paramName; - -// Get the name of a parameter at a particular index. -// -// Args: -// position: Parameter position (1-based index) -// -// Returns: -// Autoreleased string name of the parameter, including any leading -// punctuation (see SQLite docs) or nil on error. -// -- (NSString *)nameOfParameterAtPosition:(int)position; - -// Bind a NULL at a given position -// -// Args: -// position: Parameter position (1-based index) -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindSQLNullAtPosition:(int)position; - -// Bind a blob parameter at a given position index to a raw pointer and -// length. The data will be copied by SQLite -// -// Args: -// position: Parameter position (1-based index) -// bytes: Raw pointer to the data to copy/bind -// length: Number of bytes in the blob -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindBlobAtPosition:(int)position bytes:(void *)bytes length:(int)length; - -// Bind an NSData as a blob at a given position. The data will be copied -// by SQLite. -// -// Args: -// position: Parameter position (1-based index) -// data: NSData to convert to blob -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindBlobAtPosition:(int)position data:(NSData *)data; - -// Bind a double at the given position (for floats convert to double). -// -// Args: -// position: Parameter position (1-based index) -// value: Double to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindDoubleAtPosition:(int)position value:(double)value; - -// Bind an NSNumber as a double value at the given position. -// -// Args: -// position: Parameter position (1-based index) -// number: NSNumber to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindNumberAsDoubleAtPosition:(int)position number:(NSNumber *)number; - -// Bind a 32-bit integer at the given position. -// -// Args: -// position: Parameter position (1-based index) -// value: Integer to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindInt32AtPosition:(int)position value:(int)value; - -// Bind an NSNumber as a 32-bit integer value at the given position. -// -// Args: -// position: Parameter position (1-based index) -// number: NSNumber to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindNumberAsInt32AtPosition:(int)position number:(NSNumber *)number; - -// Bind a 64-bit integer at the given position. -// -// Args: -// position: Parameter position (1-based index) -// value: Int64 value to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindLongLongAtPosition:(int)position value:(long long)value; - -// Bind an NSNumber as a 64-bit integer value at the given position. -// -// Args: -// position: Parameter position (1-based index) -// number: NSNumber to bind -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindNumberAsLongLongAtPosition:(int)position number:(NSNumber *)number; - -// Bind a string at the given position. -// -// Args: -// position: Parameter position (1-based index) -// string: String to bind (string will be converted to UTF8 and copied). -// NOTE: For bindings it is not necessary for you to SQL escape -// your strings. -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)bindStringAtPosition:(int)position string:(NSString *)string; - -#pragma mark Results - -// Get the number of result columns per row this statement will generate. -// -// Returns: -// Column count, 0 if no columns will be returned ("UPDATE.." etc.), -// -1 on error. -// -- (int)resultColumnCount; - -// Get the name of result colument at a given index. -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Autoreleased NSString column name or nil if no column exists at that -// position or error. -// -- (NSString *)resultColumnNameAtPosition:(int)position; - -// Get the number of data values in the current row of this statement. -// Generally this will be the same as resultColumnCount:, except when row -// iteration is done (see SQLite docs for sqlite3_data_count()). -// -// Returns: -// Data count or 0 if no data will be returned, -1 on error. -// -- (int)rowDataCount; - -// Get the SQLite type constant for a column in a row. Note that because -// SQLite does not enforce column type restrictions the type of a particular -// column in a row may not match the declared type of the column. -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// SQLite data type constant (i.e. SQLITE_INTEGER, SQLITE_FLOAT, etc.) or -// -1 on error. -// -- (int)resultColumnTypeAtPosition:(int)position; - -// Get the data for a result row blob column as an NSData -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Autoreleased NSData, nil on error -// -- (NSData *)resultBlobDataAtPosition:(int)position; - -// Get the data for a result row blob column as a double -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Double value -// -- (double)resultDoubleAtPosition:(int)position; - -// Get the data for a result row blob column as an integer -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Integer value -// -- (int)resultInt32AtPosition:(int)position; - -// Get the data for a result row blob column as a long long -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Long long value -// -- (long long)resultLongLongAtPosition:(int)position; - -// Get the data for a result row blob column as an NSNumber -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Autoreleased NSNumber value or nil on error -// -- (NSNumber *)resultNumberAtPosition:(int)position; - -// Get the data for a result row blob column as an NSString -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Autoreleased NSString value or nil on error -// -- (NSString *)resultStringAtPosition:(int)position; - -// Get a Foundation object (NSData, NSNumber, NSString, NSNull) for the column, -// autodetecting the most appropriate representation. -// -// Args: -// position: Column position (0-based index) -// -// Returns: -// Autoreleased Foundation type, nil on error -// -- (id)resultFoundationObjectAtPosition:(int)position; - -// Get an array of Foundation objects for the row in query column order. -// -// Returns: -// Autoreleased array of Foundation types or nil if there is no -// data in the row or error -// -- (NSArray *)resultRowArray; - -// Get a dictionary of Foundation objects for the row keyed by column name. -// -// Returns: -// Autoreleased dictionary of Foundation types or nil if there is no -// data in the row or error. -// -- (NSDictionary *)resultRowDictionary; - -#pragma mark Rows - -// Step the statement forward one row, potentially spinning forever till -// the row can be located (if database is SQLITE_BUSY). -// -// Returns: -// SQLite result code, SQLITE_ROW if a row was found or SQLITE_DONE if -// no further rows match the statement. -// -- (int)stepRow; - -// Step the statement forward one row, waiting at most the currrent database -// busy timeout (see [GTMSQLiteDatabase setBusyTimeoutMS]). -// -// Returns: -// SQLite result code, SQLITE_ROW if a row was found or SQLITE_DONE if -// no further rows match the statement. If SQLITE_BUSY is returned the -// database did not unlock during the timeout. -// -- (int)stepRowWithTimeout; - -// Reset the statement starting again at the first row -// -// Returns: -// SQLite result code, SQLITE_OK on no error -// -- (int)reset; - -// Check if the SQLite parser recognizes the receiver as one or more valid -// SQLite statements. -// -// Returns: -// YES if the string is a complete and valid SQLite statement -// -+ (BOOL)isCompleteStatement:(NSString *)string; - -// Quote and escape the receiver for SQL. -// Example: "This is wild! It's fun!" -// Becomes: "'This is wild! It''s fun!'" -// -// Returns: -// Autoreleased NSString -+ (NSString *)quoteAndEscapeString:(NSString *)string; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.m deleted file mode 100644 index 0225ff54..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLite.m +++ /dev/null @@ -1,2012 +0,0 @@ -// -// GTMSQLite.m -// -// Convenience wrapper for SQLite storage see the header for details. -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - - -#import -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -#import -#endif -#import "GTMSQLite.h" -#import "GTMMethodCheck.h" -#import "GTMDefines.h" -#include -#import "GTMGarbageCollection.h" - -typedef struct { - BOOL upperCase; - int textRep; -} UpperLowerUserArgs; - -typedef struct { - BOOL reverse; - CFOptionFlags compareOptions; - int textRep; -} CollateUserArgs; - -typedef struct { - CFOptionFlags *compareOptionPtr; - int textRep; -} LikeGlobUserArgs; - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -// While we want to be compatible with Tiger, some operations are more -// efficient when implemented with Leopard APIs. We look those up dynamically. -// CFStringCreateWithBytesNoCopy -static const char* const kCFStringCreateWithBytesNoCopySymbolName = - "CFStringCreateWithBytesNoCopy"; - -typedef CFStringRef (*CFStringCreateWithBytesNoCopyPtrType)(CFAllocatorRef, - const UInt8 *, - CFIndex, - CFStringEncoding, - Boolean, - CFAllocatorRef); -static CFStringCreateWithBytesNoCopyPtrType gCFStringCreateWithBytesNoCopySymbol = NULL; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -// Helper inline for SQLite text type to CF endcoding -GTM_INLINE CFStringEncoding SqliteTextEncodingToCFStringEncoding(int enc) { - // Default should never happen, but assume UTF 8 - CFStringEncoding encoding = kCFStringEncodingUTF8; - _GTMDevAssert(enc == SQLITE_UTF16BE || - enc == SQLITE_UTF16LE, - @"Passed in encoding was not a UTF16 encoding"); - switch(enc) { - case SQLITE_UTF16BE: - encoding = kCFStringEncodingUTF16BE; - break; - case SQLITE_UTF16LE: - encoding = kCFStringEncodingUTF16LE; - break; - } - return encoding; -} - -// Helper inline for filtering CFStringCompareFlags -GTM_INLINE CFOptionFlags FilteredStringCompareFlags(CFOptionFlags inOptions) { - CFOptionFlags outOptions = 0; - if (inOptions & kCFCompareCaseInsensitive) { - outOptions |= kCFCompareCaseInsensitive; - } - if (inOptions & kCFCompareNonliteral) outOptions |= kCFCompareNonliteral; - if (inOptions & kCFCompareLocalized) outOptions |= kCFCompareLocalized; - if (inOptions & kCFCompareNumerically) outOptions |= kCFCompareNumerically; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - if (inOptions & kCFCompareDiacriticInsensitive) { - outOptions |= kCFCompareDiacriticInsensitive; - } - if (inOptions & kCFCompareWidthInsensitive) { - outOptions |= kCFCompareWidthInsensitive; - } -#endif - return outOptions; -} - -// Function prototypes for our custom implementations of UPPER/LOWER using -// CFString so that we handle Unicode and localization more cleanly than -// native SQLite. -static void UpperLower8(sqlite3_context *context, - int argc, - sqlite3_value **argv); -static void UpperLower16(sqlite3_context *context, - int argc, - sqlite3_value **argv); - -// Function prototypes for CFString-based collation sequences -static void CollateNeeded(void *userContext, sqlite3 *db, - int textRep, const char *name); -static int Collate8(void *userContext, int length1, const void *str1, - int length2, const void *str2); -static int Collate16(void *userContext, int length1, const void *str1, - int length2, const void *str2); - -// Function prototypes for CFString LIKE and GLOB -static void Like8(sqlite3_context *context, int argc, sqlite3_value **argv); -static void Like16(sqlite3_context *context, int argc, sqlite3_value **argv); -static void Glob8(sqlite3_context *context, int argc, sqlite3_value **argv); -static void Glob16(sqlite3_context *context, int argc, sqlite3_value **argv); - -// The CFLocale of the current user at process start -static CFLocaleRef gCurrentLocale = NULL; - -// Private methods -@interface GTMSQLiteDatabase (PrivateMethods) - -- (int)installCFAdditions; -- (void)collationArgumentRetain:(NSData *)collationArgs; -// Convenience method to clean up resources. Called from both -// dealloc & finalize -// -- (void)cleanupDB; -@end - -@implementation GTMSQLiteDatabase - -+ (void)initialize { - // Need the locale for some CFString enhancements - gCurrentLocale = CFLocaleCopyCurrent(); - -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - // Compiling pre-Leopard try to find some symbols dynamically - gCFStringCreateWithBytesNoCopySymbol = - (CFStringCreateWithBytesNoCopyPtrType)dlsym( - RTLD_DEFAULT, - kCFStringCreateWithBytesNoCopySymbolName); -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -} - -+ (int)sqliteVersionNumber { - return sqlite3_libversion_number(); -} - -+ (NSString *)sqliteVersionString { - return [NSString stringWithUTF8String:sqlite3_libversion()]; -} - -- (id)initWithPath:(NSString *)path - withCFAdditions:(BOOL)additions - utf8:(BOOL)useUTF8 - errorCode:(int *)err { - int rc = SQLITE_INTERNAL; - - if ((self = [super init])) { - path_ = [path copy]; - if (useUTF8) { - rc = sqlite3_open([path_ fileSystemRepresentation], &db_); - } else { - CFStringEncoding cfEncoding; -#if TARGET_RT_BIG_ENDIAN - cfEncoding = kCFStringEncodingUTF16BE; -#else - cfEncoding = kCFStringEncodingUTF16LE; -#endif - NSStringEncoding nsEncoding - = CFStringConvertEncodingToNSStringEncoding(cfEncoding); - NSData *data = [path dataUsingEncoding:nsEncoding]; - // Using -[NSString cStringUsingEncoding] causes sqlite3_open16 - // to fail because it expects 2 null-terminating bytes and - // cStringUsingEncoding only has 1 - NSMutableData *mutable = [NSMutableData dataWithData:data]; - [mutable increaseLengthBy:2]; - rc = sqlite3_open16([mutable bytes], &db_); - } - - if ((rc == SQLITE_OK) && db_) { - if (additions) { - userArgDataPool_ = [[NSMutableArray array] retain]; - if (!userArgDataPool_) { - // Leave *err as internal err - // COV_NF_START - not sure how to fail Cocoa initializers - [self release]; - return nil; - // COV_NF_END - } - rc = [self installCFAdditions]; - } - } - - if (err) *err = rc; - - if (rc != SQLITE_OK) { - // COV_NF_START - [self release]; - self = nil; - // COV_NF_END - } - } - - return self; -} - -- (id)initInMemoryWithCFAdditions:(BOOL)additions - utf8:(BOOL)useUTF8 - errorCode:(int *)err { - return [self initWithPath:@":memory:" - withCFAdditions:additions - utf8:useUTF8 - errorCode:err]; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - [self cleanupDB]; - [super finalize]; -} -#endif - -- (void)dealloc { - [self cleanupDB]; - [super dealloc]; -} - -- (void)cleanupDB { - if (db_) { - int rc = sqlite3_close(db_); - if (rc != SQLITE_OK) { - _GTMDevLog(@"Unable to close \"%@\", error code: %d\r" - @"Did you forget to call -[GTMSQLiteStatement" - @" finalizeStatement] on one of your statements?", - self, rc); - } - } - [path_ release]; - [userArgDataPool_ release]; -} - -// Private method to install our custom CoreFoundation additions to SQLite -// behavior -- (int)installCFAdditions { - int rc = SQLITE_OK; - // Install our custom functions for improved text handling - // UPPER/LOWER - const struct { - const char *sqlName; - UpperLowerUserArgs userArgs; - void *function; - } customUpperLower[] = { - { "upper", { YES, SQLITE_UTF8 }, &UpperLower8 }, - { "upper", { YES, SQLITE_UTF16 }, &UpperLower16 }, - { "upper", { YES, SQLITE_UTF16BE }, &UpperLower16 }, - { "upper", { YES, SQLITE_UTF16LE }, &UpperLower16 }, - { "lower", { NO, SQLITE_UTF8 }, &UpperLower8 }, - { "lower", { NO, SQLITE_UTF16 }, &UpperLower16 }, - { "lower", { NO, SQLITE_UTF16BE }, &UpperLower16 }, - { "lower", { NO, SQLITE_UTF16LE }, &UpperLower16 }, - }; - - for (size_t i = 0; - i < (sizeof(customUpperLower) / sizeof(customUpperLower[0])); - i++) { - rc = sqlite3_create_function(db_, - customUpperLower[i].sqlName, - 1, - customUpperLower[i].userArgs.textRep, - (void *)&customUpperLower[i].userArgs, - customUpperLower[i].function, - NULL, - NULL); - if (rc != SQLITE_OK) - return rc; // COV_NF_LINE because sqlite3_create_function is - // called with input defined at compile-time - } - - // Fixed collation sequences - const struct { - const char *sqlName; - CollateUserArgs userArgs; - void *function; - } customCollationSequence[] = { - { "nocase", { NO, kCFCompareCaseInsensitive, SQLITE_UTF8 }, &Collate8 }, - { "nocase", { NO, kCFCompareCaseInsensitive, SQLITE_UTF16 }, &Collate16 }, - { "nocase", { NO, kCFCompareCaseInsensitive, SQLITE_UTF16BE }, &Collate16 }, - { "nocase", { NO, kCFCompareCaseInsensitive, SQLITE_UTF16LE }, &Collate16 }, - }; - - for (size_t i = 0; - i < (sizeof(customCollationSequence) / sizeof(customCollationSequence[0])); - i++) { - rc = sqlite3_create_collation(db_, - customCollationSequence[i].sqlName, - customCollationSequence[i].userArgs.textRep, - (void *)&customCollationSequence[i].userArgs, - customCollationSequence[i].function); - if (rc != SQLITE_OK) - return rc; // COV_NF_LINE because the input to - // sqlite3_create_collation is set at compile time - } - - // Install handler for dynamic collation sequences - const struct { - const char *sqlName; - int numArgs; - int textRep; - void *function; - } customLike[] = { - { "like", 2, SQLITE_UTF8, &Like8 }, - { "like", 2, SQLITE_UTF16, &Like16 }, - { "like", 2, SQLITE_UTF16BE, &Like16 }, - { "like", 2, SQLITE_UTF16LE, &Like16 }, - { "like", 3, SQLITE_UTF8, &Like8 }, - { "like", 3, SQLITE_UTF16, &Like16 }, - { "like", 3, SQLITE_UTF16BE, &Like16 }, - { "like", 3, SQLITE_UTF16LE, &Like16 }, - }; - - rc = sqlite3_collation_needed(db_, self, &CollateNeeded); - if (rc != SQLITE_OK) - return rc; // COV_NF_LINE because input to - // sqlite3_collation_needed is static - - // Start LIKE as case-insensitive and non-literal - // (sqlite defaults LIKE to case-insensitive) - likeOptions_ = kCFCompareCaseInsensitive | kCFCompareNonliteral; - for (size_t i = 0; i < (sizeof(customLike) / sizeof(customLike[0])); i++) { - // Each implementation gets its own user args - NSMutableData *argsData - = [NSMutableData dataWithLength:sizeof(LikeGlobUserArgs)]; - if (!argsData) return SQLITE_INTERNAL; - [userArgDataPool_ addObject:argsData]; - LikeGlobUserArgs *args = (LikeGlobUserArgs *)[argsData bytes]; - args->compareOptionPtr = &likeOptions_; - args->textRep = customLike[i].textRep; - rc = sqlite3_create_function(db_, - customLike[i].sqlName, - customLike[i].numArgs, - customLike[i].textRep, - args, - customLike[i].function, - NULL, - NULL); - if (rc != SQLITE_OK) - return rc; // COV_NF_LINE because input to - // sqlite3_create_function is static - } - - // Start GLOB just non-literal but case-sensitive (same as SQLite defaults) - const struct { - const char *sqlName; - int textRep; - void *function; - } customGlob[] = { - { "glob", SQLITE_UTF8, &Glob8 }, - { "glob", SQLITE_UTF16, &Glob16 }, - { "glob", SQLITE_UTF16BE, &Glob16 }, - { "glob", SQLITE_UTF16LE, &Glob16 }, - }; - - globOptions_ = kCFCompareNonliteral; - for (size_t i = 0; i < (sizeof(customGlob) / sizeof(customGlob[0])); i++) { - // Each implementation gets its own user args - NSMutableData *argsData - = [NSMutableData dataWithLength:sizeof(LikeGlobUserArgs)]; - if (!argsData) return SQLITE_INTERNAL; - [userArgDataPool_ addObject:argsData]; - LikeGlobUserArgs *args = (LikeGlobUserArgs *)[argsData bytes]; - args->compareOptionPtr = &globOptions_; - args->textRep = customGlob[i].textRep; - rc = sqlite3_create_function(db_, - customGlob[i].sqlName, - 2, - customGlob[i].textRep, - args, - customGlob[i].function, - NULL, - NULL); - if (rc != SQLITE_OK) - return rc; // COV_NF_LINE because input to - // sqlite3_create_function is static - } - - hasCFAdditions_ = YES; - return SQLITE_OK; -} - -// Private method used by collation creation callback -- (void)collationArgumentRetain:(NSData *)collationArgs { - [userArgDataPool_ addObject:collationArgs]; -} - -- (sqlite3 *)sqlite3DB { - return db_; -} - -- (void)synchronousMode:(BOOL)enable { - if (enable) { - [self executeSQL:@"PRAGMA synchronous = NORMAL;"]; - [self executeSQL:@"PRAGMA fullfsync = 1;"]; - } else { - [self executeSQL:@"PRAGMA fullfsync = 0;"]; - [self executeSQL:@"PRAGMA synchronous = OFF;"]; - } -} - -- (BOOL)hasCFAdditions { - return hasCFAdditions_; -} - -- (void)setLikeComparisonOptions:(CFOptionFlags)options { - if (hasCFAdditions_) - likeOptions_ = FilteredStringCompareFlags(options); -} - -- (CFOptionFlags)likeComparisonOptions { - CFOptionFlags flags = 0; - if (hasCFAdditions_) - flags = likeOptions_; - return flags; -} - -- (void)setGlobComparisonOptions:(CFOptionFlags)options { - if (hasCFAdditions_) - globOptions_ = FilteredStringCompareFlags(options); -} - -- (CFOptionFlags)globComparisonOptions { - CFOptionFlags globOptions = 0; - if (hasCFAdditions_) - globOptions = globOptions_; - return globOptions; -} - -- (int)lastErrorCode { - return sqlite3_errcode(db_); -} - -- (NSString *)lastErrorString { - const char *errMsg = sqlite3_errmsg(db_); - if (!errMsg) return nil; - return [NSString stringWithCString:errMsg encoding:NSUTF8StringEncoding]; -} - -- (int)lastChangeCount { - return sqlite3_changes(db_); -} - -- (int)totalChangeCount { - return sqlite3_total_changes(db_); -} - -- (unsigned long long)lastInsertRowID { - return sqlite3_last_insert_rowid(db_); -} - -- (void)interrupt { - sqlite3_interrupt(db_); -} - -- (int)setBusyTimeoutMS:(int)timeoutMS { - int rc = sqlite3_busy_timeout(db_, timeoutMS); - if (rc == SQLITE_OK) { - timeoutMS_ = timeoutMS; - } - return rc; -} - -- (int)busyTimeoutMS { - return timeoutMS_; -} - -- (int)executeSQL:(NSString *)sql { - int rc; - // Sanity - if (!sql) { - rc = SQLITE_MISUSE; // Reasonable return for this case - } else { - if (hasCFAdditions_) { - rc = sqlite3_exec(db_, - [[sql precomposedStringWithCanonicalMapping] - UTF8String], - NULL, NULL, NULL); - } else { - rc = sqlite3_exec(db_, [sql UTF8String], NULL, NULL, NULL); - } - } - return rc; -} - -- (BOOL)beginDeferredTransaction { - int err; - err = [self executeSQL:@"BEGIN DEFERRED TRANSACTION;"]; - return (err == SQLITE_OK) ? YES : NO; -} - -- (BOOL)rollback { - int err = [self executeSQL:@"ROLLBACK TRANSACTION;"]; - return (err == SQLITE_OK) ? YES : NO; -} - -- (BOOL)commit { - int err = [self executeSQL:@"COMMIT TRANSACTION;"]; - return (err == SQLITE_OK) ? YES : NO; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p - %@>", - [self class], self, path_]; -} -@end - - -#pragma mark Upper/Lower - -// Private helper to handle upper/lower conversions for UTF8 -static void UpperLower8(sqlite3_context *context, int argc, sqlite3_value **argv) { - // Args - if ((argc < 1) || (sqlite3_value_type(argv[0]) == SQLITE_NULL)) { - // COV_NF_START - sqlite3_result_error(context, "LOWER/UPPER CF implementation got bad args", - -1); - return; - // COV_NF_END - } - const char *sqlText8 = (void *)sqlite3_value_text(argv[0]); - if (!sqlText8) { - // COV_NF_START - sqlite3_result_error(context, "LOWER/UPPER CF implementation no input UTF8", - -1); - return; - // COV_NF_END - } - - // Get user data - UpperLowerUserArgs *userArgs = sqlite3_user_data(context); - if (!userArgs) { - // COV_NF_START - sqlite3_result_error(context, "LOWER/UPPER CF implementation no user args", - -1); - return; - // COV_NF_END - } - - _GTMDevAssert(userArgs->textRep == SQLITE_UTF8, - @"Received non UTF8 encoding in UpperLower8"); - - // Worker string, must be mutable for case conversion so order our calls - // to only copy once - CFMutableStringRef workerString = - CFStringCreateMutable(kCFAllocatorDefault, 0); - GTMCFAutorelease(workerString); - if (!workerString) { - // COV_NF_START - sqlite3_result_error(context, - "LOWER/UPPER CF implementation failed " \ - "to allocate CFMutableStringRef", -1); - return; - // COV_NF_END - } - CFStringAppendCString(workerString, sqlText8, kCFStringEncodingUTF8); - - // Perform the upper/lower - if (userArgs->upperCase) { - CFStringUppercase(workerString, gCurrentLocale); - } else { - CFStringLowercase(workerString, gCurrentLocale); - } - - // Convert to our canonical composition - CFStringNormalize(workerString, kCFStringNormalizationFormC); - - // Get the bytes we will return, using the more efficient accessor if we can - const char *returnString = CFStringGetCStringPtr(workerString, - kCFStringEncodingUTF8); - if (returnString) { - // COV_NF_START - // Direct buffer, but have SQLite copy it - sqlite3_result_text(context, returnString, -1, SQLITE_TRANSIENT); - // COV_NF_END - } else { - // Need to get a copy - CFIndex workerLength = CFStringGetLength(workerString); - CFIndex bufferSize = - CFStringGetMaximumSizeForEncoding(workerLength, - kCFStringEncodingUTF8); - void *returnBuffer = malloc(bufferSize); - if (!returnBuffer) { - // COV_NF_START - sqlite3_result_error(context, - "LOWER/UPPER failed to allocate return buffer", -1); - return; - // COV_NF_END - } - CFIndex convertedBytes = 0; - CFIndex convertedChars = CFStringGetBytes(workerString, - CFRangeMake(0, workerLength), - kCFStringEncodingUTF8, - 0, - false, - returnBuffer, - bufferSize, - &convertedBytes); - if (convertedChars != workerLength) { - // COV_NF_START - free(returnBuffer); - sqlite3_result_error(context, - "CFStringGetBytes() failed to " \ - "convert all characters", -1); - // COV_NF_END - } else { - // Set the result, letting SQLite take ownership and using free() as - // the destructor - // We cast the 3rd parameter to an int because sqlite3 doesn't appear - // to support 64-bit mode. - sqlite3_result_text(context, returnBuffer, (int)convertedBytes, &free); - } - } -} - -// Private helper to handle upper/lower conversions for UTF16 variants -static void UpperLower16(sqlite3_context *context, - int argc, sqlite3_value **argv) { - // Args - if ((argc < 1) || (sqlite3_value_type(argv[0]) == SQLITE_NULL)) { - // COV_NF_START - sqlite3_result_error(context, "LOWER/UPPER CF implementation got bad args", -1); - return; - // COV_NF_END - } - - // For UTF16 variants we want our working string to be in native-endian - // UTF16. This gives us the fewest number of copies (since SQLite converts - // in-place). There is no advantage to breaking out the string construction - // to use UTF16BE or UTF16LE because all that does is move the conversion - // work into the CFString constructor, so just use simple code. - int sqlText16ByteCount = sqlite3_value_bytes16(argv[0]); - const UniChar *sqlText16 = (void *)sqlite3_value_text16(argv[0]); - if (!sqlText16ByteCount || !sqlText16) { - // COV_NF_START - sqlite3_result_error(context, - "LOWER/UPPER CF implementation no input UTF16", -1); - return; - // COV_NF_END - } - - // Get user data - UpperLowerUserArgs *userArgs = sqlite3_user_data(context); - if (!userArgs) { - // COV_NF_START - sqlite3_result_error(context, "LOWER/UPPER CF implementation no user args", -1); - return; - // COV_NF_END - } - CFStringEncoding encoding = SqliteTextEncodingToCFStringEncoding(userArgs->textRep); - - // Mutable worker for upper/lower - CFMutableStringRef workerString = CFStringCreateMutable(kCFAllocatorDefault, 0); - GTMCFAutorelease(workerString); - if (!workerString) { - // COV_NF_START - sqlite3_result_error(context, - "LOWER/UPPER CF implementation failed " \ - "to allocate CFMutableStringRef", -1); - return; - // COV_NF_END - } - CFStringAppendCharacters(workerString, sqlText16, - sqlText16ByteCount / sizeof(UniChar)); - // Perform the upper/lower - if (userArgs->upperCase) { - CFStringUppercase(workerString, gCurrentLocale); - } else { - CFStringLowercase(workerString, gCurrentLocale); - } - // Convert to our canonical composition - CFStringNormalize(workerString, kCFStringNormalizationFormC); - - // Length after normalization matters - CFIndex workerLength = CFStringGetLength(workerString); - - // If we can give direct byte access use it - const UniChar *returnString = CFStringGetCharactersPtr(workerString); - if (returnString) { - // COV_NF_START details of whether cfstringgetcharactersptr returns - // a buffer or NULL are internal; not something we can depend on. - // When building for Leopard+, CFIndex is a 64-bit type, which is - // why we cast it to an int when we call the sqlite api. - _GTMDevAssert((workerLength * sizeof(UniChar) <= INT_MAX), - @"sqlite methods do not support buffers greater " - @"than 32 bit sizes"); - // Direct access to the internal buffer, hand it to sqlite for copy and - // conversion - sqlite3_result_text16(context, returnString, - (int)(workerLength * sizeof(UniChar)), - SQLITE_TRANSIENT); - // COV_NF_END - } else { - // Need to get a copy since we can't get direct access - CFIndex bufferSize = CFStringGetMaximumSizeForEncoding(workerLength, - encoding); - void *returnBuffer = malloc(bufferSize); - if (!returnBuffer) { - // COV_NF_START - sqlite3_result_error(context, - "LOWER/UPPER CF implementation failed " \ - "to allocate return buffer", -1); - return; - // COV_NF_END - } - CFIndex convertedBytes = 0; - CFIndex convertedChars = CFStringGetBytes(workerString, - CFRangeMake(0, workerLength), - encoding, - 0, - false, - returnBuffer, - bufferSize, - &convertedBytes); - if (convertedChars != workerLength) { - // COV_NF_START - free(returnBuffer); - sqlite3_result_error(context, - "LOWER/UPPER CF implementation CFStringGetBytes() " \ - "failed to convert all characters", -1); - // COV_NF_END - } else { - // When building for Leopard+, CFIndex is a 64-bit type, but - // sqlite3's functions all take ints. Assert the error for dev - // builds and cast down. - _GTMDevAssert((convertedBytes <= INT_MAX), - @"sqlite methods do not support buffers greater " - @"than 32-bit sizes"); - int convertedBytesForSQLite = (int)convertedBytes; - // Set the result, letting SQLite take ownership and using free() as - // the destructor. For output since we're copying out the bytes anyway - // we might as well use the preferred encoding of the original call. - _GTMDevAssert(userArgs->textRep == SQLITE_UTF16BE || - userArgs->textRep == SQLITE_UTF16LE, - @"Received non UTF8 encoding in UpperLower8"); - switch (userArgs->textRep) { - case SQLITE_UTF16BE: - sqlite3_result_text16be(context, returnBuffer, - convertedBytesForSQLite, &free); - break; - case SQLITE_UTF16LE: - sqlite3_result_text16le(context, returnBuffer, - convertedBytesForSQLite, &free); - break; - default: - // COV_NF_START no way to tell sqlite to not use utf8 or utf16? - sqlite3_result_error(context, - "LOWER/UPPER CF implementation " \ - "had unhandled encoding", -1); - // COV_NF_END - } - } - } -} - - -#pragma mark Collations - -static void CollateNeeded(void *userContext, sqlite3 *db, int textRep, - const char *name) { - // Cast - GTMSQLiteDatabase *gtmdb = (GTMSQLiteDatabase *)userContext; - _GTMDevAssert(gtmdb, @"Invalid database parameter from sqlite"); - - // Create space for the collation args - NSMutableData *collationArgsData = - [NSMutableData dataWithLength:sizeof(CollateUserArgs)]; - CollateUserArgs *userArgs = (CollateUserArgs *)[collationArgsData bytes]; - bzero(userArgs, sizeof(CollateUserArgs)); - userArgs->textRep = textRep; - - // Parse the name into the flags we need - NSString *collationName = - [[NSString stringWithUTF8String:name] lowercaseString]; - NSArray *collationComponents = - [collationName componentsSeparatedByString:@"_"]; - NSString *collationFlag = nil; - BOOL atLeastOneValidFlag = NO; - GTM_FOREACH_OBJECT(collationFlag, collationComponents) { - if ([collationFlag isEqualToString:@"reverse"]) { - userArgs->reverse = YES; - atLeastOneValidFlag = YES; - } else if ([collationFlag isEqualToString:@"nocase"]) { - userArgs->compareOptions |= kCFCompareCaseInsensitive; - atLeastOneValidFlag = YES; - } else if ([collationFlag isEqualToString:@"nonliteral"]) { - userArgs->compareOptions |= kCFCompareNonliteral; - atLeastOneValidFlag = YES; - } else if ([collationFlag isEqualToString:@"localized"]) { - userArgs->compareOptions |= kCFCompareLocalized; - atLeastOneValidFlag = YES; - } else if ([collationFlag isEqualToString:@"numeric"]) { - userArgs->compareOptions |= kCFCompareNumerically; - atLeastOneValidFlag = YES; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - } else if ([collationFlag isEqualToString:@"nodiacritic"]) { - userArgs->compareOptions |= kCFCompareDiacriticInsensitive; - atLeastOneValidFlag = YES; - } else if ([collationFlag isEqualToString:@"widthinsensitive"]) { - userArgs->compareOptions |= kCFCompareWidthInsensitive; - atLeastOneValidFlag = YES; -#else - } else if (([collationFlag isEqualToString:@"nodiacritic"]) || - ([collationFlag isEqualToString:@"widthinsensitive"])) { - _GTMDevLog(@"GTMSQLiteDatabase 10.5 collating not " - @"available on 10.4 or earlier"); -#endif - } - } - - // No valid tokens means nothing to do - if (!atLeastOneValidFlag) return; - - int err; - // Add the collation - switch (textRep) { - case SQLITE_UTF8: - err = sqlite3_create_collation([gtmdb sqlite3DB], name, - textRep, userArgs, &Collate8); - if (err != SQLITE_OK) return; - break; - case SQLITE_UTF16: - case SQLITE_UTF16BE: - case SQLITE_UTF16LE: - err = sqlite3_create_collation([gtmdb sqlite3DB], name, - textRep, userArgs, &Collate16); - if (err != SQLITE_OK) return; - break; - default: - return; - } - - // Have the db retain our collate function args - [gtmdb collationArgumentRetain:collationArgsData]; -} - -static int Collate8(void *userContext, int length1, const void *str1, - int length2, const void *str2) { - // User args - CollateUserArgs *userArgs = (CollateUserArgs *)userContext; - _GTMDevAssert(userArgs, @"Invalid user arguments from sqlite"); - - // Sanity and zero-lengths - if (!(str1 && str2) || (!length1 && !length2)) { - return kCFCompareEqualTo; // Best we can do and stable sort - } - if (!length1 && length2) { - if (userArgs->reverse) { - return kCFCompareGreaterThan; - } else { - return kCFCompareLessThan; - } - } else if (length1 && !length2) { - if (userArgs->reverse) { - return kCFCompareLessThan; - } else { - return kCFCompareGreaterThan; - } - } - - // We have UTF8 strings with no terminating null, we want to compare - // with as few copies as possible. Leopard introduced a no-copy string - // creation function, we'll use it when we can but we want to stay compatible - // with Tiger. - CFStringRef string1 = NULL, string2 = NULL; -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - if (gCFStringCreateWithBytesNoCopySymbol) { - string1 = gCFStringCreateWithBytesNoCopySymbol(kCFAllocatorDefault, - str1, - length1, - kCFStringEncodingUTF8, - false, - kCFAllocatorNull); - string2 = gCFStringCreateWithBytesNoCopySymbol(kCFAllocatorDefault, - str2, - length2, - kCFStringEncodingUTF8, - false, - kCFAllocatorNull); - } else { - // Have to use the copy-based variants - string1 = CFStringCreateWithBytes(kCFAllocatorDefault, - str1, - length1, - kCFStringEncodingUTF8, - false); - string2 = CFStringCreateWithBytes(kCFAllocatorDefault, - str2, - length2, - kCFStringEncodingUTF8, - false); - } -#else // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - string1 = CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, - str1, - length1, - kCFStringEncodingUTF8, - false, - kCFAllocatorNull); - string2 = CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, - str2, - length2, - kCFStringEncodingUTF8, - false, - kCFAllocatorNull); -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - GTMCFAutorelease(string1); - GTMCFAutorelease(string2); - // Allocation failures can't really be sanely handled from a collator - int sqliteResult; - if (!(string1 && string2)) { - // COV_NF_START - sqliteResult = (int)kCFCompareEqualTo; - // COV_NF_END - } else { - // Compare - // We have to cast to int because SQLite takes functions that - // return an int, but when compiling for Leopard+, - // CFComparisonResult is a signed long, but on Tiger it's an int - CFComparisonResult result; - result = CFStringCompare(string1, - string2, - userArgs->compareOptions); - sqliteResult = (int)result; - // Reverse - if (userArgs->reverse && sqliteResult) { - sqliteResult = -sqliteResult; - } - - } - return sqliteResult; -} - -static int Collate16(void *userContext, int length1, const void *str1, - int length2, const void *str2) { - // User args - CollateUserArgs *userArgs = (CollateUserArgs *)userContext; - _GTMDevAssert(userArgs, @"Invalid user arguments from sqlite"); - - // Sanity and zero-lengths - if (!(str1 && str2) || (!length1 && !length2)) { - return kCFCompareEqualTo; // Best we can do and stable sort - } - if (!length1 && length2) { - if (userArgs->reverse) { - return kCFCompareGreaterThan; - } else { - return kCFCompareLessThan; - } - } else if (length1 && !length2) { - if (userArgs->reverse) { - return kCFCompareLessThan; - } else { - return kCFCompareGreaterThan; - } - } - - // Target encoding - CFStringEncoding encoding = - SqliteTextEncodingToCFStringEncoding(userArgs->textRep); - - // We have UTF16 strings, we want to compare with as few copies as - // possible. Since endianness matters we want to use no-copy - // variants where possible and copy (and endian convert) only when - // we must. - CFStringRef string1 = NULL, string2 = NULL; - if ((userArgs->textRep == SQLITE_UTF16) || -#if TARGET_RT_BIG_ENDIAN - (userArgs->textRep == SQLITE_UTF16BE) -#else - (userArgs->textRep == SQLITE_UTF16LE) -#endif - ) { - string1 = CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - str1, - length1 / sizeof(UniChar), - kCFAllocatorNull); - string2 = CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - str2, - length2 / sizeof(UniChar), - kCFAllocatorNull); - } else { - // No point in using the "no copy" version of the call here. If the - // bytes were in the native order we'd be in the other part of this - // conditional, so we know we have to copy the string to endian convert - // it. - string1 = CFStringCreateWithBytes(kCFAllocatorDefault, - str1, - length1, - encoding, - false); - string2 = CFStringCreateWithBytes(kCFAllocatorDefault, - str2, - length2, - encoding, - false); - } - - GTMCFAutorelease(string1); - GTMCFAutorelease(string2); - int sqliteResult; - // Allocation failures can't really be sanely handled from a collator - if (!(string1 && string2)) { - // COV_NF_START - sqliteResult = (int)kCFCompareEqualTo; - // COV_NF_END - } else { - // Compare - // We cast the return value to an int because CFComparisonResult - // is a long in Leopard+ builds. I have no idea why we need - // 64-bits for a 3-value enum, but that's how it is... - CFComparisonResult result; - result = CFStringCompare(string1, - string2, - userArgs->compareOptions); - - sqliteResult = (int)result; - //Reverse - if (userArgs->reverse && sqliteResult) { - sqliteResult = -sqliteResult; - } - } - - return sqliteResult; -} - - -#pragma mark Like/Glob - -// Private helper to handle LIKE and GLOB with different encodings. This -// is essentially a reimplementation of patternCompare() in func.c of the -// SQLite sources. -static void LikeGlobCompare(sqlite3_context *context, - CFStringRef pattern, - CFStringRef targetString, - UniChar matchAll, - UniChar matchOne, - UniChar escape, - BOOL setSupport, - CFOptionFlags compareOptions) { - // Setup for pattern walk - CFIndex patternLength = CFStringGetLength(pattern); - CFStringInlineBuffer patternBuffer; - CFStringInitInlineBuffer(pattern, - &patternBuffer, - CFRangeMake(0, patternLength)); - UniChar patternChar; - CFIndex patternIndex = 0; - CFIndex targetStringLength = CFStringGetLength(targetString); - CFIndex targetStringIndex = 0; - BOOL isAnchored = YES; - - size_t dataSize = patternLength * sizeof(UniChar); - NSMutableData *tempData = [NSMutableData dataWithLength:dataSize]; - // Temp string buffer can be no larger than the whole pattern - UniChar *findBuffer = [tempData mutableBytes]; - if (!findBuffer) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE or GLOB CF implementation failed to " \ - "allocate temporary buffer", -1); - return; - // COV_NF_END - } - - // We'll use a mutable string we can just reset as we wish - CFMutableStringRef findString = - CFStringCreateMutableWithExternalCharactersNoCopy(kCFAllocatorDefault, - NULL, - 0, - 0, - kCFAllocatorNull); - GTMCFAutorelease(findString); - if (!findString) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE or GLOB CF implementation failed to " \ - "allocate temporary CFString", -1); - return; - // COV_NF_END - } - // Walk the pattern - while (patternIndex < patternLength) { - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - // Match all character has no effect other than to unanchor the search - if (patternChar == matchAll) { - isAnchored = NO; - patternIndex++; - continue; - } - // Match one character pushes the string index forward by one composed - // character - if (patternChar == matchOne) { - // If this single char match would walk us off the end of the string - // we're already done, no match - if (targetStringIndex >= targetStringLength) { - sqlite3_result_int(context, 0); - return; - } - // There's still room in the string, so move the string index forward one - // composed character and go back around. - CFRange nextCharRange = - CFStringGetRangeOfComposedCharactersAtIndex(targetString, - targetStringIndex); - targetStringIndex = nextCharRange.location + nextCharRange.length; - patternIndex++; - continue; - } - // Character set matches require the parsing of the character set - if (setSupport && (patternChar == 0x5B)) { // "[" - // A character set must match one character, if there's not at least one - // character left in the string, don't bother - if (targetStringIndex >= targetStringLength) { - sqlite3_result_int(context, 0); - return; - } - // There's at least one character, try to match the remainder of the - // string using a CFCharacterSet - CFMutableCharacterSetRef charSet - = CFCharacterSetCreateMutable(kCFAllocatorDefault); - GTMCFAutorelease(charSet); - if (!charSet) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE or GLOB CF implementation failed to " \ - "allocate temporary CFMutableCharacterSet", -1); - return; - // COV_NF_END - } - - BOOL invert = NO; - // Walk one character forward - patternIndex++; - if (patternIndex >= patternLength) { - // Oops, out of room - sqlite3_result_error(context, - "LIKE or GLOB CF implementation found " \ - "unclosed character set", -1); - return; - } - // First character after pattern open is special-case - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - if (patternChar == 0x5E) { // "^" - invert = YES; - // Bump forward one character, can still be an unescaped "]" after - // negation - patternIndex++; - if (patternIndex >= patternLength) { - // Oops, out of room - sqlite3_result_error(context, - "LIKE or GLOB CF implementation found " \ - "unclosed character set after negation", -1); - return; - } - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - } - // First char in set or first char in negation can be a literal "]" not - // considered a close - if (patternChar == 0x5D) { // "]" - CFCharacterSetAddCharactersInRange(charSet, - CFRangeMake(patternChar, 1)); - patternIndex++; - if (patternIndex >= patternLength) { - // Oops, out of room - sqlite3_result_error(context, - "LIKE or GLOB CF implementation found " \ - "unclosed character set after escaped ]", -1); - return; - } - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - } - while ((patternIndex < patternLength) && - patternChar && - (patternChar != 0x5D)) { // "]" - // Check for possible character range, for this to be true we - // must have a hyphen at the next position and at least 3 - // characters of room (for hyphen, range end, and set - // close). Hyphens at the end without a trailing range are - // treated as literals - if (((patternLength - patternIndex) >= 3) && - // Second char must be "-" - (CFStringGetCharacterFromInlineBuffer(&patternBuffer, - // 0x2D is "-" - patternIndex + 1) == 0x2D) && - // And third char must be anything other than set close in - // case the hyphen is at the end of the set and needs to - // be treated as a literal - (CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex + 2) - != 0x5D)) { // "]" - // Get the range close - UniChar rangeClose = - CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex + 2); - // Add the whole range - int rangeLen = rangeClose - patternChar + 1; - CFCharacterSetAddCharactersInRange(charSet, - CFRangeMake(patternChar, - rangeLen)); - // Move past the end of the range - patternIndex += 3; - } else { - // Single Raw character - CFCharacterSetAddCharactersInRange(charSet, - CFRangeMake(patternChar, 1)); - patternIndex++; - } - // Load next char for loop - if (patternIndex < patternLength) { - patternChar = - CFStringGetCharacterFromInlineBuffer(&patternBuffer, patternIndex); - } else { - patternChar = 0; - } - } - // Check for closure - if (patternChar != 0x5D) { // "]" - sqlite3_result_error(context, - "LIKE or GLOB CF implementation found " \ - "unclosed character set", -1); - return; - } else { - // Increment past the end of the set - patternIndex++; - } - // Invert the set if needed - if (invert) CFCharacterSetInvert(charSet); - // Do the search - CFOptionFlags findOptions = 0; - if (isAnchored) findOptions |= kCFCompareAnchored; - CFRange foundRange; - unsigned long rangeLen = targetStringLength - targetStringIndex; - BOOL found = CFStringFindCharacterFromSet(targetString, - charSet, - CFRangeMake(targetStringIndex, - rangeLen), - findOptions, - &foundRange); - // If no match then the whole pattern fails - if (!found) { - sqlite3_result_int(context, 0); - return; - } - // If we did match then we need to push the string index to the - // character past the end of the match and then go back around - // the loop. - targetStringIndex = foundRange.location + foundRange.length; - // At this point patternIndex is either at the end of the - // string, or at the next special character which will be picked - // up and handled at the top of the loop. We do, however, need - // to reset the anchor status - isAnchored = YES; - // End of character sets, back around - continue; - } - // Otherwise the pattern character is a normal or escaped - // character we should consume and match with normal string - // matching - CFIndex findBufferIndex = 0; - while ((patternIndex < patternLength) && patternChar && - !((patternChar == matchAll) || (patternChar == matchOne) || - (setSupport && (patternChar == 0x5B)))) { // "[" - if (patternChar == escape) { - // No matter what the character follows the escape copy it to the - // buffer - patternIndex++; - if (patternIndex >= patternLength) { - // COV_NF_START - // Oops, escape came at end of pattern, that's an error - sqlite3_result_error(context, - "LIKE or GLOB CF implementation found " \ - "escape character at end of pattern", -1); - return; - // COV_NF_END - } - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - } - // At this point the patternChar is either the escaped character or the - // original normal character - findBuffer[findBufferIndex++] = patternChar; - // Set up for next loop - patternIndex++; - if (patternIndex < patternLength) { - patternChar = CFStringGetCharacterFromInlineBuffer(&patternBuffer, - patternIndex); - } else { - patternChar = 0; - } - } - // On loop exit we have a string ready for comparision, if that - // string is too long then it can't be a match. - if (findBufferIndex > (targetStringLength - targetStringIndex)) { - sqlite3_result_int(context, 0); - return; - } - - // We actually need to do a comparison - CFOptionFlags findOptions = compareOptions; - if (isAnchored) findOptions |= kCFCompareAnchored; - CFStringSetExternalCharactersNoCopy(findString, - findBuffer, - findBufferIndex, - findBufferIndex); - CFRange foundRange; - unsigned long rangeLen = targetStringLength - targetStringIndex; - BOOL found = CFStringFindWithOptions(targetString, - findString, - CFRangeMake(targetStringIndex, - rangeLen), - findOptions, - &foundRange); - // If no match then the whole pattern fails - if (!found) { - sqlite3_result_int(context, 0); - return; - } - // If we did match then we need to push the string index to the - // character past the end of the match and then go back around the - // loop. - targetStringIndex = foundRange.location + foundRange.length; - // At this point patternIndex is either at the end of the string, - // or at the next special character which will be picked up and - // handled at the top of the loop. We do, however, need to reset - // the anchor status - isAnchored = YES; - } - // On loop exit all pattern characters have been considered. If we're still - // alive it means that we've matched the entire pattern, except for trailing - // wildcards, we need to handle that case. - if (isAnchored) { - // If we're still anchored there was no trailing matchAll, in which case - // we have to have run to exactly the end of the string - if (targetStringIndex == targetStringLength) { - sqlite3_result_int(context, 1); - } else { - sqlite3_result_int(context, 0); - } - } else { - // If we're not anchored any remaining characters are OK - sqlite3_result_int(context, 1); - } -} - -static void Like8(sqlite3_context *context, int argc, sqlite3_value **argv) { - // Get our LIKE options - LikeGlobUserArgs *likeArgs = sqlite3_user_data(context); - if (!likeArgs) { - // COV_NF_START - sqlite3_result_error(context, "LIKE CF implementation no user args", -1); - return; - // COV_NF_END - } - - // Read the strings - const char *pattern = (const char *)sqlite3_value_text(argv[0]); - const char *target = (const char *)sqlite3_value_text(argv[1]); - if (!pattern || !target) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation missing pattern or value", -1); - return; - // COV_NF_END - } - CFStringRef patternString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - pattern, - kCFStringEncodingUTF8, - kCFAllocatorNull); - CFStringRef targetString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - target, - kCFStringEncodingUTF8, - kCFAllocatorNull); - GTMCFAutorelease(patternString); - GTMCFAutorelease(targetString); - if (!(patternString && targetString)) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation failed " \ - "to allocate CFStrings", -1); - return; - // COV_NF_END - } - - UniChar escapeChar = 0; - // If there is a third argument it is the escape character - if (argc == 3) { - const char *escape = (const char *)sqlite3_value_text(argv[2]); - if (!escape) { - sqlite3_result_error(context, - "LIKE CF implementation missing " \ - "escape character", -1); - return; - } - CFStringRef escapeString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - escape, - kCFStringEncodingUTF8, - kCFAllocatorNull); - GTMCFAutorelease(escapeString); - if (!escapeString) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation failed to " \ - "allocate CFString for ESCAPE", -1); - return; - // COV_NF_END - } - if (CFStringGetLength(escapeString) != 1) { - sqlite3_result_error(context, - "CF implementation ESCAPE expression " \ - "must be single character", -1); - return; - } - escapeChar = CFStringGetCharacterAtIndex(escapeString, 0); - } - - // Do the compare - LikeGlobCompare(context, - patternString, - targetString, - 0x25, // % - 0x5F, // _ - escapeChar, - NO, // LIKE does not support character sets - *(likeArgs->compareOptionPtr)); -} - -static void Like16(sqlite3_context *context, int argc, sqlite3_value **argv) { - // Get our LIKE options - LikeGlobUserArgs *likeArgs = sqlite3_user_data(context); - if (!likeArgs) { - // COV_NF_START - sql parser chokes if we feed any input - // that could trigger this - sqlite3_result_error(context, "LIKE CF implementation no user args", -1); - return; - // COV_NF_END - } - - // For UTF16 variants we want our working string to be in native-endian - // UTF16. This gives us the fewest number of copies (since SQLite converts - // in-place). There is no advantage to breaking out the string construction - // to use UTF16BE or UTF16LE because all that does is move the conversion - // work into the CFString constructor, so just use simple code. - int patternByteCount = sqlite3_value_bytes16(argv[0]); - const UniChar *patternText = (void *)sqlite3_value_text16(argv[0]); - int targetByteCount = sqlite3_value_bytes16(argv[1]); - const UniChar *targetText = (void *)sqlite3_value_text16(argv[1]); - if (!patternByteCount || !patternText || !targetByteCount || !targetText) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation missing pattern or value", -1); - return; - // COV_NF_END - } - CFStringRef patternString = - CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - patternText, - patternByteCount / sizeof(UniChar), - kCFAllocatorNull); - CFStringRef targetString = - CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - targetText, - targetByteCount / sizeof(UniChar), - kCFAllocatorNull); - GTMCFAutorelease(patternString); - GTMCFAutorelease(targetString); - if (!(patternString && targetString)) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation failed " \ - "to allocate CFStrings", -1); - return; - // COV_NF_END - } - - // If there is a third argument it is the escape character, force a - // UTF8 conversion for simplicity - UniChar escapeChar = 0; - if (argc == 3) { - const char *escape = (const char *)sqlite3_value_text(argv[2]); - if (!escape) { - sqlite3_result_error(context, - "LIKE CF implementation " \ - "missing escape character", -1); - return; - } - CFStringRef escapeString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - escape, - kCFStringEncodingUTF8, - kCFAllocatorNull); - GTMCFAutorelease(escapeString); - if (!escapeString) { - // COV_NF_START - sqlite3_result_error(context, - "LIKE CF implementation failed to " \ - "allocate CFString for ESCAPE", -1); - return; - // COV_NF_END - } - if (CFStringGetLength(escapeString) != 1) { - sqlite3_result_error(context, - "CF implementation ESCAPE expression " \ - "must be single character", -1); - return; - } - escapeChar = CFStringGetCharacterAtIndex(escapeString, 0); - } - - // Do the compare - LikeGlobCompare(context, - patternString, - targetString, - 0x25, // % - 0x5F, // _ - escapeChar, - NO, // LIKE does not support character sets - *(likeArgs->compareOptionPtr)); -} - -static void Glob8(sqlite3_context *context, int argc, sqlite3_value **argv) { - // Get our GLOB options - LikeGlobUserArgs *globArgs = sqlite3_user_data(context); - if (!globArgs) { - // COV_NF_START - sqlite3_result_error(context, "GLOB CF implementation no user args", -1); - return; - // COV_NF_END - } - - // Read the strings - const char *pattern = (const char *)sqlite3_value_text(argv[0]); - const char *target = (const char *)sqlite3_value_text(argv[1]); - if (!pattern || !target) { - // COV_NF_START - sqlite3_result_error(context, - "GLOB CF implementation missing " \ - "pattern or value", -1); - return; - // COV_NF_END - } - CFStringRef patternString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - pattern, - kCFStringEncodingUTF8, - kCFAllocatorNull); - CFStringRef targetString = - CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, - target, - kCFStringEncodingUTF8, - kCFAllocatorNull); - GTMCFAutorelease(patternString); - GTMCFAutorelease(targetString); - - if (!(patternString && targetString)) { - // COV_NF_START - sqlite3_result_error(context, - "GLOB CF implementation failed to " \ - "allocate CFStrings", -1); - // COV_NF_END - } else { - // Do the compare - LikeGlobCompare(context, - patternString, - targetString, - 0x2A, // * - 0x3F, // ? - 0, // GLOB does not support escape characters - YES, // GLOB supports character sets - *(globArgs->compareOptionPtr)); - } -} - -static void Glob16(sqlite3_context *context, int argc, sqlite3_value **argv) { - // Get our GLOB options - LikeGlobUserArgs *globArgs = sqlite3_user_data(context); - if (!globArgs) { - // COV_NF_START - sqlite3_result_error(context, "GLOB CF implementation no user args", -1); - return; - // COV_NF_END - } - - // For UTF16 variants we want our working string to be in - // native-endian UTF16. This gives us the fewest number of copies - // (since SQLite converts in-place). There is no advantage to - // breaking out the string construction to use UTF16BE or UTF16LE - // because all that does is move the conversion work into the - // CFString constructor, so just use simple code. - int patternByteCount = sqlite3_value_bytes16(argv[0]); - const UniChar *patternText = (void *)sqlite3_value_text16(argv[0]); - int targetByteCount = sqlite3_value_bytes16(argv[1]); - const UniChar *targetText = (void *)sqlite3_value_text16(argv[1]); - if (!patternByteCount || !patternText || !targetByteCount || !targetText) { - // COV_NF_START - sqlite3_result_error(context, - "GLOB CF implementation missing pattern or value", -1); - return; - // COV_NF_END - } - CFStringRef patternString = - CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - patternText, - patternByteCount / sizeof(UniChar), - kCFAllocatorNull); - CFStringRef targetString = - CFStringCreateWithCharactersNoCopy(kCFAllocatorDefault, - targetText, - targetByteCount / sizeof(UniChar), - kCFAllocatorNull); - GTMCFAutorelease(patternString); - GTMCFAutorelease(targetString); - if (!(patternString && targetString)) { - // COV_NF_START - sqlite3_result_error(context, - "GLOB CF implementation failed to "\ - "allocate CFStrings", -1); - // COV_NF_END - } else { - // Do the compare - LikeGlobCompare(context, - patternString, - targetString, - 0x2A, // * - 0x3F, // ? - 0, // GLOB does not support escape characters - YES, // GLOB supports character sets - *(globArgs->compareOptionPtr)); - } -} - -// ----------------------------------------------------------------------------- - -@implementation GTMSQLiteStatement - -#pragma mark Creation, Access and Finalization - -+ (id)statementWithSQL:(NSString *)sql - inDatabase:(GTMSQLiteDatabase *)gtmdb - errorCode:(int *)err { - return [[[GTMSQLiteStatement alloc] initWithSQL:sql - inDatabase:gtmdb - errorCode:err] - autorelease]; -} - -- (id)initWithSQL:(NSString *)sql - inDatabase:(GTMSQLiteDatabase *)gtmdb - errorCode:(int *)err { - int rc; - id obj; - if ((self = [super init])) { - // Sanity - obj = self; - if (sql && gtmdb) { - // Find out if the database is using our CF extensions - hasCFAdditions_ = [gtmdb hasCFAdditions]; - - // Prepare - if (hasCFAdditions_) { - sql = [sql precomposedStringWithCanonicalMapping]; - } - if (sql) { - rc = sqlite3_prepare([gtmdb sqlite3DB], - [sql UTF8String], - -1, - &statement_, - NULL); - if (rc != SQLITE_OK) { - [self release]; - obj = nil; - } - } else { - // COV_NF_START - rc = SQLITE_INTERNAL; - [self release]; - obj = nil; - // COV_NF_END - } - } else { - rc = SQLITE_MISUSE; - [self release]; - obj = nil; - } - } else { - // COV_NF_START - rc = SQLITE_INTERNAL; - obj = nil; - // COV_NF_END - } - if (err) *err = rc; - return obj; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - if (statement_) { - _GTMDevLog(@"-[GTMSQLiteStatement finalizeStatement] must be called when" - @" statement is no longer needed"); - } - [super finalize]; -} -#endif - -- (void)dealloc { - if (statement_) { - _GTMDevLog(@"-[GTMSQLiteStatement finalizeStatement] must be called when" - @" statement is no longer needed"); - } - [super dealloc]; -} - -- (sqlite3_stmt *)sqlite3Statement { - return statement_; -} - -- (int)finalizeStatement { - if (!statement_) return SQLITE_MISUSE; - int rc = sqlite3_finalize(statement_); - statement_ = NULL; - return rc; -} - -#pragma mark Parameters and Binding - -- (int)parameterCount { - if (!statement_) return -1; - return sqlite3_bind_parameter_count(statement_); -} - -- (int)positionOfParameterNamed:(NSString *)paramName { - if (!statement_) return -1; - if (hasCFAdditions_) { - NSString *cleanedString = - [paramName precomposedStringWithCanonicalMapping]; - if (!cleanedString) return -1; - return sqlite3_bind_parameter_index(statement_, [cleanedString UTF8String]); - } else { - return sqlite3_bind_parameter_index(statement_, [paramName UTF8String]); - } -} - -- (NSString *)nameOfParameterAtPosition:(int)position { - if ((position < 1) || !statement_) return nil; - const char *name = sqlite3_bind_parameter_name(statement_, position); - if (!name) return nil; - NSString *nameString = [NSString stringWithUTF8String:name]; - if (hasCFAdditions_) { - return [nameString precomposedStringWithCanonicalMapping]; - } else { - return nameString; - } -} - -- (int)bindSQLNullAtPosition:(int)position { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_bind_null(statement_, position); -} - -- (int)bindBlobAtPosition:(int)position bytes:(void *)bytes length:(int)length { - if (!statement_ || !bytes || !length) return SQLITE_MISUSE; - return sqlite3_bind_blob(statement_, - position, - bytes, - length, - SQLITE_TRANSIENT); -} - -- (int)bindBlobAtPosition:(int)position data:(NSData *)data { - if (!statement_ || !data || !position) return SQLITE_MISUSE; - int blobLength = (int)[data length]; - _GTMDevAssert((blobLength < INT_MAX), - @"sqlite methods do not support data lengths " - @"exceeding 32 bit sizes"); - return [self bindBlobAtPosition:position - bytes:(void *)[data bytes] - length:blobLength]; -} - -- (int)bindDoubleAtPosition:(int)position value:(double)value { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_bind_double(statement_, position, value); -} - -- (int)bindNumberAsDoubleAtPosition:(int)position number:(NSNumber *)number { - if (!number || !statement_) return SQLITE_MISUSE; - return sqlite3_bind_double(statement_, position, [number doubleValue]); -} - -- (int)bindInt32AtPosition:(int)position value:(int)value { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_bind_int(statement_, position, value); -} - -- (int)bindNumberAsInt32AtPosition:(int)position number:(NSNumber *)number { - if (!number || !statement_) return SQLITE_MISUSE; - return sqlite3_bind_int(statement_, position, [number intValue]); -} - -- (int)bindLongLongAtPosition:(int)position value:(long long)value { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_bind_int64(statement_, position, value); -} - -- (int)bindNumberAsLongLongAtPosition:(int)position number:(NSNumber *)number { - if (!number || !statement_) return SQLITE_MISUSE; - return sqlite3_bind_int64(statement_, position, [number longLongValue]); -} - -- (int)bindStringAtPosition:(int)position string:(NSString *)string { - if (!string || !statement_) return SQLITE_MISUSE; - if (hasCFAdditions_) { - string = [string precomposedStringWithCanonicalMapping]; - if (!string) return SQLITE_INTERNAL; - } - return sqlite3_bind_text(statement_, - position, - [string UTF8String], - -1, - SQLITE_TRANSIENT); -} - -#pragma mark Results - -- (int)resultColumnCount { - if (!statement_) return -1; - return sqlite3_column_count(statement_); -} - -- (NSString *)resultColumnNameAtPosition:(int)position { - if (!statement_) return nil; - const char *name = sqlite3_column_name(statement_, position); - if (!name) return nil; - NSString *nameString = [NSString stringWithUTF8String:name]; - if (hasCFAdditions_) { - return [nameString precomposedStringWithCanonicalMapping]; - } else { - return nameString; - } -} - -- (int)rowDataCount { - if (!statement_) return -1; - return sqlite3_data_count(statement_); -} - -- (int)resultColumnTypeAtPosition:(int)position { - if (!statement_) return -1; - return sqlite3_column_type(statement_, position); -} - -- (NSData *)resultBlobDataAtPosition:(int)position { - if (!statement_) return nil; - const void *bytes = sqlite3_column_blob(statement_, position); - int length = sqlite3_column_bytes(statement_, position); - if (!(bytes && length)) return nil; - return [NSData dataWithBytes:bytes length:length]; -} - -- (double)resultDoubleAtPosition:(int)position { - if (!statement_) return 0; - return sqlite3_column_double(statement_, position); -} - -- (int)resultInt32AtPosition:(int)position { - if (!statement_) return 0; - return sqlite3_column_int(statement_, position); -} - -- (long long)resultLongLongAtPosition:(int)position { - if (!statement_) return 0; - return sqlite3_column_int64(statement_, position); -} - -- (NSNumber *)resultNumberAtPosition:(int)position { - if (!statement_) return nil; - int type = [self resultColumnTypeAtPosition:position]; - if (type == SQLITE_FLOAT) { - // Special case for floats - return [NSNumber numberWithDouble:[self resultDoubleAtPosition:position]]; - } else { - // Everything else is cast to int - long long result = [self resultLongLongAtPosition:position]; - return [NSNumber numberWithLongLong:result]; - } -} - -- (NSString *)resultStringAtPosition:(int)position { - if (!statement_) return nil; - const char *text = (const char *)sqlite3_column_text(statement_, position); - if (!text) return nil; - NSString *result = [NSString stringWithUTF8String:text]; - if (hasCFAdditions_) { - return [result precomposedStringWithCanonicalMapping]; - } else { - return result; - } -} - -- (id)resultFoundationObjectAtPosition:(int)position { - if (!statement_) return nil; - int type = [self resultColumnTypeAtPosition:position]; - id result = nil; - switch (type) { - case SQLITE_INTEGER: - case SQLITE_FLOAT: - result = [self resultNumberAtPosition:position]; - break; - case SQLITE_TEXT: - result = [self resultStringAtPosition:position]; - break; - case SQLITE_BLOB: - result = [self resultBlobDataAtPosition:position]; - break; - case SQLITE_NULL: - result = [NSNull null]; - break; - } - return result; -} - -- (NSArray *)resultRowArray { - int count = [self rowDataCount]; - if (count < 1) return nil; - - NSMutableArray *finalArray = [NSMutableArray array]; - for (int i = 0; i < count; i++) { - id coldata = [self resultFoundationObjectAtPosition:i]; - if (!coldata) return nil; // Oops - [finalArray addObject:coldata]; - } - - if (![finalArray count]) return nil; - return finalArray; -} - -- (NSDictionary *)resultRowDictionary { - int count = [self rowDataCount]; - if (count < 1) return nil; - - NSMutableDictionary *finalDict = [NSMutableDictionary dictionary]; - for (int i = 0; i < count; i++) { - id coldata = [self resultFoundationObjectAtPosition:i]; - NSString *colname = [self resultColumnNameAtPosition:i]; - if (!(coldata && colname)) continue; - [finalDict setObject:coldata forKey:colname]; - } - if (![finalDict count]) return nil; - return finalDict; -} - -#pragma mark Rows - -- (int)stepRow { - int rc = SQLITE_BUSY; - while (rc == SQLITE_BUSY) { - rc = [self stepRowWithTimeout]; - } - return rc; -} - -- (int)stepRowWithTimeout { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_step(statement_); -} - -- (int)reset { - if (!statement_) return SQLITE_MISUSE; - return sqlite3_reset(statement_); -} - -+ (BOOL)isCompleteStatement:(NSString *)statement { - BOOL isComplete = NO; - if (statement) { - isComplete = (sqlite3_complete([statement UTF8String]) ? YES : NO); - } - return isComplete; -} - -+ (NSString*)quoteAndEscapeString:(NSString *)string { - char *quoted = sqlite3_mprintf("'%q'", [string UTF8String]); - if (!quoted) return nil; - NSString *quotedString = [NSString stringWithUTF8String:quoted]; - sqlite3_free(quoted); - return quotedString; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLiteTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLiteTest.m deleted file mode 100644 index 5d683c0f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSQLiteTest.m +++ /dev/null @@ -1,1813 +0,0 @@ -// -// GTMSQLiteTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - - -#import "GTMSQLite.h" -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "GTMGarbageCollection.h" - -@interface GTMSQLiteTest : GTMTestCase -@end - -// This variable is used by a custom upper function that we set in a -// SQLite database to indicate that the custom function was -// successfully called. It has to be a global rather than instance -// variable because the custom upper function is not an instance function -static BOOL customUpperFunctionCalled = NO; - -@interface GTMSQLiteStatementTest : GTMTestCase -@end - -// Prototype for LIKE/GLOB test helper -static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql); - -@implementation GTMSQLiteTest - -// Test cases for change counting -- (void)testTransactionAPI { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - err = [db executeSQL:@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to create table"); - - int changeCount = [db lastChangeCount]; - STAssertEquals(changeCount, 0, - @"Change count was not 0 after creating database/table!"); - - err = [db executeSQL:@"insert into foo (bar) values ('blah!');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - changeCount = [db lastChangeCount]; - STAssertEquals(changeCount, 1, @"Change count was not 1!"); - - // Test last row id! - unsigned long long lastRowId; - lastRowId = [db lastInsertRowID]; - STAssertEquals(lastRowId, (unsigned long long)1L, - @"First row in database was not 1?"); - - // Test setting busy and retrieving it! - int busyTimeout = 10000; - err = [db setBusyTimeoutMS:busyTimeout]; - STAssertEquals(err, SQLITE_OK, @"Error setting busy timeout"); - - int retrievedBusyTimeout; - retrievedBusyTimeout = [db busyTimeoutMS]; - STAssertEquals(retrievedBusyTimeout, busyTimeout, - @"Retrieved busy time out was not equal to what we set it" - @" to!"); - - BOOL xactOpSucceeded; - - xactOpSucceeded = [db beginDeferredTransaction]; - STAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!"); - - err = [db executeSQL:@"insert into foo (bar) values ('blah!');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - changeCount = [db lastChangeCount]; - STAssertEquals(changeCount, 1, - @"Change count didn't stay the same" - @"when inserting during transaction"); - - xactOpSucceeded = [db rollback]; - STAssertTrue(xactOpSucceeded, @"could not rollback!"); - - changeCount = [db lastChangeCount]; - STAssertEquals(changeCount, 1, @"Change count isn't 1 after rollback :-("); - - xactOpSucceeded = [db beginDeferredTransaction]; - STAssertTrue(xactOpSucceeded, @"beginDeferredTransaction failed!"); - - for (unsigned int i = 0; i < 100; i++) { - err = [db executeSQL:@"insert into foo (bar) values ('blah!');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - } - - xactOpSucceeded = [db commit]; - STAssertTrue(xactOpSucceeded, @"could not commit!"); - - changeCount = [db totalChangeCount]; - STAssertEquals(changeCount, 102, @"Change count isn't 102 after commit :-("); -} - -- (void)testSQLiteWithoutCFAdditions { - int err; - GTMSQLiteDatabase *dbNoCFAdditions = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:NO - utf8:YES - errorCode:&err] - autorelease]; - - STAssertNotNil(dbNoCFAdditions, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - err = [dbNoCFAdditions executeSQL:nil]; - STAssertEquals(err, SQLITE_MISUSE, @"Nil SQL did not return error"); - - err = [dbNoCFAdditions executeSQL:@"SELECT UPPER('Fred');"]; - STAssertEquals(err, SQLITE_OK, @"Nil SQL did not return error"); -} - -- (void)testSynchronousAPI { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - [db synchronousMode:YES]; - [db synchronousMode:NO]; -} - -- (void)testEmptyStringsCollation { - int err; - GTMSQLiteDatabase *db8 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - STAssertNotNil(db8, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - GTMSQLiteDatabase *db16 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] - autorelease]; - - STAssertNotNil(db16, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - err = [db executeSQL: - @"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL," - @" barrev text collate reverse);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for collation test"); - // Create blank rows to test matching inside collation functions - err = [db executeSQL:@"insert into foo (bar, barrev) values ('','');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - // Insert one row we want to match - err = [db executeSQL: - @"INSERT INTO foo (bar, barrev) VALUES " - @"('teststring','teststring');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - NSString *matchString = @"foobar"; - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE bar == '%@';", matchString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - [statement stepRow]; - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE barrev == '%@' order by barrev;", matchString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - [statement stepRow]; - - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE bar == '';"] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - [statement stepRow]; - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE barrev == '' order by barrev;"] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - [statement stepRow]; - [statement finalizeStatement]; - } -} - -- (void)testUTF16Database { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] - autorelease]; - - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - err = [db executeSQL:@"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to create table for collation test"); - - // Insert one row we want to match - err = [db executeSQL:[NSString stringWithFormat: - @"INSERT INTO foo (bar) VALUES ('%@');", - [NSString stringWithCString:"Frédéric" encoding:NSUTF8StringEncoding]]]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - // Create blank rows to test matching inside collation functions - err = [db executeSQL:@"insert into foo (bar) values ('');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - err = [db executeSQL:@"insert into foo (bar) values ('');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - // Loop over a few things all of which should match - NSArray *testArray = [NSArray arrayWithObjects: - [NSString stringWithCString:"Frédéric" - encoding:NSUTF8StringEncoding], - [NSString stringWithCString:"frédéric" - encoding:NSUTF8StringEncoding], - [NSString stringWithCString:"FRÉDÉRIC" - encoding:NSUTF8StringEncoding], - nil]; - NSString *testString = nil; - GTM_FOREACH_OBJECT(testString, testArray) { - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE bar == '%@';", testString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - int count = 0; - while ([statement stepRow] == SQLITE_ROW) { - count++; - } - STAssertEquals(count, 1, @"Wrong number of collated rows for \"%@\"", - testString); - [statement finalizeStatement]; - } - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:@"select * from foo;" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - - while ([statement stepRow] == SQLITE_ROW) ; - [statement finalizeStatement]; - -} - -- (void)testUpperLower { - - // Test our custom UPPER/LOWER implementation, need a database and statement - // to do it. - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - GTMSQLiteStatement *statement = nil; - - // Test simple ASCII - statement = [GTMSQLiteStatement statementWithSQL:@"SELECT LOWER('Fred');" - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - @"fred", - @"LOWER failed for ASCII string"); - [statement finalizeStatement]; - - statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');" - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - @"FRED", - @"UPPER failed for ASCII string"); - - [statement finalizeStatement]; - // Test UTF-8, have to do some dancing to make the compiler take - // UTF8 literals - NSString *utfNormalString = - [NSString stringWithCString:"Frédéric" - encoding:NSUTF8StringEncoding]; - NSString *utfLowerString = - [NSString stringWithCString:"frédéric" - encoding:NSUTF8StringEncoding]; - NSString *utfUpperString = - [NSString stringWithCString:"FRÉDÉRIC" encoding:NSUTF8StringEncoding]; - - statement = - [GTMSQLiteStatement statementWithSQL: - [NSString stringWithFormat:@"SELECT LOWER('%@');", utfNormalString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - utfLowerString, - @"UPPER failed for UTF8 string"); - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL: - [NSString stringWithFormat:@"SELECT UPPER('%@');", utfNormalString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - utfUpperString, - @"UPPER failed for UTF8 string"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"Should be done"); - [statement finalizeStatement]; -} - -- (void)testUpperLower16 { - - // Test our custom UPPER/LOWER implementation, need a database and - // statement to do it. - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] - autorelease]; - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - GTMSQLiteStatement *statement = nil; - - // Test simple ASCII - statement = [GTMSQLiteStatement statementWithSQL:@"SELECT LOWER('Fred');" - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - @"fred", - @"LOWER failed for ASCII string"); - [statement finalizeStatement]; - - statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');" - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertEqualObjects([statement resultStringAtPosition:0], - @"FRED", - @"UPPER failed for ASCII string"); - [statement finalizeStatement]; -} - -typedef struct { - BOOL upperCase; - int textRep; -} UpperLowerUserArgs; - -static void TestUpperLower16Impl(sqlite3_context *context, - int argc, sqlite3_value **argv); - -- (void)testUTF16DatabasesAreReallyUTF16 { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] - autorelease]; - - const struct { - const char *sqlName; - UpperLowerUserArgs userArgs; - void *function; - } customUpperLower[] = { - { "upper", { YES, SQLITE_UTF16 }, &TestUpperLower16Impl }, - { "upper", { YES, SQLITE_UTF16BE }, &TestUpperLower16Impl }, - { "upper", { YES, SQLITE_UTF16LE }, &TestUpperLower16Impl } - }; - - - sqlite3 *sqldb = [db sqlite3DB]; - int rc; - for (size_t i = 0; - i < (sizeof(customUpperLower) / sizeof(customUpperLower[0])); - i++) { - rc = sqlite3_create_function(sqldb, - customUpperLower[i].sqlName, - 1, - customUpperLower[i].userArgs.textRep, - (void *)&customUpperLower[i].userArgs, - customUpperLower[i].function, - NULL, - NULL); - STAssertEquals(rc, SQLITE_OK, - @"Failed to register upper function" - @"with SQLite db"); - } - - customUpperFunctionCalled = NO; - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:@"SELECT UPPER('Fred');" - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"Failed to step row"); - STAssertTrue(customUpperFunctionCalled, - @"Custom upper function was not called!"); - [statement finalizeStatement]; -} - -- (void)testLikeComparisonOptions { - int err; - - GTMSQLiteDatabase *db8 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - - GTMSQLiteDatabase *db16 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] autorelease]; - - NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - CFOptionFlags c = 0, oldFlags; - - oldFlags = [db likeComparisonOptions]; - - // We'll do a case sensitivity test by making comparison options - // case insensitive - [db setLikeComparisonOptions:c]; - - STAssertTrue([db likeComparisonOptions] == 0, - @"LIKE Comparison options setter/getter does not work!"); - - NSString *createString = nil; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - createString = @"CREATE TABLE foo (bar NODIACRITIC_WIDTHINSENSITIVE TEXT);"; -#else - createString = @"CREATE TABLE foo (bar TEXT);"; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - - err = [db executeSQL:createString]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for like comparison options test"); - - err = [db executeSQL:@"insert into foo values('test like test');"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create row for like comparison options test"); - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:@"select * from foo where bar like '%LIKE%'" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"failed to retrieve row!"); - - // Now change it back to case insensitive and rerun the same query - c |= kCFCompareCaseInsensitive; - [db setLikeComparisonOptions:c]; - err = [statement reset]; - STAssertEquals(err, SQLITE_OK, @"failed to reset select statement"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!"); - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - // Now try adding in 10.5 only flags - c |= (kCFCompareDiacriticInsensitive | kCFCompareWidthInsensitive); - [db setLikeComparisonOptions:c]; - // Make a new statement - [statement finalizeStatement]; - statement = - [GTMSQLiteStatement statementWithSQL:@"select * from foo where bar like '%LIKE%'" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"failed to create statement"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!"); -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - - // Now reset comparison options - [db setLikeComparisonOptions:oldFlags]; - - [statement finalizeStatement]; - } -} - -- (void)testGlobComparisonOptions { - int err; - GTMSQLiteDatabase *db = [[[GTMSQLiteDatabase alloc] - initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - - CFOptionFlags c = 0, oldFlags; - - oldFlags = [db globComparisonOptions]; - - [db setGlobComparisonOptions:c]; - - STAssertTrue([db globComparisonOptions] == 0, - @"GLOB Comparison options setter/getter does not work!"); - - err = [db executeSQL:@"CREATE TABLE foo (bar TEXT);"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for glob comparison options test"); - - err = [db executeSQL:@"insert into foo values('test like test');"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create row for glob comparison options test"); - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:@"select * from foo where bar GLOB 'TEST*'" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"failed to retrieve row!"); - - // Now change it back to case insensitive and rerun the same query - c |= kCFCompareCaseInsensitive; - [db setGlobComparisonOptions:c]; - err = [statement reset]; - STAssertEquals(err, SQLITE_OK, @"failed to reset select statement"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to retrieve row!"); - - [statement finalizeStatement]; - - // Now reset comparison options - [db setGlobComparisonOptions:oldFlags]; -} - -- (void)testCFStringReverseCollation { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - - err = [db executeSQL:@"CREATE table foo_reverse (bar TEXT COLLATE REVERSE);"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for reverse collation test"); - - err = [db executeSQL:@"insert into foo_reverse values('a2');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - err = [db executeSQL:@"insert into foo_reverse values('b1');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:@"SELECT bar from foo_reverse order by bar" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row"); - NSString *oneRow = [statement resultStringAtPosition:0]; - - STAssertEqualStrings(oneRow, @"b1", @"b did not come first!"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row!"); - - STAssertEquals(err, [db lastErrorCode], - @"lastErrorCode API did not match what last API returned!"); - // Calling lastErrorCode resets API error, so the next string will not indicate any error - STAssertEqualStrings(@"not an error", [db lastErrorString], - @"lastErrorString API did not match expected string!"); - - oneRow = [statement resultStringAtPosition:0]; - STAssertEqualStrings(oneRow, @"a2", @"a did not come second!"); - - [statement finalizeStatement]; -} - -- (void)testCFStringNumericCollation { - int err; - GTMSQLiteDatabase *db = [[[GTMSQLiteDatabase alloc] - initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - - err = [db executeSQL: - @"CREATE table numeric_test_table " - @"(numeric_sort TEXT COLLATE NUMERIC, lexographic_sort TEXT);"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for numeric collation test"); - - err = [db executeSQL:@"insert into numeric_test_table values('4','17');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - err = [db executeSQL:@"insert into numeric_test_table values('17','4');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:@"SELECT numeric_sort from numeric_test_table order by numeric_sort" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row"); - NSString *oneRow = [statement resultStringAtPosition:0]; - - STAssertEqualStrings(oneRow, @"4", @"4 did not come first!"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row!"); - - oneRow = [statement resultStringAtPosition:0]; - STAssertEqualStrings(oneRow, @"17", @"17 did not come second!"); - - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL: - @"SELECT lexographic_sort from numeric_test_table " - @"order by lexographic_sort" - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"failed to create statement for lexographic sort"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row"); - oneRow = [statement resultStringAtPosition:0]; - - STAssertEqualStrings(oneRow, @"17", @"17 did not come first!"); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, @"failed to advance row!"); - - oneRow = [statement resultStringAtPosition:0]; - STAssertEqualStrings(oneRow, @"4", @"4 did not come second!"); - - [statement finalizeStatement]; -} - -- (void)testCFStringCollation { - - // Test just one case of the collations, they all exercise largely the - // same code - int err; - GTMSQLiteDatabase *db = - [[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err]; - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - err = [db executeSQL: - @"CREATE TABLE foo (bar TEXT COLLATE NOCASE_NONLITERAL_LOCALIZED);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to create table for collation test"); - - // Insert one row we want to match - err = [db executeSQL:[NSString stringWithFormat: - @"INSERT INTO foo (bar) VALUES ('%@');", - [NSString stringWithCString:"Frédéric" encoding:NSUTF8StringEncoding]]]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute SQL"); - - // Loop over a few things all of which should match - NSArray *testArray = [NSArray arrayWithObjects: - [NSString stringWithCString:"Frédéric" - encoding:NSUTF8StringEncoding], - [NSString stringWithCString:"frédéric" - encoding:NSUTF8StringEncoding], - [NSString stringWithCString:"FRÉDÉRIC" - encoding:NSUTF8StringEncoding], - nil]; - - NSString *testString = nil; - GTM_FOREACH_OBJECT(testString, testArray) { - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL:[NSString stringWithFormat: - @"SELECT bar FROM foo WHERE bar == '%@';", testString] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - int count = 0; - while ([statement stepRow] == SQLITE_ROW) { - count++; - } - STAssertEquals(count, 1, @"Wrong number of collated rows for \"%@\"", - testString); - [statement finalizeStatement]; - } - - // Force a release to test the statement cleanup - [db release]; - -} - -- (void)testDiacriticAndWidthInsensitiveCollations { - // Diacritic & width insensitive collations are not supported - // on Tiger, so most of the test is Leopard or later -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - NSString *tableSQL = - @"CREATE TABLE FOOBAR (collated TEXT COLLATE NODIACRITIC_WIDTHINSENSITIVE, " - @" noncollated TEXT);"; - - err = [db executeSQL:tableSQL]; - STAssertEquals(err, SQLITE_OK, @"error creating table"); - - NSString *testStringValue = [NSString stringWithCString:"Frédéric" - encoding:NSUTF8StringEncoding]; - // Insert one row we want to match - err = [db executeSQL:[NSString stringWithFormat: - @"INSERT INTO FOOBAR (collated, noncollated) " - @"VALUES ('%@','%@');", - testStringValue, testStringValue]]; - - GTMSQLiteStatement *statement = - [GTMSQLiteStatement statementWithSQL: - [NSString stringWithFormat:@"SELECT noncollated FROM foobar" - @" WHERE noncollated == 'Frederic';"] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - // Make sure the comparison query didn't return a row because - // we're doing a comparison on the row without the collation - STAssertEquals([statement stepRow], SQLITE_DONE, - @"Comparison with diacritics did not succeed"); - - [statement finalizeStatement]; - - statement = - [GTMSQLiteStatement statementWithSQL: - [NSString stringWithFormat:@"SELECT collated FROM foobar" - @" WHERE collated == 'Frederic';"] - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - STAssertEquals([statement stepRow], SQLITE_ROW, - @"Comparison ignoring diacritics did not succeed"); - [statement finalizeStatement]; -#else - // On Tiger just make sure it causes the dev log. - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] autorelease]; - STAssertNotNil(db, @"Failed to create DB"); - STAssertEquals(err, SQLITE_OK, @"Failed to create DB"); - - NSString *tableSQL = - @"CREATE TABLE FOOBAR (collated TEXT" - @" COLLATE NODIACRITIC_WIDTHINSENSITIVE_NOCASE," - @" noncollated TEXT);"; - - // Expect one log for each unsupported flag - [GTMUnitTestDevLog expect:2 - casesOfString:@"GTMSQLiteDatabase 10.5 collating not available " - @"on 10.4 or earlier"]; - err = [db executeSQL:tableSQL]; - STAssertEquals(err, SQLITE_OK, @"error creating table"); - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -} - -- (void)testCFStringLikeGlob { - - // Test cases drawn from SQLite test case source - int err; - GTMSQLiteDatabase *db8 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - STAssertNotNil(db8, @"Failed to create database"); - STAssertEquals(err, SQLITE_OK, @"Failed to create database"); - - GTMSQLiteDatabase *db16 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:NO - errorCode:&err] - autorelease]; - - STAssertNotNil(db16, @"Failed to create database"); - STAssertEquals(err, SQLITE_OK, @"Failed to create database"); - - NSArray *databases = [NSArray arrayWithObjects:db8, db16, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - err = [db executeSQL:@"CREATE TABLE t1 (x TEXT);"]; - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for LIKE/GLOB test"); - - // Insert data set - err = [db executeSQL:@"INSERT INTO t1 VALUES ('a');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('ab');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('abc');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('abcd');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('acd');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('abd');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('bc');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('bcd');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('xyz');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('ABC');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('CDE');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - err = [db executeSQL:@"INSERT INTO t1 VALUES ('ABC abc xyz');"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - - // Section 1, case tests - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"ABC", @"abc", nil]), - @"Fail on LIKE test 1.1"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'abc' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", nil]), - @"Fail on LIKE test 1.2"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'ABC' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"ABC", @"abc", nil]), - @"Fail on LIKE test 1.3"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]), - @"Fail on LIKE test 3.1"); - [db setLikeComparisonOptions:(kCFCompareNonliteral)]; - err = [db executeSQL:@"CREATE INDEX i1 ON t1(x);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.3"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'a_c' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", nil]), - @"Fail on LIKE test 3.5"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'ab%d' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abcd", @"abd", nil]), - @"Fail on LIKE test 3.7"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'a_c%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.9"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE '%bcd' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abcd", @"bcd", nil]), - @"Fail on LIKE test 3.11"); - [db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)]; - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]), - @"Fail on LIKE test 3.13"); - [db setLikeComparisonOptions:(kCFCompareNonliteral)]; - err = [db executeSQL:@"DROP INDEX i1;"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.15"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.17"); - err = [db executeSQL:@"CREATE INDEX i1 ON t1(x);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.19"); - [db setLikeComparisonOptions:(kCFCompareNonliteral)]; - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'abc*' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 3.21"); - [db setLikeComparisonOptions:(kCFCompareNonliteral | - kCFCompareCaseInsensitive)]; - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'a[bc]d' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abd", @"acd", nil]), - @"Fail on LIKE test 3.23"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a[^xyz]d' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abd", @"acd", nil]), - @"Fail on glob inverted character set test 3.24"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a[^' ORDER BY 1;"), - ([NSArray array]), - @"Fail on glob inverted character set test 3.25"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a['"), - ([NSArray array]), - @"Unclosed glob character set did not return empty result set 3.26"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a[^]'"), - ([NSArray array]), - @"Unclosed glob inverted character set did not return empty " - @"result set 3.27"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a[^]c]d'"), - ([NSArray arrayWithObjects:@"abd", nil]), - @"Glob character set with inverted set not matching ] did not " - @"return right rows 3.28"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x GLOB 'a[bcdefg'"), - ([NSArray array]), - @"Unclosed glob character set did not return empty result set 3.29"); - - // Section 4 - [db setLikeComparisonOptions:(kCFCompareNonliteral)]; - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 4.1"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE +x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 4.2"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE ('ab' || 'c%') ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 4.3"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x LIKE 'a[xyz]\%' ESCAPE ''"), - ([NSArray array]), - @"0-Character escape clause did not return empty set 4.4"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x LIKE " - @"'a[xyz]\%' ESCAPE NULL"), - ([NSArray array]), - @"Null escape did not return empty set 4.5"); - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x from t1 where x LIKE 'a[xyz]\\%' " - @"ESCAPE '\\'"), - ([NSArray array]), - @"Literal percent match using ESCAPE clause did not return empty result " - @"set 4.6"); - - - // Section 5 - [db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)]; - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"ABC", @"ABC abc xyz", @"abc", @"abcd", nil]), - @"Fail on LIKE test 5.1"); - - err = [db executeSQL:@"CREATE TABLE t2(x COLLATE NOCASE);"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - - err = [db executeSQL:@"INSERT INTO t2 SELECT * FROM t1;"]; - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - - err = [db executeSQL:@"CREATE INDEX i2 ON t2(x COLLATE NOCASE);"]; - - STAssertEquals(err, SQLITE_OK, @"Failed to execute sql"); - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t2 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"ABC", @"ABC abc xyz", @"abcd", nil]), - @"Fail on LIKE test 5.3"); - - [db setLikeComparisonOptions:(kCFCompareNonliteral)]; - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t2 WHERE x LIKE 'abc%' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 5.5"); - - [db setLikeComparisonOptions:(kCFCompareNonliteral | kCFCompareCaseInsensitive)]; - - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t2 WHERE x GLOB 'abc*' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abc", @"abcd", nil]), - @"Fail on LIKE test 5.5"); - - // Non standard tests not from the SQLite source - STAssertEqualObjects( - LikeGlobTestHelper(db, - @"SELECT x FROM t1 WHERE x GLOB 'a[b-d]d' ORDER BY 1;"), - ([NSArray arrayWithObjects:@"abd", @"acd", nil]), - @"Fail on GLOB with character range"); - } -} - -- (void)testDescription { - int err; - GTMSQLiteDatabase *db8 = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - STAssertNotNil(db8, @"Failed to create database"); - STAssertEquals(err, SQLITE_OK, @"Failed to create database"); - STAssertNotNil([db8 description], nil); -} - -// // From GTMSQLite.m -// CFStringEncoding SqliteTextEncodingToCFStringEncoding(int enc); - -// - (void)testEncodingMappingIsCorrect { -// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF8) == -// kCFStringEncodingUTF8, -// @"helper method didn't return right encoding for " -// @"kCFStringEncodingUTF8"); - -// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16BE) -// == kCFStringEncodingUTF16BE, -// @"helper method didn't return right encoding for " -// @"kCFStringEncodingUTF16BE"); - -// STAssertTrue(SqliteTextEncodingToCFStringEncoding(SQLITE_UTF16LE) -// == kCFStringEncodingUTF16LE, -// @"helper method didn't return right encoding for " -// @"kCFStringEncodingUTF16LE"); - -// STAssertTrue(SqliteTextEncodingToCFStringEncoding(9999) -// == kCFStringEncodingUTF8, @"helper method didn't " -// @"return default encoding for invalid input"); -// } - -@end - - -// Helper function for LIKE/GLOB testing -static NSArray* LikeGlobTestHelper(GTMSQLiteDatabase *db, NSString *sql) { - - int err; - NSMutableArray *resultArray = [NSMutableArray array]; - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:sql - inDatabase:db - errorCode:&err]; - if (!statement || err != SQLITE_OK) return nil; - while ([statement stepRow] == SQLITE_ROW) { - id result = [statement resultFoundationObjectAtPosition:0]; - if (result) [resultArray addObject:result]; - } - if (err != SQLITE_DONE && err != SQLITE_OK) resultArray = nil; - [statement finalizeStatement]; - - return resultArray; -} - -// ============================================================================= - -@implementation GTMSQLiteStatementTest - -#pragma mark Parameters/binding tests - -- (void)testInitAPI { - int err; - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:nil - inDatabase:nil - errorCode:&err]; - STAssertNil(statement, @"Create statement succeeded with nil SQL string"); - STAssertEquals(err, SQLITE_MISUSE, @"Err was not SQLITE_MISUSE on nil " - @"SQL string"); - - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - statement = [GTMSQLiteStatement statementWithSQL:@"select * from blah" - inDatabase:db - errorCode:&err]; - - STAssertNil(statement, @"Select statement succeeded with invalid table"); - STAssertNotEquals(err, SQLITE_OK, - @"Err was not SQLITE_MISUSE on invalid table"); - - [statement finalizeStatement]; -} - -- (void)testParameterCountAPI { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - NSString *tableCreateSQL = - @"CREATE TABLE foo (tc TEXT," - @"ic integer," - @"rc real," - @"bc blob);"; - - err = [db executeSQL:tableCreateSQL]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for collation test"); - NSString *insert = - @"insert into foo (tc, ic, rc, bc) values (:tc, :ic, :rc, :bc);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - STAssertEquals([statement parameterCount], 4, - @"Bound parameter count was not 4"); - - [statement sqlite3Statement]; - [statement finalizeStatement]; -} - -- (void)testPositionOfNamedParameterAPI { - int err; - - GTMSQLiteDatabase *dbWithCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - GTMSQLiteDatabase *dbWithoutCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:NO - utf8:YES - errorCode:&err] - autorelease]; - - NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - NSString *tableCreateSQL = - @"CREATE TABLE foo (tc TEXT," - @"ic integer," - @"rc real," - @"bc blob);"; - err = [db executeSQL:tableCreateSQL]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for collation test"); - NSString *insert = - @"insert into foo (tc, ic, rc, bc) " - @"values (:tc, :ic, :rc, :bc);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create statement"); - - NSArray *parameterNames = [NSArray arrayWithObjects:@":tc", - @":ic", - @":rc", - @":bc", nil]; - - for (unsigned int i = 1; i <= [parameterNames count]; i++) { - NSString *paramName = [parameterNames objectAtIndex:i-1]; - // Cast to signed int to avoid type errors from STAssertEquals - STAssertEquals((int)i, - [statement positionOfParameterNamed:paramName], - @"positionOfParameterNamed API did not return correct " - @"results"); - STAssertEqualStrings(paramName, - [statement nameOfParameterAtPosition:i], - @"nameOfParameterAtPosition API did not return " - @"correct name"); - } - [statement finalizeStatement]; - } -} - -- (void)testBindingBlob { - int err; - const int BLOB_COLUMN = 0; - GTMSQLiteDatabase *dbWithCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - GTMSQLiteDatabase *dbWithoutCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:NO - utf8:YES - errorCode:&err] - autorelease]; - - NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - // Test strategy is to create a table with 3 columns - // Insert some values, and use the result collection APIs - // to make sure we get the same values back - err = [db executeSQL: - @"CREATE TABLE blobby (bc blob);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for BLOB binding test"); - NSString *insert = @"insert into blobby (bc) values (:bc);"; - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - char bytes[] = "DEADBEEF"; - NSUInteger bytesLen = strlen(bytes); - NSData *originalBytes = [NSData dataWithBytes:bytes length:bytesLen]; - - err = [statement bindBlobAtPosition:1 data:originalBytes]; - - STAssertEquals(err, SQLITE_OK, @"error binding BLOB at position 1"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"failed to insert BLOB for BLOB test"); - - [statement finalizeStatement]; - - NSString *selectSQL = @"select * from blobby;"; - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - STAssertEquals([statement resultColumnCount], 1, - @"result had more columns than the table had?"); - - STAssertEqualStrings([statement resultColumnNameAtPosition:BLOB_COLUMN], - @"bc", - @"column name dictionary was not correct"); - - STAssertEquals([statement rowDataCount], - 1, - @"More than one column returned?"); - - STAssertEquals([statement resultColumnTypeAtPosition:BLOB_COLUMN], - SQLITE_BLOB, - @"Query for column 1 of test table was not BLOB!"); - - NSData *returnedbytes = [statement resultBlobDataAtPosition:BLOB_COLUMN]; - STAssertTrue([originalBytes isEqualToData:returnedbytes], - @"Queried data was not equal :-("); - [statement finalizeStatement]; - } -} - -- (void)testBindingNull { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - err = [db executeSQL: - @"CREATE TABLE foo (tc TEXT);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for NULL binding test"); - NSString *insert = @"insert into foo (tc) values (:tc);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - err = [statement bindSQLNullAtPosition:1]; - - STAssertEquals(err, SQLITE_OK, @"error binding NULL at position 1"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"failed to insert NULL for Null Binding test"); - - [statement finalizeStatement]; - - NSString *selectSQL = @"select 1 from foo where tc is NULL;"; - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - [statement finalizeStatement]; -} - -- (void)testBindingDoubles { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - // Test strategy is to create a table with 2 real columns. - // For the first one, we'll use bindDoubleAtPosition - // For the second one, we'll use bindNumberAsDoubleAtPosition - // Then, for verification, we'll use a query that returns - // all rows where the columns are equal - double testVal = 42.42; - NSNumber *doubleValue = [NSNumber numberWithDouble:testVal]; - - err = [db executeSQL: - @"CREATE TABLE realTable (rc1 REAL, rc2 REAL);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for double binding test"); - NSString *insert = @"insert into realTable (rc1, rc2) values (:rc1, :rc2);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - err = [statement bindDoubleAtPosition:1 value:testVal]; - STAssertEquals(err, SQLITE_OK, @"error binding double at position 1"); - - err = [statement bindNumberAsDoubleAtPosition:2 number:doubleValue]; - STAssertEquals(err, SQLITE_OK, - @"error binding number as double at " - @"position 2"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, - @"failed to insert doubles for double " - @"binding test"); - - [statement finalizeStatement]; - - NSString *selectSQL = @"select rc1, rc2 from realTable where rc1 = rc2;"; - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - double retrievedValue = [statement resultDoubleAtPosition:0]; - STAssertEquals(retrievedValue, testVal, - @"Retrieved double did not equal " - @"original"); - - NSNumber *retrievedNumber = [statement resultNumberAtPosition:1]; - STAssertEqualObjects(retrievedNumber, doubleValue, - @"Retrieved NSNumber object did not equal"); - - [statement finalizeStatement]; -} - -- (void) testResultCollectionAPI { - int err; - GTMSQLiteDatabase *dbWithCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - GTMSQLiteDatabase *dbWithoutCF = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:NO - utf8:YES - errorCode:&err] - autorelease]; - - NSArray *databases = [NSArray arrayWithObjects:dbWithCF, dbWithoutCF, nil]; - GTMSQLiteDatabase *db; - GTM_FOREACH_OBJECT(db, databases) { - // Test strategy is to create a table with 3 columns - // Insert some values, and use the result collection APIs - // to make sure we get the same values back - err = [db executeSQL: - @"CREATE TABLE test (a integer, b text, c blob, d text);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for result collection test"); - - NSString *insert = - @"insert into test (a, b, c, d) " - @"values (42, 'text text', :bc, null);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - - char blobChars[] = "DEADBEEF"; - NSUInteger blobLength = strlen(blobChars); - NSData *blobData = [NSData dataWithBytes:blobChars length:blobLength]; - - err = [statement bindBlobAtPosition:1 data:blobData]; - STAssertEquals(err, SQLITE_OK, @"error binding BLOB at position 1"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, - @"failed to insert doubles for double " - @"binding test"); - - NSString *selectSQL = @"select * from test;"; - - [statement finalizeStatement]; - - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - STAssertNotNil([statement resultRowArray], - @"Failed to retrieve result array"); - STAssertNotNil([statement resultRowDictionary], - @"Failed to retrieve result dictionary"); - [statement finalizeStatement]; - } -} - -- (void) testBindingIntegers { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - // Test strategy is to create a table with 2 real columns. - // For the first one, we'll use bindIntegerAtPosition - // For the second one, we'll use bindNumberAsIntegerAtPosition - // Then, for verification, we'll use a query that returns - // all rows where the columns are equal - int testVal = 42; - NSNumber *intValue = [NSNumber numberWithInt:testVal]; - - err = [db executeSQL: - @"CREATE TABLE integerTable (ic1 integer, ic2 integer);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for integer binding test"); - NSString *insert = - @"insert into integerTable (ic1, ic2) values (:ic1, :ic2);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - err = [statement bindInt32AtPosition:1 value:testVal]; - STAssertEquals(err, SQLITE_OK, @"error binding integer at position 1"); - - err = [statement bindNumberAsInt32AtPosition:2 number:intValue]; - STAssertEquals(err, SQLITE_OK, - @"error binding number as integer at " - @"position 2"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, - @"failed to insert integers for integer " - @"binding test"); - - [statement finalizeStatement]; - - NSString *selectSQL = @"select ic1, ic2 from integerTable where ic1 = ic2;"; - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - int retrievedValue = [statement resultInt32AtPosition:0]; - STAssertEquals(retrievedValue, testVal, - @"Retrieved integer did not equal " - @"original"); - - NSNumber *retrievedNumber = [statement resultNumberAtPosition:1]; - STAssertEqualObjects(retrievedNumber, intValue, - @"Retrieved NSNumber object did not equal"); - - [statement finalizeStatement]; -} - -- (void) testBindingLongLongs { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - // Test strategy is to create a table with 2 long long columns. - // For the first one, we'll use bindLongLongAtPosition - // For the second one, we'll use bindNumberAsLongLongAtPosition - // Then, for verification, we'll use a query that returns - // all rows where the columns are equal - long long testVal = LLONG_MAX; - NSNumber *longlongValue = [NSNumber numberWithLongLong:testVal]; - - err = [db executeSQL: - @"CREATE TABLE longlongTable (llc1 integer, llc2 integer);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for long long binding test"); - NSString *insert = - @"insert into longlongTable (llc1, llc2) " - @"values (:llc1, :llc2);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - err = [statement bindLongLongAtPosition:1 value:testVal]; - STAssertEquals(err, SQLITE_OK, @"error binding long long at position 1"); - - err = [statement bindNumberAsLongLongAtPosition:2 number:longlongValue]; - STAssertEquals(err, SQLITE_OK, - @"error binding number as long long at " - @"position 2"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, - @"failed to insert long longs for long long " - @"binding test"); - - [statement finalizeStatement]; - - NSString *selectSQL = @"select llc1, llc2 from longlongTable where llc1 = llc2;"; - - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - long long retrievedValue = [statement resultLongLongAtPosition:0]; - STAssertEquals(retrievedValue, testVal, - @"Retrieved long long did not equal " - @"original"); - - NSNumber *retrievedNumber = [statement resultNumberAtPosition:1]; - STAssertEqualObjects(retrievedNumber, longlongValue, - @"Retrieved NSNumber object did not equal"); - - [statement finalizeStatement]; -} - -- (void) testBindingString { - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - // Test strategy is to create a table with 1 string column - // Then, for verification, we'll use a query that returns - // all rows where the strings are equal - err = [db executeSQL: - @"CREATE TABLE stringTable (sc1 text);"]; - - STAssertEquals(err, SQLITE_OK, - @"Failed to create table for string binding test"); - - NSString *insert = - @"insert into stringTable (sc1) " - @"values (:sc1);"; - - GTMSQLiteStatement *statement = [GTMSQLiteStatement statementWithSQL:insert - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create insert statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create insert statement"); - - NSString *testVal = @"this is a test string"; - err = [statement bindStringAtPosition:1 string:testVal]; - STAssertEquals(err, SQLITE_OK, @"error binding string at position 1"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, - @"failed to insert string for string binding test"); - - [statement finalizeStatement]; - - NSString *selectSQL = - [NSString stringWithFormat:@"select 1 from stringtable where sc1 = '%@';", - testVal]; - - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - // Check that we got at least one row back - STAssertEquals(err, SQLITE_ROW, @"did not retrieve a row from db :-("); - err = [statement stepRow]; - STAssertEquals(err, SQLITE_DONE, @"retrieved more than 1 row from db :-("); - [statement finalizeStatement]; -} - -- (void)testThatNotFinalizingStatementsThrowsAssertion { - // The run-time check is discouraged, but we're using it because the - // same test binary is used for both GC & Non-GC runs - if (!GTMIsGarbageCollectionEnabled()) { - NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init]; - - int err; - GTMSQLiteDatabase *db = - [[[GTMSQLiteDatabase alloc] initInMemoryWithCFAdditions:YES - utf8:YES - errorCode:&err] - autorelease]; - - STAssertNotNil(db, @"Failed to create database"); - - NSString *selectSQL = @"select 1"; - GTMSQLiteStatement *statement; - statement = [GTMSQLiteStatement statementWithSQL:selectSQL - inDatabase:db - errorCode:&err]; - - STAssertNotNil(statement, @"Failed to create select statement"); - STAssertEquals(err, SQLITE_OK, @"Failed to create select statement"); - - err = [statement stepRow]; - STAssertEquals(err, SQLITE_ROW, - @"failed to step row for finalize test"); - - NSString *expectedLog = - @"-[GTMSQLiteStatement finalizeStatement] must be called " - @"when statement is no longer needed"; - - [GTMUnitTestDevLog expectString:expectedLog]; - [GTMUnitTestDevLog expectPattern:@"Unable to close .*"]; - [localPool drain]; - } -} - -- (void)testCompleteSQLString { - NSString *str = @"CREATE TABLE longlongTable (llc1 integer, llc2 integer);"; - BOOL isComplete = [GTMSQLiteStatement isCompleteStatement:str]; - STAssertTrue(isComplete, nil); - isComplete = [GTMSQLiteStatement isCompleteStatement:@""]; - STAssertTrue(isComplete, nil); - isComplete = [GTMSQLiteStatement isCompleteStatement:@"CR"]; - STAssertFalse(isComplete, nil); -} - -- (void)testQuotingSQLString { - NSString *str = @"This is wild! It's fun!"; - NSString *str2 = [GTMSQLiteStatement quoteAndEscapeString:str]; - STAssertEqualObjects(str2, @"'This is wild! It''s fun!'", nil); - str2 = [GTMSQLiteStatement quoteAndEscapeString:@""]; - STAssertEqualObjects(str2, @"''", nil); -} - -- (void)testVersion { - STAssertGreaterThan([GTMSQLiteDatabase sqliteVersionNumber], 0, nil); - STAssertNotNil([GTMSQLiteDatabase sqliteVersionString], nil); -} - -@end - -static void TestUpperLower16Impl(sqlite3_context *context, - int argc, sqlite3_value **argv) { - - customUpperFunctionCalled = YES; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.h deleted file mode 100644 index 226d75b2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.h +++ /dev/null @@ -1,134 +0,0 @@ -// -// GTMScriptRunner.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - -/// Encapsulates the interaction with an interpreter for running scripts. -// This class manages the interaction with some command-line interpreter (e.g., -// a shell, perl, python) and allows you to run expressions through the -// interpreter, and even full scripts that reside in files on disk. By default, -// the "/bin/sh" interpreter is used, but others may be explicitly specified. -// This can be a convenient way to run quick shell commands from Cocoa, or even -// interact with other shell tools such as "bc", or even "gdb". -// -// It's important to note that by default commands and scripts will have their -// environments erased before execution. You can control the environment they -// get with the -setEnvironment: method. -// -// The best way to show what this class does is to show some examples. -// -// Examples: -// -// GTMScriptRunner *sr = [GTMScriptRunner runner]; -// NSString *output = [sr run:@"ls -l /dev/null"]; -// /* output == "crw-rw-rw- 1 root wheel 3, 2 Mar 22 10:35 /dev/null" */ -// -// GTMScriptRunner *sr = [GTMScriptRunner runner]; -// NSString *output = [sr runScript:@"/path/to/my/script.sh"]; -// /* output == the standard output from the script*/ -// -// GTMScriptRunner *sr = [GTMScriptRunner runnerWithPerl]; -// NSString *output = [sr run:@"print 'A'x4"]; -// /* output == "AAAA" */ -// -// See the unit test file for more examples. -// -@interface GTMScriptRunner : NSObject { - @private - NSString *interpreter_; - NSArray *interpreterArgs_; - NSDictionary *environment_; - BOOL trimsWhitespace_; -} - -// Convenience methods for returning autoreleased GTMScriptRunner instances, that -// are associated with the specified interpreter. The default interpreter -// (returned from +runner is "/bin/sh"). -+ (GTMScriptRunner *)runner; -+ (GTMScriptRunner *)runnerWithBash; -+ (GTMScriptRunner *)runnerWithPerl; -+ (GTMScriptRunner *)runnerWithPython; - -// Returns an autoreleased GTMScriptRunner instance associated with the specified -// interpreter, and the given args. The specified args are the arguments that -// should be applied to the interpreter itself, not scripts run through the -// interpreter. For example, to start an interpreter using "perl -w", you could -// do: -// [GTMScriptRunner runnerWithInterpreter:@"/usr/bin/perl" -// withArgs:[NSArray arrayWithObject:@"-w"]]; -// -+ (GTMScriptRunner *)runnerWithInterpreter:(NSString *)interp; -+ (GTMScriptRunner *)runnerWithInterpreter:(NSString *)interp - withArgs:(NSArray *)args; - -// Returns a GTMScriptRunner associated with |interp| -- (id)initWithInterpreter:(NSString *)interp; - -// Returns a GTMScriptRunner associated with |interp| and |args| applied to the -// specified interpreter. This method is the designated initializer. -- (id)initWithInterpreter:(NSString *)interp withArgs:(NSArray *)args; - -// Runs the specified command string by sending it through the interpreter's -// standard input. The standard output is returned. The standard error is -// discarded. -- (NSString *)run:(NSString *)cmds; -// Same as the previous method, except the standard error is returned in |err| -// if specified. -- (NSString *)run:(NSString *)cmds standardError:(NSString **)err; - -// Runs the file at |path| using the interpreter. -- (NSString *)runScript:(NSString *)path; -// Runs the file at |path|, passing it |args| as arguments. -- (NSString *)runScript:(NSString *)path withArgs:(NSArray *)args; -// Same as above, except the standard error is returned in |err| if specified. -- (NSString *)runScript:(NSString *)path withArgs:(NSArray *)args - standardError:(NSString **)err; - -// Returns the environment dictionary to use for the inferior process that will -// run the interpreter. A return value of nil means that the interpreter's -// environment should be erased. -- (NSDictionary *)environment; - -// Sets the environment dictionary to use for the interpreter process. See -// NSTask's -setEnvironment: documentation for details about the dictionary. -// Basically, it's just a dict of key/value pairs corresponding to environment -// keys and values. Setting a value of nil means that the environment should be -// erased before running the interpreter. -// -// *** The default is nil. *** -// -// By default, all interpreters will run with a clean environment. If you want -// the interpreter process to inherit your current environment you'll need to -// do the following: -// -// GTMScriptRunner *sr = [GTMScriptRunner runner]; -// [sr setEnvironment:[[NSProcessInfo processInfo] environment]]; -// -// SECURITY NOTE: That said, in general you should NOT do this because an -// attacker can modify the environment that would then get sent to your scripts. -// And if your binary is suid, then you ABSOLUTELY should not do this. -// -- (void)setEnvironment:(NSDictionary *)newEnv; - -// Sets (and returns) whether or not whitespace is automatically trimmed from -// the ends of the returned strings. The default is YES, so trailing newlines -// will be removed. -- (BOOL)trimsWhitespace; -- (void)setTrimsWhitespace:(BOOL)trim; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.m deleted file mode 100644 index fce69156..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunner.m +++ /dev/null @@ -1,254 +0,0 @@ -// -// GTMScriptRunner.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMScriptRunner.h" -#import "GTMDefines.h" - -static BOOL LaunchNSTaskCatchingExceptions(NSTask *task); - -@interface GTMScriptRunner (PrivateMethods) -- (NSTask *)interpreterTaskWithAdditionalArgs:(NSArray *)args; -@end - -@implementation GTMScriptRunner - -+ (GTMScriptRunner *)runner { - return [[[self alloc] init] autorelease]; -} - -+ (GTMScriptRunner *)runnerWithBash { - return [self runnerWithInterpreter:@"/bin/bash"]; -} - -+ (GTMScriptRunner *)runnerWithPerl { - return [self runnerWithInterpreter:@"/usr/bin/perl"]; -} - -+ (GTMScriptRunner *)runnerWithPython { - return [self runnerWithInterpreter:@"/usr/bin/python"]; -} - -+ (GTMScriptRunner *)runnerWithInterpreter:(NSString *)interp { - return [self runnerWithInterpreter:interp withArgs:nil]; -} - -+ (GTMScriptRunner *)runnerWithInterpreter:(NSString *)interp withArgs:(NSArray *)args { - return [[[self alloc] initWithInterpreter:interp withArgs:args] autorelease]; -} - -- (id)init { - return [self initWithInterpreter:nil]; -} - -- (id)initWithInterpreter:(NSString *)interp { - return [self initWithInterpreter:interp withArgs:nil]; -} - -- (id)initWithInterpreter:(NSString *)interp withArgs:(NSArray *)args { - if ((self = [super init])) { - trimsWhitespace_ = YES; - interpreter_ = [interp copy]; - interpreterArgs_ = [args retain]; - if (!interpreter_) { - interpreter_ = @"/bin/sh"; - } - } - return self; -} - -- (void)dealloc { - [environment_ release]; - [interpreter_ release]; - [interpreterArgs_ release]; - [super dealloc]; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@<%p>{ interpreter = '%@', args = %@, environment = %@ }", - [self class], self, interpreter_, interpreterArgs_, environment_]; -} - -- (NSString *)run:(NSString *)cmds { - return [self run:cmds standardError:nil]; -} - -- (NSString *)run:(NSString *)cmds standardError:(NSString **)err { - if (!cmds) return nil; - - NSTask *task = [self interpreterTaskWithAdditionalArgs:nil]; - NSFileHandle *toTask = [[task standardInput] fileHandleForWriting]; - NSFileHandle *fromTask = [[task standardOutput] fileHandleForReading]; - - if (!LaunchNSTaskCatchingExceptions(task)) { - return nil; - } - - [toTask writeData:[cmds dataUsingEncoding:NSUTF8StringEncoding]]; - [toTask closeFile]; - - NSData *outData = [fromTask readDataToEndOfFile]; - NSString *output = [[[NSString alloc] initWithData:outData - encoding:NSUTF8StringEncoding] autorelease]; - - // Handle returning standard error if |err| is not nil - if (err) { - NSFileHandle *stderror = [[task standardError] fileHandleForReading]; - NSData *errData = [stderror readDataToEndOfFile]; - *err = [[[NSString alloc] initWithData:errData - encoding:NSUTF8StringEncoding] autorelease]; - if (trimsWhitespace_) { - *err = [*err stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - } - - // let folks test for nil instead of @"" - if ([*err length] < 1) { - *err = nil; - } - } - - [task terminate]; - - if (trimsWhitespace_) { - output = [output stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - } - - // let folks test for nil instead of @"" - if ([output length] < 1) { - output = nil; - } - - return output; -} - -- (NSString *)runScript:(NSString *)path { - return [self runScript:path withArgs:nil]; -} - -- (NSString *)runScript:(NSString *)path withArgs:(NSArray *)args { - return [self runScript:path withArgs:args standardError:nil]; -} - -- (NSString *)runScript:(NSString *)path withArgs:(NSArray *)args standardError:(NSString **)err { - if (!path) return nil; - - NSArray *scriptPlusArgs = [[NSArray arrayWithObject:path] arrayByAddingObjectsFromArray:args]; - NSTask *task = [self interpreterTaskWithAdditionalArgs:scriptPlusArgs]; - NSFileHandle *fromTask = [[task standardOutput] fileHandleForReading]; - - if (!LaunchNSTaskCatchingExceptions(task)) { - return nil; - } - - NSData *outData = [fromTask readDataToEndOfFile]; - NSString *output = [[[NSString alloc] initWithData:outData - encoding:NSUTF8StringEncoding] autorelease]; - - // Handle returning standard error if |err| is not nil - if (err) { - NSFileHandle *stderror = [[task standardError] fileHandleForReading]; - NSData *errData = [stderror readDataToEndOfFile]; - *err = [[[NSString alloc] initWithData:errData - encoding:NSUTF8StringEncoding] autorelease]; - if (trimsWhitespace_) { - *err = [*err stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - } - - // let folks test for nil instead of @"" - if ([*err length] < 1) { - *err = nil; - } - } - - [task terminate]; - - if (trimsWhitespace_) { - output = [output stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - } - - // let folks test for nil instead of @"" - if ([output length] < 1) { - output = nil; - } - - return output; -} - -- (NSDictionary *)environment { - return environment_; -} - -- (void)setEnvironment:(NSDictionary *)newEnv { - [environment_ autorelease]; - environment_ = [newEnv retain]; -} - -- (BOOL)trimsWhitespace { - return trimsWhitespace_; -} - -- (void)setTrimsWhitespace:(BOOL)trim { - trimsWhitespace_ = trim; -} - -@end - - -@implementation GTMScriptRunner (PrivateMethods) - -- (NSTask *)interpreterTaskWithAdditionalArgs:(NSArray *)args { - NSTask *task = [[[NSTask alloc] init] autorelease]; - [task setLaunchPath:interpreter_]; - [task setStandardInput:[NSPipe pipe]]; - [task setStandardOutput:[NSPipe pipe]]; - [task setStandardError:[NSPipe pipe]]; - - // If |environment_| is nil, then use an empty dictionary, otherwise use - // environment_ exactly. - [task setEnvironment:(environment_ - ? environment_ - : [NSDictionary dictionary])]; - - // Build args to interpreter. The format is: - // interp [args-to-interp] [script-name [args-to-script]] - NSArray *allArgs = nil; - if (interpreterArgs_) { - allArgs = interpreterArgs_; - } - if (args) { - allArgs = allArgs ? [allArgs arrayByAddingObjectsFromArray:args] : args; - } - if (allArgs){ - [task setArguments:allArgs]; - } - - return task; -} - -@end - -static BOOL LaunchNSTaskCatchingExceptions(NSTask *task) { - BOOL isOK = YES; - @try { - [task launch]; - } @catch (id ex) { - isOK = NO; - _GTMDevLog(@"Failed to launch interpreter '%@' due to: %@", - [task launchPath], ex); - } - return isOK; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunnerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunnerTest.m deleted file mode 100644 index 3d74b9eb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMScriptRunnerTest.m +++ /dev/null @@ -1,423 +0,0 @@ -// -// GTMScriptRunnerTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import -#import "GTMSenTestCase.h" -#import "GTMScriptRunner.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMScriptRunnerTest : GTMTestCase { - @private - NSString *shScript_; - NSString *perlScript_; - NSString *shOutputScript_; -} -@end - -@interface GTMScriptRunnerTest (PrivateMethods) -- (void)helperTestBourneShellUsingScriptRunner:(GTMScriptRunner *)sr; -@end - -@implementation GTMScriptRunnerTest - -- (void)setUp { - shScript_ = [NSString stringWithFormat:@"/tmp/script_runner_unittest_%d_%d_sh", geteuid(), getpid()]; - [@"#!/bin/sh\n" - @"i=1\n" - @"if [ -n \"$1\" ]; then\n" - @" i=$1\n" - @"fi\n" - @"echo $i\n" - writeToFile:shScript_ atomically:YES encoding:NSUTF8StringEncoding error:nil]; - - perlScript_ = [NSString stringWithFormat:@"/tmp/script_runner_unittest_%d_%d_pl", geteuid(), getpid()]; - [@"#!/usr/bin/perl\n" - @"use strict;\n" - @"my $i = 1;\n" - @"if (defined $ARGV[0]) {\n" - @" $i = $ARGV[0];\n" - @"}\n" - @"print \"$i\n\"\n" - writeToFile:perlScript_ atomically:YES encoding:NSUTF8StringEncoding error:nil]; - - shOutputScript_ = [NSString stringWithFormat:@"/tmp/script_runner_unittest_err_%d_%d_sh", geteuid(), getpid()]; - [@"#!/bin/sh\n" - @"if [ \"err\" = \"$1\" ]; then\n" - @" echo \" on err \" > /dev/stderr\n" - @"else\n" - @" echo \" on out \"\n" - @"fi\n" - writeToFile:shOutputScript_ atomically:YES encoding:NSUTF8StringEncoding error:nil]; -} - -- (void)tearDown { - const char *path = [shScript_ fileSystemRepresentation]; - if (path) { - unlink(path); - } - path = [perlScript_ fileSystemRepresentation]; - if (path) { - unlink(path); - } - path = [shOutputScript_ fileSystemRepresentation]; - if (path) { - unlink(path); - } -} - -- (void)testShCommands { - GTMScriptRunner *sr = [GTMScriptRunner runner]; - [self helperTestBourneShellUsingScriptRunner:sr]; -} - -- (void)testBashCommands { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithBash]; - [self helperTestBourneShellUsingScriptRunner:sr]; -} - -- (void)testZshCommands { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithInterpreter:@"/bin/zsh"]; - [self helperTestBourneShellUsingScriptRunner:sr]; -} - -- (void)testBcCommands { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithInterpreter:@"/usr/bin/bc" - withArgs:[NSArray arrayWithObject:@"-lq"]]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple expression (NOTE that bc requires that commands end with a newline) - output = [sr run:@"1 + 2\n"]; - STAssertEqualObjects(output, @"3", @"output should equal '3'"); - - // Simple expression with variables and multiple statements - output = [sr run:@"i=1; i+2\n"]; - STAssertEqualObjects(output, @"3", @"output should equal '3'"); - - // Simple expression with base conversion - output = [sr run:@"obase=2; 2^5\n"]; - STAssertEqualObjects(output, @"100000", @"output should equal '100000'"); - - // Simple expression with sine and cosine functions - output = [sr run:@"scale=3;s(0)+c(0)\n"]; - STAssertEqualObjects(output, @"1.000", @"output should equal '1.000'"); -} - -- (void)testPerlCommands { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithPerl]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple print - output = [sr run:@"print 'hi'"]; - STAssertEqualObjects(output, @"hi", @"output should equal 'hi'"); - - // Simple print x4 - output = [sr run:@"print 'A'x4"]; - STAssertEqualObjects(output, @"AAAA", @"output should equal 'AAAA'"); - - // Simple perl-y stuff - output = [sr run:@"my $i=0; until ($i++==41){} print $i"]; - STAssertEqualObjects(output, @"42", @"output should equal '42'"); -} - -- (void)testPythonCommands { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithPython]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple print - output = [sr run:@"print 'hi'"]; - STAssertEqualObjects(output, @"hi", @"output should equal 'hi'"); - - // Simple python expression - output = [sr run:@"print '-'.join(['a', 'b', 'c'])"]; - STAssertEqualObjects(output, @"a-b-c", @"output should equal 'a-b-c'"); -} - -- (void)testBashScript { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithBash]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple sh script - output = [sr runScript:shScript_]; - STAssertEqualObjects(output, @"1", @"output should equal '1'"); - - // Simple sh script with 1 command line argument - output = [sr runScript:shScript_ withArgs:[NSArray arrayWithObject:@"2"]]; - STAssertEqualObjects(output, @"2", @"output should equal '2'"); -} - -- (void)testPerlScript { - GTMScriptRunner *sr = [GTMScriptRunner runnerWithPerl]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple Perl script - output = [sr runScript:perlScript_]; - STAssertEqualObjects(output, @"1", @"output should equal '1'"); - - // Simple perl script with 1 command line argument - output = [sr runScript:perlScript_ withArgs:[NSArray arrayWithObject:@"2"]]; - STAssertEqualObjects(output, @"2", @"output should equal '2'"); -} - -- (void)testEnvironment { - GTMScriptRunner *sr = [GTMScriptRunner runner]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - NSString *error = nil; - STAssertNil([sr environment], @"should start w/ empty env"); - - output = [sr run:@"/usr/bin/env | wc -l" standardError:&error]; - int numVars = [output intValue]; - STAssertGreaterThan(numVars, 0, - @"numVars should be positive. StdErr %@", error); - // By default the environment is wiped clean, however shells often add a few - // of their own env vars after things have been wiped. For example, sh will - // add about 3 env vars (PWD, _, and SHLVL). - STAssertLessThan(numVars, 5, @"Our env should be almost empty"); - - NSDictionary *newEnv = [NSDictionary dictionaryWithObject:@"bar" - forKey:@"foo"]; - [sr setEnvironment:newEnv]; - output = [sr run:@"/usr/bin/env | wc -l" standardError:&error]; - STAssertEquals([output intValue], numVars + 1, - @"should have one more env var now. StdErr %@", error); - - [sr setEnvironment:nil]; - output = [sr run:@"/usr/bin/env | wc -l" standardError:&error]; - STAssertEquals([output intValue], numVars, - @"should be back down to %d vars. StdErr:%@", numVars, error); - - NSMutableDictionary *currVars - = [[[[NSProcessInfo processInfo] environment] mutableCopy] autorelease]; - - // When debugging a release build _ was not in the processInfo environment - // causing the assert below to fail. Not sure why, but it appeared - // to be harmless, and easy to account for. - [currVars setObject:@"/usr/bin/env" forKey:@"_"]; - [sr setEnvironment:currVars]; - - output = [sr run:@"/usr/bin/env | /usr/bin/sort" standardError:&error]; - NSArray *lineArray = [output componentsSeparatedByString:@"\n"]; - STAssertEquals([lineArray count], [currVars count], - @"StdErr:%@\nCurrentEnvironment:\n%@\nExpected environment:\n%@", - error, output, currVars); -} - -- (void)testDescription { - // make sure description doesn't choke - GTMScriptRunner *sr = [GTMScriptRunner runner]; - STAssertNotNil(sr, @"Script runner must not be nil"); - STAssertGreaterThan([[sr description] length], (NSUInteger)10, - @"expected a description of at least 10 chars"); -} - -- (void)testRunCommandOutputHandling { - // Test whitespace trimming & stdout vs. stderr w/ run command api - - GTMScriptRunner *sr = [GTMScriptRunner runnerWithBash]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - NSString *err = nil; - - // w/o whitespace trimming - { - [sr setTrimsWhitespace:NO]; - STAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed"); - - // test stdout - output = [sr run:@"echo \" on out \"" standardError:&err]; - STAssertEqualObjects(output, @" on out \n", @"failed to get stdout output"); - STAssertNil(err, @"stderr should have been empty"); - - // test stderr - output = [sr run:@"echo \" on err \" > /dev/stderr" standardError:&err]; - STAssertNil(output, @"stdout should have been empty"); - STAssertEqualObjects(err, @" on err \n", nil); - } - - // w/ whitespace trimming - { - [sr setTrimsWhitespace:YES]; - STAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed"); - - // test stdout - output = [sr run:@"echo \" on out \"" standardError:&err]; - STAssertEqualObjects(output, @"on out", @"failed to get stdout output"); - STAssertNil(err, @"stderr should have been empty"); - - // test stderr - output = [sr run:@"echo \" on err \" > /dev/stderr" standardError:&err]; - STAssertNil(output, @"stdout should have been empty"); - STAssertEqualObjects(err, @"on err", nil); - } -} - -- (void)testScriptOutputHandling { - // Test whitespace trimming & stdout vs. stderr w/ script api - - GTMScriptRunner *sr = [GTMScriptRunner runner]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - NSString *err = nil; - - // w/o whitespace trimming - { - [sr setTrimsWhitespace:NO]; - STAssertFalse([sr trimsWhitespace], @"setTrimsWhitespace to NO failed"); - - // test stdout - output = [sr runScript:shOutputScript_ - withArgs:[NSArray arrayWithObject:@"out"] - standardError:&err]; - STAssertEqualObjects(output, @" on out \n", nil); - STAssertNil(err, @"stderr should have been empty"); - - // test stderr - output = [sr runScript:shOutputScript_ - withArgs:[NSArray arrayWithObject:@"err"] - standardError:&err]; - STAssertNil(output, @"stdout should have been empty"); - STAssertEqualObjects(err, @" on err \n", nil); - } - - // w/ whitespace trimming - { - [sr setTrimsWhitespace:YES]; - STAssertTrue([sr trimsWhitespace], @"setTrimsWhitespace to YES failed"); - - // test stdout - output = [sr runScript:shOutputScript_ - withArgs:[NSArray arrayWithObject:@"out"] - standardError:&err]; - STAssertEqualObjects(output, @"on out", nil); - STAssertNil(err, @"stderr should have been empty"); - - // test stderr - output = [sr runScript:shOutputScript_ - withArgs:[NSArray arrayWithObject:@"err"] - standardError:&err]; - STAssertNil(output, @"stdout should have been empty"); - STAssertEqualObjects(err, @"on err", nil); - } -} - -- (void)testBadRunCommandInput { - GTMScriptRunner *sr = [GTMScriptRunner runner]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *err = nil; - - STAssertNil([sr run:nil standardError:&err], nil); - STAssertNil(err, nil); -} - -- (void)testBadScriptInput { - GTMScriptRunner *sr = [GTMScriptRunner runner]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *err = nil; - - STAssertNil([sr runScript:nil withArgs:nil standardError:&err], nil); - STAssertNil(err, nil); - STAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz" - withArgs:nil standardError:&err], nil); - STAssertNotNil(err, - @"should have gotten something about the path not existing"); -} - -- (void)testBadCmdInterpreter { - GTMScriptRunner *sr = - [GTMScriptRunner runnerWithInterpreter:@"/path/that/does/not/exists/interpreter"]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *err = nil; - - STAssertNil([sr run:nil standardError:&err], nil); - STAssertNil(err, nil); - [GTMUnitTestDevLog expectString:@"Failed to launch interpreter " - "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"]; - STAssertNil([sr run:@"ls /" standardError:&err], nil); - STAssertNil(err, nil); -} - -- (void)testBadScriptInterpreter { - GTMScriptRunner *sr = - [GTMScriptRunner runnerWithInterpreter:@"/path/that/does/not/exists/interpreter"]; - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *err = nil; - - [GTMUnitTestDevLog expectString:@"Failed to launch interpreter " - "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"]; - STAssertNil([sr runScript:shScript_ withArgs:nil standardError:&err], nil); - STAssertNil(err, nil); - [GTMUnitTestDevLog expectString:@"Failed to launch interpreter " - "'/path/that/does/not/exists/interpreter' due to: launch path not accessible"]; - STAssertNil([sr runScript:@"/path/that/does/not/exists/foo/bar/baz" - withArgs:nil standardError:&err], nil); - STAssertNil(err, nil); -} - - -@end - -@implementation GTMScriptRunnerTest (PrivateMethods) - -- (void)helperTestBourneShellUsingScriptRunner:(GTMScriptRunner *)sr { - STAssertNotNil(sr, @"Script runner must not be nil"); - NSString *output = nil; - - // Simple command - output = [sr run:@"ls /etc/passwd"]; - STAssertEqualObjects(output, @"/etc/passwd", @"output should equal '/etc/passwd'"); - - // Simple command pipe-line - output = [sr run:@"ls /etc/ | grep passwd | tail -1"]; - STAssertEqualObjects(output, @"passwd", @"output should equal 'passwd'"); - - // Simple pipe-line with quotes and awk variables - output = [sr run:@"ps jaxww | awk '{print $2}' | sort -nr | tail -2 | head -1"]; - STAssertEqualObjects(output, @"1", @"output should equal '1'"); - - // Simple shell loop with variables - output = [sr run:@"i=0; while [ $i -lt 100 ]; do i=$((i+1)); done; echo $i"]; - STAssertEqualObjects(output, @"100", @"output should equal '100'"); - - // Simple command with newlines - output = [sr run:@"i=1\necho $i"]; - STAssertEqualObjects(output, @"1", @"output should equal '1'"); - - // Simple full shell script - output = [sr run:@"#!/bin/sh\ni=1\necho $i\n"]; - STAssertEqualObjects(output, @"1", @"output should equal '1'"); - - NSString *err = nil; - - // Test getting standard error with no stdout - output = [sr run:@"ls /etc/does-not-exist" standardError:&err]; - STAssertNil(output, @"output should be nil due to expected error"); - STAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @""); - - // Test getting standard output along with some standard error - output = [sr run:@"ls /etc/does-not-exist /etc/passwd" standardError:&err]; - STAssertEqualObjects(output, @"/etc/passwd", @""); - STAssertEqualObjects(err, @"ls: /etc/does-not-exist: No such file or directory", @""); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.h deleted file mode 100644 index b1c7c2f1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.h +++ /dev/null @@ -1,73 +0,0 @@ -// -// GTMSignalHandler.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// GTMSignalHandler. -// -// This is a very simple, easy-to-use class for registering handlers that get -// called when a specific signal is delivered. Also handy for ignoring -// inconvenient signals. Ignoring SIGKILL is not support for what should be -// obvious reasons. You can pass nil for target & action to ignore the signal. -// -// Example of how to catch SIGABRT and SIGTERM while ignring SIGWINCH: -// GTMSignalHandler *abrt, *term, *winch; -// abrt = [[GTMSignalHandler alloc] -// initWithSignal:SIGABRT -// target:self -// action:@selector(handleAbort:)]; -// -// term = [[GTMSignalHandler alloc] -// initWithSignal:SIGTERM -// target:self -// action:@selector(handleTerm:)]; -// -// winch = [[GTMSignalHandler alloc] initWithSignal:SIGWINCH -// initWithSignal:SIGWINCH -// target:nil -// action:NULL -// -// -(void)handleTerm:(int)signo { -// .. do stuff .. -// } -// -// Release the handler when you're no longer interested in handling that signal. -// Note that signal(SIG_IGN, signo) is performed on each signal handled by -// objects of this class, and those do not get un-done. -// -// Multiple handlers for the same signal is NOT supported. -// -// kqueue() is used to handle the signals, and the default runloop for the first -// signal handler is used for signal delivery, so keep that in mind when you're -// using this class. This class explicitly does not handle arbitrary runloops -// and threading. -// -@interface GTMSignalHandler : NSObject { - @private - int signo_; - __weak id target_; - SEL action_; -} - -// Returns a retained signal handler object that will invoke |handler| on the -// |target| whenever a signal of number |signo| is delivered to the process. --(id)initWithSignal:(int)signo - target:(id)target - action:(SEL)action; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.m deleted file mode 100644 index b6cfb706..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandler.m +++ /dev/null @@ -1,210 +0,0 @@ -// -// GTMSignalHandler.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSignalHandler.h" -#import "GTMDefines.h" - -#import // for kqueue() and kevent -#import "GTMDebugSelectorValidation.h" - -// Simplifying assumption: No more than one handler for a particular signal is -// alive at a time. When the second signal is registered, kqueue just updates -// the info about the first signal, which makes -dealloc time complicated (what -// happens when handler1(SIGUSR1) is released before handler2(SIGUSR1)?). This -// could be solved by having one kqueue per signal, or keeping a list of -// handlers interested in a particular signal, but not really worth it for apps -// that register the handlers at startup and don't change them. - - -// File descriptor for the kqueue that will hold all of our signal events. -static int gSignalKQueueFileDescriptor = 0; - -// A wrapper around the kqueue file descriptor so we can put it into a -// runloop. -static CFSocketRef gRunLoopSocket = NULL; - - -@interface GTMSignalHandler (PrivateMethods) -- (void)notify; -- (void)addFileDescriptorMonitor:(int)fd; -- (void)registerWithKQueue; -- (void)unregisterWithKQueue; -@end - - -@implementation GTMSignalHandler - --(id)init { - // Folks shouldn't call init directly, so they get what they deserve. - _GTMDevLog(@"Don't call init, use " - @"initWithSignal:target:action:"); - return [self initWithSignal:0 target:nil action:NULL]; -} - -- (id)initWithSignal:(int)signo - target:(id)target - action:(SEL)action { - - if ((self = [super init])) { - - if (signo == 0) { - [self release]; - return nil; - } - - signo_ = signo; - target_ = target; // Don't retain since target will most likely retain us. - action_ = action; - GTMAssertSelectorNilOrImplementedWithArguments(target_, - action_, - @encode(int), - NULL); - - // We're handling this signal via kqueue, so turn off the usual signal - // handling. - signal(signo_, SIG_IGN); - - if (action != NULL) { - [self registerWithKQueue]; - } - } - return self; -} - -#if GTM_SUPPORT_GC -- (void)finalize { - [self unregisterWithKQueue]; - - [super finalize]; - -} -#endif - -- (void)dealloc { - [self unregisterWithKQueue]; - - [super dealloc]; - -} - -// Cribbed from Advanced Mac OS X Programming. -static void SocketCallBack(CFSocketRef socketref, CFSocketCallBackType type, - CFDataRef address, const void *data, void *info) { - // We're using CFRunLoop calls here. Even when used on the main thread, they - // don't trigger the draining of the main application's autorelease pool that - // NSRunLoop provides. If we're used in a UI-less app, this means that - // autoreleased objects would never go away, so we provide our own pool here. - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - struct kevent event; - - if (kevent(gSignalKQueueFileDescriptor, NULL, 0, &event, 1, NULL) == -1) { - _GTMDevLog(@"could not pick up kqueue event. Errno %d", errno); // COV_NF_LINE - } else { - GTMSignalHandler *handler = (GTMSignalHandler *)event.udata; - [handler notify]; - } - - [pool drain]; -} - -// Cribbed from Advanced Mac OS X Programming -- (void)addFileDescriptorMonitor:(int)fd { - CFSocketContext context = { 0, NULL, NULL, NULL, NULL }; - - gRunLoopSocket = CFSocketCreateWithNative(kCFAllocatorDefault, - fd, - kCFSocketReadCallBack, - SocketCallBack, - &context); - if (gRunLoopSocket == NULL) { - _GTMDevLog(@"could not CFSocketCreateWithNative"); // COV_NF_LINE - goto bailout; // COV_NF_LINE - } - - CFRunLoopSourceRef rls; - rls = CFSocketCreateRunLoopSource(NULL, gRunLoopSocket, 0); - if (rls == NULL) { - _GTMDevLog(@"could not create a run loop source"); // COV_NF_LINE - goto bailout; // COV_NF_LINE - } - - CFRunLoopAddSource(CFRunLoopGetCurrent(), rls, - kCFRunLoopDefaultMode); - CFRelease(rls); - - bailout: - return; - -} - -- (void)registerWithKQueue { - - // Make sure we have our kqueue. - if (gSignalKQueueFileDescriptor == 0) { - gSignalKQueueFileDescriptor = kqueue(); - - if (gSignalKQueueFileDescriptor == -1) { - _GTMDevLog(@"could not make signal kqueue. Errno %d", errno); // COV_NF_LINE - return; // COV_NF_LINE - } - - // Add the kqueue file descriptor to the runloop. - [self addFileDescriptorMonitor:gSignalKQueueFileDescriptor]; - } - - // Add a new event for the signal. - struct kevent filter; - EV_SET(&filter, signo_, EVFILT_SIGNAL, EV_ADD | EV_ENABLE | EV_CLEAR, - 0, 0, self); - - const struct timespec noWait = { 0, 0 }; - if (kevent(gSignalKQueueFileDescriptor, &filter, 1, NULL, 0, &noWait) != 0) { - _GTMDevLog(@"could not add event for signal %d. Errno %d", signo_, errno); // COV_NF_LINE - } - -} - -- (void)unregisterWithKQueue { - // Short-circuit cases where we didn't actually register a kqueue event. - if (signo_ == 0) return; - if (action_ == nil) return; - - struct kevent filter; - EV_SET(&filter, signo_, EVFILT_SIGNAL, EV_DELETE, 0, 0, self); - - const struct timespec noWait = { 0, 0 }; - if (kevent(gSignalKQueueFileDescriptor, &filter, 1, NULL, 0, &noWait) != 0) { - _GTMDevLog(@"could not remove event for signal %d. Errno %d", signo_, errno); // COV_NF_LINE - } - -} - -- (void)notify { - // Now, fire the selector - NSMethodSignature *methodSig = [target_ methodSignatureForSelector:action_]; - _GTMDevAssert(methodSig != nil, @"failed to get the signature?"); - NSInvocation *invocation - = [NSInvocation invocationWithMethodSignature:methodSig]; - [invocation setTarget:target_]; - [invocation setSelector:action_]; - [invocation setArgument:&signo_ atIndex:2]; - [invocation invoke]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandlerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandlerTest.m deleted file mode 100644 index a0019f3c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSignalHandlerTest.m +++ /dev/null @@ -1,143 +0,0 @@ -// -// GTMSignalHandlerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMSignalHandler.h" -#import "GTMUnitTestDevLog.h" - -@interface GTMSignalHandlerTest : GTMTestCase -@end - -@interface SignalCounter : NSObject { - @public - int signalCount_; - int lastSeenSignal_; -} -- (int)count; -- (int)lastSeen; -- (void)countSignal:(int)signo; -+ (id)signalCounter; -@end // SignalCounter - -@implementation SignalCounter -+ (id)signalCounter { - return [[[[self class] alloc] init] autorelease]; -} -- (int)count { - return signalCount_; -} -- (int)lastSeen { - return lastSeenSignal_; -} -// Count the number of times this signal handler has fired. -- (void)countSignal:(int)signo { - signalCount_++; - lastSeenSignal_ = signo; -} -@end - -@implementation GTMSignalHandlerTest - -// Spin the run loop so that the kqueue event notifications will get delivered. -- (void)giveSomeLove { - NSDate *endTime = [NSDate dateWithTimeIntervalSinceNow:0.5]; - [[NSRunLoop currentRunLoop] runUntilDate:endTime]; -} - -- (void)testNillage { - GTMSignalHandler *handler; - - // Just an init should return nil. - [GTMUnitTestDevLog expectString:@"Don't call init, use " - @"initWithSignal:target:action:"]; - handler = [[[GTMSignalHandler alloc] init] autorelease]; - STAssertNil(handler, nil); - - // Zero signal should return nil as well. - handler = [[[GTMSignalHandler alloc] - initWithSignal:0 - target:self - action:@selector(nomnomnom:)] autorelease]; - STAssertNil(handler, nil); - -} - -- (void)testSingleHandler { - SignalCounter *counter = [SignalCounter signalCounter]; - STAssertNotNil(counter, nil); - - GTMSignalHandler *handler = [[GTMSignalHandler alloc] - initWithSignal:SIGWINCH - target:counter - action:@selector(countSignal:)]; - STAssertNotNil(handler, nil); - raise(SIGWINCH); - [self giveSomeLove]; - - STAssertEquals([counter count], 1, nil); - STAssertEquals([counter lastSeen], SIGWINCH, nil); - - raise(SIGWINCH); - [self giveSomeLove]; - - STAssertEquals([counter count], 2, nil); - STAssertEquals([counter lastSeen], SIGWINCH, nil); - - // create a second one to make sure we're seding data where we want - SignalCounter *counter2 = [SignalCounter signalCounter]; - STAssertNotNil(counter2, nil); - [[[GTMSignalHandler alloc] initWithSignal:SIGUSR1 - target:counter2 - action:@selector(countSignal:)] autorelease]; - - raise(SIGUSR1); - [self giveSomeLove]; - - STAssertEquals([counter count], 2, nil); - STAssertEquals([counter lastSeen], SIGWINCH, nil); - STAssertEquals([counter2 count], 1, nil); - STAssertEquals([counter2 lastSeen], SIGUSR1, nil); - - [handler release]; - - // The signal is still ignored (so we shouldn't die), but the - // the handler method should not get called. - raise(SIGWINCH); - - STAssertEquals([counter count], 2, nil); - STAssertEquals([counter lastSeen], SIGWINCH, nil); - STAssertEquals([counter2 count], 1, nil); - STAssertEquals([counter2 lastSeen], SIGUSR1, nil); - -} - -- (void)testIgnore { - SignalCounter *counter = [SignalCounter signalCounter]; - STAssertNotNil(counter, nil); - - [[[GTMSignalHandler alloc] initWithSignal:SIGUSR1 - target:counter - action:NULL] autorelease]; - - raise(SIGUSR1); - [self giveSomeLove]; - STAssertEquals([counter count], 0, nil); - -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.h deleted file mode 100644 index d8cc6422..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.h +++ /dev/null @@ -1,105 +0,0 @@ -// -// GTMStackTrace.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#include -#import "GTMDefines.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct GTMAddressDescriptor { - const void *address; // address - const char *symbol; // nearest symbol to address - const char *class_name; // if it is an obj-c method, the method's class - BOOL is_class_method; // if it is an obj-c method, type of method - const char *filename; // file that the method came from. -}; - -// Returns a string containing a nicely formatted stack trace. -// -// This function gets the stack trace for the current thread. It will -// be from the caller of GTMStackTrace upwards to the top the calling stack. -// Typically this function will be used along with some logging, -// as in the following: -// -// MyAppLogger(@"Should never get here:\n%@", GTMStackTrace()); -// -// Here is a sample stack trace returned from this function: -// -// #0 0x00002d92 D () [/Users/me/./StackLog] -// #1 0x00002e45 C () [/Users/me/./StackLog] -// #2 0x00002e53 B () [/Users/me/./StackLog] -// #3 0x00002e61 A () [/Users/me/./StackLog] -// #4 0x00002e6f main () [/Users/me/./StackLog] -// #5 0x00002692 tart () [/Users/me/./StackLog] -// #6 0x000025b9 tart () [/Users/me/./StackLog] -// - -NSString *GTMStackTrace(void); - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -// Returns a string containing a nicely formatted stack trace from the -// exception. Only available on 10.5 or later, uses -// -[NSException callStackReturnAddresses]. -// -NSString *GTMStackTraceFromException(NSException *e); -#endif - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -// Returns an array of program counters from the current thread's stack. -// *** You should probably use GTMStackTrace() instead of this function *** -// However, if you actually want all the PCs in "void *" form, then this -// funtion is more convenient. This will include PCs of GTMStaceTrace and -// its inner utility functions that you may want to strip out. -// -// You can use +[NSThread callStackReturnAddresses] in 10.5 or later. -// -// Args: -// outPcs - an array of "void *" pointers to the program counters found on the -// current thread's stack. -// count - the number of entries in the outPcs array -// -// Returns: -// The number of program counters actually added to outPcs. -// -NSUInteger GTMGetStackProgramCounters(void *outPcs[], NSUInteger count); -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -// Returns an array of GTMAddressDescriptors from the current thread's stack. -// *** You should probably use GTMStackTrace() instead of this function *** -// However, if you actually want all the PCs with symbols, this is the way -// to get them. There is no memory allocations done, so no clean up is required -// except for the caller to free outDescs if they allocated it themselves. -// This will include PCs of GTMStaceTrace and its inner utility functions that -// you may want to strip out. -// -// Args: -// outDescs - an array of "struct GTMAddressDescriptor" pointers corresponding -// to the program counters found on the current thread's stack. -// count - the number of entries in the outDescs array -// -// Returns: -// The number of program counters actually added to outPcs. -// -NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[], - NSUInteger count); - -#ifdef __cplusplus -} -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.m deleted file mode 100644 index 05843b50..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTrace.m +++ /dev/null @@ -1,358 +0,0 @@ -// -// GTMStackTrace.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#include -#include -#include -#include "GTMStackTrace.h" -#include "GTMObjC2Runtime.h" - -struct GTMClassDescription { - const char *class_name; - Method *class_methods; - unsigned int class_method_count; - Method *instance_methods; - unsigned int instance_method_count; -}; - -#pragma mark Private utility functions - -static struct GTMClassDescription *GTMClassDescriptions(NSUInteger *total_count) { - int class_count = objc_getClassList(nil, 0); - struct GTMClassDescription *class_descs - = calloc(class_count, sizeof(struct GTMClassDescription)); - if (class_descs) { - Class *classes = calloc(class_count, sizeof(Class)); - if (classes) { - objc_getClassList(classes, class_count); - for (int i = 0; i < class_count; ++i) { - class_descs[i].class_methods - = class_copyMethodList(object_getClass(classes[i]), - &class_descs[i].class_method_count); - class_descs[i].instance_methods - = class_copyMethodList(classes[i], - &class_descs[i].instance_method_count); - class_descs[i].class_name = class_getName(classes[i]); - } - free(classes); - } else { - // COV_NF_START - Don't know how to force this in a unittest - free(class_descs); - class_count = 0; - // COV_NF_END - } - } - if (total_count) { - *total_count = class_count; - } - return class_descs; -} - -static void GTMFreeClassDescriptions(struct GTMClassDescription *class_descs, - NSUInteger count) { - if (!class_descs) return; - for (NSUInteger i = 0; i < count; ++i) { - if (class_descs[i].instance_methods) { - free(class_descs[i].instance_methods); - } - if (class_descs[i].class_methods) { - free(class_descs[i].class_methods); - } - } - free(class_descs); -} - -static NSUInteger GTMGetStackAddressDescriptorsForAddresses(void *pcs[], - struct GTMAddressDescriptor outDescs[], - NSUInteger count) { - if (count < 1 || !pcs || !outDescs) return 0; - - NSUInteger class_desc_count; - - // Get our obj-c class descriptions. This is expensive, so we do it once - // at the top. We go through this because dladdr doesn't work with - // obj methods. - struct GTMClassDescription *class_descs - = GTMClassDescriptions(&class_desc_count); - - // Iterate through the stack. - for (NSUInteger i = 0; i < count; ++i) { - const char *class_name = NULL; - BOOL is_class_method = NO; - size_t smallest_diff = SIZE_MAX; - struct GTMAddressDescriptor *currDesc = &outDescs[i]; - currDesc->address = pcs[i]; - Method best_method = NULL; - // Iterate through all the classes we know of. - for (NSUInteger j = 0; j < class_desc_count; ++j) { - // First check the class methods. - for (NSUInteger k = 0; k < class_descs[j].class_method_count; ++k) { - IMP imp = method_getImplementation(class_descs[j].class_methods[k]); - if (imp <= (IMP)currDesc->address) { - size_t diff = (size_t)currDesc->address - (size_t)imp; - if (diff < smallest_diff) { - best_method = class_descs[j].class_methods[k]; - class_name = class_descs[j].class_name; - is_class_method = YES; - smallest_diff = diff; - } - } - } - // Then check the instance methods. - for (NSUInteger k = 0; k < class_descs[j].instance_method_count; ++k) { - IMP imp = method_getImplementation(class_descs[j].instance_methods[k]); - if (imp <= (IMP)currDesc->address) { - size_t diff = (size_t)currDesc->address - (size_t)imp; - if (diff < smallest_diff) { - best_method = class_descs[j].instance_methods[k]; - class_name = class_descs[j].class_name; - is_class_method = NO; - smallest_diff = diff; - } - } - } - } - - // If we have one, store it off. - if (best_method) { - currDesc->symbol = sel_getName(method_getName(best_method)); - currDesc->is_class_method = is_class_method; - currDesc->class_name = class_name; - } - Dl_info info = { NULL, NULL, NULL, NULL }; - - // Check to see if the one returned by dladdr is better. - dladdr(currDesc->address, &info); - if ((size_t)currDesc->address - (size_t)info.dli_saddr < smallest_diff) { - currDesc->symbol = info.dli_sname; - currDesc->is_class_method = NO; - currDesc->class_name = NULL; - } - currDesc->filename = info.dli_fname; - } - GTMFreeClassDescriptions(class_descs, class_desc_count); - return count; -} - -static NSString *GTMStackTraceFromAddressDescriptors(struct GTMAddressDescriptor descs[], - NSUInteger count) { - NSMutableString *trace = [NSMutableString string]; - - for (NSUInteger i = 0; i < count; i++) { - // Newline between all the lines - if (i) { - [trace appendString:@"\n"]; - } - if (descs[i].class_name) { - [trace appendFormat:@"#%-2u %#08lx %s[%s %s] (%s)", - i, descs[i].address, - (descs[i].is_class_method ? "+" : "-"), - descs[i].class_name, - (descs[i].symbol ? descs[i].symbol : "??"), - (descs[i].filename ? descs[i].filename : "??")]; - } else { - [trace appendFormat:@"#%-2u %#08lx %s() (%s)", - i, descs[i].address, - (descs[i].symbol ? descs[i].symbol : "??"), - (descs[i].filename ? descs[i].filename : "??")]; - } - } - return trace; -} - -#pragma mark Public functions - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 -// Before 10.5, we have to do this ourselves. 10.5 adds -// +[NSThread callStackReturnAddresses]. - -// Structure representing a small portion of a stack, starting from the saved -// frame pointer, and continuing through the saved program counter. -struct GTMStackFrame { - void *saved_fp; -#if defined (__ppc__) || defined(__ppc64__) - void *padding; -#endif - void *saved_pc; -}; - -// __builtin_frame_address(0) is a gcc builtin that returns a pointer to the -// current frame pointer. We then use the frame pointer to walk the stack -// picking off program counters and other saved frame pointers. This works -// great on i386, but PPC requires a little more work because the PC (or link -// register) isn't always stored on the stack. -// -NSUInteger GTMGetStackProgramCounters(void *outPcs[], NSUInteger count) { - if (!outPcs || (count < 1)) return 0; - - struct GTMStackFrame *fp; -#if defined (__ppc__) || defined(__ppc64__) - outPcs[0] = __builtin_return_address(0); - fp = (struct GTMStackFrame *)__builtin_frame_address(1); -#elif defined (__i386__) || defined(__x86_64__) - fp = (struct GTMStackFrame *)__builtin_frame_address(0); -#else -#error architecture not supported -#endif - - NSUInteger level = 0; - while (level < count) { - if (fp == NULL) { - level--; - break; - } - outPcs[level] = fp->saved_pc; - level++; - fp = (struct GTMStackFrame *)fp->saved_fp; - } - - return level; -} -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -NSUInteger GTMGetStackAddressDescriptors(struct GTMAddressDescriptor outDescs[], - NSUInteger count) { - if (count < 1 || !outDescs) return 0; - NSUInteger result = 0; - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - // Before 10.5, we collect the stack ourselves. - - void **pcs = calloc(count, sizeof(void*)); - if (!pcs) return 0; - - NSUInteger newSize = GTMGetStackProgramCounters(pcs, count); - - result = GTMGetStackAddressDescriptorsForAddresses(pcs, outDescs, newSize); - free(pcs); - -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - // Use +[NSThread callStackReturnAddresses] - - NSArray *addresses = [NSThread callStackReturnAddresses]; - NSUInteger addrCount = [addresses count]; - if (addrCount) { - void **pcs = calloc(addrCount, sizeof(void*)); - if (pcs) { - void **pcsScanner = pcs; - for (NSNumber *address in addresses) { - NSUInteger addr = [address unsignedIntegerValue]; - *pcsScanner = (void *)addr; - ++pcsScanner; - } - if (count < addrCount) { - addrCount = count; - } - // Fill in the desc structures - result = GTMGetStackAddressDescriptorsForAddresses(pcs, outDescs, addrCount); - } - if (pcs) free(pcs); - } -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - - return result; -} - -NSString *GTMStackTrace(void) { - // If we don't have enough frames, return an empty string - NSString *result = @""; - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - // Before 10.5, we collect the stack ourselves. - - // The maximum number of stack frames that we will walk. We limit this so - // that super-duper recursive functions (or bugs) don't send us for an - // infinite loop. - struct GTMAddressDescriptor descs[100]; - size_t depth = sizeof(descs) / sizeof(struct GTMAddressDescriptor); - depth = GTMGetStackAddressDescriptors(descs, depth); - - // Start at the second item so that GTMStackTrace and it's utility calls (of - // which there is currently 1) is not included in the output. - const size_t kTracesToStrip = 2; - if (depth > kTracesToStrip) { - result = GTMStackTraceFromAddressDescriptors(&descs[kTracesToStrip], - (depth - kTracesToStrip)); - } -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - // Use +[NSThread callStackReturnAddresses] - - NSArray *addresses = [NSThread callStackReturnAddresses]; - NSUInteger count = [addresses count]; - if (count) { - void **pcs = calloc(count, sizeof(void*)); - struct GTMAddressDescriptor *descs - = calloc(count, sizeof(struct GTMAddressDescriptor)); - if (pcs && descs) { - void **pcsScanner = pcs; - for (NSNumber *address in addresses) { - NSUInteger addr = [address unsignedIntegerValue]; - *pcsScanner = (void *)addr; - ++pcsScanner; - } - // Fill in the desc structures - count = GTMGetStackAddressDescriptorsForAddresses(pcs, descs, count); - // Build the trace - // We skip 1 frame because the +[NSThread callStackReturnAddresses] will - // start w/ this frame. - const size_t kTracesToStrip = 1; - if (count > kTracesToStrip) { - result = GTMStackTraceFromAddressDescriptors(&descs[kTracesToStrip], - (count - kTracesToStrip)); - } - } - if (pcs) free(pcs); - if (descs) free(descs); - } -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - - return result; -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -NSString *GTMStackTraceFromException(NSException *e) { - NSString *trace = @""; - - // collect the addresses - NSArray *addresses = [e callStackReturnAddresses]; - NSUInteger count = [addresses count]; - if (count) { - void **pcs = calloc(count, sizeof(void*)); - struct GTMAddressDescriptor *descs - = calloc(count, sizeof(struct GTMAddressDescriptor)); - if (pcs && descs) { - void **pcsScanner = pcs; - for (NSNumber *address in addresses) { - NSUInteger addr = [address unsignedIntegerValue]; - *pcsScanner = (void *)addr; - ++pcsScanner; - } - // Fill in the desc structures - count = GTMGetStackAddressDescriptorsForAddresses(pcs, descs, count); - // Build the trace - trace = GTMStackTraceFromAddressDescriptors(descs, count); - } - if (pcs) free(pcs); - if (descs) free(descs); - } - - return trace; -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTraceTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTraceTest.m deleted file mode 100644 index 07391220..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMStackTraceTest.m +++ /dev/null @@ -1,163 +0,0 @@ -// -// GTMStackTraceTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMStackTrace.h" -#import "GTMSenTestCase.h" - -@interface GTMStackTraceTest : GTMTestCase -@end - -@implementation GTMStackTraceTest -+ (BOOL)classMethodTest { - NSString *stacktrace = GTMStackTrace(); - NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"]; - NSString *firstFrame = [stacklines objectAtIndex:0]; - NSRange range = [firstFrame rangeOfString:@"+"]; - return range.location != NSNotFound; -} - -- (void)testStackTraceBasic { - NSString *stacktrace = GTMStackTrace(); - NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"]; - - STAssertGreaterThan([stacklines count], (NSUInteger)3, - @"stack trace must have > 3 lines"); - STAssertLessThan([stacklines count], (NSUInteger)25, - @"stack trace must have < 25 lines"); - - NSString *firstFrame = [stacklines objectAtIndex:0]; - NSRange range = [firstFrame rangeOfString:@"testStackTraceBasic"]; - STAssertNotEquals(range.location, (NSUInteger)NSNotFound, - @"First frame should contain testStackTraceBasic," - " stack trace: %@", stacktrace); - range = [firstFrame rangeOfString:@"#0"]; - STAssertNotEquals(range.location, (NSUInteger)NSNotFound, - @"First frame should contain #0, stack trace: %@", - stacktrace); - - range = [firstFrame rangeOfString:@"-"]; - STAssertNotEquals(range.location, (NSUInteger)NSNotFound, - @"First frame should contain - since it's " - @"an instance method: %@", stacktrace); - STAssertTrue([[self class] classMethodTest], @"First frame should contain" - @"+ since it's a class method"); -} - --(void)testGetStackAddressDescriptors { - struct GTMAddressDescriptor descs[100]; - size_t depth = sizeof(descs) / sizeof(struct GTMAddressDescriptor); - depth = GTMGetStackAddressDescriptors(descs, depth); - // Got atleast 4... - STAssertGreaterThan(depth, (size_t)4, nil); - // All that we got have symbols - for (NSUInteger lp = 0 ; lp < depth ; ++lp) { - STAssertNotNULL(descs[lp].symbol, @"didn't get a symble at depth %lu", lp); - } - - // Do it again, but don't give it enough space (to make sure it handles that) - size_t fullDepth = depth; - STAssertGreaterThan(fullDepth, (size_t)4, nil); - depth -= 2; - depth = GTMGetStackAddressDescriptors(descs, depth); - STAssertLessThan(depth, fullDepth, nil); - // All that we got have symbols - for (NSUInteger lp = 0 ; lp < depth ; ++lp) { - STAssertNotNULL(descs[lp].symbol, @"didn't get a symble at depth %lu", lp); - } - -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -- (void)helperThatThrows { - [NSException raise:@"TestException" format:@"TestExceptionDescription"]; -} - -- (void)testStackExceptionTrace { - NSException *exception = nil; - @try { - [self helperThatThrows]; - } - @catch (NSException * e) { - exception = e; - } - STAssertNotNil(exception, nil); - NSString *stacktrace = GTMStackTraceFromException(exception); - NSArray *stacklines = [stacktrace componentsSeparatedByString:@"\n"]; - - STAssertGreaterThan([stacklines count], (NSUInteger)4, - @"stack trace must have > 4 lines"); - STAssertLessThan([stacklines count], (NSUInteger)25, - @"stack trace must have < 25 lines"); - STAssertEquals([stacklines count], - [[exception callStackReturnAddresses] count], - @"stack trace should have the same number of lines as the " - @" array of return addresses. stack trace: %@", stacktrace); - - // we can't look for it on a specific frame because NSException doesn't - // really document how deep the stack will be - NSRange range = [stacktrace rangeOfString:@"testStackExceptionTrace"]; - STAssertNotEquals(range.location, (NSUInteger)NSNotFound, - @"Stack trace should contain testStackExceptionTrace," - " stack trace: %@", stacktrace); -} - -#endif - -#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -- (void)testProgramCountersBasic { - void *pcs[10]; - NSUInteger depth = 10; - depth = GTMGetStackProgramCounters(pcs, depth); - - STAssertGreaterThan(depth, (NSUInteger)3, @"stack trace must have > 3 lines"); - STAssertLessThanOrEqual(depth, (NSUInteger)10, - @"stack trace must have < 10 lines"); - - // pcs is an array of program counters from the stack. pcs[0] should match - // the call into GTMGetStackProgramCounters, which is tough for us to check. - // However, we can verify that pcs[1] is equal to our current return address - // for our current function. - void *current_pc = __builtin_return_address(0); - STAssertEquals(pcs[1], current_pc, @"pcs[1] should equal the current PC"); -} - -- (void)testProgramCountersMore { - void *pcs0[0]; - NSUInteger depth0 = 0; - depth0 = GTMGetStackProgramCounters(pcs0, depth0); - STAssertEquals(depth0, (NSUInteger)0, @"stack trace must have 0 lines"); - - void *pcs1[1]; - NSUInteger depth1 = 1; - depth1 = GTMGetStackProgramCounters(pcs1, depth1); - STAssertEquals(depth1, (NSUInteger)1, @"stack trace must have 1 lines"); - - void *pcs2[2]; - NSUInteger depth2 = 2; - depth2 = GTMGetStackProgramCounters(pcs2, depth2); - STAssertEquals(depth2, (NSUInteger)2, @"stack trace must have 2 lines"); - void *current_pc = __builtin_return_address(0); - STAssertEquals(pcs2[1], current_pc, @"pcs[1] should equal the current PC"); -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.h deleted file mode 100644 index 07580a77..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.h +++ /dev/null @@ -1,86 +0,0 @@ -// -// GTMSystemVersion.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" - -// A class for getting information about what system we are running on -@interface GTMSystemVersion : NSObject - -// Returns the current system version major.minor.bugFix -+ (void)getMajor:(SInt32*)major minor:(SInt32*)minor bugFix:(SInt32*)bugFix; - -// Returns the build number of the OS. Useful when looking for bug fixes -// in new OSes which all have a set system version. -// eg 10.5.5's build number is 9F33. Easy way to check the build number -// is to choose "About this Mac" from the Apple menu and click on the version -// number. -+ (NSString*)build; - -+ (BOOL)isBuildLessThan:(NSString*)build; -+ (BOOL)isBuildLessThanOrEqualTo:(NSString*)build; -+ (BOOL)isBuildGreaterThan:(NSString*)build; -+ (BOOL)isBuildGreaterThanOrEqualTo:(NSString*)build; -+ (BOOL)isBuildEqualTo:(NSString *)build; - -#if GTM_MACOS_SDK -// Returns YES if running on 10.3, NO otherwise. -+ (BOOL)isPanther; - -// Returns YES if running on 10.4, NO otherwise. -+ (BOOL)isTiger; - -// Returns YES if running on 10.5, NO otherwise. -+ (BOOL)isLeopard; - -// Returns YES if running on 10.6, NO otherwise. -+ (BOOL)isSnowLeopard; - -// Returns a YES/NO if the system is 10.3 or better -+ (BOOL)isPantherOrGreater; - -// Returns a YES/NO if the system is 10.4 or better -+ (BOOL)isTigerOrGreater; - -// Returns a YES/NO if the system is 10.5 or better -+ (BOOL)isLeopardOrGreater; - -// Returns a YES/NO if the system is 10.6 or better -+ (BOOL)isSnowLeopardOrGreater; -#endif // GTM_MACOS_SDK - -// Returns one of the achitecture strings below. Note that this is the -// architecture that we are currently running as, not the hardware architecture. -+ (NSString *)runtimeArchitecture; -@end - -// Architecture Strings -// TODO: Should probably break iPhone up into iPhone_ARM and iPhone_Simulator -// but haven't found a need yet. -GTM_EXTERN NSString *const kGTMArch_iPhone; -GTM_EXTERN NSString *const kGTMArch_ppc; -GTM_EXTERN NSString *const kGTMArch_ppc64; -GTM_EXTERN NSString *const kGTMArch_x86_64; -GTM_EXTERN NSString *const kGTMArch_i386; - -// System Build Number constants -GTM_EXTERN NSString *const kGTMSystemBuild10_5_5; -GTM_EXTERN NSString *const kGTMSystemBuild10_6_0_WWDC; -GTM_EXTERN NSString *const kGTMSystemBuild10_6_0_10A190; - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.m deleted file mode 100644 index eb255a67..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersion.m +++ /dev/null @@ -1,232 +0,0 @@ -// -// GTMSystemVersion.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSystemVersion.h" -#import "GTMGarbageCollection.h" -#if GTM_MACOS_SDK -#import -#endif - -static SInt32 sGTMSystemVersionMajor = 0; -static SInt32 sGTMSystemVersionMinor = 0; -static SInt32 sGTMSystemVersionBugFix = 0; -static NSString *sBuild = nil; - -NSString *const kGTMArch_iPhone = @"iPhone"; -NSString *const kGTMArch_ppc = @"ppc"; -NSString *const kGTMArch_ppc64 = @"ppc64"; -NSString *const kGTMArch_x86_64 = @"x86_64"; -NSString *const kGTMArch_i386 = @"i386"; - -static NSString *const kSystemVersionPlistPath = @"/System/Library/CoreServices/SystemVersion.plist"; - -NSString *const kGTMSystemBuild10_5_5 = @"9F33"; -NSString *const kGTMSystemBuild10_6_0_WWDC = @"10A96"; -NSString *const kGTMSystemBuild10_6_0_10A190 = @"10A190"; - -@implementation GTMSystemVersion -+ (void)initialize { - if (self == [GTMSystemVersion class]) { - // Gestalt is the recommended way of getting the OS version (despite a - // comment to the contrary in the 10.4 headers and docs; see - // ). - // The iPhone doesn't have Gestalt though, so use the plist there. -#if GTM_MACOS_SDK - require_noerr(Gestalt(gestaltSystemVersionMajor, &sGTMSystemVersionMajor), failedGestalt); - require_noerr(Gestalt(gestaltSystemVersionMinor, &sGTMSystemVersionMinor), failedGestalt); - require_noerr(Gestalt(gestaltSystemVersionBugFix, &sGTMSystemVersionBugFix), failedGestalt); - - return; - - failedGestalt: - ; -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_3 - // gestaltSystemVersionMajor et al are only on 10.4 and above, so they - // could fail when running on 10.3. - SInt32 binaryCodedDec; - OSStatus err = err = Gestalt(gestaltSystemVersion, &binaryCodedDec); - _GTMDevAssert(!err, @"Unable to get version from Gestalt"); - - // Note that this code will return x.9.9 for any system rev parts that are - // greater than 9 (i.e., 10.10.10 will be 10.9.9). This shouldn't ever be a - // problem as the code above takes care of 10.4+. - SInt32 msb = (binaryCodedDec & 0x0000F000L) >> 12; - msb *= 10; - SInt32 lsb = (binaryCodedDec & 0x00000F00L) >> 8; - sGTMSystemVersionMajor = msb + lsb; - sGTMSystemVersionMinor = (binaryCodedDec & 0x000000F0L) >> 4; - sGTMSystemVersionBugFix = (binaryCodedDec & 0x0000000FL); -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_3 - -#else // GTM_MACOS_SDK - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSDictionary *systemVersionPlist - = [NSDictionary dictionaryWithContentsOfFile:kSystemVersionPlistPath]; - NSString *version = [systemVersionPlist objectForKey:@"ProductVersion"]; - _GTMDevAssert(version, @"Unable to get version"); - NSArray *versionInfo = [version componentsSeparatedByString:@"."]; - NSUInteger length = [versionInfo count]; - _GTMDevAssert(length > 1 && length < 4, - @"Unparseable version %@", version); - sGTMSystemVersionMajor = [[versionInfo objectAtIndex:0] intValue]; - _GTMDevAssert(sGTMSystemVersionMajor != 0, - @"Unknown version for %@", version); - sGTMSystemVersionMinor = [[versionInfo objectAtIndex:1] intValue]; - if (length == 3) { - sGTMSystemVersionBugFix = [[versionInfo objectAtIndex:2] intValue]; - } - [pool release]; -#endif // GTM_MACOS_SDK - } -} - -+ (void)getMajor:(SInt32*)major minor:(SInt32*)minor bugFix:(SInt32*)bugFix { - if (major) { - *major = sGTMSystemVersionMajor; - } - if (minor) { - *minor = sGTMSystemVersionMinor; - } - if (bugFix) { - *bugFix = sGTMSystemVersionBugFix; - } -} - -+ (NSString*)build { - @synchronized(self) { - // Not cached at initialization time because we don't expect "real" - // software to want this, and it costs a bit to get at startup. - // This will mainly be for unit test cases. - if (!sBuild) { - NSDictionary *systemVersionPlist - = [NSDictionary dictionaryWithContentsOfFile:kSystemVersionPlistPath]; - sBuild = [[systemVersionPlist objectForKey:@"ProductBuildVersion"] retain]; - GTMNSMakeUncollectable(sBuild); - _GTMDevAssert(sBuild, @"Unable to get build version"); - } - } - return sBuild; -} - -+ (BOOL)isBuildLessThan:(NSString*)build { - NSComparisonResult result - = [[self build] compare:build - options:NSNumericSearch | NSCaseInsensitiveSearch]; - return result == NSOrderedAscending; -} - -+ (BOOL)isBuildLessThanOrEqualTo:(NSString*)build { - NSComparisonResult result - = [[self build] compare:build - options:NSNumericSearch | NSCaseInsensitiveSearch]; - return result != NSOrderedDescending; -} - -+ (BOOL)isBuildGreaterThan:(NSString*)build { - NSComparisonResult result - = [[self build] compare:build - options:NSNumericSearch | NSCaseInsensitiveSearch]; - return result == NSOrderedDescending; -} - -+ (BOOL)isBuildGreaterThanOrEqualTo:(NSString*)build { - NSComparisonResult result - = [[self build] compare:build - options:NSNumericSearch | NSCaseInsensitiveSearch]; - return result != NSOrderedAscending; -} - -+ (BOOL)isBuildEqualTo:(NSString *)build { - NSComparisonResult result - = [[self build] compare:build - options:NSNumericSearch | NSCaseInsensitiveSearch]; - return result == NSOrderedSame; -} - -#if GTM_MACOS_SDK -+ (BOOL)isPanther { - return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 3; -} - -+ (BOOL)isTiger { - return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 4; -} - -+ (BOOL)isLeopard { - return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 5; -} - -+ (BOOL)isSnowLeopard { - return sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor == 6; -} - -+ (BOOL)isPantherOrGreater { - return (sGTMSystemVersionMajor > 10) || - (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 3); -} - -+ (BOOL)isTigerOrGreater { - return (sGTMSystemVersionMajor > 10) || - (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 4); -} - -+ (BOOL)isLeopardOrGreater { - return (sGTMSystemVersionMajor > 10) || - (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 5); -} - -+ (BOOL)isSnowLeopardOrGreater { - return (sGTMSystemVersionMajor > 10) || - (sGTMSystemVersionMajor == 10 && sGTMSystemVersionMinor >= 6); -} - -#endif // GTM_MACOS_SDK - -+ (NSString *)runtimeArchitecture { - NSString *architecture = nil; -#if GTM_IPHONE_SDK - architecture = kGTMArch_iPhone; -#else // !GTM_IPHONE_SDK - // In reading arch(3) you'd thing this would work: - // - // const NXArchInfo *localInfo = NXGetLocalArchInfo(); - // _GTMDevAssert(localInfo && localInfo->name, @"Couldn't get NXArchInfo"); - // const NXArchInfo *genericInfo = NXGetArchInfoFromCpuType(localInfo->cputype, 0); - // _GTMDevAssert(genericInfo && genericInfo->name, @"Couldn't get generic NXArchInfo"); - // extensions[0] = [NSString stringWithFormat:@".%s", genericInfo->name]; - // - // but on 64bit it returns the same things as on 32bit, so... -#if __POWERPC__ -#if __LP64__ - architecture = kGTMArch_ppc64; -#else // !__LP64__ - architecture = kGTMArch_ppc; -#endif // __LP64__ -#else // !__POWERPC__ -#if __LP64__ - architecture = kGTMArch_x86_64; -#else // !__LP64__ - architecture = kGTMArch_i386; -#endif // __LP64__ -#endif // !__POWERPC__ - -#endif // GTM_IPHONE_SDK - return architecture; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersionTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersionTest.m deleted file mode 100644 index 24e6aa51..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMSystemVersionTest.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// GTMSystemVersionTest.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMSystemVersion.h" - -@interface GTMSystemVersionTest : GTMTestCase -@end - -@implementation GTMSystemVersionTest -- (void)testBasics { - SInt32 major; - SInt32 minor; - SInt32 bugFix; - - [GTMSystemVersion getMajor:NULL minor:NULL bugFix:NULL]; - [GTMSystemVersion getMajor:&major minor:NULL bugFix:NULL]; - [GTMSystemVersion getMajor:NULL minor:&minor bugFix:NULL]; - [GTMSystemVersion getMajor:NULL minor:NULL bugFix:&bugFix]; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; -#if GTM_IPHONE_SDK - STAssertTrue(major >= 2 && minor >= 0 && bugFix >= 0, nil); -#else - STAssertTrue(major >= 10 && minor >= 3 && bugFix >= 0, nil); - BOOL isPanther = (major == 10) && (minor == 3); - BOOL isTiger = (major == 10) && (minor == 4); - BOOL isLeopard = (major == 10) && (minor == 5); - BOOL isSnowLeopard = (major == 10) && (minor == 6); - - BOOL isLater = (major > 10) || ((major == 10) && (minor > 6)); - STAssertEquals([GTMSystemVersion isPanther], isPanther, nil); - STAssertEquals([GTMSystemVersion isPantherOrGreater], - (BOOL)(isPanther || isTiger - || isLeopard || isSnowLeopard || isLater), nil); - STAssertEquals([GTMSystemVersion isTiger], isTiger, nil); - STAssertEquals([GTMSystemVersion isTigerOrGreater], - (BOOL)(isTiger || isLeopard || isSnowLeopard || isLater), nil); - STAssertEquals([GTMSystemVersion isLeopard], isLeopard, nil); - STAssertEquals([GTMSystemVersion isLeopardOrGreater], - (BOOL)(isLeopard || isSnowLeopard || isLater), nil); - STAssertEquals([GTMSystemVersion isSnowLeopard], isSnowLeopard, nil); - STAssertEquals([GTMSystemVersion isSnowLeopardOrGreater], - (BOOL)(isSnowLeopard || isLater), nil); -#endif -} - -- (void)testRuntimeArchitecture { - // Not sure how to test this short of recoding it and verifying. - // This at least executes the code for me. - STAssertNotNil([GTMSystemVersion runtimeArchitecture], nil); -} - -- (void)testBuild { - // Not sure how to test this short of coding up a large fragile table. - // This at least executes the code for me. - NSString *systemVersion = [GTMSystemVersion build]; - STAssertNotEquals([systemVersion length], (NSUInteger)0, nil); - - NSString *smallVersion = @"1A00"; - NSString *largeVersion = @"100Z100"; - STAssertTrue([GTMSystemVersion isBuildGreaterThan:smallVersion], nil); - STAssertFalse([GTMSystemVersion isBuildGreaterThan:systemVersion], nil); - STAssertFalse([GTMSystemVersion isBuildGreaterThan:largeVersion], nil); - STAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:smallVersion], nil); - STAssertTrue([GTMSystemVersion isBuildGreaterThanOrEqualTo:systemVersion], nil); - STAssertFalse([GTMSystemVersion isBuildGreaterThanOrEqualTo:largeVersion], nil); - STAssertFalse([GTMSystemVersion isBuildEqualTo:smallVersion], nil); - STAssertTrue([GTMSystemVersion isBuildEqualTo:systemVersion], nil); - STAssertFalse([GTMSystemVersion isBuildEqualTo:largeVersion], nil); - STAssertFalse([GTMSystemVersion isBuildLessThanOrEqualTo:smallVersion], nil); - STAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:systemVersion], nil); - STAssertTrue([GTMSystemVersion isBuildLessThanOrEqualTo:largeVersion], nil); - STAssertFalse([GTMSystemVersion isBuildLessThan:smallVersion], nil); - STAssertFalse([GTMSystemVersion isBuildLessThan:systemVersion], nil); - STAssertTrue([GTMSystemVersion isBuildLessThan:largeVersion], nil); - -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.h deleted file mode 100644 index 5dc0a56e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// GTMTransientRootPortProxy.h -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import -#import "GTMTransientRootProxy.h" - -@interface GTMTransientRootPortProxy : GTMTransientRootProxy { - @private - NSPort *receivePort_; - NSPort *sendPort_; -} - -// Returns an autoreleased instance. See below for details on args. -+ (id)rootProxyWithReceivePort:(NSPort *)receivePort - sendPort:(NSPort *)sendPort - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout; - -// This function will return a GTMTransientRootProxy that is using NSPorts -// for the connection. The |receivePort| and |sendPort| conventions -// follow the same conventions as -[NSConnection initWithReceivePort:sendPort:]. -// Note that due to Radar 6676818 "NSConnection leaks when initialized with nil -// sendPort" that you will leak a connection if you pass in "nil" for your -// sendPort if you are using NSPorts (mach or socket) to communicate between -// threads. The leak occurs on 10.5.6, and SL 10A286. This simple answer -// is just to always use two ports to communicate. Check out the test to see -// how we do cross thread communication. -- (id)initWithReceivePort:(NSPort *)receivePort - sendPort:(NSPort *)sendPort - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.m deleted file mode 100644 index ee9093a1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxy.m +++ /dev/null @@ -1,80 +0,0 @@ -// -// GTMTransientRootPortProxy.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMTransientRootPortProxy.h" -#import "GTMObjC2Runtime.h" - -@interface GTMTransientRootPortProxy (ProtectedMethods) -// Returns an NSConnection for NSPorts. This method overrides the one in -// the GTMTransientRootProxy which allows us to create a connection with a -// NSPort. -// -- (NSConnection *)makeConnection; -@end - - -@implementation GTMTransientRootPortProxy - -+ (id)rootProxyWithReceivePort:(NSPort *)receivePort - sendPort:(NSPort *)sendPort - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout { - return [[[self alloc] initWithReceivePort:receivePort - sendPort:sendPort - protocol:protocol - requestTimeout:requestTimeout - replyTimeout:replyTimeout] autorelease]; -} - -- (id)initWithReceivePort:(NSPort *)receivePort - sendPort:(NSPort *)sendPort - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout { - if ((!sendPort && !receivePort) || !protocol) { - [self release]; - return nil; - } - - requestTimeout_ = requestTimeout; - replyTimeout_ = replyTimeout; - - receivePort_ = [receivePort retain]; - sendPort_ = [sendPort retain]; - - protocol_ = protocol; // Protocols can't be retained - return self; -} - -- (void)dealloc { - [receivePort_ release]; - [sendPort_ release]; - [super dealloc]; -} - -@end - -@implementation GTMTransientRootPortProxy (ProtectedMethods) - -- (NSConnection *)makeConnection { - return [NSConnection connectionWithReceivePort:receivePort_ - sendPort:sendPort_]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxyTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxyTest.m deleted file mode 100644 index a85498f8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootPortProxyTest.m +++ /dev/null @@ -1,182 +0,0 @@ -// -// GTMTransientRootPortProxyTest.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMTransientRootPortProxy.h" - -#define kDefaultTimeout 5.0 - -enum { - kGTMTransientThreadConditionStarting = 777, - kGTMTransientThreadConditionStarted, - kGTMTransientThreadConditionQuitting, - kGTMTransientThreadConditionQuitted -}; - -// === Start off declaring some auxillary data structures === - -// The @protocol that we'll use for testing with. -@protocol DOPortTestProtocol -- (oneway void)doOneWayVoid; -- (bycopy NSString *)doReturnStringBycopy; -@end - -// The "server" we'll use to test the DO connection. This server will implement -// our test protocol, and it will run in a separate thread from the main -// unit testing thread, so the DO requests can be serviced. -@interface DOPortTestServer : NSObject { - @private - NSPort *clientSendPort_; - NSPort *clientReceivePort_; -} -- (void)runThread:(NSConditionLock *)lock; -- (NSPort *)clientSendPort; -- (NSPort *)clientReceivePort; -@end - -@implementation DOPortTestServer - -- (void)runThread:(NSConditionLock *)lock { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - if(![lock lockWhenCondition:kGTMTransientThreadConditionStarting - beforeDate:future]) { - _GTMDevLog(@"Unable to acquire lock in runThread! This is BAD!"); - [pool drain]; - [NSThread exit]; - } - - clientSendPort_ = [NSPort port]; - clientReceivePort_ = [NSPort port]; - - NSConnection *conn - = [[NSConnection alloc] initWithReceivePort:clientSendPort_ - sendPort:clientReceivePort_]; - [conn setRootObject:self]; - [lock unlockWithCondition:kGTMTransientThreadConditionStarted]; - while (![lock tryLockWhenCondition:kGTMTransientThreadConditionQuitting]) { - NSDate *runUntil = [NSDate dateWithTimeIntervalSinceNow:0.1]; - [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - } - [conn setRootObject:nil]; - [clientSendPort_ invalidate]; - [clientReceivePort_ invalidate]; - [conn release]; - [pool drain]; - [lock unlockWithCondition:kGTMTransientThreadConditionQuitted]; -} - -- (NSPort *)clientSendPort { - return clientSendPort_; -} - -- (NSPort *)clientReceivePort { - return clientReceivePort_; -} - -- (oneway void)doOneWayVoid { - // Do nothing -} -- (bycopy NSString *)doReturnStringBycopy { - return @"TestString"; -} - -@end - -// === Done with auxillary data structures, now for the main test class === - -@interface GTMTransientRootPortProxyTest : GTMTestCase { - DOPortTestServer *server_; - NSConditionLock *syncLock_; -} - -@end - -@implementation GTMTransientRootPortProxyTest - -- (void)testTransientRootPortProxy { - syncLock_ = [[[NSConditionLock alloc] - initWithCondition:kGTMTransientThreadConditionStarting] - autorelease]; - - // Setup our server. - server_ = [[[DOPortTestServer alloc] init] autorelease]; - [NSThread detachNewThreadSelector:@selector(runThread:) - toTarget:server_ - withObject:syncLock_]; - NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionStarted - beforeDate:future], - @"Unable to start thread"); - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionStarted]; - - NSPort *receivePort = [server_ clientReceivePort]; - NSPort *sendPort = [server_ clientSendPort]; - - GTMTransientRootPortProxy *failProxy = - [GTMTransientRootPortProxy rootProxyWithReceivePort:nil - sendPort:nil - protocol:@protocol(DOPortTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertNil(failProxy, @"should have failed w/o a port"); - failProxy = - [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort - sendPort:sendPort - protocol:nil - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertNil(failProxy, @"should have failed w/o a protocol"); - - GTMTransientRootPortProxy *proxy = - [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort - sendPort:sendPort - protocol:@protocol(DOPortTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - - STAssertEqualObjects([proxy doReturnStringBycopy], - @"TestString", @"proxy should have returned " - @"'TestString'"); - - // Redo the *exact* same test to make sure we can have multiple instances - // in the same app. - proxy = - [GTMTransientRootPortProxy rootProxyWithReceivePort:receivePort - sendPort:sendPort - protocol:@protocol(DOPortTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - - STAssertEqualObjects([proxy doReturnStringBycopy], - @"TestString", @"proxy should have returned " - @"'TestString'"); - [syncLock_ tryLockWhenCondition:kGTMTransientThreadConditionStarted]; - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitting]; - - // Wait for the server to shutdown so we clean up nicely. - // The max amount of time we will wait until we abort this test. - NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - // The server did not shutdown and we want to capture this as an error - STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionQuitted - beforeDate:timeout], - @"The server did not shutdown gracefully before the timeout."); - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitted]; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.h deleted file mode 100644 index b5aa78af..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.h +++ /dev/null @@ -1,113 +0,0 @@ -// -// GTMTransientRootProxy.h -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import - -// Handle (re-)connecting to a transient root proxy object via DO. -// -// This class is designed to handle connecting and reconnecting to a Distributed -// Objects root proxy (NSDistantObject* instance). It is a replacement for using -// the NSDistantObject returned from NSConnection, directly. When the DO -// connection is up, messages sent to this class are forwarded to the real -// object (the NSDistantObject); when the DO connection is down, messages sent -// to this class are silently swallowed. You can use the -isConnected method on -// this class to see if the DO connection is up or down. -// -// This class may be useful when you need a DO connection, but the -// server you're connected to may be going up and down. For example, the -// web browser plugins in Google Desktop may need to connect to the Google -// Desktop local webserver, but we'd want the browser plugins to be able to -// gracefully handle the local Google Desktop webserver starting and stopping. -// -// === Example Usage === -// -// Old code: -// -// NSDistantObject *o = -// [NSConnection rootProxyForConnectionWithRegisteredName:@"server" -// host:nil]; -// [o setProtocolForProxy:@protocol(MyProto)]; -// [o someMethodInMyProto]; -// // ... write a bunch of code to handle error conditions -// -// New code: -// -// GTMTransientRootProxy *o = -// [GTMTransientRootProxy rootProxyWithRegisteredName:@"server" -// host:nil -// protocol:@protocol(MyProto) -// requestTimeout:5.0 -// replyTimeout:5.0]; -// [o someMethodInMyProto]; -// -// The 'Old code' requires you to handle all the error conditions that may -// arise when using DO (such as the server crashing, or network going down), -// handle properly tearing down the broken connection, and trying to reconnect -// when the server finally comes back online. The 'New code' handles all of -// those details for you. -// -// Also, when creating a GMTransientRootProxy object, you must tell it the -// @protocol that will be used for communication - this is not optional. And -// in order to quiet compiler warnings, you'll also want to staticly type -// the pointer with the protocol as well. -// -@interface GTMTransientRootProxy : NSProxy { - @protected - __weak Protocol *protocol_; - NSDistantObject *realProxy_; - - NSString *registeredName_; - NSString *host_; - - NSTimeInterval requestTimeout_; - NSTimeInterval replyTimeout_; -} - -// Returns an autoreleased instance -+ (id)rootProxyWithRegisteredName:(NSString *)name - host:(NSString *)host - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout; - -// This function will return a GTMTransientRootProxy that is using Mach ports -// for the connection. The |name| and |host| arguments will be used to lookup -// the correct information to create the Mach port connection. -// -- (id)initWithRegisteredName:(NSString *)name - host:(NSString *)host - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout; - -// Returns YES if the DO connection is up and working, NO otherwise. -// -- (BOOL)isConnected; - -@end - -// Subclass of GTMTransientRootProxy that catches and ignores ALL exceptions. -// This class overrides GTMTransientRootProxy's -forwardInvocation: -// method, and wraps it in a try/catch block, and ignores all exceptions. -// -@interface GTMRootProxyCatchAll : GTMTransientRootProxy - -// Overridden, and ignores all thrown exceptions. -- (void)forwardInvocation:(NSInvocation *)invocation; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.m deleted file mode 100644 index 04591d38..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxy.m +++ /dev/null @@ -1,229 +0,0 @@ -// -// GTMTransientRootProxy.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMTransientRootProxy.h" -#import "GTMObjC2Runtime.h" - -// Private methods on NSMethodSignature that we need to call. This method has -// been available since 10.0, but Apple didn't add it to the headers until 10.5 -#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 -@interface NSMethodSignature (UndeclaredMethods) -+ (NSMethodSignature *)signatureWithObjCTypes:(const char *)types; -@end -#endif // MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - -@interface GTMTransientRootProxy (PrivateMethods) -// Returns an NSConnection for NSMacPorts. This method is broken out to allow -// subclasses to override it to generate different types of NSConnections. -- (NSConnection *)makeConnection; - -// Returns the "real" proxy (stored in the realProxy_ ivar) associated with this -// instance. If realProxy_ is nil, then an attempt is made to make a connection -// to create the realProxy_. -// -- (NSDistantObject *)realProxy; - -// "Releases" the realProxy_ ivar, and removes |self| as an observer from -// the NSNotificationCenter. -// -- (void)releaseRealProxy; -@end - -@implementation GTMTransientRootProxy - -+ (id)rootProxyWithRegisteredName:(NSString *)name - host:(NSString *)host - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout { - return [[[self alloc] initWithRegisteredName:name - host:host - protocol:protocol - requestTimeout:requestTimeout - replyTimeout:replyTimeout] autorelease]; -} - -- (id)initWithRegisteredName:(NSString *)name - host:(NSString *)host - protocol:(Protocol *)protocol - requestTimeout:(NSTimeInterval)requestTimeout - replyTimeout:(NSTimeInterval)replyTimeout { - if (!name || !protocol) { - [self release]; - return nil; - } - - requestTimeout_ = requestTimeout; - replyTimeout_ = replyTimeout; - - registeredName_ = [name copy]; - host_ = [host copy]; - - protocol_ = protocol; // Protocols can't be retained - - return self; -} - -- (id)init { - return [self initWithRegisteredName:nil - host:nil - protocol:nil - requestTimeout:0.0 - replyTimeout:0.0]; -} - -- (void)dealloc { - [self releaseRealProxy]; - [registeredName_ release]; - [host_ release]; - [super dealloc]; -} - -- (BOOL)isConnected { - BOOL result = NO; - @synchronized (self) { - result = [[[self realProxy] connectionForProxy] isValid]; - } - return result; -} - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector { - struct objc_method_description mdesc; - mdesc = protocol_getMethodDescription(protocol_, selector, YES, YES); - NSMethodSignature *returnValue = nil; - if (mdesc.types == NULL) { - // COV_NF_START - _GTMDevLog(@"Unable to get the protocol method description. Returning " - @"nil."); - // COV_NF_END - } else { - returnValue = [NSMethodSignature signatureWithObjCTypes:mdesc.types]; - } - return returnValue; -} - -- (void)forwardInvocation:(NSInvocation *)invocation { - @try { - NSDistantObject *target = [self realProxy]; - [invocation invokeWithTarget:target]; - - // We need to catch NSException* here rather than "id" because we need to - // treat |ex| as an NSException when using the -name method. Also, we're - // only looking to catch a few types of exception here, all of which are - // NSException types; the rest we just rethrow. - } @catch (NSException *ex) { - NSString *exName = [ex name]; - // If we catch an exception who's name matches any of the following types, - // it's because the DO connection probably went down. So, we'll just - // release our realProxy_, and attempt to reconnect on the next call. - if ([exName isEqualToString:NSPortTimeoutException] - || [exName isEqualToString:NSInvalidSendPortException] - || [exName isEqualToString:NSInvalidReceivePortException] - || [exName isEqualToString:NSFailedAuthenticationException] - || [exName isEqualToString:NSPortSendException] - || [exName isEqualToString:NSPortReceiveException]) { - [self releaseRealProxy]; // COV_NF_LINE - } else { - // If the exception was any other type (commonly - // NSInvalidArgumentException) then we'll just re-throw it to the caller. - @throw; - } - } // COV_NF_LINE -} - -@end - -@implementation GTMTransientRootProxy (PrivateMethods) - -- (NSConnection *)makeConnection { - return [NSConnection connectionWithRegisteredName:registeredName_ host:host_]; -} - -- (NSDistantObject *)realProxy { - NSDistantObject *returnProxy = nil; - - @synchronized (self) { - // No change so no notification - if (realProxy_) return realProxy_; - - NSConnection *conn = [self makeConnection]; - [conn setRequestTimeout:requestTimeout_]; - [conn setReplyTimeout:replyTimeout_]; - @try { - // Try to get the root proxy for this connection's vended object. - realProxy_ = [conn rootProxy]; - } @catch (id ex) { - // We may fail here if we can't get the root proxy in the amount of time - // specified by the timeout above. This may happen, for example, if the - // server process is stopped (via SIGSTOP). We'll just ignore this, and - // try again at the next message. - [conn invalidate]; - return nil; - } - if (!realProxy_) { - [conn invalidate]; - // Again, no change in connection status - return nil; - } - [realProxy_ retain]; - [realProxy_ setProtocolForProxy:protocol_]; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self - selector:@selector(connectionDidDie:) - name:NSConnectionDidDieNotification - object:conn]; - // Retain/autorelease so it lives at least the duration of this synchronize - returnProxy = [[realProxy_ retain] autorelease]; - } // @synchronized (self) - - return returnProxy; -} - -- (void)connectionDidDie:(NSNotification *)notification { - [self releaseRealProxy]; -} - -- (void)releaseRealProxy { - BOOL connectionChanged = NO; - @synchronized (self) { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - // Only trigger if we had a proxy before - if (realProxy_) { - connectionChanged = YES; - } - [realProxy_ release]; - realProxy_ = nil; - } -} - -@end - -@implementation GTMRootProxyCatchAll - -- (void)forwardInvocation:(NSInvocation *)invocation { - @try { - [super forwardInvocation:invocation]; - } - @catch (id ex) { - // Log for developers, but basically ignore it. - _GTMDevLog(@"Proxy for invoking %@ has caught and is ignoring exception: %@", - NSStringFromSelector([invocation selector]), ex); - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxyTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxyTest.m deleted file mode 100644 index 70b69a1b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMTransientRootProxyTest.m +++ /dev/null @@ -1,228 +0,0 @@ -// -// GMTransientRootProxyTest.m -// -// Copyright 2006-2009 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMTransientRootProxy.h" -#import "GTMUnitTestDevLog.h" - -#define kDefaultTimeout 5.0 - -// === Start off declaring some auxillary data structures === -static NSString *const kTestServerName = @"gtm_test_server"; -static NSString *const kGTMTransientRootNameKey = @"GTMTransientRootNameKey"; -static NSString *const kGTMTransientRootLockKey = @"GTMTransientRootLockKey"; - -enum { - kGTMTransientThreadConditionStarting = 777, - kGTMTransientThreadConditionStarted, - kGTMTransientThreadConditionQuitting, - kGTMTransientThreadConditionQuitted -}; - -// The @protocol that we'll use for testing with. -@protocol DOTestProtocol -- (oneway void)doOneWayVoid; -- (bycopy NSString *)doReturnStringBycopy; -- (void)throwException; -@end - -// The "server" we'll use to test the DO connection. This server will implement -// our test protocol, and it will run in a separate thread from the main -// unit testing thread, so the DO requests can be serviced. -@interface DOTestServer : NSObject { -} -- (void)runThread:(NSDictionary *)args; -@end - -@implementation DOTestServer - -- (void)runThread:(NSDictionary *)args { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSConditionLock *lock = [args objectForKey:kGTMTransientRootLockKey]; - NSString *serverName = [args objectForKey:kGTMTransientRootNameKey]; - NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - if(![lock lockWhenCondition:kGTMTransientThreadConditionStarting - beforeDate:future]) { - _GTMDevLog(@"Unable to acquire lock in runThread! This is BAD!"); - [pool drain]; - [NSThread exit]; - } - - NSConnection *conn = [NSConnection defaultConnection]; - [conn setRootObject:self]; - if (![conn registerName:serverName]) { - _GTMDevLog(@"Failed to register DO root object with name '%@'", - serverName); - [pool drain]; - [NSThread exit]; - } - [lock unlockWithCondition:kGTMTransientThreadConditionStarted]; - while (![lock tryLockWhenCondition:kGTMTransientThreadConditionQuitting]) { - NSDate* runUntil = [NSDate dateWithTimeIntervalSinceNow:0.1]; - [[NSRunLoop currentRunLoop] runUntilDate:runUntil]; - } - [conn setRootObject:nil]; - [conn registerName:nil]; - [pool drain]; - [lock unlockWithCondition:kGTMTransientThreadConditionQuitted]; -} - -- (oneway void)doOneWayVoid { - // Do nothing -} -- (bycopy NSString *)doReturnStringBycopy { - return @"TestString"; -} - -- (void)throwException { - [NSException raise:@"testingException" format:@"for the unittest"]; -} - -@end - -// === Done with auxillary data structures, now for the main test class === - -@interface GTMTransientRootProxyTest : GTMTestCase { - @private - DOTestServer *server_; - NSConditionLock *syncLock_; -} -@end - -@implementation GTMTransientRootProxyTest - -- (void)testTransientRootProxy { - // Setup our server and create a unqiue server name every time we run - NSTimeInterval timeStamp = [[NSDate date] timeIntervalSinceReferenceDate]; - NSString *serverName = - [NSString stringWithFormat:@"%@_%f", kTestServerName, timeStamp]; - server_ = [[[DOTestServer alloc] init] autorelease]; - syncLock_ = [[[NSConditionLock alloc] - initWithCondition:kGTMTransientThreadConditionStarting] - autorelease]; - NSDictionary *args = [NSDictionary dictionaryWithObjectsAndKeys: - syncLock_, kGTMTransientRootLockKey, - serverName, kGTMTransientRootNameKey, - nil]; - [NSThread detachNewThreadSelector:@selector(runThread:) - toTarget:server_ - withObject:args]; - NSDate *future = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionStarted - beforeDate:future], - @"Unable to start thread"); - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionStarted]; - - GTMTransientRootProxy *failProxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:nil - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertNil(failProxy, @"should have failed w/o a name"); - failProxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:serverName - host:nil - protocol:nil - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertNil(failProxy, @"should have failed w/o a protocol"); - failProxy = [[[GTMTransientRootProxy alloc] init] autorelease]; - STAssertNil(failProxy, @"should have failed just calling init"); - - GTMTransientRootProxy *proxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:serverName - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - - STAssertEqualObjects([proxy doReturnStringBycopy], @"TestString", - @"proxy should have returned 'TestString'"); - - // Redo the *exact* same test to make sure we can have multiple instances - // in the same app. - proxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:serverName - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertEqualObjects([proxy doReturnStringBycopy], - @"TestString", @"proxy should have returned " - @"'TestString'"); - - // Test the GTMRootProxyCatchAll within this test so we don't have to rebuild - // the server again. - - GTMRootProxyCatchAll *catchProxy = - [GTMRootProxyCatchAll rootProxyWithRegisteredName:serverName - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - - [GTMUnitTestDevLog expectString:@"Proxy for invoking throwException has " - @"caught and is ignoring exception: [NOTE: this exception originated in " - @"the server.]\nfor the unittest"]; - id e = nil; - @try { - // Has the server throw an exception - [catchProxy throwException]; - } @catch (id ex) { - e = ex; - } - STAssertNil(e, @"The GTMRootProxyCatchAll did not catch the exception: %@.", - e); - - proxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:@"FAKE_SERVER" - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:kDefaultTimeout - replyTimeout:kDefaultTimeout]; - STAssertNotNil(proxy, @"proxy shouldn't be nil, even when registered w/ a " - @"fake server"); - STAssertFalse([proxy isConnected], @"the proxy shouldn't be connected due to " - @"the fake server"); - - // Now set up a proxy, and then kill our server. We put a super short time - // out on it, because we are expecting it to fail. - proxy = - [GTMTransientRootProxy rootProxyWithRegisteredName:serverName - host:nil - protocol:@protocol(DOTestProtocol) - requestTimeout:0.01 - replyTimeout:0.01]; - [syncLock_ tryLockWhenCondition:kGTMTransientThreadConditionStarted]; - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitting]; - - // Wait for the server to shutdown so we clean up nicely. - // The max amount of time we will wait until we abort this test. - NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:kDefaultTimeout]; - // The server did not shutdown and we want to capture this as an error - STAssertTrue([syncLock_ lockWhenCondition:kGTMTransientThreadConditionQuitted - beforeDate:timeout], - @"The server did not shutdown gracefully before the timeout."); - [syncLock_ unlockWithCondition:kGTMTransientThreadConditionQuitted]; - - // This should fail gracefully because the server is dead. - STAssertNil([proxy doReturnStringBycopy], @"proxy should have returned nil"); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.h deleted file mode 100644 index e53b541b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.h +++ /dev/null @@ -1,196 +0,0 @@ -// -// GTMValidatingContainers.h -// -// Mutable containers that do verification of objects being added to them -// at runtime. Support for arrays, dictionaries and sets. -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// GTMValidatingContainers are a set of mutable container classes that allow -// you to have a selector on a target that is called to verify that the objects -// being put into the container are valid. This can be controlled at compile -// time so that you don't take the performance hit in a release build using the -// GTM_CONTAINERS_VALIDATE macro. -// We have supplied validators for simple cases such as kindOfClass or -// conformsToProtocol. See GTMKindOfClassValidator et al. for details. -// -// Example of usage: -// id target = [GTMKindOfClassValidator validateAgainstClass:[NSString class]]; -// SEL selector = @selector(validateObject:forContainer:); -// GTMValidatingArray *array = [GTMValidatingArray validatingArrayWithTarget:target -// selector:selector]; -// [array addObject:@"foo"]; // Will be good -// [array addObject:[NSNumber numberWithInt:2]]; // Will fail -// -// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and -// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens -// when a validation fails. If you implement your own validators, you may want -// to control their internals using the same macros for consistency. -// -// Note that the validating collection types retain their targets. - -#import -#import "GTMDefines.h" - -// By default we only validate containers in debug. If you want to validate -// in release as well, #define GTM_CONTAINERS_VALIDATE in a prefix or build -// settings. -#ifndef GTM_CONTAINERS_VALIDATE -#if DEBUG -#define GTM_CONTAINERS_VALIDATE 1 -#else // DEBUG -#define GTM_CONTAINERS_VALIDATE 0 -#endif // DEBUG -#endif // GTM_CONTAINERS_VALIDATE - -// If GTM_CONTAINERS_VALIDATE is on, and log and assert are both turned off -// (see below), the object that failed validation will just not be added -// to the container. - -// If you don't want log to occur on validation failure define -// GTM_CONTAINERS_VALIDATION_FAILED_LOG to 0 in a prefix or build settings. -#ifndef GTM_CONTAINERS_VALIDATION_FAILED_LOG -#define GTM_CONTAINERS_VALIDATION_FAILED_LOG GTM_CONTAINERS_VALIDATE -#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG - -// If you don't want an assert to occur on validation failure define -// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT to 0 in a prefix or build settings. -#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT -#define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT GTM_CONTAINERS_VALIDATE -#endif // GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - -// Sometimes you get a container back from somebody else and want to validate -// that it contains what you think it contains. _GTMValidateContainer -// allows you to do exactly that. _GTMValidateContainer... give you specialty -// functions for doing common types of validations. These all inline to nothing -// if GTM_CONTAINERS_VALIDATE is not defined. -#if GTM_CONTAINERS_VALIDATE -void _GTMValidateContainer(id container, id target, SEL selector); -void _GTMValidateContainerContainsKindOfClass(id container, Class cls); -void _GTMValidateContainerContainsMemberOfClass(id container, Class cls); -void _GTMValidateContainerConformsToProtocol(id container, Protocol *prot); -void _GTMValidateContainerItemsRespondToSelector(id container, SEL sel); -#else -GTM_INLINE void _GTMValidateContainer(id container, id target, SEL selector) { -} -GTM_INLINE void _GTMValidateContainerContainsKindOfClass(id container, - Class cls) { -} -GTM_INLINE void _GTMValidateContainerContainsMemberOfClass(id container, - Class cls) { -} -GTM_INLINE void _GTMValidateContainerConformsToProtocol(id container, - Protocol *prot) { -} -GTM_INLINE void _GTMValidateContainerItemsRespondToSelector(id container, - SEL sel) { -} -#endif - - -// See comments near top of file for class description. -@interface GTMValidatingArray : NSMutableArray { -#if GTM_CONTAINERS_VALIDATE - NSMutableArray *embeddedContainer_; - id target_; - SEL selector_; -#endif // #if GTM_CONTAINERS_VALIDATE -} -+ (id)validatingArrayWithTarget:(id)target selector:(SEL)sel; -+ (id)validatingArrayWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel; -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -@end - -// See comments near top of file for class description. -@interface GTMValidatingDictionary : NSMutableDictionary { -#if GTM_CONTAINERS_VALIDATE - NSMutableDictionary *embeddedContainer_; - id target_; - SEL selector_; -#endif // #if GTM_CONTAINERS_VALIDATE -} -+ (id)validatingDictionaryWithTarget:(id)target selector:(SEL)sel; -+ (id)validatingDictionaryWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel; -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -@end - -// See comments near top of file for class description. -@interface GTMValidatingSet : NSMutableSet { -#if GTM_CONTAINERS_VALIDATE - NSMutableSet *embeddedContainer_; - id target_; - SEL selector_; -#endif // #if GTM_CONTAINERS_VALIDATE -} -+ (id)validatingSetWithTarget:(id)target selector:(SEL)sel; -+ (id)validatingSetWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel; -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel; -@end - -#pragma mark - -#pragma mark Simple Common Validators -// See comments near top of file for examples of how these are used. -@protocol GTMContainerValidatorProtocol -- (BOOL)validateObject:(id)object forContainer:(id)container; -@end - -// Validates that a given object is a kind of class (instance of class or an -// instance of any class that inherits from that class) -@interface GTMKindOfClassValidator : NSObject { - Class cls_; -} -+ (id)validateAgainstClass:(Class)cls; -- (id)initWithClass:(Class)cls; -@end - -// Validates that a given object is a member of class (exact instance of class) -@interface GTMMemberOfClassValidator : NSObject { - Class cls_; -} -+ (id)validateAgainstClass:(Class)cls; -- (id)initWithClass:(Class)cls; -@end - -// Validates that a given object conforms to a protocol -@interface GTMConformsToProtocolValidator : NSObject { - Protocol* prot_; -} -+ (id)validateAgainstProtocol:(Protocol*)prot; -- (id)initWithProtocol:(Protocol*)prot; -@end - -// Validates that a given object responds to a given selector -@interface GTMRespondsToSelectorValidator : NSObject { - SEL sel_; -} -+ (id)validateAgainstSelector:(SEL)sel; -- (id)initWithSelector:(SEL)sel; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.m deleted file mode 100644 index 3b313564..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainers.m +++ /dev/null @@ -1,490 +0,0 @@ -// -// GTMValidatingContainers.m -// -// Mutable containers that do verification of objects being added to them -// at runtime. Support for arrays, dictionaries and sets. -// -// Documentation on subclassing class clusters (which we are doing) is here: -// http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_9.html#//apple_ref/doc/uid/TP40002974-CH4-DontLinkElementID_105 -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMValidatingContainers.h" - -#if GTM_CONTAINERS_VALIDATE - -#import "GTMDebugSelectorValidation.h" -#if GTM_IPHONE_SDK -#import -#import -#else // GTM_IPHONE_SDK -#import -#endif // GTM_IPHONE_SDK - -GTM_INLINE BOOL VerifyObjectWithTargetAndSelectorForContainer(id anObject, - id target, - SEL selector, - id container) { - // We must take care here, since Intel leaves junk in high bytes of return - // register for predicates that return BOOL. - // For details see: - // http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_23.html - // and - // http://www.red-sweater.com/blog/320/abusing-objective-c-with-class#comment-83187 - BOOL isGood = ((BOOL (*)(id, SEL, id, id))objc_msgSend)(target, selector, - anObject, container); - if (!isGood) { -#if GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - _GTMDevAssert(isGood, @"%@ failed container verification for %@", - anObject, [container description]); -#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG -#if GTM_CONTAINERS_VALIDATION_FAILED_LOG - _GTMDevLog(@"%@ failed container verification for %@", anObject, - [container description]); -#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG - } - return isGood; -} - -GTM_INLINE void VerifySelectorOnTarget(SEL sel, id target) { - GTMAssertSelectorNilOrImplementedWithReturnTypeAndArguments(target, - sel, - @encode(BOOL), - @encode(id), - @encode(id), - nil); -} - -void _GTMValidateContainerContainsKindOfClass(id container, Class cls) { - GTMKindOfClassValidator *validator; - validator = [GTMKindOfClassValidator validateAgainstClass:cls]; - _GTMValidateContainer(container, - validator, - @selector(validateObject:forContainer:)); -} - -void _GTMValidateContainerContainsMemberOfClass(id container, Class cls) { - GTMMemberOfClassValidator *validator; - validator = [GTMMemberOfClassValidator validateAgainstClass:cls]; - _GTMValidateContainer(container, - validator, - @selector(validateObject:forContainer:)); -} - -void _GTMValidateContainerConformsToProtocol(id container, Protocol* prot) { - GTMConformsToProtocolValidator *validator; - validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot]; - _GTMValidateContainer(container, - validator, - @selector(validateObject:forContainer:)); -} - -void _GTMValidateContainerItemsRespondToSelector(id container, SEL sel) { - GTMRespondsToSelectorValidator *validator; - validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel]; - _GTMValidateContainer(container, - validator, - @selector(validateObject:forContainer:)); -} - -void _GTMValidateContainer(id container, id target, SEL selector) { - if ([container respondsToSelector:@selector(objectEnumerator)]) { - NSEnumerator *enumerator = [container objectEnumerator]; - id val; - while ((val = [enumerator nextObject])) { - VerifyObjectWithTargetAndSelectorForContainer(val, - target, - selector, - container); - } - } else { -#if GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - _GTMDevAssert(0, @"container %@ does not respond to -objectEnumerator", - [container description]); -#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG -#if GTM_CONTAINERS_VALIDATION_FAILED_LOG - _GTMDevLog(@"container does not respont to -objectEnumerator: %@", - [container description]); -#endif // GTM_CONTAINERS_VALIDATION_FAILED_LOG - } -} -#endif // GTM_CONTAINERS_VALIDATE - -@implementation GTMValidatingArray - -+ (id)validatingArrayWithTarget:(id)target selector:(SEL)sel { - return [self validatingArrayWithCapacity:0 target:target selector:sel]; -} - -+ (id)validatingArrayWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - return [[[[self class] alloc] initValidatingWithCapacity:0 - target:target - selector:sel] autorelease]; -} - -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel { - return [self initValidatingWithCapacity:0 target:target selector:sel]; -} - -#if GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - embeddedContainer_ = [[NSMutableArray alloc] initWithCapacity:capacity]; - target_ = [target retain]; - selector_ = sel; - VerifySelectorOnTarget(selector_, target_); - } - return self; -} - -- (void)dealloc { - [embeddedContainer_ release]; - [target_ release]; - [super dealloc]; -} - -- (NSUInteger)count { - return [embeddedContainer_ count]; -} - -- (id)objectAtIndex:(NSUInteger)idx { - return [embeddedContainer_ objectAtIndex:idx]; -} - -- (void)addObject:(id)anObject { - if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_, - selector_, self)) { - [embeddedContainer_ addObject:anObject]; - } -} - -- (void)insertObject:(id)anObject atIndex:(NSUInteger)idx { - if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_, - selector_, self)) { - [embeddedContainer_ insertObject:anObject atIndex:idx]; - } -} - -- (void)removeLastObject { - [embeddedContainer_ removeLastObject]; -} - -- (void)removeObjectAtIndex:(NSUInteger)idx { - [embeddedContainer_ removeObjectAtIndex:idx]; -} - -- (void)replaceObjectAtIndex:(NSUInteger)idx withObject:(id)anObject { - if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_, - selector_, self)) { - [embeddedContainer_ replaceObjectAtIndex:idx withObject:anObject]; - } -} - -- (NSString*)description { - return [NSString stringWithFormat:@"%@ - %@", - NSStringFromClass([self class]), - [embeddedContainer_ description]]; -} - -#else // GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - [self release]; - } - return [[NSMutableArray alloc] initWithCapacity:capacity]; -} -#endif // GTM_CONTAINERS_VALIDATE -@end - -@implementation GTMValidatingDictionary -+ (id)validatingDictionaryWithTarget:(id)target selector:(SEL)sel { - return [self validatingDictionaryWithCapacity:0 target:target selector:sel]; -} - -+ (id)validatingDictionaryWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - return [[[[self class] alloc] initValidatingWithCapacity:0 - target:target - selector:sel] autorelease]; -} - -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel { - return [self initValidatingWithCapacity:0 target:target selector:sel]; -} - -#if GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - embeddedContainer_ = [[NSMutableDictionary alloc] initWithCapacity:capacity]; - target_ = [target retain]; - selector_ = sel; - VerifySelectorOnTarget(selector_, target_); - } - return self; -} - -- (void)dealloc { - [target_ release]; - [embeddedContainer_ release]; - [super dealloc]; -} - -- (NSUInteger)count { - return [embeddedContainer_ count]; -} - -- (NSEnumerator *)keyEnumerator { - return [embeddedContainer_ keyEnumerator]; -} - -- (id)objectForKey:(id)aKey { - return [embeddedContainer_ objectForKey:aKey]; -} - -- (void)removeObjectForKey:(id)aKey { - [embeddedContainer_ removeObjectForKey:aKey]; -} - -- (void)setObject:(id)anObject forKey:(id)aKey { - if (VerifyObjectWithTargetAndSelectorForContainer(anObject, target_, - selector_, self)) { - [embeddedContainer_ setObject:anObject forKey:aKey]; - } -} - -- (NSString*)description { - return [NSString stringWithFormat:@"%@ - %@", - NSStringFromClass([self class]), - [embeddedContainer_ description]]; -} - -#else // GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - [self release]; - } - return [[NSMutableDictionary alloc] initWithCapacity:capacity]; - -} -#endif // GTM_CONTAINERS_VALIDATE -@end - -@implementation GTMValidatingSet -+ (id)validatingSetWithTarget:(id)target selector:(SEL)sel { - return [self validatingSetWithCapacity:0 target:target selector:sel]; -} - -+ (id)validatingSetWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - return [[[[self class] alloc] initValidatingWithCapacity:0 - target:target - selector:sel] autorelease]; -} -- (id)initValidatingWithTarget:(id)target selector:(SEL)sel { - return [self initValidatingWithCapacity:0 target:target selector:sel]; -} - -#if GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - embeddedContainer_ = [[NSMutableSet alloc] initWithCapacity:capacity]; - target_ = [target retain]; - selector_ = sel; - VerifySelectorOnTarget(selector_, target_); - } - return self; -} - -- (void)dealloc { - [target_ release]; - [embeddedContainer_ release]; - [super dealloc]; -} - -- (NSUInteger)count { - return [embeddedContainer_ count]; -} - -- (id)member:(id)object { - return [embeddedContainer_ member:object]; -} - -- (NSEnumerator *)objectEnumerator { - return [embeddedContainer_ objectEnumerator]; -} - -- (void)addObject:(id)object { - if (object && VerifyObjectWithTargetAndSelectorForContainer(object, - target_, - selector_, - self)) { - [embeddedContainer_ addObject:object]; - } -} - -- (void)removeObject:(id)object { - [embeddedContainer_ removeObject:object]; -} - -- (NSString*)description { - return [NSString stringWithFormat:@"%@ - %@", - NSStringFromClass([self class]), - [embeddedContainer_ description]]; -} - -#else // GTM_CONTAINERS_VALIDATE -- (id)initValidatingWithCapacity:(NSUInteger)capacity - target:(id)target - selector:(SEL)sel { - if ((self = [super init])) { - [self release]; - } - return [[NSMutableSet alloc] initWithCapacity:capacity]; -} -#endif // GTM_CONTAINERS_VALIDATE -@end - -#pragma mark - -#pragma mark Simple Common Validators -@implementation GTMKindOfClassValidator -+ (id)validateAgainstClass:(Class)cls { - return [[[[self class] alloc] initWithClass:cls] autorelease]; -} - -- (id)initWithClass:(Class)cls { -#if GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - if (!cls) { - _GTMDevLog(@"nil class"); - [self release]; - return nil; - } - cls_ = cls; - } - return self; -#else // GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - [self release]; - } - return nil; -#endif // GTM_CONTAINERS_VALIDATE -} - -- (BOOL)validateObject:(id)object forContainer:(id)container { - return [object isKindOfClass:cls_]; -} -@end - -@implementation GTMMemberOfClassValidator -+ (id)validateAgainstClass:(Class)cls { - return [[[[self class] alloc] initWithClass:cls] autorelease]; -} - -- (id)initWithClass:(Class)cls { -#if GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - if (!cls) { - _GTMDevLog(@"nil class"); - [self release]; - return nil; - } - cls_ = cls; - } - return self; -#else // GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - [self release]; - } - return nil; -#endif // GTM_CONTAINERS_VALIDATE -} - -- (BOOL)validateObject:(id)object forContainer:(id)container { - return [object isMemberOfClass:cls_]; -} -@end - -@implementation GTMConformsToProtocolValidator -+ (id)validateAgainstProtocol:(Protocol*)prot { - return [[[[self class] alloc] initWithProtocol:prot] autorelease]; -} - -- (id)initWithProtocol:(Protocol*)prot { -#if GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - if (!prot) { - _GTMDevLog(@"nil protocol"); - [self release]; - return nil; - } - prot_ = prot; - } - return self; -#else // GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - [self release]; - } - return nil; -#endif // GTM_CONTAINERS_VALIDATE -} - -- (BOOL)validateObject:(id)object forContainer:(id)container { - return [object conformsToProtocol:prot_]; -} -@end - -@implementation GTMRespondsToSelectorValidator -+ (id)validateAgainstSelector:(SEL)sel { - return [[[[self class] alloc] initWithSelector:sel] autorelease]; -} - -- (id)initWithSelector:(SEL)sel { -#if GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - if (!sel) { - _GTMDevLog(@"nil selector"); - [self release]; - return nil; - } - sel_ = sel; - } - return self; -#else // GTM_CONTAINERS_VALIDATE - if ((self = [super init])) { - [self release]; - } - return nil; -#endif // GTM_CONTAINERS_VALIDATE -} - -- (BOOL)validateObject:(id)object forContainer:(id)container { - return [object respondsToSelector:sel_]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainersTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainersTest.m deleted file mode 100644 index f9cc3772..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/Foundation/GTMValidatingContainersTest.m +++ /dev/null @@ -1,378 +0,0 @@ -// -// GTMValidatingContainersTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMValidatingContainers.h" -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" - -#pragma mark Test Support Declarations -@protocol GTMVCTestProtocol -@end - -@interface GTMVCTestClass : NSObject -+ (id)instance; -@end - -@interface GTMVCTestSubClass : GTMVCTestClass -- (void)foo; -@end - -@interface GTMVCValidatingTests : GTMTestCase { - GTMVCTestClass *testClass_; - GTMVCTestSubClass *testSubClass_; -} -@end - -@interface GTMVCValidatorTests : GTMVCValidatingTests -@end - -@interface GTMVCContainerTests : GTMVCValidatingTests { - GTMConformsToProtocolValidator *validator_; - SEL selector_; -} -@end - -@interface GTMVCArrayTests : GTMVCContainerTests -@end - -@interface GTMVCDictionaryTests : GTMVCContainerTests -@end - -@interface GTMVCSetTests : GTMVCContainerTests -@end - -@interface GTMValidateContainerTests : GTMTestCase -@end - -#pragma mark - -#pragma mark Test Support Definitions - -@implementation GTMVCTestClass -+ (id)instance { - return [[[[self class] alloc] init] autorelease]; -} - -- (NSString*)description { - return NSStringFromClass([self class]); -} -@end - -@implementation GTMVCTestSubClass -- (void)foo { -} -@end - -@implementation GTMVCContainerTests -- (void)setUp { - [super setUp]; - Protocol *prot = @protocol(GTMVCTestProtocol); - validator_ = [[GTMConformsToProtocolValidator alloc] initWithProtocol:prot]; - selector_ = @selector(validateObject:forContainer:); -} - -- (void)tearDown { - [validator_ release]; - [super tearDown]; -} -@end - -@implementation GTMVCValidatingTests - -- (void)setUp { - [super setUp]; - testClass_ = [[GTMVCTestClass alloc] init]; - testSubClass_ = [[GTMVCTestSubClass alloc] init]; -} - -- (void)tearDown { - [testClass_ release]; - [testSubClass_ release]; - [super tearDown]; -} - -@end - -@implementation GTMVCValidatorTests - -- (void)testKindOfClassValidator { -#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - [GTMUnitTestDevLog expectString:@"nil class"]; - GTMKindOfClassValidator *validator; - validator = [GTMKindOfClassValidator validateAgainstClass:nil]; - STAssertNil(validator, @"should be nil"); - - Class cls = [GTMVCTestClass class]; - validator = [GTMKindOfClassValidator validateAgainstClass:cls]; - STAssertNotNil(validator, @"should be valid"); - - BOOL isGood = [validator validateObject:testClass_ forContainer:nil]; - STAssertTrue(isGood, @"should be validated"); - - isGood = [validator validateObject:testSubClass_ forContainer:nil]; - STAssertTrue(isGood, @"should be validated"); - - isGood = [validator validateObject:[NSNumber numberWithInt:0] - forContainer:nil]; - STAssertFalse(isGood, @"should fail"); -#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - GTMKindOfClassValidator *validator; - validator = [GTMKindOfClassValidator validateAgainstClass:nil]; - STAssertNil(validator, @"should be nil"); - - Class cls = [GTMVCTestClass class]; - validator = [GTMKindOfClassValidator validateAgainstClass:cls]; - STAssertNil(validator, @"should be nil"); -#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT -} - -- (void)testMemberOfClassValidator { -#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - [GTMUnitTestDevLog expectString:@"nil class"]; - GTMMemberOfClassValidator *validator; - validator = [GTMMemberOfClassValidator validateAgainstClass:nil]; - STAssertNil(validator, @"should be nil"); - - Class cls = [GTMVCTestClass class]; - validator = [GTMMemberOfClassValidator validateAgainstClass:cls]; - STAssertNotNil(validator, @"should be valid"); - - BOOL isGood = [validator validateObject:testClass_ forContainer:nil]; - STAssertTrue(isGood, @"should be validated"); - - isGood = [validator validateObject:testSubClass_ forContainer:nil]; - STAssertFalse(isGood, @"should fail"); - - isGood = [validator validateObject:nil forContainer:nil]; - STAssertFalse(isGood, @"should fail"); - - isGood = [validator validateObject:[NSNumber numberWithInt:0] - forContainer:nil]; - STAssertFalse(isGood, @"should fail"); -#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - GTMMemberOfClassValidator *validator; - validator = [GTMMemberOfClassValidator validateAgainstClass:nil]; - STAssertNil(validator, @"should be nil"); - - Class cls = [GTMVCTestClass class]; - validator = [GTMMemberOfClassValidator validateAgainstClass:cls]; - STAssertNil(validator, @"should be nil"); -#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT -} - -- (void)testConformsToProtocolValidator { -#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - [GTMUnitTestDevLog expectString:@"nil protocol"]; - GTMConformsToProtocolValidator *validator; - validator = [GTMConformsToProtocolValidator validateAgainstProtocol:nil]; - STAssertNil(validator, @"should be nil"); - - Protocol *prot = @protocol(GTMVCTestProtocol); - validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot]; - STAssertNotNil(validator, @"should be valid"); - - BOOL isGood = [validator validateObject:testClass_ forContainer:nil]; - STAssertFalse(isGood, @"should fail"); - - isGood = [validator validateObject:testSubClass_ forContainer:nil]; - STAssertTrue(isGood, @"should succeed"); - - isGood = [validator validateObject:nil forContainer:nil]; - STAssertFalse(isGood, @"should fail"); -#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - GTMConformsToProtocolValidator *validator; - validator = [GTMConformsToProtocolValidator validateAgainstProtocol:nil]; - STAssertNil(validator, @"should be nil"); - - Protocol *prot = @protocol(GTMVCTestProtocol); - validator = [GTMConformsToProtocolValidator validateAgainstProtocol:prot]; - STAssertNil(validator, @"should be nil"); -#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT -} - -- (void)testRespondsToSelectorValidator { -#if GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - [GTMUnitTestDevLog expectString:@"nil selector"]; - GTMRespondsToSelectorValidator *validator; - validator = [GTMRespondsToSelectorValidator validateAgainstSelector:nil]; - STAssertNil(validator, @"should be nil"); - - SEL sel = @selector(foo); - validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel]; - STAssertNotNil(validator, @"should be valid"); - - BOOL isGood = [validator validateObject:testClass_ forContainer:nil]; - STAssertFalse(isGood, @"should fail"); - - isGood = [validator validateObject:testSubClass_ forContainer:nil]; - STAssertTrue(isGood, @"should succeed"); - - isGood = [validator validateObject:nil forContainer:nil]; - STAssertFalse(isGood, @"should fail"); -#else // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - GTMRespondsToSelectorValidator *validator; - validator = [GTMRespondsToSelectorValidator validateAgainstSelector:nil]; - STAssertNil(validator, @"should be nil"); - - SEL sel = @selector(foo); - validator = [GTMRespondsToSelectorValidator validateAgainstSelector:sel]; - STAssertNil(validator, @"should be nil"); -#endif // GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT -} - - -@end - -@implementation GTMVCArrayTests -- (void)testContainer { - GTMValidatingArray *array; - array = [GTMValidatingArray validatingArrayWithTarget:validator_ - selector:selector_]; - STAssertNotNil(array, @"should be valid"); - - array = [[[GTMValidatingArray alloc] initValidatingWithTarget:validator_ - selector:selector_] autorelease]; - STAssertNotNil(array, @"should be valid"); - - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"]; - [array addObject:testSubClass_]; - [array addObject:testClass_]; - STAssertEquals([array objectAtIndex:0], testSubClass_, @""); - - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"]; - [array insertObject:testClass_ atIndex:0]; - [array insertObject:testSubClass_ atIndex:0]; - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingArray .*"]; - [array replaceObjectAtIndex:0 withObject:testClass_]; - [array replaceObjectAtIndex:0 withObject:testSubClass_]; - [array removeLastObject]; - [array removeObjectAtIndex:0]; - NSUInteger expectedCount = 0U; -#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - // If we're not validating, we don't expect any logs - [GTMUnitTestDevLog resetExpectedLogs]; - expectedCount = 2U; -#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - STAssertEquals([array count], expectedCount, @"should have no objects left"); - -} -@end - -@implementation GTMVCDictionaryTests -- (void)testContainer { - GTMValidatingDictionary *dictionary; - dictionary = [GTMValidatingDictionary validatingDictionaryWithTarget:validator_ - selector:selector_]; - STAssertNotNil(dictionary, @"should be valid"); - - dictionary = [[[GTMValidatingDictionary alloc] initValidatingWithTarget:validator_ - selector:selector_] autorelease]; - STAssertNotNil(dictionary, @"should be valid"); - - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingDictionary .*"]; - [dictionary setObject:testClass_ forKey:@"Key1"]; - [dictionary setObject:testSubClass_ forKey:@"Key2"]; - STAssertEquals([dictionary objectForKey:@"Key2"], testSubClass_, @""); - STAssertNotNil([dictionary keyEnumerator], @""); - - [dictionary removeObjectForKey:@"Key2"]; - [dictionary removeObjectForKey:@"Key1"]; - STAssertEquals([dictionary count], (NSUInteger)0, @"should have no objects left"); - - // So we get full code coverage - [testSubClass_ foo]; -#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - // If we're not validating, we don't expect any logs - [GTMUnitTestDevLog resetExpectedLogs]; -#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) -} -@end - -@implementation GTMVCSetTests -- (void)testContainer { - GTMValidatingSet *set; - set = [GTMValidatingSet validatingSetWithTarget:validator_ - selector:selector_]; - STAssertNotNil(set, @"should be valid"); - - set = [[[GTMValidatingSet alloc] initValidatingWithTarget:validator_ - selector:selector_] autorelease]; - STAssertNotNil(set, @"should be valid"); - - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for GTMValidatingSet .*"]; - [set addObject:testClass_]; - [set addObject:testSubClass_]; - STAssertEqualObjects([set member:testSubClass_], testSubClass_, @""); - STAssertNotNil([set objectEnumerator], @""); - - [set removeObject:testClass_]; - [set removeObject:testSubClass_]; -#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - // If we're not validating, we don't expect any logs - [GTMUnitTestDevLog resetExpectedLogs]; -#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - STAssertEquals([set count], (NSUInteger)0, @"should have no objects left"); -} -@end - -@implementation GTMValidateContainerTests -- (void)testValidatingContainers { - NSDictionary *homogenousDict = [NSDictionary dictionaryWithObjectsAndKeys: - [GTMVCTestSubClass instance], @"key1", - [GTMVCTestSubClass instance], @"key2", - nil]; - NSDictionary *heterogenousDict = [NSDictionary dictionaryWithObjectsAndKeys: - [GTMVCTestClass instance], @"key1", - [GTMVCTestSubClass instance], @"key2", - nil]; - - // Test bad container - [GTMUnitTestDevLog expectPattern:@"container does not respont to -objectEnumerator: .*"]; - _GTMValidateContainerContainsKindOfClass([NSString string], - [GTMVCTestSubClass class]); - - _GTMValidateContainerContainsKindOfClass(homogenousDict, - [GTMVCTestSubClass class]); - _GTMValidateContainerContainsKindOfClass(heterogenousDict, - [GTMVCTestClass class]); - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"]; - _GTMValidateContainerContainsKindOfClass(heterogenousDict, - [GTMVCTestSubClass class]); - - _GTMValidateContainerContainsMemberOfClass(homogenousDict, - [GTMVCTestSubClass class]); - [GTMUnitTestDevLog expectPattern:@"GTMVCTestSubClass failed container verification for .*"]; - _GTMValidateContainerContainsMemberOfClass(heterogenousDict, - [GTMVCTestClass class]); - - _GTMValidateContainerConformsToProtocol(homogenousDict, - @protocol(GTMVCTestProtocol)); - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"]; - _GTMValidateContainerConformsToProtocol(heterogenousDict, - @protocol(GTMVCTestProtocol)); - - _GTMValidateContainerItemsRespondToSelector(homogenousDict, - @selector(foo)); - [GTMUnitTestDevLog expectPattern:@"GTMVCTestClass failed container verification for .*"]; - _GTMValidateContainerItemsRespondToSelector(heterogenousDict, - @selector(foo)); -#if !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) - // If we're not validating, we don't expect any logs - [GTMUnitTestDevLog resetExpectedLogs]; -#endif // !(GTM_CONTAINERS_VALIDATE && GTM_CONTAINERS_VALIDATION_FAILED_LOG && !GTM_CONTAINERS_VALIDATION_FAILED_ASSERT) -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM-Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM-Info.plist deleted file mode 100644 index 41b915de..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM-Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.google.GTM - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - FMWK - CFBundleSignature - ???? - CFBundleVersion - 1.0 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM.xcodeproj/project.pbxproj deleted file mode 100644 index 83cb77fb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM.xcodeproj/project.pbxproj +++ /dev/null @@ -1,2680 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - F472042B0D33BEAF00E9F378 /* All UnitTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = F47204340D33BEDF00E9F378 /* Build configuration list for PBXAggregateTarget "All UnitTests" */; - buildPhases = ( - ); - dependencies = ( - 8B45A0390DA46A20001148C5 /* PBXTargetDependency */, - F472042F0D33BEB500E9F378 /* PBXTargetDependency */, - F472042D0D33BEB500E9F378 /* PBXTargetDependency */, - ); - name = "All UnitTests"; - productName = "All UnitTests"; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXAppleScriptBuildPhase section */ - 8B3345CC0DBF8A95009FD32C /* AppleScript */ = { - isa = PBXAppleScriptBuildPhase; - buildActionMask = 2147483647; - contextName = ""; - files = ( - 8B3345890DBF8A55009FD32C /* GTMNSAppleEvent+HandlerTest.applescript in AppleScript */, - ); - isSharedContext = 0; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXAppleScriptBuildPhase section */ - -/* Begin PBXBuildFile section */ - 1012DF560F4252BD004794DB /* GTMAbstractDOListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1012DF570F4252BD004794DB /* GTMAbstractDOListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */; }; - 1012DF5A0F425525004794DB /* GTMAbstractDOListenerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */; }; - 108930850F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */; }; - 10998E8F0F4B593E007F179D /* GTMTransientRootProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */; }; - 10998E920F4B5952007F179D /* GTMTransientRootProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10998EF40F4B5D1A007F179D /* GTMTransientRootPortProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */; }; - 10998EF50F4B5D1A007F179D /* GTMTransientRootPortProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10998F8B0F4B5F1B007F179D /* GTMTransientRootProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */; }; - 33C372A60DD8A88500E97817 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */; }; - 33C372B40DD8A93000E97817 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */; }; - 33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33C374390DD8D44800E97817 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */; }; - 33C3745F0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */; }; - 629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */; }; - 6294454C0EDDF89A009295EA /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */; }; - 7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */; }; - 7F3EB3940E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */; }; - 7F3EB5540E5F0B0400A7A75E /* GTMUnitTestingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */; }; - 7F3EB5870E5F0CBB00A7A75E /* GTMLargeTypeWindowTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */; }; - 7F511DF90F4B0378009F41B6 /* GTMNSColor+Luminance.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F511DFA0F4B0378009F41B6 /* GTMNSColor+Luminance.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */; }; - 7F511DFC0F4B0378009F41B6 /* GTMTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F511DF60F4B0378009F41B6 /* GTMTheme.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F511DFE0F4B0378009F41B6 /* GTMTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF80F4B0378009F41B6 /* GTMTheme.m */; }; - 7F511E010F4B03B4009F41B6 /* GTMNSColor+LuminanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */; }; - 7F511E020F4B03BC009F41B6 /* GTMThemeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF70F4B0378009F41B6 /* GTMThemeTest.m */; }; - 84978FBC0EA6A67C00C5DC83 /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2930D198D24009257D2 /* GTMSystemVersion.m */; }; - 84B91B8B0EA3CC2E0087500F /* GTMUnitTestingImage.10.6.0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.0.tiff */; }; - 84B91B8C0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.0.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.0.tiff */; }; - 8B1801A20E2533D500280961 /* GTMLargeTypeWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */; }; - 8B1801A30E2533D500280961 /* GTMLargeTypeWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B1801AE0E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */; }; - 8B1801B20E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */; }; - 8B1801B30E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */; }; - 8B1802420E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */; }; - 8B1B49180E5F8E2100A08972 /* GTMExceptionalInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */; }; - 8B1B49260E5F97C800A08972 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */; }; - 8B2789960EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */; }; - 8B3344210DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */; }; - 8B3344230DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */; }; - 8B3344250DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */; }; - 8B3345890DBF8A55009FD32C /* GTMNSAppleEvent+HandlerTest.applescript in AppleScript */ = {isa = PBXBuildFile; fileRef = 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */; settings = {ATTRIBUTES = (Debug, ); }; }; - 8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3590150E8190FA0041E21C /* GTMTestTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B35901B0E8191750041E21C /* GTMTestTimerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B35901A0E8191750041E21C /* GTMTestTimerTest.m */; }; - 8B3AA9F10E033E23007E31B5 /* GTMValidatingContainers.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B3AA9F20E033E23007E31B5 /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */; }; - 8B3AA9F80E033E5F007E31B5 /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */; }; - 8B3E292E0EEB53F8000681D8 /* GTMCarbonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */; }; - 8B3E292F0EEB53F8000681D8 /* GTMCarbonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B3E2A3F0EEB564D000681D8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; }; - 8B3E2A410EEB565B000681D8 /* GTMUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2680DA498A0001148C5 /* GTMUnitTestingUtilities.m */; }; - 8B45A03A0DA46A2A001148C5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; }; - 8B45A0B80DA46A2F001148C5 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; }; - 8B45A0D50DA46A57001148C5 /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */; }; - 8B45A0D60DA46A57001148C5 /* GTMNSObject+BindingUnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */; }; - 8B45A19A0DA46AAA001148C5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */; }; - 8B45A2040DA46DF6001148C5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; - 8B45A21A0DA46E1D001148C5 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */; }; - 8B45A21E0DA46E34001148C5 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */; }; - 8B45A22C0DA46E51001148C5 /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2930D198D24009257D2 /* GTMSystemVersion.m */; }; - 8B45A2AA0DA49C47001148C5 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A2A50DA49C47001148C5 /* MainMenu.nib */; }; - 8B45A2AC0DA49C47001148C5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2A80DA49C47001148C5 /* main.m */; }; - 8B45A2B30DA49CA9001148C5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; - 8B45A2D00DA51A01001148C5 /* GTMUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2680DA498A0001148C5 /* GTMUnitTestingUtilities.m */; }; - 8B45A2DF0DA51A7E001148C5 /* GTMUnitTestingTest.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */; }; - 8B45A2E20DA51ABC001148C5 /* GTMUnitTestingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */; }; - 8B45A5F80DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */; }; - 8B45A5F90DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */; }; - 8B45A6BB0DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */; }; - 8B4D78080E40AFFA00EFEDD8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */; }; - 8B4D7A150E40D79200EFEDD8 /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */; }; - 8B55479C0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */; }; - 8B5547B90DB3BB220014CC1C /* GTMAppKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */; }; - 8B58E9950E547EB000A0E02E /* GTMGetURLHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */; }; - 8B61FDC00E4CDB8000FF9C21 /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B61FDBF0E4CDB8000FF9C21 /* GTMStackTrace.m */; }; - 8B6C15930F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6C15910F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B6C15940F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C15920F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m */; }; - 8B6C161C0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */; }; - 8B6F32080DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */; }; - 8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */; }; - 8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */; }; - 8B7AD49A0DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */; }; - 8B7AD49B0DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */; }; - 8B7AD49C0DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */; }; - 8B7AD4AE0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */; }; - 8B7DCB9B0DFF0E850017E983 /* GTMFourCharCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */; }; - 8B7DCBA50DFF0EFF0017E983 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; }; - 8B7DCBBD0DFF0F5D0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; }; - 8B7DCBC10DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; }; - 8B7DCBC20DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; }; - 8B7DCBC30DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; }; - 8B7DCBC40DFF0F800017E983 /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */; }; - 8B7DCBD20DFF16070017E983 /* GTMNSAppleScript+Handler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */; }; - 8B7DCBD30DFF16070017E983 /* GTMNSAppleEventDescriptor+Handler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */; }; - 8B7DCBD40DFF16070017E983 /* GTMNSAppleEventDescriptor+Foundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */; }; - 8B7DCBE20DFF18720017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */; }; - 8B7DCBED0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; }; - 8B7DCBEE0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; }; - 8B7DCBEF0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */; }; - 8B7DCE190DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; }; - 8B7DCE1A0DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; }; - 8B7DCE1B0DFF39850017E983 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */; }; - 8B7DCEF10E002C210017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */; }; - 8B8B10290EEB8B1600E543D0 /* GTMHotKeyTextFieldTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */; }; - 8B8B102A0EEB8B2900E543D0 /* GTMCarbonEventTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */; }; - 8B8B10F90EEB8B9E00E543D0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; }; - 8B8B10FD0EEB8BC300E543D0 /* GTMUnitTestingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B45A2680DA498A0001148C5 /* GTMUnitTestingUtilities.m */; }; - 8B8B11000EEB8CD000E543D0 /* GTMGetURLHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */; }; - 8B8EC87D0EF17C270044D13F /* GTMNSFileManager+Carbon.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B8EC87E0EF17C270044D13F /* GTMNSFileManager+Carbon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */; }; - 8B8EC8800EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */; }; - 8BA01B5D0F144BD800926923 /* GTMNSWorkspace+Running.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */; }; - 8BA01B5E0F144BD800926923 /* GTMNSWorkspace+Running.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BA01B600F144BE500926923 /* GTMNSWorkspace+RunningTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */; }; - 8BC045C20DAE899100C2D1CA /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */; }; - 8BC046B90DAE8C4B00C2D1CA /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */; }; - 8BC04CD80DB003D800C2D1CA /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F31F40DA3489B0052CA40 /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BE281B00DEC7E930035B3F8 /* GTMNSAppleScript+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BE281B10DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Handler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BE281B20DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Foundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BE2836F0DED0F130035B3F8 /* GTMFourCharCodeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */; }; - 8BE283730DED13AB0035B3F8 /* GTMFourCharCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */; }; - 8BE869730DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */; }; - 8BEEA90D0DA7446300894774 /* GTMUnitTestingImage.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */; }; - 8BEEA90E0DA7446300894774 /* GTMUnitTestingWindow.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */; }; - 8BEEA90F0DA7446300894774 /* GTMUnitTestingView.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */; }; - F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */ = {isa = PBXBuildFile; fileRef = F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */; }; - F41390920D75F64D00F72B31 /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */; }; - F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */; }; - F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */; }; - F41A6F820E02EC3600788A6C /* GTMSignalHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F41A6F830E02EC3600788A6C /* GTMSignalHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */; }; - F41A6F850E02EC4D00788A6C /* GTMSignalHandlerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */; }; - F41D258B0DBD21A300774EEB /* GTMBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = F41D25880DBD21A300774EEB /* GTMBase64.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F41D258C0DBD21A300774EEB /* GTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F41D25890DBD21A300774EEB /* GTMBase64.m */; }; - F41D258F0DBD21B900774EEB /* GTMBase64Test.m in Sources */ = {isa = PBXBuildFile; fileRef = F41D258A0DBD21A300774EEB /* GTMBase64Test.m */; }; - F424F7010D9AA02B000B87EF /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */; }; - F424F75F0D9AF019000B87EF /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B1A16050D90344B00CA1E8E /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42597480E23AA57003BEA3E /* GTMNSString+Replace.h in Headers */ = {isa = PBXBuildFile; fileRef = F42597450E23AA57003BEA3E /* GTMNSString+Replace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42597490E23AA57003BEA3E /* GTMNSString+Replace.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597460E23AA57003BEA3E /* GTMNSString+Replace.m */; }; - F425974B0E23AA94003BEA3E /* GTMNSString+ReplaceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */; }; - F42597790E23FE3A003BEA3E /* GTMNSString+FindFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F425977A0E23FE3A003BEA3E /* GTMNSString+FindFolder.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */; }; - F425977F0E23FE43003BEA3E /* GTMNSString+FindFolderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */; }; - F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */ = {isa = PBXBuildFile; fileRef = F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */; }; - F428FF090D48E57300382ED1 /* GTMNSBezierPath+CGPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */; }; - F42E082F0D19991400D5DDE0 /* GTMNSBezierPath+RoundRectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */; }; - F42E08330D19992100D5DDE0 /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */; }; - F42E08340D19992100D5DDE0 /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */; }; - F42E08610D199A2B00D5DDE0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; - F42E08640D199A2F00D5DDE0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; }; - F42E087F0D199AB400D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; }; - F42E08800D199AB500D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; }; - F42E089C0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; }; - F42E089D0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */; }; - F42E09450D199BA400D5DDE0 /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */; }; - F42E09490D199BBF00D5DDE0 /* GTMDelegatingTableColumn.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E094A0D199BBF00D5DDE0 /* GTMDelegatingTableColumn.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */; }; - F42E094B0D199BBF00D5DDE0 /* GTMGarbageCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE28D0D198D24009257D2 /* GTMGarbageCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E094C0D199BBF00D5DDE0 /* GTMGeometryUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E094D0D199BBF00D5DDE0 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */; }; - F42E094F0D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE2810D198D0E009257D2 /* GTMNSBezierPath+RoundRect.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E09500D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2820D198D0E009257D2 /* GTMNSBezierPath+RoundRect.m */; }; - F42E09510D199BBF00D5DDE0 /* GTMNSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE28E0D198D24009257D2 /* GTMNSString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E09520D199BBF00D5DDE0 /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE28F0D198D24009257D2 /* GTMNSString+HTML.m */; }; - F42E09530D199BBF00D5DDE0 /* GTMObjectSingleton.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE2910D198D24009257D2 /* GTMObjectSingleton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E09540D199BBF00D5DDE0 /* GTMSystemVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = F48FE2920D198D24009257D2 /* GTMSystemVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F42E09550D199BBF00D5DDE0 /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2930D198D24009257D2 /* GTMSystemVersion.m */; }; - F42E095E0D199BD600D5DDE0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; - F42E09AE0D19A62F00D5DDE0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */; }; - F431221D0DD4E3B800F45252 /* GTMStackTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = F431221A0DD4E3B800F45252 /* GTMStackTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F431221F0DD4E3C900F45252 /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */; }; - F435DE7C0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */; }; - F435DE7D0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */; }; - F435DE8B0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */; }; - F437F55D0D50BC0A00F5C3A4 /* GTMRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */; }; - F437F5620D50BC1D00F5C3A4 /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */; }; - F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */ = {isa = PBXBuildFile; fileRef = F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */; }; - F43DCEC70D47BEA000959A62 /* GTMLoginItemsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */; }; - F43E447A0D4918B20041161F /* GTMLinearRGBShading.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E44770D4918B20041161F /* GTMLinearRGBShading.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43E447B0D4918B20041161F /* GTMLinearRGBShading.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E44780D4918B20041161F /* GTMLinearRGBShading.m */; }; - F43E447F0D4918BC0041161F /* GTMLinearRGBShadingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */; }; - F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4C250D4E361D0041161F /* GTMNSString+XML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C260D4E361D0041161F /* GTMNSString+XML.m */; }; - F43E4C2D0D4E36230041161F /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */; }; - F43E4DD90D4E56320041161F /* GTMNSEnumerator+Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43E4DDA0D4E56320041161F /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */; }; - F43E4DDE0D4E56380041161F /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */; }; - F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */; }; - F43E4F6D0D4E60C50041161F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F43E4F6C0D4E60C50041161F /* libz.dylib */; }; - F47A79880D746EE9002302AB /* GTMScriptRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = F47A79850D746EE9002302AB /* GTMScriptRunner.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F47A79890D746EE9002302AB /* GTMScriptRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79860D746EE9002302AB /* GTMScriptRunner.m */; }; - F47A798B0D746EFC002302AB /* GTMScriptRunnerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */; }; - F47F1C120D490BC000925B8F /* GTMNSBezierPath+Shading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F47F1C130D490BC000925B8F /* GTMNSBezierPath+Shading.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */; }; - F47F1C1B0D490BD200925B8F /* GTMNSBezierPath+ShadingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */; }; - F47F1C750D490E5C00925B8F /* GTMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1C740D490E5C00925B8F /* GTMShading.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F47F1D300D4914AD00925B8F /* GTMCalculatedRange.h in Headers */ = {isa = PBXBuildFile; fileRef = F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F47F1D310D4914AD00925B8F /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */; }; - F47F1D350D4914B600925B8F /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */; }; - F49FA8440EEF2AB700077669 /* GTMFileSystemKQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F49FA8450EEF2AB700077669 /* GTMFileSystemKQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */; }; - F49FA88B0EEF303D00077669 /* GTMFileSystemKQueueTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */; }; - F4A420EF0EDDF8E000397A11 /* GTMHotKeyTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F4A420F00EDDF8E000397A11 /* GTMHotKeyTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */; }; - F4BC1C880DDDD45D00108B7D /* GTMHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F4BC1C860DDDD45D00108B7D /* GTMHTTPServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F4BC1C890DDDD45D00108B7D /* GTMHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC1C870DDDD45D00108B7D /* GTMHTTPServer.m */; }; - F4BC1E8D0DE1FC4A00108B7D /* GTMHTTPServerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC1E8C0DE1FC4A00108B7D /* GTMHTTPServerTest.m */; }; - F4BC22D10DE4C39000108B7D /* GTMTestHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4BC22D00DE4C39000108B7D /* GTMTestHTTPServer.m */; }; - F4CA854F0DAFAAF600B4AB10 /* GTMObjC2Runtime.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F4FF22780D9D4835003880AC /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F92B9FA80E2E64B900A2FE61 /* GTMLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = F98680AF0E2C15C300CEE8BF /* GTMLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F92B9FA90E2E64BC00A2FE61 /* GTMLogger+ASL.h in Headers */ = {isa = PBXBuildFile; fileRef = F98681670E2C1E3A00CEE8BF /* GTMLogger+ASL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F93207DE0F4B82DB005F37EA /* GTMSQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = F95B567B0F46208E0051A6F1 /* GTMSQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F95803F90E2FB0850049A088 /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */; }; - F95803FA0E2FB08F0049A088 /* GTMLoggerRingBufferWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F95803FB0E2FB0A80049A088 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */; }; - F95B567F0F46208E0051A6F1 /* GTMSQLiteTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */; }; - F95B56840F4628B30051A6F1 /* GTMSQLite.m in Sources */ = {isa = PBXBuildFile; fileRef = F95B567C0F46208E0051A6F1 /* GTMSQLite.m */; }; - F98680C30E2C163D00CEE8BF /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B00E2C15C300CEE8BF /* GTMLogger.m */; }; - F98680C40E2C164300CEE8BF /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */; }; - F98681960E2C20C100CEE8BF /* GTMLogger+ASLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */; }; - F98681970E2C20C800CEE8BF /* GTMLogger+ASL.m in Sources */ = {isa = PBXBuildFile; fileRef = F98681680E2C1E3A00CEE8BF /* GTMLogger+ASL.m */; }; - F99161B50F0B151400213D3B /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F99161B40F0B151400213D3B /* libsqlite3.dylib */; }; - F99163270F14100F00213D3B /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F99161B40F0B151400213D3B /* libsqlite3.dylib */; }; - F9FD94630E1D31280005867E /* GTMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945C0E1D30F80005867E /* GTMPath.m */; }; - F9FD94640E1D312E0005867E /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FD945D0E1D30F80005867E /* GTMPathTest.m */; }; - F9FD94CD0E1D50450005867E /* GTMPath.h in Headers */ = {isa = PBXBuildFile; fileRef = F9FD945E0E1D30F80005867E /* GTMPath.h */; settings = {ATTRIBUTES = (Public, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8B45A0380DA46A20001148C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B45A0270DA4696C001148C5; - remoteInfo = "UnitTest - UnitTesting"; - }; - 8B45A2D30DA51A0E001148C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B45A2890DA49B99001148C5; - remoteInfo = UIUnitTestingHarness; - }; - 8B7DCBA30DFF0EFB0017E983 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F42E086C0D199A5B00D5DDE0; - remoteInfo = GTM; - }; - F41D254E0DB9067C00774EEB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B45A0270DA4696C001148C5; - remoteInfo = "UnitTest - UnitTesting"; - }; - F42E08760D199A9B00D5DDE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F42E086C0D199A5B00D5DDE0; - remoteInfo = GTM; - }; - F42E08780D199AA600D5DDE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F42E086C0D199A5B00D5DDE0; - remoteInfo = GTM; - }; - F472042C0D33BEB500E9F378 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F48FE2630D198C1E009257D2; - remoteInfo = "UnitTest - AppKit"; - }; - F472042E0D33BEB500E9F378 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F42E08110D19987200D5DDE0; - remoteInfo = "UnitTest - Foundation"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMAbstractDOListener.h; sourceTree = ""; }; - 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAbstractDOListener.m; sourceTree = ""; }; - 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAbstractDOListenerTest.m; sourceTree = ""; }; - 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootPortProxyTest.m; sourceTree = ""; }; - 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootPortProxy.m; sourceTree = ""; }; - 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTransientRootPortProxy.h; sourceTree = ""; }; - 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootProxyTest.m; sourceTree = ""; }; - 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTransientRootProxy.m; sourceTree = ""; }; - 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTransientRootProxy.h; sourceTree = ""; }; - 32DBCF5E0370ADEE00C91783 /* GTM_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTM_Prefix.pch; sourceTree = ""; }; - 33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+URLArguments.h"; sourceTree = ""; }; - 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = ""; }; - 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArgumentsTest.m"; sourceTree = ""; }; - 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; - 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; - 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArgumentsTest.m"; sourceTree = ""; }; - 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSArray+Merge.h"; sourceTree = ""; }; - 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+Merge.m"; sourceTree = ""; }; - 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+MergeTest.m"; sourceTree = ""; }; - 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSImage+Scaling.h"; sourceTree = ""; }; - 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+Scaling.m"; sourceTree = ""; }; - 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSImage+ScalingTest.m"; sourceTree = ""; }; - 7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSColor+Luminance.h"; sourceTree = ""; }; - 7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSColor+Luminance.m"; sourceTree = ""; }; - 7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSColor+LuminanceTest.m"; sourceTree = ""; }; - 7F511DF60F4B0378009F41B6 /* GTMTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTheme.h; sourceTree = ""; }; - 7F511DF70F4B0378009F41B6 /* GTMThemeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMThemeTest.m; sourceTree = ""; }; - 7F511DF80F4B0378009F41B6 /* GTMTheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTheme.m; sourceTree = ""; }; - 848269C80E9FF4BD006E6D9C /* DebugSnowLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugSnowLeopardOrLater.xcconfig; sourceTree = ""; }; - 848269C90E9FF4BD006E6D9C /* ReleaseSnowLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseSnowLeopardOrLater.xcconfig; sourceTree = ""; }; - 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingImage.10.6.0.tiff; sourceTree = ""; }; - 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.0.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.6.0.tiff; sourceTree = ""; }; - 84D99F360EA661C900C007D5 /* BuildAllSDKs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = BuildAllSDKs.sh; sourceTree = ""; }; - 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLargeTypeWindow.m; sourceTree = ""; }; - 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLargeTypeWindow.h; sourceTree = ""; }; - 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLargeTypeWindowTest.m; sourceTree = ""; }; - 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowImageTest.gtmUTState; sourceTree = ""; }; - 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowLongTextTest.gtmUTState; sourceTree = ""; }; - 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowShortTextTest.gtmUTState; sourceTree = ""; }; - 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMLargeTypeWindowMediumTextTest.gtmUTState; sourceTree = ""; }; - 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+BindingUnitTesting.m"; sourceTree = ""; }; - 8B1A14EA0D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+BindingUnitTesting.h"; sourceTree = ""; }; - 8B1A16050D90344B00CA1E8E /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMExceptionalInlines.h; sourceTree = ""; }; - 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlines.m; sourceTree = ""; }; - 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlinesTest.m; sourceTree = ""; }; - 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.10.5.6.tiff; sourceTree = ""; }; - 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleScript+HandlerTest.m"; sourceTree = ""; }; - 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleScript+Handler.m"; sourceTree = ""; }; - 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleScript+Handler.h"; sourceTree = ""; }; - 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+HandlerTest.m"; sourceTree = ""; }; - 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+Handler.m"; sourceTree = ""; }; - 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleEventDescriptor+Handler.h"; sourceTree = ""; }; - 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+FoundationTest.m"; sourceTree = ""; }; - 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSAppleEventDescriptor+Foundation.m"; sourceTree = ""; }; - 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSAppleEventDescriptor+Foundation.h"; sourceTree = ""; }; - 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = "GTMNSAppleEvent+HandlerTest.applescript"; sourceTree = ""; }; - 8B3590150E8190FA0041E21C /* GTMTestTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTestTimer.h; sourceTree = ""; }; - 8B35901A0E8191750041E21C /* GTMTestTimerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTestTimerTest.m; sourceTree = ""; }; - 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMValidatingContainers.h; sourceTree = ""; }; - 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainers.m; sourceTree = ""; }; - 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainersTest.m; sourceTree = ""; }; - 8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCarbonEventTest.m; sourceTree = ""; }; - 8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCarbonEvent.m; sourceTree = ""; }; - 8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCarbonEvent.h; sourceTree = ""; }; - 8B45A0280DA4696C001148C5 /* UnitTest - UnitTesting.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest - UnitTesting.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; - 8B45A2670DA498A0001148C5 /* GTMUnitTestingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestingUtilities.h; sourceTree = ""; }; - 8B45A2680DA498A0001148C5 /* GTMUnitTestingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestingUtilities.m; sourceTree = ""; }; - 8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GTMUIUnitTestingHarness.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8B45A2A60DA49C47001148C5 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; - 8B45A2A70DA49C47001148C5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8B45A2A80DA49C47001148C5 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GTMUnitTestingTest.nib; sourceTree = ""; }; - 8B45A2E00DA51ABC001148C5 /* GTMUnitTestingTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestingTest.h; sourceTree = ""; }; - 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestingTest.m; sourceTree = ""; }; - 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingWindow.gtmUTState; sourceTree = ""; }; - 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingTestApp.gtmUTState; sourceTree = ""; }; - 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUnitTestingImage.gtmUTState; sourceTree = ""; }; - 8B55479A0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMAppKit+UnitTesting.h"; sourceTree = ""; }; - 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMAppKit+UnitTesting.m"; sourceTree = ""; }; - 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGetURLHandler.m; sourceTree = ""; }; - 8B61FDBF0E4CDB8000FF9C21 /* GTMStackTrace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTrace.m; sourceTree = ""; }; - 8B6C15910F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+KeyValueObserving.h"; sourceTree = ""; }; - 8B6C15920F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+KeyValueObserving.m"; sourceTree = ""; }; - 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+KeyValueObservingTest.m"; sourceTree = ""; }; - 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = ""; }; - 8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheckTest.m; sourceTree = ""; }; - 8B6F31F40DA3489B0052CA40 /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = ""; }; - 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = ""; }; - 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2RuntimeTest.m; sourceTree = ""; }; - 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = ""; }; - 8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugThreadValidation.h; sourceTree = ""; }; - 8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidation.m; sourceTree = ""; }; - 8B726BD00D91C0860090C251 /* GTMCALayer+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMCALayer+UnitTesting.m"; sourceTree = ""; }; - 8B726BD10D91C0860090C251 /* GTMCALayer+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMCALayer+UnitTesting.h"; sourceTree = ""; }; - 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+ShadingTest.tiff"; sourceTree = ""; }; - 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.tiff"; sourceTree = ""; }; - 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.tiff"; sourceTree = ""; }; - 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestingBindingTest.m; sourceTree = ""; }; - 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDevLogUnitTestingBridge.m; sourceTree = ""; }; - 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = ""; }; - 8B7DCBF00DFF1A610017E983 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = ""; }; - 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = ""; }; - 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGetURLHandlerTest.m; sourceTree = ""; }; - 8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Carbon.h"; sourceTree = ""; }; - 8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Carbon.m"; sourceTree = ""; }; - 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+CarbonTest.m"; sourceTree = ""; }; - 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSWorkspace+Running.m"; sourceTree = ""; }; - 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSWorkspace+Running.h"; sourceTree = ""; }; - 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSWorkspace+RunningTest.m"; sourceTree = ""; }; - 8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - 8BC04D140DB0061300C2D1CA /* RunMacOSUnitTests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunMacOSUnitTests.sh; sourceTree = ""; }; - 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFourCharCode.m; sourceTree = ""; }; - 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFourCharCodeTest.m; sourceTree = ""; }; - 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFourCharCode.h; sourceTree = ""; }; - 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidationTest.m; sourceTree = ""; }; - 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.x86_64.tiff"; sourceTree = ""; }; - 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingImage.tiff; sourceTree = ""; }; - 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingWindow.tiff; sourceTree = ""; }; - 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = GTMUnitTestingView.tiff; sourceTree = ""; }; - F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Path.h"; sourceTree = ""; }; - F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Path.m"; sourceTree = ""; }; - F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+PathTest.m"; sourceTree = ""; }; - F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLightweightProxy.h; sourceTree = ""; }; - F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxy.m; sourceTree = ""; }; - F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxyTest.m; sourceTree = ""; }; - F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSignalHandler.h; sourceTree = ""; }; - F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSignalHandler.m; sourceTree = ""; }; - F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSignalHandlerTest.m; sourceTree = ""; }; - F41D25880DBD21A300774EEB /* GTMBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMBase64.h; sourceTree = ""; }; - F41D25890DBD21A300774EEB /* GTMBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64.m; sourceTree = ""; }; - F41D258A0DBD21A300774EEB /* GTMBase64Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64Test.m; sourceTree = ""; }; - F42597450E23AA57003BEA3E /* GTMNSString+Replace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+Replace.h"; sourceTree = ""; }; - F42597460E23AA57003BEA3E /* GTMNSString+Replace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+Replace.m"; sourceTree = ""; }; - F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+ReplaceTest.m"; sourceTree = ""; }; - F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+FindFolder.h"; sourceTree = ""; }; - F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+FindFolder.m"; sourceTree = ""; }; - F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+FindFolderTest.m"; sourceTree = ""; }; - F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSBezierPath+CGPath.h"; sourceTree = ""; }; - F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+CGPath.m"; sourceTree = ""; }; - F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+CGPathTest.m"; sourceTree = ""; }; - F42E08210D19987200D5DDE0 /* UnitTest - Foundation.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest - Foundation.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; - F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GoogleToolboxForMac.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F42E086E0D199A5B00D5DDE0 /* GTM-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GTM-Info.plist"; sourceTree = ""; }; - F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; - F431221A0DD4E3B800F45252 /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = ""; }; - F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTraceTest.m; sourceTree = ""; }; - F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.ppc64.tiff"; sourceTree = ""; }; - F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+CGPathTest.x86_64.tiff"; sourceTree = ""; }; - F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "GTMNSBezierPath+RoundRectTest.ppc64.tiff"; sourceTree = ""; }; - F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = ""; }; - F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = ""; }; - F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegexTest.m; sourceTree = ""; }; - F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoginItems.h; sourceTree = ""; }; - F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItems.m; sourceTree = ""; }; - F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItemsTest.m; sourceTree = ""; }; - F43E44770D4918B20041161F /* GTMLinearRGBShading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLinearRGBShading.h; sourceTree = ""; }; - F43E44780D4918B20041161F /* GTMLinearRGBShading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLinearRGBShading.m; sourceTree = ""; }; - F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLinearRGBShadingTest.m; sourceTree = ""; }; - F43E4C250D4E361D0041161F /* GTMNSString+XML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+XML.h"; sourceTree = ""; }; - F43E4C260D4E361D0041161F /* GTMNSString+XML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XML.m"; sourceTree = ""; }; - F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XMLTest.m"; sourceTree = ""; }; - F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSEnumerator+Filter.h"; sourceTree = ""; }; - F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+Filter.m"; sourceTree = ""; }; - F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+FilterTest.m"; sourceTree = ""; }; - F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSData+zlib.h"; sourceTree = ""; }; - F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlib.m"; sourceTree = ""; }; - F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlibTest.m"; sourceTree = ""; }; - F43E4F6C0D4E60C50041161F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; - F440EDB70DFECC4B0003E81F /* BuildingAndUsing.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BuildingAndUsing.txt; sourceTree = ""; }; - F47A79850D746EE9002302AB /* GTMScriptRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMScriptRunner.h; sourceTree = ""; }; - F47A79860D746EE9002302AB /* GTMScriptRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMScriptRunner.m; sourceTree = ""; }; - F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMScriptRunnerTest.m; sourceTree = ""; }; - F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSBezierPath+Shading.h"; sourceTree = ""; }; - F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+Shading.m"; sourceTree = ""; }; - F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+ShadingTest.m"; sourceTree = ""; }; - F47F1C740D490E5C00925B8F /* GTMShading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMShading.h; sourceTree = ""; }; - F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCalculatedRange.h; sourceTree = ""; }; - F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRange.m; sourceTree = ""; }; - F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRangeTest.m; sourceTree = ""; }; - F48B91040D94487D00D45044 /* libgcov_readme.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = libgcov_readme.html; sourceTree = ""; }; - F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugTigerOrLater.xcconfig; sourceTree = ""; }; - F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugUnittest.xcconfig; sourceTree = ""; }; - F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundle.xcconfig; sourceTree = ""; }; - F48FE2440D197F9A009257D2 /* ReleaseTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseTigerOrLater.xcconfig; sourceTree = ""; }; - F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseUnittest.xcconfig; sourceTree = ""; }; - F48FE2460D197F9A009257D2 /* SharedLibrary.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SharedLibrary.xcconfig; sourceTree = ""; }; - F48FE2470D197F9A009257D2 /* StaticLibrary.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibrary.xcconfig; sourceTree = ""; }; - F48FE2640D198C1E009257D2 /* UnitTest - AppKit.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTest - AppKit.octest"; sourceTree = BUILT_PRODUCTS_DIR; }; - F48FE26E0D198CAD009257D2 /* UnitTest-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "UnitTest-Info.plist"; sourceTree = ""; }; - F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDelegatingTableColumn.h; sourceTree = ""; }; - F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDelegatingTableColumn.m; sourceTree = ""; }; - F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGeometryUtils.h; sourceTree = ""; }; - F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtils.m; sourceTree = ""; }; - F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtilsTest.m; sourceTree = ""; }; - F48FE2810D198D0E009257D2 /* GTMNSBezierPath+RoundRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSBezierPath+RoundRect.h"; sourceTree = ""; }; - F48FE2820D198D0E009257D2 /* GTMNSBezierPath+RoundRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+RoundRect.m"; sourceTree = ""; }; - F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSBezierPath+RoundRectTest.m"; sourceTree = ""; }; - F48FE28D0D198D24009257D2 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGarbageCollection.h; sourceTree = ""; }; - F48FE28E0D198D24009257D2 /* GTMNSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+HTML.h"; sourceTree = ""; }; - F48FE28F0D198D24009257D2 /* GTMNSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTML.m"; sourceTree = ""; }; - F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTMLTest.m"; sourceTree = ""; }; - F48FE2910D198D24009257D2 /* GTMObjectSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjectSingleton.h; sourceTree = ""; }; - F48FE2920D198D24009257D2 /* GTMSystemVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSystemVersion.h; sourceTree = ""; }; - F48FE2930D198D24009257D2 /* GTMSystemVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersion.m; sourceTree = ""; }; - F48FE29B0D198D36009257D2 /* GTMNSObject+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+UnitTesting.h"; sourceTree = ""; }; - F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+UnitTesting.m"; sourceTree = ""; }; - F48FE29F0D198D36009257D2 /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = ""; }; - F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersionTest.m; sourceTree = ""; }; - F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMFileSystemKQueue.h; sourceTree = ""; }; - F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFileSystemKQueue.m; sourceTree = ""; }; - F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMFileSystemKQueueTest.m; sourceTree = ""; }; - F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHotKeyTextField.h; sourceTree = ""; }; - F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHotKeyTextField.m; sourceTree = ""; }; - F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHotKeyTextFieldTest.m; sourceTree = ""; }; - F4BC1C860DDDD45D00108B7D /* GTMHTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPServer.h; sourceTree = ""; }; - F4BC1C870DDDD45D00108B7D /* GTMHTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPServer.m; sourceTree = ""; }; - F4BC1E8C0DE1FC4A00108B7D /* GTMHTTPServerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPServerTest.m; sourceTree = ""; }; - F4BC22CF0DE4C39000108B7D /* GTMTestHTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTestHTTPServer.h; sourceTree = ""; }; - F4BC22D00DE4C39000108B7D /* GTMTestHTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTestHTTPServer.m; sourceTree = ""; }; - F4C978090D5B79C7001C29A6 /* ReleaseNotes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReleaseNotes.txt; sourceTree = ""; }; - F4CA854E0DAFAAB600B4AB10 /* xcconfigs-readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xcconfigs-readme.txt"; sourceTree = ""; }; - F4CA864A0DB3ACB200B4AB10 /* DebugLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugLeopardOrLater.xcconfig; sourceTree = ""; }; - F4CA864B0DB3ACB200B4AB10 /* ReleaseLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseLeopardOrLater.xcconfig; sourceTree = ""; }; - F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundleGCSupported.xcconfig; sourceTree = ""; }; - F4CA864D0DB3ACD200B4AB10 /* SharedLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = SharedLibraryGCSupported.xcconfig; sourceTree = ""; }; - F4CA864E0DB3ACD200B4AB10 /* StaticLibraryGCSupported.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryGCSupported.xcconfig; sourceTree = ""; }; - F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugSelectorValidation.h; sourceTree = ""; }; - F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoggerRingBufferWriter.h; sourceTree = ""; }; - F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriter.m; sourceTree = ""; }; - F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriterTest.m; sourceTree = ""; }; - F95B567B0F46208E0051A6F1 /* GTMSQLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSQLite.h; sourceTree = ""; }; - F95B567C0F46208E0051A6F1 /* GTMSQLite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSQLite.m; sourceTree = ""; }; - F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSQLiteTest.m; sourceTree = ""; }; - F98680AF0E2C15C300CEE8BF /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = ""; }; - F98680B00E2C15C300CEE8BF /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = ""; }; - F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerTest.m; sourceTree = ""; }; - F98681670E2C1E3A00CEE8BF /* GTMLogger+ASL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMLogger+ASL.h"; sourceTree = ""; }; - F98681680E2C1E3A00CEE8BF /* GTMLogger+ASL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMLogger+ASL.m"; sourceTree = ""; }; - F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMLogger+ASLTest.m"; sourceTree = ""; }; - F99161B40F0B151400213D3B /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = /usr/lib/libsqlite3.dylib; sourceTree = ""; }; - F9FD945C0E1D30F80005867E /* GTMPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPath.m; sourceTree = ""; }; - F9FD945D0E1D30F80005867E /* GTMPathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPathTest.m; sourceTree = ""; }; - F9FD945E0E1D30F80005867E /* GTMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMPath.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8B45A0250DA4696C001148C5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A2040DA46DF6001148C5 /* Cocoa.framework in Frameworks */, - 8B45A0B80DA46A2F001148C5 /* SenTestingKit.framework in Frameworks */, - 8B45A03A0DA46A2A001148C5 /* Foundation.framework in Frameworks */, - 8B45A19A0DA46AAA001148C5 /* QuartzCore.framework in Frameworks */, - 8B7DCBA50DFF0EFF0017E983 /* GoogleToolboxForMac.framework in Frameworks */, - 8B3E2A3F0EEB564D000681D8 /* Carbon.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8B45A2880DA49B99001148C5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A2B30DA49CA9001148C5 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E081C0D19987200D5DDE0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F42E08640D199A2F00D5DDE0 /* Foundation.framework in Frameworks */, - F42E08800D199AB500D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */, - F42E089D0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */, - 8BC046B90DAE8C4B00C2D1CA /* ApplicationServices.framework in Frameworks */, - F99161B50F0B151400213D3B /* libsqlite3.dylib in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E086B0D199A5B00D5DDE0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F99163270F14100F00213D3B /* libsqlite3.dylib in Frameworks */, - F42E095E0D199BD600D5DDE0 /* Cocoa.framework in Frameworks */, - F42E09AE0D19A62F00D5DDE0 /* Carbon.framework in Frameworks */, - F43E4F6D0D4E60C50041161F /* libz.dylib in Frameworks */, - 8B4D78080E40AFFA00EFEDD8 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F48FE2610D198C1E009257D2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F42E08610D199A2B00D5DDE0 /* Cocoa.framework in Frameworks */, - F42E087F0D199AB400D5DDE0 /* GoogleToolboxForMac.framework in Frameworks */, - F42E089C0D199B1800D5DDE0 /* SenTestingKit.framework in Frameworks */, - 8B8B10F90EEB8B9E00E543D0 /* Carbon.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DFFF38A50411DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - F48FE2640D198C1E009257D2 /* UnitTest - AppKit.octest */, - F42E08210D19987200D5DDE0 /* UnitTest - Foundation.octest */, - F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */, - 8B45A0280DA4696C001148C5 /* UnitTest - UnitTesting.octest */, - 8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* GTM */ = { - isa = PBXGroup; - children = ( - F4C978090D5B79C7001C29A6 /* ReleaseNotes.txt */, - F440EDB70DFECC4B0003E81F /* BuildingAndUsing.txt */, - 8B1A16050D90344B00CA1E8E /* GTMDefines.h */, - F48FE26F0D198CBA009257D2 /* AppKit */, - F48FE2720D198CCE009257D2 /* Foundation */, - F4FF22760D9D47FB003880AC /* DebugUtils */, - F48FE2770D198CEA009257D2 /* UnitTesting */, - F48FE23E0D197F70009257D2 /* XcodeConfig */, - F48B91030D94485500D45044 /* TigerGcov */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 84D99F350EA661C900C007D5 /* BuildScripts */, - 034768DFFF38A50411DB9C8B /* Products */, - 32DBCF5E0370ADEE00C91783 /* GTM_Prefix.pch */, - F42E086E0D199A5B00D5DDE0 /* GTM-Info.plist */, - F48FE26E0D198CAD009257D2 /* UnitTest-Info.plist */, - ); - name = GTM; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - F99161B40F0B151400213D3B /* libsqlite3.dylib */, - 8B45A1990DA46AAA001148C5 /* QuartzCore.framework */, - F43E4F6C0D4E60C50041161F /* libz.dylib */, - 0867D6A5FE840307C02AAC07 /* AppKit.framework */, - F42E09AD0D19A62F00D5DDE0 /* Carbon.framework */, - 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */, - 0867D69BFE84028FC02AAC07 /* Foundation.framework */, - 8BC046B80DAE8C4B00C2D1CA /* ApplicationServices.framework */, - F42E089B0D199B1800D5DDE0 /* SenTestingKit.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 84D99F350EA661C900C007D5 /* BuildScripts */ = { - isa = PBXGroup; - children = ( - 84D99F360EA661C900C007D5 /* BuildAllSDKs.sh */, - ); - path = BuildScripts; - sourceTree = ""; - }; - 8B45A2A20DA49C47001148C5 /* GTMUIUnitTestingHarness */ = { - isa = PBXGroup; - children = ( - 8B45A2A50DA49C47001148C5 /* MainMenu.nib */, - 8B45A2A70DA49C47001148C5 /* Info.plist */, - 8B45A2A80DA49C47001148C5 /* main.m */, - ); - path = GTMUIUnitTestingHarness; - sourceTree = ""; - }; - F435E46C0DC8F23A0069CDE8 /* TestData */ = { - isa = PBXGroup; - children = ( - 84B91B890EA3CC2E0087500F /* GTMUnitTestingImage.10.6.0.tiff */, - 84B91B8A0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.0.tiff */, - 8B2789950EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff */, - 8B45A2DE0DA51A7E001148C5 /* GTMUnitTestingTest.nib */, - 8B45A6B90DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState */, - 8B45A5F50DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState */, - 8B45A5F60DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState */, - 8BEEA90A0DA7446300894774 /* GTMUnitTestingImage.tiff */, - 8BEEA90B0DA7446300894774 /* GTMUnitTestingWindow.tiff */, - 8BEEA90C0DA7446300894774 /* GTMUnitTestingView.tiff */, - ); - path = TestData; - sourceTree = ""; - }; - F435E4840DC8F3DC0069CDE8 /* TestData */ = { - isa = PBXGroup; - children = ( - 8B1802410E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState */, - 8B1801A80E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState */, - 8B1801AC0E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState */, - 8B1801AD0E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState */, - 8B7AD4980DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff */, - F435DE7A0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff */, - F435DE7B0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff */, - 8B7AD4990DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff */, - F435DE8A0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff */, - 8BE869720DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff */, - 8B7AD4970DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff */, - ); - path = TestData; - sourceTree = ""; - }; - F48B91030D94485500D45044 /* TigerGcov */ = { - isa = PBXGroup; - children = ( - F48B91040D94487D00D45044 /* libgcov_readme.html */, - ); - path = TigerGcov; - sourceTree = ""; - }; - F48FE23E0D197F70009257D2 /* XcodeConfig */ = { - isa = PBXGroup; - children = ( - F4CA854E0DAFAAB600B4AB10 /* xcconfigs-readme.txt */, - F4CA852B0DAFA92A00B4AB10 /* Project */, - F4CA852E0DAFA92F00B4AB10 /* Target */, - ); - path = XcodeConfig; - sourceTree = ""; - }; - F48FE26F0D198CBA009257D2 /* AppKit */ = { - isa = PBXGroup; - children = ( - 8B3E292B0EEB53F3000681D8 /* GTMCarbonEvent.h */, - 8B3E292A0EEB53F3000681D8 /* GTMCarbonEvent.m */, - 8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */, - F48FE27C0D198D0E009257D2 /* GTMDelegatingTableColumn.h */, - F48FE27D0D198D0E009257D2 /* GTMDelegatingTableColumn.m */, - 8B58E9940E547EB000A0E02E /* GTMGetURLHandler.m */, - 8B8B10FF0EEB8CD000E543D0 /* GTMGetURLHandlerTest.m */, - F4A420EC0EDDF8E000397A11 /* GTMHotKeyTextField.h */, - F4A420ED0EDDF8E000397A11 /* GTMHotKeyTextField.m */, - F4A420EE0EDDF8E000397A11 /* GTMHotKeyTextFieldTest.m */, - 8B1801A10E2533D500280961 /* GTMLargeTypeWindow.h */, - 8B1801A00E2533D500280961 /* GTMLargeTypeWindow.m */, - 8B1801A40E2533DB00280961 /* GTMLargeTypeWindowTest.m */, - F43E44770D4918B20041161F /* GTMLinearRGBShading.h */, - F43E44780D4918B20041161F /* GTMLinearRGBShading.m */, - F43E44790D4918B20041161F /* GTMLinearRGBShadingTest.m */, - F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */, - F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */, - F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */, - F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */, - F428FF000D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m */, - F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */, - F48FE2810D198D0E009257D2 /* GTMNSBezierPath+RoundRect.h */, - F48FE2820D198D0E009257D2 /* GTMNSBezierPath+RoundRect.m */, - F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */, - F47F1C0D0D490BC000925B8F /* GTMNSBezierPath+Shading.h */, - F47F1C0E0D490BC000925B8F /* GTMNSBezierPath+Shading.m */, - F47F1C110D490BC000925B8F /* GTMNSBezierPath+ShadingTest.m */, - 7F511DF30F4B0378009F41B6 /* GTMNSColor+Luminance.h */, - 7F511DF40F4B0378009F41B6 /* GTMNSColor+Luminance.m */, - 7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */, - 7F3EB38C0E5E09C700A7A75E /* GTMNSImage+Scaling.h */, - 7F3EB38D0E5E09C700A7A75E /* GTMNSImage+Scaling.m */, - 7F3EB3930E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m */, - 8BA01B5B0F144BD800926923 /* GTMNSWorkspace+Running.m */, - 8BA01B5C0F144BD800926923 /* GTMNSWorkspace+Running.h */, - 8BA01B5F0F144BE500926923 /* GTMNSWorkspace+RunningTest.m */, - 7F511DF60F4B0378009F41B6 /* GTMTheme.h */, - 7F511DF80F4B0378009F41B6 /* GTMTheme.m */, - 7F511DF70F4B0378009F41B6 /* GTMThemeTest.m */, - F47F1C740D490E5C00925B8F /* GTMShading.h */, - F435E4840DC8F3DC0069CDE8 /* TestData */, - ); - path = AppKit; - sourceTree = ""; - }; - F48FE2720D198CCE009257D2 /* Foundation */ = { - isa = PBXGroup; - children = ( - F95B567B0F46208E0051A6F1 /* GTMSQLite.h */, - F95B567C0F46208E0051A6F1 /* GTMSQLite.m */, - F95B567D0F46208E0051A6F1 /* GTMSQLiteTest.m */, - 8B3344170DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m */, - 8B3344180DBF7A36009FD32C /* GTMNSAppleScript+Handler.m */, - 8B3344190DBF7A36009FD32C /* GTMNSAppleScript+Handler.h */, - 8B3344200DBF7A36009FD32C /* GTMNSAppleEvent+HandlerTest.applescript */, - 8B33441A0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m */, - 8B33441B0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.m */, - 8B33441C0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Handler.h */, - 8B33441D0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m */, - 8B33441E0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.m */, - 8B33441F0DBF7A36009FD32C /* GTMNSAppleEventDescriptor+Foundation.h */, - 1012DF540F4252BD004794DB /* GTMAbstractDOListener.h */, - 1012DF550F4252BD004794DB /* GTMAbstractDOListener.m */, - 1012DF590F425525004794DB /* GTMAbstractDOListenerTest.m */, - F41D25880DBD21A300774EEB /* GTMBase64.h */, - F41D25890DBD21A300774EEB /* GTMBase64.m */, - F41D258A0DBD21A300774EEB /* GTMBase64Test.m */, - 8B1B49160E5F8E2100A08972 /* GTMExceptionalInlines.h */, - 8B1B49170E5F8E2100A08972 /* GTMExceptionalInlines.m */, - 8B1B491B0E5F904C00A08972 /* GTMExceptionalInlinesTest.m */, - F49FA8420EEF2AB700077669 /* GTMFileSystemKQueue.h */, - F49FA8430EEF2AB700077669 /* GTMFileSystemKQueue.m */, - F49FA88A0EEF303D00077669 /* GTMFileSystemKQueueTest.m */, - 8BE2836B0DED0F130035B3F8 /* GTMFourCharCode.m */, - 8BE2836C0DED0F130035B3F8 /* GTMFourCharCodeTest.m */, - 8BE2836D0DED0F130035B3F8 /* GTMFourCharCode.h */, - F48FE27E0D198D0E009257D2 /* GTMGeometryUtils.h */, - F48FE27F0D198D0E009257D2 /* GTMGeometryUtils.m */, - F48FE2800D198D0E009257D2 /* GTMGeometryUtilsTest.m */, - F47F1D2D0D4914AD00925B8F /* GTMCalculatedRange.h */, - F47F1D2E0D4914AD00925B8F /* GTMCalculatedRange.m */, - F47F1D2F0D4914AD00925B8F /* GTMCalculatedRangeTest.m */, - F48FE28D0D198D24009257D2 /* GTMGarbageCollection.h */, - F4BC1C860DDDD45D00108B7D /* GTMHTTPServer.h */, - F4BC1C870DDDD45D00108B7D /* GTMHTTPServer.m */, - F4BC1E8C0DE1FC4A00108B7D /* GTMHTTPServerTest.m */, - F41711320ECDFBD500B9B276 /* GTMLightweightProxy.h */, - F41711330ECDFBD500B9B276 /* GTMLightweightProxy.m */, - F41711340ECDFBD500B9B276 /* GTMLightweightProxyTest.m */, - F98680AF0E2C15C300CEE8BF /* GTMLogger.h */, - F98680B00E2C15C300CEE8BF /* GTMLogger.m */, - F98680B10E2C15C300CEE8BF /* GTMLoggerTest.m */, - F98681670E2C1E3A00CEE8BF /* GTMLogger+ASL.h */, - F98681680E2C1E3A00CEE8BF /* GTMLogger+ASL.m */, - F98681950E2C20C100CEE8BF /* GTMLogger+ASLTest.m */, - F95803F60E2FB0760049A088 /* GTMLoggerRingBufferWriter.h */, - F95803F70E2FB0760049A088 /* GTMLoggerRingBufferWriter.m */, - F95803F80E2FB0760049A088 /* GTMLoggerRingBufferWriterTest.m */, - 6294453E0EDDF647009295EA /* GTMNSArray+Merge.h */, - 6294453F0EDDF647009295EA /* GTMNSArray+Merge.m */, - 6294454B0EDDF89A009295EA /* GTMNSArray+MergeTest.m */, - 33C374360DD8D44800E97817 /* GTMNSDictionary+URLArguments.h */, - 33C374370DD8D44800E97817 /* GTMNSDictionary+URLArguments.m */, - 33C3745E0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m */, - F43E4DD60D4E56320041161F /* GTMNSEnumerator+Filter.h */, - F43E4DD70D4E56320041161F /* GTMNSEnumerator+Filter.m */, - F43E4DD80D4E56320041161F /* GTMNSEnumerator+FilterTest.m */, - 8B8EC87B0EF17C270044D13F /* GTMNSFileManager+Carbon.h */, - 8B8EC87C0EF17C270044D13F /* GTMNSFileManager+Carbon.m */, - 8B8EC87F0EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m */, - F413908C0D75F63C00F72B31 /* GTMNSFileManager+Path.h */, - F413908D0D75F63C00F72B31 /* GTMNSFileManager+Path.m */, - F413908E0D75F63C00F72B31 /* GTMNSFileManager+PathTest.m */, - 8B6C15910F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h */, - 8B6C15920F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m */, - 8B6C161B0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m */, - F42597760E23FE3A003BEA3E /* GTMNSString+FindFolder.h */, - F42597770E23FE3A003BEA3E /* GTMNSString+FindFolder.m */, - F42597780E23FE3A003BEA3E /* GTMNSString+FindFolderTest.m */, - F48FE28E0D198D24009257D2 /* GTMNSString+HTML.h */, - F48FE28F0D198D24009257D2 /* GTMNSString+HTML.m */, - F48FE2900D198D24009257D2 /* GTMNSString+HTMLTest.m */, - F42597450E23AA57003BEA3E /* GTMNSString+Replace.h */, - F42597460E23AA57003BEA3E /* GTMNSString+Replace.m */, - F42597470E23AA57003BEA3E /* GTMNSString+ReplaceTest.m */, - 33C372A40DD8A88500E97817 /* GTMNSString+URLArguments.h */, - 33C372A50DD8A88500E97817 /* GTMNSString+URLArguments.m */, - 33C372AE0DD8A8D700E97817 /* GTMNSString+URLArgumentsTest.m */, - F43E4C250D4E361D0041161F /* GTMNSString+XML.h */, - F43E4C260D4E361D0041161F /* GTMNSString+XML.m */, - F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */, - F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */, - F43E4E5F0D4E5EC90041161F /* GTMNSData+zlib.m */, - F43E4E600D4E5EC90041161F /* GTMNSData+zlibTest.m */, - 8B6F32040DA34A1B0052CA40 /* GTMObjC2Runtime.m */, - 8B6F32050DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m */, - 8B6F32060DA34A1B0052CA40 /* GTMObjC2Runtime.h */, - F48FE2910D198D24009257D2 /* GTMObjectSingleton.h */, - F9FD945E0E1D30F80005867E /* GTMPath.h */, - F9FD945C0E1D30F80005867E /* GTMPath.m */, - F9FD945D0E1D30F80005867E /* GTMPathTest.m */, - F437F55A0D50BC0A00F5C3A4 /* GTMRegex.h */, - F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */, - F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */, - F47A79850D746EE9002302AB /* GTMScriptRunner.h */, - F47A79860D746EE9002302AB /* GTMScriptRunner.m */, - F47A79870D746EE9002302AB /* GTMScriptRunnerTest.m */, - F41A6F7F0E02EC3600788A6C /* GTMSignalHandler.h */, - F41A6F800E02EC3600788A6C /* GTMSignalHandler.m */, - F41A6F810E02EC3600788A6C /* GTMSignalHandlerTest.m */, - 8B61FDBF0E4CDB8000FF9C21 /* GTMStackTrace.m */, - F431221A0DD4E3B800F45252 /* GTMStackTrace.h */, - F431221B0DD4E3B800F45252 /* GTMStackTraceTest.m */, - F48FE2920D198D24009257D2 /* GTMSystemVersion.h */, - F48FE2930D198D24009257D2 /* GTMSystemVersion.m */, - F48FE2E10D198E4C009257D2 /* GTMSystemVersionTest.m */, - 10A4028D0F44DB2B003B511C /* GTMTransientRootProxyTest.m */, - 10A4028E0F44DB2B003B511C /* GTMTransientRootProxy.m */, - 10A4028F0F44DB2B003B511C /* GTMTransientRootProxy.h */, - 108930840F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m */, - 10998EF20F4B5D1A007F179D /* GTMTransientRootPortProxy.m */, - 10998EF30F4B5D1A007F179D /* GTMTransientRootPortProxy.h */, - 8B3AA9EF0E033E23007E31B5 /* GTMValidatingContainers.h */, - 8B3AA9F00E033E23007E31B5 /* GTMValidatingContainers.m */, - 8B3AA9F70E033E5F007E31B5 /* GTMValidatingContainersTest.m */, - ); - path = Foundation; - sourceTree = ""; - }; - F48FE2770D198CEA009257D2 /* UnitTesting */ = { - isa = PBXGroup; - children = ( - 8B55479A0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.h */, - 8B55479B0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m */, - 8B726BD10D91C0860090C251 /* GTMCALayer+UnitTesting.h */, - 8B726BD00D91C0860090C251 /* GTMCALayer+UnitTesting.m */, - 8B7DCBE10DFF18720017E983 /* GTMDevLogUnitTestingBridge.m */, - 8B1A14EA0D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.h */, - 8B1A14E90D900BC800CA1E8E /* GTMNSObject+BindingUnitTesting.m */, - F48FE29B0D198D36009257D2 /* GTMNSObject+UnitTesting.h */, - F48FE29C0D198D36009257D2 /* GTMNSObject+UnitTesting.m */, - F48FE29F0D198D36009257D2 /* GTMSenTestCase.h */, - 8B7DCE180DFF39850017E983 /* GTMSenTestCase.m */, - F4BC22CF0DE4C39000108B7D /* GTMTestHTTPServer.h */, - F4BC22D00DE4C39000108B7D /* GTMTestHTTPServer.m */, - 8B3590150E8190FA0041E21C /* GTMTestTimer.h */, - 8B35901A0E8191750041E21C /* GTMTestTimerTest.m */, - 8B7DCBF00DFF1A610017E983 /* GTMUnitTestDevLog.h */, - 8B7DCBEC0DFF1A4F0017E983 /* GTMUnitTestDevLog.m */, - 8B7AD4AD0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m */, - 8B45A2E00DA51ABC001148C5 /* GTMUnitTestingTest.h */, - 8B45A2E10DA51ABC001148C5 /* GTMUnitTestingTest.m */, - 8B45A2670DA498A0001148C5 /* GTMUnitTestingUtilities.h */, - 8B45A2680DA498A0001148C5 /* GTMUnitTestingUtilities.m */, - 8BC04D140DB0061300C2D1CA /* RunMacOSUnitTests.sh */, - 8B45A2A20DA49C47001148C5 /* GTMUIUnitTestingHarness */, - F435E46C0DC8F23A0069CDE8 /* TestData */, - ); - path = UnitTesting; - sourceTree = ""; - }; - F4CA852B0DAFA92A00B4AB10 /* Project */ = { - isa = PBXGroup; - children = ( - 848269C80E9FF4BD006E6D9C /* DebugSnowLeopardOrLater.xcconfig */, - F4CA864A0DB3ACB200B4AB10 /* DebugLeopardOrLater.xcconfig */, - F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */, - 848269C90E9FF4BD006E6D9C /* ReleaseSnowLeopardOrLater.xcconfig */, - F4CA864B0DB3ACB200B4AB10 /* ReleaseLeopardOrLater.xcconfig */, - F48FE2440D197F9A009257D2 /* ReleaseTigerOrLater.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; - F4CA852E0DAFA92F00B4AB10 /* Target */ = { - isa = PBXGroup; - children = ( - F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */, - F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */, - F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */, - F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */, - F48FE2460D197F9A009257D2 /* SharedLibrary.xcconfig */, - F4CA864D0DB3ACD200B4AB10 /* SharedLibraryGCSupported.xcconfig */, - F48FE2470D197F9A009257D2 /* StaticLibrary.xcconfig */, - F4CA864E0DB3ACD200B4AB10 /* StaticLibraryGCSupported.xcconfig */, - ); - path = Target; - sourceTree = ""; - }; - F4FF22760D9D47FB003880AC /* DebugUtils */ = { - isa = PBXGroup; - children = ( - F4FF22770D9D4835003880AC /* GTMDebugSelectorValidation.h */, - 8B6F31EF0DA347720052CA40 /* GTMMethodCheck.m */, - 8B6F31F40DA3489B0052CA40 /* GTMMethodCheck.h */, - 8B6F31F10DA347720052CA40 /* GTMMethodCheckTest.m */, - 8B6F4B610E8856CA00425D9F /* GTMDebugThreadValidation.h */, - 8B6F4B620E8856CA00425D9F /* GTMDebugThreadValidation.m */, - 8BE839A80E8AF72500C611B0 /* GTMDebugThreadValidationTest.m */, - ); - path = DebugUtils; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - F42E08680D199A5B00D5DDE0 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F93207DE0F4B82DB005F37EA /* GTMSQLite.h in Headers */, - F42E09490D199BBF00D5DDE0 /* GTMDelegatingTableColumn.h in Headers */, - F42E094B0D199BBF00D5DDE0 /* GTMGarbageCollection.h in Headers */, - F42E094C0D199BBF00D5DDE0 /* GTMGeometryUtils.h in Headers */, - F42E094F0D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.h in Headers */, - F42E09510D199BBF00D5DDE0 /* GTMNSString+HTML.h in Headers */, - F42E09530D199BBF00D5DDE0 /* GTMObjectSingleton.h in Headers */, - F42E09540D199BBF00D5DDE0 /* GTMSystemVersion.h in Headers */, - F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */, - F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */, - F47F1C120D490BC000925B8F /* GTMNSBezierPath+Shading.h in Headers */, - F47F1C750D490E5C00925B8F /* GTMShading.h in Headers */, - F47F1D300D4914AD00925B8F /* GTMCalculatedRange.h in Headers */, - F43E447A0D4918B20041161F /* GTMLinearRGBShading.h in Headers */, - F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */, - F43E4DD90D4E56320041161F /* GTMNSEnumerator+Filter.h in Headers */, - F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */, - F437F55D0D50BC0A00F5C3A4 /* GTMRegex.h in Headers */, - F47A79880D746EE9002302AB /* GTMScriptRunner.h in Headers */, - F413908F0D75F63C00F72B31 /* GTMNSFileManager+Path.h in Headers */, - F424F75F0D9AF019000B87EF /* GTMDefines.h in Headers */, - F4FF22780D9D4835003880AC /* GTMDebugSelectorValidation.h in Headers */, - F4CA854F0DAFAAF600B4AB10 /* GTMObjC2Runtime.h in Headers */, - 8BC04CD80DB003D800C2D1CA /* GTMMethodCheck.h in Headers */, - F41D258B0DBD21A300774EEB /* GTMBase64.h in Headers */, - F431221D0DD4E3B800F45252 /* GTMStackTrace.h in Headers */, - 33C372A60DD8A88500E97817 /* GTMNSString+URLArguments.h in Headers */, - 33C374380DD8D44800E97817 /* GTMNSDictionary+URLArguments.h in Headers */, - F4BC1C880DDDD45D00108B7D /* GTMHTTPServer.h in Headers */, - 8BE281B00DEC7E930035B3F8 /* GTMNSAppleScript+Handler.h in Headers */, - 8BE281B10DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Handler.h in Headers */, - 8BE281B20DEC7E930035B3F8 /* GTMNSAppleEventDescriptor+Foundation.h in Headers */, - 8BE283730DED13AB0035B3F8 /* GTMFourCharCode.h in Headers */, - F41A6F820E02EC3600788A6C /* GTMSignalHandler.h in Headers */, - 8B3AA9F10E033E23007E31B5 /* GTMValidatingContainers.h in Headers */, - F9FD94CD0E1D50450005867E /* GTMPath.h in Headers */, - F42597480E23AA57003BEA3E /* GTMNSString+Replace.h in Headers */, - F42597790E23FE3A003BEA3E /* GTMNSString+FindFolder.h in Headers */, - 8B1801A30E2533D500280961 /* GTMLargeTypeWindow.h in Headers */, - F92B9FA80E2E64B900A2FE61 /* GTMLogger.h in Headers */, - F92B9FA90E2E64BC00A2FE61 /* GTMLogger+ASL.h in Headers */, - F95803FA0E2FB08F0049A088 /* GTMLoggerRingBufferWriter.h in Headers */, - 8B1B49180E5F8E2100A08972 /* GTMExceptionalInlines.h in Headers */, - 7F3EB38E0E5E09C700A7A75E /* GTMNSImage+Scaling.h in Headers */, - 8B3590160E8190FA0041E21C /* GTMTestTimer.h in Headers */, - 8B6F4B630E8856CA00425D9F /* GTMDebugThreadValidation.h in Headers */, - F41711350ECDFBD500B9B276 /* GTMLightweightProxy.h in Headers */, - 629445400EDDF647009295EA /* GTMNSArray+Merge.h in Headers */, - F4A420EF0EDDF8E000397A11 /* GTMHotKeyTextField.h in Headers */, - 8B3E292F0EEB53F8000681D8 /* GTMCarbonEvent.h in Headers */, - F49FA8440EEF2AB700077669 /* GTMFileSystemKQueue.h in Headers */, - 8B8EC87D0EF17C270044D13F /* GTMNSFileManager+Carbon.h in Headers */, - 8BA01B5E0F144BD800926923 /* GTMNSWorkspace+Running.h in Headers */, - 8B6C15930F356E6400E51E5D /* GTMNSObject+KeyValueObserving.h in Headers */, - 1012DF560F4252BD004794DB /* GTMAbstractDOListener.h in Headers */, - 7F511DF90F4B0378009F41B6 /* GTMNSColor+Luminance.h in Headers */, - 7F511DFC0F4B0378009F41B6 /* GTMTheme.h in Headers */, - 10998E920F4B5952007F179D /* GTMTransientRootProxy.h in Headers */, - 10998EF50F4B5D1A007F179D /* GTMTransientRootPortProxy.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXLegacyTarget section */ - F41A6EE00E02DB4F00788A6C /* Build GTM All SDKs */ = { - isa = PBXLegacyTarget; - buildArgumentsString = GTM; - buildConfigurationList = F41A6EED0E02DB6800788A6C /* Build configuration list for PBXLegacyTarget "Build GTM All SDKs" */; - buildPhases = ( - ); - buildToolPath = BuildScripts/BuildAllSDKs.sh; - buildWorkingDirectory = "$(SRCROOT)"; - dependencies = ( - ); - name = "Build GTM All SDKs"; - passBuildSettingsInEnvironment = 1; - productName = "Build GTM All SDKs"; - }; - F41A6EF80E02DCFC00788A6C /* All UnitTests All SDKs */ = { - isa = PBXLegacyTarget; - buildArgumentsString = "\"All UnitTests\" \"All UnitTests\""; - buildConfigurationList = F41A6F070E02DD1500788A6C /* Build configuration list for PBXLegacyTarget "All UnitTests All SDKs" */; - buildPhases = ( - ); - buildToolPath = BuildScripts/BuildAllSDKs.sh; - buildWorkingDirectory = "$(SRCROOT)"; - dependencies = ( - ); - name = "All UnitTests All SDKs"; - passBuildSettingsInEnvironment = 1; - productName = "All UnitTests All SDKs"; - }; -/* End PBXLegacyTarget section */ - -/* Begin PBXNativeTarget section */ - 8B45A0270DA4696C001148C5 /* UnitTest - UnitTesting */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8B45A02D0DA4696D001148C5 /* Build configuration list for PBXNativeTarget "UnitTest - UnitTesting" */; - buildPhases = ( - 8B45A0230DA4696C001148C5 /* Resources */, - 8B45A0240DA4696C001148C5 /* Sources */, - 8B45A0250DA4696C001148C5 /* Frameworks */, - 8B45A0260DA4696C001148C5 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 8B45A2D40DA51A0E001148C5 /* PBXTargetDependency */, - 8B7DCBA40DFF0EFB0017E983 /* PBXTargetDependency */, - ); - name = "UnitTest - UnitTesting"; - productName = "UnitTest - UnitTesting"; - productReference = 8B45A0280DA4696C001148C5 /* UnitTest - UnitTesting.octest */; - productType = "com.apple.product-type.bundle"; - }; - 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8B45A2910DA49B9A001148C5 /* Build configuration list for PBXNativeTarget "UIUnitTestingHarness" */; - buildPhases = ( - 8B45A2860DA49B99001148C5 /* Resources */, - 8B45A2870DA49B99001148C5 /* Sources */, - 8B45A2880DA49B99001148C5 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = UIUnitTestingHarness; - productName = UnitTestingTestHarness; - productReference = 8B45A28A0DA49B99001148C5 /* GTMUIUnitTestingHarness.app */; - productType = "com.apple.product-type.application"; - }; - F42E08110D19987200D5DDE0 /* UnitTest - Foundation */ = { - isa = PBXNativeTarget; - buildConfigurationList = F42E081E0D19987200D5DDE0 /* Build configuration list for PBXNativeTarget "UnitTest - Foundation" */; - buildPhases = ( - 8B3345CC0DBF8A95009FD32C /* AppleScript */, - F42E08140D19987200D5DDE0 /* Resources */, - F42E08160D19987200D5DDE0 /* Sources */, - F42E081C0D19987200D5DDE0 /* Frameworks */, - F42E081D0D19987200D5DDE0 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - F42E08790D199AA600D5DDE0 /* PBXTargetDependency */, - ); - name = "UnitTest - Foundation"; - productName = "UnitTest - AppKit"; - productReference = F42E08210D19987200D5DDE0 /* UnitTest - Foundation.octest */; - productType = "com.apple.product-type.bundle"; - }; - F42E086C0D199A5B00D5DDE0 /* GTM */ = { - isa = PBXNativeTarget; - buildConfigurationList = F42E086F0D199A5C00D5DDE0 /* Build configuration list for PBXNativeTarget "GTM" */; - buildPhases = ( - F42E08680D199A5B00D5DDE0 /* Headers */, - F42E08690D199A5B00D5DDE0 /* Resources */, - F42E086A0D199A5B00D5DDE0 /* Sources */, - F42E086B0D199A5B00D5DDE0 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GTM; - productName = GTM; - productReference = F42E086D0D199A5B00D5DDE0 /* GoogleToolboxForMac.framework */; - productType = "com.apple.product-type.framework"; - }; - F48FE2630D198C1E009257D2 /* UnitTest - AppKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = F48FE2660D198C1F009257D2 /* Build configuration list for PBXNativeTarget "UnitTest - AppKit" */; - buildPhases = ( - F48FE25F0D198C1E009257D2 /* Resources */, - F48FE2600D198C1E009257D2 /* Sources */, - F48FE2610D198C1E009257D2 /* Frameworks */, - F48FE2620D198C1E009257D2 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - F42E08770D199A9B00D5DDE0 /* PBXTargetDependency */, - F41D254F0DB9067C00774EEB /* PBXTargetDependency */, - ); - name = "UnitTest - AppKit"; - productName = "UnitTest - AppKit"; - productReference = F48FE2640D198C1E009257D2 /* UnitTest - AppKit.octest */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - }; - buildConfigurationList = 1DEB918108733D990010E9CD /* Build configuration list for PBXProject "GTM" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 0867D691FE84028FC02AAC07 /* GTM */; - productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - F42E086C0D199A5B00D5DDE0 /* GTM */, - F472042B0D33BEAF00E9F378 /* All UnitTests */, - F48FE2630D198C1E009257D2 /* UnitTest - AppKit */, - F42E08110D19987200D5DDE0 /* UnitTest - Foundation */, - 8B45A0270DA4696C001148C5 /* UnitTest - UnitTesting */, - 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */, - F41A6EE00E02DB4F00788A6C /* Build GTM All SDKs */, - F41A6EF80E02DCFC00788A6C /* All UnitTests All SDKs */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8B45A0230DA4696C001148C5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A2DF0DA51A7E001148C5 /* GTMUnitTestingTest.nib in Resources */, - 8B45A5F80DA5EB9F001148C5 /* GTMUnitTestingWindow.gtmUTState in Resources */, - 8B45A5F90DA5EB9F001148C5 /* GTMUnitTestingTestApp.gtmUTState in Resources */, - 8B45A6BB0DA67DD5001148C5 /* GTMUnitTestingImage.gtmUTState in Resources */, - 8BEEA90D0DA7446300894774 /* GTMUnitTestingImage.tiff in Resources */, - 8BEEA90E0DA7446300894774 /* GTMUnitTestingWindow.tiff in Resources */, - 8BEEA90F0DA7446300894774 /* GTMUnitTestingView.tiff in Resources */, - 84B91B8B0EA3CC2E0087500F /* GTMUnitTestingImage.10.6.0.tiff in Resources */, - 84B91B8C0EA3CC2E0087500F /* GTMUnitTestingWindow.10.6.0.tiff in Resources */, - 8B2789960EF855FB00D68C01 /* GTMUnitTestingWindow.10.5.6.tiff in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8B45A2860DA49B99001148C5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A2AA0DA49C47001148C5 /* MainMenu.nib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E08140D19987200D5DDE0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E08690D199A5B00D5DDE0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F48FE25F0D198C1E009257D2 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B7AD49A0DABBB5800B84F4A /* GTMNSBezierPath+ShadingTest.tiff in Resources */, - 8B7AD49B0DABBB5800B84F4A /* GTMNSBezierPath+CGPathTest.tiff in Resources */, - 8B7AD49C0DABBB5800B84F4A /* GTMNSBezierPath+RoundRectTest.tiff in Resources */, - 8BE869730DBE89C100749827 /* GTMNSBezierPath+RoundRectTest.x86_64.tiff in Resources */, - F435DE7C0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.ppc64.tiff in Resources */, - F435DE7D0DC0B6580069CDE8 /* GTMNSBezierPath+CGPathTest.x86_64.tiff in Resources */, - F435DE8B0DC0B7620069CDE8 /* GTMNSBezierPath+RoundRectTest.ppc64.tiff in Resources */, - 8B1801AE0E25341B00280961 /* GTMLargeTypeWindowImageTest.gtmUTState in Resources */, - 8B1801B20E25341B00280961 /* GTMLargeTypeWindowLongTextTest.gtmUTState in Resources */, - 8B1801B30E25341B00280961 /* GTMLargeTypeWindowShortTextTest.gtmUTState in Resources */, - 8B1802420E25592200280961 /* GTMLargeTypeWindowMediumTextTest.gtmUTState in Resources */, - 7F3EB5540E5F0B0400A7A75E /* GTMUnitTestingImage.tiff in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8B45A0260DA4696C001148C5 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Nuke coverage data earch run\nexport GTM_REMOVE_GCOV_DATA=1\n# Run the unit tests in this test bundle.\n\"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\""; - }; - F42E081D0D19987200D5DDE0 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Nuke coverage data earch run\nexport GTM_REMOVE_GCOV_DATA=1\n# Run the unit tests in this test bundle.\n\"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\""; - }; - F48FE2620D198C1E009257D2 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Nuke coverage data earch run\nexport GTM_REMOVE_GCOV_DATA=1\n# Run the unit tests in this test bundle.\n\"${SRCROOT}/UnitTesting/RunMacOSUnitTests.sh\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8B45A0240DA4696C001148C5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A0D50DA46A57001148C5 /* GTMNSObject+UnitTesting.m in Sources */, - 8B45A0D60DA46A57001148C5 /* GTMNSObject+BindingUnitTesting.m in Sources */, - 8B45A21A0DA46E1D001148C5 /* GTMGeometryUtils.m in Sources */, - 8B45A22C0DA46E51001148C5 /* GTMSystemVersion.m in Sources */, - 8B45A2E20DA51ABC001148C5 /* GTMUnitTestingTest.m in Sources */, - 8B7AD4AE0DABBFEE00B84F4A /* GTMUnitTestingBindingTest.m in Sources */, - 8B55479C0DB3B7A50014CC1C /* GTMAppKit+UnitTesting.m in Sources */, - 8B7DCBC30DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */, - 8B7DCBEF0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */, - 8B7DCE1B0DFF39850017E983 /* GTMSenTestCase.m in Sources */, - 8B35901B0E8191750041E21C /* GTMTestTimerTest.m in Sources */, - 8B3E2A410EEB565B000681D8 /* GTMUnitTestingUtilities.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8B45A2870DA49B99001148C5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B45A2AC0DA49C47001148C5 /* main.m in Sources */, - 8B45A2D00DA51A01001148C5 /* GTMUnitTestingUtilities.m in Sources */, - 8B7DCBC40DFF0F800017E983 /* GTMMethodCheck.m in Sources */, - 8B7DCEF10E002C210017E983 /* GTMDevLogUnitTestingBridge.m in Sources */, - 8B4D7A150E40D79200EFEDD8 /* GTMObjC2Runtime.m in Sources */, - 84978FBC0EA6A67C00C5DC83 /* GTMSystemVersion.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E08160D19987200D5DDE0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F42E08330D19992100D5DDE0 /* GTMNSString+HTMLTest.m in Sources */, - F42E08340D19992100D5DDE0 /* GTMSystemVersionTest.m in Sources */, - F47F1D350D4914B600925B8F /* GTMCalculatedRangeTest.m in Sources */, - F43E4C2D0D4E36230041161F /* GTMNSString+XMLTest.m in Sources */, - F43E4DDE0D4E56380041161F /* GTMNSEnumerator+FilterTest.m in Sources */, - F437F5620D50BC1D00F5C3A4 /* GTMRegexTest.m in Sources */, - F47A798B0D746EFC002302AB /* GTMScriptRunnerTest.m in Sources */, - F41390920D75F64D00F72B31 /* GTMNSFileManager+PathTest.m in Sources */, - F424F7010D9AA02B000B87EF /* GTMNSData+zlibTest.m in Sources */, - 8B6F32080DA34A1B0052CA40 /* GTMObjC2RuntimeTest.m in Sources */, - 8B6F32160DA34C830052CA40 /* GTMMethodCheckTest.m in Sources */, - 8BC045C20DAE899100C2D1CA /* GTMGeometryUtilsTest.m in Sources */, - F41D258F0DBD21B900774EEB /* GTMBase64Test.m in Sources */, - F431221F0DD4E3C900F45252 /* GTMStackTraceTest.m in Sources */, - 33C372B40DD8A93000E97817 /* GTMNSString+URLArgumentsTest.m in Sources */, - 33C3745F0DD8D85B00E97817 /* GTMNSDictionary+URLArgumentsTest.m in Sources */, - F4BC1E8D0DE1FC4A00108B7D /* GTMHTTPServerTest.m in Sources */, - F4BC22D10DE4C39000108B7D /* GTMTestHTTPServer.m in Sources */, - 8B3344210DBF7A36009FD32C /* GTMNSAppleScript+HandlerTest.m in Sources */, - 8B3344230DBF7A36009FD32C /* GTMNSAppleEventDescriptor+HandlerTest.m in Sources */, - 8B3344250DBF7A36009FD32C /* GTMNSAppleEventDescriptor+FoundationTest.m in Sources */, - 8BE2836F0DED0F130035B3F8 /* GTMFourCharCodeTest.m in Sources */, - 8B7DCBC20DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */, - 8B7DCBEE0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */, - 8B7DCE1A0DFF39850017E983 /* GTMSenTestCase.m in Sources */, - F41A6F850E02EC4D00788A6C /* GTMSignalHandlerTest.m in Sources */, - 8B3AA9F80E033E5F007E31B5 /* GTMValidatingContainersTest.m in Sources */, - F9FD94640E1D312E0005867E /* GTMPathTest.m in Sources */, - F425974B0E23AA94003BEA3E /* GTMNSString+ReplaceTest.m in Sources */, - F425977F0E23FE43003BEA3E /* GTMNSString+FindFolderTest.m in Sources */, - F98680C40E2C164300CEE8BF /* GTMLoggerTest.m in Sources */, - F98681960E2C20C100CEE8BF /* GTMLogger+ASLTest.m in Sources */, - F95803FB0E2FB0A80049A088 /* GTMLoggerRingBufferWriterTest.m in Sources */, - 8B1B49260E5F97C800A08972 /* GTMExceptionalInlinesTest.m in Sources */, - 8BE839AA0E8AF72E00C611B0 /* GTMDebugThreadValidationTest.m in Sources */, - F41711380ECDFBE100B9B276 /* GTMLightweightProxyTest.m in Sources */, - 6294454C0EDDF89A009295EA /* GTMNSArray+MergeTest.m in Sources */, - F49FA88B0EEF303D00077669 /* GTMFileSystemKQueueTest.m in Sources */, - 8B8EC8800EF17C2F0044D13F /* GTMNSFileManager+CarbonTest.m in Sources */, - 8B6C161C0F3580DA00E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */, - 1012DF5A0F425525004794DB /* GTMAbstractDOListenerTest.m in Sources */, - F95B567F0F46208E0051A6F1 /* GTMSQLiteTest.m in Sources */, - 10998F8B0F4B5F1B007F179D /* GTMTransientRootProxyTest.m in Sources */, - 108930850F4CCB380018D4A0 /* GTMTransientRootPortProxyTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F42E086A0D199A5B00D5DDE0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F42E094A0D199BBF00D5DDE0 /* GTMDelegatingTableColumn.m in Sources */, - F95B56840F4628B30051A6F1 /* GTMSQLite.m in Sources */, - F42E094D0D199BBF00D5DDE0 /* GTMGeometryUtils.m in Sources */, - F42E09500D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.m in Sources */, - F42E09520D199BBF00D5DDE0 /* GTMNSString+HTML.m in Sources */, - F42E09550D199BBF00D5DDE0 /* GTMSystemVersion.m in Sources */, - F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */, - F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */, - F47F1C130D490BC000925B8F /* GTMNSBezierPath+Shading.m in Sources */, - F47F1D310D4914AD00925B8F /* GTMCalculatedRange.m in Sources */, - F43E447B0D4918B20041161F /* GTMLinearRGBShading.m in Sources */, - F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */, - F43E4DDA0D4E56320041161F /* GTMNSEnumerator+Filter.m in Sources */, - F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */, - F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */, - F47A79890D746EE9002302AB /* GTMScriptRunner.m in Sources */, - F41390900D75F63C00F72B31 /* GTMNSFileManager+Path.m in Sources */, - 8B45A21E0DA46E34001148C5 /* GTMObjC2Runtime.m in Sources */, - F41D258C0DBD21A300774EEB /* GTMBase64.m in Sources */, - 33C372A70DD8A88500E97817 /* GTMNSString+URLArguments.m in Sources */, - 33C374390DD8D44800E97817 /* GTMNSDictionary+URLArguments.m in Sources */, - F4BC1C890DDDD45D00108B7D /* GTMHTTPServer.m in Sources */, - 8B7DCB9B0DFF0E850017E983 /* GTMFourCharCode.m in Sources */, - 8B7DCBBD0DFF0F5D0017E983 /* GTMMethodCheck.m in Sources */, - 8B7DCBD20DFF16070017E983 /* GTMNSAppleScript+Handler.m in Sources */, - 8B7DCBD30DFF16070017E983 /* GTMNSAppleEventDescriptor+Handler.m in Sources */, - 8B7DCBD40DFF16070017E983 /* GTMNSAppleEventDescriptor+Foundation.m in Sources */, - 8B7DCBE20DFF18720017E983 /* GTMDevLogUnitTestingBridge.m in Sources */, - F41A6F830E02EC3600788A6C /* GTMSignalHandler.m in Sources */, - 8B3AA9F20E033E23007E31B5 /* GTMValidatingContainers.m in Sources */, - F9FD94630E1D31280005867E /* GTMPath.m in Sources */, - F42597490E23AA57003BEA3E /* GTMNSString+Replace.m in Sources */, - F425977A0E23FE3A003BEA3E /* GTMNSString+FindFolder.m in Sources */, - 8B1801A20E2533D500280961 /* GTMLargeTypeWindow.m in Sources */, - F98680C30E2C163D00CEE8BF /* GTMLogger.m in Sources */, - F98681970E2C20C800CEE8BF /* GTMLogger+ASL.m in Sources */, - F95803F90E2FB0850049A088 /* GTMLoggerRingBufferWriter.m in Sources */, - 8B61FDC00E4CDB8000FF9C21 /* GTMStackTrace.m in Sources */, - 8B58E9950E547EB000A0E02E /* GTMGetURLHandler.m in Sources */, - 8B1B49190E5F8E2100A08972 /* GTMExceptionalInlines.m in Sources */, - 7F3EB38F0E5E09C700A7A75E /* GTMNSImage+Scaling.m in Sources */, - 8B6F4B640E8856CA00425D9F /* GTMDebugThreadValidation.m in Sources */, - F41711360ECDFBD500B9B276 /* GTMLightweightProxy.m in Sources */, - 629445410EDDF647009295EA /* GTMNSArray+Merge.m in Sources */, - F4A420F00EDDF8E000397A11 /* GTMHotKeyTextField.m in Sources */, - 8B3E292E0EEB53F8000681D8 /* GTMCarbonEvent.m in Sources */, - F49FA8450EEF2AB700077669 /* GTMFileSystemKQueue.m in Sources */, - 8B8EC87E0EF17C270044D13F /* GTMNSFileManager+Carbon.m in Sources */, - 8BA01B5D0F144BD800926923 /* GTMNSWorkspace+Running.m in Sources */, - 8B6C15940F356E6400E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */, - 1012DF570F4252BD004794DB /* GTMAbstractDOListener.m in Sources */, - 7F511DFA0F4B0378009F41B6 /* GTMNSColor+Luminance.m in Sources */, - 7F511DFE0F4B0378009F41B6 /* GTMTheme.m in Sources */, - 10998E8F0F4B593E007F179D /* GTMTransientRootProxy.m in Sources */, - 10998EF40F4B5D1A007F179D /* GTMTransientRootPortProxy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F48FE2600D198C1E009257D2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7F511E010F4B03B4009F41B6 /* GTMNSColor+LuminanceTest.m in Sources */, - 7F511E020F4B03BC009F41B6 /* GTMThemeTest.m in Sources */, - F42E082F0D19991400D5DDE0 /* GTMNSBezierPath+RoundRectTest.m in Sources */, - F42E09450D199BA400D5DDE0 /* GTMNSObject+UnitTesting.m in Sources */, - F43DCEC70D47BEA000959A62 /* GTMLoginItemsTest.m in Sources */, - F428FF090D48E57300382ED1 /* GTMNSBezierPath+CGPathTest.m in Sources */, - F47F1C1B0D490BD200925B8F /* GTMNSBezierPath+ShadingTest.m in Sources */, - F43E447F0D4918BC0041161F /* GTMLinearRGBShadingTest.m in Sources */, - 8B5547B90DB3BB220014CC1C /* GTMAppKit+UnitTesting.m in Sources */, - 8B7DCBC10DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */, - 8B7DCBED0DFF1A4F0017E983 /* GTMUnitTestDevLog.m in Sources */, - 8B7DCE190DFF39850017E983 /* GTMSenTestCase.m in Sources */, - 7F3EB3940E5E0A2100A7A75E /* GTMNSImage+ScalingTest.m in Sources */, - 7F3EB5870E5F0CBB00A7A75E /* GTMLargeTypeWindowTest.m in Sources */, - 8B8B10290EEB8B1600E543D0 /* GTMHotKeyTextFieldTest.m in Sources */, - 8B8B102A0EEB8B2900E543D0 /* GTMCarbonEventTest.m in Sources */, - 8B8B10FD0EEB8BC300E543D0 /* GTMUnitTestingUtilities.m in Sources */, - 8B8B11000EEB8CD000E543D0 /* GTMGetURLHandlerTest.m in Sources */, - 8BA01B600F144BE500926923 /* GTMNSWorkspace+RunningTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8B45A0390DA46A20001148C5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8B45A0270DA4696C001148C5 /* UnitTest - UnitTesting */; - targetProxy = 8B45A0380DA46A20001148C5 /* PBXContainerItemProxy */; - }; - 8B45A2D40DA51A0E001148C5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8B45A2890DA49B99001148C5 /* UIUnitTestingHarness */; - targetProxy = 8B45A2D30DA51A0E001148C5 /* PBXContainerItemProxy */; - }; - 8B7DCBA40DFF0EFB0017E983 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F42E086C0D199A5B00D5DDE0 /* GTM */; - targetProxy = 8B7DCBA30DFF0EFB0017E983 /* PBXContainerItemProxy */; - }; - F41D254F0DB9067C00774EEB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8B45A0270DA4696C001148C5 /* UnitTest - UnitTesting */; - targetProxy = F41D254E0DB9067C00774EEB /* PBXContainerItemProxy */; - }; - F42E08770D199A9B00D5DDE0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F42E086C0D199A5B00D5DDE0 /* GTM */; - targetProxy = F42E08760D199A9B00D5DDE0 /* PBXContainerItemProxy */; - }; - F42E08790D199AA600D5DDE0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F42E086C0D199A5B00D5DDE0 /* GTM */; - targetProxy = F42E08780D199AA600D5DDE0 /* PBXContainerItemProxy */; - }; - F472042D0D33BEB500E9F378 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F48FE2630D198C1E009257D2 /* UnitTest - AppKit */; - targetProxy = F472042C0D33BEB500E9F378 /* PBXContainerItemProxy */; - }; - F472042F0D33BEB500E9F378 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F42E08110D19987200D5DDE0 /* UnitTest - Foundation */; - targetProxy = F472042E0D33BEB500E9F378 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8B45A2A50DA49C47001148C5 /* MainMenu.nib */ = { - isa = PBXVariantGroup; - children = ( - 8B45A2A60DA49C47001148C5 /* English */, - ); - name = MainMenu.nib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1DEB918208733D990010E9CD /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "TigerOrLater-Debug"; - }; - 1DEB918308733D990010E9CD /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2440D197F9A009257D2 /* ReleaseTigerOrLater.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "TigerOrLater-Release"; - }; - 842575E60E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 848269C80E9FF4BD006E6D9C /* DebugSnowLeopardOrLater.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575E70E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575E80E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575E90E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575EA0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575EB0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575EC0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575ED0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575EE0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "SnowLeopardOrLater-Debug"; - }; - 842575EF0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 848269C80E9FF4BD006E6D9C /* DebugSnowLeopardOrLater.xcconfig */; - buildSettings = { - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - OTHER_LDFLAGS = "-lgcov"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575F00E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 848269C90E9FF4BD006E6D9C /* ReleaseSnowLeopardOrLater.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575F10E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575F20E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575F30E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575F40E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575F50E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575F60E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575F70E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575F80E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575F90E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575FA0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575FB0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575FC0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575FD0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842575FE0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 842575FF0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "SnowLeopardOrLater-Debug-gcov"; - }; - 842576000E9FCFB8003E4511 /* SnowLeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "SnowLeopardOrLater-Release"; - }; - 8B45A02A0DA4696D001148C5 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Debug"; - }; - 8B45A02B0DA4696D001148C5 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - 8B45A02C0DA4696D001148C5 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Release"; - }; - 8B45A28E0DA49B99001148C5 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "TigerOrLater-Debug"; - }; - 8B45A28F0DA49B99001148C5 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "TigerOrLater-Debug-gcov"; - }; - 8B45A2900DA49B99001148C5 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "TigerOrLater-Release"; - }; - F41A6EE10E02DB4F00788A6C /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "TigerOrLater-Debug"; - }; - F41A6EE20E02DB4F00788A6C /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F41A6EE30E02DB4F00788A6C /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "TigerOrLater-Release"; - }; - F41A6EE40E02DB4F00788A6C /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "LeopardOrLater-Debug"; - }; - F41A6EE50E02DB4F00788A6C /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F41A6EE60E02DB4F00788A6C /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "Build GTM All SDKs"; - }; - name = "LeopardOrLater-Release"; - }; - F41A6EF90E02DCFC00788A6C /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "TigerOrLater-Debug"; - }; - F41A6EFA0E02DCFC00788A6C /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F41A6EFB0E02DCFC00788A6C /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "TigerOrLater-Release"; - }; - F41A6EFC0E02DCFC00788A6C /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "LeopardOrLater-Debug"; - }; - F41A6EFD0E02DCFC00788A6C /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F41A6EFE0E02DCFC00788A6C /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests All SDKs"; - }; - name = "LeopardOrLater-Release"; - }; - F42E081F0D19987200D5DDE0 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "TigerOrLater-Debug"; - }; - F42E08200D19987200D5DDE0 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "TigerOrLater-Release"; - }; - F42E08700D199A5C00D5DDE0 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "TigerOrLater-Debug"; - }; - F42E08710D199A5C00D5DDE0 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "TigerOrLater-Release"; - }; - F47204350D33BEDF00E9F378 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "TigerOrLater-Debug"; - }; - F47204360D33BEDF00E9F378 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "TigerOrLater-Release"; - }; - F48B91060D94489300D45044 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2410D197F9A009257D2 /* DebugTigerOrLater.xcconfig */; - buildSettings = { - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/TigerGcov\"", - ); - OTHER_LDFLAGS = "-lgcov"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F48B91070D94489300D45044 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2430D197F9A009257D2 /* LoadableBundle.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F48B91080D94489300D45044 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F48B91090D94489300D45044 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F48B910A0D94489300D45044 /* TigerOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "TigerOrLater-Debug-gcov"; - }; - F48FE2670D198C1F009257D2 /* TigerOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Debug"; - }; - F48FE2680D198C1F009257D2 /* TigerOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "TigerOrLater-Release"; - }; - F4CA864F0DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864A0DB3ACB200B4AB10 /* DebugLeopardOrLater.xcconfig */; - buildSettings = { - "ARCHS[sdk=macosx10.5*]" = ( - i386, - x86_64, - ppc, - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86500DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86510DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86520DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86530DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86540DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA86550DB3ACE500B4AB10 /* LeopardOrLater-Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "LeopardOrLater-Debug"; - }; - F4CA865A0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864A0DB3ACB200B4AB10 /* DebugLeopardOrLater.xcconfig */; - buildSettings = { - "ARCHS[sdk=macosx10.5*]" = ( - i386, - x86_64, - ppc, - ); - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - OTHER_LDFLAGS = "-lgcov"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA865B0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA865C0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA865D0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA865E0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA865F0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2420D197F9A009257D2 /* DebugUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA86600DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "LeopardOrLater-Debug-gcov"; - }; - F4CA86610DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864B0DB3ACB200B4AB10 /* ReleaseLeopardOrLater.xcconfig */; - buildSettings = { - "ARCHS[sdk=macosx10.5*]" = ( - i386, - x86_64, - ppc, - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COMPONENT_SIGNATURE=\"\\'GTM \\'\"", - "kComponentSignatureString=\"\\\"GoogleToolboxForMac\\\"\"", - ); - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86620DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F4CA864C0DB3ACD200B4AB10 /* LoadableBundleGCSupported.xcconfig */; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "GTM-Info.plist"; - INSTALL_PATH = "@rpath"; - PRODUCT_NAME = GoogleToolboxForMac; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86630DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86640DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - AppKit"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86650DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - GTM_NO_DEBUG_FRAMEWORKS = YES; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - Foundation"; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86660DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F48FE2450D197F9A009257D2 /* ReleaseUnittest.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(value)", - "$(DEVELOPER_FRAMEWORKS_DIR_QUOTED)", - ); - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = "UnitTest-Info.plist"; - PRODUCT_NAME = "UnitTest - UnitTesting"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GTMUIUnitTestingHarness.app/Contents/MacOS/GTMUIUnitTestingHarness"; - }; - name = "LeopardOrLater-Release"; - }; - F4CA86670DB3AD0D00B4AB10 /* LeopardOrLater-Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ENABLE_OBJC_GC = supported; - INFOPLIST_FILE = UnitTesting/GTMUIUnitTestingHarness/Info.plist; - PRODUCT_NAME = GTMUIUnitTestingHarness; - }; - name = "LeopardOrLater-Release"; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB918108733D990010E9CD /* Build configuration list for PBXProject "GTM" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB918208733D990010E9CD /* TigerOrLater-Debug */, - F48B91060D94489300D45044 /* TigerOrLater-Debug-gcov */, - 1DEB918308733D990010E9CD /* TigerOrLater-Release */, - F4CA864F0DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865A0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86610DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575E60E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575EF0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575F00E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - 8B45A02D0DA4696D001148C5 /* Build configuration list for PBXNativeTarget "UnitTest - UnitTesting" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8B45A02A0DA4696D001148C5 /* TigerOrLater-Debug */, - 8B45A02B0DA4696D001148C5 /* TigerOrLater-Debug-gcov */, - 8B45A02C0DA4696D001148C5 /* TigerOrLater-Release */, - F4CA86540DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865F0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86660DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575EB0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575F90E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575FA0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - 8B45A2910DA49B9A001148C5 /* Build configuration list for PBXNativeTarget "UIUnitTestingHarness" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8B45A28E0DA49B99001148C5 /* TigerOrLater-Debug */, - 8B45A28F0DA49B99001148C5 /* TigerOrLater-Debug-gcov */, - 8B45A2900DA49B99001148C5 /* TigerOrLater-Release */, - F4CA86550DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA86600DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86670DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575EC0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575FB0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575FC0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F41A6EED0E02DB6800788A6C /* Build configuration list for PBXLegacyTarget "Build GTM All SDKs" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F41A6EE10E02DB4F00788A6C /* TigerOrLater-Debug */, - F41A6EE20E02DB4F00788A6C /* TigerOrLater-Debug-gcov */, - F41A6EE30E02DB4F00788A6C /* TigerOrLater-Release */, - F41A6EE40E02DB4F00788A6C /* LeopardOrLater-Debug */, - F41A6EE50E02DB4F00788A6C /* LeopardOrLater-Debug-gcov */, - F41A6EE60E02DB4F00788A6C /* LeopardOrLater-Release */, - 842575ED0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575FD0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575FE0E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F41A6F070E02DD1500788A6C /* Build configuration list for PBXLegacyTarget "All UnitTests All SDKs" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F41A6EF90E02DCFC00788A6C /* TigerOrLater-Debug */, - F41A6EFA0E02DCFC00788A6C /* TigerOrLater-Debug-gcov */, - F41A6EFB0E02DCFC00788A6C /* TigerOrLater-Release */, - F41A6EFC0E02DCFC00788A6C /* LeopardOrLater-Debug */, - F41A6EFD0E02DCFC00788A6C /* LeopardOrLater-Debug-gcov */, - F41A6EFE0E02DCFC00788A6C /* LeopardOrLater-Release */, - 842575EE0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575FF0E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842576000E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F42E081E0D19987200D5DDE0 /* Build configuration list for PBXNativeTarget "UnitTest - Foundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F42E081F0D19987200D5DDE0 /* TigerOrLater-Debug */, - F48B910A0D94489300D45044 /* TigerOrLater-Debug-gcov */, - F42E08200D19987200D5DDE0 /* TigerOrLater-Release */, - F4CA86530DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865E0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86650DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575EA0E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575F70E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575F80E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F42E086F0D199A5C00D5DDE0 /* Build configuration list for PBXNativeTarget "GTM" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F42E08700D199A5C00D5DDE0 /* TigerOrLater-Debug */, - F48B91070D94489300D45044 /* TigerOrLater-Debug-gcov */, - F42E08710D199A5C00D5DDE0 /* TigerOrLater-Release */, - F4CA86500DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865B0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86620DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575E70E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575F10E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575F20E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F47204340D33BEDF00E9F378 /* Build configuration list for PBXAggregateTarget "All UnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F47204350D33BEDF00E9F378 /* TigerOrLater-Debug */, - F48B91080D94489300D45044 /* TigerOrLater-Debug-gcov */, - F47204360D33BEDF00E9F378 /* TigerOrLater-Release */, - F4CA86510DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865C0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86630DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575E80E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575F30E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575F40E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; - F48FE2660D198C1F009257D2 /* Build configuration list for PBXNativeTarget "UnitTest - AppKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F48FE2670D198C1F009257D2 /* TigerOrLater-Debug */, - F48B91090D94489300D45044 /* TigerOrLater-Debug-gcov */, - F48FE2680D198C1F009257D2 /* TigerOrLater-Release */, - F4CA86520DB3ACE500B4AB10 /* LeopardOrLater-Debug */, - F4CA865D0DB3AD0300B4AB10 /* LeopardOrLater-Debug-gcov */, - F4CA86640DB3AD0D00B4AB10 /* LeopardOrLater-Release */, - 842575E90E9FCFA5003E4511 /* SnowLeopardOrLater-Debug */, - 842575F50E9FCFB8003E4511 /* SnowLeopardOrLater-Debug-gcov */, - 842575F60E9FCFB8003E4511 /* SnowLeopardOrLater-Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "TigerOrLater-Release"; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMDefines.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMDefines.h deleted file mode 100644 index b88193cd..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMDefines.h +++ /dev/null @@ -1,241 +0,0 @@ -// -// GTMDefines.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// ============================================================================ - -#include -#include - -// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs -#ifndef MAC_OS_X_VERSION_10_5 - #define MAC_OS_X_VERSION_10_5 1050 -#endif -#ifndef MAC_OS_X_VERSION_10_6 - #define MAC_OS_X_VERSION_10_6 1060 -#endif - -// ---------------------------------------------------------------------------- -// CPP symbols that can be overridden in a prefix to control how the toolbox -// is compiled. -// ---------------------------------------------------------------------------- - - -// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and -// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens -// when a validation fails. If you implement your own validators, you may want -// to control their internals using the same macros for consistency. -#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT - #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0 -#endif - -// Give ourselves a consistent way to do inlines. Apple's macros even use -// a few different actual definitions, so we're based off of the foundation -// one. -#if !defined(GTM_INLINE) - #if defined (__GNUC__) && (__GNUC__ == 4) - #define GTM_INLINE static __inline__ __attribute__((always_inline)) - #else - #define GTM_INLINE static __inline__ - #endif -#endif - -// Give ourselves a consistent way of doing externs that links up nicely -// when mixing objc and objc++ -#if !defined (GTM_EXTERN) - #if defined __cplusplus - #define GTM_EXTERN extern "C" - #else - #define GTM_EXTERN extern - #endif -#endif - -// Give ourselves a consistent way of exporting things if we have visibility -// set to hidden. -#if !defined (GTM_EXPORT) - #define GTM_EXPORT __attribute__((visibility("default"))) -#endif - -// _GTMDevLog & _GTMDevAssert -// -// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for -// developer level errors. This implementation simply macros to NSLog/NSAssert. -// It is not intended to be a general logging/reporting system. -// -// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert -// for a little more background on the usage of these macros. -// -// _GTMDevLog log some error/problem in debug builds -// _GTMDevAssert assert if conditon isn't met w/in a method/function -// in all builds. -// -// To replace this system, just provide different macro definitions in your -// prefix header. Remember, any implementation you provide *must* be thread -// safe since this could be called by anything in what ever situtation it has -// been placed in. -// - -// We only define the simple macros if nothing else has defined this. -#ifndef _GTMDevLog - -#ifdef DEBUG - #define _GTMDevLog(...) NSLog(__VA_ARGS__) -#else - #define _GTMDevLog(...) do { } while (0) -#endif - -#endif // _GTMDevLog - -// Declared here so that it can easily be used for logging tracking if -// necessary. See GTMUnitTestDevLog.h for details. -@class NSString; -GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...); - -#ifndef _GTMDevAssert -// we directly invoke the NSAssert handler so we can pass on the varargs -// (NSAssert doesn't have a macro we can use that takes varargs) -#if !defined(NS_BLOCK_ASSERTIONS) - #define _GTMDevAssert(condition, ...) \ - do { \ - if (!(condition)) { \ - [[NSAssertionHandler currentHandler] \ - handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \ - file:[NSString stringWithUTF8String:__FILE__] \ - lineNumber:__LINE__ \ - description:__VA_ARGS__]; \ - } \ - } while(0) -#else // !defined(NS_BLOCK_ASSERTIONS) - #define _GTMDevAssert(condition, ...) do { } while (0) -#endif // !defined(NS_BLOCK_ASSERTIONS) - -#endif // _GTMDevAssert - -// _GTMCompileAssert -// _GTMCompileAssert is an assert that is meant to fire at compile time if you -// want to check things at compile instead of runtime. For example if you -// want to check that a wchar is 4 bytes instead of 2 you would use -// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X) -// Note that the second "arg" is not in quotes, and must be a valid processor -// symbol in it's own right (no spaces, punctuation etc). - -// Wrapping this in an #ifndef allows external groups to define their own -// compile time assert scheme. -#ifndef _GTMCompileAssert - // We got this technique from here: - // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html - - #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg - #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg) - #define _GTMCompileAssert(test, msg) \ - typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ] -#endif // _GTMCompileAssert - -// Macro to allow fast enumeration when building for 10.5 or later, and -// reliance on NSEnumerator for 10.4. Remember, NSDictionary w/ FastEnumeration -// does keys, so pick the right thing, nothing is done on the FastEnumeration -// side to be sure you're getting what you wanted. -#ifndef GTM_FOREACH_OBJECT - #if TARGET_OS_IPHONE || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) - #define GTM_FOREACH_OBJECT(element, collection) \ - for (element in collection) - #define GTM_FOREACH_KEY(element, collection) \ - for (element in collection) - #else - #define GTM_FOREACH_OBJECT(element, collection) \ - for (NSEnumerator * _ ## element ## _enum = [collection objectEnumerator]; \ - (element = [_ ## element ## _enum nextObject]) != nil; ) - #define GTM_FOREACH_KEY(element, collection) \ - for (NSEnumerator * _ ## element ## _enum = [collection keyEnumerator]; \ - (element = [_ ## element ## _enum nextObject]) != nil; ) - #endif -#endif - -// ============================================================================ - -// ---------------------------------------------------------------------------- -// CPP symbols defined based on the project settings so the GTM code has -// simple things to test against w/o scattering the knowledge of project -// setting through all the code. -// ---------------------------------------------------------------------------- - -// Provide a single constant CPP symbol that all of GTM uses for ifdefing -// iPhone code. -#if TARGET_OS_IPHONE // iPhone SDK - // For iPhone specific stuff - #define GTM_IPHONE_SDK 1 - #if TARGET_IPHONE_SIMULATOR - #define GTM_IPHONE_SIMULATOR 1 - #else - #define GTM_IPHONE_DEVICE 1 - #endif // TARGET_IPHONE_SIMULATOR -#else - // For MacOS specific stuff - #define GTM_MACOS_SDK 1 -#endif - -// Provide a symbol to include/exclude extra code for GC support. (This mainly -// just controls the inclusion of finalize methods). -#ifndef GTM_SUPPORT_GC - #if GTM_IPHONE_SDK - // iPhone never needs GC - #define GTM_SUPPORT_GC 0 - #else - // We can't find a symbol to tell if GC is supported/required, so best we - // do on Mac targets is include it if we're on 10.5 or later. - #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 - #define GTM_SUPPORT_GC 0 - #else - #define GTM_SUPPORT_GC 1 - #endif - #endif -#endif - -// To simplify support for 64bit (and Leopard in general), we provide the type -// defines for non Leopard SDKs -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 - // NSInteger/NSUInteger and Max/Mins - #ifndef NSINTEGER_DEFINED - #if __LP64__ || NS_BUILD_32_LIKE_64 - typedef long NSInteger; - typedef unsigned long NSUInteger; - #else - typedef int NSInteger; - typedef unsigned int NSUInteger; - #endif - #define NSIntegerMax LONG_MAX - #define NSIntegerMin LONG_MIN - #define NSUIntegerMax ULONG_MAX - #define NSINTEGER_DEFINED 1 - #endif // NSINTEGER_DEFINED - // CGFloat - #ifndef CGFLOAT_DEFINED - #if defined(__LP64__) && __LP64__ - // This really is an untested path (64bit on Tiger?) - typedef double CGFloat; - #define CGFLOAT_MIN DBL_MIN - #define CGFLOAT_MAX DBL_MAX - #define CGFLOAT_IS_DOUBLE 1 - #else /* !defined(__LP64__) || !__LP64__ */ - typedef float CGFloat; - #define CGFLOAT_MIN FLT_MIN - #define CGFLOAT_MAX FLT_MAX - #define CGFLOAT_IS_DOUBLE 0 - #endif /* !defined(__LP64__) || !__LP64__ */ - #define CGFLOAT_DEFINED 1 - #endif // CGFLOAT_DEFINED -#endif // MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM_Prefix.pch b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM_Prefix.pch deleted file mode 100644 index a7c0011a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTM_Prefix.pch +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -// We don't require a prefix to use any GTM code, so this prefix is just to -// speed up the basic compiles of *all* of the GTM projects/targets. - -// We don't want to drag GTMDefines into the prefix so we make sure each file -// that directly needs it includes it, so we just use the iphone test directly -// instead of our GTM_IPHONE_SDK symbol. -#ifdef __OBJC__ - #include - #if TARGET_OS_IPHONE // iPhone SDK - #import - #import - #else - #import - #endif - // This turns on unit test logging so that we can track unittests if we are - // doing them. See GTMUnitTestDevLog.h for details. - // (_GTMUnitTestDevLog comes from GTMDevLogUnitTestingBridge.m) - #define _GTMDevLog _GTMUnitTestDevLog -#endif - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone-Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone-Info.plist deleted file mode 100644 index 68982241..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.google.GTMiPhone - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone.xcodeproj/project.pbxproj deleted file mode 100644 index 46d0a0f3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/GTMiPhone.xcodeproj/project.pbxproj +++ /dev/null @@ -1,780 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - F4C7F9BF0DC62EC8009BEE5B /* All UnitTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = F4C7F9C50DC62F0C009BEE5B /* Build configuration list for PBXAggregateTarget "All UnitTests" */; - buildPhases = ( - ); - dependencies = ( - F4C7F9C40DC62ECD009BEE5B /* PBXTargetDependency */, - ); - name = "All UnitTests"; - productName = "All UnitTests"; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 6294461C0EDE178D009295EA /* GTMNSArray+MergeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */; }; - 6294461D0EDE17A0009295EA /* GTMNSArray+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 629446180EDE177A009295EA /* GTMNSArray+Merge.m */; }; - 67A7820C0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */; }; - 8B308BCE0DAD0B8400183556 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B308BCD0DAD0B8400183556 /* QuartzCore.framework */; }; - 8B3AA8F30E032FC7007E31B5 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */; }; - 8B3AA8F40E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */; }; - 8B3AA9240E033624007E31B5 /* GTMHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9200E033624007E31B5 /* GTMHTTPServer.m */; }; - 8B3AA9290E033647007E31B5 /* GTMTestHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9280E033647007E31B5 /* GTMTestHTTPServer.m */; }; - 8B3AA9340E0336AC007E31B5 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */; }; - 8B41EC0F0E0711D40040CF9F /* GTMValidatingContainersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */; }; - 8B41EC100E0711D40040CF9F /* GTMValidatingContainers.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */; }; - 8B5547CA0DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */; }; - 8B5547CB0DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */; }; - 8B5A9E200E71CB6C005DA441 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */; }; - 8B6C18740F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */; }; - 8B6C18750F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */; }; - 8B7DCEAA0DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */; }; - 8B7DCEAD0DFF4CA60017E983 /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */; }; - 8BA5F40B0E75669000798036 /* GTMABAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA5F4080E75669000798036 /* GTMABAddressBook.m */; }; - 8BA5F40C0E75669000798036 /* phone.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BA5F40A0E75669000798036 /* phone.png */; }; - 8BA5F52C0E7567AB00798036 /* GTMABAddressBookTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA5F52B0E7567AB00798036 /* GTMABAddressBookTest.m */; }; - 8BC0480F0DAE928A00C2D1CA /* GTMCalculatedRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */; }; - 8BC048100DAE928A00C2D1CA /* GTMCalculatedRangeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */; }; - 8BC048130DAE928A00C2D1CA /* GTMNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */; }; - 8BC048150DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */; }; - 8BC048160DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */; }; - 8BC048170DAE928A00C2D1CA /* GTMNSFileManager+Path.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */; }; - 8BC048180DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */; }; - 8BC048190DAE928A00C2D1CA /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */; }; - 8BC0481A0DAE928A00C2D1CA /* GTMNSString+HTMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */; }; - 8BC0481B0DAE928A00C2D1CA /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */; }; - 8BC0481C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */; }; - 8BC0481F0DAE928A00C2D1CA /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047920DAE928A00C2D1CA /* GTMRegex.m */; }; - 8BC048200DAE928A00C2D1CA /* GTMRegexTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */; }; - 8BC048250DAE928A00C2D1CA /* GTMMethodCheck.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */; }; - 8BC048260DAE928A00C2D1CA /* GTMMethodCheckTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */; }; - 8BC048270DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */; }; - 8BC048580DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */; }; - 8BC048600DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */; }; - 8BC048650DAE928A00C2D1CA /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */; }; - 8BC0486B0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */; }; - 8BC0486C0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png in Resources */ = {isa = PBXBuildFile; fileRef = 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */; }; - 8BC04A720DAF144700C2D1CA /* GTMSystemVersionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */; }; - 8BC04A750DAF145200C2D1CA /* GTMSystemVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */; }; - 8BC04D480DB0088500C2D1CA /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BC04D470DB0088500C2D1CA /* libz.dylib */; }; - 8BC04DE80DB023D400C2D1CA /* ReleaseNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8BC04DE70DB023D400C2D1CA /* ReleaseNotes.txt */; }; - 8BDA25130E759A6400C9769D /* GTMHTTPServerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3AA9210E033624007E31B5 /* GTMHTTPServerTest.m */; }; - 8BDA25140E759A6500C9769D /* GTMNSData+zlibTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */; }; - 8BE839890E89C74B00C611B0 /* GTMDebugThreadValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */; }; - 8BE83A660E8B059A00C611B0 /* GTMDebugThreadValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */; }; - F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */; }; - F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */; }; - F418AF990E7558EC004FB565 /* GTMExceptionalInlines.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */; }; - F418AF9A0E7558EC004FB565 /* GTMExceptionalInlinesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */; }; - F418AFA50E7559C7004FB565 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA30E7559C7004FB565 /* GTMLogger.m */; }; - F418AFA60E7559C7004FB565 /* GTMLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */; }; - F418AFB40E755B4D004FB565 /* GTMLoggerRingBufferWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */; }; - F418AFB50E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */; }; - F418AFCD0E755C94004FB565 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */; }; - F418AFCE0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */; }; - F418AFD70E755D44004FB565 /* GTMPath.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD50E755D44004FB565 /* GTMPath.m */; }; - F418AFD80E755D44004FB565 /* GTMPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F418AFD60E755D44004FB565 /* GTMPathTest.m */; }; - F439ADEB0DBD3C0000BE9B91 /* GTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADE90DBD3C0000BE9B91 /* GTMBase64.m */; }; - F439ADEC0DBD3C0000BE9B91 /* GTMBase64Test.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEA0DBD3C0000BE9B91 /* GTMBase64Test.m */; }; - F439ADF00DBD3C4000BE9B91 /* GTMGeometryUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */; }; - F439ADF10DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */; }; - F4E3B3D80EB5EF2400CB713D /* GTMUIFont+LineHeight.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */; }; - F4E3B3E20EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */; }; - F4EF8AD70EBFF814008DD6DA /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */; }; - F4EF8AD80EBFF814008DD6DA /* GTMStackTraceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - F4C7F9C30DC62ECD009BEE5B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1D6058900D05DD3D006BFB54; - remoteInfo = GTMiPhoneUnitTesting; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GTMiPhoneTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 32CA4F630368D1EE00C91783 /* GTM_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTM_Prefix.pch; sourceTree = ""; }; - 629446170EDE177A009295EA /* GTMNSArray+Merge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSArray+Merge.h"; sourceTree = ""; }; - 629446180EDE177A009295EA /* GTMNSArray+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+Merge.m"; sourceTree = ""; }; - 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSArray+MergeTest.m"; sourceTree = ""; }; - 67A7820A0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIPhoneUnitTestDelegate.h; sourceTree = ""; }; - 67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestDelegate.m; sourceTree = ""; }; - 8B308BCD0DAD0B8400183556 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 8B3AA8F00E032FC7007E31B5 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+URLArguments.h"; sourceTree = ""; }; - 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArguments.m"; sourceTree = ""; }; - 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+URLArgumentsTest.m"; sourceTree = ""; }; - 8B3AA91F0E033624007E31B5 /* GTMHTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMHTTPServer.h; sourceTree = ""; }; - 8B3AA9200E033624007E31B5 /* GTMHTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPServer.m; sourceTree = ""; }; - 8B3AA9210E033624007E31B5 /* GTMHTTPServerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMHTTPServerTest.m; sourceTree = ""; }; - 8B3AA9270E033647007E31B5 /* GTMTestHTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMTestHTTPServer.h; sourceTree = ""; }; - 8B3AA9280E033647007E31B5 /* GTMTestHTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMTestHTTPServer.m; sourceTree = ""; }; - 8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; - 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainersTest.m; sourceTree = ""; }; - 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMValidatingContainers.m; sourceTree = ""; }; - 8B41EC0E0E0711D40040CF9F /* GTMValidatingContainers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMValidatingContainers.h; sourceTree = ""; }; - 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIKit+UnitTesting.m"; sourceTree = ""; }; - 8B5547C80DB3BBF20014CC1C /* GTMUIKit+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIKit+UnitTesting.h"; sourceTree = ""; }; - 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIKit+UnitTestingTest.m"; sourceTree = ""; }; - 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - 8B6C18710F3769D200E51E5D /* GTMNSObject+KeyValueObserving.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+KeyValueObserving.h"; sourceTree = ""; }; - 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+KeyValueObserving.m"; sourceTree = ""; }; - 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+KeyValueObservingTest.m"; sourceTree = ""; }; - 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDevLogUnitTestingBridge.m; sourceTree = ""; }; - 8B7DCEAB0DFF4CA60017E983 /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = ""; }; - 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = ""; }; - 8BA5F4070E75669000798036 /* GTMABAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMABAddressBook.h; sourceTree = ""; }; - 8BA5F4080E75669000798036 /* GTMABAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBook.m; sourceTree = ""; }; - 8BA5F40A0E75669000798036 /* phone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = phone.png; sourceTree = ""; }; - 8BA5F52B0E7567AB00798036 /* GTMABAddressBookTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMABAddressBookTest.m; sourceTree = ""; }; - 8BC047750DAE926E00C2D1CA /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - 8BC047770DAE928A00C2D1CA /* GTMCalculatedRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMCalculatedRange.h; sourceTree = ""; }; - 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRange.m; sourceTree = ""; }; - 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMCalculatedRangeTest.m; sourceTree = ""; }; - 8BC0477A0DAE928A00C2D1CA /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGarbageCollection.h; sourceTree = ""; }; - 8BC0477E0DAE928A00C2D1CA /* GTMNSData+zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSData+zlib.h"; sourceTree = ""; }; - 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlib.m"; sourceTree = ""; }; - 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSData+zlibTest.m"; sourceTree = ""; }; - 8BC047810DAE928A00C2D1CA /* GTMNSEnumerator+Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSEnumerator+Filter.h"; sourceTree = ""; }; - 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+Filter.m"; sourceTree = ""; }; - 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSEnumerator+FilterTest.m"; sourceTree = ""; }; - 8BC047840DAE928A00C2D1CA /* GTMNSFileManager+Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSFileManager+Path.h"; sourceTree = ""; }; - 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+Path.m"; sourceTree = ""; }; - 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSFileManager+PathTest.m"; sourceTree = ""; }; - 8BC047870DAE928A00C2D1CA /* GTMNSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+HTML.h"; sourceTree = ""; }; - 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTML.m"; sourceTree = ""; }; - 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTMLTest.m"; sourceTree = ""; }; - 8BC0478A0DAE928A00C2D1CA /* GTMNSString+XML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+XML.h"; sourceTree = ""; }; - 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XML.m"; sourceTree = ""; }; - 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XMLTest.m"; sourceTree = ""; }; - 8BC0478D0DAE928A00C2D1CA /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = ""; }; - 8BC047900DAE928A00C2D1CA /* GTMObjectSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjectSingleton.h; sourceTree = ""; }; - 8BC047910DAE928A00C2D1CA /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = ""; }; - 8BC047920DAE928A00C2D1CA /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = ""; }; - 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegexTest.m; sourceTree = ""; }; - 8BC0479B0DAE928A00C2D1CA /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugSelectorValidation.h; sourceTree = ""; }; - 8BC0479C0DAE928A00C2D1CA /* GTMMethodCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMMethodCheck.h; sourceTree = ""; }; - 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheck.m; sourceTree = ""; }; - 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMMethodCheckTest.m; sourceTree = ""; }; - 8BC047A00DAE928A00C2D1CA /* GTMCALayer+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMCALayer+UnitTesting.h"; sourceTree = ""; }; - 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMCALayer+UnitTesting.m"; sourceTree = ""; }; - 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestMain.m; sourceTree = ""; }; - 8BC047EC0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSObject+UnitTesting.h"; sourceTree = ""; }; - 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSObject+UnitTesting.m"; sourceTree = ""; }; - 8BC047F60DAE928A00C2D1CA /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = ""; }; - 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = ""; }; - 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = GTMUIViewUnitTestingTest.gtmUTState; sourceTree = ""; }; - 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GTMUIViewUnitTestingTest.png; sourceTree = ""; }; - 8BC0480E0DAE928A00C2D1CA /* RunIPhoneUnitTest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunIPhoneUnitTest.sh; sourceTree = ""; }; - 8BC049850DAEC59100C2D1CA /* DebugiPhone20.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugiPhone20.xcconfig; sourceTree = ""; }; - 8BC049890DAEC59100C2D1CA /* ReleaseiPhone20.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseiPhone20.xcconfig; sourceTree = ""; }; - 8BC0498F0DAEC59100C2D1CA /* CodeCoverage.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CodeCoverage.xcconfig; sourceTree = ""; }; - 8BC04A6F0DAF144200C2D1CA /* GTMSystemVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSystemVersion.h; sourceTree = ""; }; - 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersionTest.m; sourceTree = ""; }; - 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSystemVersion.m; sourceTree = ""; }; - 8BC04D470DB0088500C2D1CA /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - 8BC04DE70DB023D400C2D1CA /* ReleaseNotes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReleaseNotes.txt; sourceTree = ""; }; - 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidation.m; sourceTree = ""; }; - 8BE839880E89C74A00C611B0 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDebugThreadValidation.h; sourceTree = ""; }; - 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDebugThreadValidationTest.m; sourceTree = ""; }; - F41711570ECDFF0400B9B276 /* GTMLightweightProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLightweightProxy.h; sourceTree = ""; }; - F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxy.m; sourceTree = ""; }; - F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLightweightProxyTest.m; sourceTree = ""; }; - F418AF6D0E755732004FB565 /* GTMiPhone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GTMiPhone-Info.plist"; sourceTree = ""; }; - F418AF910E755893004FB565 /* xcconfigs-readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xcconfigs-readme.txt"; sourceTree = ""; }; - F418AF930E7558DC004FB565 /* GTMExceptionalInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMExceptionalInlines.h; sourceTree = ""; }; - F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlines.m; sourceTree = ""; }; - F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMExceptionalInlinesTest.m; sourceTree = ""; }; - F418AFA20E7559C7004FB565 /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = ""; }; - F418AFA30E7559C7004FB565 /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = ""; }; - F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerTest.m; sourceTree = ""; }; - F418AFB10E755B4D004FB565 /* GTMLoggerRingBufferWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoggerRingBufferWriter.h; sourceTree = ""; }; - F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriter.m; sourceTree = ""; }; - F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoggerRingBufferWriterTest.m; sourceTree = ""; }; - F418AFCA0E755C94004FB565 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; - F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; - F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSDictionary+URLArgumentsTest.m"; sourceTree = ""; }; - F418AFD40E755D44004FB565 /* GTMPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMPath.h; sourceTree = ""; }; - F418AFD50E755D44004FB565 /* GTMPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPath.m; sourceTree = ""; }; - F418AFD60E755D44004FB565 /* GTMPathTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMPathTest.m; sourceTree = ""; }; - F439ADE80DBD3C0000BE9B91 /* GTMBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMBase64.h; sourceTree = ""; }; - F439ADE90DBD3C0000BE9B91 /* GTMBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64.m; sourceTree = ""; }; - F439ADEA0DBD3C0000BE9B91 /* GTMBase64Test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64Test.m; sourceTree = ""; }; - F439ADED0DBD3C4000BE9B91 /* GTMGeometryUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGeometryUtils.h; sourceTree = ""; }; - F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtils.m; sourceTree = ""; }; - F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMGeometryUtilsTest.m; sourceTree = ""; }; - F4E3B3D60EB5EF2400CB713D /* GTMUIFont+LineHeight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIFont+LineHeight.h"; sourceTree = ""; }; - F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIFont+LineHeight.m"; sourceTree = ""; }; - F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIFont+LineHeightTest.m"; sourceTree = ""; }; - F4EF8AD40EBFF814008DD6DA /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = ""; }; - F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTrace.m; sourceTree = ""; }; - F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTraceTest.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */, - 8B308BCE0DAD0B8400183556 /* QuartzCore.framework in Frameworks */, - 8BC04D480DB0088500C2D1CA /* libz.dylib in Frameworks */, - 8B3AA9340E0336AC007E31B5 /* CFNetwork.framework in Frameworks */, - 8B5A9E200E71CB6C005DA441 /* AddressBook.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - 8BC04DE70DB023D400C2D1CA /* ReleaseNotes.txt */, - 8BC047750DAE926E00C2D1CA /* GTMDefines.h */, - 8BA5F4060E75669000798036 /* iPhone */, - 8BC047760DAE928A00C2D1CA /* Foundation */, - 8BC0479A0DAE928A00C2D1CA /* DebugUtils */, - 8BC0479F0DAE928A00C2D1CA /* UnitTesting */, - 8BC049840DAEC59100C2D1CA /* XcodeConfig */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - 32CA4F630368D1EE00C91783 /* GTM_Prefix.pch */, - F418AF6D0E755732004FB565 /* GTMiPhone-Info.plist */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8B3AA9330E0336AC007E31B5 /* CFNetwork.framework */, - 8B5A9E1F0E71CB6C005DA441 /* AddressBook.framework */, - 8BC04D470DB0088500C2D1CA /* libz.dylib */, - 8B308BCD0DAD0B8400183556 /* QuartzCore.framework */, - 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */, - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 8BA5F4060E75669000798036 /* iPhone */ = { - isa = PBXGroup; - children = ( - 8BA5F4070E75669000798036 /* GTMABAddressBook.h */, - 8BA5F4080E75669000798036 /* GTMABAddressBook.m */, - 8BA5F52B0E7567AB00798036 /* GTMABAddressBookTest.m */, - F4E3B3D60EB5EF2400CB713D /* GTMUIFont+LineHeight.h */, - F4E3B3D70EB5EF2400CB713D /* GTMUIFont+LineHeight.m */, - F4E3B3E10EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m */, - 8BA5F4090E75669000798036 /* TestData */, - ); - path = iPhone; - sourceTree = ""; - }; - 8BA5F4090E75669000798036 /* TestData */ = { - isa = PBXGroup; - children = ( - 8BA5F40A0E75669000798036 /* phone.png */, - ); - path = TestData; - sourceTree = ""; - }; - 8BC047760DAE928A00C2D1CA /* Foundation */ = { - isa = PBXGroup; - children = ( - F439ADE80DBD3C0000BE9B91 /* GTMBase64.h */, - F439ADE90DBD3C0000BE9B91 /* GTMBase64.m */, - F439ADEA0DBD3C0000BE9B91 /* GTMBase64Test.m */, - 8BC047770DAE928A00C2D1CA /* GTMCalculatedRange.h */, - 8BC047780DAE928A00C2D1CA /* GTMCalculatedRange.m */, - 8BC047790DAE928A00C2D1CA /* GTMCalculatedRangeTest.m */, - F418AF930E7558DC004FB565 /* GTMExceptionalInlines.h */, - F418AF940E7558DC004FB565 /* GTMExceptionalInlines.m */, - F418AF950E7558DC004FB565 /* GTMExceptionalInlinesTest.m */, - 8BC0477A0DAE928A00C2D1CA /* GTMGarbageCollection.h */, - F439ADED0DBD3C4000BE9B91 /* GTMGeometryUtils.h */, - F439ADEE0DBD3C4000BE9B91 /* GTMGeometryUtils.m */, - F439ADEF0DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m */, - 8B3AA91F0E033624007E31B5 /* GTMHTTPServer.h */, - 8B3AA9200E033624007E31B5 /* GTMHTTPServer.m */, - 8B3AA9210E033624007E31B5 /* GTMHTTPServerTest.m */, - F41711570ECDFF0400B9B276 /* GTMLightweightProxy.h */, - F41711580ECDFF0400B9B276 /* GTMLightweightProxy.m */, - F41711590ECDFF0400B9B276 /* GTMLightweightProxyTest.m */, - F418AFA20E7559C7004FB565 /* GTMLogger.h */, - F418AFA30E7559C7004FB565 /* GTMLogger.m */, - F418AFA40E7559C7004FB565 /* GTMLoggerTest.m */, - F418AFB10E755B4D004FB565 /* GTMLoggerRingBufferWriter.h */, - F418AFB20E755B4D004FB565 /* GTMLoggerRingBufferWriter.m */, - F418AFB30E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m */, - 629446170EDE177A009295EA /* GTMNSArray+Merge.h */, - 629446180EDE177A009295EA /* GTMNSArray+Merge.m */, - 629446190EDE177A009295EA /* GTMNSArray+MergeTest.m */, - 8BC0477E0DAE928A00C2D1CA /* GTMNSData+zlib.h */, - 8BC0477F0DAE928A00C2D1CA /* GTMNSData+zlib.m */, - 8BC047800DAE928A00C2D1CA /* GTMNSData+zlibTest.m */, - F418AFCA0E755C94004FB565 /* GTMNSDictionary+URLArguments.h */, - F418AFCB0E755C94004FB565 /* GTMNSDictionary+URLArguments.m */, - F418AFCC0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m */, - 8BC047810DAE928A00C2D1CA /* GTMNSEnumerator+Filter.h */, - 8BC047820DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m */, - 8BC047830DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m */, - 8BC047840DAE928A00C2D1CA /* GTMNSFileManager+Path.h */, - 8BC047850DAE928A00C2D1CA /* GTMNSFileManager+Path.m */, - 8BC047860DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m */, - 8B6C18710F3769D200E51E5D /* GTMNSObject+KeyValueObserving.h */, - 8B6C18720F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m */, - 8B6C18730F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m */, - 8BC047870DAE928A00C2D1CA /* GTMNSString+HTML.h */, - 8BC047880DAE928A00C2D1CA /* GTMNSString+HTML.m */, - 8BC047890DAE928A00C2D1CA /* GTMNSString+HTMLTest.m */, - 8B3AA8F00E032FC7007E31B5 /* GTMNSString+URLArguments.h */, - 8B3AA8F10E032FC7007E31B5 /* GTMNSString+URLArguments.m */, - 8B3AA8F20E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m */, - 8BC0478A0DAE928A00C2D1CA /* GTMNSString+XML.h */, - 8BC0478B0DAE928A00C2D1CA /* GTMNSString+XML.m */, - 8BC0478C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m */, - 8BC0478D0DAE928A00C2D1CA /* GTMObjC2Runtime.h */, - 8BC047900DAE928A00C2D1CA /* GTMObjectSingleton.h */, - F418AFD40E755D44004FB565 /* GTMPath.h */, - F418AFD50E755D44004FB565 /* GTMPath.m */, - F418AFD60E755D44004FB565 /* GTMPathTest.m */, - 8BC047910DAE928A00C2D1CA /* GTMRegex.h */, - 8BC047920DAE928A00C2D1CA /* GTMRegex.m */, - 8BC047930DAE928A00C2D1CA /* GTMRegexTest.m */, - F4EF8AD40EBFF814008DD6DA /* GTMStackTrace.h */, - F4EF8AD50EBFF814008DD6DA /* GTMStackTrace.m */, - F4EF8AD60EBFF814008DD6DA /* GTMStackTraceTest.m */, - 8BC04A740DAF145200C2D1CA /* GTMSystemVersion.m */, - 8BC04A6F0DAF144200C2D1CA /* GTMSystemVersion.h */, - 8BC04A710DAF144700C2D1CA /* GTMSystemVersionTest.m */, - 8B41EC0D0E0711D40040CF9F /* GTMValidatingContainers.m */, - 8B41EC0E0E0711D40040CF9F /* GTMValidatingContainers.h */, - 8B41EC0C0E0711D40040CF9F /* GTMValidatingContainersTest.m */, - ); - path = Foundation; - sourceTree = ""; - }; - 8BC0479A0DAE928A00C2D1CA /* DebugUtils */ = { - isa = PBXGroup; - children = ( - 8BC0479B0DAE928A00C2D1CA /* GTMDebugSelectorValidation.h */, - 8BE83A650E8B059A00C611B0 /* GTMDebugThreadValidationTest.m */, - 8BE839870E89C74A00C611B0 /* GTMDebugThreadValidation.m */, - 8BE839880E89C74A00C611B0 /* GTMDebugThreadValidation.h */, - 8BC0479C0DAE928A00C2D1CA /* GTMMethodCheck.h */, - 8BC0479D0DAE928A00C2D1CA /* GTMMethodCheck.m */, - 8BC0479E0DAE928A00C2D1CA /* GTMMethodCheckTest.m */, - ); - path = DebugUtils; - sourceTree = ""; - }; - 8BC0479F0DAE928A00C2D1CA /* UnitTesting */ = { - isa = PBXGroup; - children = ( - 8B7DCEA90DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m */, - 8B3AA9270E033647007E31B5 /* GTMTestHTTPServer.h */, - 8B3AA9280E033647007E31B5 /* GTMTestHTTPServer.m */, - 8BC047A00DAE928A00C2D1CA /* GTMCALayer+UnitTesting.h */, - 8BC047A10DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m */, - 8B5547C70DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m */, - 8B5547C80DB3BBF20014CC1C /* GTMUIKit+UnitTesting.h */, - 8B5547C90DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m */, - 67A7820A0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.h */, - 67A7820B0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m */, - 8BC047DD0DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m */, - 8BC047EC0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.h */, - 8BC047ED0DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m */, - 8BC047F60DAE928A00C2D1CA /* GTMSenTestCase.h */, - 8BC047F70DAE928A00C2D1CA /* GTMSenTestCase.m */, - 8BC048010DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png */, - 8B7DCEAB0DFF4CA60017E983 /* GTMUnitTestDevLog.h */, - 8B7DCEAC0DFF4CA60017E983 /* GTMUnitTestDevLog.m */, - 8BC0480E0DAE928A00C2D1CA /* RunIPhoneUnitTest.sh */, - F435E49F0DC8F5290069CDE8 /* TestData */, - ); - path = UnitTesting; - sourceTree = ""; - }; - 8BC049840DAEC59100C2D1CA /* XcodeConfig */ = { - isa = PBXGroup; - children = ( - F418AF910E755893004FB565 /* xcconfigs-readme.txt */, - 8BC04F020DB15A5300C2D1CA /* Project */, - 8BC0498E0DAEC59100C2D1CA /* subconfig */, - ); - path = XcodeConfig; - sourceTree = ""; - }; - 8BC0498E0DAEC59100C2D1CA /* subconfig */ = { - isa = PBXGroup; - children = ( - 8BC0498F0DAEC59100C2D1CA /* CodeCoverage.xcconfig */, - ); - path = subconfig; - sourceTree = ""; - }; - 8BC04F020DB15A5300C2D1CA /* Project */ = { - isa = PBXGroup; - children = ( - 8BC049850DAEC59100C2D1CA /* DebugiPhone20.xcconfig */, - 8BC049890DAEC59100C2D1CA /* ReleaseiPhone20.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; - F435E49F0DC8F5290069CDE8 /* TestData */ = { - isa = PBXGroup; - children = ( - 8BC048000DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState */, - ); - path = TestData; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXLegacyTarget section */ - F4B541440E7F022B004738EC /* All UnitTests all SDKs */ = { - isa = PBXLegacyTarget; - buildArgumentsString = "\"All UnitTests\" \"All UnitTests\""; - buildConfigurationList = F4B5414A0E7F025F004738EC /* Build configuration list for PBXLegacyTarget "All UnitTests all SDKs" */; - buildPhases = ( - ); - buildToolPath = BuildScripts/BuildAllSDKs.sh; - buildWorkingDirectory = "$(SRCROOT)"; - dependencies = ( - ); - name = "All UnitTests all SDKs"; - passBuildSettingsInEnvironment = 1; - productName = "All UnitTests all SDKs"; - }; -/* End PBXLegacyTarget section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* GTMiPhoneUnitTesting */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTesting" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - 8B308AF70DAD072100183556 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GTMiPhoneUnitTesting; - productName = GTMiPhoneUIUnitTesting; - productReference = 1D6058910D05DD3D006BFB54 /* GTMiPhoneTest.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GTMiPhone" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - F4C7F9BF0DC62EC8009BEE5B /* All UnitTests */, - 1D6058900D05DD3D006BFB54 /* GTMiPhoneUnitTesting */, - F4B541440E7F022B004738EC /* All UnitTests all SDKs */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8BC0486B0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.gtmUTState in Resources */, - 8BC0486C0DAE928A00C2D1CA /* GTMUIViewUnitTestingTest.png in Resources */, - 8BC04DE80DB023D400C2D1CA /* ReleaseNotes.txt in Resources */, - 8BA5F40C0E75669000798036 /* phone.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8B308AF70DAD072100183556 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Nuke coverage data earch run\nexport GTM_REMOVE_GCOV_DATA=1\n# Run the unit tests in this test bundle.\n\"${SRCROOT}/UnitTesting/RunIPhoneUnitTest.sh\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8BC0480F0DAE928A00C2D1CA /* GTMCalculatedRange.m in Sources */, - 8BC048100DAE928A00C2D1CA /* GTMCalculatedRangeTest.m in Sources */, - 8BC048130DAE928A00C2D1CA /* GTMNSData+zlib.m in Sources */, - 8BC048150DAE928A00C2D1CA /* GTMNSEnumerator+Filter.m in Sources */, - 8BC048160DAE928A00C2D1CA /* GTMNSEnumerator+FilterTest.m in Sources */, - 8BC048170DAE928A00C2D1CA /* GTMNSFileManager+Path.m in Sources */, - 8BC048180DAE928A00C2D1CA /* GTMNSFileManager+PathTest.m in Sources */, - 8BC048190DAE928A00C2D1CA /* GTMNSString+HTML.m in Sources */, - 8BC0481A0DAE928A00C2D1CA /* GTMNSString+HTMLTest.m in Sources */, - 8BC0481B0DAE928A00C2D1CA /* GTMNSString+XML.m in Sources */, - 8BC0481C0DAE928A00C2D1CA /* GTMNSString+XMLTest.m in Sources */, - 8BC0481F0DAE928A00C2D1CA /* GTMRegex.m in Sources */, - 8BC048200DAE928A00C2D1CA /* GTMRegexTest.m in Sources */, - 8BC048250DAE928A00C2D1CA /* GTMMethodCheck.m in Sources */, - 8BC048260DAE928A00C2D1CA /* GTMMethodCheckTest.m in Sources */, - 8BC048270DAE928A00C2D1CA /* GTMCALayer+UnitTesting.m in Sources */, - 8BC048580DAE928A00C2D1CA /* GTMIPhoneUnitTestMain.m in Sources */, - 8BC048600DAE928A00C2D1CA /* GTMNSObject+UnitTesting.m in Sources */, - 8BC048650DAE928A00C2D1CA /* GTMSenTestCase.m in Sources */, - 8BC04A720DAF144700C2D1CA /* GTMSystemVersionTest.m in Sources */, - 8BC04A750DAF145200C2D1CA /* GTMSystemVersion.m in Sources */, - 8B5547CA0DB3BBF20014CC1C /* GTMUIKit+UnitTesting.m in Sources */, - 8B5547CB0DB3BBF20014CC1C /* GTMUIKit+UnitTestingTest.m in Sources */, - F439ADEB0DBD3C0000BE9B91 /* GTMBase64.m in Sources */, - F439ADEC0DBD3C0000BE9B91 /* GTMBase64Test.m in Sources */, - F439ADF00DBD3C4000BE9B91 /* GTMGeometryUtils.m in Sources */, - F439ADF10DBD3C4000BE9B91 /* GTMGeometryUtilsTest.m in Sources */, - 8B7DCEAA0DFF4C760017E983 /* GTMDevLogUnitTestingBridge.m in Sources */, - 8B7DCEAD0DFF4CA60017E983 /* GTMUnitTestDevLog.m in Sources */, - 67A7820C0E00927400EBF506 /* GTMIPhoneUnitTestDelegate.m in Sources */, - 8B3AA8F30E032FC7007E31B5 /* GTMNSString+URLArguments.m in Sources */, - 8B3AA8F40E032FC7007E31B5 /* GTMNSString+URLArgumentsTest.m in Sources */, - 8B3AA9240E033624007E31B5 /* GTMHTTPServer.m in Sources */, - 8B3AA9290E033647007E31B5 /* GTMTestHTTPServer.m in Sources */, - 8B41EC0F0E0711D40040CF9F /* GTMValidatingContainersTest.m in Sources */, - 8B41EC100E0711D40040CF9F /* GTMValidatingContainers.m in Sources */, - F418AF990E7558EC004FB565 /* GTMExceptionalInlines.m in Sources */, - F418AF9A0E7558EC004FB565 /* GTMExceptionalInlinesTest.m in Sources */, - F418AFA50E7559C7004FB565 /* GTMLogger.m in Sources */, - F418AFA60E7559C7004FB565 /* GTMLoggerTest.m in Sources */, - F418AFB40E755B4D004FB565 /* GTMLoggerRingBufferWriter.m in Sources */, - F418AFB50E755B4D004FB565 /* GTMLoggerRingBufferWriterTest.m in Sources */, - F418AFCD0E755C94004FB565 /* GTMNSDictionary+URLArguments.m in Sources */, - F418AFCE0E755C94004FB565 /* GTMNSDictionary+URLArgumentsTest.m in Sources */, - F418AFD70E755D44004FB565 /* GTMPath.m in Sources */, - F418AFD80E755D44004FB565 /* GTMPathTest.m in Sources */, - 8BA5F40B0E75669000798036 /* GTMABAddressBook.m in Sources */, - 8BA5F52C0E7567AB00798036 /* GTMABAddressBookTest.m in Sources */, - 8BDA25130E759A6400C9769D /* GTMHTTPServerTest.m in Sources */, - 8BDA25140E759A6500C9769D /* GTMNSData+zlibTest.m in Sources */, - 8BE839890E89C74B00C611B0 /* GTMDebugThreadValidation.m in Sources */, - 8BE83A660E8B059A00C611B0 /* GTMDebugThreadValidationTest.m in Sources */, - F4E3B3D80EB5EF2400CB713D /* GTMUIFont+LineHeight.m in Sources */, - F4E3B3E20EB5EF9A00CB713D /* GTMUIFont+LineHeightTest.m in Sources */, - F4EF8AD70EBFF814008DD6DA /* GTMStackTrace.m in Sources */, - F4EF8AD80EBFF814008DD6DA /* GTMStackTraceTest.m in Sources */, - F417115A0ECDFF0400B9B276 /* GTMLightweightProxy.m in Sources */, - F417115B0ECDFF0400B9B276 /* GTMLightweightProxyTest.m in Sources */, - 6294461C0EDE178D009295EA /* GTMNSArray+MergeTest.m in Sources */, - 6294461D0EDE17A0009295EA /* GTMNSArray+Merge.m in Sources */, - 8B6C18740F3769D200E51E5D /* GTMNSObject+KeyValueObserving.m in Sources */, - 8B6C18750F3769D200E51E5D /* GTMNSObject+KeyValueObservingTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - F4C7F9C40DC62ECD009BEE5B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1D6058900D05DD3D006BFB54 /* GTMiPhoneUnitTesting */; - targetProxy = F4C7F9C30DC62ECD009BEE5B /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "GTMiPhone-Info.plist"; - PRODUCT_NAME = GTMiPhoneTest; - SDKROOT = iphonesimulator2.0; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "GTMiPhone-Info.plist"; - PRODUCT_NAME = GTMiPhoneTest; - SDKROOT = iphonesimulator2.0; - }; - name = Release; - }; - 8BC0497D0DAEC48600C2D1CA /* Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BC049850DAEC59100C2D1CA /* DebugiPhone20.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = "Debug-gcov"; - }; - 8BC0497E0DAEC48600C2D1CA /* Debug-gcov */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BC0498F0DAEC59100C2D1CA /* CodeCoverage.xcconfig */; - buildSettings = { - INFOPLIST_FILE = "GTMiPhone-Info.plist"; - PRODUCT_NAME = GTMiPhoneTest; - SDKROOT = iphonesimulator2.0; - }; - name = "Debug-gcov"; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BC049850DAEC59100C2D1CA /* DebugiPhone20.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BC049890DAEC59100C2D1CA /* ReleaseiPhone20.xcconfig */; - buildSettings = { - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = GTM_Prefix.pch; - GCC_WARN_SHADOW = YES; - GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = "-Wno-unused-parameter"; - }; - name = Release; - }; - F4B541450E7F022B004738EC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests all SDKs"; - }; - name = Debug; - }; - F4B541460E7F022B004738EC /* Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests all SDKs"; - }; - name = "Debug-gcov"; - }; - F4B541470E7F022B004738EC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests all SDKs"; - }; - name = Release; - }; - F4C7F9C00DC62EC8009BEE5B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = Debug; - }; - F4C7F9C10DC62EC8009BEE5B /* Debug-gcov */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = "Debug-gcov"; - }; - F4C7F9C20DC62EC8009BEE5B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "All UnitTests"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "GTMiPhoneUnitTesting" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 8BC0497E0DAEC48600C2D1CA /* Debug-gcov */, - 1D6058950D05DD3E006BFB54 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GTMiPhone" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - 8BC0497D0DAEC48600C2D1CA /* Debug-gcov */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F4B5414A0E7F025F004738EC /* Build configuration list for PBXLegacyTarget "All UnitTests all SDKs" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F4B541450E7F022B004738EC /* Debug */, - F4B541460E7F022B004738EC /* Debug-gcov */, - F4B541470E7F022B004738EC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F4C7F9C50DC62F0C009BEE5B /* Build configuration list for PBXAggregateTarget "All UnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F4C7F9C00DC62EC8009BEE5B /* Debug */, - F4C7F9C10DC62EC8009BEE5B /* Debug-gcov */, - F4C7F9C20DC62EC8009BEE5B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/ReleaseNotes.txt b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/ReleaseNotes.txt deleted file mode 100644 index 7e76a234..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/ReleaseNotes.txt +++ /dev/null @@ -1,399 +0,0 @@ -Google Toolbox for Mac Release Notes - -Project site: http://code.google.com/p/google-toolbox-for-mac/ -Discussion group: http://groups.google.com/group/google-toolbox-for-mac - - -Release ?.?.? -Changes since 1.5.1 - -- Added GTMNSArray+Merge for merging one array into another with or without - a custom merging function, returning a new array with the merged contents. - -- Added GTMSignalHandler for simple signal handling (via kqueue/runloop). This - has gotten an api tweak, so some code that started using it will need - updating. Initial landing had a bug where it could leak memory due to - how CFRunLoops work, now fixed. - -- Fixed up GTMIPhoneUnitTestDelegate to be pickier about which tests it runs - -- Added GTMNSString+URLArguments to GTMiPhone - -- Added GTMHTTPFetcher and GTMHTTPServer to GTMiPhone - -- Made sure that build would work with iPhone device attached, and that all - tests run directly on the phone. - -- Added GTMValidatingContainers which are a set of mutable container classes - that allow you to have a selector on a target that is called to verify that - the objects being put into the container are valid. This can be controlled - at compile time so that you don't take the performance hit in a release build. - -- Added GTMPath, which represents an existing absolute path on the file system. - It also makes it very easy to contruct new paths in the file system as well - as whole directory hierarchies. - -- Added GTMNSString+Replace for a common replacement need. - -- Added NSString+FindFolder for two commen helpers for building paths to common - locations. - -- Added GTMLargeTypeWindow for doing display windows similar to Address Book - Large Type display for phone numbers. - -- Removed GTMNSWorkspace+ScreenSaver as it has always been a little dodgy due - to it's dependencies on undocumented frameworks, and the ScreenSaver - framework doesn't play nicely in GC mode. - -- Added property methods to GTMHTTPFetcher. These are convenient alternatives - to storing an NSDictionary in the userData. - -- Renamed GTMDevLog.m to GTMDevLogUnitTestingBridge.m and added some more - comments where it comes into play to hopefully make it more clear that it - isn't needed in most cases. - -- Fixed a potential GTMHTTPFetcher crash on failed authentication. - -- Added a obj-c logging package, GTMLogger, for applications that want an - application level logging system. See GTMLogger.h, GTMLogger+ASL.h, and - GTMLoggerRingBufferWriter.h for what the basic system and two optional - additions can do. - -- Added GTMNSMakeUncollectable for forcing objects to survive in a GC world. - -- Added GTMCFAutorelease to make the [GTMNSMakeCollectable(cfFoo) autorelease] - simpler and clearer, it's now just GTMCFAutorelease(cfFoo), and works in - both GC and non-GC world. - -- Added GTMIsGarbageCollectionEnabled to GTMGarbageCollection.h. See the note - there for it's usage. - -- Disabled the unittests for things on top of NSAppleScript in a GC world since - Apple has bugs and it can crash. See the unittest for a note about it. - -- GTMStackTrace now can figure out ObjC symbols. Downside it is now ObjC only. - -- GTMFourCharCode can now be used with NSAppleEventDescriptors easily. - typeType, typeKeyword, typeApplSignature, and typeEnumerated all get - turned into GTMFourCharCodes. - -- Fixed up crash in GTMLoggerRingBufferWriter when used with GC on. - -- Significant updates to GTMNSAppleScript+Handler allowing you to - list all handlers and properties (including inherited) and cleans up - several errors in how scripting was being handled. - -- Added GTMGetURLHandler class that gives you a very easy way of supporting - Get URL events just by adding a key to your plists, and adding a single - method to your class. See GTMGetURLHandler.m for more details. - -- Added XcodeProject, AppleScript, and InterfaceBuilder Spotlight Plugins. - Allows you to index .xcodeproj, .scpt, .scptd, .xib, .nib, and - .aib files. See Readmes beside individual projects in SpotlightPlugins. - -- Added GTMExceptionalInlines for dealing with cases where you get - warning: variable 'r' might be clobbered by 'longjmp' or 'vfork' - when using certain Apple inlined functions in @synchronized/@try blocks. - -- Updated to Xcode 3.1 so the GTM and iPhone project have the same baseline. - The code should work in other version of xcode, but the projects and - xcconfig files now use 3.1 features. - -- Added GTMABAddressBook which is a cocoa wrapper for the 'C' AddressBook - APIs on the iPhone. - -- Added several set environment variable statements to RunIPhoneUnitTest.sh - to encourage bugs to come out of the woodwork. - -- Added GTMTestTimer.h for doing high fidelity timings. - -- Added ability to control using zombies to iPhone unit test script. It can be - controlled by the GTM_DISABLE_ZOMBIES environment variable - -- Added ability to control termination to iPhone unit test script. It can be - controlled by the GTM_DISABLE_TERMINATION environment variable - -- Fixed several leaks found with leak checking enabled. - -- Updated the iPhone xcconfigs to support the different OS versions. - -- GTM_INLINE will make sure a function gets inlined, and provides a consistent - way for all GTM code to do it. - -- Added GTMDebugThreadValidation to allow you to enforce the fact that your - code must run in the main thread in DEBUG builds. - -- Updated some internals of the iPhone unittesting so it doesn't double print - the test descriptions, file names, or lines numbers of a test failure line. - Also includes the test names in the error output. - -- Changed the xcconfigs so that know it's easier to set different settings at - the different levels and not accidentally overwrite settings set at lower - levels in the "settings collapse". Also tightened up warnings significantly. - -- Changed how gtm_unitTestExposedBindingsTestValues works. If you have an - implementation of gtm_unitTestExposedBindingsTestValues in your own code - you will need to update to the new way of calling. See implementations in - GTMNSObject+BindingUnitTesting.m for details. - -- Added support for grabbing the build number for a particular OS in - GTMSystemVersion and easily comparing it to known build numbers, and switched - some types from in GTMSystemVersion from "int" to SInt32 to make 64 bit work - better. - -- Added support for SnowLeopard (10A96). We build cleanly with the 10.6 SDKs and - all radar checks were updated accordingly. Build All script was also updated - to build on SnowLeopard if you have the SDK available. - -- Turned off building ppc64 GTM because the SnowLeopard SDK currently - doesn't have ppc64 support, so SenTestCase isn't defined. This makes it - impossible to build the ppc64 10.5 config on SnowLeopard. We have left the - setting in the xcconfig for those of you who need it, but have disabled - it in the GTM project settings. - -- Turned on stack smashing protection on the debug builds for all Leopard - and above. - -- Added ability to easily do leak checking by defining the GTM_ENABLE_LEAKS - environment variable. It isn't on by default because several of Apple's - frameworks leak. You can work around these false positives by using the - GTM_LEAKS_SYMBOLS_TO_IGNORE environment variable. Also if you turn on leaks - make sure to turn off zombies by defining the GTM_DISABLE_ZOMBIES variable, - otherwise every memory allocation you do will look like a leak. - -- Added has ability to check if a script has an open handler to - GTMNSAppleScript+Handler. - -- GTMStackTrace support for building a trace from the call stack in an - NSException (for 10.5+ and iPhone). - -- GTMStackTrace works on 10.5+ (and iPhone) using NSThread to build the call - stack. - -- GTMLightweightProxy for breaking retain cycles. - -- Added GTM_EXTERN that makes it easier to mix and match objc and objc++ code. - -- Added GTMHotKeysTextField for display and editing of hot key settings. - -- Added GTMCarbonEvent for dealing with Carbon Events and HotKeys in a ObjC - like way. - -- Backported the Atomic Barrier Swap functions for Objective C back to Tiger. - -- Added a variety of new functions to GTMUnitTestingUtilities for checking - if the screensaver is in the way, waiting on user events, and generating - keystrokes. - -- If you are using any Carbon routines that log (DebugStr, AssertMacros.h) and - use GTMUnitTestDevLog, the log routines now go through _GTMDevLog so that - they can be caught in GTMUnitTestDevLog and verified like any _GTMDevLog calls - you may make. For an example of this in action see GTMCarbonEventTest.m. - Since we have turned this on, we have turned off using _debug frameworks - from the RunUnitTests.sh because it was reporting a pile of uninteresting - issues that were interfering with unittests. - -- Added GTMFileSystemKQueue. It provides a simple wrapper for kqueuing - something in the file system and tracking changes to it. Initial landing - had a bug where it could leak memory due to how CFRunLoops work, now fixed. - -- RunIPhoneUnitTest.sh now cleans up the user home directory and creates - a documents directory within it, used when requesting a NSDocumentDirectory. - -- Added GTMNSFileManager+Carbon which contains routines for path <-> Alias - conversion and path <-> FSRef conversion. - -- Added GTM_EXPORT as a standard way of exporting symbols. - -- Added GTMUnitTestDevLogDebug which extends GTMUnitTestDevLog to only look - for the messages in debug builds, to make it easier to validate messages - that are only present in debug builds. - -- Added GTM_SUPPORT_GC for controlling the inclusion of GC related code. - -- If you are using GTMUnitTestDevLog, it also tries to capture logs from - NSAssert. - -- Added GTM_FOREACH_OBJECT/GTM_FOREACH_KEY that uses NSEnumerator and - objectEnumerator/keyEnumerator on 10.4, but on 10.5+/iPhone uses - FastEnumeration. - -- GTMNSWorkspace+Running gives a variety of ways of determining the attributes - of running processes. - -- If the iPhone unittesting support is exiting when done, it now properly sets - the exit code based on test success/failure. - -- Added GTMNSObject+KeyValueObserving to make it easier on folks to do KVO - "correctly". Based on some excellent code by Michael Ash. - http://www.mikeash.com/?page=pyblog/key-value-observing-done-right.html - This has been added for iPhone and OS X. - -- Fixed up GTMSenTestCase on iPhone so that it has a description that matches - that of OCUnit. - -- Added GTMAbstractDOListener, GTMTransientRootProxy, and - GTMTransientRootPortProxy. These classes can be used to simplify the - use of distributed objects. GTMAbstractDOListener can be used to handle - connections from any type of port. GTMTransientRootProxy is designed for - using named connections while GTMTransientRootPortProxy is for connections - with supplied NSPorts. - -- Finally dropped GTMHTTPFetcher and GTMProgressMonitorInputStream, GData - versions now pretty much line up w/ these, so rather then both projects - maintaing them, we've dropped them and point folks at the gdata versions - which can be used independent of the rest of GData. - -- Changed gtm_createCGPath to gtm_cgPath in GTMNSBezier+CGPath. The path - returned is now autoreleased so you don't need to worry about releasing it. - -- Made some changes to the GTMNSObject+UnitTesting APIs. Specifically renamed - gtm_createUnitTestImage to gtm_unitTestImage. The value it returns is now - autoreleased, so no need to release it. Also change - gtm_createUnitTestBitmapOfSize:withData: to a C function. - -- Cleaned up GTM so that it passes the Clang checker without any warnings. - -- Added GTMLuminance for working with colors in HSL space easily. - -- Added GTMTheme for doing product wide theme modifications. - -- The Run*UnitTest.sh script now support an env var to have them delete the - current target/configs *.gcda files to avoid coverage data warning when you - edit source. - - -Release 1.5.1 -Changes since 1.5.0 -16-June-2008 - -- Fixed building tiger gcov w/ a directory path that contains a space. - - -Release 1.5.0 -Changes since 1.0.0 -13-June-2008 - -- Updated the project to Xcode 3. This is the only supported Xcode version - for the project. The code can build against the Tiger or Leopard SDKs, and - developers can pull individual files into a Xcode 2.x project and things - should work just fine. - -- Fixed up the prefix header of the project and prefix handing in the Unittest - Xcode Config. (thanks schafdog) - -- Fixed error in handling default compression for NSData+zlib - -- Changed name on API in NSString+XML and added another api to make this a - litte more clear. (thanks Kent) - -- GTMRegex - - Found and fixed a bug in the enumerators that was causing them to - incorrectly walk a string when using '^' in an expression. - - Added helpers for substring tests and unittests for the new apis. - - Added initializer that takes an outError to allow the collection of any - pattern parsing error message (in case the pattern came from a user and - complete error information is needed to message the user). - -- Added GTMScriptRunner for spawning scripts. - -- Added GTMNSFileManager+Path for two small helpers. - -- Added GTMNSWorkspace+ScreenSaver - -- Added GTMNSString+Data - -- added a common header (GTMDefines) for any common defines so the conditionals - are all in one place - -- Support for things compiling against the iPhone SDK - - Everything in the GTMiPhone project works in the iPhone - - Added iPhone xcconfig files - - Added iPhone unittests (See below) - -- More work on the UI unittests - - support pretty much any part of a UI - - support for CALayers - - full support for the iPhone - - the iPhone uses the same macro set at OCUnit, but has its own runtime - for running tests. - - extended capabilities of UIUnitTesting to be more flexible and give better - error reporting for states. - -- Renamed the actual framework to "GoogleToolboxForMac.framework" (it should - have matched the project on code.google.com from the start) - -- added a Debug-gcov target that will product debug bits w/ code coverage - support to check unittests, etc. - -- GTMDebugSelectorValidation to provide something to include in class impls - to get validation of object/selector pair(s) being implemented so you don't - have to wait for a runtime invocation failures. (especially useful for - things that take a success and failure selector so one doesn't always get - called) - -- added _GTMDevLog (really in GTMDefines) that are a set of macros that can be - used for logging. This allows any project to redefine them to direct logging - into its runtime needs. - -- Moved GTMGeometryUtils into Foundation from AppKit - -- Removed several HI* calls from GTMGeometryUtils as Carbon UI in general is - deprecated. - -- Xcode configs - - changed the layout to make it a little easier to tell how to use them. - - added Leopard or later configs - -- Unittest coverage greatly increased - -- Added RunMacOSUnitTests shell script. We run this script for starting up our - unittests because it turns on a variety of "enhancements" (such as zombies, - scribbling etc) to encourage our unittests to fail for us. - - https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=19915 - -- Remove NSColor+Theme and NSWorkspace+Theme as they are no longer needed for - testing things for unittests, instead GTMUnitTestingUtilities.m(Lines 64-79) - force the user settable things to ensure tests are consistent. - -- Added GTMBase64. - -- Added GTMHTTPFetcher and GTMProgressMonitorInputStream. - -- Moved the data files for unittests into subdirectories call TestData to - help make it a little easier to find files w/in the main directories. - -- GTMDelegatingTableColumn get an overhaul to match the 10.5 sdk so it's closer - to a dropin for previous sdks. - -- Added a lot of functionality to NSAppleEventDescriptor and NSAppleScript - allowing you to easily call labeled and positional handlers in an AppleScript, - get/set properties and get NSAppleEventDescriptors for most basic datatypes. - -- Added GTMFourCharCode for wrapping FourCharCodes in an ObjC object. Mainly for - use by the NSAppleEventDescriptor code, and also useful for storing them - in ObjC collection classes. - -- Added GTMStackTrace. - -- Added NSString+URLArguments and NSDictionary+URLArguments - -- Added GTMHTTPServer as a simple server but mainly for use in unittesting. - -- Added _GTMCompileAssert for doing compile time assertions to GTMDefines.h - -- Added GTMUnitTestDevLog and GTMTestCase for logging and tracking logs while - running unittests to verify what is being logged is what you expect. All - unittests should now inherit from GTMTestCase instead of SenTestCase to take - advantage of the new log tracking. See GTMUnitTestDevLog.h for details. - -- Extracted GTMIPhoneUnitTestDelegate from GTMIPhoneUnitTestMain.m to its own - file. Tests can now be run from another application. - - -Release 1.0.0 -14-January-2008 - -- Initial public release. Includes some simple utils, xcode configs, and - some support for doing unit tests of graphical things. diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/AppleScript.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/AppleScript.xcodeproj/project.pbxproj deleted file mode 100644 index 59c61524..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/AppleScript.xcodeproj/project.pbxproj +++ /dev/null @@ -1,355 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - 8BF1560D0E5B8C7A00D28B05 /* RunAllUnitTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 8BF156170E5B8C8F00D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */; - buildPhases = ( - F464A7FD0E5DBD92006B02E8 /* Prep Resource Files */, - 8BF1560C0E5B8C7A00D28B05 /* Run Tests */, - ); - dependencies = ( - 8BF156110E5B8C8000D28B05 /* PBXTargetDependency */, - ); - name = RunAllUnitTests; - productName = TestPlugin; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */; }; - 8B1D48A10E59F699000EB8CA /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B1D48A00E59F699000EB8CA /* main.c */; }; - 8B58F8EF0E5726DE00A0E02E /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /* CoreServices.framework */; }; - 8BF152920E5A334200D28B05 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF152910E5A334200D28B05 /* AppKit.framework */; }; - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; - F464A8630E5DCB9C006B02E8 /* schema.xml in Resources */ = {isa = PBXBuildFile; fileRef = F464A8620E5DCB9C006B02E8 /* schema.xml */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8BF156100E5B8C8000D28B05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = AppleScriptSpotlightPlugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = ""; }; - 8B1D48A00E59F699000EB8CA /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 8B1D48A30E59F6D0000EB8CA /* PluginID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginID.h; sourceTree = ""; }; - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = ReadMe.rtf; sourceTree = ""; }; - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundle.xcconfig; sourceTree = ""; }; - 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugTigerOrLater.xcconfig; sourceTree = ""; }; - 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseTigerOrLater.xcconfig; sourceTree = ""; }; - 8BF152910E5A334200D28B05 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 8D576316048677EA00EA77CD /* AppleScript.mdimporter */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AppleScript.mdimporter; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - C86B05260671AA6E00DD9006 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; - F464A8620E5DCB9C006B02E8 /* schema.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = schema.xml; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D576313048677EA00EA77CD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B58F8EF0E5726DE00A0E02E /* CoreServices.framework in Frameworks */, - 8BF152920E5A334200D28B05 /* AppKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */ = { - isa = PBXGroup; - children = ( - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */, - 8B58F84D0E5697B500A0E02E /* XcodeConfig */, - 8B1D489F0E59F699000EB8CA /* Common */, - 08FB77AFFE84173DC02AAC07 /* Source */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB6FE9D52B211CA2CBB /* Products */, - ); - comments = "// Copyright 2008 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n// use this file except in compliance with the License. You may obtain a copy\n// of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations under\n// the License."; - name = XcodeProjectSpotlightPlugin; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 8BF152910E5A334200D28B05 /* AppKit.framework */, - C86B05260671AA6E00DD9006 /* CoreServices.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - F464A8620E5DCB9C006B02E8 /* schema.xml */, - 8D576317048677EA00EA77CD /* Info.plist */, - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77AFFE84173DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 8B1D48A30E59F6D0000EB8CA /* PluginID.h */, - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB6FE9D52B211CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D576316048677EA00EA77CD /* AppleScript.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; - 8B1D489F0E59F699000EB8CA /* Common */ = { - isa = PBXGroup; - children = ( - 8B1D48A00E59F699000EB8CA /* main.c */, - ); - name = Common; - path = ../Common; - sourceTree = SOURCE_ROOT; - }; - 8B58F84D0E5697B500A0E02E /* XcodeConfig */ = { - isa = PBXGroup; - children = ( - 8B58F90F0E579A1300A0E02E /* Target */, - 8B58F9250E579A1300A0E02E /* Project */, - ); - name = XcodeConfig; - path = ../../XcodeConfig; - sourceTree = SOURCE_ROOT; - }; - 8B58F90F0E579A1300A0E02E /* Target */ = { - isa = PBXGroup; - children = ( - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */, - ); - path = Target; - sourceTree = ""; - }; - 8B58F9250E579A1300A0E02E /* Project */ = { - isa = PBXGroup; - children = ( - 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */, - 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D57630D048677EA00EA77CD /* AppleScriptSpotlightPlugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "AppleScriptSpotlightPlugin" */; - buildPhases = ( - 8D57630F048677EA00EA77CD /* Resources */, - 8D576311048677EA00EA77CD /* Sources */, - 8D576313048677EA00EA77CD /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AppleScriptSpotlightPlugin; - productInstallPath = /Library/Spotlight; - productName = XcodeProjectSpotlightPlugin; - productReference = 8D576316048677EA00EA77CD /* AppleScript.mdimporter */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "AppleScript" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8BF1560D0E5B8C7A00D28B05 /* RunAllUnitTests */, - 8D57630D048677EA00EA77CD /* AppleScriptSpotlightPlugin */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D57630F048677EA00EA77CD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, - F464A8630E5DCB9C006B02E8 /* schema.xml in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8BF1560C0E5B8C7A00D28B05 /* Run Tests */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Tests"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /usr/bin/python; - shellScript = "# Test of scpt and scptd importer\nimport os\nimport subprocess\n\n# file w/ resource fork, see previous script step for it's setup\ncmd = \"/usr/bin/mdimport -d 2 -g \" + os.environ[\"BUILT_PRODUCTS_DIR\"] + \"/AppleScript.mdimporter \" + os.environ[\"DERIVED_FILES_DIR\"] + \"/TestsData/test.scpt\"\nimporter_out = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE).stderr.read()\nif importer_out.find(\"kMDItemDescription = \\\"This is a description.\\\";\") == -1:\n\tprint \"error: Bad Description for test.scpt\"\n\texit(1)\nif importer_out.find(\"kMDItemTextContent = \\\"1 + 1\\\";\") == -1:\n\tprint \"error: Bad Content for test.scpt\"\n\texit(1)\n\n# quick test of scptd importer\n# Commented out due to radars:\n# 6160685 Need UTI for AppleScript script bundle \n# 6160646 UTIs declared in Spotlight Importers in Library/Spotlight not recognized\n# Basically we don't have a UTI for AppleScript script bundles (.scptd) defined by the system\n# even worse, UTIs defined by Spotlight Importers in the right location\n# don't get their UTIs that they declare recognized by LaunchServices.\n#aCmd = \"/usr/bin/mdimport -d 2 -g \" + os.environ[\"BUILT_PRODUCTS_DIR\"] + \"/AppleScript.mdimporter \" + os.environ[\"SOURCE_ROOT\"] + \"/TestData/test.scptd\"\n#importerOut = subprocess.Popen(aCmd, shell=True, stderr=subprocess.PIPE).stderr.read()\n#if importerOut.find(\"kMDItemDescription = \\\"This is a description.\\\";\") == -1:\n#\tprint \"error: Bad Description for test.scpt\"\n#\texit(1)\n#if importerOut.find(\"kMDItemTextContent = \\\"1 + 1\\\";\") == -1:\n#\tprint \"error: Bad Content for test.scpt\"\n#\texit(1)\n#\nexit(0)"; - }; - F464A7FD0E5DBD92006B02E8 /* Prep Resource Files */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Prep Resource Files"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# svn doesn't do mac resource forks. so our one test file that has a resource fork\n# is done w/ a tar file in source control, and here we untar so it is there for use\n# in the tests.\n\n# make sure the dir is empty to start\nrm -rf \"${DERIVED_FILES_DIR}/TestsData\"\nmkdir -p \"${DERIVED_FILES_DIR}/TestsData\"\n\n# extract into it\ntar -xvf \"${SOURCE_ROOT}/TestData/test.scpt.tar\" -C \"${DERIVED_FILES_DIR}/TestsData\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D576311048677EA00EA77CD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */, - 8B1D48A10E59F699000EB8CA /* main.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8BF156110E5B8C8000D28B05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8D57630D048677EA00EA77CD /* AppleScriptSpotlightPlugin */; - targetProxy = 8BF156100E5B8C8000D28B05 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C167EFE841241C02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 70138C850896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = AppleScript; - WRAPPER_EXTENSION = mdimporter; - }; - name = Debug; - }; - 70138C860896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = AppleScript; - WRAPPER_EXTENSION = mdimporter; - }; - name = Release; - }; - 70138C890896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 70138C8A0896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */; - buildSettings = { - }; - name = Release; - }; - 8BF1560E0E5B8C7A00D28B05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Debug; - }; - 8BF1560F0E5B8C7A00D28B05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "AppleScriptSpotlightPlugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C850896BE9A00968C2F /* Debug */, - 70138C860896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "AppleScript" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C890896BE9A00968C2F /* Debug */, - 70138C8A0896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8BF156170E5B8C8F00D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BF1560E0E5B8C7A00D28B05 /* Debug */, - 8BF1560F0E5B8C7A00D28B05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/English.lproj/InfoPlist.strings b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/English.lproj/InfoPlist.strings deleted file mode 100644 index 41ade49ed991c06601dd19ce13e40db11c9ea0da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmb7=y9&ZU6hx=?D}t4Z_^Jf4P{9X?g@S#|Lq$zO5(WKu_3TCjA&o5A+1#BwGk0Il zwimn^*PO8#oQa^;vGD47AaSF&6)PXD@IzwaGBfH&a%t&i%H9F H{&Ri diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/GetMetadataForFile.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/GetMetadataForFile.m deleted file mode 100644 index d635f405..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/GetMetadataForFile.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// GetMetadataForFile.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import - -static BOOL ImportScriptBundle(NSMutableDictionary *attributes, - NSString *path) { - NSBundle *scriptBundle = [NSBundle bundleWithPath:path]; - NSString *descriptionPath = [scriptBundle pathForResource:@"description" - ofType:@"rtfd"]; - NSAttributedString *attrString = nil; - if (descriptionPath) { - attrString = [[[NSAttributedString alloc] initWithPath:descriptionPath - documentAttributes:NULL] autorelease]; - } - BOOL wasGood = NO; - if (attrString) { - NSString *description = [attrString string]; - [attributes setObject:description forKey:(NSString*)kMDItemDescription]; - wasGood = YES; - } - - NSArray *scripts = [scriptBundle pathsForResourcesOfType:@"scpt" - inDirectory:@"Scripts"]; - NSEnumerator *scriptEnum = [scripts objectEnumerator]; - NSString *scriptPath; - NSMutableArray *scriptSources = [NSMutableArray array]; - while ((scriptPath = [scriptEnum nextObject])) { - NSURL *scriptURL = [NSURL fileURLWithPath:scriptPath]; - NSDictionary *error; - NSAppleScript *script - = [[[NSAppleScript alloc] initWithContentsOfURL:scriptURL - error:&error] - autorelease]; - NSString *scriptSource = [script source]; - if (scriptSource) { - [scriptSources addObject:scriptSource]; - } - } - if ([scriptSources count]) { - NSString *source = [scriptSources componentsJoinedByString:@"\n"]; - [attributes setObject:source forKey:(NSString*)kMDItemTextContent]; - wasGood = YES; - } - return wasGood; -} - -static BOOL ImportScript(NSMutableDictionary *attributes, - NSString *path) { - NSURL *fileURL = [NSURL fileURLWithPath:path]; - FSRef ref; - BOOL wasGood = NO; - if (CFURLGetFSRef((CFURLRef)fileURL, &ref)) { - ResFileRefNum resFile = FSOpenResFile(&ref, fsRdPerm); - if (resFile) { - const ResID kScriptDescriptionResID = 1128; - ResFileRefNum curResFile = CurResFile(); - UseResFile(resFile); - Handle res = Get1Resource('TEXT', kScriptDescriptionResID); - if (res) { - NSString *descString - = [[[NSString alloc]initWithBytes:(char*)(*res) - length:GetHandleSize(res) - encoding:NSMacOSRomanStringEncoding] autorelease]; - ReleaseResource(res); - if (descString) { - [attributes setObject:descString forKey:(NSString*)kMDItemDescription]; - wasGood = YES; - } - } - UseResFile(curResFile); - CloseResFile(resFile); - } - - NSDictionary *error; - NSAppleScript *script = [[[NSAppleScript alloc] initWithContentsOfURL:fileURL - error:&error] - autorelease]; - NSString *scriptSource = [script source]; - if (scriptSource) { - [attributes setObject:scriptSource forKey:(NSString*)kMDItemTextContent]; - wasGood = YES; - } - } - return wasGood; -} - -// Currently grabs the script description and puts it into kMDItemDescription. -// Grabs the script code and puts it into kMDItemTextContent. -Boolean GetMetadataForFile(void* interface, - CFMutableDictionaryRef cfAttributes, - CFStringRef cfContentTypeUTI, - CFStringRef cfPathToFile) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSMutableDictionary *attributes = (NSMutableDictionary*)cfAttributes; - NSString *pathToFile = (NSString*)cfPathToFile; - BOOL wasGood = NO; - if (UTTypeConformsTo(cfContentTypeUTI, CFSTR("com.apple.applescript.scriptbundle"))) { - wasGood = ImportScriptBundle(attributes, pathToFile); - } else if (UTTypeConformsTo(cfContentTypeUTI, CFSTR("com.apple.applescript.script"))) { - wasGood = ImportScript(attributes, pathToFile); - } - [pool release]; - return wasGood ? TRUE : FALSE; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/Info.plist deleted file mode 100644 index be3c6225..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/Info.plist +++ /dev/null @@ -1,74 +0,0 @@ - - - - - UTImportedTypeDeclarations - - - UTTypeIdentifier - com.apple.applescript.scriptbundle - UTTypeReferenceURL - http://www.apple.com/applescript/ - UTTypeDescription - Script Bundle - UTTypeConformsTo - - com.apple.package - public.composite-content - public.data - - UTTypeTagSpecification - - public.filename-extension - - scptd - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeRole - MDImporter - LSItemContentTypes - - com.apple.applescript.script - com.apple.applescript.scriptbundle - - - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleName - ${PRODUCT_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.google.spotlightimporter.${PRODUCT_NAME:identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleVersion - 1.0 - CFPlugInDynamicRegisterFunction - - CFPlugInDynamicRegistration - NO - CFPlugInFactories - - B498BAB3-7887-4E93-862A-19E74809248D0 - MetadataImporterPluginFactory - - CFPlugInTypes - - 8B08C4BF-415B-11D8-B3F9-0003936726FC - - B498BAB3-7887-4E93-862A-19E74809248D0 - - - CFPlugInUnloadFunction - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/PluginID.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/PluginID.h deleted file mode 100644 index 955a476f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/PluginID.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// PluginID.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#define PLUGIN_ID "B498BAB3-7887-4E93-862A-19E74809248D0" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/ReadMe.rtf b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/ReadMe.rtf deleted file mode 100644 index ee2fa250..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/ReadMe.rtf +++ /dev/null @@ -1,38 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\vieww10980\viewh11300\viewkind0 -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 AppleScript Spotlight Plugin\ -\ -Copyright 2008 Google Inc.\ -\ -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.\ -\ ------------------------\ -\ -This is a spotlight importer for AppleScripts.\ -It imports the description and the code of an AppleScript to make them easily searchable.\ -\ -To install the spotlight plugin, please copy it into /Applications/AppleScript/Script Editor/Contents/Library/Spotlight.\ -\ -If you are wondering why we just don't copy this one into /Library/Spotlight or ~/Library/Spotlight it is due to the fact that on 10.5 the UTIs declared by Spotlight importers don't seem to be recognized unless they are in an application's /Library/Spotlight directory. There isn't a UTI for AppleScript bundle files (.scptd) so we declare one in the importer. If the importer isn't located in an application's /Library/Spotlight directory, you won't be able to import .scptd files.\ -\ -Radars logged:\ -6160646 UTIs declared in Spotlight Importers in Library/Spotlight not recognized\ -6160685 Need UTI for AppleScript script bundle\ -6160707 UTCoreTypes.h needs to be updated\ -\ -It is part of the Google Toolbox For Mac project\ -http://code.google.com/p/google-toolbox-for-mac/} \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/TestData/test.scpt.tar b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/TestData/test.scpt.tar deleted file mode 100644 index 185b8dabef59849f587f402067f26036495afbbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10240 zcmeH|&1w@-6vzK}X4W5s|@-AUK_wOj>X!Y8QeiCSt&a3~5S2(oE=`7P=^O z>#mQ`7w{c?lB`_0Zms>io;wMa2yqvYdJc2%`I!4PKZgJHmc5T@Q>LD5^ixd7e6lEt zp#ADfCG&nb%&8RkVTd5`E9J5ut_A`8piC3s`qMei_^R77jkjDEX)D=`{NeR2sJ4p6`nZj)ckGTq(6G9DU_#o$*(2iCJs+Km%E z{OVv&m+ui>v-YB1qxgYLclFQfy?>KP@=u-*{hHNMit@}x@!c%h&+1X_n*$8vmvtSp z{YM0*t^FFM*8M-|zaLfn-}FC>$}6n@f8#e?i{<*er&Txb0$;ZRZE88B41yHj6j~x| zip_3z0hqAVmAbTH!T69J&%_L7ZR*5kmJ4-ZstX7kv%?atqs~or4k6SPDVe&|>PNSU zQ-ldqogs%gK@LTVggVWuQ{3_5=1!W#{eEw|ORBa{YaiedSpjp%71a;Ss}uDdc`T^o zJf)Lo*mRAF&gig<21%|#+Z-9{NT23}ZZ=wnHqYyB0a#MUusWUl4q}pS`gZ$lF!-F! z=Z*<50Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%kz&}dh EC+#1i&Hw-a diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/schema.xml b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/schema.xml deleted file mode 100644 index d057fd74..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/AppleScript/schema.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - kMDItemDescription - - - - - - - kMDItemDescription - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Common/main.c b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Common/main.c deleted file mode 100644 index 16eecacf..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Common/main.c +++ /dev/null @@ -1,204 +0,0 @@ -// -// main.c -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#include -#include -#include -#include "PluginID.h" - -// ----------------------------------------------------------------------------- -// constants -// ----------------------------------------------------------------------------- - - - -// -// Below is the generic glue code for all plug-ins. -// -// You should not have to modify this code aside from changing -// names if you decide to change the names defined in the Info.plist -// - -// ----------------------------------------------------------------------------- -// typedefs -// ----------------------------------------------------------------------------- - -// The import function to be implemented in GetMetadataForFile.c -Boolean GetMetadataForFile(void *thisInterface, - CFMutableDictionaryRef attributes, - CFStringRef contentTypeUTI, - CFStringRef pathToFile); - -// The layout for an instance of MetaDataImporterPlugIn -typedef struct __MetadataImporterPluginType { - MDImporterInterfaceStruct *conduitInterface; - CFUUIDRef factoryID; - UInt32 refCount; -} MetadataImporterPluginType; - -// ----------------------------------------------------------------------------- -// prototypes -// ----------------------------------------------------------------------------- -// Forward declaration for the IUnknown implementation. -// - -MetadataImporterPluginType* AllocMetadataImporterPluginType(CFUUIDRef inFactoryID); -void DeallocMetadataImporterPluginType(MetadataImporterPluginType *instance); -void* MetadataImporterPluginFactory(CFAllocatorRef allocator, CFUUIDRef typeID); -static ULONG MetadataImporterPluginAddRef(void *instance); -static ULONG MetadataImporterPluginRelease(void *instance); -static HRESULT MetadataImporterQueryInterface(void *instance, REFIID iid, LPVOID *ppv); -// ----------------------------------------------------------------------------- -// testInterfaceFtbl definition -// ----------------------------------------------------------------------------- -// The TestInterface function table. -// - -static MDImporterInterfaceStruct testInterfaceFtbl = { - NULL, - MetadataImporterQueryInterface, - MetadataImporterPluginAddRef, - MetadataImporterPluginRelease, - GetMetadataForFile -}; - - -// ----------------------------------------------------------------------------- -// AllocMetadataImporterPluginType -// ----------------------------------------------------------------------------- -// Utility function that allocates a new instance. -// You can do some initial setup for the importer here if you wish -// like allocating globals etc... -// -MetadataImporterPluginType *AllocMetadataImporterPluginType(CFUUIDRef inFactoryID) { - MetadataImporterPluginType *theNewInstance - = (MetadataImporterPluginType *)malloc(sizeof(MetadataImporterPluginType)); - memset(theNewInstance, 0, sizeof(MetadataImporterPluginType)); - - // Point to the function table - theNewInstance->conduitInterface = &testInterfaceFtbl; - - // Retain and keep an open instance refcount for each factory. - theNewInstance->factoryID = CFRetain(inFactoryID); - CFPlugInAddInstanceForFactory(inFactoryID); - - // This function returns the IUnknown interface so set the refCount to one. - theNewInstance->refCount = 1; - return theNewInstance; -} - -// ----------------------------------------------------------------------------- -// DeallocXcodeProjectSpotlightPluginMDImporterPluginType -// ----------------------------------------------------------------------------- -// Utility function that deallocates the instance when -// the refCount goes to zero. -// In the current implementation importer interfaces are never deallocated -// but implement this as this might change in the future -// -void DeallocMetadataImporterPluginType(MetadataImporterPluginType *instance) { - CFUUIDRef theFactoryID = instance->factoryID; - free(instance); - if (theFactoryID) { - CFPlugInRemoveInstanceForFactory(theFactoryID); - CFRelease(theFactoryID); - } -} - -// ----------------------------------------------------------------------------- -// MetadataImporterQueryInterface -// ----------------------------------------------------------------------------- -// Implementation of the IUnknown QueryInterface function. -// -HRESULT MetadataImporterQueryInterface(void *instance, REFIID iid, LPVOID *ppv) { - CFUUIDRef interfaceID = CFUUIDCreateFromUUIDBytes(kCFAllocatorDefault, iid); - MetadataImporterPluginType *plugin = ((MetadataImporterPluginType*)instance); - HRESULT result = E_INVALIDARG; - if (interfaceID) { - if (CFEqual(interfaceID, kMDImporterInterfaceID)) { - // If the Right interface was requested, bump the ref count, - // set the ppv parameter equal to the instance, and - // return good status. - plugin->conduitInterface->AddRef(instance); - *ppv = instance; - result = S_OK; - } else { - if (CFEqual(interfaceID, IUnknownUUID)) { - // If the IUnknown interface was requested, same as above. - plugin->conduitInterface->AddRef(instance); - *ppv = instance; - result = S_OK; - } else { - // Requested interface unknown, bail with error. - *ppv = NULL; - result = E_NOINTERFACE; - } - } - CFRelease(interfaceID); - } - return result; -} - -// ----------------------------------------------------------------------------- -// MetadataImporterPluginAddRef -// ----------------------------------------------------------------------------- -// Implementation of reference counting for this type. Whenever an interface -// is requested, bump the refCount for the instance. NOTE: returning the -// refcount is a convention but is not required so don't rely on it. -// -ULONG MetadataImporterPluginAddRef(void *instance) { - MetadataImporterPluginType *plugin = ((MetadataImporterPluginType*)instance); - plugin->refCount += 1; - return plugin->refCount; -} - -// ----------------------------------------------------------------------------- -// SampleCMPluginRelease -// ----------------------------------------------------------------------------- -// When an interface is released, decrement the refCount. -// If the refCount goes to zero, deallocate the instance. -// -ULONG MetadataImporterPluginRelease(void *instance) { - ULONG refCount = 0; - MetadataImporterPluginType *plugin = ((MetadataImporterPluginType*)instance); - plugin->refCount -= 1; - if (plugin->refCount == 0) { - DeallocMetadataImporterPluginType(plugin); - refCount = 0; - } else { - refCount = (plugin)->refCount; - } - return refCount; -} - -// ----------------------------------------------------------------------------- -// XcodeProjectSpotlightPluginMDImporterPluginFactory -// ----------------------------------------------------------------------------- -// Implementation of the factory function for this type. -// -void *MetadataImporterPluginFactory(CFAllocatorRef allocator, CFUUIDRef typeID) { - // If correct type is being requested, allocate an - //instance of TestType and return the IUnknown interface. - MetadataImporterPluginType *result = NULL; - if (CFEqual(typeID, kMDImporterTypeID)){ - CFUUIDRef uuid = CFUUIDCreateFromString(kCFAllocatorDefault, CFSTR(PLUGIN_ID)); - result = AllocMetadataImporterPluginType(uuid); - CFRelease(uuid); - } - // If the requested type is incorrect, return NULL. - return result; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh deleted file mode 100644 index f58c5b03..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPost.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2008 Google Inc. -# -# 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. -# - -su ${USER} -c "/usr/bin/mdimport -r '/Applications/AppleScript/Script Editor.app/Contents/Library/Spotlight/AppleScript.mdimporter'" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh deleted file mode 100644 index 65ff80d7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/ApplescriptInstallerPreflight.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright 2008 Google Inc. -# -# 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. -# - -# Set up the spotlight importer directory for Script Editor. - -mkdir -m 775 -p "/Applications/AppleScript/Script Editor.app/Contents/Library/Spotlight" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj deleted file mode 100644 index b957315c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/DeveloperSpotlightImporters.xcodeproj/project.pbxproj +++ /dev/null @@ -1,275 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - 8BDF62EC0ED0092A006AF1EF /* Build DeveloperSpotlightImporters */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 8BDF62F60ED00932006AF1EF /* Build configuration list for PBXAggregateTarget "Build DeveloperSpotlightImporters" */; - buildPhases = ( - 8BDF633B0ED00E50006AF1EF /* ShellScript */, - ); - dependencies = ( - 8BDF63110ED00993006AF1EF /* PBXTargetDependency */, - 8BDF633D0ED00E75006AF1EF /* PBXTargetDependency */, - 8BDF63130ED00993006AF1EF /* PBXTargetDependency */, - 8BDF633F0ED00E79006AF1EF /* PBXTargetDependency */, - 8BDF63150ED00993006AF1EF /* PBXTargetDependency */, - 8BDF63410ED00E7C006AF1EF /* PBXTargetDependency */, - ); - name = "Build DeveloperSpotlightImporters"; - productName = DeveloperSpotlightImporters; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXContainerItemProxy section */ - 8BDF63000ED00972006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8D576316048677EA00EA77CD; - remoteInfo = AppleScriptSpotlightPlugin; - }; - 8BDF63070ED0097D006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8D576316048677EA00EA77CD; - remoteInfo = InterfaceBuilderSpotlightPlugin; - }; - 8BDF630E0ED00983006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8D576316048677EA00EA77CD; - remoteInfo = XcodeProjectSpotlightPlugin; - }; - 8BDF63100ED00993006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = InterfaceBuilderSpotlightPlugin; - }; - 8BDF63120ED00993006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = AppleScriptSpotlightPlugin; - }; - 8BDF63140ED00993006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = XcodeProjectSpotlightPlugin; - }; - 8BDF633C0ED00E75006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8BF156AA0E5BA66300D28B05; - remoteInfo = RunAllUnitTests; - }; - 8BDF633E0ED00E79006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8BF1560D0E5B8C7A00D28B05; - remoteInfo = RunAllUnitTests; - }; - 8BDF63400ED00E7C006AF1EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8BF157070E5BAC8600D28B05; - remoteInfo = RunAllUnitTests; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AppleScript.xcodeproj; path = ../AppleScript/AppleScript.xcodeproj; sourceTree = SOURCE_ROOT; }; - 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = InterfaceBuilder.xcodeproj; path = ../InterfaceBuilder/InterfaceBuilder.xcodeproj; sourceTree = SOURCE_ROOT; }; - 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XcodeProject.xcodeproj; path = ../XcodeProject/XcodeProject.xcodeproj; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXGroup section */ - 8BDF62CC0ED008D2006AF1EF = { - isa = PBXGroup; - children = ( - 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */, - 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */, - 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */, - ); - sourceTree = ""; - }; - 8BDF62FC0ED00972006AF1EF /* Products */ = { - isa = PBXGroup; - children = ( - 8BDF63010ED00972006AF1EF /* AppleScript.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; - 8BDF63030ED0097D006AF1EF /* Products */ = { - isa = PBXGroup; - children = ( - 8BDF63080ED0097D006AF1EF /* InterfaceBuilder.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; - 8BDF630A0ED00983006AF1EF /* Products */ = { - isa = PBXGroup; - children = ( - 8BDF630F0ED00983006AF1EF /* XcodeProject.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXProject section */ - 8BDF62CE0ED008D2006AF1EF /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 8BDF62D10ED008D2006AF1EF /* Build configuration list for PBXProject "DeveloperSpotlightImporters" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 0; - mainGroup = 8BDF62CC0ED008D2006AF1EF; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 8BDF62FC0ED00972006AF1EF /* Products */; - ProjectRef = 8BDF62FB0ED00972006AF1EF /* AppleScript.xcodeproj */; - }, - { - ProductGroup = 8BDF63030ED0097D006AF1EF /* Products */; - ProjectRef = 8BDF63020ED0097D006AF1EF /* InterfaceBuilder.xcodeproj */; - }, - { - ProductGroup = 8BDF630A0ED00983006AF1EF /* Products */; - ProjectRef = 8BDF63090ED00983006AF1EF /* XcodeProject.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 8BDF62EC0ED0092A006AF1EF /* Build DeveloperSpotlightImporters */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 8BDF63010ED00972006AF1EF /* AppleScript.mdimporter */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = AppleScript.mdimporter; - remoteRef = 8BDF63000ED00972006AF1EF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 8BDF63080ED0097D006AF1EF /* InterfaceBuilder.mdimporter */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = InterfaceBuilder.mdimporter; - remoteRef = 8BDF63070ED0097D006AF1EF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 8BDF630F0ED00983006AF1EF /* XcodeProject.mdimporter */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = XcodeProject.mdimporter; - remoteRef = 8BDF630E0ED00983006AF1EF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8BDF633B0ED00E50006AF1EF /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# shell script goes here\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DeveloperSpotlightImporters.pkg\"\n/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -d \"${SRCROOT}/DeveloperSpotlightImporters.pmdoc\" -o \"${BUILT_PRODUCTS_DIR}/DeveloperSpotlightImporters.pkg\""; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8BDF63110ED00993006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = InterfaceBuilderSpotlightPlugin; - targetProxy = 8BDF63100ED00993006AF1EF /* PBXContainerItemProxy */; - }; - 8BDF63130ED00993006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AppleScriptSpotlightPlugin; - targetProxy = 8BDF63120ED00993006AF1EF /* PBXContainerItemProxy */; - }; - 8BDF63150ED00993006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = XcodeProjectSpotlightPlugin; - targetProxy = 8BDF63140ED00993006AF1EF /* PBXContainerItemProxy */; - }; - 8BDF633D0ED00E75006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RunAllUnitTests; - targetProxy = 8BDF633C0ED00E75006AF1EF /* PBXContainerItemProxy */; - }; - 8BDF633F0ED00E79006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RunAllUnitTests; - targetProxy = 8BDF633E0ED00E79006AF1EF /* PBXContainerItemProxy */; - }; - 8BDF63410ED00E7C006AF1EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RunAllUnitTests; - targetProxy = 8BDF63400ED00E7C006AF1EF /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 8BDF62D00ED008D2006AF1EF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - 8BDF62EE0ED0092A006AF1EF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = DeveloperSpotlightImporters; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 8BDF62D10ED008D2006AF1EF /* Build configuration list for PBXProject "DeveloperSpotlightImporters" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BDF62D00ED008D2006AF1EF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8BDF62F60ED00932006AF1EF /* Build configuration list for PBXAggregateTarget "Build DeveloperSpotlightImporters" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BDF62EE0ED0092A006AF1EF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 8BDF62CE0ED008D2006AF1EF /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh deleted file mode 100644 index 2850a6c4..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/InterfaceBuilderInstallerPost.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Copyright 2008 Google Inc. -# -# 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. -# - -su ${USER} -c "/usr/bin/mdimport -r '/Library/Spotlight/InterfaceBuilder.mdimporter'" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/License.rtf b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/License.rtf deleted file mode 100644 index 33fbacf0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/License.rtf +++ /dev/null @@ -1,13 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\margl1440\margr1440\vieww9000\viewh8400\viewkind0 -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 Copyright 2008 {\field{\*\fldinst{HYPERLINK "http://www.google.com"}}{\fldrslt Google Inc.}}\ -\ -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\ -\ -{\field{\*\fldinst{HYPERLINK "http://www.apache.org/licenses/LICENSE-2.0"}}{\fldrslt 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.} \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/Welcome.rtf b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/Welcome.rtf deleted file mode 100644 index 74f8854d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/Welcome.rtf +++ /dev/null @@ -1,11 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\margl1440\margr1440\vieww9000\viewh8400\viewkind0 -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 Finding source can be difficult. These are importers to help you index your various source files. Included in the package are importers for Xcode projects, AppleScript files, and Interface Builder files.\ -\ -These importers are part of the Google Toolbox For Mac project. Check it out at:\ -\ -{\field{\*\fldinst{HYPERLINK "http://code.google.com/p/google-toolbox-for-mac/"}}{\fldrslt http://code.google.com/p/google-toolbox-for-mac/}}} \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh deleted file mode 100644 index db9bfdb2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/Installer/XcodeProjectInstallerPost.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Copyright 2008 Google Inc. -# -# 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. -# - -su ${USER} -c "/usr/bin/mdimport -r '/Library/Spotlight/XcodeProject.mdimporter'" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/English.lproj/InfoPlist.strings b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/English.lproj/InfoPlist.strings deleted file mode 100644 index b15089414e9333701f89d727017a0f2e5f6cfa6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmb7=OAoZ@M_f{mN8)@2^&YYS1o%?*W z)sUmPQU&sL&`x(n3aMR*na)&FB}9i9^PTY*lecuT`m=JXd(=0pYN)LW&q!kpbwM4X zi{xp`REB!>wb`SRaY~{Mdj`B!b=d9_`z3oOOy?hpvS~w@+cRQ31!RU}2SsSB#={Z% zg2uS~b?dwdnsi3!PIxnn8$1}dHMZ7?T_|1k$R?;#`o?K-M*$uR2MfGUAvi*lXo -#import "GTMGarbageCollection.h" - -static BOOL AddStringsToTextContent(NSSet *stringSet, - NSMutableDictionary *attributes) { - BOOL wasGood = NO; - if ([stringSet count]) { - NSString *allStrings = [[stringSet allObjects] componentsJoinedByString:@"\n"]; - NSString *oldContent = [attributes objectForKey:(NSString*)kMDItemTextContent]; - if (oldContent) { - allStrings = [NSString stringWithFormat:@"%@\n%@", allStrings, oldContent]; - } - [attributes setObject:allStrings forKey:(NSString*)kMDItemTextContent]; - wasGood = YES; - } - return wasGood; -} - -static BOOL ExtractClasses(NSDictionary *ibToolData, - NSMutableDictionary *attributes) { - NSString *classesKey = @"com.apple.ibtool.document.classes"; - NSDictionary *classes = [ibToolData objectForKey:classesKey]; - NSMutableSet *classSet = [NSMutableSet set]; - NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; - NSArray *classPrefixesToIgnore - = [ud objectForKey:@"classPrefixesToIgnore"]; - if (!classPrefixesToIgnore) { - classPrefixesToIgnore = [NSArray arrayWithObjects: - @"IB", - @"FirstResponder", - @"NS", - @"Web", - nil]; - [ud setObject:classPrefixesToIgnore forKey:@"classPrefixesToIgnore"]; - [ud synchronize]; - } - NSDictionary *entry; - NSEnumerator *entryEnum = [classes objectEnumerator]; - while ((entry = [entryEnum nextObject])) { - NSString *classStr = [entry objectForKey:@"class"]; - if (classStr) { - NSString *prefix; - NSEnumerator *classPrefixesToIgnoreEnum - = [classPrefixesToIgnore objectEnumerator]; - while (classStr && (prefix = [classPrefixesToIgnoreEnum nextObject])) { - if ([classStr hasPrefix:prefix]) { - classStr = nil; - } - } - if (classStr) { - [classSet addObject:classStr]; - } - } - } - return AddStringsToTextContent(classSet, attributes); -} - -static BOOL ExtractLocalizableStrings(NSDictionary *ibToolData, - NSMutableDictionary *attributes) { - NSString *localStrKey = @"com.apple.ibtool.document.localizable-strings"; - NSDictionary *strings = [ibToolData objectForKey:localStrKey]; - NSMutableSet *stringSet = [NSMutableSet set]; - NSDictionary *entry; - NSEnumerator *entryEnum = [strings objectEnumerator]; - while ((entry = [entryEnum nextObject])) { - NSEnumerator *stringEnum = [entry objectEnumerator]; - NSString *string; - while ((string = [stringEnum nextObject])) { - [stringSet addObject:string]; - } - } - return AddStringsToTextContent(stringSet, attributes); -} - -static BOOL ExtractConnections(NSDictionary *ibToolData, - NSMutableDictionary *attributes) { - NSString *connectionsKey = @"com.apple.ibtool.document.connections"; - NSDictionary *connections = [ibToolData objectForKey:connectionsKey]; - NSMutableSet *connectionsSet = [NSMutableSet set]; - NSDictionary *entry; - NSEnumerator *entryEnum = [connections objectEnumerator]; - while ((entry = [entryEnum nextObject])) { - NSString *typeStr = [entry objectForKey:@"type"]; - NSString *value = nil; - if (typeStr) { - if ([typeStr isEqualToString:@"IBBindingConnection"]) { - value = [entry objectForKey:@"keypath"]; - } else if ([typeStr isEqualToString:@"IBCocoaOutletConnection"] || - [typeStr isEqualToString:@"IBCocoaActionConnection"]) { - value = [entry objectForKey:@"label"]; - } - if (value) { - [connectionsSet addObject:value]; - } - } - } - return AddStringsToTextContent(connectionsSet, attributes); -} - -static NSString *FindIBTool(void) { - NSString *result = nil; - - NSString *possiblePaths[] = { - @"/usr/bin/ibtool", - @"/Developer/usr/bin/ibtool", - }; - - NSFileManager *fm = [NSFileManager defaultManager]; - BOOL isDir; - for (size_t i = 0; i < (sizeof(possiblePaths) / sizeof(NSString*)); ++i) { - if ([fm fileExistsAtPath:possiblePaths[i] isDirectory:&isDir] && - !isDir) { - result = possiblePaths[i]; - break; - } - } - - return result; -} - -static NSData *CommandOutput(NSString *cmd) { - NSMutableData *result = [NSMutableData data]; - - // NOTE: we use popen/pclose in here instead of NSTask because NSTask uses - // a delayed selector to clean up the process it spawns, so since we have - // no runloop it gets ungly trying to clean up the zombie process. - - FILE *fp; - char buffer[2048]; - size_t len; - if((fp = popen([cmd UTF8String], "r"))) { - // spool it all in - while ((len = fread(buffer, 1, sizeof(buffer), fp)) > 0) { - [result appendBytes:buffer length:len]; - } - // make sure we get a clean exit status - if (pclose(fp) != 0) { - result = nil; - } - } - return result; -} - -static BOOL ImportIBFile(NSMutableDictionary *attributes, - NSString *pathToFile) { - BOOL wasGood = NO; - NSString *ibtoolPath = FindIBTool(); - if (ibtoolPath) { - NSString *cmdString - = @"%@ --classes --localizable-strings --connections \"%@\""; - NSString *cmd = [NSString stringWithFormat:cmdString, ibtoolPath, pathToFile]; - NSData *data = CommandOutput(cmd); - if (data) { - NSDictionary *results - = GTMCFAutorelease(CFPropertyListCreateFromXMLData(NULL, - (CFDataRef)data , - kCFPropertyListImmutable, - NULL)); - if (results && [results isKindOfClass:[NSDictionary class]]) { - wasGood = ExtractClasses(results, attributes); - wasGood |= ExtractLocalizableStrings(results, attributes); - wasGood |= ExtractConnections(results, attributes); - } - } - } - - return wasGood; -} - -// Grabs all of the classes, localizable strings, bindings, outlets -// and actions and sticks them into kMDItemTextContent. -Boolean GetMetadataForFile(void* interface, - CFMutableDictionaryRef cfAttributes, - CFStringRef contentTypeUTI, - CFStringRef cfPathToFile) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSMutableDictionary *attributes = (NSMutableDictionary*)cfAttributes; - NSString *pathToFile = (NSString*)cfPathToFile; - BOOL wasGood = NO; - if (UTTypeConformsTo(contentTypeUTI, - CFSTR("com.apple.interfacebuilder.document")) - || UTTypeConformsTo(contentTypeUTI, - CFSTR("com.apple.interfacebuilder.document.cocoa")) - || UTTypeConformsTo(contentTypeUTI, - CFSTR("com.apple.interfacebuilder.document.carbon"))) { - wasGood = ImportIBFile(attributes, pathToFile); - } - [pool release]; - return wasGood == NO ? FALSE : TRUE; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/Info.plist deleted file mode 100644 index 8412ec04..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeRole - MDImporter - LSItemContentTypes - - com.apple.interfacebuilder.document.cocoa - com.apple.interfacebuilder.document.carbon - com.apple.interfacebuilder.document - - - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleName - ${PRODUCT_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.google.spotlightimporter.${PRODUCT_NAME:identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleVersion - 1.0 - CFPlugInDynamicRegisterFunction - - CFPlugInDynamicRegistration - NO - CFPlugInFactories - - 556C7CA3-979B-44B2-BF4A-EADD88AFE0D9 - MetadataImporterPluginFactory - - CFPlugInTypes - - 8B08C4BF-415B-11D8-B3F9-0003936726FC - - 556C7CA3-979B-44B2-BF4A-EADD88AFE0D9 - - - CFPlugInUnloadFunction - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/InterfaceBuilder.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/InterfaceBuilder.xcodeproj/project.pbxproj deleted file mode 100644 index 9909cd4b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/InterfaceBuilder.xcodeproj/project.pbxproj +++ /dev/null @@ -1,339 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - 8BF156AA0E5BA66300D28B05 /* RunAllUnitTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 8BF156B10E5BA6A500D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */; - buildPhases = ( - 8BF156A90E5BA66300D28B05 /* ShellScript */, - ); - dependencies = ( - 8BF156AE0E5BA66700D28B05 /* PBXTargetDependency */, - ); - name = RunAllUnitTests; - productName = RunAllUnitTests; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */; }; - 8B1D48820E59F52A000EB8CA /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B1D48810E59F52A000EB8CA /* main.c */; }; - 8B58F8700E5726D000A0E02E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B58F86F0E5726D000A0E02E /* Foundation.framework */; }; - 8BF1543C0E5B42F500D28B05 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF1543B0E5B42F500D28B05 /* ApplicationServices.framework */; }; - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8BF156AD0E5BA66700D28B05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = InterfaceBuilderSpotlightPlugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = ""; }; - 8B1D48810E59F52A000EB8CA /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 8B1D48840E59F591000EB8CA /* PluginID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginID.h; sourceTree = ""; }; - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = ReadMe.rtf; sourceTree = ""; }; - 8B58F86F0E5726D000A0E02E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundle.xcconfig; sourceTree = ""; }; - 8BF1537B0E5A456F00D28B05 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMDefines.h; path = ../../GTMDefines.h; sourceTree = SOURCE_ROOT; }; - 8BF153C30E5A48C400D28B05 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMGarbageCollection.h; path = ../../Foundation/GTMGarbageCollection.h; sourceTree = SOURCE_ROOT; }; - 8BF1543B0E5B42F500D28B05 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - 8BF155B40E5B835900D28B05 /* ReleaseLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseLeopardOrLater.xcconfig; sourceTree = ""; }; - 8BF155B50E5B835900D28B05 /* DebugLeopardOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugLeopardOrLater.xcconfig; sourceTree = ""; }; - 8D576316048677EA00EA77CD /* InterfaceBuilder.mdimporter */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InterfaceBuilder.mdimporter; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D576313048677EA00EA77CD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B58F8700E5726D000A0E02E /* Foundation.framework in Frameworks */, - 8BF1543C0E5B42F500D28B05 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */ = { - isa = PBXGroup; - children = ( - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */, - 8B58F84D0E5697B500A0E02E /* XcodeConfig */, - 8B1D48800E59F52A000EB8CA /* Common */, - 08FB77AFFE84173DC02AAC07 /* Source */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB6FE9D52B211CA2CBB /* Products */, - ); - comments = "// Copyright 2008 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n// use this file except in compliance with the License. You may obtain a copy\n// of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations under\n// the License."; - name = XcodeProjectSpotlightPlugin; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 8BF1543B0E5B42F500D28B05 /* ApplicationServices.framework */, - 8B58F86F0E5726D000A0E02E /* Foundation.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 8D576317048677EA00EA77CD /* Info.plist */, - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77AFFE84173DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 8BF1537B0E5A456F00D28B05 /* GTMDefines.h */, - 8BF153C30E5A48C400D28B05 /* GTMGarbageCollection.h */, - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */, - 8B1D48840E59F591000EB8CA /* PluginID.h */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB6FE9D52B211CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D576316048677EA00EA77CD /* InterfaceBuilder.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; - 8B1D48800E59F52A000EB8CA /* Common */ = { - isa = PBXGroup; - children = ( - 8B1D48810E59F52A000EB8CA /* main.c */, - ); - name = Common; - path = ../Common; - sourceTree = SOURCE_ROOT; - }; - 8B58F84D0E5697B500A0E02E /* XcodeConfig */ = { - isa = PBXGroup; - children = ( - 8B58F90F0E579A1300A0E02E /* Target */, - 8B58F9250E579A1300A0E02E /* Project */, - ); - name = XcodeConfig; - path = ../../XcodeConfig; - sourceTree = SOURCE_ROOT; - }; - 8B58F90F0E579A1300A0E02E /* Target */ = { - isa = PBXGroup; - children = ( - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */, - ); - path = Target; - sourceTree = ""; - }; - 8B58F9250E579A1300A0E02E /* Project */ = { - isa = PBXGroup; - children = ( - 8BF155B40E5B835900D28B05 /* ReleaseLeopardOrLater.xcconfig */, - 8BF155B50E5B835900D28B05 /* DebugLeopardOrLater.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D57630D048677EA00EA77CD /* InterfaceBuilderSpotlightPlugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "InterfaceBuilderSpotlightPlugin" */; - buildPhases = ( - 8D57630F048677EA00EA77CD /* Resources */, - 8D576311048677EA00EA77CD /* Sources */, - 8D576313048677EA00EA77CD /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = InterfaceBuilderSpotlightPlugin; - productInstallPath = /Library/Spotlight; - productName = XcodeProjectSpotlightPlugin; - productReference = 8D576316048677EA00EA77CD /* InterfaceBuilder.mdimporter */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "InterfaceBuilder" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8BF156AA0E5BA66300D28B05 /* RunAllUnitTests */, - 8D57630D048677EA00EA77CD /* InterfaceBuilderSpotlightPlugin */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D57630F048677EA00EA77CD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8BF156A90E5BA66300D28B05 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /usr/bin/python; - shellScript = "# Test of xib and nib importer for carbon and cocoa\n\nimport os\nimport subprocess\n\nfile_names = [ \"NibCocoaTest.nib\", \"XibCocoaTest.xib\"]\nfor file_name in file_names:\n\tcmd = \"/usr/bin/mdimport -d 2 -g \" + os.environ[\"BUILT_PRODUCTS_DIR\"] + \"/InterfaceBuilder.mdimporter \" + os.environ[\"SOURCE_ROOT\"] + \"/TestData/\" + file_name\n\timporter_out = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE).stderr.read()\n\tif importer_out.find(\"TestCustomClass\") == -1 or importer_out.find(\"testAction:\") == -1 or importer_out.find(\"testBinding\") == -1 or importer_out.find(\"TestLocalizedString\") == -1:\n\t\tprint \"error: Failed to import for \" + file_name\n\t\tprint importer_out\n\t\texit(1)\n\nfile_names = [ \"NibCarbonTest.nib\", \"XibCarbonTest.xib\"]\nfor file_name in file_names:\n\tcmd = \"/usr/bin/mdimport -d 2 -g \" + os.environ[\"BUILT_PRODUCTS_DIR\"] + \"/InterfaceBuilder.mdimporter \" + os.environ[\"SOURCE_ROOT\"] + \"/TestData/\" + file_name\n\timporter_out = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE).stderr.read()\n\tif importer_out.find(\"TestLocalizedString\") == -1:\n\t\tprint \"error: Failed to import for \" + file_name\n\t\tprint importer_out\n\t\texit(1)\n\n#if importer_out.find(\"kMDItemDescription = \\\"This is a description.\\\";\") == -1:\n#\tprint \"error: Bad Description for test.scpt\"\n#\texit(1)\n#if importer_out.find(\"kMDItemTextContent = \\\"1 + 1\\\";\") == -1:\n#\tprint \"error: Bad Content for test.scpt\"\n#\texit(1)\n\nexit(0)"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D576311048677EA00EA77CD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */, - 8B1D48820E59F52A000EB8CA /* main.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8BF156AE0E5BA66700D28B05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8D57630D048677EA00EA77CD /* InterfaceBuilderSpotlightPlugin */; - targetProxy = 8BF156AD0E5BA66700D28B05 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C167EFE841241C02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 70138C850896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = InterfaceBuilder; - WRAPPER_EXTENSION = mdimporter; - }; - name = Debug; - }; - 70138C860896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = InterfaceBuilder; - WRAPPER_EXTENSION = mdimporter; - }; - name = Release; - }; - 70138C890896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BF155B50E5B835900D28B05 /* DebugLeopardOrLater.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 70138C8A0896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8BF155B40E5B835900D28B05 /* ReleaseLeopardOrLater.xcconfig */; - buildSettings = { - }; - name = Release; - }; - 8BF156AB0E5BA66300D28B05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Debug; - }; - 8BF156AC0E5BA66300D28B05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "InterfaceBuilderSpotlightPlugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C850896BE9A00968C2F /* Debug */, - 70138C860896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "InterfaceBuilder" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C890896BE9A00968C2F /* Debug */, - 70138C8A0896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8BF156B10E5BA6A500D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BF156AB0E5BA66300D28B05 /* Debug */, - 8BF156AC0E5BA66300D28B05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/PluginID.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/PluginID.h deleted file mode 100644 index c89c0913..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/PluginID.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// PluginID.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#define PLUGIN_ID "556C7CA3-979B-44B2-BF4A-EADD88AFE0D9" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/ReadMe.rtf b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/ReadMe.rtf deleted file mode 100644 index 16cd43d2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/ReadMe.rtf +++ /dev/null @@ -1,34 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 InterfaceBuilder Spotlight Plugin\ -\ -Copyright 2008 Google Inc.\ -\ -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.\ -\ ------------------------\ -\ -This is a spotlight importer for nibs and xibs.\ -Makes it easy for you to search nibs and xibs for classes they use.\ -Class names, bindings, outlets, actions and localizable strings are added \ -to the text content attribute.\ -\ -To install the spotlight plugin, please copy it into /Library/Spotlight or ~/Library/Spotlight.\ -\ -This spotlight plugin requires Xcode 3 or better (specifically ibtool).\ -\ -It is part of the Google Toolbox For Mac project\ -http://code.google.com/p/google-toolbox-for-mac/} \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCarbonTest.xib b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCarbonTest.xib deleted file mode 100644 index aea96ba6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCarbonTest.xib +++ /dev/null @@ -1,3106 +0,0 @@ - - - - 1050 - 9E17 - 672 - 949.33 - 352.00 - - YES - - - - - YES - com.apple.InterfaceBuilder.CarbonPlugin - - - YES - - Menu - - YES - - - TestLocalizedString - - 1048576 - 2147483647 - - NSMenuCheckmark - 1623195648 - - - NSMenuMixedState - 1623195648 - - submenuAction: - - TestLocalizedString - - YES - - - About NewApplication - - 2147483647 - - - About NewApplication - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - UHJlZmVyZW5jZXPigKY - , - 1048576 - 2147483647 - - - UHJlZmVyZW5jZXPigKY - , - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - Services - - - - - - - - - Services - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Hide NewApplication - h - 1048576 - 2147483647 - - - Hide NewApplication - h - - - - - - - - - - - - - - - - - - - - - - Hide Others - h - 1572864 - 2147483647 - - - Hide Others - h - - - - - - - - - - - - - - - - - - - - - - Show All - - 1048576 - 2147483647 - - - Show All - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Quit NewApplication - q - 1048576 - 2147483647 - - - Quit NewApplication - q - - - - - - - - - - - - - - - - - - - - - - _NSAppleMenu - - TestLocalizedString - - - - - - - - - TestLocalizedString - - - - - - - - - - - - - - - - - - - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New - n - 1048576 - 2147483647 - - - New - n - - - - - - - - - - - - - - - - - - - - - - T3BlbuKApg - o - 1048576 - 2147483647 - - - T3BlbuKApg - o - - - - - - - - - - - - - - - - - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - YES - - - Clear Menu - - 1048576 - 2147483647 - - - Clear Menu - - - - - - - - - - - - - - - - - - - - - - Open Recent - - - - - - - - - Open Recent - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Close - w - 1048576 - 2147483647 - - - Close - w - - - - - - - - - - - - - - - - - - - - - - Save - s - 1048576 - 2147483647 - - - Save - s - - - - - - - - - - - - - - - - - - - - - - U2F2ZSBBc+KApg - S - 1179648 - 2147483647 - - - U2F2ZSBBc+KApg - S - - - - - - - - - - - - - - - - - - - - - - Revert to Saved - - 2147483647 - - - Revert to Saved - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - UGFnZSBTZXR1cOKApg - P - 1179648 - 2147483647 - - - UGFnZSBTZXR1cOKApg - P - - - - - - - - - - - - - - - - - - - - - - UHJpbnTigKY - p - 1048576 - 2147483647 - - - UHJpbnTigKY - p - - - - - - - - - - - - - - - - - - - - - File - - - - - - - - - File - - - - - - - - - - - - - - - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - Undo - z - - - - - - - - - - - - - - - - - - - - - - Redo - Z - 1179648 - 2147483647 - - - Redo - Z - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Cut - x - 1048576 - 2147483647 - - - Cut - x - - - - - - - - - - - - - - - - - - - - - - Copy - c - 1048576 - 2147483647 - - - Copy - c - - - - - - - - - - - - - - - - - - - - - - Paste - v - 1048576 - 2147483647 - - - Paste - v - - - - - - - - - - - - - - - - - - - - - - Delete - - 1048576 - 2147483647 - - - Delete - - - - - - - - - - - - - - - - - - - - - - - Select All - a - 1048576 - 2147483647 - - - Select All - a - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - RmluZOKApg - f - 1048576 - 2147483647 - - - 1 - RmluZOKApg - f - - - - - - - - - - - - - - - - - - - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - Find Next - g - - - - - - - - - - - - - - - - - - - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - Find Previous - G - - - - - - - - - - - - - - - - - - - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - Use Selection for Find - e - - - - - - - - - - - - - - - - - - - - - - Jump to Selection - j - 1048576 - 2147483647 - - - Jump to Selection - j - - - - - - - - - - - - - - - - - - - - - Find - - - - - - - - - Find - - - - - - - - - - - - - - - - - - - - - - - Spelling - - 1048576 - 2147483647 - - - submenuAction: - - Spelling - - YES - - - U2hvdyBTcGVsbGluZ+KApg - : - 1048576 - 2147483647 - - - U2hvdyBTcGVsbGluZ+KApg - : - - - - - - - - - - - - - - - - - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - Check Spelling - ; - - - - - - - - - - - - - - - - - - - - - - Check Spelling as You Type - - 1048576 - 2147483647 - - - Check Spelling as You Type - - - - - - - - - - - - - - - - - - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - Check Grammar With Spelling - - - - - - - - - - - - - - - - - - - - - - Spelling - - - - - - - - - Spelling - - - - - - - - - - - - - - - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Smart Copy Paste - - 1048576 - 2147483647 - - - Smart Copy Paste - - - - - - - - - - - - - - - - - - - - - - - Smart Quotes - - 1048576 - 2147483647 - - - Smart Quotes - - - - - - - - - - - - - - - - - - - - - - - Smart Links - - 1048576 - 2147483647 - - - Smart Links - - - - - - - - - - - - - - - - - - - - - - Substitutions - - - - - - - - - Substitutions - - - - - - - - - - - - - - - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - Start Speaking - - - - - - - - - - - - - - - - - - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - Stop Speaking - - - - - - - - - - - - - - - - - - - - - - Speech - - - - - - - - - Speech - - - - - - - - - - - - - - - - - - - - - - Edit - - - - - - - - - Edit - - - - - - - - - - - - - - - - - - - - - - - Format - - 1048576 - 2147483647 - - - submenuAction: - - Format - - YES - - - Show Fonts - t - 1048576 - 2147483647 - - - Show Fonts - t - - - - - - - - - - - - - - - - - - - - - - Show Colors - C - 1179648 - 2147483647 - - - Show Colors - C - - - - - - - - - - - - - - - - - - - - - - Format - - - - - - - - - Format - - - - - - - - - - - - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - Show Toolbar - t - - - - - - - - - - - - - - - - - - - - - - Q3VzdG9taXplIFRvb2xiYXLigKY - - 1048576 - 2147483647 - - - Q3VzdG9taXplIFRvb2xiYXLigKY - - - - - - - - - - - - - - - - - - - - - - View - - - - - - - - - View - - - - - - - - - - - - - - - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - Minimize - m - - - - - - - - - - - - - - - - - - - - - - Zoom - - 1048576 - 2147483647 - - - Zoom - - - - - - - - - - - - - - - - - - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - - - - - - - - - - - - - - - - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - Bring All to Front - - - - - - - - - - - - - - - - - - - - - - - _NSWindowsMenu - - Window - - - - - - - - - Window - - - - - - - - - - - - - - - - - - - - - - - Help - - 1048576 - 2147483647 - - - submenuAction: - - Help - - YES - - - NewApplication Help - ? - 1048576 - 2147483647 - - - NewApplication Help - ? - - - - - - - - - - - - - - - - - - - - - - _NSWindowsMenu - - Help - - - - - - - - - Help - - - - - - - - - - - - - - - - - - - - - - - _NSMainMenu - - Menu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Window - - - 256 - {480, 360} - - - - - - - - - - - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - - - - {{300, 300}, {480, 360}} - {{0, 48}, {1920, 1129}} - - - YES - - - - - - YES - - - - YES - - 0 - - YES - - - - - - 316 - - - YES - - - - Window - - - 317 - - - - - 399 - - - YES - - - - - - - - - - MainMenu - - - 400 - - - YES - - - - - - 401 - - - YES - - - - - - 402 - - - YES - - - - - - 403 - - - YES - - - - - - 404 - - - YES - - - - - - 405 - - - YES - - - - - - 406 - - - YES - - - - - - 407 - - - YES - - - - - - - - - - - - - - - - 408 - - - YES - - - - - - 409 - - - - - 410 - - - - - 411 - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - YES - - - - - - 420 - - - - - 421 - - - YES - - - - - - - - - - - - - - - - - - 422 - - - YES - - - - - - 423 - - - YES - - - - - - 424 - - - YES - - - - - - 425 - - - - - 426 - - - - - 427 - - - YES - - - - - - 428 - - - - - 429 - - - - - 430 - - - - - 431 - - - - - 432 - - - - - 433 - - - - - 434 - - - - - 435 - - - YES - - - - - - - - - 436 - - - - - 437 - - - - - 438 - - - - - 439 - - - - - 440 - - - YES - - - - - - - - - - 441 - - - - - 442 - - - - - 443 - - - - - 444 - - - - - 445 - - - - - 446 - - - YES - - - - - - - 447 - - - - - 448 - - - - - 449 - - - YES - - - - - - - - 450 - - - - - 451 - - - - - 452 - - - - - 453 - - - YES - - - - - - - - - 454 - - - - - 455 - - - - - 456 - - - - - 457 - - - - - 458 - - - YES - - - - - - - - - - - - - - - - 459 - - - - - 460 - - - - - 461 - - - - - 462 - - - - - 463 - - - YES - - - - - - 464 - - - - - 465 - - - - - 466 - - - - - 467 - - - - - 468 - - - - - 469 - - - - - 470 - - - - - 471 - - - YES - - - - - - 472 - - - - - 473 - - - YES - - - - - - - 474 - - - - - 475 - - - - - 476 - - - YES - - - - - - - 477 - - - - - 478 - - - - - - - YES - - YES - 316.IBEditorWindowLastContentRect - 316.IBPluginDependency - 316.IBWindowTemplateEditedContentRect - 316.editorWindowContentRectSynchronizationRect - 317.IBPluginDependency - 399.IBEditorWindowLastContentRect - 399.IBPluginDependency - 399.editorWindowContentRectSynchronizationRect - 400.IBPluginDependency - 401.IBPluginDependency - 402.IBPluginDependency - 403.IBPluginDependency - 404.IBPluginDependency - 405.IBPluginDependency - 406.IBPluginDependency - 407.IBPluginDependency - 407.editorWindowContentRectSynchronizationRect - 408.IBPluginDependency - 409.IBPluginDependency - 410.IBPluginDependency - 411.IBPluginDependency - 412.IBPluginDependency - 413.IBPluginDependency - 414.IBPluginDependency - 415.IBPluginDependency - 416.IBPluginDependency - 417.IBPluginDependency - 418.IBPluginDependency - 419.IBPluginDependency - 419.editorWindowContentRectSynchronizationRect - 420.IBPluginDependency - 421.IBPluginDependency - 421.editorWindowContentRectSynchronizationRect - 422.IBPluginDependency - 423.IBPluginDependency - 424.IBPluginDependency - 425.IBPluginDependency - 426.IBPluginDependency - 427.IBPluginDependency - 428.IBPluginDependency - 429.IBPluginDependency - 430.IBPluginDependency - 431.IBPluginDependency - 432.IBPluginDependency - 433.IBPluginDependency - 434.IBPluginDependency - 435.IBPluginDependency - 435.editorWindowContentRectSynchronizationRect - 436.IBPluginDependency - 437.IBPluginDependency - 438.IBPluginDependency - 439.IBPluginDependency - 440.IBPluginDependency - 440.editorWindowContentRectSynchronizationRect - 441.IBPluginDependency - 442.IBPluginDependency - 443.IBPluginDependency - 444.IBPluginDependency - 445.IBPluginDependency - 446.IBPluginDependency - 446.editorWindowContentRectSynchronizationRect - 447.IBPluginDependency - 448.IBPluginDependency - 449.IBPluginDependency - 449.editorWindowContentRectSynchronizationRect - 450.IBPluginDependency - 451.IBPluginDependency - 452.IBPluginDependency - 453.IBPluginDependency - 453.editorWindowContentRectSynchronizationRect - 454.IBPluginDependency - 455.IBPluginDependency - 456.IBPluginDependency - 457.IBPluginDependency - 458.IBEditorWindowLastContentRect - 458.IBPluginDependency - 458.editorWindowContentRectSynchronizationRect - 459.IBPluginDependency - 460.IBPluginDependency - 461.IBPluginDependency - 462.IBPluginDependency - 463.IBPluginDependency - 464.IBPluginDependency - 465.IBPluginDependency - 466.IBPluginDependency - 467.IBPluginDependency - 468.IBPluginDependency - 469.IBPluginDependency - 470.IBPluginDependency - 470.editorWindowContentRectSynchronizationRect - 471.IBPluginDependency - 471.editorWindowContentRectSynchronizationRect - 472.IBPluginDependency - 473.IBPluginDependency - 473.editorWindowContentRectSynchronizationRect - 474.IBPluginDependency - 475.IBPluginDependency - 476.IBPluginDependency - 476.editorWindowContentRectSynchronizationRect - 477.IBPluginDependency - 478.IBPluginDependency - - - YES - {{247, 233}, {480, 360}} - com.apple.InterfaceBuilder.CarbonPlugin - {{247, 233}, {480, 360}} - {{325, 394}, {480, 360}} - com.apple.InterfaceBuilder.CarbonPlugin - {{21, 803}, {507, 20}} - com.apple.InterfaceBuilder.CarbonPlugin - {{325, 836}, {478, 20}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{159, 779}, {199, 203}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{358, 919}, {146, 23}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{511, 593}, {181, 243}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{692, 573}, {275, 83}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{382, 719}, {241, 103}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{382, 719}, {167, 43}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{382, 719}, {188, 63}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{361, 909}, {197, 73}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{33, 620}, {245, 183}} - com.apple.InterfaceBuilder.CarbonPlugin - {{27, 799}, {245, 183}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{272, 916}, {64, 6}} - com.apple.InterfaceBuilder.CarbonPlugin - {{432, 959}, {216, 23}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{311, 939}, {234, 43}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - {{555, 793}, {176, 43}} - com.apple.InterfaceBuilder.CarbonPlugin - com.apple.InterfaceBuilder.CarbonPlugin - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 478 - - - 0 - - 3 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCocoaTest.xib b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCocoaTest.xib deleted file mode 100644 index e2119bc8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/InterfaceBuilder/TestData/XibCocoaTest.xib +++ /dev/null @@ -1,3075 +0,0 @@ - - - - 1050 - 9E17 - 672 - 949.33 - 352.00 - - YES - - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - NSFontManager - - - AMainMenu - - YES - - - TestLocalizedString - - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - TestLocalizedString - - YES - - - About NewApplication - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - UHJlZmVyZW5jZXPigKY - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Services - - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 2147483647 - - - - - - Hide NewApplication - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Quit NewApplication - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 2147483647 - - - submenuAction: - - File - - YES - - - New - n - 1048576 - 2147483647 - - - - - - T3BlbuKApg - o - 1048576 - 2147483647 - - - - - - Open Recent - - 2147483647 - - - submenuAction: - - Open Recent - - YES - - - Clear Menu - - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - U2F2ZSBBc+KApg - S - 1179648 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - UHJpbnTigKY - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Delete - - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Find - - 2147483647 - - - submenuAction: - - Find - - YES - - - RmluZOKApg - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - U2hvdyBTcGVsbGluZ+KApg - : - 1048576 - 2147483647 - - - - - - Check Spelling - ; - 1048576 - 2147483647 - - - - - - Check Spelling While Typing - - 2147483647 - - - - - - Check Grammar With Spelling - - 2147483647 - - - - - - - - - Substitutions - - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Smart Copy/Paste - - 2147483647 - - - 1 - - - - Smart Quotes - - 2147483647 - - - 2 - - - - Smart Links - - 2147483647 - - - 3 - - - - - - - Speech - - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 2147483647 - - - - - - Stop Speaking - - 2147483647 - - - - - - - - - - - - Format - - 2147483647 - - - submenuAction: - - Format - - YES - - - Font - - 2147483647 - - - submenuAction: - - Font - - YES - - - Show Fonts - t - 1048576 - 2147483647 - - - - - - Bold - b - 1048576 - 2147483647 - - - 2 - - - - Italic - i - 1048576 - 2147483647 - - - 1 - - - - Underline - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bigger - + - 1048576 - 2147483647 - - - 3 - - - - Smaller - - - 1048576 - 2147483647 - - - 4 - - - - YES - YES - - - 2147483647 - - - - - - Kern - - 2147483647 - - - submenuAction: - - Kern - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Tighten - - 2147483647 - - - - - - Loosen - - 2147483647 - - - - - - - - - Ligature - - 2147483647 - - - submenuAction: - - Ligature - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Use All - - 2147483647 - - - - - - - - - Baseline - - 2147483647 - - - submenuAction: - - Baseline - - YES - - - Use Default - - 2147483647 - - - - - - Superscript - - 2147483647 - - - - - - Subscript - - 2147483647 - - - - - - Raise - - 2147483647 - - - - - - Lower - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Colors - C - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Copy Style - c - 1572864 - 2147483647 - - - - - - Paste Style - v - 1572864 - 2147483647 - - - - - _NSFontMenu - - - - - Text - - 2147483647 - - - submenuAction: - - Text - - YES - - - Align Left - { - 1048576 - 2147483647 - - - - - - Center - | - 1048576 - 2147483647 - - - - - - Justify - - 2147483647 - - - - - - Align Right - } - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Q3VzdG9taXplIFRvb2xiYXLigKY - - 2147483647 - - - - - - - - - Window - - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bring All to Front - - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - NewApplication Help - ? - 1048576 - 2147483647 - - - - - - - - _NSMainMenu - - - 15 - 2 - {{196, 240}, {480, 270}} - 603979776 - Window - TestCustomClass - - {3.40282e+38, 3.40282e+38} - - - 256 - - YES - - - 268 - {{66, 214}, {96, 32}} - - YES - - 67239424 - 134217728 - Button - - LucidaGrande - 1.300000e+01 - 1044 - - - -2038284033 - 129 - - - 200 - 25 - - - - {480, 270} - - - {{0, 0}, {1920, 1178}} - {3.40282e+38, 3.40282e+38} - - - - - YES - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - showHelp: - - - - 360 - - - - saveDocument: - - - - 362 - - - - saveDocumentAs: - - - - 363 - - - - revertDocumentToSaved: - - - - 364 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 369 - - - - hideOtherApplications: - - - - 370 - - - - unhideAllApplications: - - - - 372 - - - - addFontTrait: - - - - 420 - - - - addFontTrait: - - - - 421 - - - - modifyFont: - - - - 422 - - - - orderFrontFontPanel: - - - - 423 - - - - modifyFont: - - - - 424 - - - - raiseBaseline: - - - - 425 - - - - lowerBaseline: - - - - 426 - - - - copyFont: - - - - 427 - - - - subscript: - - - - 428 - - - - superscript: - - - - 429 - - - - tightenKerning: - - - - 430 - - - - underline: - - - - 431 - - - - orderFrontColorPanel: - - - - 432 - - - - useAllLigatures: - - - - 433 - - - - loosenKerning: - - - - 434 - - - - pasteFont: - - - - 435 - - - - unscript: - - - - 436 - - - - useStandardKerning: - - - - 437 - - - - useStandardLigatures: - - - - 438 - - - - turnOffLigatures: - - - - 439 - - - - turnOffKerning: - - - - 440 - - - - alignLeft: - - - - 441 - - - - alignJustified: - - - - 442 - - - - copyRuler: - - - - 443 - - - - alignCenter: - - - - 444 - - - - toggleRuler: - - - - 445 - - - - alignRight: - - - - 446 - - - - pasteRuler: - - - - 447 - - - - terminate: - - - - 448 - - - - visible: testBinding - - - - - - visible: testBinding - visible - testBinding - 2 - - - 459 - - - - testAction: - - - - 462 - - - - - YES - - 0 - - YES - - - - - - -2 - - - RmlsZSdzIE93bmVyA - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - Main Menu - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 103 - - - YES - - - - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - - - - - 75 - - - - - 80 - - - - - 78 - - - - - 72 - - - - - 82 - - - - - 124 - - - YES - - - - - - 77 - - - - - 73 - - - - - 79 - - - - - 112 - - - - - 74 - - - - - 125 - - - YES - - - - - - 126 - - - - - 205 - - - YES - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - YES - - - - - - 216 - - - YES - - - - - - 200 - - - YES - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - YES - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 106 - - - YES - - - - - - 111 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 129 - - - - - 143 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - YES - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - - 297 - - - - - 298 - - - - - 211 - - - YES - - - - - - 212 - - - YES - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - YES - - - - - - 349 - - - YES - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 367 - - - YES - - - - - - 368 - - - YES - - - - - - 373 - - - - - 375 - - - YES - - - - - - 376 - - - YES - - - - - - - 377 - - - YES - - - - - - 378 - - - YES - - - - - - 379 - - - YES - - - - - - - - - - - - - 380 - - - - - 381 - - - - - 382 - - - - - 383 - - - - - 384 - - - - - 385 - - - - - 386 - - - - - 387 - - - - - 388 - - - YES - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - YES - - - - - - 398 - - - YES - - - - - - 399 - - - YES - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - YES - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - YES - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - YES - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 460 - - - YES - - - - - - 461 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 103.IBPluginDependency - 103.ImportedFromIB2 - 106.IBEditorWindowLastContentRect - 106.IBPluginDependency - 106.ImportedFromIB2 - 106.editorWindowContentRectSynchronizationRect - 111.IBPluginDependency - 111.ImportedFromIB2 - 112.IBPluginDependency - 112.ImportedFromIB2 - 124.IBPluginDependency - 124.ImportedFromIB2 - 125.IBEditorWindowLastContentRect - 125.IBPluginDependency - 125.ImportedFromIB2 - 125.editorWindowContentRectSynchronizationRect - 126.IBPluginDependency - 126.ImportedFromIB2 - 129.IBPluginDependency - 129.ImportedFromIB2 - 130.IBEditorWindowLastContentRect - 130.IBPluginDependency - 130.ImportedFromIB2 - 130.editorWindowContentRectSynchronizationRect - 131.IBPluginDependency - 131.ImportedFromIB2 - 134.IBPluginDependency - 134.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 143.IBPluginDependency - 143.ImportedFromIB2 - 144.IBPluginDependency - 144.ImportedFromIB2 - 145.IBPluginDependency - 145.ImportedFromIB2 - 149.IBPluginDependency - 149.ImportedFromIB2 - 150.IBPluginDependency - 150.ImportedFromIB2 - 19.IBPluginDependency - 19.ImportedFromIB2 - 195.IBPluginDependency - 195.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 197.IBPluginDependency - 197.ImportedFromIB2 - 198.IBPluginDependency - 198.ImportedFromIB2 - 199.IBPluginDependency - 199.ImportedFromIB2 - 200.IBEditorWindowLastContentRect - 200.IBPluginDependency - 200.ImportedFromIB2 - 200.editorWindowContentRectSynchronizationRect - 201.IBPluginDependency - 201.ImportedFromIB2 - 202.IBPluginDependency - 202.ImportedFromIB2 - 203.IBPluginDependency - 203.ImportedFromIB2 - 204.IBPluginDependency - 204.ImportedFromIB2 - 205.IBEditorWindowLastContentRect - 205.IBPluginDependency - 205.ImportedFromIB2 - 205.editorWindowContentRectSynchronizationRect - 206.IBPluginDependency - 206.ImportedFromIB2 - 207.IBPluginDependency - 207.ImportedFromIB2 - 208.IBPluginDependency - 208.ImportedFromIB2 - 209.IBPluginDependency - 209.ImportedFromIB2 - 210.IBPluginDependency - 210.ImportedFromIB2 - 211.IBPluginDependency - 211.ImportedFromIB2 - 212.IBEditorWindowLastContentRect - 212.IBPluginDependency - 212.ImportedFromIB2 - 212.editorWindowContentRectSynchronizationRect - 213.IBPluginDependency - 213.ImportedFromIB2 - 214.IBPluginDependency - 214.ImportedFromIB2 - 215.IBPluginDependency - 215.ImportedFromIB2 - 216.IBPluginDependency - 216.ImportedFromIB2 - 217.IBPluginDependency - 217.ImportedFromIB2 - 218.IBPluginDependency - 218.ImportedFromIB2 - 219.IBPluginDependency - 219.ImportedFromIB2 - 220.IBEditorWindowLastContentRect - 220.IBPluginDependency - 220.ImportedFromIB2 - 220.editorWindowContentRectSynchronizationRect - 221.IBPluginDependency - 221.ImportedFromIB2 - 23.IBPluginDependency - 23.ImportedFromIB2 - 236.IBPluginDependency - 236.ImportedFromIB2 - 239.IBPluginDependency - 239.ImportedFromIB2 - 24.IBEditorWindowLastContentRect - 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.WindowOrigin - 29.editorWindowContentRectSynchronizationRect - 295.IBPluginDependency - 296.IBEditorWindowLastContentRect - 296.IBPluginDependency - 296.editorWindowContentRectSynchronizationRect - 297.IBPluginDependency - 298.IBPluginDependency - 346.IBPluginDependency - 346.ImportedFromIB2 - 348.IBPluginDependency - 348.ImportedFromIB2 - 349.IBEditorWindowLastContentRect - 349.IBPluginDependency - 349.ImportedFromIB2 - 349.editorWindowContentRectSynchronizationRect - 350.IBPluginDependency - 350.ImportedFromIB2 - 351.IBPluginDependency - 351.ImportedFromIB2 - 354.IBPluginDependency - 354.ImportedFromIB2 - 367.IBEditorWindowLastContentRect - 367.IBPluginDependency - 367.IBWindowTemplateEditedContentRect - 367.NSWindowTemplate.visibleAtLaunch - 367.editorWindowContentRectSynchronizationRect - 368.IBPluginDependency - 375.IBPluginDependency - 376.IBPluginDependency - 377.IBPluginDependency - 378.IBPluginDependency - 379.IBPluginDependency - 380.IBPluginDependency - 381.IBPluginDependency - 382.IBPluginDependency - 383.IBPluginDependency - 384.IBPluginDependency - 385.IBPluginDependency - 386.IBPluginDependency - 387.IBPluginDependency - 388.IBPluginDependency - 389.IBPluginDependency - 390.IBPluginDependency - 391.IBPluginDependency - 392.IBPluginDependency - 393.IBPluginDependency - 394.IBPluginDependency - 395.IBPluginDependency - 396.IBPluginDependency - 397.IBPluginDependency - 398.IBPluginDependency - 399.IBPluginDependency - 400.IBPluginDependency - 401.IBPluginDependency - 402.IBPluginDependency - 403.IBPluginDependency - 404.IBPluginDependency - 405.IBPluginDependency - 406.IBPluginDependency - 407.IBPluginDependency - 408.IBPluginDependency - 409.IBPluginDependency - 410.IBPluginDependency - 411.IBPluginDependency - 412.IBPluginDependency - 413.IBPluginDependency - 414.IBPluginDependency - 415.IBPluginDependency - 416.IBPluginDependency - 417.IBPluginDependency - 418.IBPluginDependency - 419.IBPluginDependency - 460.IBPluginDependency - 461.IBPluginDependency - 5.IBPluginDependency - 5.ImportedFromIB2 - 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBEditorWindowLastContentRect - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 58.IBPluginDependency - 58.ImportedFromIB2 - 72.IBPluginDependency - 72.ImportedFromIB2 - 73.IBPluginDependency - 73.ImportedFromIB2 - 74.IBPluginDependency - 74.ImportedFromIB2 - 75.IBPluginDependency - 75.ImportedFromIB2 - 77.IBPluginDependency - 77.ImportedFromIB2 - 78.IBPluginDependency - 78.ImportedFromIB2 - 79.IBPluginDependency - 79.ImportedFromIB2 - 80.IBPluginDependency - 80.ImportedFromIB2 - 81.IBEditorWindowLastContentRect - 81.IBPluginDependency - 81.ImportedFromIB2 - 81.editorWindowContentRectSynchronizationRect - 82.IBPluginDependency - 82.ImportedFromIB2 - 83.IBPluginDependency - 83.ImportedFromIB2 - 92.IBPluginDependency - 92.ImportedFromIB2 - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{518, 723}, {216, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{596, 852}, {216, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{617, 609}, {132, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{522, 812}, {146, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{531, 606}, {64, 6}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{530, 483}, {275, 83}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {275, 83}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{287, 503}, {243, 243}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{197, 734}, {243, 243}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{530, 483}, {153, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {167, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{530, 483}, {241, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {241, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{447, 673}, {197, 73}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{101, 746}, {507, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{11, 977}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - {{397, 703}, {234, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - {{475, 832}, {234, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{530, 483}, {177, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{440, 714}, {177, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{490, 307}, {480, 270}} - com.apple.InterfaceBuilder.CocoaPlugin - {{490, 307}, {480, 270}} - - {{11, 666}, {480, 270}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{113, 563}, {245, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{418, 469}, {199, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{323, 672}, {199, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 462 - - - - YES - - FirstResponder - NSObject - - testAction: - id - - - IBUserSource - - - - - - 0 - - 3 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/English.lproj/InfoPlist.strings b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/English.lproj/InfoPlist.strings deleted file mode 100644 index 7f81cad945a1abf774b17eb4993e09d6fd026a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmb7=-wVNT6vfZ8zhZepGCV1Hp|Fxf$?MGgw(r_d{PFl~lcK$7ZTIfpbI(2JJ|DI! zvNV#BCs#-9beFFcwJR}FOvNZ5TEsP9hrcy>O<{_Ub*6d%eM?al*(&h#)K^y*&?|7h zX4*0pfu4Uc&!|Lf3ABNy!&_7X_Byeh!!uy|{85oNy}*lMtFH;nMtd?ZRq5!2>P$uA z?$@RD-dv^A0~g{c(Y8T*;<5x!nb<^KT`jT!C__JSnBB%hd!~Gh=OGt3aoIpq5H6}* PEmL$Jf95`~^WWwd -static BOOL ImportProjectFile(NSMutableDictionary *attributes, - NSString *pathToFile) { - pathToFile = [pathToFile stringByAppendingPathComponent:@"project.pbxproj"]; - NSMutableSet *filenames = [[[NSMutableSet alloc] init] autorelease]; - NSMutableSet *comments = [[[NSMutableSet alloc] init] autorelease]; - BOOL wasGood = NO; - NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:pathToFile]; - if (dict) { - NSDictionary *objects = [dict objectForKey:@"objects"]; - if (objects) { - NSEnumerator *objEnumerator = [objects objectEnumerator]; - NSDictionary *object; - while ((object = [objEnumerator nextObject])) { - NSString *isaType = [object objectForKey:@"isa"]; - if ([isaType caseInsensitiveCompare:@"PBXFileReference"] == NSOrderedSame) { - NSString *path = [object objectForKey:@"path"]; - if (path) { - [filenames addObject:[path lastPathComponent]]; - } - } else if ([isaType caseInsensitiveCompare:@"PBXNativeTarget"] == NSOrderedSame) { - NSString *name = [object objectForKey:@"name"]; - if (name) { - [filenames addObject:name]; - } - name = [object objectForKey:@"productName"]; - if (name) { - [filenames addObject:name]; - } - } - NSString *comment = [object objectForKey:@"comments"]; - if (comment) { - [comments addObject:comment]; - } - } - } - } - if ([filenames count]) { - NSString *description = [[filenames allObjects] componentsJoinedByString:@"\n"]; - [attributes setObject:description forKey:(NSString*)kMDItemDescription]; - wasGood = YES; - } - if ([comments count]) { - NSString *comment = [[comments allObjects] componentsJoinedByString:@"\n"]; - [attributes setObject:comment forKey:(NSString*)kMDItemComment]; - wasGood = YES; - } - return wasGood; -} - -// Currently grabs all the filenames, target names, and product names -// and sticks them into kMDItemDescription. -// It also grabs all of the comments and sticks them into kMDItemComment. -Boolean GetMetadataForFile(void* interface, - CFMutableDictionaryRef cfAttributes, - CFStringRef contentTypeUTI, - CFStringRef cfPathToFile) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSMutableDictionary *attributes = (NSMutableDictionary*)cfAttributes; - NSString *pathToFile = (NSString*)cfPathToFile; - BOOL wasGood = NO; - if (UTTypeConformsTo(contentTypeUTI, CFSTR("com.apple.xcode.project"))) { - wasGood = ImportProjectFile(attributes, pathToFile); - } - [pool release]; - return wasGood == NO ? FALSE : TRUE; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/Info.plist deleted file mode 100644 index def1f7f7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/Info.plist +++ /dev/null @@ -1,49 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeRole - MDImporter - LSItemContentTypes - - com.apple.xcode.project - - - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleName - ${PRODUCT_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.google.spotlightimporter.${PRODUCT_NAME:identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleVersion - 1.0 - CFPlugInDynamicRegisterFunction - - CFPlugInDynamicRegistration - NO - CFPlugInFactories - - 1CDB2B3C-CD6F-407D-9217-230E6DED8B00 - MetadataImporterPluginFactory - - CFPlugInTypes - - 8B08C4BF-415B-11D8-B3F9-0003936726FC - - 1CDB2B3C-CD6F-407D-9217-230E6DED8B00 - - - CFPlugInUnloadFunction - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/PluginID.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/PluginID.h deleted file mode 100644 index 69c7a279..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/PluginID.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// PluginID.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#define PLUGIN_ID "1CDB2B3C-CD6F-407D-9217-230E6DED8B00" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/ReadMe.rtf b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/ReadMe.rtf deleted file mode 100644 index bd2eb697..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/ReadMe.rtf +++ /dev/null @@ -1,31 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural - -\f0\fs24 \cf0 XcodeProject Spotlight Plugin\ -\ -Copyright 2008 Google Inc.\ -\ -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.\ -\ ------------------------\ -\ -This is a spotlight importer for Xcode Projects. \ -Makes it easy for you to search xcode project for specific files they include\ -or text in the project comments.\ -\ -To install the spotlight plugin, please copy it into /Library/Spotlight or ~/Library/Spotlight.\ -\ -It is part of the Google Toolbox For Mac project\ -http://code.google.com/p/google-toolbox-for-mac/} \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/TestData/test.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/TestData/test.xcodeproj/project.pbxproj deleted file mode 100644 index 21f91d53..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/TestData/test.xcodeproj/project.pbxproj +++ /dev/null @@ -1,277 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; - 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; - 1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 32CA4F630368D1EE00C91783 /* test_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = test_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8D1107320486CEB800E47090 /* test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = test.app; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D11072E0486CEB800E47090 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - ); - name = Classes; - sourceTree = ""; - }; - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 29B97324FDCFA39411CA2CEA /* AppKit.framework */, - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, - 29B97325FDCFA39411CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D1107320486CEB800E47090 /* test.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* test */ = { - isa = PBXGroup; - children = ( - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - comments = "test comment"; - name = test; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* test_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 8D1107310486CEB800E47090 /* Info.plist */, - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D1107260486CEB800E47090 /* test */ = { - isa = PBXNativeTarget; - buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "test" */; - buildPhases = ( - 8D1107290486CEB800E47090 /* Resources */, - 8D11072C0486CEB800E47090 /* Sources */, - 8D11072E0486CEB800E47090 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = test; - productInstallPath = "$(HOME)/Applications"; - productName = test; - productReference = 8D1107320486CEB800E47090 /* test.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "test" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 29B97314FDCFA39411CA2CEA /* test */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D1107260486CEB800E47090 /* test */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D1107290486CEB800E47090 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D11072C0486CEB800E47090 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D11072D0486CEB800E47090 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C165DFE840E0CC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD58150DA1D0A300B32029 /* English */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C01FCF4B08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = test_Prefix.pch; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - PRODUCT_NAME = test; - }; - name = Debug; - }; - C01FCF4C08A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = test_Prefix.pch; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - PRODUCT_NAME = test; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - SDKROOT = macosx10.5; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = macosx10.5; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4B08A954540054247B /* Debug */, - C01FCF4C08A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/XcodeProject.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/XcodeProject.xcodeproj/project.pbxproj deleted file mode 100644 index 140f8325..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/XcodeProject.xcodeproj/project.pbxproj +++ /dev/null @@ -1,339 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXAggregateTarget section */ - 8BF157070E5BAC8600D28B05 /* RunAllUnitTests */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 8BF157100E5BACBF00D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */; - buildPhases = ( - 8BF157060E5BAC8600D28B05 /* ShellScript */, - ); - dependencies = ( - 8BF1570B0E5BAC8C00D28B05 /* PBXTargetDependency */, - ); - name = RunAllUnitTests; - productName = RunAllUnitTests; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */; }; - 8B1D48820E59F52A000EB8CA /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 8B1D48810E59F52A000EB8CA /* main.c */; }; - 8B58F8700E5726D000A0E02E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B58F86F0E5726D000A0E02E /* Foundation.framework */; }; - 8BF155160E5B442A00D28B05 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BF155150E5B442A00D28B05 /* ApplicationServices.framework */; }; - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; }; - F464A82B0E5DC72D006B02E8 /* schema.xml in Resources */ = {isa = PBXBuildFile; fileRef = F464A82A0E5DC72D006B02E8 /* schema.xml */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8BF1570A0E5BAC8C00D28B05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 089C1669FE841209C02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8D57630D048677EA00EA77CD; - remoteInfo = XcodeProjectSpotlightPlugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = ""; }; - 8B1D48810E59F52A000EB8CA /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 8B1D48840E59F591000EB8CA /* PluginID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginID.h; sourceTree = ""; }; - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = ReadMe.rtf; sourceTree = ""; }; - 8B58F86F0E5726D000A0E02E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = LoadableBundle.xcconfig; sourceTree = ""; }; - 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugTigerOrLater.xcconfig; sourceTree = ""; }; - 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseTigerOrLater.xcconfig; sourceTree = ""; }; - 8BF155150E5B442A00D28B05 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - 8D576316048677EA00EA77CD /* XcodeProject.mdimporter */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XcodeProject.mdimporter; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - F464A82A0E5DC72D006B02E8 /* schema.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = schema.xml; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D576313048677EA00EA77CD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B58F8700E5726D000A0E02E /* Foundation.framework in Frameworks */, - 8BF155160E5B442A00D28B05 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */ = { - isa = PBXGroup; - children = ( - 8B58F75A0E56502600A0E02E /* ReadMe.rtf */, - 8B58F84D0E5697B500A0E02E /* XcodeConfig */, - 8B1D48800E59F52A000EB8CA /* Common */, - 08FB77AFFE84173DC02AAC07 /* Source */, - 089C167CFE841241C02AAC07 /* Resources */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB6FE9D52B211CA2CBB /* Products */, - ); - comments = "// Copyright 2008 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n// use this file except in compliance with the License. You may obtain a copy\n// of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n// License for the specific language governing permissions and limitations under\n// the License."; - name = XcodeProjectSpotlightPlugin; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 8BF155150E5B442A00D28B05 /* ApplicationServices.framework */, - 8B58F86F0E5726D000A0E02E /* Foundation.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C167CFE841241C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - F464A82A0E5DC72D006B02E8 /* schema.xml */, - 8D576317048677EA00EA77CD /* Info.plist */, - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77AFFE84173DC02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - 2C05A19B06CAA52B00D84F6F /* GetMetadataForFile.m */, - 8B1D48840E59F591000EB8CA /* PluginID.h */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB6FE9D52B211CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D576316048677EA00EA77CD /* XcodeProject.mdimporter */, - ); - name = Products; - sourceTree = ""; - }; - 8B1D48800E59F52A000EB8CA /* Common */ = { - isa = PBXGroup; - children = ( - 8B1D48810E59F52A000EB8CA /* main.c */, - ); - name = Common; - path = ../Common; - sourceTree = SOURCE_ROOT; - }; - 8B58F84D0E5697B500A0E02E /* XcodeConfig */ = { - isa = PBXGroup; - children = ( - 8B58F90F0E579A1300A0E02E /* Target */, - 8B58F9250E579A1300A0E02E /* Project */, - ); - name = XcodeConfig; - path = ../../XcodeConfig; - sourceTree = SOURCE_ROOT; - }; - 8B58F90F0E579A1300A0E02E /* Target */ = { - isa = PBXGroup; - children = ( - 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */, - ); - path = Target; - sourceTree = ""; - }; - 8B58F9250E579A1300A0E02E /* Project */ = { - isa = PBXGroup; - children = ( - 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */, - 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */, - ); - path = Project; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D57630D048677EA00EA77CD /* XcodeProjectSpotlightPlugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "XcodeProjectSpotlightPlugin" */; - buildPhases = ( - 8D57630F048677EA00EA77CD /* Resources */, - 8D576311048677EA00EA77CD /* Sources */, - 8D576313048677EA00EA77CD /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = XcodeProjectSpotlightPlugin; - productInstallPath = /Library/Spotlight; - productName = XcodeProjectSpotlightPlugin; - productReference = 8D576316048677EA00EA77CD /* XcodeProject.mdimporter */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "XcodeProject" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* XcodeProjectSpotlightPlugin */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8BF157070E5BAC8600D28B05 /* RunAllUnitTests */, - 8D57630D048677EA00EA77CD /* XcodeProjectSpotlightPlugin */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D57630F048677EA00EA77CD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, - F464A82B0E5DC72D006B02E8 /* schema.xml in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 8BF157060E5BAC8600D28B05 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /usr/bin/python; - shellScript = "# test of xcodeproj importer\n\nimport os\nimport subprocess\n\ncmd = \"/usr/bin/mdimport -d 2 -g \" + os.environ[\"BUILT_PRODUCTS_DIR\"] + \"/XcodeProject.mdimporter \" + os.environ[\"SOURCE_ROOT\"] + \"/TestData/test.xcodeproj\"\nimporter_out = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE).stderr.read()\n\nif importer_out.find(\"kMDItemDescription = \\\"test_Prefix.pch\\\\nFoundation.framework\\\\nmain.m\\\\nInfo.plist\\\\nCoreData.framework\\\\nCocoa.framework\\\\ntest\\\\nAppKit.framework\\\\nMainMenu.xib\\\\nInfoPlist.strings\\\\ntest.app\\\";\") == -1:\n\tprint \"error: Bad Description for test.xcodeproj\"\n\texit(1)\nif importer_out.find(\"kMDItemComment = \\\"test comment\\\";\") == -1:\n\tprint \"error: Bad comment for test. xcodeproj\"\n\texit(1)"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D576311048677EA00EA77CD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C05A19C06CAA52B00D84F6F /* GetMetadataForFile.m in Sources */, - 8B1D48820E59F52A000EB8CA /* main.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8BF1570B0E5BAC8C00D28B05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8D57630D048677EA00EA77CD /* XcodeProjectSpotlightPlugin */; - targetProxy = 8BF1570A0E5BAC8C00D28B05 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C167EFE841241C02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 70138C850896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = XcodeProject; - WRAPPER_EXTENSION = mdimporter; - }; - name = Debug; - }; - 70138C860896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9110E579A1300A0E02E /* LoadableBundle.xcconfig */; - buildSettings = { - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = XcodeProject; - WRAPPER_EXTENSION = mdimporter; - }; - name = Release; - }; - 70138C890896BE9A00968C2F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F9280E579A1300A0E02E /* DebugTigerOrLater.xcconfig */; - buildSettings = { - }; - name = Debug; - }; - 70138C8A0896BE9A00968C2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8B58F92B0E579A1300A0E02E /* ReleaseTigerOrLater.xcconfig */; - buildSettings = { - }; - name = Release; - }; - 8BF157080E5BAC8600D28B05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Debug; - }; - 8BF157090E5BAC8600D28B05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = RunAllUnitTests; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 70138C840896BE9A00968C2F /* Build configuration list for PBXNativeTarget "XcodeProjectSpotlightPlugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C850896BE9A00968C2F /* Debug */, - 70138C860896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 70138C880896BE9A00968C2F /* Build configuration list for PBXProject "XcodeProject" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 70138C890896BE9A00968C2F /* Debug */, - 70138C8A0896BE9A00968C2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8BF157100E5BACBF00D28B05 /* Build configuration list for PBXAggregateTarget "RunAllUnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8BF157080E5BAC8600D28B05 /* Debug */, - 8BF157090E5BAC8600D28B05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/schema.xml b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/schema.xml deleted file mode 100644 index cd3f3f7c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/SpotlightPlugins/XcodeProject/schema.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - kMDItemComment kMDItemDescription - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/TigerGcov/libgcov_readme.html b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/TigerGcov/libgcov_readme.html deleted file mode 100644 index fc381a70..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/TigerGcov/libgcov_readme.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - libgcov_readme.html - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTest-Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTest-Info.plist deleted file mode 100644 index 71daf7db..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTest-Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - com.google.${PRODUCT_NAME} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - BNDL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.h deleted file mode 100644 index 016da7e6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.h +++ /dev/null @@ -1,144 +0,0 @@ -// -// GTMAppKit+UnitTesting.m -// -// Categories for making unit testing of graphics/UI easier. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMNSObject+UnitTesting.h" - -// Categories for making unit testing of graphics/UI easier. -// Allows you to take a state/images of instances of AppKit classes. -// See GTMNSObject+UnitTesting.h for details. - -@interface NSApplication (GTMUnitTestingAdditions) -@end - -@interface NSWindow (GTMUnitTestingAdditions) -@end - -@interface NSControl (GTMUnitTestingAdditions) -@end - -@interface NSTextField (GTMUnitTestingAdditions) -@end - -@interface NSCell (GTMUnitTestingAdditions) -@end - -@interface NSImage (GTMUnitTestingAdditions) -@end - -@interface NSMenu (GTMUnitTestingAdditions) -@end - -@interface NSMenuItem (GTMUnitTestingAdditions) -@end - -@protocol GTMUnitTestViewDrawer; - -// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|. -// See the description of the -gtm_pathForImageNamed method -// to understand how |a3| is found and written out. -// See the description of the GTMUnitTestView for a better idea -// how the view works. -// Implemented as a macro to match the rest of the SenTest macros. -// -// Args: -// a1: The object that implements the GTMUnitTestViewDrawer protocol -// that is doing the drawing. -// a2: The size of the drawing -// a3: The name of the image file to check against. -// Do not include the extension -// a4: contextInfo to pass to drawer -// description: A format string as in the printf() function. -// Can be nil or an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -// - -#define GTMAssertDrawingEqualToImageNamed(a1, a2, a3, a4, description, ...) \ - do { \ - id a1Drawer = (a1); \ - NSSize a2Size = (a2); \ - NSString* a3String = (a3); \ - void *a4ContextInfo = (a4); \ - NSRect frame = NSMakeRect(0, 0, a2Size.width, a2Size.height); \ - GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \ - GTMAssertObjectImageEqualToImageNamed(view, a3String, STComposeString(description, ##__VA_ARGS__)); \ - } while(0) - -// Category for making unit testing of graphics/UI easier. - -// Allows you to take a state of a view. Supports both image and state. -// See NSObject+UnitTesting.h for details. -@interface NSView (GTMUnitTestingAdditions) -// Returns whether unitTestEncodeState should recurse into subviews -// -// If you have "Full keyboard access" in the -// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes -// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the -// case of NSTextFields we don't want to recurse into their subviews. There may -// be other cases like this, so instead of specializing unitTestEncodeState: to -// look for NSTextFields, NSTextFields will just not allow us to recurse into -// their subviews. -// -// Returns: -// should unitTestEncodeState pick up subview state. -- (BOOL)gtm_shouldEncodeStateForSubviews; - -@end - -// A view that allows you to delegate out drawing using the formal -// GTMUnitTestViewDelegate protocol -// This is useful when writing up unit tests for visual elements. -// Your test will often end up looking like this: -// - (void)testFoo { -// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil); -// } -// and your testSuite will also implement the unitTestViewDrawRect method to do -// it's actual drawing. The above creates a view of size 200x200 that draws -// it's content using |self|'s unitTestViewDrawRect method and compares it to -// the contents of the file Foo.tif to make sure it's valid -@interface GTMUnitTestView : NSView { - @private - id drawer_; // delegate for doing drawing (STRONG) - void* contextInfo_; // info passed in by user for them to use when drawing -} - -// Create a GTMUnitTestView. -// -// Args: -// rect: the area to draw. -// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer -// protocol -// contextInfo: -- (id)initWithFrame:(NSRect)frame drawer:(id)drawer contextInfo:(void*)contextInfo; -@end - -/// \cond Protocols - -// Formal protocol for doing unit testing of views. See description of -// GTMUnitTestView for details. -@protocol GTMUnitTestViewDrawer - -// Draw the view. Equivalent to drawRect on a standard NSView. -// -// Args: -// rect: the area to draw. -- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo; -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.m deleted file mode 100644 index c35d07d8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMAppKit+UnitTesting.m +++ /dev/null @@ -1,341 +0,0 @@ -// -// GTMAppKit+UnitTesting.m -// -// Categories for making unit testing of graphics/UI easier. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import "GTMAppKit+UnitTesting.h" -#import "GTMGeometryUtils.h" -#import "GTMMethodCheck.h" -#import "GTMGarbageCollection.h" - -#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 - #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInt:(i) forKey:(key)] -#else - #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInteger:(i) forKey:(key)] -#endif - -@implementation NSApplication (GMUnitTestingAdditions) -GTM_METHOD_CHECK(NSObject, gtm_unitTestEncodeState:); - -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - ENCODE_NSINTEGER(inCoder, [[self mainWindow] windowNumber], @"ApplicationMainWindow"); - - // Descend down into the windows allowing them to store their state - NSWindow *window = nil; - int i = 0; - GTM_FOREACH_OBJECT(window, [self windows]) { - if ([window isVisible]) { - // Only record visible windows because invisible windows may be closing on us - // This appears to happen differently in 64 bit vs 32 bit, and items - // in the window may hold an extra retain count for a while until the - // event loop is spun. To avoid all this, we just don't record non - // visible windows. - // See rdar://5851458 for details. - [inCoder encodeObject:window forKey:[NSString stringWithFormat:@"Window %d", i]]; - i = i + 1; - } - } - - // and encode the menu bar - NSMenu *mainMenu = [self mainMenu]; - if (mainMenu) { - [inCoder encodeObject:mainMenu forKey:@"MenuBar"]; - } -} -@end - -@implementation NSWindow (GMUnitTestingAdditions) - -- (CGImageRef)gtm_unitTestImage { - return [[[self contentView] superview] gtm_unitTestImage]; -} - -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeObject:[self title] forKey:@"WindowTitle"]; - [inCoder encodeBool:[self isVisible] forKey:@"WindowIsVisible"]; - // Do not record if window is key, because users running unit tests - // and clicking around to other apps, could change this mid test causing - // issues. - // [inCoder encodeBool:[self isKeyWindow] forKey:@"WindowIsKey"]; - [inCoder encodeBool:[self isMainWindow] forKey:@"WindowIsMain"]; - [inCoder encodeObject:[self contentView] forKey:@"WindowContent"]; -} - -@end - -@implementation NSControl (GTMUnitTestingAdditions) - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeObject:[self class] forKey:@"ControlType"]; - [inCoder encodeObject:[self objectValue] forKey:@"ControlValue"]; - [inCoder encodeObject:[self selectedCell] forKey:@"ControlSelectedCell"]; - ENCODE_NSINTEGER(inCoder, [self tag], @"ControlTag"); - [inCoder encodeBool:[self isEnabled] forKey:@"ControlIsEnabled"]; -} - -@end - -@implementation NSTextField (GTMUnitTestingAdditions) - -- (BOOL)gtm_shouldEncodeStateForSubviews { - return NO; -} - -@end - -@implementation NSCell (GTMUnitTestingAdditions) - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - BOOL isImageCell = NO; - if ([self hasValidObjectValue]) { - id val = [self objectValue]; - [inCoder encodeObject:val forKey:@"CellValue"]; - isImageCell = [val isKindOfClass:[NSImage class]]; - } - if (!isImageCell) { - // Image cells have a title that includes addresses that aren't going - // to be constant, so we don't encode them. All the info we need - // is going to be in the CellValue encoding. - [inCoder encodeObject:[self title] forKey:@"CellTitle"]; - } - ENCODE_NSINTEGER(inCoder, [self state], @"CellState"); - ENCODE_NSINTEGER(inCoder, [self tag], @"CellTag"); -} - -@end - -@implementation NSImage (GTMUnitTestingAdditions) - -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeObject:NSStringFromSize([self size]) forKey:@"ImageSize"]; - [inCoder encodeObject:[self name] forKey:@"ImageName"]; -} - -- (CGImageRef)gtm_unitTestImage { - // Create up a context - NSSize size = [self size]; - NSRect rect = GTMNSRectOfSize(size); - CGSize cgSize = GTMNSSizeToCGSize(size); - CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize, - NULL); - NSGraphicsContext *bitmapContext - = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO]; - _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context"); - - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext:bitmapContext]; - [self drawInRect:rect fromRect:rect operation:NSCompositeCopy fraction:1.0]; - - CGImageRef image = CGBitmapContextCreateImage(contextRef); - CFRelease(contextRef); - [NSGraphicsContext restoreGraphicsState]; - return (CGImageRef)GTMCFAutorelease(image); -} - -@end - -@implementation NSMenu (GTMUnitTestingAdditions) - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - // Hack here to work around - // rdar://5881796 Application menu item title wrong when accessed programatically - // which causes us to have different results on x86_64 vs x386. - // Hack is braced intentionally. We don't record the title of the - // "application" menu or it's menu title because they are wrong on 32 bit. - // They appear to work right on 64bit. - { - NSMenu *mainMenu = [NSApp mainMenu]; - NSMenu *appleMenu = [[mainMenu itemAtIndex:0] submenu]; - if (![self isEqual:appleMenu]) { - [inCoder encodeObject:[self title] forKey:@"MenuTitle"]; - } - } - // Descend down into the menuitems allowing them to store their state - NSMenuItem *menuItem = nil; - int i = 0; - GTM_FOREACH_OBJECT(menuItem, [self itemArray]) { - [inCoder encodeObject:menuItem - forKey:[NSString stringWithFormat:@"MenuItem %d", i]]; - ++i; - } -} - -@end - -@implementation NSMenuItem (GTMUnitTestingAdditions) - -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - // Hack here to work around - // rdar://5881796 Application menu item title wrong when accessed programatically - // which causes us to have different results on x86_64 vs x386. - // See comment above. - { - NSMenu *mainMenu = [NSApp mainMenu]; - NSMenuItem *appleMenuItem = [mainMenu itemAtIndex:0]; - if (![self isEqual:appleMenuItem]) { - [inCoder encodeObject:[self title] forKey:@"MenuItemTitle"]; - } - } - [inCoder encodeObject:[self keyEquivalent] forKey:@"MenuItemKeyEquivalent"]; - [inCoder encodeBool:[self isSeparatorItem] forKey:@"MenuItemIsSeparator"]; - ENCODE_NSINTEGER(inCoder, [self state], @"MenuItemState"); - [inCoder encodeBool:[self isEnabled] forKey:@"MenuItemIsEnabled"]; - [inCoder encodeBool:[self isAlternate] forKey:@"MenuItemIsAlternate"]; - [inCoder encodeObject:[self toolTip] forKey:@"MenuItemTooltip"]; - ENCODE_NSINTEGER(inCoder, [self tag], @"MenuItemTag"); - ENCODE_NSINTEGER(inCoder, [self indentationLevel], @"MenuItemIndentationLevel"); - - // Do our submenu if neccessary - if ([self hasSubmenu]) { - [inCoder encodeObject:[self submenu] forKey:@"MenuItemSubmenu"]; - } -} - -@end - -// A view that allows you to delegate out drawing using the formal -// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit -// tests for visual elements. -// Your test will often end up looking like this: -// - (void)testFoo { -// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil); -// } -// and your testSuite will also implement the unitTestViewDrawRect method to do -// it's actual drawing. The above creates a view of size 200x200 that draws -// it's content using |self|'s unitTestViewDrawRect method and compares it to -// the contents of the file Foo.tif to make sure it's valid -@implementation GTMUnitTestView - -- (id)initWithFrame:(NSRect)frame - drawer:(id)drawer - contextInfo:(void*)contextInfo { - self = [super initWithFrame:frame]; - if (self != nil) { - drawer_ = [drawer retain]; - contextInfo_ = contextInfo; - } - return self; -} - -- (void)dealloc { - [drawer_ release]; - [super dealloc]; -} - - -- (void)drawRect:(NSRect)rect { - [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_]; -} - - -@end - -@implementation NSView (GTMUnitTestingAdditions) - -// Returns an image containing a representation of the object -// suitable for use in comparing against a master image. -// Does all of it's drawing with smoothfonts and antialiasing off -// to avoid issues with font smoothing settings and antialias differences -// between ppc and x86. -// -// Returns: -// an image of the object -- (CGImageRef)gtm_unitTestImage { - // Create up a context - NSRect bounds = [self bounds]; - CGSize cgSize = GTMNSSizeToCGSize(bounds.size); - CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize, - NULL); - NSGraphicsContext *bitmapContext - = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO]; - _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context"); - - // Save our state and turn off font smoothing and antialias. - CGContextSaveGState(contextRef); - CGContextSetShouldSmoothFonts(contextRef, false); - CGContextSetShouldAntialias(contextRef, false); - [self displayRectIgnoringOpacity:bounds inContext:bitmapContext]; - - CGImageRef image = CGBitmapContextCreateImage(contextRef); - CFRelease(contextRef); - return (CGImageRef)GTMCFAutorelease(image); -} - -// Returns whether gtm_unitTestEncodeState should recurse into subviews -// of a particular view. -// If you have "Full keyboard access" in the -// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes -// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the -// case of NSTextFields we don't want to recurse into their subviews. There may -// be other cases like this, so instead of specializing gtm_unitTestEncodeState: to -// look for NSTextFields, NSTextFields will just not allow us to recurse into -// their subviews. -// -// Returns: -// should gtm_unitTestEncodeState pick up subview state. -- (BOOL)gtm_shouldEncodeStateForSubviews { - return YES; -} - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"]; - if ([self gtm_shouldEncodeStateForSubviews]) { - NSView *subview = nil; - int i = 0; - GTM_FOREACH_OBJECT(subview, [self subviews]) { - [inCoder encodeObject:subview forKey:[NSString stringWithFormat:@"ViewSubView %d", i]]; - i = i + 1; - } - } -} - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.h deleted file mode 100644 index b757ba91..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// GTMCALayer+UnitTesting.h -// -// Code for making unit testing of graphics/UI easier. Generally you -// will only want to look at the macros: -// GTMAssertDrawingEqualToFile -// GTMAssertViewRepEqualToFile -// and the protocol GTMUnitTestCALayerDrawer. When using these routines -// make sure you are using device colors and not calibrated/generic colors -// or else your test graphics WILL NOT match across devices/graphics cards. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMNSObject+UnitTesting.h" - -// Category for making unit testing of graphics/UI easier. - -// Allows you to take a state of a view. Supports both image and state. -// See GTMNSObject+UnitTesting.h for details. -@interface CALayer (GTMUnitTestingAdditions) -// Returns whether gtm_unitTestEncodeState should recurse into sublayers -// -// Returns: -// should gtm_unitTestEncodeState pick up sublayer state. -- (BOOL)gtm_shouldEncodeStateForSublayers; -@end - -@interface NSObject (GTMCALayerUnitTestingDelegateMethods) -// Delegate method that allows a delegate for a layer to -// decide whether we should recurse -- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.m deleted file mode 100644 index 3ffa209e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMCALayer+UnitTesting.m +++ /dev/null @@ -1,90 +0,0 @@ -// -// GTMCALayer+UnitTesting.m -// -// Category for making unit testing of graphics/UI easier. -// Allows you to save a view out to a image file, and compare a view -// with a previously stored representation to make sure it hasn't changed. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMCALayer+UnitTesting.h" -#import "GTMGarbageCollection.h" - -@implementation CALayer (GTMUnitTestingAdditions) - -// Returns an image containing a representation of the object -// suitable for use in comparing against a master image. -// NB this means that all colors should be from "NSDevice" color space -// Does all of it's drawing with smoothfonts and antialiasing off -// to avoid issues with font smoothing settings and antialias differences -// between ppc and x86. -// -// Returns: -// an image of the object -- (CGImageRef)gtm_unitTestImage { - CGRect bounds = [self bounds]; - CGSize size = CGSizeMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds)); - CGContextRef context = GTMCreateUnitTestBitmapContextOfSizeWithData(size, - NULL); - _GTMDevAssert(context, @"Couldn't create context"); - - // iPhone renders are flipped - CGAffineTransform transform = CGAffineTransformMakeTranslation(0, size.height); - transform = CGAffineTransformScale(transform, 1.0, -1.0); - CGContextConcatCTM(context, transform); - - [self renderInContext:context]; - CGImageRef image = CGBitmapContextCreateImage(context); - CFRelease(context); - return (CGImageRef)GTMCFAutorelease(image); -} - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeBool:[self isHidden] forKey:@"LayerIsHidden"]; - [inCoder encodeBool:[self isDoubleSided] forKey:@"LayerIsDoublesided"]; - [inCoder encodeBool:[self isOpaque] forKey:@"LayerIsOpaque"]; - [inCoder encodeFloat:[self opacity] forKey:@"LayerOpacity"]; - // TODO: There is a ton more we can add here. What are we interested in? - if ([self gtm_shouldEncodeStateForSublayers]) { - int i = 0; - for (CALayer *subLayer in [self sublayers]) { - [inCoder encodeObject:subLayer - forKey:[NSString stringWithFormat:@"CALayerSubLayer %d", i]]; - i = i + 1; - } - } -} - -// Returns whether gtm_unitTestEncodeState should recurse into sublayers -// -// Returns: -// should gtm_unitTestEncodeState pick up sublayer state. -- (BOOL)gtm_shouldEncodeStateForSublayers { - BOOL value = YES; - if([self.delegate respondsToSelector:@selector(gtm_shouldEncodeStateForSublayersOfLayer:)]) { - value = [self.delegate gtm_shouldEncodeStateForSublayersOfLayer:self]; - } - return value; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMDevLogUnitTestingBridge.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMDevLogUnitTestingBridge.m deleted file mode 100644 index 3d2b84d0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMDevLogUnitTestingBridge.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// GTMDevLogUnitTestingBridge.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#include "GTMUnitTestDevLog.h" - -// -// NOTE: Odds are this file should not be included in your project. It is -// only needed for some enhanced unit testing. -// -// By adding: -// #define _GTMDevLog _GTMUnitTestDevLog -// to your prefix header (like the GTM Framework does), this function then -// works to forward logging messages to the GTMUnitTestDevLog class to -// allow logging validation during unittest, otherwise the messages go to -// NSLog like normal. -// -// See GTMUnitTestDevLog.h for more information on checking logs in unittests. -// -void _GTMUnitTestDevLog(NSString *format, ...) { - Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog"); - va_list argList; - va_start(argList, format); - if (devLogClass) { - [devLogClass log:format args:argList]; - } else { - NSLogv(format, argList); // COV_NF_LINE the class is in all our unittest setups - } - va_end(argList); -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.h deleted file mode 100644 index 4583b5d8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// GTMIPhoneUnitTestDelegate.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// Application delegate that runs all test methods in registered classes -// extending SenTestCase. The application is terminated afterwards. -// You can also run the tests directly from your application by invoking -// runTests and clean up, restore data, etc. before the application -// terminates. -@interface GTMIPhoneUnitTestDelegate : NSObject { - @private - NSUInteger totalFailures_; - NSUInteger totalSuccesses_; -} -// Runs through all the registered classes and runs test methods on any -// that are subclasses of SenTestCase. Prints results and run time to -// the default output. -- (void)runTests; -// Fetch the number of successes or failures from the last runTests. -- (NSUInteger)totalSuccesses; -- (NSUInteger)totalFailures; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.m deleted file mode 100644 index 39de1f56..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestDelegate.m +++ /dev/null @@ -1,206 +0,0 @@ -// -// GTMIPhoneUnitTestDelegate.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMIPhoneUnitTestDelegate.h" - -#import "GTMDefines.h" -#if !GTM_IPHONE_SDK -#error GTMIPhoneUnitTestDelegate for iPhone only -#endif -#import -#import -#import -#import "GTMSenTestCase.h" - -// Used for sorting methods below -static int MethodSort(const void *a, const void *b) { - const char *nameA = sel_getName(method_getName(*(Method*)a)); - const char *nameB = sel_getName(method_getName(*(Method*)b)); - return strcmp(nameA, nameB); -} - -// Return YES if class is subclass (1 or more generations) of SenTestCase -static BOOL IsTestFixture(Class aClass) { - BOOL iscase = NO; - Class testCaseClass = [SenTestCase class]; - Class superclass; - for (superclass = aClass; - !iscase && superclass; - superclass = class_getSuperclass(superclass)) { - iscase = superclass == testCaseClass ? YES : NO; - } - return iscase; -} - -@implementation GTMIPhoneUnitTestDelegate - -// Run through all the registered classes and run test methods on any -// that are subclasses of SenTestCase. Terminate the application upon -// test completion. -- (void)applicationDidFinishLaunching:(UIApplication *)application { - [self runTests]; - - if (!getenv("GTM_DISABLE_TERMINATION")) { - // To help using xcodebuild, make the exit status 0/1 to signal the tests - // success/failure. - int exitStatus = (([self totalFailures] == 0U) ? 0 : 1); - exit(exitStatus); - } -} - -// Run through all the registered classes and run test methods on any -// that are subclasses of SenTestCase. Print results and run time to -// the default output. -- (void)runTests { - int count = objc_getClassList(NULL, 0); - NSMutableData *classData - = [NSMutableData dataWithLength:sizeof(Class) * count]; - Class *classes = (Class*)[classData mutableBytes]; - _GTMDevAssert(classes, @"Couldn't allocate class list"); - objc_getClassList(classes, count); - totalFailures_ = 0; - totalSuccesses_ = 0; - NSString *suiteName = [[NSBundle mainBundle] bundlePath]; - NSDate *suiteStartDate = [NSDate date]; - NSString *suiteStartString - = [NSString stringWithFormat:@"Test Suite '%@' started at %@\n", - suiteName, suiteStartDate]; - fputs([suiteStartString UTF8String], stderr); - fflush(stderr); - for (int i = 0; i < count; ++i) { - Class currClass = classes[i]; - if (IsTestFixture(currClass)) { - NSDate *fixtureStartDate = [NSDate date]; - NSString *fixtureName = NSStringFromClass(currClass); - NSString *fixtureStartString - = [NSString stringWithFormat:@"Test Suite '%@' started at %@\n", - fixtureName, fixtureStartDate]; - int fixtureSuccesses = 0; - int fixtureFailures = 0; - fputs([fixtureStartString UTF8String], stderr); - fflush(stderr); - id testcase = [[currClass alloc] init]; - _GTMDevAssert(testcase, @"Unable to instantiate Test Suite: '%@'\n", - fixtureName); - unsigned int methodCount; - Method *methods = class_copyMethodList(currClass, &methodCount); - if (!methods) { - // If the class contains no methods, head on to the next class - NSString *output = [NSString stringWithFormat:@"Test Suite '%@' " - @"finished at %@.\nExecuted 0 tests, with 0 " - @"failures (0 unexpected) in 0 (0) seconds\n", - fixtureName, fixtureStartDate]; - - fputs([output UTF8String], stderr); - continue; - } - // This handles disposing of methods for us even if an - // exception should fly. - [NSData dataWithBytesNoCopy:methods - length:sizeof(Method) * methodCount]; - // Sort our methods so they are called in Alphabetical order just - // because we can. - qsort(methods, methodCount, sizeof(Method), MethodSort); - for (size_t j = 0; j < methodCount; ++j) { - Method currMethod = methods[j]; - SEL sel = method_getName(currMethod); - char *returnType = NULL; - const char *name = sel_getName(sel); - // If it starts with test, takes 2 args (target and sel) and returns - // void run it. - if (strstr(name, "test") == name) { - returnType = method_copyReturnType(currMethod); - if (returnType) { - // This handles disposing of returnType for us even if an - // exception should fly. Length +1 for the terminator, not that - // the length really matters here, as we never reference inside - // the data block. - [NSData dataWithBytesNoCopy:returnType - length:strlen(returnType) + 1]; - } - } - if (returnType // True if name starts with "test" - && strcmp(returnType, @encode(void)) == 0 - && method_getNumberOfArguments(currMethod) == 2) { - BOOL failed = NO; - NSDate *caseStartDate = [NSDate date]; - @try { - [testcase performTest:sel]; - } @catch (NSException *exception) { - failed = YES; - } - if (failed) { - fixtureFailures += 1; - } else { - fixtureSuccesses += 1; - } - NSTimeInterval caseEndTime - = [[NSDate date] timeIntervalSinceDate:caseStartDate]; - NSString *caseEndString - = [NSString stringWithFormat:@"Test Case '-[%@ %s]' %@ (%0.3f " - @"seconds).\n", - fixtureName, name, - failed ? @"failed" : @"passed", - caseEndTime]; - fputs([caseEndString UTF8String], stderr); - fflush(stderr); - } - } - [testcase release]; - NSDate *fixtureEndDate = [NSDate date]; - NSTimeInterval fixtureEndTime - = [fixtureEndDate timeIntervalSinceDate:fixtureStartDate]; - NSString *fixtureEndString - = [NSString stringWithFormat:@"Test Suite '%@' finished at %@.\n" - @"Executed %d tests, with %d failures (%d " - @"unexpected) in %0.3f (%0.3f) seconds\n\n", - fixtureName, fixtureEndDate, - fixtureSuccesses + fixtureFailures, - fixtureFailures, fixtureFailures, - fixtureEndTime, fixtureEndTime]; - - fputs([fixtureEndString UTF8String], stderr); - fflush(stderr); - totalSuccesses_ += fixtureSuccesses; - totalFailures_ += fixtureFailures; - } - } - NSDate *suiteEndDate = [NSDate date]; - NSTimeInterval suiteEndTime - = [suiteEndDate timeIntervalSinceDate:suiteStartDate]; - NSString *suiteEndString - = [NSString stringWithFormat:@"Test Suite '%@' finished at %@.\n" - @"Executed %d tests, with %d failures (%d " - @"unexpected) in %0.3f (%0.3f) seconds\n\n", - suiteName, suiteEndDate, - totalSuccesses_ + totalFailures_, - totalFailures_, totalFailures_, - suiteEndTime, suiteEndTime]; - fputs([suiteEndString UTF8String], stderr); - fflush(stderr); -} - -- (NSUInteger)totalSuccesses { - return totalSuccesses_; -} - -- (NSUInteger)totalFailures { - return totalFailures_; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestMain.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestMain.m deleted file mode 100644 index 2a0a70d2..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMIPhoneUnitTestMain.m +++ /dev/null @@ -1,33 +0,0 @@ -// -// GTMIPhoneUnitTestMain.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#if !GTM_IPHONE_SDK - #error GTMIPhoneUnitTestMain for iPhone only -#endif -#import - -// Creates an application that runs all tests from classes extending -// SenTestCase, outputs results and test run time, and terminates right -// afterwards. -int main(int argc, char *argv[]) { - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, @"GTMIPhoneUnitTestDelegate"); - [pool release]; - return retVal; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.h deleted file mode 100644 index 55c3dfe9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.h +++ /dev/null @@ -1,120 +0,0 @@ -// -// GTMNSObject+BindingUnitTesting.h -// -// Utilities for doing advanced unittesting with object bindings. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#include - -// Utility functions for GTMTestExposedBindings Macro. Don't use it directly -// but use the macro below instead -BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object, - NSArray **errors); - -// Tests the setters and getters for exposed bindings -// For objects that expose bindings, this tests them for you, saving you from -// having to write a whole pile of set/get test code if you add binding support. -// You will need to implement valueClassForBinding: for your bindings, -// and you may possibly want to implement unitTestExposedBindingsToIgnore -// and unitTestExposedBindingsTestValues. See descriptions of those -// methods below for details. -// Implemented as a macro to match the rest of the SenTest macros. -// -// Args: -// a1: The object to be checked. -// description: A format string as in the printf() function. -// Can be nil or an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -// -#define GTMTestExposedBindings(a1, description, ...) \ -do { \ - NSObject *a1Object = (a1); \ - NSArray *errors = nil; \ - BOOL isGood = GTMDoExposedBindingsFunctionCorrectly(a1Object, &errors); \ - if (!isGood) { \ - NSString *failString; \ - GTM_FOREACH_OBJECT(failString, errors) { \ - if (description) { \ - STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \ - } else { \ - STFail(@"%@", failString); \ - } \ - } \ - } \ -} while(0) - -// Utility class for setting up Binding Tests. Basically a pair of a value to -// set a binding to, followed by the expected return value. -// See description of gtm_unitTestExposedBindingsTestValues: below -// for example of usage. -@interface GTMBindingUnitTestData : NSObject { - @private - id valueToSet_; - id expectedValue_; -} - -+ (id)testWithIdentityValue:(id)value; -+ (id)testWithValue:(id)value expecting:(id)expecting; -- (id)initWithValue:(id)value expecting:(id)expecting; -- (id)valueToSet; -- (id)expectedValue; -@end - -@interface NSObject (GTMBindingUnitTestingAdditions) -// Allows you to ignore certain bindings when running GTMTestExposedBindings -// If you have bindings you want to ignore, add them to the array returned -// by this method. The standard way to implement this would be: -// - (NSMutableArray*)unitTestExposedBindingsToIgnore { -// NSMutableArray *array = [super unitTestExposedBindingsToIgnore]; -// [array addObject:@"bindingToIgnore1"]; -// ... -// return array; -// } -// The NSObject implementation by default will ignore NSFontBoldBinding, -// NSFontFamilyNameBinding, NSFontItalicBinding, NSFontNameBinding and -// NSFontSizeBinding if your exposed bindings contains NSFontBinding because -// the NSFont*Bindings are NOT KVC/KVO compliant. -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore; - -// Allows you to set up test values for your different bindings. -// if you have certain values you want to test against your bindings, add -// them to the array returned by this method. The array is an array of -// GTMBindingUnitTestData. -// The standard way to implement this would be: -// - (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding { -// NSMutableArray *dict = [super unitTestExposedBindingsTestValues:binding]; -// if ([binding isEqualToString:@"myBinding"]) { -// MySpecialBindingValueSet *value -// = [[[MySpecialBindingValueSet alloc] init] autorelease]; -// [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; -// ... -// else if ([binding isEqualToString:@"myBinding2"]) { -// ... -// } -// return array; -// } -// The NSObject implementation handles many of the default bindings, and -// gives you a reasonable set of test values to start. -// See the implementation for the current list of bindings, and values that we -// set for those bindings. -- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding; - -// A special version of isEqualTo to test whether two binding values are equal -// by default it calls directly to isEqualTo: but can be overridden for special -// cases (like NSImages) where the standard isEqualTo: isn't sufficient. -- (BOOL)gtm_unitTestIsEqualTo:(id)value; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.m deleted file mode 100644 index d064a479..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+BindingUnitTesting.m +++ /dev/null @@ -1,568 +0,0 @@ -// -// GTMNSObject+BindingUnitTesting.m -// -// An informal protocol for doing advanced binding unittesting with objects. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import "GTMNSObject+BindingUnitTesting.h" -#import "GTMSystemVersion.h" - -BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object, - NSArray **errors) { - NSMutableArray *errorArray = [NSMutableArray array]; - if (errors) { - *errors = nil; - } - NSArray *bindings = [object exposedBindings]; - if ([bindings count]) { - NSArray *bindingsToIgnore = [object gtm_unitTestExposedBindingsToIgnore]; - NSString *bindingKey; - GTM_FOREACH_OBJECT(bindingKey, bindings) { - if (![bindingsToIgnore containsObject:bindingKey]) { - Class theClass = [object valueClassForBinding:bindingKey]; - if (!theClass) { - NSString *error - = [NSString stringWithFormat:@"%@ should have valueClassForBinding '%@'", - object, bindingKey]; - [errorArray addObject:error]; - continue; - } - @try { - @try { - [object valueForKey:bindingKey]; - } - @catch (NSException *e) { - _GTMDevLog(@"%@ is not key value coding compliant for key %@", - object, bindingKey); - continue; - } // COV_NF_LINE - compiler bug - NSArray *testValues - = [object gtm_unitTestExposedBindingsTestValues:bindingKey]; - GTMBindingUnitTestData *testData; - GTM_FOREACH_OBJECT(testData, testValues) { - id valueToSet = [testData valueToSet]; - [object setValue:valueToSet forKey:bindingKey]; - id valueReceived = [object valueForKey:bindingKey]; - id desiredValue = [testData expectedValue]; - if (![desiredValue gtm_unitTestIsEqualTo:valueReceived]) { - NSString *error - = [NSString stringWithFormat:@"%@ unequal to expected %@ for binding '%@'", - valueReceived, desiredValue, bindingKey]; - [errorArray addObject:error]; - continue; - } - } - } - @catch(NSException *e) { - NSString *error - = [NSString stringWithFormat:@"%@:%@-> Binding %@", - [e name], [e reason], bindingKey]; - [errorArray addObject:error]; - } // COV_NF_LINE - compiler bug - } - } - } else { - NSString *error = - [NSString stringWithFormat:@"%@ does not have any exposed bindings", - object]; - [errorArray addObject:error]; - } - if (errors) { - *errors = errorArray; - } - return [errorArray count] == 0; -} - -@implementation GTMBindingUnitTestData -+ (id)testWithIdentityValue:(id)value { - return [self testWithValue:value expecting:value]; -} - -+ (id)testWithValue:(id)value expecting:(id)expecting { - return [[[self alloc] initWithValue:value expecting:expecting] autorelease]; -} - -- (id)initWithValue:(id)value expecting:(id)expecting { - if ((self = [super init])) { - valueToSet_ = [value retain]; - expectedValue_ = [expecting retain]; - } - return self; -} - -- (BOOL)isEqual:(id)object { - BOOL isEqual = [object isMemberOfClass:[self class]]; - if (isEqual) { - id objValue = [object valueToSet]; - id objExpect = [object expectedValue]; - isEqual = (((valueToSet_ == objValue) || ([valueToSet_ isEqual:objValue])) - && ((expectedValue_ == objExpect) || ([expectedValue_ isEqual:objExpect]))); - } - return isEqual; -} - -- (NSUInteger)hash { - return [valueToSet_ hash] + [expectedValue_ hash]; -} - -- (void)dealloc { - [valueToSet_ release]; - [expectedValue_ release]; - [super dealloc]; -} - -- (id)valueToSet { - return valueToSet_; -} - -- (id)expectedValue { - return expectedValue_; -} -@end - -@implementation NSObject (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [NSMutableArray arrayWithObject:NSValueBinding]; - if ([[self exposedBindings] containsObject:NSFontBinding]) { - NSString *fontBindings[] = { NSFontBoldBinding, NSFontFamilyNameBinding, - NSFontItalicBinding, NSFontNameBinding, NSFontSizeBinding }; - for (size_t i = 0; i < sizeof(fontBindings) / sizeof(NSString*); ++i) { - [array addObject:fontBindings[i]]; - } - } - return array; -} - -- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding { - - NSMutableArray *array = [NSMutableArray array]; - id value = [self valueForKey:binding]; - - // Always test identity if possible - if (value) { - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } - - // Now some default test values for a variety of bindings to make - // sure that we cover all the bases and save other people writing lots of - // duplicate test code. - - // If anybody can think of more to add, please go nuts. - if ([binding isEqualToString:NSAlignmentBinding]) { - value = [NSNumber numberWithInt:NSLeftTextAlignment]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:NSRightTextAlignment]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:NSCenterTextAlignment]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:NSJustifiedTextAlignment]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:NSNaturalTextAlignment]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - NSNumber *valueToSet = [NSNumber numberWithInt:500]; - [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet - expecting:value]]; - valueToSet = [NSNumber numberWithInt:-1]; - [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet - expecting:value]]; - } else if ([binding isEqualToString:NSAlternateImageBinding] || - [binding isEqualToString:NSImageBinding] || - [binding isEqualToString:NSMixedStateImageBinding] || - [binding isEqualToString:NSOffStateImageBinding] || - [binding isEqualToString:NSOnStateImageBinding]) { - // This handles all image bindings - value = [NSImage imageNamed:@"NSApplicationIcon"]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSAnimateBinding] || - [binding isEqualToString:NSDocumentEditedBinding] || - [binding isEqualToString:NSEditableBinding] || - [binding isEqualToString:NSEnabledBinding] || - [binding isEqualToString:NSHiddenBinding] || - [binding isEqualToString:NSVisibleBinding] || - [binding isEqualToString:NSIsIndeterminateBinding] || - // NSTranparentBinding 10.5 only - [binding isEqualToString:@"transparent"]) { - // This handles all bool value bindings - value = [NSNumber numberWithBool:YES]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithBool:NO]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSAlternateTitleBinding] || - [binding isEqualToString:NSHeaderTitleBinding] || - [binding isEqualToString:NSLabelBinding] || - [binding isEqualToString:NSTitleBinding] || - [binding isEqualToString:NSToolTipBinding]) { - // This handles all string value bindings - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"happy"]]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@""]]; - - // Test some non-ascii roman text - char a_not_alpha[] = { 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 }; - value = [NSString stringWithUTF8String:a_not_alpha]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some korean - char hangugo[] = { 0xED, 0x95, 0x9C, 0xEA, 0xB5, - 0xAD, 0xEC, 0x96, 0xB4, 0x00 }; - value = [NSString stringWithUTF8String:hangugo]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some japanese - char nihongo[] = { 0xE6, 0x97, 0xA5, 0xE6, 0x9C, - 0xAC, 0xE8, 0xAA, 0x9E, 0x00 }; - value = [NSString stringWithUTF8String:nihongo]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some arabic - char arabic[] = { 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 }; - value = [NSString stringWithUTF8String:arabic]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSRepresentedFilenameBinding]) { - // This handles all path bindings - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/happy"]]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/"]]; - - // Test some non-ascii roman text - char a_not_alpha[] = { '/', 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 }; - value = [NSString stringWithUTF8String:a_not_alpha]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some korean - char hangugo[] = { '/', 0xED, 0x95, 0x9C, 0xEA, 0xB5, - 0xAD, 0xEC, 0x96, 0xB4, 0x00 }; - value = [NSString stringWithUTF8String:hangugo]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some japanese - char nihongo[] = { '/', 0xE6, 0x97, 0xA5, 0xE6, 0x9C, - 0xAC, 0xE8, 0xAA, 0x9E, 0x00 }; - value = [NSString stringWithUTF8String:nihongo]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - // Test some arabic - char arabic[] = { '/', 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 }; - value = [NSString stringWithUTF8String:arabic]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSMaximumRecentsBinding]) { - value = [NSNumber numberWithInt:0]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:-1]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:INT16_MAX]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithInt:INT16_MIN]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSRowHeightBinding]) { - NSNumber *valueOne = [NSNumber numberWithInt:1]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:valueOne]]; - value = [NSNumber numberWithInt:0]; - id value2 = [NSNumber numberWithInt:INT16_MIN]; - // Row height no longer accepts <= 0 values on SnowLeopard - // which is a good thing. - if ([GTMSystemVersion isSnowLeopardOrGreater]) { - [array addObject:[GTMBindingUnitTestData testWithValue:value - expecting:valueOne]]; - - [array addObject:[GTMBindingUnitTestData testWithValue:value2 - expecting:valueOne]]; - } else { - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value2]]; - } - value = [NSNumber numberWithInt:INT16_MAX]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSMaxValueBinding] || - [binding isEqualToString:NSMaxWidthBinding] || - [binding isEqualToString:NSMinValueBinding] || - [binding isEqualToString:NSMinWidthBinding] || - [binding isEqualToString:NSContentWidthBinding] || - [binding isEqualToString:NSContentHeightBinding] || - [binding isEqualToString:NSWidthBinding] || - [binding isEqualToString:NSAnimationDelayBinding]) { - // NSAnimationDelay is deprecated on SnowLeopard. We continue to test it - // to make sure it doesn't get broken. - - // This handles all float value bindings - value = [NSNumber numberWithFloat:0]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:FLT_MAX]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:-FLT_MAX]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:FLT_MIN]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:-FLT_MIN]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:FLT_EPSILON]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSNumber numberWithFloat:-FLT_EPSILON]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSTextColorBinding]) { - // This handles all color value bindings - value = [NSColor colorWithCalibratedWhite:1.0 alpha:1.0]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.0]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.5]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSColor colorWithCalibratedRed:0.5 green:0.5 blue:0.5 alpha:0.5]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSColor colorWithDeviceCyan:0.25 magenta:0.25 yellow:0.25 - black:0.25 alpha:0.25]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSFontBinding]) { - // This handles all font value bindings - value = [NSFont boldSystemFontOfSize:[NSFont systemFontSize]]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSFont toolTipsFontOfSize:[NSFont smallSystemFontSize]]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - value = [NSFont labelFontOfSize:144.0]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSRecentSearchesBinding] || - [binding isEqualToString:NSSortDescriptorsBinding]) { - // This handles all array value bindings - value = [NSArray array]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else if ([binding isEqualToString:NSTargetBinding]) { - value = [NSNull null]; - [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]]; - } else { - _GTMDevLog(@"Skipped Binding: %@ for %@", binding, self); // COV_NF_LINE - } - return array; -} - -- (BOOL)gtm_unitTestIsEqualTo:(id)value { - return [self isEqualTo:value]; -} - -@end - -#pragma mark - -#pragma mark All the special AppKit Bindings issues below - -@interface NSImage (GTMBindingUnitTestingAdditions) -@end - -@implementation NSImage (GTMBindingUnitTestingAdditions) -- (BOOL)gtm_unitTestIsEqualTo:(id)value { - // NSImage just does pointer equality in the default isEqualTo implementation - // we need something a little more heavy duty that actually compares the - // images internally. - return [[self TIFFRepresentation] isEqualTo:[value TIFFRepresentation]]; -} -@end - -@interface NSScroller (GTMBindingUnitTestingAdditions) -@end - -@implementation NSScroller (GTMBindingUnitTestingAdditions) -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - SInt32 major, minor, bugFix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; - if (major <= 10 && minor <= 5 && bugFix <= 5) { - // rdar://5849154 - NSScroller exposes binding with no value - // class for NSValueBinding - [array addObject:NSValueBinding]; - } - if ([GTMSystemVersion isBuildLessThanOrEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // Broken on SnowLeopard WWDC and below - // rdar://5849236 - NSScroller exposes binding for NSFontBinding - [array addObject:NSFontBinding]; - } - return array; -} -@end - -@interface NSTextField (GTMBindingUnitTestingAdditions) -@end - -@implementation NSTextField (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - // Not KVC Compliant - for (int i = 0; i < 10; i++) { - [array addObject:[NSString stringWithFormat:@"displayPatternValue%d", i]]; - } - return array; -} - -- (NSMutableArray *)gtm_unitTestExposedBindingsTestValues:(NSString*)binding { - NSMutableArray *array = [super gtm_unitTestExposedBindingsTestValues:binding]; - if ([binding isEqualToString:NSAlignmentBinding]) { - if ([GTMSystemVersion isBuildLessThanOrEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // rdar://5851487 - If NSAlignmentBinding for a NSTextField is set to -1 - // and then got it returns 7 - NSNumber *textAlignment = [NSNumber numberWithInt:NSNaturalTextAlignment]; - GTMBindingUnitTestData *dataToRemove = - [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1] - expecting:textAlignment]; - [array removeObject:dataToRemove]; - GTMBindingUnitTestData *dataToAdd = - [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1] - expecting:[NSNumber numberWithInt:7]]; - [array addObject:dataToAdd]; - } - } - return array; -} -@end - -@interface NSSearchField (GTMBindingUnitTestingAdditions) -@end - -@implementation NSSearchField (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - SInt32 major, minor, bugFix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; - if (major <= 10 && minor <= 5 && bugFix <= 6) { - // rdar://5851491 - Setting NSAlignmentBinding of search field to - // NSCenterTextAlignment broken - // Broken on 10.5.6 and below. - [array addObject:NSAlignmentBinding]; - } - // Not KVC Compliant - [array addObject:NSPredicateBinding]; - return array; -} - -@end - -@interface NSWindow (GTMBindingUnitTestingAdditions) -@end - -@implementation NSWindow (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - // Not KVC Compliant - [array addObject:NSContentWidthBinding]; - [array addObject:NSContentHeightBinding]; - for (int i = 0; i < 10; i++) { - [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]]; - } - return array; -} - -@end - -@interface NSBox (GTMBindingUnitTestingAdditions) -@end - -@implementation NSBox (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - // Not KVC Compliant - for (int i = 0; i < 10; i++) { - [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]]; - } - return array; -} - -@end - -@interface NSTableView (GTMBindingUnitTestingAdditions) -@end - -@implementation NSTableView (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - if ([GTMSystemVersion isBuildLessThanOrEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // rdar://6288332 - NSTableView does not respond to NSFontBinding - // Broken on 10.5, and SnowLeopard WWDC - [array addObject:NSFontBinding]; - } - // Not KVC Compliant - [array addObject:NSContentBinding]; - [array addObject:NSDoubleClickTargetBinding]; - [array addObject:NSDoubleClickArgumentBinding]; - [array addObject:NSSelectionIndexesBinding]; - return array; -} - -@end - -@interface NSTextView (GTMBindingUnitTestingAdditions) -@end - -@implementation NSTextView (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - if ([GTMSystemVersion isBuildLessThanOrEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - //rdar://5849335 - NSTextView only partially KVC compliant for key - // NSAttributedStringBinding - [array addObject:NSAttributedStringBinding]; - } - // Not KVC Compliant - [array addObject:NSDataBinding]; - [array addObject:NSValueURLBinding]; - [array addObject:NSValuePathBinding]; - return array; -} - -@end - -@interface NSTabView (GTMBindingUnitTestingAdditions) -@end - -@implementation NSTabView (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - if ([GTMSystemVersion isBuildLessThanOrEqualTo:kGTMSystemBuild10_6_0_WWDC]) { - // rdar://5849248 - NSTabView exposes binding with no value class - // for NSSelectedIdentifierBinding - [array addObject:NSSelectedIdentifierBinding]; - } - // Not KVC Compliant - [array addObject:NSSelectedIndexBinding]; - [array addObject:NSSelectedLabelBinding]; - return array; -} - -@end - -@interface NSButton (GTMBindingUnitTestingAdditions) -@end - -@implementation NSButton (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - // Not KVC Compliant - [array addObject:NSArgumentBinding]; - return array; -} - -@end - -@interface NSProgressIndicator (GTMBindingUnitTestingAdditions) -@end - -@implementation NSProgressIndicator (GTMBindingUnitTestingAdditions) - -- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore { - NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore]; - // Not KVC Compliant - [array addObject:NSAnimateBinding]; - return array; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.h deleted file mode 100644 index 37eae5bf..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.h +++ /dev/null @@ -1,417 +0,0 @@ -// -// GTMNSObject+UnitTesting.h -// -// Utilities for doing advanced unittesting with objects. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMDefines.h" -#import - -#if GTM_MACOS_SDK -#import -#elif GTM_IPHONE_SDK -#import -#endif - -#import "GTMSenTestCase.h" - -// Utility functions for GTMAssert* Macros. Don't use them directly -// but use the macros below instead -BOOL GTMIsObjectImageEqualToImageNamed(id object, - NSString *filename, - NSString **error); -BOOL GTMIsObjectStateEqualToStateNamed(id object, - NSString *filename, - NSString **error); - -// Fails when image of |a1| does not equal image in image file named |a2| -// -// Generates a failure when the unittest image of |a1| is not equal to the -// image stored in the image file named |a2|, or |a2| does not exist in the -// executable code's bundle. -// If |a2| does not exist in the executable code's bundle, we save a image -// representation of |a1| in the save directory with name |a2|. This can then -// be included in the bundle as the master to test against. -// If |a2| != |a1|, we save a image representation of |a1| in the save -// directory named |a2|_Failed and a file named |a2|_Failed_Diff showing the -// diff in red so that we can see what has changed. -// See pathForImageNamed to see how name is searched for. -// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is -// the desktop by default. -// Implemented as a macro to match the rest of the SenTest macros. -// -// Args: -// a1: The object to be checked. Must implement the -createUnitTestImage method. -// a2: The name of the image file to check against. -// Do not include the extension -// description: A format string as in the printf() function. -// Can be nil or an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -// -#define GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ...) \ -do { \ - id a1Object = (a1); \ - NSString* a2String = (a2); \ - NSString *failString = nil; \ - BOOL isGood = GTMIsObjectImageEqualToImageNamed(a1Object, a2String, &failString); \ - if (!isGood) { \ - if (description) { \ - STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \ - } else { \ - STFail(@"%@", failString); \ - } \ - } \ -} while(0) - -// Fails when state of |a1| does not equal state in file |a2| -// -// Generates a failure when the unittest state of |a1| is not equal to the -// state stored in the state file named |a2|, or |a2| does not exist in the -// executable code's bundle. -// If |a2| does not exist in the executable code's bundle, we save a state -// representation of |a1| in the save directiry with name |a2|. This can then -// be included in the bundle as the master to test against. -// If |a2| != |a1|, we save a state representation of |a1| in the save -// directory with name |a2|_Failed so that we can compare the two files to see -// what has changed. -// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is -// the desktop by default. -// Implemented as a macro to match the rest of the SenTest macros. -// -// Args: -// a1: The object to be checked. Must implement the -createUnitTestImage method. -// a2: The name of the state file to check against. -// Do not include the extension -// description: A format string as in the printf() function. -// Can be nil or an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -// -#define GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ...) \ -do { \ - id a1Object = (a1); \ - NSString* a2String = (a2); \ - NSString *failString = nil; \ - BOOL isGood = GTMIsObjectStateEqualToStateNamed(a1Object, a2String, &failString); \ - if (!isGood) { \ - if (description) { \ - STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \ - } else { \ - STFail(@"%@", failString); \ - } \ - } \ -} while(0); - -// test both GTMAssertObjectImageEqualToImageNamed and GTMAssertObjectStateEqualToStateNamed -// -// Combines the above two macros into a single ubermacro for comparing -// both state and image. When only the best will do... -#define GTMAssertObjectEqualToStateAndImageNamed(a1, a2, description, ...) \ -do { \ - GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ##__VA_ARGS__); \ - GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ##__VA_ARGS__); \ -} while (0) - -// Create a CGBitmapContextRef appropriate for using in creating a unit test -// image. If data is non-NULL, returns the buffer that the bitmap is -// using for it's underlying storage. You must free this buffer using -// free. If data is NULL, uses it's own internal storage. -// Defined as a C function instead of an obj-c method because you have to -// release the CGContextRef that is returned. -// -// Returns: -// an CGContextRef of the object. Caller must release - -CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size, - unsigned char **data); - -// GTMUnitTestingImaging protocol is for objects which need to save their -// image for using with the unit testing categories -@protocol GTMUnitTestingImaging -// Create a CGImageRef containing a representation suitable for use in -// comparing against a master image. -// -// Returns: -// an CGImageRef of the object. -- (CGImageRef)gtm_unitTestImage; -@end - -// GTMUnitTestingEncoding protocol is for objects which need to save their -// "state" for using with the unit testing categories -@protocol GTMUnitTestingEncoding -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. Encode data in the coder in the same -// manner that you would encode data in any other Keyed NSCoder subclass. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder; -@end - -// Category for saving and comparing object state and image for unit tests -// -// The GTMUnitTestAdditions category gives object the ability to store their -// state for use in unittesting in two different manners. -// 1) Objects can elect to save their "image" that we can compare at -// runtime to an image file to make sure that the representation hasn't -// changed. All views and Windows can save their image. In the case of Windows, -// they are "bluescreened" so that any transparent areas can be compared between -// machines. -// 2) Objects can elect to save their "state". State is the attributes that we -// want to verify when running unit tests. Applications, Windows, Views, -// Controls and Cells currently return a variety of state information. If you -// want to customize the state information that a particular object returns, you -// can do it via the GTMUnitTestingEncodedObjectNotification. Items that have -// delegates (Applications/Windows) can also have their delegates return state -// information if appropriate via the unitTestEncoderDidEncode:inCoder: delegate -// method. -// To compare state/image in your unit tests, you can use the three macros above -// GTMAssertObjectStateEqualToStateNamed, GTMAssertObjectImageEqualToImageNamed and -// GTMAssertObjectEqualToStateAndImageNamed. -@interface NSObject (GTMUnitTestingAdditions) -// Allows you to control where the unit test utilities save any files -// (image or state) that they create on your behalf. By default they -// will save to the desktop. -+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path; -+ (NSString *)gtm_getUnitTestSaveToDirectory; - -// Checks to see that system settings are valid for doing an image comparison. -// Most of these are set by our unit test app. See the unit test app main.m -// for details. -// -// Returns: -// YES if we can do image comparisons for this object type. -- (BOOL)gtm_areSystemSettingsValidForDoingImage; - -// Return the type of image to work with. Only valid types on the iPhone -// are kUTTypeJPEG and kUTTypePNG. MacOS supports several more. -- (CFStringRef)gtm_imageUTI; - -// Return the extension to be used for saving unittest images -// -// Returns -// An extension (e.g. "png") -- (NSString*)gtm_imageExtension; - -// Return image data in the format expected for gtm_imageExtension -// So for a "png" extension I would expect "png" data -// -// Returns -// NSData for image -- (NSData*)gtm_imageDataForImage:(CGImageRef)image; - -// Save the unitTestImage to a image file with name -// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension -// in the save folder (desktop by default) -// -// Args: -// name: The name for the image file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToImageNamed:(NSString*)name; - -// Save unitTestImage of |self| to an image file at path |path|. -// All non-drawn areas will be transparent. -// -// Args: -// name: The name for the image file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToImageAt:(NSString*)path; - -// Compares unitTestImage of |self| to the image located at |path| -// -// Args: -// path: the path to the image file you want to compare against. -// If diff is non-nil, it will contain an auto-released diff of the images. -// -// Returns: -// YES if they are equal, NO is they are not -// If diff is non-nil, it will contain a diff of the images. Must -// be released by caller. -// -- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff; - -// Find the path for a image by name in your bundle. -// Searches for the following: -// "name.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersionBugfix.arch.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.extension" -// "name.OSVersionMajor.OSVersionMinor.arch.extension" -// "name.arch.OSVersionMajor.extension" -// "name.OSVersionMajor.arch.extension" -// "name.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension" -// "name.OSVersionMajor.OSVersionMinorextension" -// "name.OSVersionMajor.extension" -// "name.extension" -// Do not include the extension on your name. -// -// Args: -// name: The name for the image file you would like to find. -// -// Returns: -// the path if the image exists in your bundle -// or nil if no image to be found -// -- (NSString *)gtm_pathForImageNamed:(NSString*)name; - -// Generates a CGImageRef from the image at |path| -// Args: -// path: The path to the image. -// -// Returns: -// An autoreleased CGImageRef own, or nil if no image at path -- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path; - -// Generates a path for a image in the save directory, which is desktop -// by default. -// Path will be: -// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension -// -// Args: -// name: The name for the image file you would like to generate a path for. -// -// Returns: -// the path -// -- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name; - -// Gives us a representation of unitTestImage of |self|. -// -// Returns: -// a representation if successful -// nil if failed -// -- (NSData *)gtm_imageRepresentation; - -// Return the extension to be used for saving unittest states -// -// Returns -// An extension (e.g. "gtmUTState") -- (NSString*)gtm_stateExtension; - -// Save the encoded unit test state to a state file with name -// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension -// in the save folder (desktop by default) -// -// Args: -// name: The name for the state file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToStateNamed:(NSString*)name; - -// Save encoded unit test state of |self| to a state file at path |path|. -// -// Args: -// name: The name for the state file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToStateAt:(NSString*)path; - -// Compares encoded unit test state of |self| to the state file located at |path| -// -// Args: -// path: the path to the state file you want to compare against. -// -// Returns: -// YES if they are equal, NO is they are not -// -- (BOOL)gtm_compareWithStateAt:(NSString*)path; - - -// Find the path for a state by name in your bundle. -// Searches for: -// "name.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersionBugfix.arch.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.extension" -// "name.OSVersionMajor.OSVersionMinor.arch.extension" -// "name.arch.OSVersionMajor.extension" -// "name.OSVersionMajor.arch.extension" -// "name.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension" -// "name.OSVersionMajor.OSVersionMinor.extension" -// "name.OSVersionMajor.extension" -// "name.extension" -// Do not include the extension on your name. -// -// Args: -// name: The name for the state file you would like to find. -// -// Returns: -// the path if the state exists in your bundle -// or nil if no state to be found -// -- (NSString *)gtm_pathForStateNamed:(NSString*)name; - -// Generates a path for a state in the save directory, which is desktop -// by default. -// Path will be: -// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension -// -// Args: -// name: The name for the state file you would like to generate a path for. -// -// Returns: -// the path -// -- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name; - -// Gives us the encoded unit test state for |self| -// -// Returns: -// the encoded state if successful -// nil if failed -// -- (NSDictionary *)gtm_stateRepresentation; - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. Encode data in the coder in the same -// manner that you would encode data in any other Keyed NSCoder subclass. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder; -@end - -// Informal protocol for delegates that wanst to be able to add state info -// when state info is collected for their "owned" objects -@interface NSObject (GTMUnitTestingEncodingAdditions) -// Delegate function for unit test objects that have delegates. Delegates have -// the option of encoding more data into the coder to store their state for -// unittest usage. -- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder; -@end - -// Whenever an object is encoded by the unit test encoder, it send out a -// notification so that objects who want to add data to the encoded objects unit -// test state can do so. The Coder will be in the userInfo dictionary for the -// notification under the GTMUnitTestingEncoderKey key. -GTM_EXTERN NSString *const GTMUnitTestingEncodedObjectNotification; - -// Key for finding the encoder in the userInfo dictionary for -// GTMUnitTestingEncodedObjectNotification notifications. -GTM_EXTERN NSString *const GTMUnitTestingEncoderKey; diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.m deleted file mode 100644 index cc6a7ea4..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMNSObject+UnitTesting.m +++ /dev/null @@ -1,982 +0,0 @@ -// -// GTMNSObject+UnitTesting.m -// -// An informal protocol for doing advanced unittesting with objects. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMNSObject+UnitTesting.h" -#import "GTMSystemVersion.h" -#import "GTMGarbageCollection.h" - -#if GTM_IPHONE_SDK -#import -#else -#import -#endif - -NSString *const GTMUnitTestingEncodedObjectNotification - = @"GTMUnitTestingEncodedObjectNotification"; -NSString *const GTMUnitTestingEncoderKey = @"GTMUnitTestingEncoderKey"; - -#if GTM_IPHONE_SDK -// No UTIs on iPhone. Only two we need. -const CFStringRef kUTTypePNG = CFSTR("public.png"); -const CFStringRef kUTTypeJPEG = CFSTR("public.jpeg"); -#endif - -// This class exists so that we can locate our bundle using [NSBundle -// bundleForClass:]. We don't use [NSBundle mainBundle] because when we are -// being run as a unit test, we aren't the mainBundle -@interface GTMUnitTestingAdditionsBundleFinder : NSObject { - // Nothing here -} -// or here -@end - -@implementation GTMUnitTestingAdditionsBundleFinder -// Nothing here. We're just interested in the name for finding our bundle. -@end - -BOOL GTMIsObjectImageEqualToImageNamed(id object, - NSString* filename, - NSString **error) { - NSString *failString = nil; - if (error) { - *error = nil; - } - BOOL isGood = [object respondsToSelector:@selector(gtm_unitTestImage)]; - if (isGood) { - if ([object gtm_areSystemSettingsValidForDoingImage]) { - NSString *aPath = [object gtm_pathForImageNamed:filename]; - CGImageRef diff = nil; - isGood = aPath != nil; - if (isGood) { - isGood = [object gtm_compareWithImageAt:aPath diffImage:&diff]; - } - if (!isGood) { - if (aPath) { - filename = [filename stringByAppendingString:@"_Failed"]; - } - BOOL aSaved = [object gtm_saveToImageNamed:filename]; - NSString *fileNameWithExtension - = [NSString stringWithFormat:@"%@.%@", - filename, [object gtm_imageExtension]]; - NSString *fullSavePath = [object gtm_saveToPathForImageNamed:filename]; - if (NO == aSaved) { - if (!aPath) { - failString = [NSString stringWithFormat:@"File %@ did not exist in " - @"bundle. Tried to save as %@ and failed.", - fileNameWithExtension, fullSavePath]; - } else { - failString = [NSString stringWithFormat:@"Object image different " - @"than file %@. Tried to save as %@ and failed.", - aPath, fullSavePath]; - } - } else { - if (!aPath) { - failString = [NSString stringWithFormat:@"File %@ did not exist in " - @" bundle. Saved to %@", fileNameWithExtension, - fullSavePath]; - } else { - NSString *diffPath = [filename stringByAppendingString:@"_Diff"]; - diffPath = [object gtm_saveToPathForImageNamed:diffPath]; - NSData *data = nil; - if (diff) { - data = [object gtm_imageDataForImage:diff]; - } - if ([data writeToFile:diffPath atomically:YES]) { - failString = [NSString stringWithFormat:@"Object image different " - @"than file %@. Saved image to %@. " - @"Saved diff to %@", - aPath, fullSavePath, diffPath]; - } else { - failString = [NSString stringWithFormat:@"Object image different " - @"than file %@. Saved image to %@. Unable to save " - @"diff. Most likely the image and diff are " - @"different sizes.", - aPath, fullSavePath]; - } - } - } - } - CGImageRelease(diff); - } else { - failString = @"systemSettings not valid for taking image"; // COV_NF_LINE - } - } else { - failString = @"Object does not conform to GTMUnitTestingImaging protocol"; - } - if (error) { - *error = failString; - } - return isGood; -} - -BOOL GTMIsObjectStateEqualToStateNamed(id object, - NSString* filename, - NSString **error) { - NSString *failString = nil; - if (error) { - *error = nil; - } - BOOL isGood = [object conformsToProtocol:@protocol(GTMUnitTestingEncoding)]; - if (isGood) { - NSString *aPath = [object gtm_pathForStateNamed:filename]; - isGood = aPath != nil; - if (isGood) { - isGood = [object gtm_compareWithStateAt:aPath]; - } - if (!isGood) { - if (aPath) { - filename = [filename stringByAppendingString:@"_Failed"]; - } - BOOL aSaved = [object gtm_saveToStateNamed:filename]; - NSString *fileNameWithExtension = [NSString stringWithFormat:@"%@.%@", - filename, [object gtm_stateExtension]]; - NSString *fullSavePath = [object gtm_saveToPathForStateNamed:filename]; - if (NO == aSaved) { - if (!aPath) { - failString = [NSString stringWithFormat:@"File %@ did not exist in " - @"bundle. Tried to save as %@ and failed.", - fileNameWithExtension, fullSavePath]; - } else { - failString = [NSString stringWithFormat:@"Object state different " - @"than file %@. Tried to save as %@ and failed.", - aPath, fullSavePath]; - } - } else { - if (!aPath) { - failString = [NSString stringWithFormat:@"File %@ did not exist in " - @ "bundle. Saved to %@", fileNameWithExtension, - fullSavePath]; - } else { - failString = [NSString stringWithFormat:@"Object state different " - @"than file %@. Saved to %@", aPath, fullSavePath]; - } - } - } - } else { - failString = @"Object does not conform to GTMUnitTestingEncoding protocol"; - } - if (error) { - *error = failString; - } - return isGood; -} - -CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size, - unsigned char **data) { - CGContextRef context = NULL; - size_t height = size.height; - size_t width = size.width; - size_t bytesPerRow = width * 4; - size_t bitsPerComponent = 8; - CGColorSpaceRef cs = NULL; -#if GTM_IPHONE_SDK - cs = CGColorSpaceCreateDeviceRGB(); -#else - cs = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); -#endif - _GTMDevAssert(cs, @"Couldn't create colorspace"); - CGBitmapInfo info - = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault; - if (data) { - *data = (unsigned char*)calloc(bytesPerRow, height); - _GTMDevAssert(*data, @"Couldn't create bitmap"); - } - context = CGBitmapContextCreate(data ? *data : NULL, width, height, - bitsPerComponent, bytesPerRow, cs, info); - _GTMDevAssert(context, @"Couldn't create an context"); - if (!data) { - CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height)); - } - CGContextSetRenderingIntent(context, kCGRenderingIntentRelativeColorimetric); - CGContextSetInterpolationQuality(context, kCGInterpolationNone); - CGContextSetShouldAntialias(context, NO); - CGContextSetAllowsAntialiasing(context, NO); - CGContextSetShouldSmoothFonts(context, NO); - CGColorSpaceRelease(cs); - return context; -} - -@interface NSObject (GTMUnitTestingAdditionsPrivate) -/// Find the path for a file named name.extension in your bundle. -// Searches for the following: -// "name.extension", -// "name.arch.extension", -// "name.arch.OSVersionMajor.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension" -// "name.arch.OSVersionMajor.extension" -// "name.OSVersionMajor.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.arch.extension" -// "name.OSVersionMajor.extension" -// "name.OSVersionMajor.OSVersionMinor.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension" -// Do not include the ".extension" extension on your name. -// -// Args: -// name: The name for the file you would like to find. -// extension: the extension for the file you would like to find -// -// Returns: -// the path if the file exists in your bundle -// or nil if no file is found -// -- (NSString *)gtm_pathForFileNamed:(NSString*)name - extension:(NSString*)extension; -- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name - extension:(NSString*)extension; -- (CGImageRef)gtm_unitTestImage; -// Returns nil if there is no override -- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory; -@end - -// This is a keyed coder for storing unit test state data. It is used only by -// the GTMUnitTestingAdditions category. Most of the work is done in -// encodeObject:forKey:. -@interface GTMUnitTestingKeyedCoder : NSCoder { - NSMutableDictionary *dictionary_; // storage for data (STRONG) -} - -// get the data stored in coder. -// -// Returns: -// NSDictionary with currently stored data. -- (NSDictionary*)dictionary; -@end - -// Small utility function for checking to see if a is b +/- 1. -GTM_INLINE BOOL almostEqual(unsigned char a, unsigned char b) { - unsigned char diff = a > b ? a - b : b - a; - BOOL notEqual = diff < 2; - return notEqual; -} - -@implementation GTMUnitTestingKeyedCoder - -// Set up storage for coder. Stores type and version. -// Version 1 -// -// Returns: -// self -- (id)init { - self = [super init]; - if (self != nil) { - dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:2]; - [dictionary_ setObject:@"GTMUnitTestingArchive" forKey:@"$GTMArchive"]; - - // Version number can be changed here. - [dictionary_ setObject:[NSNumber numberWithInt:1] forKey:@"$GTMVersion"]; - } - return self; -} - -// Standard dealloc -- (void)dealloc { - [dictionary_ release]; - [super dealloc]; -} - -// Utility function for checking for a key value. We don't want duplicate keys -// in any of our dictionaries as we may be writing over data stored by previous -// objects. -// -// Arguments: -// key - key to check for in dictionary -- (void)checkForKey:(NSString*)key { - _GTMDevAssert(![dictionary_ objectForKey:key], - @"Key already exists for %@", key); -} - -// Key routine for the encoder. We store objects in our dictionary based on -// their key. As we encode objects we send out notifications to let other -// classes doing tests add their specific data to the base types. If we can't -// encode the object (it doesn't support gtm_unitTestEncodeState) and we don't -// get any info back from the notifier, we attempt to store it's description. -// -// Arguments: -// objv - object to be encoded -// key - key to encode it with -// -- (void)encodeObject:(id)objv forKey:(NSString *)key { - // Sanity checks - if (!objv) return; - [self checkForKey:key]; - - // Set up a new dictionary for the current object - NSMutableDictionary *curDictionary = dictionary_; - dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:0]; - - // If objv responds to gtm_unitTestEncodeState get it to record - // its data. - if ([objv respondsToSelector:@selector(gtm_unitTestEncodeState:)]) { - [objv gtm_unitTestEncodeState:self]; - } - - // We then send out a notification to let other folks - // add data for this object - NSDictionary *notificationDict - = [NSDictionary dictionaryWithObject:self forKey:GTMUnitTestingEncoderKey]; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc postNotificationName:GTMUnitTestingEncodedObjectNotification - object:objv - userInfo:notificationDict]; - - // If we got anything from the object, or from the notification, store it in - // our dictionary. Otherwise store the description. - if ([dictionary_ count] > 0) { - [curDictionary setObject:dictionary_ forKey:key]; - } else { - NSString *description = [objv description]; - // If description has a pointer value in it, we don't want to store it - // as the pointer value can change from run to run - if (description && [description rangeOfString:@"0x"].length == 0) { - [curDictionary setObject:description forKey:key]; - } else { - _GTMDevAssert(NO, @"Unable to encode forKey: %@", key); // COV_NF_LINE - } - } - [dictionary_ release]; - dictionary_ = curDictionary; -} - -// Basic encoding methods for POD types. -// -// Arguments: -// *v - value to encode -// key - key to encode it in - -- (void)encodeBool:(BOOL)boolv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithBool:boolv] forKey:key]; -} - -- (void)encodeInt:(int)intv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithInt:intv] forKey:key]; -} - -- (void)encodeInt32:(int32_t)intv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithLong:intv] forKey:key]; -} - -- (void)encodeInt64:(int64_t)intv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithLongLong:intv] forKey:key]; -} - -- (void)encodeFloat:(float)realv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithFloat:realv] forKey:key]; -} - -- (void)encodeDouble:(double)realv forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSNumber numberWithDouble:realv] forKey:key]; -} - -- (void)encodeBytes:(const uint8_t *)bytesp - length:(unsigned)lenv - forKey:(NSString *)key { - [self checkForKey:key]; - [dictionary_ setObject:[NSData dataWithBytes:bytesp - length:lenv] - forKey:key]; -} - -// Get our storage back as an NSDictionary -// -// Returns: -// NSDictionary containing our encoded info --(NSDictionary*)dictionary { - return [[dictionary_ retain] autorelease]; -} - -@end - -static NSString *gGTMUnitTestSaveToDirectory = nil; - -@implementation NSObject (GTMUnitTestingAdditions) - -+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path { - @synchronized([self class]) { - [gGTMUnitTestSaveToDirectory autorelease]; - gGTMUnitTestSaveToDirectory = [path copy]; - } -} - -+ (NSString *)gtm_getUnitTestSaveToDirectory { - NSString *result = nil; - @synchronized([self class]) { - if (!gGTMUnitTestSaveToDirectory) { -#if GTM_IPHONE_SDK - // Developer build, use their home directory Desktop. - gGTMUnitTestSaveToDirectory - = [[[[[NSHomeDirectory() stringByDeletingLastPathComponent] - stringByDeletingLastPathComponent] - stringByDeletingLastPathComponent] - stringByDeletingLastPathComponent] - stringByAppendingPathComponent:@"Desktop"]; -#else - NSArray *desktopDirs - = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, - NSUserDomainMask, - YES); - gGTMUnitTestSaveToDirectory = [desktopDirs objectAtIndex:0]; -#endif - // Did we get overridden? - NSString *override = [self gtm_getOverrideDefaultUnitTestSaveToDirectory]; - if (override) { - gGTMUnitTestSaveToDirectory = override; - } - [gGTMUnitTestSaveToDirectory retain]; - } - result = gGTMUnitTestSaveToDirectory; - } - - return result; -} - -// Return nil if there is no override -- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory { - NSString *result = nil; - - // If we have an environment variable that ends in "BUILD_NUMBER" odds are - // we're on an automated build system, so use the build products dir as an - // override instead of writing on the desktop. - NSDictionary *env = [[NSProcessInfo processInfo] environment]; - NSString *key; - GTM_FOREACH_KEY(key, env) { - if ([key hasSuffix:@"BUILD_NUMBER"]) { - break; - } - } - if (key) { - result = [env objectForKey:@"BUILT_PRODUCTS_DIR"]; - } - - if (result && [result length] == 0) { - result = nil; - } - return result; -} - -/// Find the path for a file named name.extension in your bundle. -// Searches for the following: -// "name.extension", -// "name.arch.extension", -// "name.arch.OSVersionMajor.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.extension" -// "name.arch.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension" -// "name.arch.OSVersionMajor.extension" -// "name.OSVersionMajor.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.arch.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.arch.extension" -// "name.OSVersionMajor.extension" -// "name.OSVersionMajor.OSVersionMinor.extension" -// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension" -// Do not include the ".extension" extension on your name. -// -// Args: -// name: The name for the file you would like to find. -// extension: the extension for the file you would like to find -// -// Returns: -// the path if the file exists in your bundle -// or nil if no file is found -// -- (NSString *)gtm_pathForFileNamed:(NSString*)name - extension:(NSString*)extension { - NSString *thePath = nil; - Class bundleClass = [GTMUnitTestingAdditionsBundleFinder class]; - NSBundle *myBundle = [NSBundle bundleForClass:bundleClass]; - _GTMDevAssert(myBundle, - @"Couldn't find bundle for class: %@ searching for file:%@.%@", - NSStringFromClass(bundleClass), name, extension); - // System Version - SInt32 major, minor, bugFix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; - NSString *systemVersions[4]; - systemVersions[0] = [NSString stringWithFormat:@".%d.%d.%d", - major, minor, bugFix]; - systemVersions[1] = [NSString stringWithFormat:@".%d.%d", major, minor]; - systemVersions[2] = [NSString stringWithFormat:@".%d", major]; - systemVersions[3] = @""; - NSString *extensions[2]; - extensions[0] - = [NSString stringWithFormat:@".%@", - [GTMSystemVersion runtimeArchitecture]]; - extensions[1] = @""; - - size_t i, j; - // Note that we are searching for the most exact match first. - for (i = 0; - !thePath && i < sizeof(extensions) / sizeof(*extensions); - ++i) { - for (j = 0; - !thePath && j < sizeof(systemVersions) / sizeof(*systemVersions); - j++) { - NSString *fullName = [NSString stringWithFormat:@"%@%@%@", - name, extensions[i], systemVersions[j]]; - thePath = [myBundle pathForResource:fullName ofType:extension]; - if (thePath) break; - fullName = [NSString stringWithFormat:@"%@%@%@", - name, systemVersions[j], extensions[i]]; - thePath = [myBundle pathForResource:fullName ofType:extension]; - } - } - - return thePath; -} - -- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name - extension:(NSString*)extension { - NSString *systemArchitecture = [GTMSystemVersion runtimeArchitecture]; - - SInt32 major, minor, bugFix; - [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix]; - - NSString *fullName = [NSString stringWithFormat:@"%@.%@.%d.%d.%d", - name, systemArchitecture, major, minor, bugFix]; - - NSString *basePath = [[self class] gtm_getUnitTestSaveToDirectory]; - return [[basePath stringByAppendingPathComponent:fullName] - stringByAppendingPathExtension:extension]; -} - -#pragma mark UnitTestImage - -// Checks to see that system settings are valid for doing an image comparison. -// To be overridden by subclasses. -// Returns: -// YES if we can do image comparisons for this object type. -- (BOOL)gtm_areSystemSettingsValidForDoingImage { - return YES; -} - -- (CFStringRef)gtm_imageUTI { -#if GTM_IPHONE_SDK - return kUTTypePNG; -#else - // Currently can't use PNG on Leopard. (10.5.2) - // Radar:5844618 PNG importer/exporter in ImageIO is lossy - return kUTTypeTIFF; -#endif -} - -// Return the extension to be used for saving unittest images -// -// Returns -// An extension (e.g. "png") -- (NSString*)gtm_imageExtension { - CFStringRef uti = [self gtm_imageUTI]; -#if GTM_IPHONE_SDK - if (CFEqual(uti, kUTTypePNG)) { - return @"png"; - } else if (CFEqual(uti, kUTTypeJPEG)) { - return @"jpg"; - } else { - _GTMDevAssert(NO, @"Illegal UTI for iPhone"); - } - return nil; -#else - CFStringRef extension - = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension); - _GTMDevAssert(extension, @"No extension for uti: %@", uti); - - return GTMCFAutorelease(extension); -#endif -} - -// Return image data in the format expected for gtm_imageExtension -// So for a "png" extension I would expect "png" data -// -// Returns -// NSData for image -- (NSData*)gtm_imageDataForImage:(CGImageRef)image { - NSData *data = nil; -#if GTM_IPHONE_SDK - // iPhone support - UIImage *uiImage = [UIImage imageWithCGImage:image]; - CFStringRef uti = [self gtm_imageUTI]; - if (CFEqual(uti, kUTTypePNG)) { - data = UIImagePNGRepresentation(uiImage); - } else if (CFEqual(uti, kUTTypeJPEG)) { - data = UIImageJPEGRepresentation(uiImage, 1.0f); - } else { - _GTMDevAssert(NO, @"Illegal UTI for iPhone"); - } -#else - data = [NSMutableData data]; - CGImageDestinationRef dest - = CGImageDestinationCreateWithData((CFMutableDataRef)data, - [self gtm_imageUTI], - 1, - NULL); - // LZW Compression for TIFF - NSDictionary *tiffDict - = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:NSTIFFCompressionLZW], - (const NSString*)kCGImagePropertyTIFFCompression, - nil]; - NSDictionary *destProps - = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithFloat:1.0f], - (const NSString*)kCGImageDestinationLossyCompressionQuality, - tiffDict, - (const NSString*)kCGImagePropertyTIFFDictionary, - nil]; - CGImageDestinationAddImage(dest, image, (CFDictionaryRef)destProps); - CGImageDestinationFinalize(dest); - CFRelease(dest); -#endif - return data; - -} - -// Save the unitTestImage to an image file with name |name| at -// ~/Desktop/|name|.extension. -// -// Note: When running under Pulse automation output is redirected to the -// Pulse base directory. -// -// Args: -// name: The name for the image file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToImageNamed:(NSString*)name { - NSString *newPath = [self gtm_saveToPathForImageNamed:name]; - return [self gtm_saveToImageAt:newPath]; -} - -// Save unitTestImage of |self| to an image file at path |path|. -// -// Args: -// name: The name for the image file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToImageAt:(NSString*)path { - if (!path) return NO; - NSData *data = [self gtm_imageRepresentation]; - return [data writeToFile:path atomically:YES]; -} - -// Generates a CGImageRef from the image at |path| -// Args: -// path: The path to the image. -// -// Returns: -// A CGImageRef that you own, or nil if no image at path -- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path { - CGImageRef imageRef = nil; -#if GTM_IPHONE_SDK - UIImage *image = [UIImage imageWithContentsOfFile:path]; - if (image) { - imageRef = CGImageRetain(image.CGImage); - } -#else - CFURLRef url = CFURLCreateWithFileSystemPath(NULL, (CFStringRef)path, - kCFURLPOSIXPathStyle, NO); - if (url) { - CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL); - CFRelease(url); - if (imageSource) { - imageRef = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); - CFRelease(imageSource); - } - } -#endif - return (CGImageRef)GTMCFAutorelease(imageRef); -} - -/// Compares unitTestImage of |self| to the image located at |path| -// -// Args: -// path: the path to the image file you want to compare against. -// If diff is non-nil, it will contain an auto-released diff of the images. -// -// Returns: -// YES if they are equal, NO is they are not -// If diff is non-nil, it will contain an auto-released diff of the images. -// -- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff { - BOOL answer = NO; - if (diff) { - *diff = nil; - } - CGImageRef fileRep = [self gtm_imageWithContentsOfFile:path]; - _GTMDevAssert(fileRep, @"Unable to create imagerep from %@", path); - - CGImageRef imageRep = [self gtm_unitTestImage]; - _GTMDevAssert(imageRep, @"Unable to create imagerep for %@", self); - - size_t fileHeight = CGImageGetHeight(fileRep); - size_t fileWidth = CGImageGetWidth(fileRep); - size_t imageHeight = CGImageGetHeight(imageRep); - size_t imageWidth = CGImageGetWidth(imageRep); - if (fileHeight == imageHeight && fileWidth == imageWidth) { - // if all the sizes are equal, run through the bytes and compare - // them for equality. - // Do an initial fast check, if this fails and the caller wants a - // diff, we'll do the slow path and create the diff. The diff path - // could be optimized, but probably not necessary at this point. - answer = YES; - - CGSize imageSize = CGSizeMake(fileWidth, fileHeight); - CGRect imageRect = CGRectMake(0, 0, fileWidth, fileHeight); - unsigned char *fileData; - unsigned char *imageData; - CGContextRef fileContext - = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &fileData); - _GTMDevAssert(fileContext, @"Unable to create filecontext"); - CGContextDrawImage(fileContext, imageRect, fileRep); - CGContextRef imageContext - = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &imageData); - _GTMDevAssert(imageContext, @"Unable to create imageContext"); - CGContextDrawImage(imageContext, imageRect, imageRep); - - size_t fileBytesPerRow = CGBitmapContextGetBytesPerRow(fileContext); - size_t imageBytesPerRow = CGBitmapContextGetBytesPerRow(imageContext); - size_t row, col; - - _GTMDevAssert(imageWidth * 4 <= imageBytesPerRow, - @"We expect image data to be 32bit RGBA"); - - for (row = 0; row < fileHeight && answer; row++) { - answer = memcmp(fileData + fileBytesPerRow * row, - imageData + imageBytesPerRow * row, - imageWidth * 4) == 0; - } - if (!answer && diff) { - answer = YES; - unsigned char *diffData; - CGContextRef diffContext - = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &diffData); - _GTMDevAssert(diffContext, @"Can't make diff context"); - size_t diffRowBytes = CGBitmapContextGetBytesPerRow(diffContext); - for (row = 0; row < imageHeight; row++) { - uint32_t *imageRow = (uint32_t*)(imageData + imageBytesPerRow * row); - uint32_t *fileRow = (uint32_t*)(fileData + fileBytesPerRow * row); - uint32_t* diffRow = (uint32_t*)(diffData + diffRowBytes * row); - for (col = 0; col < imageWidth; col++) { - uint32_t imageColor = imageRow[col]; - uint32_t fileColor = fileRow[col]; - - unsigned char imageAlpha = imageColor & 0xF; - unsigned char imageBlue = imageColor >> 8 & 0xF; - unsigned char imageGreen = imageColor >> 16 & 0xF; - unsigned char imageRed = imageColor >> 24 & 0xF; - unsigned char fileAlpha = fileColor & 0xF; - unsigned char fileBlue = fileColor >> 8 & 0xF; - unsigned char fileGreen = fileColor >> 16 & 0xF; - unsigned char fileRed = fileColor >> 24 & 0xF; - - // Check to see if color is almost right. - // No matter how hard I've tried, I've still gotten occasionally - // screwed over by colorspaces not mapping correctly, and small - // sampling errors coming in. This appears to work for most cases. - // Almost equal is defined to check within 1% on all components. - BOOL equal = almostEqual(imageRed, fileRed) && - almostEqual(imageGreen, fileGreen) && - almostEqual(imageBlue, fileBlue) && - almostEqual(imageAlpha, fileAlpha); - answer &= equal; - if (diff) { - uint32_t newColor; - if (equal) { - newColor = (((uint32_t)imageRed) << 24) + - (((uint32_t)imageGreen) << 16) + - (((uint32_t)imageBlue) << 8) + - (((uint32_t)imageAlpha) / 2); - } else { - newColor = 0xFF0000FF; - } - diffRow[col] = newColor; - } - } - } - *diff = CGBitmapContextCreateImage(diffContext); - free(diffData); - CFRelease(diffContext); - } - free(fileData); - CFRelease(fileContext); - free(imageData); - CFRelease(imageContext); - } - return answer; -} - -// Find the path for an image by name in your bundle. -// Do not include the extension on your name. -// -// Args: -// name: The name for the image file you would like to find. -// -// Returns: -// the path if the image exists in your bundle -// or nil if no image to be found -// -- (NSString *)gtm_pathForImageNamed:(NSString*)name { - return [self gtm_pathForFileNamed:name - extension:[self gtm_imageExtension]]; -} - -- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name { - return [self gtm_saveToPathForFileNamed:name - extension:[self gtm_imageExtension]]; -} - -// Gives us a representation of unitTestImage of |self|. -// -// Returns: -// a representation of image if successful -// nil if failed -// -- (NSData *)gtm_imageRepresentation { - CGImageRef imageRep = [self gtm_unitTestImage]; - NSData *data = [self gtm_imageDataForImage:imageRep]; - _GTMDevAssert(data, @"unable to create %@ from %@", - [self gtm_imageExtension], self); - return data; -} - -#pragma mark UnitTestState - -// Return the extension to be used for saving unittest states -// -// Returns -// An extension (e.g. "gtmUTState") -- (NSString*)gtm_stateExtension { - return @"gtmUTState"; -} - -// Save the encoded unit test state to a state file with name |name| at -// ~/Desktop/|name|.extension. -// -// Note: When running under Pulse automation output is redirected to the -// Pulse base directory. -// -// Args: -// name: The name for the state file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToStateNamed:(NSString*)name { - NSString *newPath = [self gtm_saveToPathForStateNamed:name]; - return [self gtm_saveToStateAt:newPath]; -} - -// Save encoded unit test state of |self| to a state file at path |path|. -// -// Args: -// name: The name for the state file you would like saved. -// -// Returns: -// YES if the file was successfully saved. -// -- (BOOL)gtm_saveToStateAt:(NSString*)path { - if (!path) return NO; - NSDictionary *dictionary = [self gtm_stateRepresentation]; - return [dictionary writeToFile:path atomically:YES]; -} - -// Compares encoded unit test state of |self| to the state file located at -// |path| -// -// Args: -// path: the path to the state file you want to compare against. -// -// Returns: -// YES if they are equal, NO is they are not -// -- (BOOL)gtm_compareWithStateAt:(NSString*)path { - NSDictionary *masterDict = [NSDictionary dictionaryWithContentsOfFile:path]; - _GTMDevAssert(masterDict, @"Unable to create dictionary from %@", path); - NSDictionary *selfDict = [self gtm_stateRepresentation]; - return [selfDict isEqual: masterDict]; -} - -// Find the path for a state by name in your bundle. -// Do not include the extension. -// -// Args: -// name: The name for the state file you would like to find. -// -// Returns: -// the path if the state exists in your bundle -// or nil if no state to be found -// -- (NSString *)gtm_pathForStateNamed:(NSString*)name { - return [self gtm_pathForFileNamed:name extension:[self gtm_stateExtension]]; -} - -- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name { - return [self gtm_saveToPathForFileNamed:name - extension:[self gtm_stateExtension]]; -} - -// Gives us the encoded unit test state |self| -// -// Returns: -// the encoded state if successful -// nil if failed -// -- (NSDictionary *)gtm_stateRepresentation { - NSDictionary *dictionary = nil; - if ([self conformsToProtocol:@protocol(GTMUnitTestingEncoding)]) { - id encoder = (id)self; - GTMUnitTestingKeyedCoder *archiver; - archiver = [[[GTMUnitTestingKeyedCoder alloc] init] autorelease]; - [encoder gtm_unitTestEncodeState:archiver]; - dictionary = [archiver dictionary]; - } - return dictionary; -} - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. Encode data in the coder in the same -// manner that you would encode data in any other Keyed NSCoder subclass. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - // All impls of gtm_unitTestEncodeState - // should be calling [super gtm_unitTestEncodeState] as their first action. - _GTMDevAssert([inCoder isKindOfClass:[GTMUnitTestingKeyedCoder class]], - @"Coder must be of kind GTMUnitTestingKeyedCoder"); - - // If the object has a delegate, give it a chance to respond - if ([self respondsToSelector:@selector(delegate)]) { - id delegate = [self performSelector:@selector(delegate)]; - if (delegate && - [delegate respondsToSelector:@selector(gtm_unitTestEncoderWillEncode:inCoder:)]) { - [delegate gtm_unitTestEncoderWillEncode:self inCoder:inCoder]; - } - } -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.h deleted file mode 100644 index 1d355911..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.h +++ /dev/null @@ -1,1004 +0,0 @@ -// -// GTMSenTestCase.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -// Portions of this file fall under the following license, marked with -// SENTE_BEGIN - SENTE_END -// -// Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. -// -// Use of this source code is governed by the following license: -// -// 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 Sente SA 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. -// -// Note: this license is equivalent to the FreeBSD license. -// -// This notice may not be removed from this file. - -// Some extra test case macros that would have been convenient for SenTestingKit -// to provide. I didn't stick GTM in front of the Macro names, so that they would -// be easy to remember. - -#import "GTMDefines.h" - -#if (!GTM_IPHONE_SDK) -#import -#else -#import -NSString *STComposeString(NSString *, ...); -#endif - -// Generates a failure when a1 != noErr -// Args: -// a1: should be either an OSErr or an OSStatus -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNoErr(a1, description, ...) \ -do { \ - @try {\ - OSStatus a1value = (a1); \ - if (a1value != noErr) { \ - NSString *_expression = [NSString stringWithFormat:@"Expected noErr, got %ld for (%s)", a1value, #a1]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == noErr fails", #a1] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 != a2 -// Args: -// a1: received value. Should be either an OSErr or an OSStatus -// a2: expected value. Should be either an OSErr or an OSStatus -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertErr(a1, a2, description, ...) \ -do { \ - @try {\ - OSStatus a1value = (a1); \ - OSStatus a2value = (a2); \ - if (a1value != a2value) { \ - NSString *_expression = [NSString stringWithFormat:@"Expected %s(%ld) but got %ld for (%s)", #a2, a2value, a1value, #a1]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == (%s) fails", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - - -// Generates a failure when a1 is NULL -// Args: -// a1: should be a pointer (use STAssertNotNil for an object) -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNotNULL(a1, description, ...) \ -do { \ - @try {\ - const void* a1value = (a1); \ - if (a1value == NULL) { \ - NSString *_expression = [NSString stringWithFormat:@"(%s) != NULL", #a1]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != NULL fails", #a1] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 is not NULL -// Args: -// a1: should be a pointer (use STAssertNil for an object) -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNULL(a1, description, ...) \ -do { \ - @try {\ - const void* a1value = (a1); \ - if (a1value != NULL) { \ - NSString *_expression = [NSString stringWithFormat:@"(%s) == NULL", #a1]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) == NULL fails", #a1] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 is equal to a2. This test is for C scalars, -// structs and unions. -// Args: -// a1: argument 1 -// a2: argument 2 -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNotEquals(a1, a2, description, ...) \ -do { \ - @try {\ - if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ - } else { \ - __typeof__(a1) a1value = (a1); \ - __typeof__(a2) a2value = (a2); \ - NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \ - NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \ - if ([a1encoded isEqualToValue:a2encoded]) { \ - NSString *_expression = [NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat:@"(%s) != (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 is equal to a2. This test is for objects. -// Args: -// a1: argument 1. object. -// a2: argument 2. object. -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNotEqualObjects(a1, a2, desc, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - id a2value = (a2); \ - if ( (@encode(__typeof__(a1value)) == @encode(id)) && \ - (@encode(__typeof__(a2value)) == @encode(id)) && \ - ![(id)a1value isEqual:(id)a2value] ) continue; \ - NSString *_expression = [NSString stringWithFormat:@"%s('%@') != %s('%@')", #a1, [a1 description], #a2, [a2 description]]; \ - if (desc) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(desc, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(desc, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 is not 'op' to a2. This test is for C scalars. -// Args: -// a1: argument 1 -// a2: argument 2 -// op: operation -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertOperation(a1, a2, op, description, ...) \ -do { \ - @try {\ - if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ - } else { \ - __typeof__(a1) a1value = (a1); \ - __typeof__(a2) a2value = (a2); \ - if (!(a1value op a2value)) { \ - double a1DoubleValue = a1value; \ - double a2DoubleValue = a2value; \ - NSString *_expression = [NSString stringWithFormat:@"%s (%lg) %s %s (%lg)", #a1, a1DoubleValue, #op, #a2, a2DoubleValue]; \ - if (description) { \ - _expression = [NSString stringWithFormat:@"%@: %@", _expression, STComposeString(description, ##__VA_ARGS__)]; \ - } \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:_expression]]; \ - } \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException \ - failureInRaise:[NSString stringWithFormat:@"(%s) %s (%s)", #a1, #op, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when a1 is not > a2. This test is for C scalars. -// Args: -// a1: argument 1 -// a2: argument 2 -// op: operation -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertGreaterThan(a1, a2, description, ...) \ - STAssertOperation(a1, a2, >, description, ##__VA_ARGS__) - -// Generates a failure when a1 is not >= a2. This test is for C scalars. -// Args: -// a1: argument 1 -// a2: argument 2 -// op: operation -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertGreaterThanOrEqual(a1, a2, description, ...) \ - STAssertOperation(a1, a2, >=, description, ##__VA_ARGS__) - -// Generates a failure when a1 is not < a2. This test is for C scalars. -// Args: -// a1: argument 1 -// a2: argument 2 -// op: operation -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertLessThan(a1, a2, description, ...) \ - STAssertOperation(a1, a2, <, description, ##__VA_ARGS__) - -// Generates a failure when a1 is not <= a2. This test is for C scalars. -// Args: -// a1: argument 1 -// a2: argument 2 -// op: operation -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertLessThanOrEqual(a1, a2, description, ...) \ - STAssertOperation(a1, a2, <=, description, ##__VA_ARGS__) - -// Generates a failure when string a1 is not equal to string a2. This call -// differs from STAssertEqualObjects in that strings that are different in -// composition (precomposed vs decomposed) will compare equal if their final -// representation is equal. -// ex O + umlaut decomposed is the same as O + umlaut composed. -// Args: -// a1: string 1 -// a2: string 2 -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertEqualStrings(a1, a2, description, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - id a2value = (a2); \ - if (a1value == a2value) continue; \ - if ([a1value isKindOfClass:[NSString class]] && \ - [a2value isKindOfClass:[NSString class]] && \ - [a1value compare:a2value options:0] == NSOrderedSame) continue; \ - [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ - andObject: a2value \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when string a1 is equal to string a2. This call -// differs from STAssertEqualObjects in that strings that are different in -// composition (precomposed vs decomposed) will compare equal if their final -// representation is equal. -// ex O + umlaut decomposed is the same as O + umlaut composed. -// Args: -// a1: string 1 -// a2: string 2 -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNotEqualStrings(a1, a2, description, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - id a2value = (a2); \ - if ([a1value isKindOfClass:[NSString class]] && \ - [a2value isKindOfClass:[NSString class]] && \ - [a1value compare:a2value options:0] != NSOrderedSame) continue; \ - [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ - andObject: a2value \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when c-string a1 is not equal to c-string a2. -// Args: -// a1: string 1 -// a2: string 2 -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertEqualCStrings(a1, a2, description, ...) \ -do { \ - @try {\ - const char* a1value = (a1); \ - const char* a2value = (a2); \ - if (a1value == a2value) continue; \ - if (strcmp(a1value, a2value) == 0) continue; \ - [self failWithException:[NSException failureInEqualityBetweenObject: [NSString stringWithUTF8String:a1value] \ - andObject: [NSString stringWithUTF8String:a2value] \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -// Generates a failure when c-string a1 is equal to c-string a2. -// Args: -// a1: string 1 -// a2: string 2 -// description: A format string as in the printf() function. Can be nil or -// an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -#define STAssertNotEqualCStrings(a1, a2, description, ...) \ -do { \ - @try {\ - const char* a1value = (a1); \ - const char* a2value = (a2); \ - if (strcmp(a1value, a2value) != 0) continue; \ - [self failWithException:[NSException failureInEqualityBetweenObject: [NSString stringWithUTF8String:a1value] \ - andObject: [NSString stringWithUTF8String:a2value] \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -#if GTM_IPHONE_SDK - -// SENTE_BEGIN -/*" Generates a failure when !{ [a1 isEqualTo:a2] } is false - (or one is nil and the other is not). - _{a1 The object on the left.} - _{a2 The object on the right.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertEqualObjects(a1, a2, description, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - id a2value = (a2); \ - if (a1value == a2value) continue; \ - if ( (@encode(__typeof__(a1value)) == @encode(id)) && \ - (@encode(__typeof__(a2value)) == @encode(id)) && \ - [(id)a1value isEqual: (id)a2value] ) continue; \ - [self failWithException:[NSException failureInEqualityBetweenObject: a1value \ - andObject: a2value \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - - -/*" Generates a failure when a1 is not equal to a2. This test is for - C scalars, structs and unions. - _{a1 The argument on the left.} - _{a2 The argument on the right.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertEquals(a1, a2, description, ...) \ -do { \ - @try {\ - if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ - } else { \ - __typeof__(a1) a1value = (a1); \ - __typeof__(a2) a2value = (a2); \ - NSValue *a1encoded = [NSValue value:&a1value withObjCType: @encode(__typeof__(a1))]; \ - NSValue *a2encoded = [NSValue value:&a2value withObjCType: @encode(__typeof__(a2))]; \ - if (![a1encoded isEqualToValue:a2encoded]) { \ - [self failWithException:[NSException failureInEqualityBetweenValue: a1encoded \ - andValue: a2encoded \ - withAccuracy: nil \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - -#define STAbsoluteDifference(left,right) (MAX(left,right)-MIN(left,right)) - - -/*" Generates a failure when a1 is not equal to a2 within + or - accuracy is false. - This test is for scalars such as floats and doubles where small differences - could make these items not exactly equal, but also works for all scalars. - _{a1 The scalar on the left.} - _{a2 The scalar on the right.} - _{accuracy The maximum difference between a1 and a2 for these values to be - considered equal.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ - -#define STAssertEqualsWithAccuracy(a1, a2, accuracy, description, ...) \ -do { \ - @try {\ - if (@encode(__typeof__(a1)) != @encode(__typeof__(a2))) { \ - [self failWithException:[NSException failureInFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:[@"Type mismatch -- " stringByAppendingString:STComposeString(description, ##__VA_ARGS__)]]]; \ - } else { \ - __typeof__(a1) a1value = (a1); \ - __typeof__(a2) a2value = (a2); \ - __typeof__(accuracy) accuracyvalue = (accuracy); \ - if (STAbsoluteDifference(a1value, a2value) > accuracyvalue) { \ - NSValue *a1encoded = [NSValue value:&a1value withObjCType:@encode(__typeof__(a1))]; \ - NSValue *a2encoded = [NSValue value:&a2value withObjCType:@encode(__typeof__(a2))]; \ - NSValue *accuracyencoded = [NSValue value:&accuracyvalue withObjCType:@encode(__typeof__(accuracy))]; \ - [self failWithException:[NSException failureInEqualityBetweenValue: a1encoded \ - andValue: a2encoded \ - withAccuracy: accuracyencoded \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == (%s)", #a1, #a2] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - - - -/*" Generates a failure unconditionally. - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STFail(description, ...) \ -[self failWithException:[NSException failureInFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]] - - - -/*" Generates a failure when a1 is not nil. - _{a1 An object.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertNil(a1, description, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - if (a1value != nil) { \ - NSString *_a1 = [NSString stringWithUTF8String: #a1]; \ - NSString *_expression = [NSString stringWithFormat:@"((%@) == nil)", _a1]; \ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: NO \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) == nil fails", #a1] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - - -/*" Generates a failure when a1 is nil. - _{a1 An object.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertNotNil(a1, description, ...) \ -do { \ - @try {\ - id a1value = (a1); \ - if (a1value == nil) { \ - NSString *_a1 = [NSString stringWithUTF8String: #a1]; \ - NSString *_expression = [NSString stringWithFormat:@"((%@) != nil)", _a1]; \ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: NO \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - }\ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) != nil fails", #a1] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while(0) - - -/*" Generates a failure when expression evaluates to false. - _{expr The expression that is tested.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertTrue(expr, description, ...) \ -do { \ - BOOL _evaluatedExpression = (expr);\ - if (!_evaluatedExpression) {\ - NSString *_expression = [NSString stringWithUTF8String: #expr];\ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: NO \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ -} while (0) - - -/*" Generates a failure when expression evaluates to false and in addition will - generate error messages if an exception is encountered. - _{expr The expression that is tested.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertTrueNoThrow(expr, description, ...) \ -do { \ - @try {\ - BOOL _evaluatedExpression = (expr);\ - if (!_evaluatedExpression) {\ - NSString *_expression = [NSString stringWithUTF8String: #expr];\ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: NO \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"(%s) ", #expr] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while (0) - - -/*" Generates a failure when the expression evaluates to true. - _{expr The expression that is tested.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertFalse(expr, description, ...) \ -do { \ - BOOL _evaluatedExpression = (expr);\ - if (_evaluatedExpression) {\ - NSString *_expression = [NSString stringWithUTF8String: #expr];\ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: YES \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ -} while (0) - - -/*" Generates a failure when the expression evaluates to true and in addition - will generate error messages if an exception is encountered. - _{expr The expression that is tested.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertFalseNoThrow(expr, description, ...) \ -do { \ - @try {\ - BOOL _evaluatedExpression = (expr);\ - if (_evaluatedExpression) {\ - NSString *_expression = [NSString stringWithUTF8String: #expr];\ - [self failWithException:[NSException failureInCondition: _expression \ - isTrue: YES \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - } \ - } \ - @catch (id anException) {\ - [self failWithException:[NSException failureInRaise:[NSString stringWithFormat: @"!(%s) ", #expr] \ - exception:anException \ - inFile:[NSString stringWithUTF8String:__FILE__] \ - atLine:__LINE__ \ - withDescription:STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while (0) - - -/*" Generates a failure when expression does not throw an exception. - _{expression The expression that is evaluated.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent. -"*/ -#define STAssertThrows(expr, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (id anException) { \ - continue; \ - }\ - [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: nil \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ -} while (0) - - -/*" Generates a failure when expression does not throw an exception of a - specific class. - _{expression The expression that is evaluated.} - _{specificException The specified class of the exception.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertThrowsSpecific(expr, specificException, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (specificException *anException) { \ - continue; \ - }\ - @catch (id anException) {\ - NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ - [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ - continue; \ - }\ - NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ - [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: nil \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ -} while (0) - - -/*" Generates a failure when expression does not throw an exception of a - specific class with a specific name. Useful for those frameworks like - AppKit or Foundation that throw generic NSException w/specific names - (NSInvalidArgumentException, etc). - _{expression The expression that is evaluated.} - _{specificException The specified class of the exception.} - _{aName The name of the specified exception.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} - -"*/ -#define STAssertThrowsSpecificNamed(expr, specificException, aName, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (specificException *anException) { \ - if ([aName isEqualToString: [anException name]]) continue; \ - NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description);\ - [self failWithException: \ - [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ - continue; \ - }\ - @catch (id anException) {\ - NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ - [self failWithException: \ - [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ - continue; \ - }\ - NSString *_descrip = STComposeString(@"(Expected exception: %@) %@", NSStringFromClass([specificException class]), description);\ - [self failWithException: \ - [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: nil \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ -} while (0) - - -/*" Generates a failure when expression does throw an exception. - _{expression The expression that is evaluated.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertNoThrow(expr, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (id anException) { \ - [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ -} while (0) - - -/*" Generates a failure when expression does throw an exception of the specitied - class. Any other exception is okay (i.e. does not generate a failure). - _{expression The expression that is evaluated.} - _{specificException The specified class of the exception.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} -"*/ -#define STAssertNoThrowSpecific(expr, specificException, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (specificException *anException) { \ - [self failWithException:[NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(description, ##__VA_ARGS__)]]; \ - }\ - @catch (id anythingElse) {\ - ; \ - }\ -} while (0) - - -/*" Generates a failure when expression does throw an exception of a - specific class with a specific name. Useful for those frameworks like - AppKit or Foundation that throw generic NSException w/specific names - (NSInvalidArgumentException, etc). - _{expression The expression that is evaluated.} - _{specificException The specified class of the exception.} - _{aName The name of the specified exception.} - _{description A format string as in the printf() function. Can be nil or - an empty string but must be present.} - _{... A variable number of arguments to the format string. Can be absent.} - -"*/ -#define STAssertNoThrowSpecificNamed(expr, specificException, aName, description, ...) \ -do { \ - @try { \ - (expr);\ - } \ - @catch (specificException *anException) { \ - if ([aName isEqualToString: [anException name]]) { \ - NSString *_descrip = STComposeString(@"(Expected exception: %@ (name: %@)) %@", NSStringFromClass([specificException class]), aName, description);\ - [self failWithException: \ - [NSException failureInRaise: [NSString stringWithUTF8String:#expr] \ - exception: anException \ - inFile: [NSString stringWithUTF8String:__FILE__] \ - atLine: __LINE__ \ - withDescription: STComposeString(_descrip, ##__VA_ARGS__)]]; \ - } \ - continue; \ - }\ - @catch (id anythingElse) {\ - ; \ - }\ -} while (0) - - - -@interface NSException (GTMSenTestAdditions) -+ (NSException *)failureInFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ...; -+ (NSException *)failureInCondition:(NSString *)condition - isTrue:(BOOL)isTrue - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ...; -+ (NSException *)failureInEqualityBetweenObject:(id)left - andObject:(id)right - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ...; -+ (NSException *)failureInEqualityBetweenValue:(NSValue *)left - andValue:(NSValue *)right - withAccuracy:(NSValue *)accuracy - inFile:(NSString *)filename - atLine:(int) ineNumber - withDescription:(NSString *)formatString, ...; -+ (NSException *)failureInRaise:(NSString *)expression - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ...; -+ (NSException *)failureInRaise:(NSString *)expression - exception:(NSException *)exception - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ...; -@end - -// SENTE_END - -@interface SenTestCase : NSObject { - SEL currentSelector_; -} - -- (void)setUp; -- (void)invokeTest; -- (void)tearDown; -- (void)performTest:(SEL)sel; -- (void)failWithException:(NSException*)exception; -@end - -GTM_EXTERN NSString *const SenTestFailureException; - -GTM_EXTERN NSString *const SenTestFilenameKey; -GTM_EXTERN NSString *const SenTestLineNumberKey; - -#endif // GTM_IPHONE_SDK - -// All unittest cases in GTM should inherit from GTMTestCase. It makes sure -// to set up our logging system correctly to verify logging calls. -// See GTMUnitTestDevLog.h for details -@interface GTMTestCase : SenTestCase -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.m deleted file mode 100644 index 8482c5a6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMSenTestCase.m +++ /dev/null @@ -1,362 +0,0 @@ -// -// GTMSenTestCase.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import - -#if !GTM_IPHONE_SDK -#import "GTMGarbageCollection.h" -#endif // !GTM_IPHONE_SDK - -#if GTM_IPHONE_SDK -#import - -@interface NSException (GTMSenTestPrivateAdditions) -+ (NSException *)failureInFile:(NSString *)filename - atLine:(int)lineNumber - reason:(NSString *)reason; -@end - -@implementation NSException (GTMSenTestPrivateAdditions) -+ (NSException *)failureInFile:(NSString *)filename - atLine:(int)lineNumber - reason:(NSString *)reason { - NSDictionary *userInfo = - [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInteger:lineNumber], SenTestLineNumberKey, - filename, SenTestFilenameKey, - nil]; - - return [self exceptionWithName:SenTestFailureException - reason:reason - userInfo:userInfo]; -} -@end - -@implementation NSException (GTMSenTestAdditions) - -+ (NSException *)failureInFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason = testDescription; - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -+ (NSException *)failureInCondition:(NSString *)condition - isTrue:(BOOL)isTrue - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason = [NSString stringWithFormat:@"'%@' should be %s. %@", - condition, isTrue ? "TRUE" : "FALSE", testDescription]; - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -+ (NSException *)failureInEqualityBetweenObject:(id)left - andObject:(id)right - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason = - [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@", - [left description], [right description], testDescription]; - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -+ (NSException *)failureInEqualityBetweenValue:(NSValue *)left - andValue:(NSValue *)right - withAccuracy:(NSValue *)accuracy - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason; - if (accuracy) { - reason = - [NSString stringWithFormat:@"'%@' should be equal to '%@'. %@", - left, right, testDescription]; - } else { - reason = - [NSString stringWithFormat:@"'%@' should be equal to '%@' +/-'%@'. %@", - left, right, accuracy, testDescription]; - } - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -+ (NSException *)failureInRaise:(NSString *)expression - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason = [NSString stringWithFormat:@"'%@' should raise. %@", - expression, testDescription]; - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -+ (NSException *)failureInRaise:(NSString *)expression - exception:(NSException *)exception - inFile:(NSString *)filename - atLine:(int)lineNumber - withDescription:(NSString *)formatString, ... { - - NSString *testDescription = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - testDescription = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - - NSString *reason; - if ([[exception name] isEqualToString:SenTestFailureException]) { - // it's our exception, assume it has the right description on it. - reason = [exception reason]; - } else { - // not one of our exception, use the exceptions reason and our description - reason = [NSString stringWithFormat:@"'%@' raised '%@'. %@", - expression, [exception reason], testDescription]; - } - - return [self failureInFile:filename atLine:lineNumber reason:reason]; -} - -@end - -NSString *STComposeString(NSString *formatString, ...) { - NSString *reason = @""; - if (formatString) { - va_list vl; - va_start(vl, formatString); - reason = - [[[NSString alloc] initWithFormat:formatString arguments:vl] autorelease]; - va_end(vl); - } - return reason; -} - -NSString *const SenTestFailureException = @"SenTestFailureException"; -NSString *const SenTestFilenameKey = @"SenTestFilenameKey"; -NSString *const SenTestLineNumberKey = @"SenTestLineNumberKey"; - -@interface SenTestCase (SenTestCasePrivate) -// our method of logging errors -+ (void)printException:(NSException *)exception fromTestName:(NSString *)name; -@end - -@implementation SenTestCase -- (void)failWithException:(NSException*)exception { - [exception raise]; -} - -- (void)setUp { -} - -- (void)performTest:(SEL)sel { - currentSelector_ = sel; - @try { - [self invokeTest]; - } @catch (NSException *exception) { - [[self class] printException:exception - fromTestName:NSStringFromSelector(sel)]; - [exception raise]; - } -} - -+ (void)printException:(NSException *)exception fromTestName:(NSString *)name { - NSDictionary *userInfo = [exception userInfo]; - NSString *filename = [userInfo objectForKey:SenTestFilenameKey]; - NSNumber *lineNumber = [userInfo objectForKey:SenTestLineNumberKey]; - NSString *className = NSStringFromClass([self class]); - if ([filename length] == 0) { - filename = @"Unknown.m"; - } - fprintf(stderr, "%s:%ld: error: -[%s %s] : %s\n", - [filename UTF8String], - (long)[lineNumber integerValue], - [className UTF8String], - [name UTF8String], - [[exception reason] UTF8String]); - fflush(stderr); -} - -- (void)invokeTest { - NSException *e = nil; - @try { - // Wrap things in autorelease pools because they may - // have an STMacro in their dealloc which may get called - // when the pool is cleaned up - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - // We don't log exceptions here, instead we let the person that called - // this log the exception. This ensures they are only logged once but the - // outer layers get the exceptions to report counts, etc. - @try { - [self setUp]; - @try { - [self performSelector:currentSelector_]; - } @catch (NSException *exception) { - e = [exception retain]; - } - [self tearDown]; - } @catch (NSException *exception) { - e = [exception retain]; - } - [pool release]; - } @catch (NSException *exception) { - e = [exception retain]; - } - if (e) { - [e autorelease]; - [e raise]; - } -} - -- (void)tearDown { -} - -- (NSString *)description { - // This matches the description OCUnit would return to you - return [NSString stringWithFormat:@"-[%@ %@]", [self class], - NSStringFromSelector(currentSelector_)]; -} -@end - -#endif // GTM_IPHONE_SDK - -@implementation GTMTestCase : SenTestCase -- (void)invokeTest { - Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog"); - if (devLogClass) { - [devLogClass performSelector:@selector(enableTracking)]; - [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)]; - - } - [super invokeTest]; - if (devLogClass) { - [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)]; - [devLogClass performSelector:@selector(disableTracking)]; - } -} -@end - -// Leak detection -#if !GTM_IPHONE_DEVICE -// Don't want to get leaks on the iPhone Device as the device doesn't -// have 'leaks'. The simulator does though. - -static void _GTMRunLeaks(void) { - // This is an atexit handler. It runs leaks for us to check if we are - // leaking anything in our tests. - const char* cExclusionsEnv = getenv("GTM_LEAKS_SYMBOLS_TO_IGNORE"); - NSMutableString *exclusions = [NSMutableString string]; - if (cExclusionsEnv) { - NSString *exclusionsEnv = [NSString stringWithUTF8String:cExclusionsEnv]; - NSArray *exclusionsArray = [exclusionsEnv componentsSeparatedByString:@","]; - NSString *exclusion; - NSCharacterSet *wcSet = [NSCharacterSet whitespaceCharacterSet]; - GTM_FOREACH_OBJECT(exclusion, exclusionsArray) { - exclusion = [exclusion stringByTrimmingCharactersInSet:wcSet]; - [exclusions appendFormat:@"-exclude \"%@\" ", exclusion]; - } - } - NSString *string - = [NSString stringWithFormat:@"/usr/bin/leaks %@%d" - @"| /usr/bin/sed -e 's/Leak: /Leaks:0: warning: Leak /'", - exclusions, getpid()]; - int ret = system([string UTF8String]); - if (ret) { - fprintf(stderr, "%s:%d: Error: Unable to run leaks. 'system' returned: %d", - __FILE__, __LINE__, ret); - fflush(stderr); - } -} - -static __attribute__((constructor)) void _GTMInstallLeaks(void) { - BOOL checkLeaks = YES; -#if !GTM_IPHONE_SDK - checkLeaks = GTMIsGarbageCollectionEnabled() ? NO : YES; -#endif // !GTM_IPHONE_SDK - if (checkLeaks) { - checkLeaks = getenv("GTM_ENABLE_LEAKS") ? YES : NO; - if (checkLeaks) { - if (checkLeaks) { - fprintf(stderr, "Leak Checking Enabled\n"); - fflush(stderr); - int ret = atexit(&_GTMRunLeaks); - _GTMDevAssert(ret == 0, - @"Unable to install _GTMRunLeaks as an atexit handler (%d)", - errno); - } - } - } -} - -#endif // !GTM_IPHONE_DEVICE diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.h deleted file mode 100644 index 0128718b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// GTMTestHTTPServer.h -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import - -@class GTMHTTPServer; - -// This is a HTTP Server that can respond to certain requests that look like -// Google service logins. It takes extra url arguments to tell it what to -// return for testing the code using it. See GTMHTTPFetcherTest for an example -// of its usage. -@interface GTMTestHTTPServer : NSObject { - NSString *docRoot_; - GTMHTTPServer *server_; -} - -// Any url that isn't a specific server request (login, etc.), will be fetched -// off |docRoot| (to allow canned repsonses). -- (id)initWithDocRoot:(NSString *)docRoot; - -// fetch the port the server is running on -- (uint16_t)port; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.m deleted file mode 100644 index 7744b5e9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestHTTPServer.m +++ /dev/null @@ -1,166 +0,0 @@ -// -// GTMTestHTTPServer.m -// -// Copyright 2007-2008 Google Inc. -// -// 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. -// - -#import "GTMTestHTTPServer.h" -#import "GTMHTTPServer.h" -#import "GTMRegex.h" - -static NSArray *GetSubPatternsOfFirstStringMatchedByPattern(NSString *stringToSearch, - NSString *pattern) { - GTMRegex *regex = [GTMRegex regexWithPattern:pattern]; - NSString *firstMatch = [regex firstSubStringMatchedInString:stringToSearch]; - NSArray *subPatterns = [regex subPatternsOfString:firstMatch]; - return subPatterns; -} - -@implementation GTMTestHTTPServer - -- (id)initWithDocRoot:(NSString *)docRoot { - self = [super init]; - if (self) { - docRoot_ = [docRoot copy]; - server_ = [[GTMHTTPServer alloc] initWithDelegate:self]; - NSError *error = nil; - if ((docRoot == nil) || (![server_ start:&error])) { - _GTMDevLog(@"Failed to start up the webserver (docRoot='%@', error=%@)", - docRoot_, error); - [self release]; - return nil; - } - } - return self; -} - -- (void)dealloc { - [docRoot_ release]; - [server_ release]; - [super dealloc]; -} - -- (uint16_t)port { - return [server_ port]; -} - -- (GTMHTTPResponseMessage *)httpServer:(GTMHTTPServer *)server - handleRequest:(GTMHTTPRequestMessage *)request { - _GTMDevAssert(server == server_, @"how'd we get a different server?!"); - UInt32 resultStatus = 0; - NSData *data = nil; - // clients should treat dates as opaque, generally - NSString *modifiedDate = @"thursday"; - - NSString *postString = @""; - NSData *postData = [request body]; - if ([postData length] > 0) { - postString = [[[NSString alloc] initWithData:postData - encoding:NSUTF8StringEncoding] autorelease]; - } - - NSDictionary *allHeaders = [request allHeaderFieldValues]; - NSString *ifModifiedSince = [allHeaders objectForKey:@"If-Modified-Since"]; - NSString *authorization = [allHeaders objectForKey:@"Authorization"]; - NSString *path = [[request URL] absoluteString]; - - if ([path hasSuffix:@".auth"]) { - if (![authorization isEqualToString:@"GoogleLogin auth=GoodAuthToken"]) { - GTMHTTPResponseMessage *response = - [GTMHTTPResponseMessage emptyResponseWithCode:401]; - return response; - } else { - path = [path substringToIndex:[path length] - 5]; - } - } - - NSString *overrideHeader = [allHeaders objectForKey:@"X-HTTP-Method-Override"]; - NSString *httpCommand = [request method]; - if ([httpCommand isEqualToString:@"POST"] && - [overrideHeader length] > 1) { - httpCommand = overrideHeader; - } - NSArray *searchResult = nil; - if ([path hasSuffix:@"/accounts/ClientLogin"]) { - // it's a sign-in attempt; it's good unless the password is "bad" or - // "captcha" - - // use regular expression to find the password - NSString *password = @""; - searchResult = GetSubPatternsOfFirstStringMatchedByPattern(path, @"Passwd=([^&\n]*)"); - if ([searchResult count] == 2) { - password = [searchResult objectAtIndex:1]; - } - - if ([password isEqualToString:@"bad"]) { - resultStatus = 403; - } else if ([password isEqualToString:@"captcha"]) { - NSString *loginToken = @""; - NSString *loginCaptcha = @""; - - searchResult = GetSubPatternsOfFirstStringMatchedByPattern(postString, @"logintoken=([^&\n]*)"); - if ([searchResult count] == 2) { - loginToken = [searchResult objectAtIndex:1]; - } - - searchResult = GetSubPatternsOfFirstStringMatchedByPattern(postString, @"logincaptcha=([^&\n]*)"); - if ([searchResult count] == 2) { - loginCaptcha = [searchResult objectAtIndex:1]; - } - - if ([loginToken isEqualToString:@"CapToken"] && - [loginCaptcha isEqualToString:@"good"]) { - resultStatus = 200; - } else { - // incorrect captcha token or answer provided - resultStatus = 403; - } - } else { - // valid username/password - resultStatus = 200; - } - } else if ([httpCommand isEqualToString:@"DELETE"]) { - // it's an object delete; read and return empty data - resultStatus = 200; - } else { - // queries that have something like "?status=456" should fail with the - // status code - searchResult = GetSubPatternsOfFirstStringMatchedByPattern(path, @"status=([0-9]+)"); - if ([searchResult count] == 2) { - resultStatus = [[searchResult objectAtIndex:1] intValue]; - } else if ([ifModifiedSince isEqualToString:modifiedDate]) { - resultStatus = 304; - } else { - NSString *docPath = [docRoot_ stringByAppendingPathComponent:path]; - data = [NSData dataWithContentsOfFile:docPath]; - if (data) { - resultStatus = 200; - } else { - resultStatus = 404; - } - } - } - - GTMHTTPResponseMessage *response = - [GTMHTTPResponseMessage responseWithBody:data - contentType:@"text/plain" - statusCode:resultStatus]; - [response setValue:modifiedDate forHeaderField:@"Last-Modified"]; - [response setValue:[NSString stringWithFormat:@"TestCookie=%@", [path lastPathComponent]] - forHeaderField:@"Set-Cookie"]; - return response; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimer.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimer.h deleted file mode 100644 index 6c5fc55c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimer.h +++ /dev/null @@ -1,125 +0,0 @@ -// -// GTMTestTimer.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMDefines.h" -#import - -// GTMTestTimer is done in straight inline C to avoid obj-c calling overhead. -// It is for doing test timings at very high precision. -// Test Timers have standard CoreFoundation Retain/Release rules. -// Test Timers are not thread safe. Test Timers do NOT check their arguments -// for NULL. You will crash if you pass a NULL argument in. - -typedef struct { - mach_timebase_info_data_t time_base_info_; - bool running_; - uint64_t start_; - uint64_t split_; - uint64_t elapsed_; - NSUInteger iterations_; - NSUInteger retainCount_; -} GTMTestTimer; - -// Create a test timer -GTM_INLINE GTMTestTimer *GTMTestTimerCreate(void) { - GTMTestTimer *t = calloc(sizeof(GTMTestTimer), 1); - if (t) { - if (mach_timebase_info(&t->time_base_info_) == KERN_SUCCESS) { - t->retainCount_ = 1; - } else { - // COV_NF_START - free(t); - t = NULL; - // COV_NF_END - } - } - return t; -} - -// Retain a timer -GTM_INLINE void GTMTestTimerRetain(GTMTestTimer *t) { - t->retainCount_ += 1; -} - -// Release a timer. When release count hits zero, we free it. -GTM_INLINE void GTMTestTimerRelease(GTMTestTimer *t) { - t->retainCount_ -= 1; - if (t->retainCount_ == 0) { - free(t); - } -} - -// Starts a timer timing. Specifically starts a new split. If the timer is -// currently running, it resets the start time of the current split. -GTM_INLINE void GTMTestTimerStart(GTMTestTimer *t) { - t->start_ = mach_absolute_time(); - t->running_ = true; -} - -// Stops a timer and returns split time (time from last start) in nanoseconds. -GTM_INLINE uint64_t GTMTestTimerStop(GTMTestTimer *t) { - uint64_t now = mach_absolute_time(); - t->running_ = false; - ++t->iterations_; - t->split_ = now - t->start_; - t->elapsed_ += t->split_; - t->start_ = 0; - return t->split_; -} - -// returns the current timer elapsed time (combined value of all splits, plus -// current split if the timer is running) in nanoseconds. -GTM_INLINE double GTMTestTimerGetNanoseconds(GTMTestTimer *t) { - uint64_t total = t->elapsed_; - if (t->running_) { - total += mach_absolute_time() - t->start_; - } - return (double)(total * t->time_base_info_.numer - / t->time_base_info_.denom); -} - -// Returns the current timer elapsed time (combined value of all splits, plus -// current split if the timer is running) in seconds. -GTM_INLINE double GTMTestTimerGetSeconds(GTMTestTimer *t) { - return GTMTestTimerGetNanoseconds(t) * 0.000000001; -} - -// Returns the current timer elapsed time (combined value of all splits, plus -// current split if the timer is running) in milliseconds. -GTM_INLINE double GTMTestTimerGetMilliseconds(GTMTestTimer *t) { - return GTMTestTimerGetNanoseconds(t) * 0.000001; -} - -// Returns the current timer elapsed time (combined value of all splits, plus -// current split if the timer is running) in microseconds. -GTM_INLINE double GTMTestTimerGetMicroseconds(GTMTestTimer *t) { - return GTMTestTimerGetNanoseconds(t) * 0.001; -} - -// Returns the number of splits (start-stop) cycles recorded. -// GTMTestTimerGetSeconds()/GTMTestTimerGetIterations() gives you an average -// of all your splits. -GTM_INLINE NSUInteger GTMTestTimerGetIterations(GTMTestTimer *t) { - return t->iterations_; -} - -// Returns true if the timer is running. -GTM_INLINE bool GTMTestTimerIsRunning(GTMTestTimer *t) { - return t->running_; -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimerTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimerTest.m deleted file mode 100644 index 86f9d221..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMTestTimerTest.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// GTMTestTimerTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMTestTimer.h" - -@interface GTMTestTimerTest : GTMTestCase -@end - -@implementation GTMTestTimerTest -- (void)testTimer { - GTMTestTimer *timer = GTMTestTimerCreate(); - STAssertNotNULL(timer, nil); - GTMTestTimerRetain(timer); - GTMTestTimerRelease(timer); - STAssertEqualsWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0, nil); - GTMTestTimerStart(timer); - STAssertTrue(GTMTestTimerIsRunning(timer), nil); - NSRunLoop *loop = [NSRunLoop currentRunLoop]; - [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - GTMTestTimerStop(timer); - - // We use greater than (and an almost absurd less than) because - // these tests are very dependant on machine load, and we don't want - // automated tests reporting false negatives. - STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1, nil); - STAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0,nil); - STAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0, nil); - - // Check to make sure we're not WAY off the mark (by a factor of 10) - STAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0, nil); - - [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - GTMTestTimerStart(timer); - [loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2, nil); - GTMTestTimerStop(timer); - STAssertEquals(GTMTestTimerGetIterations(timer), (NSUInteger)2, nil); - GTMTestTimerRelease(timer); -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.h deleted file mode 100644 index ee420e94..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.h +++ /dev/null @@ -1,128 +0,0 @@ -// -// GTMUIKit+UnitTesting.h -// -// Code for making unit testing of graphics/UI easier. Generally you -// will only want to look at the macros: -// GTMAssertDrawingEqualToFile -// GTMAssertViewRepEqualToFile -// and the protocol GTMUnitTestViewDrawer. When using these routines -// make sure you are using device colors and not calibrated/generic colors -// or else your test graphics WILL NOT match across devices/graphics cards. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMNSObject+UnitTesting.h" - -@protocol GTMUnitTestViewDrawer; - -// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|. -// See the description of the GTMAssertViewRepEqualToFile macro -// to understand how |a3| is found and written out. -// See the description of the GTMUnitTestView for a better idea -// how the view works. -// Implemented as a macro to match the rest of the SenTest macros. -// -// Args: -// a1: The object that implements the GTMUnitTestViewDrawer protocol -// that is doing the drawing. -// a2: The size of the drawing -// a3: The name of the image file to check against. -// Do not include the extension -// a4: contextInfo to pass to drawer -// description: A format string as in the printf() function. -// Can be nil or an empty string but must be present. -// ...: A variable number of arguments to the format string. Can be absent. -// - -#define GTMAssertDrawingEqualToFile(a1, a2, a3, a4, description, ...) \ - do { \ - id a1Drawer = (a1); \ - CGSize a2Size = (a2); \ - NSString* a3String = (a3); \ - void *a4ContextInfo = (a4); \ - CGRect frame = CGRectMake(0, 0, a2Size.width, a2Size.height); \ - GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \ - GTMAssertObjectImageEqualToImageNamed(view, a3String, STComposeString(description, ##__VA_ARGS__)); \ - } while(0) - -// Category for making unit testing of graphics/UI easier. - -// Allows you to take a state of a view. Supports both image and state. -// See GTMNSObject+UnitTesting.h for details. -@interface UIView (GTMUnitTestingAdditions) - -// Encodes the state of an object in a manner suitable for comparing against a master state file -// This enables us to determine whether the object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder; - -// Returns whether gtm_unitTestEncodeState should recurse into subviews -// -// Returns: -// should gtm_unitTestEncodeState pick up subview state. -- (BOOL)gtm_shouldEncodeStateForSubviews; -@end - -// Category to help UIImage testing. UIImage can be tested using -// GTMAssertObjectImageEqualToImageNamed macro, which automatically creates -// result images and diff images in case test fails. -@interface UIImage (GTMUnitTestingAdditions) -@end - -// A view that allows you to delegate out drawing using the formal -// GTMUnitTestViewDelegate protocol -// This is useful when writing up unit tests for visual elements. -// Your test will often end up looking like this: -// - (void)testFoo { -// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil); -// } -// and your testSuite will also implement the unitTestViewDrawRect method to do -// it's actual drawing. The above creates a view of size 200x200 that draws -// it's content using |self|'s unitTestViewDrawRect method and compares it to -// the contents of the file Foo.tif to make sure it's valid -@interface GTMUnitTestView : UIView { - @private - id drawer_; // delegate for doing drawing (STRONG) - void* contextInfo_; // info passed in by user for them to use when drawing -} - -// Create a GTMUnitTestView. -// -// Args: -// rect: the area to draw. -// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer -// protocol -// contextInfo: -- (id)initWithFrame:(CGRect)frame drawer:(id)drawer contextInfo:(void*)contextInfo; - -@end - -/// \cond Protocols - -// Formal protocol for doing unit testing of views. See description of -// GTMUnitTestView for details. -@protocol GTMUnitTestViewDrawer - -// Draw the view. Equivalent to drawRect on a standard UIView. -// -// Args: -// rect: the area to draw. -- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.m deleted file mode 100644 index 7d3f200e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTesting.m +++ /dev/null @@ -1,122 +0,0 @@ -// -// GTMUIKit+UnitTesting.m -// -// Category for making unit testing of graphics/UI easier. -// Allows you to save a view out to a image file, and compare a view -// with a previously stored representation to make sure it hasn't changed. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMUIKit+UnitTesting.h" -#import "GTMCALayer+UnitTesting.h" -#import "GTMDefines.h" - -#if !GTM_IPHONE_SDK -#error This file is for iPhone use only -#endif // GTM_IPHONE_SDK - -// A view that allows you to delegate out drawing using the formal -// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit -// tests for visual elements. -// Your test will often end up looking like this: -// - (void)testFoo { -// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil); -// } -// and your testSuite will also implement the unitTestViewDrawRect method to do -// it's actual drawing. The above creates a view of size 200x200 that draws -// it's content using |self|'s unitTestViewDrawRect method and compares it to -// the contents of the file Foo.tif to make sure it's valid -@implementation GTMUnitTestView - -- (id)initWithFrame:(CGRect)frame - drawer:(id)drawer - contextInfo:(void*)contextInfo{ - self = [super initWithFrame:frame]; - if (self != nil) { - drawer_ = [drawer retain]; - contextInfo_ = contextInfo; - } - return self; -} - -- (void)dealloc { - [drawer_ release]; - [super dealloc]; -} - -- (void)drawRect:(CGRect)rect { - [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_]; -} - -@end - -@implementation UIView (GTMUnitTestingAdditions) - -// Returns an image containing a representation of the object -// suitable for use in comparing against a master image. -// NB this means that all colors should be from "NSDevice" color space -// Does all of it's drawing with smoothfonts and antialiasing off -// to avoid issues with font smoothing settings and antialias differences -// between ppc and x86. -// -// Returns: -// an image of the object -- (CGImageRef)gtm_unitTestImage { - CALayer* layer = [self layer]; - return [layer gtm_unitTestImage]; -} - -// Encodes the state of an object in a manner suitable for comparing -// against a master state file so we can determine whether the -// object is in a suitable state. -// -// Arguments: -// inCoder - the coder to encode our state into -- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder { - [super gtm_unitTestEncodeState:inCoder]; - [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"]; - CALayer* layer = [self layer]; - if (layer) { - [layer gtm_unitTestEncodeState:inCoder]; - } - if ([self gtm_shouldEncodeStateForSubviews]) { - int i = 0; - for (UIView *subview in [self subviews]) { - [inCoder encodeObject:subview - forKey:[NSString stringWithFormat:@"ViewSubView %d", i]]; - i++; - } - } -} - -// Returns whether gtm_unitTestEncodeState should recurse into subviews -// -// Returns: -// should gtm_unitTestEncodeState pick up subview state. -- (BOOL)gtm_shouldEncodeStateForSubviews { - return YES; -} - -- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer { - return NO; -} -@end - -@implementation UIImage (GTMUnitTestingAdditions) -- (CGImageRef)gtm_unitTestImage { - return [self CGImage]; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTestingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTestingTest.m deleted file mode 100644 index 8b3effae..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIKit+UnitTestingTest.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// GTMUIKit+UnitTestingTest.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import "GTMUIKit+UnitTesting.h" -#import "GTMSenTestCase.h" - -@interface GTMUIView_UnitTestingTest : SenTestCase -@end - -@implementation GTMUIView_UnitTestingTest - -- (void)testDrawing { - GTMAssertDrawingEqualToFile(self, - CGSizeMake(200,200), - @"GTMUIViewUnitTestingTest", - [UIApplication sharedApplication], - nil); -} - -- (void)testState { - UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease]; - UIView *subview = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease]; - [view addSubview:subview]; - GTMAssertObjectStateEqualToStateNamed(view, @"GTMUIViewUnitTestingTest", nil); -} - -- (void)testUIImage { - NSString* name = @"GTMUIViewUnitTestingTest"; - UIImage* image = - [UIImage imageNamed:[name stringByAppendingPathExtension:@"png"]]; - GTMAssertObjectImageEqualToImageNamed(image, name, nil); -} - -- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo { - UIApplication *app = [UIApplication sharedApplication]; - STAssertEqualObjects(app, - contextInfo, - @"Should be a UIApplication"); - CGPoint center = CGPointMake(CGRectGetMidX(rect), - CGRectGetMidY(rect)); - rect = CGRectMake(center.x - 50, center.y - 50, 100, 100); - CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextAddEllipseInRect(context, rect); - CGContextSetLineWidth(context, 5); - [[UIColor redColor] set]; - CGContextStrokePath(context); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/Info.plist b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/Info.plist deleted file mode 100644 index 11355f71..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/Info.plist +++ /dev/null @@ -1,71 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.google.GTMUIUnitTestingHarness - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - NSMainNibFile - MainMenu - - CFBundleURLTypes - - - CFBundleURLName - GTMUIUnitTestingHarnessURL - CFBundleURLSchemes - - gtmgeturlhandlertest - - GTMBundleURLClass - GTMGetURLHandlerTest - - - CFBundleURLName - GTMGetURLHandlerBadClassURL - CFBundleURLSchemes - - gtmgeturlhandlerbadclasstest - - GTMBundleURLClass - GTMGetURLHandlerBadClassWarning - - - CFBundleURLName - GTMGetURLHandlerMissingClassURL - CFBundleURLSchemes - - gtmgeturlhandlermissingclasstest - - GTMBundleURLClass - GTMGetURLHandlerMissingClassWarning - - - CFBundleURLName - GTMGetURLHandlerMissingHandlerURL - CFBundleURLSchemes - - gtmgeturlhandlermissinghandlerurl - - - - NSPrincipalClass - NSApplication - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/main.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/main.m deleted file mode 100644 index 8fb364d7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIUnitTestingHarness/main.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// main.m -// GTMUnitTestingTest -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - - -#import -#import "GTMUnitTestingUtilities.h" - -int main(int argc, char *argv[]) { - [GTMUnitTestingUtilities setUpForUIUnitTestsIfBeingTested]; - return NSApplicationMain(argc, (const char **) argv); -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIViewUnitTestingTest.png b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUIViewUnitTestingTest.png deleted file mode 100644 index 03fd9f029838d7eb35344dbc56aa814187bf2666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3214 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 T_{IqLp8>M9a - -// GTMUnitTestDevLog tracks what messages are logged to verify that you only -// log what you expect to log during the running of unittests. This allows you -// to log with impunity from your actual core implementations and still be able -// to find unexpected logs in your output when running unittests. -// In your unittests you tell GTMUnitTestDevLog what messages you expect your -// test to spit out, and it will cause any that don't match to appear as errors -// in your unittest run output. You can match on exact strings or standard -// regexps. -// Set GTM_SHOW_UNITTEST_DEVLOGS in the environment to show the logs that that -// are expected and encountered. Otherwise they aren't display to keep the -// unit test results easier to read. - -@interface GTMUnitTestDevLog : NSObject -// Log a message -+ (void)log:(NSString*)format, ...; -+ (void)log:(NSString*)format args:(va_list)args; - -// Turn tracking on/off -+ (void)enableTracking; -+ (void)disableTracking; -+ (BOOL)isTrackingEnabled; - -// Note that you are expecting a string that has an exact match. No need to -// escape any pattern characters. -+ (void)expectString:(NSString *)format, ...; - -// Note that you are expecting a pattern. Pattern characters that you want -// exact matches on must be escaped. See [GTMRegex escapedPatternForString]. -// Patterns match across newlines (kGTMRegexOptionSupressNewlineSupport) making -// it easier to match output from the descriptions of NS collection types such -// as NSArray and NSDictionary. -+ (void)expectPattern:(NSString *)format, ...; - -// Note that you are expecting exactly 'n' strings -+ (void)expect:(NSUInteger)n casesOfString:(NSString *)format, ...; - -// Note that you are expecting exactly 'n' patterns -+ (void)expect:(NSUInteger)n casesOfPattern:(NSString*)format, ...; -+ (void)expect:(NSUInteger)n casesOfPattern:(NSString*)format args:(va_list)args; - -// Call when you want to verify that you have matched all the logs you expect -// to match. If your unittests inherit from GTMTestcase (like they should) you -// will get this called for free. -+ (void)verifyNoMoreLogsExpected; - -// Resets the expected logs so that you don't have anything expected. -// In general should not be needed, unless you have a variable logging case -// of some sort. -+ (void)resetExpectedLogs; -@end - -// Does the same as GTMUnitTestDevLog, but the logs are only expected in debug. -// ie-the expect requests don't count in release builds. -@interface GTMUnitTestDevLogDebug : GTMUnitTestDevLog -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.m deleted file mode 100644 index f2f9418f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestDevLog.m +++ /dev/null @@ -1,279 +0,0 @@ -// -// GTMUnitTestDevLog.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMUnitTestDevLog.h" - - -#import "GTMRegex.h" -#import "GTMSenTestCase.h" - -#if !GTM_IPHONE_SDK -// Add support for grabbing messages from Carbon. -#import -static void GTMDevLogDebugAssert(OSType componentSignature, - UInt32 options, - const char *assertionString, - const char *exceptionLabelString, - const char *errorString, - const char *fileName, - long lineNumber, - void *value, - ConstStr255Param outputMsg) { - NSString *outLog = [[[NSString alloc] initWithBytes:&(outputMsg[1]) - length:StrLength(outputMsg) - encoding:NSMacOSRomanStringEncoding] - autorelease]; - _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored -} -static inline void GTMInstallDebugAssertOutputHandler(void) { - InstallDebugAssertOutputHandler(GTMDevLogDebugAssert); -} -static inline void GTMUninstallDebugAssertOutputHandler(void) { - InstallDebugAssertOutputHandler(NULL); -} -#else // GTM_IPHONE_SDK -static inline void GTMInstallDebugAssertOutputHandler(void) {}; -static inline void GTMUninstallDebugAssertOutputHandler(void) {}; -#endif // GTM_IPHONE_SDK - -@interface GTMUnttestDevLogAssertionHandler : NSAssertionHandler -@end - -@implementation GTMUnttestDevLogAssertionHandler -- (void)handleFailureInMethod:(SEL)selector - object:(id)object - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format, ... { - va_list argList; - va_start(argList, format); - NSString *descStr - = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease]; - va_end(argList); - - // You need a format that will be useful in logs, but won't trip up Xcode or - // any other build systems parsing of the output. - NSString *outLog - = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)", - NSStringFromSelector(selector), - descStr, - fileName, (long)line]; - _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored - [NSException raise:NSInternalInconsistencyException - format:@"NSAssert raised"]; -} - -- (void)handleFailureInFunction:(NSString *)functionName - file:(NSString *)fileName - lineNumber:(NSInteger)line - description:(NSString *)format, ... { - va_list argList; - va_start(argList, format); - NSString *descStr - = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease]; - va_end(argList); - - // You need a format that will be useful in logs, but won't trip up Xcode or - // any other build systems parsing of the output. - NSString *outLog - = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)", - functionName, - descStr, - fileName, (long)line]; - _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored - [NSException raise:NSInternalInconsistencyException - format:@"NSAssert raised"]; -} - -@end - -@implementation GTMUnitTestDevLog -// If unittests are ever being run on separate threads, this may need to be -// made a thread local variable. -static BOOL gTrackingEnabled = NO; - -+ (NSMutableArray *)patterns { - static NSMutableArray *patterns = nil; - if (!patterns) { - patterns = [[NSMutableArray array] retain]; - } - return patterns; -} - -+ (BOOL)isTrackingEnabled { - return gTrackingEnabled; -} - -+ (void)enableTracking { - GTMInstallDebugAssertOutputHandler(); - - NSMutableDictionary *threadDictionary - = [[NSThread currentThread] threadDictionary]; - if ([threadDictionary objectForKey:@"NSAssertionHandler"] != nil) { - NSLog(@"Warning: replacing NSAssertionHandler to capture assertions"); - } - - // Install an assertion handler to capture those. - GTMUnttestDevLogAssertionHandler *handler = - [[[GTMUnttestDevLogAssertionHandler alloc] init] autorelease]; - [threadDictionary setObject:handler forKey:@"NSAssertionHandler"]; - - gTrackingEnabled = YES; -} - -+ (void)disableTracking { - GTMUninstallDebugAssertOutputHandler(); - - // Clear our assertion handler back out. - NSMutableDictionary *threadDictionary - = [[NSThread currentThread] threadDictionary]; - [threadDictionary removeObjectForKey:@"NSAssertionHandler"]; - - gTrackingEnabled = NO; -} - -+ (void)log:(NSString*)format, ... { - va_list argList; - va_start(argList, format); - [self log:format args:argList]; - va_end(argList); -} - -+ (void)log:(NSString*)format args:(va_list)args { - if ([self isTrackingEnabled]) { - NSString *logString = [[[NSString alloc] initWithFormat:format - arguments:args] autorelease]; - @synchronized(self) { - NSMutableArray *patterns = [self patterns]; - BOOL logError = [patterns count] == 0 ? YES : NO; - GTMRegex *regex = nil; - if (!logError) { - regex = [[[patterns objectAtIndex:0] retain] autorelease]; - logError = [regex matchesString:logString] ? NO : YES; - [patterns removeObjectAtIndex:0]; - } - if (logError) { - if (regex) { - [NSException raise:SenTestFailureException - format:@"Unexpected log: %@\nExpected: %@", - logString, regex]; - } else { - [NSException raise:SenTestFailureException - format:@"Unexpected log: %@", logString]; - } - } else { - static BOOL envChecked = NO; - static BOOL showExpectedLogs = YES; - if (!envChecked) { - showExpectedLogs = getenv("GTM_SHOW_UNITTEST_DEVLOGS") ? YES : NO; - } - if (showExpectedLogs) { - NSLog(@"Expected Log: %@", logString); - } - } - } - } else { - NSLogv(format, args); - } -} - -+ (void)expectString:(NSString *)format, ... { - va_list argList; - va_start(argList, format); - NSString *string = [[[NSString alloc] initWithFormat:format - arguments:argList] autorelease]; - va_end(argList); - NSString *pattern = [GTMRegex escapedPatternForString:string]; - [self expect:1 casesOfPattern:pattern]; - -} - -+ (void)expectPattern:(NSString *)format, ... { - va_list argList; - va_start(argList, format); - [self expect:1 casesOfPattern:format args:argList]; - va_end(argList); -} - -+ (void)expect:(NSUInteger)n casesOfString:(NSString *)format, ... { - va_list argList; - va_start(argList, format); - NSString *string = [[[NSString alloc] initWithFormat:format - arguments:argList] autorelease]; - va_end(argList); - NSString *pattern = [GTMRegex escapedPatternForString:string]; - [self expect:n casesOfPattern:pattern]; -} - -+ (void)expect:(NSUInteger)n casesOfPattern:(NSString*)format, ... { - va_list argList; - va_start(argList, format); - [self expect:n casesOfPattern:format args:argList]; - va_end(argList); -} - -+ (void)expect:(NSUInteger)n -casesOfPattern:(NSString*)format - args:(va_list)args { - NSString *pattern = [[[NSString alloc] initWithFormat:format - arguments:args] autorelease]; - GTMRegex *regex = [GTMRegex regexWithPattern:pattern - options:kGTMRegexOptionSupressNewlineSupport]; - @synchronized(self) { - NSMutableArray *patterns = [self patterns]; - for (NSUInteger i = 0; i < n; ++i) { - [patterns addObject:regex]; - } - } -} - -+ (void)verifyNoMoreLogsExpected { - @synchronized(self) { - NSMutableArray *patterns = [self patterns]; - if ([patterns count] > 0) { - NSMutableArray *patternsCopy = [[patterns copy] autorelease]; - [self resetExpectedLogs]; - [NSException raise:SenTestFailureException - format:@"Logs still expected %@", patternsCopy]; - } - } -} - -+ (void)resetExpectedLogs { - @synchronized(self) { - NSMutableArray *patterns = [self patterns]; - [patterns removeAllObjects]; - } -} -@end - - -@implementation GTMUnitTestDevLogDebug - -+ (void)expect:(NSUInteger)n -casesOfPattern:(NSString*)format - args:(va_list)args { -#if DEBUG - // In debug, let the base work happen - [super expect:n casesOfPattern:format args:args]; -#else - // nothing when not in debug -#endif -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingBindingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingBindingTest.m deleted file mode 100644 index 19ab5b06..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingBindingTest.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// GTMUnitTestingBindingTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMUnitTestingTest.h" -#import "GTMNSObject+BindingUnitTesting.h" - -@interface GTMUnitTestingBindingTest : GTMTestCase { - int expectedFailureCount_; -} -@end - -@interface GTMUnitTestingBindingBadClass : NSObject -@end - -@implementation GTMUnitTestingBindingTest - -// Iterates through all of our subviews testing the exposed bindings -- (void)doSubviewBindingTest:(NSView*)view { - NSArray *subviews = [view subviews]; - NSView *subview; - GTM_FOREACH_OBJECT(subview, subviews) { - GTMTestExposedBindings(subview, @"testing %@", subview); - [self doSubviewBindingTest:subview]; - } -} - -- (void)testBindings { - // Get our window to work with and test it's bindings - GTMUnitTestingTestController *testWindowController - = [[GTMUnitTestingTestController alloc] initWithWindowNibName:@"GTMUnitTestingTest"]; - NSWindow *window = [testWindowController window]; - GTMTestExposedBindings(window, @"Window failed binding test"); - [self doSubviewBindingTest:[window contentView]]; - [window close]; - [testWindowController release]; - - // Run a test against something with no bindings. - // We're expecting a failure here. - expectedFailureCount_ = 1; - GTMTestExposedBindings(@"foo", @"testing no bindings"); - STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bindings"); - - // Run test against some with bad bindings. - // We're expecting failures here. - expectedFailureCount_ = 4; - GTMUnitTestingBindingBadClass *bad = [[[GTMUnitTestingBindingBadClass alloc] init] autorelease]; - GTMTestExposedBindings(bad, @"testing bad bindings"); - STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bad bindings"); -} - -- (void)failWithException:(NSException *)anException { - if (expectedFailureCount_ > 0) { - expectedFailureCount_ -= 1; - } else { - [super failWithException:anException]; // COV_NF_LINE - not expecting exception - } -} - -@end - -// Forces several error cases in our binding tests to test them -@implementation GTMUnitTestingBindingBadClass - -NSString *const kGTMKeyWithNoClass = @"keyWithNoClass"; -NSString *const kGTMKeyWithNoValue = @"keyWithNoValue"; -NSString *const kGTMKeyWeCantSet = @"keyWeCantSet"; -NSString *const kGTMKeyThatIsntEqual = @"keyThatIsntEqual"; - -- (NSArray *)exposedBindings { - return [NSArray arrayWithObjects:kGTMKeyWithNoClass, - kGTMKeyWithNoValue, - kGTMKeyWeCantSet, - kGTMKeyThatIsntEqual, - nil]; -} - -- (NSArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding { - GTMBindingUnitTestData *data - = [GTMBindingUnitTestData testWithIdentityValue:kGTMKeyThatIsntEqual]; - return [NSArray arrayWithObject:data]; -} - -- (Class)valueClassForBinding:(NSString*)binding { - return [binding isEqualTo:kGTMKeyWithNoClass] ? nil : [NSString class]; -} - -- (id)valueForKey:(NSString*)binding { - if ([binding isEqualTo:kGTMKeyWithNoValue]) { - [NSException raise:NSUndefinedKeyException format:nil]; - } - return @"foo"; -} - -- (void)setValue:(id)value forKey:(NSString*)binding { - if ([binding isEqualTo:kGTMKeyWeCantSet]) { - [NSException raise:NSUndefinedKeyException format:nil]; - } -} -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.h deleted file mode 100644 index ea9521b9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// GTMUnitTestingTest.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import - -// GTMUnitTestingTestController controller so that initWithWindowNibName can -// find the appropriate bundle to load our nib from. See [GTMUnitTestingTest -// -testUnitTestingFramework] for more info -@interface GTMUnitTestingTestController : NSWindowController { - IBOutlet NSTextField *field_; -} - -- (NSTextField *)textField; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.m deleted file mode 100644 index 72e68804..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingTest.m +++ /dev/null @@ -1,252 +0,0 @@ -// -// GTMUnitTestingTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import -#import "GTMUnitTestingTest.h" -#import "GTMAppKit+UnitTesting.h" - -NSString *const kGTMWindowNibName = @"GTMUnitTestingTest"; -NSString *const kGTMWindowSaveFileName = @"GTMUnitTestingWindow"; - -@interface GTMUnitTestingTest : GTMTestCase { - int expectedFailureCount_; -} -@end - -// GTMUnitTestingTest support classes -@interface GTMUnitTestingView : NSObject { - BOOL goodContext_; -} -- (BOOL)hadGoodContext; -@end - -@interface GTMUnitTestingDelegate : NSObject { - BOOL didEncode_; -} -- (BOOL)didEncode; -@end - -@interface GTMUnitTestingProxyTest : NSProxy -@end - -@implementation GTMUnitTestingTest - -// Brings up the window defined in the nib and takes a snapshot of it. -// We use the "empty" GTMUnitTestingTestController controller so that -// initWithWindowNibName can find the appropriate bundle to load our nib from. -// For some reason when running unit tests, with all the injecting going on -// the nib loader can get confused as to where it should load a nib from. -// Having a NSWindowController subclass in the same bundle as the nib seems -// to help the nib loader find the nib, and any custom classes that are attached -// to it. -- (void)testUnitTestingFramework { - // set up our delegates so we can test delegate handling - GTMUnitTestingDelegate *appDelegate = [[GTMUnitTestingDelegate alloc] init]; - [NSApp setDelegate:appDelegate]; - - // Get our window - GTMUnitTestingTestController *testWindowController - = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName]; - NSWindow *window = [testWindowController window]; - // Test the app state. This will cover windows and menus - GTMAssertObjectStateEqualToStateNamed(NSApp, - @"GTMUnitTestingTestApp", - @"Testing the app state"); - - // Test the window image and state - GTMAssertObjectEqualToStateAndImageNamed(window, - kGTMWindowSaveFileName, - @"Testing the window image and state"); - - // Verify that all of our delegate encoders got called - STAssertTrue([appDelegate didEncode], @"app delegate didn't get called?"); - - // Clean up - [NSApp setDelegate:nil]; - [appDelegate release]; - [testWindowController release]; -} - -- (void)testViewUnitTesting { - GTMUnitTestingView *unitTestingView = [[GTMUnitTestingView alloc] init]; - GTMAssertDrawingEqualToImageNamed(unitTestingView, - NSMakeSize(200,200), - @"GTMUnitTestingView", - NSApp, - @"Testing view drawing"); - STAssertTrue([unitTestingView hadGoodContext], @"bad context?"); - [unitTestingView release]; -} - -- (void)testImageUnitTesting { - NSImage *image = [NSImage imageNamed:@"NSApplicationIcon"]; - GTMUnitTestingDelegate *imgDelegate = [[GTMUnitTestingDelegate alloc] init]; - [image setDelegate:imgDelegate]; - GTMAssertObjectEqualToStateAndImageNamed(image, - @"GTMUnitTestingImage", - @"Testing NSImage image and state"); - STAssertTrue([imgDelegate didEncode], @"imgDelegate didn't get called?"); - [image setDelegate:nil]; - [imgDelegate release]; -} - -- (void)testFailures { - NSString *const bogusTestName = @"GTMUnitTestTestingFailTest"; - NSString *tempDir = NSTemporaryDirectory(); - STAssertNotNil(tempDir, @"No Temp Dir?"); - NSString *originalPath = [NSObject gtm_getUnitTestSaveToDirectory]; - STAssertNotNil(originalPath, @"No save dir?"); - [NSObject gtm_setUnitTestSaveToDirectory:tempDir]; - STAssertEqualObjects(tempDir, [NSObject gtm_getUnitTestSaveToDirectory], - @"Save to dir not set?"); - NSString *statePath = [self gtm_saveToPathForStateNamed:bogusTestName]; - STAssertNotNil(statePath, @"no state path?"); - NSString *imagePath = [self gtm_saveToPathForImageNamed:bogusTestName]; - STAssertNotNil(imagePath, @"no image path?"); - GTMUnitTestingTestController *testWindowController - = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName]; - NSWindow *window = [testWindowController window]; - - // Test against a golden master filename that doesn't exist - expectedFailureCount_ = 2; - GTMAssertObjectEqualToStateAndImageNamed(window, - bogusTestName, - @"Creating image and state files"); - STAssertEquals(expectedFailureCount_, 0, - @"Didn't get expected failures creating files"); - - // Change our image and state and verify failures - [[testWindowController textField] setStringValue:@"Foo"]; - expectedFailureCount_ = 2; - GTMAssertObjectEqualToStateAndImageNamed(window, - kGTMWindowSaveFileName, - @"Testing the window image and state"); - STAssertEquals(expectedFailureCount_, 0, - @"Didn't get expected failures testing files"); - - // Now change the size of our image and verify failures - NSRect oldFrame = [window frame]; - NSRect newFrame = oldFrame; - newFrame.size.width += 1; - [window setFrame:newFrame display:YES]; - expectedFailureCount_ = 1; - GTMAssertObjectImageEqualToImageNamed(window, - kGTMWindowSaveFileName, - @"Testing the changed window size"); - [window setFrame:oldFrame display:YES]; - - // Set our unit test save dir to a bogus directory and - // run the tests again. - [NSObject gtm_setUnitTestSaveToDirectory:@"/zim/blatz/foo/bob/bar"]; - expectedFailureCount_ = 2; - GTMAssertObjectEqualToStateAndImageNamed(window, - kGTMWindowSaveFileName, - @"Testing the window image and state"); - STAssertEquals(expectedFailureCount_, 0, - @"Didn't get expected failures testing files"); - expectedFailureCount_ = 2; - GTMAssertObjectEqualToStateAndImageNamed(window, - @"GTMUnitTestingWindowDoesntExist", - @"Testing the window image and state"); - STAssertEquals(expectedFailureCount_, 0, - @"Didn't get expected failures testing files"); - - // Reset our unit test save dir - [NSObject gtm_setUnitTestSaveToDirectory:nil]; - - // Test against something that doesn't have an image - expectedFailureCount_ = 1; - GTMAssertObjectImageEqualToImageNamed(@"a string", - @"GTMStringsDontHaveImages", - @"Testing that strings should fail"); - STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing files"); - - // Test against something that doesn't implement our support - expectedFailureCount_ = 1; - GTMUnitTestingProxyTest *proxy = [[GTMUnitTestingProxyTest alloc] init]; - GTMAssertObjectStateEqualToStateNamed(proxy, - @"NSProxiesDontDoState", - @"Testing that NSProxy should fail"); - STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing proxy"); - [proxy release]; - - [window close]; -} - -- (void)failWithException:(NSException *)anException { - if (expectedFailureCount_ > 0) { - expectedFailureCount_ -= 1; - } else { - [super failWithException:anException]; // COV_NF_LINE - not expecting exception - } -} - - -@end - -@implementation GTMUnitTestingTestController -- (NSTextField *)textField { - return field_; -} - -@end - -@implementation GTMUnitTestingDelegate - -- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder { - // Test various encodings - [inCoder encodeBool:YES forKey:@"BoolTest"]; - [inCoder encodeInt:1 forKey:@"IntTest"]; - [inCoder encodeInt32:1 forKey:@"Int32Test"]; - [inCoder encodeInt64:1 forKey:@"Int64Test"]; - [inCoder encodeFloat:1.0f forKey:@"FloatTest"]; - [inCoder encodeDouble:1.0 forKey:@"DoubleTest"]; - [inCoder encodeBytes:(const uint8_t*)"BytesTest" length:9 forKey:@"BytesTest"]; - didEncode_ = YES; -} - -- (BOOL)didEncode { - return didEncode_; -} -@end - -@implementation GTMUnitTestingView - -- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo { - [[NSColor redColor] set]; - NSRectFill(rect); - goodContext_ = [(id)contextInfo isEqualTo:NSApp]; -} - -- (BOOL)hadGoodContext { - return goodContext_; -} -@end - -// GTMUnitTestingProxyTest is for testing the case where we don't conform to -// the GTMUnitTestingEncoding protocol. -@implementation GTMUnitTestingProxyTest -- (id)init { - return self; -} - -- (BOOL)conformsToProtocol:(Protocol *)protocol { - return NO; -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.h deleted file mode 100644 index 128a4c4f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.h +++ /dev/null @@ -1,91 +0,0 @@ -// -// GTMUnitTestingUtilities.h -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import -#import - -// Collection of utilities for unit testing -@interface GTMUnitTestingUtilities : NSObject - -// Returns YES if we are currently being unittested. -+ (BOOL)areWeBeingUnitTested; - -// Sets up the user interface so that we can run consistent UI unittests on -// it. This includes setting scroll bar types, setting selection colors -// setting color spaces etc so that everything is consistent across machines. -// This should be called in main, before NSApplicationMain is called. -+ (void)setUpForUIUnitTests; - -// Syntactic sugar combining the above, and wrapping them in an -// NSAutoreleasePool so that your main can look like this: -// int main(int argc, const char *argv[]) { -// [UnitTestingUtilities setUpForUIUnitTestsIfBeingTested]; -// return NSApplicationMain(argc, argv); -// } -+ (void)setUpForUIUnitTestsIfBeingTested; - -// Check if the screen saver is running. Some unit tests don't work when -// the screen saver is active. -+ (BOOL)isScreenSaverActive; - -// Allows for posting either a keydown or a keyup with all the modifiers being -// applied. Passing a 'g' with NSKeyDown and NSShiftKeyMask -// generates two events (a shift key key down and a 'g' key keydown). Make sure -// to balance this with a keyup, or things could get confused. Events get posted -// using the CGRemoteOperation events which means that it gets posted in the -// system event queue. Thus you can affect other applications if your app isn't -// the active app (or in some cases, such as hotkeys, even if it is). -// Arguments: -// type - Event type. Currently accepts NSKeyDown and NSKeyUp -// keyChar - character on the keyboard to type. Make sure it is lower case. -// If you need upper case, pass in the NSShiftKeyMask in the -// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask. -// to generate "+" pass in '=' and NSShiftKeyMask. -// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask, -// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and -// NSCommandKeyMask -+ (void)postKeyEvent:(NSEventType)type - character:(CGCharCode)keyChar - modifiers:(UInt32)cocoaModifiers; - -// Syntactic sugar for posting a keydown immediately followed by a key up event -// which is often what you really want. -// Arguments: -// keyChar - character on the keyboard to type. Make sure it is lower case. -// If you need upper case, pass in the NSShiftKeyMask in the -// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask. -// to generate "+" pass in '=' and NSShiftKeyMask. -// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask, -// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and -// NSCommandKeyMask -+ (void)postTypeCharacterEvent:(CGCharCode)keyChar - modifiers:(UInt32)cocoaModifiers; - -// Runs the event loop in NSDefaultRunLoopMode until date. Can be useful for -// testing user interface responses in a controlled timed event loop. For most -// uses using: -// [[NSRunLoop currentRunLoop] runUntilDate:date] -// will do. The only reason you would want to use this is if you were -// using the postKeyEvent:character:modifiers to send events and wanted to -// receive user input. -// Arguments: -// date - end of execution time -+ (void)runUntilDate:(NSDate*)date; - -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.m deleted file mode 100644 index e72a921a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/GTMUnitTestingUtilities.m +++ /dev/null @@ -1,310 +0,0 @@ -// -// GTMUnitTestingUtilities.m -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -#import "GTMUnitTestingUtilities.h" -#import -#import "GTMDefines.h" -#import "GTMGarbageCollection.h" - -// The Users profile before we change it on them -static CMProfileRef gGTMCurrentColorProfile = NULL; - -// Compares two color profiles -static BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b); -// Stores the user's color profile away, and changes over to generic. -static void GTMSetColorProfileToGenericRGB(); -// Restores the users profile. -static void GTMRestoreColorProfile(void); - -static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode); - -@implementation GTMUnitTestingUtilities - -// Returns YES if we are currently being unittested. -+ (BOOL)areWeBeingUnitTested { - BOOL answer = NO; - - // Check to see if the SenTestProbe class is linked in before we call it. - Class SenTestProbeClass = NSClassFromString(@"SenTestProbe"); - if (SenTestProbeClass != Nil) { - // Doing this little dance so we don't actually have to link - // SenTestingKit in - SEL selector = NSSelectorFromString(@"isTesting"); - NSMethodSignature *sig = [SenTestProbeClass methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig]; - [invocation setSelector:selector]; - [invocation invokeWithTarget:SenTestProbeClass]; - [invocation getReturnValue:&answer]; - } - return answer; -} - -// Sets up the user interface so that we can run consistent UI unittests on it. -+ (void)setUpForUIUnitTests { - // Give some names to undocumented defaults values - const NSInteger MediumFontSmoothing = 2; - const NSInteger BlueTintedAppearance = 1; - - // This sets up some basic values that we want as our defaults for doing pixel - // based user interface tests. These defaults only apply to the unit test app, - // except or the color profile which will be set system wide, and then - // restored when the tests complete. - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - // Scroll arrows together bottom - [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"]; - // Smallest font size to CG should perform antialiasing on - [defaults setInteger:4 forKey:@"AppleAntiAliasingThreshold"]; - // Type of smoothing - [defaults setInteger:MediumFontSmoothing forKey:@"AppleFontSmoothing"]; - // Blue aqua - [defaults setInteger:BlueTintedAppearance forKey:@"AppleAquaColorVariant"]; - // Standard highlight colors - [defaults setObject:@"0.709800 0.835300 1.000000" - forKey:@"AppleHighlightColor"]; - [defaults setObject:@"0.500000 0.500000 0.500000" - forKey:@"AppleOtherHighlightColor"]; - // Use english plz - [defaults setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"]; - // How fast should we draw sheets. This speeds up the sheet tests considerably - [defaults setFloat:.001f forKey:@"NSWindowResizeTime"]; - // Switch over the screen profile to "generic rgb". This installs an - // atexit handler to return our profile back when we are done. - GTMSetColorProfileToGenericRGB(); -} - -+ (void)setUpForUIUnitTestsIfBeingTested { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - if ([self areWeBeingUnitTested]) { - [self setUpForUIUnitTests]; - } - [pool release]; -} - -+ (BOOL)isScreenSaverActive { - BOOL answer = NO; - ProcessSerialNumber psn; - if (GetFrontProcess(&psn) == noErr) { - CFDictionaryRef cfProcessInfo - = ProcessInformationCopyDictionary(&psn, - kProcessDictionaryIncludeAllInformationMask); - NSDictionary *processInfo = GTMCFAutorelease(cfProcessInfo); - - NSString *bundlePath = [processInfo objectForKey:@"BundlePath"]; - // ScreenSaverEngine is the frontmost app if the screen saver is actually - // running Security Agent is the frontmost app if the "enter password" - // dialog is showing - NSString *bundleName = [bundlePath lastPathComponent]; - answer = ([bundleName isEqualToString:@"ScreenSaverEngine.app"] - || [bundleName isEqualToString:@"SecurityAgent.app"]); - } - return answer; -} - -// Allows for posting either a keydown or a keyup with all the modifiers being -// applied. Passing a 'g' with NSKeyDown and NSShiftKeyMask -// generates two events (a shift key key down and a 'g' key keydown). Make sure -// to balance this with a keyup, or things could get confused. Events get posted -// using the CGRemoteOperation events which means that it gets posted in the -// system event queue. Thus you can affect other applications if your app isn't -// the active app (or in some cases, such as hotkeys, even if it is). -// Arguments: -// type - Event type. Currently accepts NSKeyDown and NSKeyUp -// keyChar - character on the keyboard to type. Make sure it is lower case. -// If you need upper case, pass in the NSShiftKeyMask in the -// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask. -// to generate "+" pass in '=' and NSShiftKeyMask. -// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask, -// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and -// NSCommandKeyMask -+ (void)postKeyEvent:(NSEventType)type - character:(CGCharCode)keyChar - modifiers:(UInt32)cocoaModifiers { - require(![self isScreenSaverActive], CantWorkWithScreenSaver); - require(type == NSKeyDown || type == NSKeyUp, CantDoEvent); - CGKeyCode code = GTMKeyCodeForCharCode(keyChar); - verify(code != 256); - CGEventRef event = CGEventCreateKeyboardEvent(NULL, code, type == NSKeyDown); - require(event, CantCreateEvent); - CGEventSetFlags(event, cocoaModifiers); - CGEventPost(kCGSessionEventTap, event); - CFRelease(event); -CantCreateEvent: -CantDoEvent: -CantWorkWithScreenSaver: - return; -} - -// Syntactic sugar for posting a keydown immediately followed by a key up event -// which is often what you really want. -// Arguments: -// keyChar - character on the keyboard to type. Make sure it is lower case. -// If you need upper case, pass in the NSShiftKeyMask in the -// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask. -// to generate "+" pass in '=' and NSShiftKeyMask. -// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask, -// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and -// NSCommandKeyMask -+ (void)postTypeCharacterEvent:(CGCharCode)keyChar modifiers:(UInt32)cocoaModifiers { - [self postKeyEvent:NSKeyDown character:keyChar modifiers:cocoaModifiers]; - [self postKeyEvent:NSKeyUp character:keyChar modifiers:cocoaModifiers]; -} - -// Runs the event loop in NSDefaultRunLoopMode until date. Can be useful for -// testing user interface responses in a controlled timed event loop. For most -// uses using: -// [[NSRunLoop currentRunLoop] runUntilDate:date] -// will do. The only reason you would want to use this is if you were -// using the postKeyEvent:character:modifiers to send events and wanted to -// receive user input. -// Arguments: -// date - end of execution time -+ (void)runUntilDate:(NSDate*)date { - NSEvent *event; - while ((event = [NSApp nextEventMatchingMask:NSAnyEventMask - untilDate:date - inMode:NSDefaultRunLoopMode - dequeue:YES])) { - [NSApp sendEvent:event]; - } -} - -@end - -BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b) { - BOOL equal = YES; - if (a != b) { - CMProfileMD5 aMD5; - CMProfileMD5 bMD5; - CMError aMD5Err = CMGetProfileMD5(a, aMD5); - CMError bMD5Err = CMGetProfileMD5(b, bMD5); - equal = (!aMD5Err && - !bMD5Err && - !memcmp(aMD5, bMD5, sizeof(CMProfileMD5))) ? YES : NO; - } - return equal; -} - -void GTMRestoreColorProfile(void) { - if (gGTMCurrentColorProfile) { - CGDirectDisplayID displayID = CGMainDisplayID(); - CMError error = CMSetProfileByAVID((UInt32)displayID, - gGTMCurrentColorProfile); - CMCloseProfile(gGTMCurrentColorProfile); - if (error) { - // COV_NF_START - // No way to force this case in a unittest. - _GTMDevLog(@"Failed to restore previous color profile! " - "You may need to open System Preferences : Displays : Color " - "and manually restore your color settings. (Error: %i)", error); - // COV_NF_END - } else { - _GTMDevLog(@"Color profile restored"); - } - gGTMCurrentColorProfile = NULL; - } -} - -void GTMSetColorProfileToGenericRGB(void) { - NSColorSpace *genericSpace = [NSColorSpace genericRGBColorSpace]; - CMProfileRef genericProfile = (CMProfileRef)[genericSpace colorSyncProfile]; - CMProfileRef previousProfile; - CGDirectDisplayID displayID = CGMainDisplayID(); - CMError error = CMGetProfileByAVID((UInt32)displayID, &previousProfile); - if (error) { - // COV_NF_START - // No way to force this case in a unittest. - _GTMDevLog(@"Failed to get current color profile. " - "I will not be able to restore your current profile, thus I'm " - "not changing it. Many unit tests may fail as a result. (Error: %i)", - error); - return; - // COV_NF_END - } - if (GTMAreCMProfilesEqual(genericProfile, previousProfile)) { - CMCloseProfile(previousProfile); - return; - } - CFStringRef previousProfileName; - CFStringRef genericProfileName; - CMCopyProfileDescriptionString(previousProfile, &previousProfileName); - CMCopyProfileDescriptionString(genericProfile, &genericProfileName); - - _GTMDevLog(@"Temporarily changing your system color profile from \"%@\" to \"%@\".", - previousProfileName, genericProfileName); - _GTMDevLog(@"This allows the pixel-based unit-tests to have consistent color " - "values across all machines."); - _GTMDevLog(@"The colors on your screen will change for the duration of the testing."); - - - if ((error = CMSetProfileByAVID((UInt32)displayID, genericProfile))) { - // COV_NF_START - // No way to force this case in a unittest. - _GTMDevLog(@"Failed to set color profile to \"%@\"! Many unit tests will fail as " - "a result. (Error: %i)", genericProfileName, error); - // COV_NF_END - } else { - gGTMCurrentColorProfile = previousProfile; - atexit(GTMRestoreColorProfile); - } - CFRelease(previousProfileName); - CFRelease(genericProfileName); -} - -// Returns a virtual key code for a given charCode. Handles all of the -// NS*FunctionKeys as well. -static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode) { - // character map taken from http://classicteck.com/rbarticles/mackeyboard.php - int characters[] = { - 'a', 's', 'd', 'f', 'h', 'g', 'z', 'x', 'c', 'v', 256, 'b', 'q', 'w', - 'e', 'r', 'y', 't', '1', '2', '3', '4', '6', '5', '=', '9', '7', '-', - '8', '0', ']', 'o', 'u', '[', 'i', 'p', '\n', 'l', 'j', '\'', 'k', ';', - '\\', ',', '/', 'n', 'm', '.', '\t', ' ', '`', '\b', 256, '\e' - }; - - // function key map taken from - // file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/NSEvent.html - int functionKeys[] = { - // NSUpArrowFunctionKey - NSF12FunctionKey - 126, 125, 123, 124, 122, 120, 99, 118, 96, 97, 98, 100, 101, 109, 103, 111, - // NSF13FunctionKey - NSF28FunctionKey - 105, 107, 113, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - // NSF29FunctionKey - NSScrollLockFunctionKey - 256, 256, 256, 256, 256, 256, 256, 256, 117, 115, 256, 119, 116, 121, 256, 256, - // NSPauseFunctionKey - NSPrevFunctionKey - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - // NSNextFunctionKey - NSModeSwitchFunctionKey - 256, 256, 256, 256, 256, 256, 114, 1 - }; - - CGKeyCode outCode = 0; - - // Look in the function keys - if (charCode >= NSUpArrowFunctionKey && charCode <= NSModeSwitchFunctionKey) { - outCode = functionKeys[charCode - NSUpArrowFunctionKey]; - } else { - // Look in our character map - for (size_t i = 0; i < (sizeof(characters) / sizeof (int)); i++) { - if (characters[i] == charCode) { - outCode = i; - break; - } - } - } - return outCode; -} - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh deleted file mode 100644 index ccf1456c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/sh -# RunIPhoneUnitTest.sh -# Copyright 2008 Google Inc. -# -# 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. -# -# Runs all unittests through the iPhone simulator. We don't handle running them -# on the device. To run on the device just choose "run". -# Controlling environment variables: -# -# GTM_DISABLE_ZOMBIES - -# Set to a non-zero value to turn on zombie checks. You will probably -# want to turn this off if you enable leaks. -# -# GTM_ENABLE_LEAKS - -# Set to a non-zero value to turn on the leaks check. You will probably want -# to disable zombies, otherwise you will get a lot of false positives. -# -# GTM_DISABLE_TERMINATION -# Set to a non-zero value so that the app doesn't terminate when it's finished -# running tests. This is useful when using it with external tools such -# as Instruments. -# -# GTM_LEAKS_SYMBOLS_TO_IGNORE -# List of comma separated symbols that leaks should ignore. Mainly to control -# leaks in frameworks you don't have control over. -# Search this file for GTM_LEAKS_SYMBOLS_TO_IGNORE to see examples. -# Please feel free to add other symbols as you find them but make sure to -# reference Radars or other bug systems so we can track them. -# -# GTM_REMOVE_GCOV_DATA -# Before starting the test, remove any *.gcda files for the current run so -# you won't get errors when the source file has changed and the data can't -# be merged. -# - -ScriptDir=$(dirname $(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")) -ScriptName=$(basename "$0") -ThisScript="${ScriptDir}/${ScriptName}" - -GTMXcodeNote() { - echo ${ThisScript}:${1}: note: GTM ${2} -} - -if [ "$PLATFORM_NAME" == "iphonesimulator" ]; then - # We kill the iPhone simulator because otherwise we run into issues where - # the unittests fail becuase the simulator is currently running, and - # at this time the iPhone SDK won't allow two simulators running at the same - # time. - /usr/bin/killall "iPhone Simulator" - - if [ $GTM_REMOVE_GCOV_DATA ]; then - if [ "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" != "-" ]; then - if [ -d "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" ]; then - GTMXcodeNote ${LINENO} "Removing any .gcda files" - (cd "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" && \ - find . -type f -name "*.gcda" -print0 | xargs -0 rm -f ) - fi - fi - fi - - export DYLD_ROOT_PATH="$SDKROOT" - export DYLD_FRAMEWORK_PATH="$CONFIGURATION_BUILD_DIR" - export IPHONE_SIMULATOR_ROOT="$SDKROOT" - export CFFIXED_USER_HOME="$TEMP_FILES_DIR/iPhone Simulator User Dir" - - # See http://developer.apple.com/technotes/tn2004/tn2124.html for an - # explanation of these environment variables. - - export MallocScribble=YES - export MallocPreScribble=YES - export MallocGuardEdges=YES - export MallocStackLogging=YES - export NSAutoreleaseFreedObjectCheckEnabled=YES - export OBJC_DEBUG_FRAGILE_SUPERCLASSES=YES - - if [ ! $GTM_DISABLE_ZOMBIES ]; then - GTMXcodeNote ${LINENO} "Enabling zombies" - export CFZombieLevel=3 - export NSZombieEnabled=YES - fi - - # Cleanup user home and documents directory - if [ -d "$CFFIXED_USER_HOME" ]; then - rm -rf "$CFFIXED_USER_HOME" - fi - mkdir "$CFFIXED_USER_HOME" - mkdir "$CFFIXED_USER_HOME/Documents" - - # 6251475 iPhone simulator leaks @ CFHTTPCookieStore shutdown if - # CFFIXED_USER_HOME empty - GTM_LEAKS_SYMBOLS_TO_IGNORE="CFHTTPCookieStore" - - "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents -else - GTMXcodeNote ${LINENO} "Skipping running of unittests for device build." -fi -exit 0 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunMacOSUnitTests.sh b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunMacOSUnitTests.sh deleted file mode 100644 index 87f678f3..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/RunMacOSUnitTests.sh +++ /dev/null @@ -1,213 +0,0 @@ -# -# RunMacOSUnitTests.sh -# Copyright 2008 Google Inc. -# -# 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. -# -# Run the unit tests in this test bundle. -# Set up some env variables to make things as likely to crash as possible. -# See http://developer.apple.com/technotes/tn2004/tn2124.html for details. -# - -# Controlling environment variables: -# -# GTM_DISABLE_ZOMBIES - -# Set to a non-zero value to turn on zombie checks. You will probably -# want to turn this off if you enable leaks. -# -# GTM_ENABLE_LEAKS - -# Set to a non-zero value to turn on the leaks check. You will probably want -# to disable zombies, otherwise you will get a lot of false positives. -# -# GTM_NO_DEBUG_FRAMEWORKS - -# Set to zero to prevent the use of the debug versions of system -# libraries/frameworks if you have them installed on your system. The -# frameworks can be found at -# http://connect.apple.com > Downloads > Developer Tools -# (https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=19915) -# -# GTM_LEAKS_SYMBOLS_TO_IGNORE -# List of comma separated symbols that leaks should ignore. Mainly to control -# leaks in frameworks you don't have control over. -# Search this file for GTM_LEAKS_SYMBOLS_TO_IGNORE to see examples. -# Please feel free to add other symbols as you find them but make sure to -# reference Radars or other bug systems so we can track them. -# -# GTM_REMOVE_GCOV_DATA -# Before starting the test, remove any *.gcda files for the current run so -# you won't get errors when the source file has changed and the data can't -# be merged. -# - -ScriptDir=$(dirname $(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")) -ScriptName=$(basename "$0") -ThisScript="${ScriptDir}/${ScriptName}" - -GTMXcodeNote() { - echo ${ThisScript}:${1}: note: GTM ${2} -} - -# The workaround below is due to -# Radar 6248062 otest won't run with MallocHistory enabled under rosetta -# Basically we go through and check what architecture we are running on -# and which architectures we can support -AppendToSymbolsLeaksShouldIgnore() { - if [ "${GTM_LEAKS_SYMBOLS_TO_IGNORE}" = "" ]; then - GTM_LEAKS_SYMBOLS_TO_IGNORE="${1}" - else - GTM_LEAKS_SYMBOLS_TO_IGNORE="${GTM_LEAKS_SYMBOLS_TO_IGNORE}, ${1}" - fi -} - -AppendToLeakTestArchs() { - if [ "${LEAK_TEST_ARCHS}" = "" ]; then - LEAK_TEST_ARCHS="${1}" - else - LEAK_TEST_ARCHS="${LEAK_TEST_ARCHS} ${1}" - fi -} - -AppendToNoLeakTestArchs() { - if [ "${NO_LEAK_TEST_ARCHS}" = "" ]; then - NO_LEAK_TEST_ARCHS="${1}" - else - NO_LEAK_TEST_ARCHS="${NO_LEAK_TEST_ARCHS} ${1}" - fi -} - -UpdateArchitecturesToTest() { - case "${NATIVE_ARCH_ACTUAL}" in - ppc) - if [ "${1}" = "ppc" ]; then - AppendToLeakTestArchs "${1}" - fi - ;; - - ppc64) - if [ "${1}" = "ppc" -o "${1}" = "ppc64" ]; then - AppendToLeakTestArchs "${1}" - fi - ;; - - i386) - if [ "${1}" = "i386" ]; then - AppendToLeakTestArchs "${1}" - elif [ "${1}" = "ppc" ]; then - AppendToNoLeakTestArchs "${1}" - fi - ;; - - x86_64) - if [ "${1}" = "i386" -o "${1}" = "x86_64" ]; then - AppendToLeakTestArchs "${1}" - elif [ "${1}" = "ppc" -o "${1}" = "ppc64" ]; then - AppendToNoLeakTestArchs "${1}" - fi - ;; - - *) - echo "RunMacOSUnitTests.sh Unknown native architecture: ${NATIVE_ARCH_ACTUAL}" - exit 1 - ;; - esac -} - -RunTests() { - if [ "${CURRENT_ARCH}" = "" ]; then - CURRENT_ARCH=`arch` - fi - - if [ "${ONLY_ACTIVE_ARCH}" = "YES" ]; then - ARCHS="${CURRENT_ARCH}" - fi - - if [ "${ARCHS}" = "" ]; then - ARCHS=`arch` - fi - - if [ "${VALID_ARCHS}" = "" ]; then - VALID_ARCHS=`arch` - fi - - if [ "${NATIVE_ARCH_ACTUAL}" = "" ]; then - NATIVE_ARCH_ACTUAL=`arch` - fi - - LEAK_TEST_ARCHS="" - NO_LEAK_TEST_ARCHS="" - - for TEST_ARCH in ${ARCHS}; do - for TEST_VALID_ARCH in ${VALID_ARCHS}; do - if [ "${TEST_VALID_ARCH}" = "${TEST_ARCH}" ]; then - UpdateArchitecturesToTest "${TEST_ARCH}" - fi - done - done - - # These are symbols that leak on OS 10.5.5 - # radar 6247293 NSCollatorElement leaks in +initialize. - AppendToSymbolsLeaksShouldIgnore "+[NSCollatorElement initialize]" - # radar 6247911 The first call to udat_open leaks only on x86_64 - AppendToSymbolsLeaksShouldIgnore "icu::TimeZone::initDefault()" - # radar 6263983 +[IMService allServices] leaks - AppendToSymbolsLeaksShouldIgnore "-[IMServiceAgentImpl allServices]" - # radar 6264034 +[IKSFEffectDescription initialize] Leaks - AppendToSymbolsLeaksShouldIgnore "+[IKSFEffectDescription initialize]" - - # Running leaks on architectures that support leaks. - export MallocStackLogging=YES - export GTM_LEAKS_SYMBOLS_TO_IGNORE="${GTM_LEAKS_SYMBOLS_TO_IGNORE}" - ARCHS="${LEAK_TEST_ARCHS}" - VALID_ARCHS="${LEAK_TEST_ARCHS}" - "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" - - # Running leaks on architectures that don't support leaks. - unset MallocStackLogging - unset GTM_ENABLE_LEAKS - ARCHS="${NO_LEAK_TEST_ARCHS}" - VALID_ARCHS="${NO_LEAK_TEST_ARCHS}" - "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" -} - -# Jack up some memory stress so we can catch more bugs. -export MallocScribble=YES -export MallocPreScribble=YES -export MallocGuardEdges=YES -export NSAutoreleaseFreedObjectCheckEnabled=YES -export OBJC_DEBUG_FRAGILE_SUPERCLASSES=YES - -if [ ! $GTM_DISABLE_ZOMBIES ]; then - GTMXcodeNote ${LINENO} "Enabling zombies" - # CFZombieLevel disabled because it doesn't play well with the - # security framework - # export CFZombieLevel=3 - export NSZombieEnabled=YES -fi - -if [ $GTM_REMOVE_GCOV_DATA ]; then - if [ "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" != "-" ]; then - if [ -d "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" ]; then - GTMXcodeNote ${LINENO} "Removing any .gcda files" - (cd "${OBJECT_FILE_DIR}-${CURRENT_VARIANT}" && \ - find . -type f -name "*.gcda" -print0 | xargs -0 rm -f ) - fi - fi -fi - -# If leaks testing is enabled, we have to go through our convoluted path -# to handle architectures that don't allow us to do leak testing. -if [ $GTM_ENABLE_LEAKS ]; then - RunTests -else - "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" -fi diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState deleted file mode 100644 index 87ae9e57..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState +++ /dev/null @@ -1,33 +0,0 @@ - - - - - $GTMArchive - GTMUnitTestingArchive - $GTMVersion - 1 - LayerIsDoublesided - - LayerIsHidden - - LayerIsOpaque - - LayerOpacity - 1 - ViewIsHidden - - ViewSubView 0 - - LayerIsDoublesided - - LayerIsHidden - - LayerIsOpaque - - LayerOpacity - 1 - ViewIsHidden - - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.png b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUIViewUnitTestingTest.png deleted file mode 100644 index 03fd9f029838d7eb35344dbc56aa814187bf2666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3214 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 T_{IqLp8>M9aXj8VZuwOos?oSF|}rI@c-E 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𝔢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 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState deleted file mode 100644 index 969ddf6b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState +++ /dev/null @@ -1,30 +0,0 @@ - - - - - $GTMArchive - GTMUnitTestingArchive - $GTMVersion - 1 - BoolTest - - BytesTest - - Qnl0ZXNUZXN0 - - DoubleTest - 1 - FloatTest - 1 - ImageName - NSApplicationIcon - ImageSize - {128, 128} - Int32Test - 1 - Int64Test - 1 - IntTest - 1 - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.tiff b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingImage.tiff deleted file mode 100644 index 4d082972a6210b808e401b83e582bf8f6efda2ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67190 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 - - - - $GTMArchive - GTMUnitTestingArchive - $GTMVersion - 1 - ApplicationMainWindow - 0 - BoolTest - - BytesTest - - Qnl0ZXNUZXN0 - - DoubleTest - 1 - FloatTest - 1 - Int32Test - 1 - Int64Test - 1 - IntTest - 1 - MenuBar - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - About NewApplication - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 10 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - q - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Quit NewApplication - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - , - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Preferences… - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 4 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuTitle - Services - - MenuItemTag - 0 - MenuItemTitle - Services - - MenuItem 5 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 6 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - h - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Hide NewApplication - - MenuItem 7 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - h - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Hide Others - - MenuItem 8 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Show All - - MenuItem 9 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - - MenuItemTag - 0 - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - n - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - New - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - o - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Open… - - MenuItem 10 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - P - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Page Setup... - MenuItemTooltip - - - MenuItem 11 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - p - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Print… - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Clear Menu - - MenuTitle - Open Recent - - MenuItemTag - 0 - MenuItemTitle - Open Recent - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 4 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - w - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Close - - MenuItem 5 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - w - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Close All - - MenuItem 6 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - s - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Save - - MenuItem 7 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - S - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Save As… - - MenuItem 8 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Revert to Saved - - MenuItem 9 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuTitle - File - - MenuItemTag - 0 - MenuItemTitle - File - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - z - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Undo - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - Z - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Redo - - MenuItem 10 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - : - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Show Spelling… - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - ; - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Check Spelling - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Check Spelling While Typing - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Check Grammar With Spelling - - MenuTitle - Spelling and Grammar - - MenuItemTag - 0 - MenuItemTitle - Spelling and Grammar - - MenuItem 11 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 1 - MenuItemTitle - Smart Copy/Paste - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 2 - MenuItemTitle - Smart Quotes - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 3 - MenuItemTitle - Smart Links - - MenuTitle - Substitutions - - MenuItemTag - 0 - MenuItemTitle - Substitutions - - MenuItem 12 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Start Speaking - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Stop Speaking - - MenuTitle - Speech - - MenuItemTag - 0 - MenuItemTitle - Speech - - MenuItem 13 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 14 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Special Characters… - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - x - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Cut - - MenuItem 4 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - c - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Copy - - MenuItem 5 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - v - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Paste - - MenuItem 6 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Delete - - MenuItem 7 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - a - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Select All - - MenuItem 8 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - - - MenuItem 9 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - f - MenuItemState - 0 - MenuItemTag - 1 - MenuItemTitle - Find… - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - g - MenuItemState - 0 - MenuItemTag - 2 - MenuItemTitle - Find Next - - MenuItem 2 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - G - MenuItemState - 0 - MenuItemTag - 3 - MenuItemTitle - Find Previous - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - e - MenuItemState - 0 - MenuItemTag - 7 - MenuItemTitle - Use Selection for Find - - MenuItem 4 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - j - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Jump to Selection - - MenuTitle - Find - - MenuItemTag - 0 - MenuItemTitle - Find - - MenuTitle - Edit - - MenuItemTag - 0 - MenuItemTitle - Edit - - MenuItem 3 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - t - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Show Fonts - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - C - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Show Colors - - MenuTitle - Format - - MenuItemTag - 0 - MenuItemTitle - Format - - MenuItem 4 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - t - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Show Toolbar - - MenuItem 1 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - Customize Toolbar… - - MenuTitle - View - - MenuItemTag - 0 - MenuItemTitle - View - - MenuItem 5 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - - MenuItemState - 0 - MenuItemSubmenu - - MenuItem 0 - - MenuItemIndentationLevel - 0 - MenuItemIsAlternate - - MenuItemIsEnabled - - MenuItemIsSeparator - - MenuItemKeyEquivalent - ? - MenuItemState - 0 - MenuItemTag - 0 - MenuItemTitle - NewApplication Help - - MenuTitle - Help - - MenuItemTag - 0 - MenuItemTitle - Help - - MenuTitle - AMainMenu - - Window 0 - - WindowContent - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSTableView - ViewIsHidden - - - - ViewSubView 1 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 2 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 3 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 4 - - ViewIsHidden - - - - ViewSubView 1 - - ViewIsHidden - - - ViewSubView 10 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 1 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 2 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - - ViewSubView 11 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 2 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - HaHa - CellValue - HaHa - - ControlTag - 0 - ControlType - NSTextField - ControlValue - HaHa - ViewIsHidden - - - ViewSubView 3 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - Still Haven't Found What I'm Searching For - CellValue - Still Haven't Found What I'm Searching For - - ControlTag - 0 - ControlType - NSSearchField - ControlValue - Still Haven't Found What I'm Searching For - ViewIsHidden - - - ViewSubView 4 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - Once upon a time - CellValue - Once upon a time - - ControlTag - 0 - ControlType - NSTextField - ControlValue - Once upon a time - ViewIsHidden - - - ViewSubView 5 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - CheckMate! - CellValue - 1 - - ControlTag - 0 - ControlType - NSButton - ControlValue - 1 - ViewIsHidden - - - ViewSubView 6 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - - CellValue - 50 - - ControlTag - 0 - ControlType - NSSlider - ControlValue - 50 - ViewIsHidden - - - ViewSubView 7 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - Cancel - CellValue - 0 - - ControlTag - 0 - ControlType - NSButton - ControlValue - 0 - ViewIsHidden - - - ViewSubView 8 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSColorWell - ViewIsHidden - - - ViewSubView 9 - - ViewIsHidden - - - - WindowIsMain - - WindowIsVisible - - WindowTitle - Window - - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingView.tiff b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingView.tiff deleted file mode 100644 index 228df732b8f945647fe366b8f03107860b828ff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161670 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 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.10.6.0.tiff b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.10.6.0.tiff deleted file mode 100644 index 60c362af8d49075991528128fff4dd16d65fb138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21380 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 z 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 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState deleted file mode 100644 index 27dd08e7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState +++ /dev/null @@ -1,291 +0,0 @@ - - - - - $GTMArchive - GTMUnitTestingArchive - $GTMVersion - 1 - WindowContent - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSTableView - ViewIsHidden - - - - ViewSubView 1 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 2 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 3 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 4 - - ViewIsHidden - - - - ViewSubView 1 - - ViewIsHidden - - - ViewSubView 10 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 1 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - ViewSubView 2 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSScroller - ViewIsHidden - - - - ViewSubView 11 - - ViewIsHidden - - ViewSubView 0 - - ViewIsHidden - - - - ViewSubView 2 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - HaHa - CellValue - HaHa - - ControlTag - 0 - ControlType - NSTextField - ControlValue - HaHa - ViewIsHidden - - - ViewSubView 3 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - Still Haven't Found What I'm Searching For - CellValue - Still Haven't Found What I'm Searching For - - ControlTag - 0 - ControlType - NSSearchField - ControlValue - Still Haven't Found What I'm Searching For - ViewIsHidden - - - ViewSubView 4 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - Once upon a time - CellValue - Once upon a time - - ControlTag - 0 - ControlType - NSTextField - ControlValue - Once upon a time - ViewIsHidden - - - ViewSubView 5 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - CheckMate! - CellValue - 1 - - ControlTag - 0 - ControlType - NSButton - ControlValue - 1 - ViewIsHidden - - - ViewSubView 6 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 1 - CellTag - 0 - CellTitle - - CellValue - 50 - - ControlTag - 0 - ControlType - NSSlider - ControlValue - 50 - ViewIsHidden - - - ViewSubView 7 - - ControlIsEnabled - - ControlSelectedCell - - CellState - 0 - CellTag - 0 - CellTitle - Cancel - CellValue - 0 - - ControlTag - 0 - ControlType - NSButton - ControlValue - 0 - ViewIsHidden - - - ViewSubView 8 - - ControlIsEnabled - - ControlTag - 0 - ControlType - NSColorWell - ViewIsHidden - - - ViewSubView 9 - - ViewIsHidden - - - - WindowIsMain - - WindowIsVisible - - WindowTitle - Window - - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.tiff b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/UnitTesting/TestData/GTMUnitTestingWindow.tiff deleted file mode 100644 index 63f5649261adba8a34af32f9063d881d9bd1659e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21226 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 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugLeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugLeopardOrLater.xcconfig deleted file mode 100644 index b00a6cc5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugLeopardOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// DebugLeopardOrLater.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// on Leopard or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// Leopard or later -#include "../subconfig/LeopardOrLater.xcconfig" - -// Debug settings -#include "../subconfig/Debug.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugSnowLeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugSnowLeopardOrLater.xcconfig deleted file mode 100644 index a0904125..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugSnowLeopardOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// DebugSnowLeopardOrLater.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// on SnowLeopard or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// SnowLeopard or later -#include "../subconfig/SnowLeopardOrLater.xcconfig" - -// Debug settings -#include "../subconfig/Debug.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugTigerOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugTigerOrLater.xcconfig deleted file mode 100644 index 34b7b1c8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugTigerOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// DebugTigerOrLater.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// on Tiger or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// Tiger or later -#include "../subconfig/TigerOrLater.xcconfig" - -// Debug settings -#include "../subconfig/Debug.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone.xcconfig deleted file mode 100644 index 6067fffe..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone.xcconfig +++ /dev/null @@ -1,26 +0,0 @@ -// -// DebugiPhone.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// for iPhone. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This file is deprecated, please use the version specific one instead. -// - -#include "DebugiPhone20.xcconfig" - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone20.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone20.xcconfig deleted file mode 100644 index 7424704e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone20.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// DebugiPhone20.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// for iPhone OS 2.0. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// iPhone settings -#include "../subconfig/iPhone20.xcconfig" - -// Release settings -#include "../subconfig/Debug.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone21.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone21.xcconfig deleted file mode 100644 index 18c923ad..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/DebugiPhone21.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// DebugiPhone21.xcconfig -// -// Xcode configuration file for building a Debug configuration of a project -// for iPhone OS 2.1. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// iPhone settings -#include "../subconfig/iPhone21.xcconfig" - -// Release settings -#include "../subconfig/Debug.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseLeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseLeopardOrLater.xcconfig deleted file mode 100644 index 31ac835d..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseLeopardOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseLeopardOrLater.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// on Leopard or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// Leopard or later -#include "../subconfig/LeopardOrLater.xcconfig" - -// Release settings -#include "../subconfig/Release.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseSnowLeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseSnowLeopardOrLater.xcconfig deleted file mode 100644 index 0d240698..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseSnowLeopardOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseSnowLeopardOrLater.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// on SnowLeopard or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// SnowLeopard or later -#include "../subconfig/SnowLeopardOrLater.xcconfig" - -// Release settings -#include "../subconfig/Release.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseTigerOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseTigerOrLater.xcconfig deleted file mode 100644 index 93019129..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseTigerOrLater.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseTigerOrLater.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// on Tiger or later. -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// Tiger or later -#include "../subconfig/TigerOrLater.xcconfig" - -// Release settings -#include "../subconfig/Release.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone.xcconfig deleted file mode 100644 index 49c11414..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone.xcconfig +++ /dev/null @@ -1,26 +0,0 @@ -// -// ReleaseiPhone.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// for iPhone. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This file is deprecated, please use the version specific one instead. -// - -#include "ReleaseiPhone20.xcconfig" - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone20.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone20.xcconfig deleted file mode 100644 index 8d31ead0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone20.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseiPhone20.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// for iPhone OS 2.0. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// iPhone Settings. -#include "../subconfig/iPhone20.xcconfig" - -// Release settings -#include "../subconfig/Release.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone21.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone21.xcconfig deleted file mode 100644 index 8a9a0c3e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Project/ReleaseiPhone21.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseiPhone21.xcconfig -// -// Xcode configuration file for building a Release configuration of a project -// for iPhone OS 2.1. -// -// Copyright 2008 Google Inc. -// -// 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. - -// -// This is a _Configuration_ Xcode config file for use in the "Based on" popup -// of the project configuration editor. Do _not_ use this as the config base -// and individual Xcode target, there are other configuration files for that -// purpose. - -// Pull in the general settings -#include "../subconfig/General.xcconfig" - -// iPhone Settings. -#include "../subconfig/iPhone21.xcconfig" - -// Release settings -#include "../subconfig/Release.xcconfig" - -// Merge settings -#include "../subconfig/GTMMerge.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/DebugUnittest.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/DebugUnittest.xcconfig deleted file mode 100644 index 3f4d342f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/DebugUnittest.xcconfig +++ /dev/null @@ -1,29 +0,0 @@ -// -// DebugUnittest.xcconfig -// -// Xcode configuration file for a debug unittest target. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Unittests are loadable bundles -#include "../subconfig/Unittest.xcconfig" - -// See comments in ReleaseUnittest.xcconfig regarding BUNDLE_LOADER and -// how it should be set if you are running into link errors. \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundle.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundle.xcconfig deleted file mode 100644 index 8b824d7c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundle.xcconfig +++ /dev/null @@ -1,30 +0,0 @@ -// -// LoadableBundle.xcconfig -// -// Xcode configuration file for a loadable bundle target. Usually a Cocoa -// plugin or similar. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Bundles should not have their external symbols stripped. -STRIP_STYLE = non-global - -// Bundles need to be position independent -GCC_DYNAMIC_NO_PIC = NO diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundleGCSupported.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundleGCSupported.xcconfig deleted file mode 100644 index aa8d5a7f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/LoadableBundleGCSupported.xcconfig +++ /dev/null @@ -1,30 +0,0 @@ -// -// LoadableBundleGCSupported.xcconfig -// -// Xcode configuration file for a loadable bundle target that supports garbage -// collection. Usually a Cocoa plugin or similar. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Include the basic Loadable Bundle config -#include "LoadableBundle.xcconfig" - -// Include the GC flag(s) -#include "../subconfig/GCSupported.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/ReleaseUnittest.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/ReleaseUnittest.xcconfig deleted file mode 100644 index f9a85d35..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/ReleaseUnittest.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -// -// ReleaseUnittest.xcconfig -// -// Xcode configuration file for a release unittest target. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Unittests are loadable bundles -#include "../subconfig/Unittest.xcconfig" - -// When running OCUnit tests in Release mode the unittests BUNDLE_LOADER -// is probably stripped (or at least it will be if they are using our -// config files). In that case the Unittest will fail to link because -// the symbols have been removed from the bundle's loader's symbol table. -// This flag tells the unittest to trust that the values will be available -// at runtime (or error out) and not to force an error at link time. -// Do NOT set BUNDLE_LOADER (Bundle Loader) setting in a release unittest target -// because you will run into interesting link issues -// "indirect symbol table entry n past the end of the symbol table" -OTHER_LDFLAGS = $(OTHER_LDFLAGS) -undefined dynamic_lookup diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibrary.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibrary.xcconfig deleted file mode 100644 index 7c37d50b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibrary.xcconfig +++ /dev/null @@ -1,29 +0,0 @@ -// -// SharedLibrary.xcconfig -// -// Xcode configuration file for a shared library target. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Dynamic libs need to be position independent -GCC_DYNAMIC_NO_PIC = NO - -// Dynamic libs should not have their external symbols stripped. -STRIP_STYLE = non-global \ No newline at end of file diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibraryGCSupported.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibraryGCSupported.xcconfig deleted file mode 100644 index 74ab9076..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/SharedLibraryGCSupported.xcconfig +++ /dev/null @@ -1,30 +0,0 @@ -// -// SharedLibraryGCSupported.xcconfig -// -// Xcode configuration file for a shared library target that support garbage -// collection. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Include the basic Shared Library config -#include "SharedLibrary.xcconfig" - -// Include the GC flag(s) -#include "../subconfig/GCSupported.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibrary.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibrary.xcconfig deleted file mode 100644 index df1016be..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibrary.xcconfig +++ /dev/null @@ -1,30 +0,0 @@ -// -// StaticLibrary.xcconfig -// -// Xcode configuration file for a static library target. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Static libs can be included in bundles so make them position independent -GCC_DYNAMIC_NO_PIC = NO - -// Static libs should not have their internal globals or external symbols -// stripped. -STRIP_STYLE = debugging diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibraryGCSupported.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibraryGCSupported.xcconfig deleted file mode 100644 index 07ea1d51..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/Target/StaticLibraryGCSupported.xcconfig +++ /dev/null @@ -1,30 +0,0 @@ -// -// StaticLibraryGCSupported.xcconfig -// -// Xcode configuration file for a static library target that supports garbage -// collection. -// -// This is a _Target_ config file, for use in the "Based on" popup of the -// settings dialog for a target. Do not attempt to apply this as the base -// of an Xcode configuration in the project settings dialog. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Include the basic Static Library config -#include "StaticLibrary.xcconfig" - -// Include the GC flag(s) -#include "../subconfig/GCSupported.xcconfig" diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverage.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverage.xcconfig deleted file mode 100644 index 438d5c6a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverage.xcconfig +++ /dev/null @@ -1,25 +0,0 @@ -// -// CodeCoverage.xcconfig -// -// Xcode configuration file for building executables that need code coverage. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Static Code Coverage -#include "CodeCoverageStatic.xcconfig" - -// Need gcov library -OTHER_LDFLAGS = ${OTHER_LDFLAGS} -lgcov diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverageStatic.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverageStatic.xcconfig deleted file mode 100644 index f6cca92e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/CodeCoverageStatic.xcconfig +++ /dev/null @@ -1,24 +0,0 @@ -// -// CodeCoverageStatic.xcconfig -// -// Xcode configuration file for building static libs that need code coverage. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - - -// For measuring code coverage -GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES -GCC_GENERATE_TEST_COVERAGE_FILES = YES diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Debug.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Debug.xcconfig deleted file mode 100644 index 7d54d612..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Debug.xcconfig +++ /dev/null @@ -1,47 +0,0 @@ -// -// Debug.xcconfig -// -// General Xcode configuration file for Debug targets. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// No optimization -GCC_OPTIMIZATION_LEVEL = 0 - -// Deployment postprocessing is what triggers Xcode to strip, turn it off -DEPLOYMENT_POSTPROCESSING = NO - -// Dead code stripping off -DEAD_CODE_STRIPPING = NO - -// Debug symbols should be on obviously -GCC_GENERATE_DEBUGGING_SYMBOLS = YES - -// Turn off warnings about uninitialized autos -// can only be done when GCC_OPTIMIZATION_LEVEL is actually optimizing -GCC_WARN_UNINITIALIZED_AUTOS = NO - -// Turns on special C++ STL checks to "encourage" good STL use -GTM_CONFIGURATION_GCC_PREPROCESSOR_DEFINITIONS = _GLIBCXX_DEBUG_PEDANTIC _GLIBCXX_DEBUG _GLIBCPP_CONCEPT_CHECKS DEBUG=1 - -// Turns on stack protection on debug builds for Leopard and above -GTM_CONFIGURATION_OTHER_CFLAGS = -fstack-protector -fstack-protector-all -// Stack protection doesn't exist on Tiger -GTM_CONFIGURATION_OTHER_CFLAGS[sdk=macosx10.4*] = - -// And is really broken on the iPhone Device. Works on simulator though. -// rdar://639430 Xcode generates bad Arm code if -fstack-protector -fstack-protector-all -GTM_CONFIGURATION_OTHER_CFLAGS[sdk=iphoneos*] = diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GCSupported.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GCSupported.xcconfig deleted file mode 100644 index 74bd027a..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GCSupported.xcconfig +++ /dev/null @@ -1,23 +0,0 @@ -// -// GCSupported.xcconfig -// -// Xcode configuration file for making a build Garbage Collection enabled. -// Use the *GCSupported specific configs in the Target folder. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// enable garbage collection (but don't require it) -GCC_ENABLE_OBJC_GC = supported diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GTMMerge.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GTMMerge.xcconfig deleted file mode 100644 index 5ab141e5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/GTMMerge.xcconfig +++ /dev/null @@ -1,42 +0,0 @@ -// -// GTMMerge.xcconfig -// -// Xcode configuration file that merges other xcconfig settings. -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// Xcode doesn't allow you to "inherit" settings with includes so you always -// end up overriding settings accidentally. To avoid this, we instead -// allow you to define settings at different levels -// (GENERAL, PLATFORM (iPhone/Mac), CONFIGURATION (Release/Debug) and we merge -// those together here. -// We DO NOT inherit OTHER_CPLUSPLUSFLAGS because OTHER_CPLUSPLUSFLAGS by default -// takes on OTHER_CFLAGS settings, and we don't want those applied to our -// C++ files. OTHER_CFLAGS is the only way to set C specific settings on our -// C files that we don't want to have applied to our C++ files such as -// -Wold-style-definition -// If you would like to add your own custom settings to the base GTM ones -// please use the GTM_HOST_* settings. These are left empty by GTM and are -// for the host app to fill in. For example if you wanted to have stack -// protection turned on for both debug and release builds you could set -// GTM_HOST_OTHER_CFLAGS = -fstack-protector -fstack-protector-all -// in your own settings files, and then include the QSB ones. - -WARNING_CFLAGS = $(inherited) $(GTM_GENERAL_WARNING_CFLAGS) $(GTM_PLATFORM_WARNING_CFLAGS) $(GTM_CONFIGURATION_WARNING_CFLAGS) $(GTM_HOST_WARNING_CFLAGS) -OTHER_CFLAGS = $(inherited) $(GTM_GENERAL_OTHER_CFLAGS) $(GTM_PLATFORM_OTHER_CFLAGS) $(GTM_CONFIGURATION_OTHER_CFLAGS) $(GTM_HOST_OTHER_CFLAGS) -OTHER_CPLUSPLUSFLAGS = $(GTM_GENERAL_OTHER_CPLUSPLUSFLAGS) $(GTM_PLATFORM_OTHER_CPLUSPLUSFLAGS) $(GTM_CONFIGURATION_OTHER_CPLUSPLUSFLAGS) $(GTM_HOST_OTHER_CPLUSPLUSFLAGS) -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GTM_GENERAL_GCC_PREPROCESSOR_DEFINITIONS) $(GTM_PLATFORM_GCC_PREPROCESSOR_DEFINITIONS) $(GTM_CONFIGURATION_GCC_PREPROCESSOR_DEFINITIONS) $(GTM_HOST_GCC_PREPROCESSOR_DEFINITIONS) -OTHER_LDFLAGS = $(inherited) $(GTM_GENERAL_OTHER_LDFLAGS) $(GTM_PLATFORM_OTHER_LDFLAGS) $(GTM_CONFIGURATION_OTHER_LDFLAGS) $(GTM_HOST_OTHER_LDFLAGS) diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/General.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/General.xcconfig deleted file mode 100644 index dc3e64f5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/General.xcconfig +++ /dev/null @@ -1,172 +0,0 @@ -// -// General.xcconfig -// -// Xcode configuration file for general build settings applicable to all -// projects and targets. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// NOTE: as of Xcode 3.1, for iPhone development, the two SDKs you can match are: -// SDK_NAME iphoneos2.0 -// SDK_NAME iphoneos2.1 -// SDK_NAME iphonesimulator2.0 -// SDK_NAME iphonesimulator2.1 -// for Mac OS developement, the values are: -// SDK_NAME macosx10.4 -// SDK_NAME macosx10.5 -// SDK_NAME macosx10.6 - -// Build for PPC and Intel (Leopard/SnowLeopard gets 64 bit also) -// Note that you can't build 10.5 with using SenTestingKit on ppc64 with -// SnowLeopard XCode because it doesn't ship with a ppc64 version of -// SenTestingKit. For this reason we are NOT building/testing GTM -// with ppc64 at this time. We override the 10.5 setting in the project -// file to turn it off. -ARCHS[sdk=macosx10.4*] = i386 ppc -ARCHS[sdk=macosx10.5*] = i386 x86_64 ppc ppc64 -ARCHS[sdk=macosx10.6*] = i386 x86_64 ppc - -// Build for arm for iPhone or Intel for the iPhone Simulator -ARCHS[sdk=iphoneos*] = armv6 -ARCHS[sdk=iphonesimulator*] = i386 - -// Build only the active architecture on iphone device targets -ONLY_ACTIVE_ARCH[sdk=iphoneos*] = YES - -// iPhone currently deploys on 10.5 only -MACOSX_DEPLOYMENT_TARGET[sdk=iphone*] = 10.5 - -// We want our pngs compressed when they are copied -COMPRESS_PNG_FILES = YES - -// Zerolink prevents link warnings so turn it off -ZERO_LINK = NO - -// Prebinding considered unhelpful in 10.3 and later -PREBINDING = NO - -// Work around Xcode bugs by using external strip. See: -// http://lists.apple.com/archives/Xcode-users/2006/Feb/msg00050.html -SEPARATE_STRIP = YES - -// Force C99 dialect -GCC_C_LANGUAGE_STANDARD = c99 - -// Obj-C exceptions are needed for @synchronized(self) -GCC_ENABLE_OBJC_EXCEPTIONS = YES - -// not sure why apple defaults this on, but it's pretty risky -ALWAYS_SEARCH_USER_PATHS = NO - -// Turn on position dependent code for most cases (overridden where appropriate) -GCC_DYNAMIC_NO_PIC = YES - -// For ObjC++ we want C++ cdtors called -GCC_OBJC_CALL_CXX_CDTORS = YES - -// Use Obj-C fast dispatch -GCC_FAST_OBJC_DISPATCH = YES - -// Warn on implicit data conversions in 64bit builds -GCC_WARN_64_TO_32_BIT_CONVERSION[arch=*64*] = YES - -// Strictest warning policy that we can do -// Options intentionally turned off -// http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html -// -Wsystem-headers - since we can't fix them we are going to assume they're ok -// -Wtraditional - we are compiling with c99, so we don't care about trad -// -Wdeclaration-after-statement - we are compiling with c99 which allows this -// -Wpadded - lots of structures will get padded, so although this warning may -// be useful to show us badly padded structures, it causes to many -// warnings to be on generally. -// -Wunreachable-code - several macros use the do {} while (0) which always -// flags this. e.g. all the ST... macros for unittesting -// -Wredundant-decls - we sometimes use redundant decls to add an attribute -// to a function/method (i.e. -// -Waggregate-return - NSPoint, NSRect etc are often returned as aggregates -// -Wshorten-64-to-32 - this is defined in the 64 bit build settings -// -Wcast-qual - Would love to turn this on, but causes issues when converting -// CFTypes to NSTypes and also has issues with some external -// libraries (notably zlib) -// -Wundef - we conditionalize on TARGET_OS_IPHONE which is only defined -// in the iPhoneSDK making us unable to turn this warning on. -// -Wstrict-prototypes - breaks the GTM_METHOD_CHECK macro -// -Wcast-align - causes a whole pile of problems buildng with iPhoneSDK - -// Objective C warnings -// http://gcc.gnu.org/onlinedocs/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html -// -Wassign-intercept - this really is more informational than a warning. -// -Wselector - the system headers define lots of methods with the same selector -// rendering this mostly useless to us -// -Wstrict-selector-match - the system headers define lots of methods with the -// same selector rendering this mostly useless to us -// Not being used currently because of Radar 5978978 -// GTM_GENERAL_WARNING_OBJC_ONLY_FLAGS=-Wundeclared-selector - -// C Only Warnings -GTM_GENERAL_OTHER_CFLAGS = -Wdiv-by-zero -Wbad-function-cast -Wnested-externs -Wold-style-definition - -// C++ Only Warnings -GTM_GENERAL_OTHER_CPLUSPLUSFLAGS = -Wabi -Wctor-dtor-privacy -Wstrict-null-sentinel -Wsign-promo -GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES -GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES -GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES -GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES - -// General C/C++/ObjC/ObjC++ warnings -// These are generally ordered in easiest to hardest to support. -// If you are transitioning, you can turn on the levels one level at a time -// in your project file by editing GTM_GENERAL_WARNING_CFLAGS and only -// including the warning levels that you currently are compiling against. -// GTM should always compile with full warnings. -GTM_GENERAL_WARNING_CFLAGS1 = -Wall -Wendif-labels -Winvalid-pch -Wformat=2 -Wmissing-format-attribute -Wwrite-strings -Wstack-protector -Wstrict-aliasing=2 -GTM_GENERAL_WARNING_CFLAGS2 = -Wpacked -Wmissing-field-initializers -GTM_EXTRA_WARNING_OVERRIDE_CFLAGS = -Wno-unused-parameter -Wno-sign-compare -GTM_GENERAL_WARNING_CFLAGS3 = -Wextra $(GTM_EXTRA_WARNING_OVERRIDE_CFLAGS) -Wpointer-arith -Wdisabled-optimization -Wfloat-equal -GTM_GENERAL_WARNING_CFLAGS = $(GTM_GENERAL_WARNING_CFLAGS1) $(GTM_GENERAL_WARNING_CFLAGS2) $(GTM_GENERAL_WARNING_CFLAGS3) - -// GCC_WARN_UNINITIALIZED_AUTOS is defined in the release/debug xcconfigs. -GCC_WARN_CHECK_SWITCH_STATEMENTS = YES -GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES -GCC_WARN_ABOUT_MISSING_NEWLINE = YES -GCC_TREAT_WARNINGS_AS_ERRORS = YES -GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES -GCC_WARN_ABOUT_RETURN_TYPE = YES -GCC_WARN_MISSING_PARENTHESES = YES -GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES -GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES -GCC_WARN_UNKNOWN_PRAGMAS = YES -GCC_WARN_UNUSED_LABEL = YES -GCC_WARN_UNUSED_FUNCTION = YES -GCC_WARN_UNUSED_VALUE = YES -GCC_WARN_UNUSED_VARIABLE = YES -GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES -// We don't turn on shadow and sign comparisons because too many 3rd party -// libaries don't compile with them turned on (sign compare rarely catches -// errors, but shadow is very useful). -// NOTE: sign compare is also controlled by -Wextra, we we override it above. -// GCC_WARN_SHADOW = YES -// GCC_WARN_SIGN_COMPARE = YES - -GCC_WARN_PEDANTIC = NO -GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO -GCC_WARN_PROTOTYPE_CONVERSION = NO -GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO -GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO -GCC_WARN_UNUSED_PARAMETER = NO -// Use of Gestalt requires 4 char constants (amongst other things) -GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/LeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/LeopardOrLater.xcconfig deleted file mode 100644 index c0f75bc8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/LeopardOrLater.xcconfig +++ /dev/null @@ -1,25 +0,0 @@ -// -// LeopardOrLater.xcconfig -// -// Xcode configuration file for projects targeting 10.5 Leopard or later. These -// settings produce a Universal binary compatible with 10.5 for PPC and Intel. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Default SDK and minimum OS version is 10.5 -SDKROOT = ${DEVELOPER_SDK_DIR}/MacOSX10.5.sdk -MACOSX_DEPLOYMENT_TARGET = 10.5 -GCC_VERSION = 4.0 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Release.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Release.xcconfig deleted file mode 100644 index 4c5ad8ac..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Release.xcconfig +++ /dev/null @@ -1,45 +0,0 @@ -// -// Release.xcconfig -// -// General Xcode configuration file for Release targets. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Optimize for space and size (Apple recommendation) -GCC_OPTIMIZATION_LEVEL = s - -// Deploment postprocessing is what triggers Xcode to strip -DEPLOYMENT_POSTPROCESSING = YES - -// No symbols -GCC_GENERATE_DEBUGGING_SYMBOLS = NO - -// Dead code strip does not affect ObjC code but can help for C -DEAD_CODE_STRIPPING = YES - -// ASSERT going away in release tends to create unused vars. -// init-self can only be turned on when optimizations are on -GTM_CONFIGURATION_WARNING_CFLAGS = -Wno-unused-variable -Winit-self -Wno-extra - -// NDEBUG is used by things like assert.h, so define it for general compat. -GTM_CONFIGURATION_GCC_PREPROCESSOR_DEFINITIONS = NDEBUG=1 - -// Give us warnings about uninitialized autos -// can only be done when GCC_OPTIMIZATION_LEVEL is actually optimizing -GCC_WARN_UNINITIALIZED_AUTOS = YES - -// When we strip we want to strip all symbols in release, but save externals. -STRIP_STYLE = all diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/SnowLeopardOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/SnowLeopardOrLater.xcconfig deleted file mode 100644 index 0a7475e9..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/SnowLeopardOrLater.xcconfig +++ /dev/null @@ -1,26 +0,0 @@ -// -// SnowLeopardOrLater.xcconfig -// -// Xcode configuration file for projects targeting 10.6 SnowLeopard or later. -// These settings produce a Universal binary compatible with 10.6 for -// PPC and Intel. -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// Default SDK and minimum OS version is 10.6 -SDKROOT = ${DEVELOPER_SDK_DIR}/MacOSX10.6.sdk -MACOSX_DEPLOYMENT_TARGET = 10.6 -GCC_VERSION = 4.0 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/TigerOrLater.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/TigerOrLater.xcconfig deleted file mode 100644 index bc0f8f45..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/TigerOrLater.xcconfig +++ /dev/null @@ -1,25 +0,0 @@ -// -// TigerOrLater.xcconfig -// -// Xcode configuration file for projects targeting 10.4 Tiger or later. These -// settings produce a Universal binary compatible with 10.4 for PPC and Intel. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Default SDK and minimum OS version is 10.4 -SDKROOT = $(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk -MACOSX_DEPLOYMENT_TARGET = 10.4 -GCC_VERSION = 4.0 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Unittest.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Unittest.xcconfig deleted file mode 100644 index 96121eee..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/Unittest.xcconfig +++ /dev/null @@ -1,33 +0,0 @@ -// -// Unittest.xcconfig -// -// Xcode configuration file for a basic unittest targets. Use the debug or -// release build specific configs in the Target folder. -// -// Copyright 2006-2008 Google Inc. -// -// 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. -// - -// Unittests are loadable bundles -#include "../Target/LoadableBundle.xcconfig" - -// Force C99 dialect with GNU extensions (needed for OCUnit) -GCC_C_LANGUAGE_STANDARD = gnu99 - -// Deploment postprocessing is what triggers Xcode to strip, we don't strip -// unittests -DEPLOYMENT_POSTPROCESSING = NO - -// Most common unittests will be objective-c -WRAPPER_EXTENSION = octest diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone20.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone20.xcconfig deleted file mode 100644 index 0f92c95b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone20.xcconfig +++ /dev/null @@ -1,24 +0,0 @@ -// -// iPhone20.xcconfig -// -// Xcode configuration file for building a Debug target on iPhone OS 2.0 -// -// Copyright 2008 Google Inc. -// -// 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. - -// Set default SDK. -SDKROOT = iphoneos2.0 - -// iPhone currently deploys on 10.5 only -MACOSX_DEPLOYMENT_TARGET = 10.5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone21.xcconfig b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone21.xcconfig deleted file mode 100644 index 61c59edb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/subconfig/iPhone21.xcconfig +++ /dev/null @@ -1,24 +0,0 @@ -// -// iPhone21.xcconfig -// -// Xcode configuration file for building a Debug target on iPhone OS 2.1 -// -// Copyright 2008 Google Inc. -// -// 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. - -// Set default SDK. -SDKROOT = iphoneos2.1 - -// iPhone currently deploys on 10.5 only -MACOSX_DEPLOYMENT_TARGET = 10.5 diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/xcconfigs-readme.txt b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/xcconfigs-readme.txt deleted file mode 100644 index 87a6dd7b..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/XcodeConfig/xcconfigs-readme.txt +++ /dev/null @@ -1,53 +0,0 @@ -Xcode Configs are sort of a black art, any time you have a set of rules, you -quickly hit a few exceptions. - -The main goal of using these is as follow: - -Edit your Project level build settings by removing as much as possible, and -then set the per Configuration settings to one of the project xcode config -files w/in the Project subfolder here. This will batch setup the project to -build Debug/Release with a specific SDK. - -If you are building a Shared Library, Loadable Bundle (Framework) or UnitTest -you will need to apply a further Xcode Config file at the target level. You do -this again by clearing most of the settings on the target, and just setting the -build config for that target to be the match from the Target subfolder here. - -To see an example of this, look at CoverStory -(http://code.google.com/p/coverstory) or Vidnik -(http://code.google.com/p/vidnik). - - -The common exception...If you need to have a few targets build w/ different -SDKs, then you hit the most common of the exceptions. For these, you'd need -the top level config not to set some things, the simplest way to do this seems -to be to remove as many of the settings from the project file, and make new -wrapper xcconfig files that inclue both the project level and target level -setting and set them on the targets (yes, this is like the MetroWerks days -where you can quickly explode in a what seems like N^2 (or worse) number of -config files. With a little luck, future versions of Xcode might have some -support to make mixing SDKs easier. - -Remember: When using the configs at any given layer, make sure you set them for -each build configuration you need (not just the active one). - -Many of the build settings are more than just yes/no flags and take -a list of values that you may want to change at different levels. -Xcode doesn't allow you to "inherit" settings with includes so you always -end up overriding settings accidentally. To avoid this, we instead -allow you to define settings at different levels -(GENERAL, PLATFORM (iPhone/Mac), CONFIGURATION (Release/Debug). -We do this by setting a GTM version of the setting (so for OTHER_CFLAGS it's -GTM_XXX_OTHER_CFLAGS where xxx is GENERAL, PLATFORM or CONFIGURATION depending -at what level the flag is set. These are all merged together in the -GTMMerge.xcconfig. Do not modify the base setting (OTHER_CFLAGS) instead modify -the GTM one at the level you want it modified. - -The major place this may affect you is that we have really tightened down on -the warnings. To make it easier for you to move your code onto the new -xcconfig files, we have split the warnings up into three categories, which in -general you can think of as easy, moderate and extreme. If you run into a lot -of warnings when you compile, look at changing the GTM_GENERAL_WARNING_CFLAGS -setting to only include lower levels (eg GTM_GENERAL_WARNING_CFLAGS1) and see -if that makes it easier on you. Look inside General.xcconfig and search for -GTM_GENERAL_WARNING_CFLAGS1 for more info. diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.h b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.h deleted file mode 100644 index 828f05aa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.h +++ /dev/null @@ -1,328 +0,0 @@ -// -// GTMABAddressBook.h -// -// Copyright 2008 Google Inc. -// -// 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. -// - -// These classes wrap up the iPhone AddressBook 'C' API in a manner very -// similar to that found on Mac OS X. They differ only in that none of these -// routines throws, and some of the types are different as necessitated by -// the APIs that they wrap. These wrappers also protect you from a number -// of issues in the AddressBook API (as of iPhone SDK 2.0/2.1) -// -// Note that there is a strings file that you may want to localize -// (GTMABAddressBook.strings). -// -// If things seem strange, it may be due to one of the following radars: -// 6240394 AddressBook framework constants not initialized until -// ABCreateAddressBook called -// -- CLOSED as designed -// 6208390 Integer and real values don't work in ABMultiValueRefs -// (and this isn't part of the title, but dictionaries don't work -// either) -// 6207605 RecordIDs for people and groups are not unique in AddressBook -// -- CLOSED as designed -// 6204021 kABGroupNameProperty and kABPersonFirstNameProperty have the same -// value -// 6203982 ABPersonCopyLocalizedPropertyName returns name for -// kABGroupNameProperty -// 6203961 ABPersonGetTypeOfProperty returns a type for kABGroupNameProperty -// 6203854 ABMultiValues hash to their address -// 6203836 ABRecords hash to their address -// -- CLOSED behaves correctly -// 6203606 Need CFTypeIDs for AddressBook CFTypes -// 6202868 ABPersonSetImageData should validate image data -// 6202860 Passing nil person into ABGroupAddMember crashes -// -- CLOSED behaves correctly -// 6202827 Passing nil info ABMultiValueAddValueAndLabel causes crash -// -- CLOSED behaves correctly -// 6202807 ABMultiValueInsertValueAndLabelAtIndex allows you to insert values -// past end -// 6201276 Removing a NULL record using ABAddressBookRemoveRecord crashes -// -- CLOSED behaves correctly -// 6201258 Adding a NULL record using ABAddressBookAddRecord crashes -// -- CLOSED behaves correctly -// 6201046 ABRecordSetValue returns true even if you pass in a bad type for a -// value -// 6201005 ABRecordRemoveValue returns true for value that aren't in the record -// -- CLOSED behaves correctly -// 6200703 ABAddressBookAddRecord doesn't add an item to the people array until -// it's saved -// 6200638 ABAddressBookHasUnsavedChanges doesn't work - -#import -#import -#import "GTMDefines.h" - -#if !GTM_IPHONE_SDK -#error This file is for iPhone use only use ABAddressBook on Mac OS X -#endif - -@class GTMABPerson; -@class GTMABGroup; -@class GTMABRecord; - -GTM_EXTERN NSString *const kGTMABUnknownPropertyName; - -// Wrapper for an AddressBook on iPhone -@interface GTMABAddressBook : NSObject { - @private - ABAddressBookRef addressBook_; -} - -// Returns a new instance of an address book. -+ (GTMABAddressBook *)addressBook; - -// Return the address book reference -- (ABAddressBookRef)addressBookRef; - -// Saves changes made since the last save -// Return YES if successful (or there was no change) -- (BOOL)save; - -// Saves changes made since the last save -// Return YES if successful (or there was no change) -- (BOOL)saveAndReturnError:(NSError **)error; - -// Returns YES if there are unsaved changes -// The unsaved changes flag is automatically set when changes are made -// As of iPhone 2.1, this does not work, and will always return NO. -// Radar 6200638: ABAddressBookHasUnsavedChanges doesn't work -- (BOOL)hasUnsavedChanges; - -// Reverts any changes that have been made and resets the unsaved flag -// Be sure to read notes for -hasUnsavedChanges and -people and -groups. -- (void)revert; - -// Returns a GTMABPerson matching an ID -// Returns nil if the record could not be found -- (GTMABPerson *)personForId:(ABRecordID)uniqueId; - -// Returns a GTMABGroup matching an ID -// Returns nil if the record could not be found -- (GTMABGroup *)groupForId:(ABRecordID)uniqueId; - -// Adds a record (ABPerson or ABGroup) to the AddressBook database -// Be sure to read notes for -people and -group. -- (BOOL)addRecord:(GTMABRecord *)record; - -// Removes a record (ABPerson or ABGroup) from the AddressBook database -- (BOOL)removeRecord:(GTMABRecord *)record; - -// Returns an array (GTMABPerson) of all the people in the AddressBook database -// As of iPhone 2.1, this array will not contain new entries until you save -// the address book. -// Radar 6200703: ABAddressBookAddRecord doesn't add an item to the people array -// until it's saved -- (NSArray *)people; - -// Returns an array of all the groups (GTMABGroup) in the AddressBook database -// As of iPhone 2.1, this array will not contain new entries until you save -// the address book. -// Radar 6200703: ABAddressBookAddRecord doesn't add an item to the people array -// until it's saved -- (NSArray *)groups; - -// Returns a localized name for a given label -+ (NSString *)localizedLabel:(CFStringRef)label; - -@end - -// Wrapper for a ABRecord on iPhone. -// A abstract class. Instantiate one of the concrete subclasses, GTMABPerson or -// GTMABGroup. -@interface GTMABRecord : NSObject { - @private - ABRecordRef record_; -} - -// Create a record with a recordRef. -// Since GTMABRecord is an abstract base class, attempting to create one -// of these directly will throw an exception. Use with one of the concrete -// subclasses. -+ (id)recordWithRecord:(ABRecordRef)record; - -// Designated initializer -// Since GTMABRecord is an abstract base class, attempting to create one -// of these directly will throw an exception. Use with one of the concrete -// subclasses. -- (id)initWithRecord:(ABRecordRef)record; - -// Return our recordRef -- (ABRecordRef)recordRef; - -// Return the recordID for the record -- (ABRecordID)recordID; - -// Returns the value of a given property. -// The type of the value depends on the property type. -- (id)valueForProperty:(ABPropertyID)property; - -// Set the value of a given property. -// The type of the value must match the property type. -// Returns YES if value set properly -- (BOOL)setValue:(id)value forProperty:(ABPropertyID)property; - -// Removes the value for the property -// Returns yes if value removed -- (BOOL)removeValueForProperty:(ABPropertyID)property; - -// returns a human friendly name for the record -- (NSString *)compositeName; - -// returns the type of a property -+ (ABPropertyType)typeOfProperty:(ABPropertyID)property; - -// returns a human friendly localized name for a property -+ (NSString *)localizedPropertyName:(ABPropertyID)property; -@end - -// Wrapper for an ABPerson on iPhone -@interface GTMABPerson : GTMABRecord - -// Creates a person with a first name and a last name. -+ (GTMABPerson *)personWithFirstName:(NSString *)first - lastName:(NSString *)last; - -// Sets image data for a person. Data must be to a block of data that -// will create a valid UIImage. -- (BOOL)setImageData:(NSData *)data; - -// Returns the image data. -- (NSData *)imageData; - -// Returns the image for a person -- (UIImage *)image; - -// Sets a the image for a person -- (BOOL)setImage:(UIImage *)image; - -// Returns the format in with names are composited -+ (ABPersonCompositeNameFormat)compositeNameFormat; -@end - -// Wrapper for a ABGroup on iPhone -@interface GTMABGroup : GTMABRecord -// Create a new group named |name| -+ (GTMABGroup *)groupNamed:(NSString *)name; - -// Return an array of members (GTMABPerson) -- (NSArray *)members; - -// Add a member to a group -- (BOOL)addMember:(GTMABPerson *)person; - -// Remove a member from a group -- (BOOL)removeMember:(GTMABPerson *)person; -@end - -// GTMABMultiValue does not supprt NSFastEnumeration because in -// the Apple frameworks it returns identifiers which are already NSStrings. -// In our case identifiers aren't NS types, and it doesn't make sense -// to convert them to NSNumbers just to convert them back so you can -// actually get at the values and labels. -// Instead we supply valueEnumerator and labelEnumerator which you can -// fast enumerate on to get values and labels directly. -@interface GTMABMultiValue : NSObject { - @protected - ABMultiValueRef multiValue_; -} - -// Create a multi value -- (id)initWithMultiValue:(ABMultiValueRef)multiValue; - -// return it's ref -- (ABMultiValueRef)multiValueRef; - -// Returns the number of value/label pairs -- (NSUInteger)count; - -// Returns a value at a given index -// Returns nil if index is out of bounds -- (id)valueAtIndex:(NSUInteger)idx; - -// Returns a label at a given index -// Returns nil if index is out of bounds -- (NSString *)labelAtIndex:(NSUInteger)idx; - -// Returns an identifier at a given index -// Returns kABMultiValueInvalidIdentifier if index is out of bounds -- (ABMultiValueIdentifier)identifierAtIndex:(NSUInteger)idx; - -// Returns the index of a given identifier -// Returns NSNotFound if not found -- (NSUInteger)indexForIdentifier:(ABMultiValueIdentifier)identifier; - -// Type of the contents of this multivalue -- (ABPropertyType)propertyType; - -// Returns the value for a given identifier -// Returns nil if the identifier is not found -- (id)valueForIdentifier:(ABMultiValueIdentifier)identifier; - -// Returns the value for a given identifier -// Returns nil if the identifier is not found -- (NSString *)labelForIdentifier:(ABMultiValueIdentifier)identifier; - -// Returns an enumerator for enumerating through values -- (NSEnumerator *)valueEnumerator; - -// Returns an enumerator for enumerating through labels -- (NSEnumerator *)labelEnumerator; - -@end - -@interface GTMABMutableMultiValue : GTMABMultiValue { - @private - // Use unsigned long here instead of NSUInteger because that's what - // NSFastEnumeration Protocol wants currently (iPhone 2.1) - unsigned long mutations_; -} - -// Create a new mutable multivalue with a given type -+ (id)valueWithPropertyType:(ABPropertyType)type; - -// Create a new mutable multivalue with a given type -- (id)initWithPropertyType:(ABPropertyType)type; - -// Create a new mutable multivalue based on |multiValue| -- (id)initWithMutableMultiValue:(ABMutableMultiValueRef)multiValue; - -// Adds a value with its label -// Returns the identifier if successful, kABMultiValueInvalidIdentifier -// otherwise. -- (ABMultiValueIdentifier)addValue:(id)value withLabel:(CFStringRef)label; - -// Insert a value/label pair at a given index -// Returns the identifier if successful. kABMultiValueInvalidIdentifier -// otherwise -// If index is out of bounds, returns kABMultiValueInvalidIdentifier. -- (ABMultiValueIdentifier)insertValue:(id)value - withLabel:(CFStringRef)label - atIndex:(NSUInteger)index; - -// Removes a value/label pair at a given index -// Returns NO if index out of bounds -- (BOOL)removeValueAndLabelAtIndex:(NSUInteger)index; - -// Replaces a value at a given index -// Returns NO if index out of bounds -- (BOOL)replaceValueAtIndex:(NSUInteger)index withValue:(id)value; - -// Replaces a label at a given index -// Returns NO if index out of bounds -- (BOOL)replaceLabelAtIndex:(NSUInteger)index withLabel:(CFStringRef)label; - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.m deleted file mode 100644 index 05dc27f5..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.m +++ /dev/null @@ -1,903 +0,0 @@ -// -// GTMAddressBook.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMABAddressBook.h" -#import "GTMGarbageCollection.h" - -NSString *const kGTMABUnknownPropertyName = @"UNKNOWN_PROPERTY"; - -typedef struct { - ABPropertyType pType; - Class class; -} TypeClassNameMap; - -@interface GTMABMultiValue () -- (unsigned long*)mutations; -@end - -@interface GTMABMutableMultiValue () -// Checks to see if a value is a valid type to be stored in this multivalue -- (BOOL)checkValueType:(id)value; -@end - -@interface GTMABMultiValueEnumerator : NSEnumerator { - @private - __weak ABMultiValueRef ref_; // ref_ cached from enumeree_ - GTMABMultiValue *enumeree_; - unsigned long mutations_; - NSUInteger count_; - NSUInteger index_; - BOOL useLabels_; -} -+ (id)valueEnumeratorFor:(GTMABMultiValue*)enumeree; -+ (id)labelEnumeratorFor:(GTMABMultiValue*)enumeree; -- (id)initWithEnumeree:(GTMABMultiValue*)enumeree useLabels:(BOOL)useLabels; -- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state - objects:(id *)stackbuf - count:(NSUInteger)len; -@end - -@implementation GTMABAddressBook -+ (GTMABAddressBook *)addressBook { - return [[[self alloc] init] autorelease]; -} - -- (id)init { - if ((self = [super init])) { - addressBook_ = ABAddressBookCreate(); - if (!addressBook_) { - // COV_NF_START - [self release]; - self = nil; - // COV_NF_END - } - } - return self; -} - -- (void)dealloc { - if (addressBook_) { - CFRelease(addressBook_); - } - [super dealloc]; -} - -- (BOOL)save { - return [self saveAndReturnError:NULL]; -} - -- (BOOL)saveAndReturnError:(NSError **)error { - CFErrorRef cfError = NULL; - bool wasGood = ABAddressBookSave(addressBook_, &cfError); - GTMCFAutorelease(cfError); - if (error) { - *error = (NSError *)cfError; // COV_NF_LINE - } - return wasGood ? YES : NO; -} - -- (BOOL)hasUnsavedChanges { - return ABAddressBookHasUnsavedChanges(addressBook_); -} - -- (void)revert { - ABAddressBookRevert(addressBook_); -} - -- (BOOL)addRecord:(GTMABRecord *)record { - // Note: we check for bad data here because of radar - // 6201258 Adding a NULL record using ABAddressBookAddRecord crashes - if (!record) return NO; - CFErrorRef cfError = NULL; - bool wasGood = ABAddressBookAddRecord(addressBook_, - [record recordRef], &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (BOOL)removeRecord:(GTMABRecord *)record { - // Note: we check for bad data here because of radar - // 6201276 Removing a NULL record using ABAddressBookRemoveRecord crashes - if (!record) return NO; - CFErrorRef cfError = NULL; - bool wasGood = ABAddressBookRemoveRecord(addressBook_, - [record recordRef], &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (NSArray *)people { - NSArray *people - = GTMCFAutorelease(ABAddressBookCopyArrayOfAllPeople(addressBook_)); - NSMutableArray *result = [NSMutableArray arrayWithCapacity:[people count]]; - for (id person in people) { - [result addObject:[GTMABPerson recordWithRecord:person]]; - } - return result; -} - -- (NSArray *)groups { - NSArray *groups - = GTMCFAutorelease(ABAddressBookCopyArrayOfAllGroups(addressBook_)); - NSMutableArray *result = [NSMutableArray arrayWithCapacity:[groups count]]; - for (id group in groups) { - [result addObject:[GTMABGroup recordWithRecord:group]]; - } - return result; -} - -- (ABAddressBookRef)addressBookRef { - return addressBook_; -} - -- (GTMABPerson *)personForId:(ABRecordID)uniqueId { - GTMABPerson *person = nil; - ABRecordRef ref = ABAddressBookGetPersonWithRecordID(addressBook_, uniqueId); - if (ref) { - person = [GTMABPerson recordWithRecord:ref]; - } - return person; -} - -- (GTMABGroup *)groupForId:(ABRecordID)uniqueId { - GTMABGroup *group = nil; - ABRecordRef ref = ABAddressBookGetGroupWithRecordID(addressBook_, uniqueId); - if (ref) { - group = [GTMABGroup recordWithRecord:ref]; - } - return group; -} - -+ (NSString *)localizedLabel:(CFStringRef)label { - return GTMCFAutorelease(ABAddressBookCopyLocalizedLabel(label)); -} - -@end - -@implementation GTMABRecord -+ (id)recordWithRecord:(ABRecordRef)record { - return [[[self alloc] initWithRecord:record] autorelease]; -} - -- (id)initWithRecord:(ABRecordRef)record { - if ((self = [super init])) { - if ([self class] == [GTMABRecord class]) { - [self autorelease]; - [self doesNotRecognizeSelector:_cmd]; - } - if (!record) { - [self release]; - self = nil; - } else { - record_ = CFRetain(record); - } - } - return self; -} - -- (NSUInteger)hash { - // This really isn't completely valid due to - // 6203836 ABRecords hash to their address - // but it's the best we can do without knowing what properties - // are in a record, and we don't have an API for that. - return CFHash(record_); -} - -- (BOOL)isEqual:(id)object { - // This really isn't completely valid due to - // 6203836 ABRecords hash to their address - // but it's the best we can do without knowing what properties - // are in a record, and we don't have an API for that. - return [object respondsToSelector:@selector(recordRef)] - && CFEqual(record_, [object recordRef]); -} - -- (void)dealloc { - if (record_) { - CFRelease(record_); - } - [super dealloc]; -} - -- (ABRecordRef)recordRef { - return record_; -} - -- (ABRecordID)recordID { - return ABRecordGetRecordID(record_); -} - -- (id)valueForProperty:(ABPropertyID)property { - id value = GTMCFAutorelease(ABRecordCopyValue(record_, property)); - if (value) { - if ([[self class] typeOfProperty:property] & kABMultiValueMask) { - value = [[[GTMABMultiValue alloc] initWithMultiValue:value] autorelease]; - } - } - return value; -} - -- (BOOL)setValue:(id)value forProperty:(ABPropertyID)property { - if (!value) return NO; - // We check the type here because of - // Radar 6201046 ABRecordSetValue returns true even if you pass in a bad type - // for a value - TypeClassNameMap fullTypeMap[] = { - { kABStringPropertyType, [NSString class] }, - { kABIntegerPropertyType, [NSNumber class] }, - { kABRealPropertyType, [NSNumber class] }, - { kABDateTimePropertyType, [NSDate class] }, - { kABDictionaryPropertyType, [NSDictionary class] }, - { kABMultiStringPropertyType, [GTMABMultiValue class] }, - { kABMultiRealPropertyType, [GTMABMultiValue class] }, - { kABMultiDateTimePropertyType, [GTMABMultiValue class] }, - { kABMultiDictionaryPropertyType, [GTMABMultiValue class] } - }; - ABPropertyType type = [[self class] typeOfProperty:property]; - BOOL wasFound = NO; - for (size_t i = 0; i < sizeof(fullTypeMap) / sizeof(TypeClassNameMap); ++i) { - if (fullTypeMap[i].pType == type) { - wasFound = YES; - if (![[value class] isSubclassOfClass:fullTypeMap[i].class]) { - return NO; - } - } - } - if (!wasFound) { - return NO; - } - if (type & kABMultiValueMask) { - value = (id)[value multiValueRef]; - } - CFErrorRef cfError = nil; - bool wasGood = ABRecordSetValue(record_, property, (CFTypeRef)value, &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (BOOL)removeValueForProperty:(ABPropertyID)property { - CFErrorRef cfError = nil; - // We check to see if the value is in the property because of: - // Radar 6201005 ABRecordRemoveValue returns true for value that aren't - // in the record - id value = [self valueForProperty:property]; - bool wasGood = value && ABRecordRemoveValue(record_, property, &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (NSString *)compositeName { - return GTMCFAutorelease(ABRecordCopyCompositeName(record_)); -} - -// COV_NF_START -// Both of these methods are to be overridden by their subclasses -+ (ABPropertyType)typeOfProperty:(ABPropertyID)property { - [self doesNotRecognizeSelector:_cmd]; - return kABInvalidPropertyType; -} - -+ (NSString *)localizedPropertyName:(ABPropertyID)property { - [self doesNotRecognizeSelector:_cmd]; - return nil; -} -// COV_NF_END -@end - -@implementation GTMABPerson - -+ (GTMABPerson *)personWithFirstName:(NSString *)first - lastName:(NSString *)last { - GTMABPerson *person = [[[self alloc] init] autorelease]; - if (person) { - BOOL isGood = YES; - if (first) { - isGood = [person setValue:first forProperty:kABPersonFirstNameProperty]; - } - if (isGood && last) { - isGood = [person setValue:last forProperty:kABPersonLastNameProperty]; - } - if (!isGood) { - // COV_NF_START - // Marked as NF because I don't know how to force an error - [person release]; - person = nil; - // COV_NF_END - } - } - return person; -} - -- (id)init { - ABRecordRef person = ABPersonCreate(); - self = [super initWithRecord:person]; - if (person) { - CFRelease(person); - } - return self; -} - -- (BOOL)setImageData:(NSData *)data { - CFErrorRef cfError = NULL; - bool wasGood = NO; - if (!data) { - wasGood = ABPersonRemoveImageData([self recordRef], &cfError); - } else { - // We verify that the data is good because of: - // Radar 6202868 ABPersonSetImageData should validate image data - UIImage *image = [UIImage imageWithData:data]; - wasGood = image && ABPersonSetImageData([self recordRef], - (CFDataRef)data, &cfError); - } - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (UIImage *)image { - return [UIImage imageWithData:[self imageData]]; -} - -- (BOOL)setImage:(UIImage *)image { - NSData *data = UIImagePNGRepresentation(image); - return [self setImageData:data]; -} - -- (NSData *)imageData { - return GTMCFAutorelease(ABPersonCopyImageData([self recordRef])); -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@ %@ %@ %d", - [self class], - [self valueForProperty:kABPersonFirstNameProperty], - [self valueForProperty:kABPersonLastNameProperty], - [self recordID]]; -} - -+ (NSString *)localizedPropertyName:(ABPropertyID)property { - return GTMCFAutorelease(ABPersonCopyLocalizedPropertyName(property)); -} - -+ (ABPersonCompositeNameFormat)compositeNameFormat { - return ABPersonGetCompositeNameFormat(); -} - -+ (ABPropertyType)typeOfProperty:(ABPropertyID)property { - return ABPersonGetTypeOfProperty(property); -} -@end - -@implementation GTMABGroup - -+ (GTMABGroup *)groupNamed:(NSString *)name { - GTMABGroup *group = [[[self alloc] init] autorelease]; - if (group) { - if (![group setValue:name forProperty:kABGroupNameProperty]) { - // COV_NF_START - // Can't get setValue to fail for me - [group release]; - group = nil; - // COV_NF_END - } - } - return group; -} - -- (id)init { - ABRecordRef group = ABGroupCreate(); - self = [super initWithRecord:group]; - if (group) { - CFRelease(group); - } - return self; -} - -- (NSArray *)members { - NSArray *people - = GTMCFAutorelease(ABGroupCopyArrayOfAllMembers([self recordRef])); - NSMutableArray *gtmPeople = [NSMutableArray arrayWithCapacity:[people count]]; - for (id person in people) { - [gtmPeople addObject:[GTMABPerson recordWithRecord:(ABRecordRef)person]]; - } - return gtmPeople; -} - -- (BOOL)addMember:(GTMABPerson *)person { - CFErrorRef cfError = nil; - // We check for person because of - // Radar 6202860 Passing nil person into ABGroupAddMember crashes - bool wasGood = person && ABGroupAddMember([self recordRef], - [person recordRef], &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -- (BOOL)removeMember:(GTMABPerson *)person { - CFErrorRef cfError = nil; - // We check for person because of - // Radar 6202860 Passing nil person into ABGroupAddMember crashes - // (I know this is remove, but it crashes there too) - bool wasGood = person && ABGroupRemoveMember([self recordRef], - [person recordRef], &cfError); - if (cfError) { - // COV_NF_START - _GTMDevLog(@"Error in [%@ %@]: %@", - [self class], NSStringFromSelector(_cmd), cfError); - CFRelease(cfError); - // COV_NF_END - } - return wasGood ? YES : NO; -} - -+ (ABPropertyType)typeOfProperty:(ABPropertyID)property { - ABPropertyType type = kABInvalidPropertyType; - if (property == kABGroupNameProperty) { - type = kABStringPropertyType; - } - return type; -} - -+ (NSString *)localizedPropertyName:(ABPropertyID)property { - NSString *name = kGTMABUnknownPropertyName; - if (property == kABGroupNameProperty) { - name = NSLocalizedStringFromTable(@"Name", - @"GTMABAddressBook", - @"name property"); - } - return name; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@ %@ %d", - [self class], - [self valueForProperty:kABGroupNameProperty], - [self recordID]]; -} -@end - -@implementation GTMABMultiValue -- (id)init { - // Call super init and release so we don't leak - [[super init] autorelease]; - [self doesNotRecognizeSelector:_cmd]; - return nil; // COV_NF_LINE -} - -- (id)initWithMultiValue:(ABMultiValueRef)multiValue { - if ((self = [super init])) { - if (!multiValue) { - [self release]; - self = nil; - } else { - multiValue_ = CFRetain(multiValue); - } - } - return self; -} - -- (id)copyWithZone:(NSZone *)zone { - return [[GTMABMultiValue alloc] initWithMultiValue:multiValue_]; -} - -- (id)mutableCopyWithZone:(NSZone *)zone { - return [[GTMABMutableMultiValue alloc] initWithMultiValue:multiValue_]; -} - -- (NSUInteger)hash { - // I'm implementing hash instead of using CFHash(multiValue_) because - // 6203854 ABMultiValues hash to their address - NSUInteger count = [self count]; - NSUInteger hash = 0; - for (NSUInteger i = 0; i < count; ++i) { - NSString *label = [self labelAtIndex:i]; - id value = [self valueAtIndex:i]; - hash += [label hash]; - hash += [value hash]; - } - return hash; -} - -- (BOOL)isEqual:(id)object { - // I'm implementing isEqual instea of using CFEquals(multiValue,...) because - // 6203854 ABMultiValues hash to their address - // and it appears CFEquals just calls through to hash to compare them. - BOOL isEqual = NO; - if ([object respondsToSelector:@selector(multiValueRef)]) { - isEqual = multiValue_ == [object multiValueRef]; - if (!isEqual) { - NSUInteger count = [self count]; - NSUInteger objCount = [object count]; - isEqual = count == objCount; - for (NSUInteger i = 0; isEqual && i < count; ++i) { - NSString *label = [self labelAtIndex:i]; - NSString *objLabel = [object labelAtIndex:i]; - isEqual = [label isEqual:objLabel]; - if (isEqual) { - id value = [self valueAtIndex:i]; - id objValue = [object valueAtIndex:i]; - isEqual = [value isEqual:objValue]; - } - } - } - } - return isEqual; -} - -- (void)dealloc { - if (multiValue_) { - CFRelease(multiValue_); - } - [super dealloc]; -} - -- (ABMultiValueRef)multiValueRef { - return multiValue_; -} - -- (NSUInteger)count { - return ABMultiValueGetCount(multiValue_); -} - -- (id)valueAtIndex:(NSUInteger)idx { - id value = nil; - if (idx < [self count]) { - value = GTMCFAutorelease(ABMultiValueCopyValueAtIndex(multiValue_, idx)); - ABPropertyType type = [self propertyType]; - if (type == kABIntegerPropertyType - || type == kABRealPropertyType - || type == kABDictionaryPropertyType) { - // This is because of - // 6208390 Integer and real values don't work in ABMultiValueRefs - // Apparently they forget to add a ref count on int, real and - // dictionary values in ABMultiValueCopyValueAtIndex, although they do - // remember them for all other types. - // Once they fix this, this will lead to a leak, but I figure the leak - // is better than the crash. Our unittests will test to make sure that - // this is the case, and once we find a system that has this fixed, we - // can conditionalize this code. Look for testRadar6208390 in - // GTMABAddressBookTest.m - // Also, search for 6208390 below and fix the fast enumerator to actually - // be somewhat performant when this is fixed. - [value retain]; - } - } - return value; -} - -- (NSString *)labelAtIndex:(NSUInteger)idx { - NSString *label = nil; - if (idx < [self count]) { - label = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(multiValue_, idx)); - } - return label; -} - -- (ABMultiValueIdentifier)identifierAtIndex:(NSUInteger)idx { - ABMultiValueIdentifier identifier = kABMultiValueInvalidIdentifier; - if (idx < [self count]) { - identifier = ABMultiValueGetIdentifierAtIndex(multiValue_, idx); - } - return identifier; -} - -- (NSUInteger)indexForIdentifier:(ABMultiValueIdentifier)identifier { - NSUInteger idx = ABMultiValueGetIndexForIdentifier(multiValue_, identifier); - return idx == (NSUInteger)kCFNotFound ? (NSUInteger)NSNotFound : idx; -} - -- (ABPropertyType)propertyType { - return ABMultiValueGetPropertyType(multiValue_); -} - -- (id)valueForIdentifier:(ABMultiValueIdentifier)identifier { - return [self valueAtIndex:[self indexForIdentifier:identifier]]; -} - -- (NSString *)labelForIdentifier:(ABMultiValueIdentifier)identifier { - return [self labelAtIndex:[self indexForIdentifier:identifier]]; -} - -- (unsigned long*)mutations { - // We just need some constant non-zero value here so fast enumeration works. - // Dereferencing self should give us the isa which will stay constant - // over the enumeration. - return (unsigned long*)self; -} - -- (NSEnumerator *)valueEnumerator { - return [GTMABMultiValueEnumerator valueEnumeratorFor:self]; -} - -- (NSEnumerator *)labelEnumerator { - return [GTMABMultiValueEnumerator labelEnumeratorFor:self]; -} - -@end - -@implementation GTMABMutableMultiValue -+ (id)valueWithPropertyType:(ABPropertyType)type { - return [[[self alloc] initWithPropertyType:type] autorelease]; -} - -- (id)initWithPropertyType:(ABPropertyType)type { - ABMutableMultiValueRef ref = nil; - if (type != kABInvalidPropertyType) { - ref = ABMultiValueCreateMutable(type); - } - self = [super initWithMultiValue:ref]; - if (ref) { - CFRelease(ref); - } - return self; -} - -- (id)initWithMultiValue:(ABMultiValueRef)multiValue { - ABMutableMultiValueRef ref = nil; - if (multiValue) { - ref = ABMultiValueCreateMutableCopy(multiValue); - } - self = [super initWithMultiValue:ref]; - if (ref) { - CFRelease(ref); - } - return self; -} - -- (id)initWithMutableMultiValue:(ABMutableMultiValueRef)multiValue { - return [super initWithMultiValue:multiValue]; -} - -- (BOOL)checkValueType:(id)value { - BOOL isGood = NO; - if (value) { - TypeClassNameMap singleValueTypeMap[] = { - { kABStringPropertyType, [NSString class] }, - { kABIntegerPropertyType, [NSNumber class] }, - { kABRealPropertyType, [NSNumber class] }, - { kABDateTimePropertyType, [NSDate class] }, - { kABDictionaryPropertyType, [NSDictionary class] }, - }; - ABPropertyType type = [self propertyType]; - for (size_t i = 0; - i < sizeof(singleValueTypeMap) / sizeof(TypeClassNameMap); ++i) { - if (singleValueTypeMap[i].pType == type) { - if ([[value class] isSubclassOfClass:singleValueTypeMap[i].class]) { - isGood = YES; - break; - } - } - } - } - return isGood; -} - -- (ABMultiValueIdentifier)addValue:(id)value withLabel:(CFStringRef)label { - ABMultiValueIdentifier identifier = kABMultiValueInvalidIdentifier; - // We check label and value here because of - // radar 6202827 Passing nil info ABMultiValueAddValueAndLabel causes crash - if (!label - || ![self checkValueType:value] - || !ABMultiValueAddValueAndLabel(multiValue_, - value, - label, - &identifier)) { - identifier = kABMultiValueInvalidIdentifier; - } else { - mutations_++; - } - return identifier; -} - -- (ABMultiValueIdentifier)insertValue:(id)value - withLabel:(CFStringRef)label - atIndex:(NSUInteger)idx { - ABMultiValueIdentifier identifier = kABMultiValueInvalidIdentifier; - // We perform a check here to ensure that we don't get bitten by - // Radar 6202807 ABMultiValueInsertValueAndLabelAtIndex allows you to insert - // values past end - NSUInteger count = [self count]; - // We check label and value here because of - // radar 6202827 Passing nil info ABMultiValueAddValueAndLabel causes crash - if (idx > count - || !label - || ![self checkValueType:value] - || !ABMultiValueInsertValueAndLabelAtIndex(multiValue_, - value, - label, - idx, - &identifier)) { - identifier = kABMultiValueInvalidIdentifier; - } else { - mutations_++; - } - return identifier; -} - -- (BOOL)removeValueAndLabelAtIndex:(NSUInteger)idx { - BOOL isGood = NO; - NSUInteger count = [self count]; - if (idx < count) { - if (ABMultiValueRemoveValueAndLabelAtIndex(multiValue_, - idx)) { - mutations_++; - isGood = YES; - } - } - return isGood; -} - -- (BOOL)replaceValueAtIndex:(NSUInteger)idx withValue:(id)value { - BOOL isGood = NO; - NSUInteger count = [self count]; - if (idx < count && [self checkValueType:value]) { - if (ABMultiValueReplaceValueAtIndex(multiValue_, - value, idx)) { - mutations_++; - isGood = YES; - } - } - return isGood; -} - -- (BOOL)replaceLabelAtIndex:(NSUInteger)idx withLabel:(CFStringRef)label{ - BOOL isGood = NO; - NSUInteger count = [self count]; - if (idx < count) { - if (ABMultiValueReplaceLabelAtIndex(multiValue_, - label, - idx)) { - mutations_++; - isGood = YES; - } - } - return isGood; -} - -- (unsigned long*)mutations { - return &mutations_; -} -@end - - -@implementation GTMABMultiValueEnumerator - -+ (id)valueEnumeratorFor:(GTMABMultiValue*)enumeree { - return [[[self alloc] initWithEnumeree:enumeree useLabels:NO] autorelease]; -} - -+ (id)labelEnumeratorFor:(GTMABMultiValue*)enumeree { - return [[[self alloc] initWithEnumeree:enumeree useLabels:YES] autorelease]; -} - -- (id)initWithEnumeree:(GTMABMultiValue*)enumeree useLabels:(BOOL)useLabels { - if ((self = [super init])) { - if (enumeree) { - enumeree_ = [enumeree retain]; - useLabels_ = useLabels; - } else { - // COV_NF_START - // Since this is a private class where the enumeree creates us - // there is no way we should ever get here. - [self release]; - self = nil; - // COV_NF_END - } - } - return self; -} - -- (void)dealloc { - [enumeree_ release]; - [super dealloc]; -} - -- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state - objects:(id *)stackbuf - count:(NSUInteger)len { - NSUInteger i; - if (!ref_) { - count_ = [enumeree_ count]; - ref_ = [enumeree_ multiValueRef]; - } - - for (i = 0; state->state < count_ && i < len; ++i, ++state->state) { - if (useLabels_) { - stackbuf[i] = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_, - state->state)); - } else { - // Yes this is slow, but necessary in light of radar 6208390 - // Once this is fixed we can go to something similar to the label - // case which should speed stuff up again. Hopefully anybody who wants - // real performance is willing to move down to the C API anyways. - stackbuf[i] = [enumeree_ valueAtIndex:state->state]; - } - } - - state->itemsPtr = stackbuf; - state->mutationsPtr = [enumeree_ mutations]; - return i; -} - -- (id)nextObject { - id value = nil; - if (!ref_) { - count_ = [enumeree_ count]; - mutations_ = *[enumeree_ mutations]; - ref_ = [enumeree_ multiValueRef]; - - } - if (mutations_ != *[enumeree_ mutations]) { - NSString *reason = [NSString stringWithFormat:@"*** Collection <%@> was " - "mutated while being enumerated", enumeree_]; - [[NSException exceptionWithName:NSGenericException - reason:reason - userInfo:nil] raise]; - } - if (index_ < count_) { - if (useLabels_) { - value = GTMCFAutorelease(ABMultiValueCopyLabelAtIndex(ref_, - index_)); - } else { - // Yes this is slow, but necessary in light of radar 6208390 - // Once this is fixed we can go to something similar to the label - // case which should speed stuff up again. Hopefully anybody who wants - // real performance is willing to move down to the C API anyways. - value = [enumeree_ valueAtIndex:index_]; - } - index_ += 1; - } - return value; -} -@end - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.strings b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMABAddressBook.strings deleted file mode 100644 index b5e010e166c841a71bfea1c32719da8d810916ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmai!PmdBo5XI}fpQ1A-O%#kL^r`}UfV04H;yipnax2B)&*k>;wi=*=wmz<;OB4%w!xlYm)I4kitez_5Wo0$ z9P@(pZ|=VaYe}?Nv|thJ*&ZRYYDlb*hrB|U;;9Bp_?$yk zOv)w2s8SU;Z@m+0*wyGYJkYqsJ|(qldmgDiYi91K<+a_|7whwVxzoBqZ^mHvu$E5h zr~q1SKT*1HOLZQ(-r6;)HHN`xr|cZN#z!oa#mu8(e^ktdohCK&QZ{y|I$_P~l$n|+ z?V0#Y@M`*b1e1!@bNzN)9qpzZ&LPB}Q?-L-^lG26%Qs`x+3NeB*gaqk?4$KiXK=vn z0k5w-9aJ6QbK@92W&&FGn0@b&UAKkbvk!db|H$}>RrzR-+!fJDk#_3Ql`9eJ5EU)< zJt_@i_x15ruf{W%bUW2zx~ocaHrL?ibY|fvV+?|-ryFDAl@sQSm|u96%*R> -#import - -@interface UIFont (GTMLineHeight) -- (CGFloat)gtm_lineHeight; -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.m deleted file mode 100644 index 74f8a8fe..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeight.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// GTMUIFont+LineHeight.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMUIFont+LineHeight.h" - -@implementation UIFont (GTMLineHeight) -- (CGFloat)gtm_lineHeight { - return [@"Fake line with gjy" sizeWithFont:self].height; -} -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeightTest.m b/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeightTest.m deleted file mode 100644 index 8da28eb0..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/externals/google-toolbox-for-mac/iPhone/GTMUIFont+LineHeightTest.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// GTMUIFont+LineHeightTest.m -// -// Copyright 2008 Google Inc. -// -// 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. -// - -#import "GTMSenTestCase.h" -#import "GTMUIFont+LineHeight.h" - -@interface GTMUIFontLineHeightTest : GTMTestCase -@end - - -@implementation GTMUIFontLineHeightTest - -- (void)testLineHeight { - UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]]; - STAssertNotNil(font, nil); - STAssertGreaterThanOrEqual([font gtm_lineHeight], (CGFloat)5.0, nil); - - UIFont *fontSmall = [UIFont systemFontOfSize:[UIFont smallSystemFontSize]]; - STAssertNotNil(fontSmall, nil); - STAssertGreaterThanOrEqual([fontSmall gtm_lineHeight], (CGFloat)5.0, nil); - - STAssertGreaterThan([font gtm_lineHeight], [fontSmall gtm_lineHeight], nil); -} - -@end diff --git a/thirdparty/google-breakpad/r318/src/common/mac/file_id.cc b/thirdparty/google-breakpad/r318/src/common/mac/file_id.cc deleted file mode 100644 index ebb8c40e..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/file_id.cc +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// file_id.cc: Return a unique identifier for a file -// -// See file_id.h for documentation -// -// Author: Dan Waylonis - -#include -#include -#include - -#include "common/mac/file_id.h" -#include "common/mac/macho_id.h" - -using MacFileUtilities::MachoID; - -namespace google_breakpad { - -FileID::FileID(const char *path) { - strlcpy(path_, path, sizeof(path_)); -} - -bool FileID::FileIdentifier(unsigned char identifier[16]) { - int fd = open(path_, O_RDONLY); - if (fd == -1) - return false; - - MD5_CTX md5; - MD5_Init(&md5); - - // Read 4k x 2 bytes at a time. This is faster than just 4k bytes, but - // doesn't seem to be an unreasonable size for the stack. - unsigned char buffer[4096 * 2]; - size_t buffer_size = sizeof(buffer); - while ((buffer_size = read(fd, buffer, buffer_size) > 0)) { - MD5_Update(&md5, buffer, buffer_size); - } - - close(fd); - MD5_Final(identifier, &md5); - - return true; -} - -bool FileID::MachoIdentifier(int cpu_type, unsigned char identifier[16]) { - MachoID macho(path_); - - if (macho.UUIDCommand(cpu_type, identifier)) - return true; - - return macho.MD5(cpu_type, identifier); -} - -// static -void FileID::ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length) { - int buffer_idx = 0; - for (int idx = 0; (buffer_idx < buffer_length) && (idx < 16); ++idx) { - int hi = (identifier[idx] >> 4) & 0x0F; - int lo = (identifier[idx]) & 0x0F; - - if (idx == 4 || idx == 6 || idx == 8 || idx == 10) - buffer[buffer_idx++] = '-'; - - buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi; - buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo; - } - - // NULL terminate - buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/mac/file_id.h b/thirdparty/google-breakpad/r318/src/common/mac/file_id.h deleted file mode 100644 index eb06b0d6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/file_id.h +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// file_id.h: Return a unique identifier for a file -// -// Author: Dan Waylonis - -#ifndef COMMON_MAC_FILE_ID_H__ -#define COMMON_MAC_FILE_ID_H__ - -#include - -namespace google_breakpad { - -class FileID { - public: - FileID(const char *path); - ~FileID() {}; - - // Load the identifier for the file path specified in the constructor into - // |identifier|. Return false if the identifier could not be created for the - // file. - // The current implementation will return the MD5 hash of the file's bytes. - bool FileIdentifier(unsigned char identifier[16]); - - // Treat the file as a mach-o file that will contain one or more archicture. - // Accepted values for |cpu_type| (e.g., CPU_TYPE_X86 or CPU_TYPE_POWERPC) - // are listed in /usr/include/mach/machine.h. - // If |cpu_type| is 0, then the native cpu type is used. - // Returns false if opening the file failed or if the |cpu_type| is not - // present in the file. - // Return the unique identifier in |identifier|. - // The current implementation will look for the (in order of priority): - // LC_UUID, LC_ID_DYLIB, or MD5 hash of the given |cpu_type|. - bool MachoIdentifier(int cpu_type, unsigned char identifier[16]); - - // Convert the |identifier| data to a NULL terminated string. The string will - // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE). - // The |buffer| should be at least 37 bytes long to receive all of the data - // and termination. Shorter buffers will contain truncated data. - static void ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length); - - private: - // Storage for the path specified - char path_[PATH_MAX]; -}; - -} // namespace google_breakpad - -#endif // COMMON_MAC_FILE_ID_H__ - diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_id.cc b/thirdparty/google-breakpad/r318/src/common/mac/macho_id.cc deleted file mode 100644 index 160f6ed7..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_id.cc +++ /dev/null @@ -1,366 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_id.cc: Functions to gather identifying information from a macho file -// -// See macho_id.h for documentation -// -// Author: Dan Waylonis - -extern "C" { // necessary for Leopard - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -} - -#include "common/mac/macho_id.h" -#include "common/mac/macho_walker.h" -#include "common/mac/macho_utilities.h" - -namespace MacFileUtilities { - -MachoID::MachoID(const char *path) { - strlcpy(path_, path, sizeof(path_)); - file_ = open(path, O_RDONLY); -} - -MachoID::~MachoID() { - if (file_ != -1) - close(file_); -} - -// The CRC info is from http://en.wikipedia.org/wiki/Adler-32 -// With optimizations from http://www.zlib.net/ - -// The largest prime smaller than 65536 -#define MOD_ADLER 65521 -// MAX_BLOCK is the largest n such that 255n(n+1)/2 + (n+1)(MAX_BLOCK-1) <= 2^32-1 -#define MAX_BLOCK 5552 - -void MachoID::UpdateCRC(unsigned char *bytes, size_t size) { -// Unrolled loops for summing -#define DO1(buf,i) {sum1 += (buf)[i]; sum2 += sum1;} -#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); -#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); -#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); -#define DO16(buf) DO8(buf,0); DO8(buf,8); - // Split up the crc - uint32_t sum1 = crc_ & 0xFFFF; - uint32_t sum2 = (crc_ >> 16) & 0xFFFF; - - // Do large blocks - while (size >= MAX_BLOCK) { - size -= MAX_BLOCK; - int block_count = MAX_BLOCK / 16; - do { - DO16(bytes); - bytes += 16; - } while (--block_count); - sum1 %= MOD_ADLER; - sum2 %= MOD_ADLER; - } - - // Do remaining bytes - if (size) { - while (size >= 16) { - size -= 16; - DO16(bytes); - bytes += 16; - } - while (size--) { - sum1 += *bytes++; - sum2 += sum1; - } - sum1 %= MOD_ADLER; - sum2 %= MOD_ADLER; - crc_ = (sum2 << 16) | sum1; - } -} - -void MachoID::UpdateMD5(unsigned char *bytes, size_t size) { - MD5_Update(&md5_context_, bytes, size); -} - -void MachoID::UpdateSHA1(unsigned char *bytes, size_t size) { - SHA_Update(&sha1_context_, bytes, size); -} - -void MachoID::Update(MachoWalker *walker, unsigned long offset, size_t size) { - if (!update_function_ || !size) - return; - - // Read up to 4k bytes at a time - unsigned char buffer[4096]; - size_t buffer_size; - off_t file_offset = offset; - while (size > 0) { - if (size > sizeof(buffer)) { - buffer_size = sizeof(buffer); - size -= buffer_size; - } else { - buffer_size = size; - size = 0; - } - - if (!walker->ReadBytes(buffer, buffer_size, file_offset)) - return; - - (this->*update_function_)(buffer, buffer_size); - file_offset += buffer_size; - } -} - -bool MachoID::UUIDCommand(int cpu_type, unsigned char bytes[16]) { - struct breakpad_uuid_command uuid_cmd; - MachoWalker walker(path_, UUIDWalkerCB, &uuid_cmd); - - uuid_cmd.cmd = 0; - if (!walker.WalkHeader(cpu_type)) - return false; - - // If we found the command, we'll have initialized the uuid_command - // structure - if (uuid_cmd.cmd == LC_UUID) { - memcpy(bytes, uuid_cmd.uuid, sizeof(uuid_cmd.uuid)); - return true; - } - - return false; -} - -bool MachoID::IDCommand(int cpu_type, unsigned char identifier[16]) { - struct dylib_command dylib_cmd; - MachoWalker walker(path_, IDWalkerCB, &dylib_cmd); - - dylib_cmd.cmd = 0; - if (!walker.WalkHeader(cpu_type)) - return false; - - // If we found the command, we'll have initialized the dylib_command - // structure - if (dylib_cmd.cmd == LC_ID_DYLIB) { - // Take the hashed filename, version, and compatability version bytes - // to form the first 12 bytes, pad the rest with zeros - - // create a crude hash of the filename to generate the first 4 bytes - identifier[0] = 0; - identifier[1] = 0; - identifier[2] = 0; - identifier[3] = 0; - - for (int j = 0, i = strlen(path_)-1; i >= 0 && path_[i]!='/'; ++j, --i) { - identifier[j%4] += path_[i]; - } - - identifier[4] = (dylib_cmd.dylib.current_version >> 24) & 0xFF; - identifier[5] = (dylib_cmd.dylib.current_version >> 16) & 0xFF; - identifier[6] = (dylib_cmd.dylib.current_version >> 8) & 0xFF; - identifier[7] = dylib_cmd.dylib.current_version & 0xFF; - identifier[8] = (dylib_cmd.dylib.compatibility_version >> 24) & 0xFF; - identifier[9] = (dylib_cmd.dylib.compatibility_version >> 16) & 0xFF; - identifier[10] = (dylib_cmd.dylib.compatibility_version >> 8) & 0xFF; - identifier[11] = dylib_cmd.dylib.compatibility_version & 0xFF; - identifier[12] = (cpu_type >> 24) & 0xFF; - identifier[13] = (cpu_type >> 16) & 0xFF; - identifier[14] = (cpu_type >> 8) & 0xFF; - identifier[15] = cpu_type & 0xFF; - - return true; - } - - return false; -} - -uint32_t MachoID::Adler32(int cpu_type) { - MachoWalker walker(path_, WalkerCB, this); - update_function_ = &MachoID::UpdateCRC; - crc_ = 0; - - if (!walker.WalkHeader(cpu_type)) - return 0; - - return crc_; -} - -bool MachoID::MD5(int cpu_type, unsigned char identifier[16]) { - MachoWalker walker(path_, WalkerCB, this); - update_function_ = &MachoID::UpdateMD5; - - if (MD5_Init(&md5_context_)) { - if (!walker.WalkHeader(cpu_type)) - return false; - - MD5_Final(identifier, &md5_context_); - return true; - } - - return false; -} - -bool MachoID::SHA1(int cpu_type, unsigned char identifier[16]) { - MachoWalker walker(path_, WalkerCB, this); - update_function_ = &MachoID::UpdateSHA1; - - if (SHA_Init(&sha1_context_)) { - if (!walker.WalkHeader(cpu_type)) - return false; - - SHA_Final(identifier, &sha1_context_); - return true; - } - - return false; -} - -// static -bool MachoID::WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context) { - MachoID *macho_id = (MachoID *)context; - - if (cmd->cmd == LC_SEGMENT) { - struct segment_command seg; - - if (!walker->ReadBytes(&seg, sizeof(seg), offset)) - return false; - - if (swap) - swap_segment_command(&seg, NXHostByteOrder()); - - struct mach_header_64 header; - off_t header_offset; - - if (!walker->CurrentHeader(&header, &header_offset)) - return false; - - // Process segments that have sections: - // (e.g., __TEXT, __DATA, __IMPORT, __OBJC) - offset += sizeof(struct segment_command); - struct section sec; - for (unsigned long i = 0; i < seg.nsects; ++i) { - if (!walker->ReadBytes(&sec, sizeof(sec), offset)) - return false; - - if (swap) - swap_section(&sec, 1, NXHostByteOrder()); - - // sections of type S_ZEROFILL are "virtual" and contain no data - // in the file itself - if ((sec.flags & SECTION_TYPE) != S_ZEROFILL && sec.offset != 0) - macho_id->Update(walker, header_offset + sec.offset, sec.size); - - offset += sizeof(struct section); - } - } else if (cmd->cmd == LC_SEGMENT_64) { - struct segment_command_64 seg64; - - if (!walker->ReadBytes(&seg64, sizeof(seg64), offset)) - return false; - - if (swap) - breakpad_swap_segment_command_64(&seg64, NXHostByteOrder()); - - struct mach_header_64 header; - off_t header_offset; - - if (!walker->CurrentHeader(&header, &header_offset)) - return false; - - // Process segments that have sections: - // (e.g., __TEXT, __DATA, __IMPORT, __OBJC) - offset += sizeof(struct segment_command_64); - struct section_64 sec64; - for (unsigned long i = 0; i < seg64.nsects; ++i) { - if (!walker->ReadBytes(&sec64, sizeof(sec64), offset)) - return false; - - if (swap) - breakpad_swap_section_64(&sec64, 1, NXHostByteOrder()); - - // sections of type S_ZEROFILL are "virtual" and contain no data - // in the file itself - if ((sec64.flags & SECTION_TYPE) != S_ZEROFILL && sec64.offset != 0) - macho_id->Update(walker, header_offset + sec64.offset, sec64.size); - - offset += sizeof(struct section_64); - } - } - - // Continue processing - return true; -} - -// static -bool MachoID::UUIDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context) { - if (cmd->cmd == LC_UUID) { - struct breakpad_uuid_command *uuid_cmd = - (struct breakpad_uuid_command *)context; - - if (!walker->ReadBytes(uuid_cmd, sizeof(struct breakpad_uuid_command), - offset)) - return false; - - if (swap) - breakpad_swap_uuid_command(uuid_cmd, NXHostByteOrder()); - - return false; - } - - // Continue processing - return true; -} - -// static -bool MachoID::IDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context) { - if (cmd->cmd == LC_ID_DYLIB) { - struct dylib_command *dylib_cmd = (struct dylib_command *)context; - - if (!walker->ReadBytes(dylib_cmd, sizeof(struct dylib_command), offset)) - return false; - - if (swap) - swap_dylib_command(dylib_cmd, NXHostByteOrder()); - - return false; - } - - // Continue processing - return true; -} - -} // namespace MacFileUtilities diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_id.h b/thirdparty/google-breakpad/r318/src/common/mac/macho_id.h deleted file mode 100644 index 039bba38..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_id.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_id.h: Functions to gather identifying information from a macho file -// -// Author: Dan Waylonis - -#ifndef COMMON_MAC_MACHO_ID_H__ -#define COMMON_MAC_MACHO_ID_H__ - -#include -#include -#include -#include - -namespace MacFileUtilities { - -class MachoWalker; - -class MachoID { - public: - MachoID(const char *path); - ~MachoID(); - - // For the given |cpu_type|, return a UUID from the LC_UUID command. - // Return false if there isn't a LC_UUID command. - bool UUIDCommand(int cpu_type, unsigned char identifier[16]); - - // For the given |cpu_type|, return a UUID from the LC_ID_DYLIB command. - // Return false if there isn't a LC_ID_DYLIB command. - bool IDCommand(int cpu_type, unsigned char identifier[16]); - - // For the given |cpu_type|, return the Adler32 CRC for the mach-o data - // segment(s). - // Return 0 on error (e.g., if the file is not a mach-o file) - uint32_t Adler32(int cpu_type); - - // For the given |cpu_type|, return the MD5 for the mach-o data segment(s). - // Return true on success, false otherwise - bool MD5(int cpu_type, unsigned char identifier[16]); - - // For the given |cpu_type|, return the SHA1 for the mach-o data segment(s). - // Return true on success, false otherwise - bool SHA1(int cpu_type, unsigned char identifier[16]); - - private: - // Signature of class member function to be called with data read from file - typedef void (MachoID::*UpdateFunction)(unsigned char *bytes, size_t size); - - // Update the CRC value by examining |size| |bytes| and applying the algorithm - // to each byte. - void UpdateCRC(unsigned char *bytes, size_t size); - - // Update the MD5 value by examining |size| |bytes| and applying the algorithm - // to each byte. - void UpdateMD5(unsigned char *bytes, size_t size); - - // Update the SHA1 value by examining |size| |bytes| and applying the - // algorithm to each byte. - void UpdateSHA1(unsigned char *bytes, size_t size); - - // Bottleneck for update routines - void Update(MachoWalker *walker, unsigned long offset, size_t size); - - // The callback from the MachoWalker for CRC, MD5, and SHA1 - static bool WalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context); - - // The callback from the MachoWalker for LC_UUID - static bool UUIDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context); - - // The callback from the MachoWalker for LC_ID_DYLIB - static bool IDWalkerCB(MachoWalker *walker, load_command *cmd, off_t offset, - bool swap, void *context); - - // File path - char path_[PATH_MAX]; - - // File descriptor - int file_; - - // The current crc value - uint32_t crc_; - - // The MD5 context - MD5_CTX md5_context_; - - // The SHA1 context - SHA_CTX sha1_context_; - - // The current update to call from the Update callback - UpdateFunction update_function_; -}; - -} // namespace MacFileUtilities - -#endif // COMMON_MAC_MACHO_ID_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.cc b/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.cc deleted file mode 100644 index d25de5c8..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.cc +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_utilties.cc: Utilities for dealing with mach-o files -// -// Author: Dave Camp - -#include "common/mac/macho_utilities.h" - -void breakpad_swap_uuid_command(struct breakpad_uuid_command *uc, - enum NXByteOrder target_byte_order) -{ - uc->cmd = NXSwapLong(uc->cmd); - uc->cmdsize = NXSwapLong(uc->cmdsize); -} - -void breakpad_swap_segment_command_64(struct segment_command_64 *sg, - enum NXByteOrder target_byte_order) -{ - sg->cmd = NXSwapLong(sg->cmd); - sg->cmdsize = NXSwapLong(sg->cmdsize); - - sg->vmaddr = NXSwapLongLong(sg->vmaddr); - sg->vmsize = NXSwapLongLong(sg->vmsize); - sg->fileoff = NXSwapLongLong(sg->fileoff); - sg->filesize = NXSwapLongLong(sg->filesize); - - sg->maxprot = NXSwapLong(sg->maxprot); - sg->initprot = NXSwapLong(sg->initprot); - sg->nsects = NXSwapLong(sg->nsects); - sg->flags = NXSwapLong(sg->flags); -} - -void breakpad_swap_mach_header_64(struct mach_header_64 *mh, - enum NXByteOrder target_byte_order) -{ - mh->magic = NXSwapLong(mh->magic); - mh->cputype = NXSwapLong(mh->cputype); - mh->cpusubtype = NXSwapLong(mh->cpusubtype); - mh->filetype = NXSwapLong(mh->filetype); - mh->ncmds = NXSwapLong(mh->ncmds); - mh->sizeofcmds = NXSwapLong(mh->sizeofcmds); - mh->flags = NXSwapLong(mh->flags); - mh->reserved = NXSwapLong(mh->reserved); -} - -void breakpad_swap_section_64(struct section_64 *s, - uint32_t nsects, - enum NXByteOrder target_byte_order) -{ - for (uint32_t i = 0; i < nsects; i++) { - s[i].addr = NXSwapLongLong(s[i].addr); - s[i].size = NXSwapLongLong(s[i].size); - - s[i].offset = NXSwapLong(s[i].offset); - s[i].align = NXSwapLong(s[i].align); - s[i].reloff = NXSwapLong(s[i].reloff); - s[i].nreloc = NXSwapLong(s[i].nreloc); - s[i].flags = NXSwapLong(s[i].flags); - s[i].reserved1 = NXSwapLong(s[i].reserved1); - s[i].reserved2 = NXSwapLong(s[i].reserved2); - } -} diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.h b/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.h deleted file mode 100644 index f74e93aa..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_utilities.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_utilities.h: Utilities for dealing with mach-o files -// -// Author: Dave Camp - -#ifndef COMMON_MAC_MACHO_UTILITIES_H__ -#define COMMON_MAC_MACHO_UTILITIES_H__ - -#include -#include - -/* Some #defines and structs that aren't defined in older SDKs */ -#ifndef CPU_ARCH_ABI64 -# define CPU_ARCH_ABI64 0x01000000 -#endif - -#ifndef CPU_TYPE_X86 -# define CPU_TYPE_X86 CPU_TYPE_I386 -#endif - -#ifndef CPU_TYPE_POWERPC64 -# define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64) -#endif - -#ifndef LC_UUID -# define LC_UUID 0x1b /* the uuid */ -#endif - -#if TARGET_CPU_X86 -# define BREAKPAD_MACHINE_THREAD_STATE i386_THREAD_STATE -#else -# define BREAKPAD_MACHINE_THREAD_STATE MACHINE_THREAD_STATE -#endif - -// The uuid_command struct/swap routines were added during the 10.4 series. -// Their presence isn't guaranteed. -struct breakpad_uuid_command { - uint32_t cmd; /* LC_UUID */ - uint32_t cmdsize; /* sizeof(struct uuid_command) */ - uint8_t uuid[16]; /* the 128-bit uuid */ -}; - -void breakpad_swap_uuid_command(struct breakpad_uuid_command *uc, - enum NXByteOrder target_byte_order); - -// Older SDKs defines thread_state_data_t as an int[] instead -// of the natural_t[] it should be. -typedef natural_t breakpad_thread_state_data_t[THREAD_STATE_MAX]; - -// The 64-bit swap routines were added during the 10.4 series, their -// presence isn't guaranteed. -void breakpad_swap_segment_command_64(struct segment_command_64 *sg, - enum NXByteOrder target_byte_order); - -void breakpad_swap_mach_header_64(struct mach_header_64 *mh, - enum NXByteOrder target_byte_order); - -void breakpad_swap_section_64(struct section_64 *s, - uint32_t nsects, - enum NXByteOrder target_byte_order); - -#endif diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.cc b/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.cc deleted file mode 100644 index dd2c3b39..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.cc +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_walker.cc: Iterate over the load commands in a mach-o file -// -// See macho_walker.h for documentation -// -// Author: Dan Waylonis - -extern "C" { // necessary for Leopard - #include - #include - #include - #include - #include - #include - #include -} - -#include "common/mac/macho_walker.h" -#include "common/mac/macho_utilities.h" - -namespace MacFileUtilities { - -MachoWalker::MachoWalker(const char *path, LoadCommandCallback callback, - void *context) - : callback_(callback), - callback_context_(context) { - file_ = open(path, O_RDONLY); -} - -MachoWalker::~MachoWalker() { - if (file_ != -1) - close(file_); -} - -int MachoWalker::ValidateCPUType(int cpu_type) { - // If the user didn't specify, try to use the local architecture. If that - // fails, use the base type for the executable. - if (cpu_type == 0) { - const NXArchInfo *arch = NXGetLocalArchInfo(); - if (arch) - cpu_type = arch->cputype; - else -#if __ppc__ - cpu_type = CPU_TYPE_POWERPC; -#elif __i386__ - cpu_type = CPU_TYPE_X86; -#else -#error Unknown architecture -- are you on a PDP-11? -#endif - } - - return cpu_type; -} - -bool MachoWalker::WalkHeader(int cpu_type) { - int valid_cpu_type = ValidateCPUType(cpu_type); - off_t offset; - if (FindHeader(valid_cpu_type, offset)) { - if (cpu_type & CPU_ARCH_ABI64) - return WalkHeader64AtOffset(offset); - - return WalkHeaderAtOffset(offset); - } - - return false; -} - -bool MachoWalker::ReadBytes(void *buffer, size_t size, off_t offset) { - return pread(file_, buffer, size, offset) == (ssize_t)size; -} - -bool MachoWalker::CurrentHeader(struct mach_header_64 *header, off_t *offset) { - if (current_header_) { - memcpy(header, current_header_, sizeof(mach_header_64)); - *offset = current_header_offset_; - return true; - } - - return false; -} - -bool MachoWalker::FindHeader(int cpu_type, off_t &offset) { - int valid_cpu_type = ValidateCPUType(cpu_type); - // Read the magic bytes that's common amongst all mach-o files - uint32_t magic; - if (!ReadBytes(&magic, sizeof(magic), 0)) - return false; - - offset = sizeof(magic); - - // Figure out what type of file we've got - bool is_fat = false; - if (magic == FAT_MAGIC || magic == FAT_CIGAM) { - is_fat = true; - } - else if (magic != MH_MAGIC && magic != MH_CIGAM && magic != MH_MAGIC_64 && - magic != MH_CIGAM_64) { - return false; - } - - if (!is_fat) { - // If we don't have a fat header, check if the cpu type matches the single - // header - cpu_type_t header_cpu_type; - if (!ReadBytes(&header_cpu_type, sizeof(header_cpu_type), offset)) - return false; - - if (magic == MH_CIGAM || magic == MH_CIGAM_64) - header_cpu_type = NXSwapInt(header_cpu_type); - - if (valid_cpu_type != header_cpu_type) - return false; - - offset = 0; - return true; - } else { - // Read the fat header and find an appropriate architecture - offset = 0; - struct fat_header fat; - if (!ReadBytes(&fat, sizeof(fat), offset)) - return false; - - if (NXHostByteOrder() != NX_BigEndian) - swap_fat_header(&fat, NXHostByteOrder()); - - offset += sizeof(fat); - - // Search each architecture for the desired one - struct fat_arch arch; - for (uint32_t i = 0; i < fat.nfat_arch; ++i) { - if (!ReadBytes(&arch, sizeof(arch), offset)) - return false; - - if (NXHostByteOrder() != NX_BigEndian) - swap_fat_arch(&arch, 1, NXHostByteOrder()); - - if (arch.cputype == valid_cpu_type) { - offset = arch.offset; - return true; - } - - offset += sizeof(arch); - } - } - - return false; -} - -bool MachoWalker::WalkHeaderAtOffset(off_t offset) { - struct mach_header header; - if (!ReadBytes(&header, sizeof(header), offset)) - return false; - - bool swap = (header.magic == MH_CIGAM); - if (swap) - swap_mach_header(&header, NXHostByteOrder()); - - // Copy the data into the mach_header_64 structure. Since the 32-bit and - // 64-bit only differ in the last field (reserved), this is safe to do. - struct mach_header_64 header64; - memcpy((void *)&header64, (const void *)&header, sizeof(header)); - header64.reserved = 0; - - current_header_ = &header64; - current_header_size_ = sizeof(header); // 32-bit, not 64-bit - current_header_offset_ = offset; - offset += current_header_size_; - bool result = WalkHeaderCore(offset, header.ncmds, swap); - current_header_ = NULL; - current_header_size_ = 0; - current_header_offset_ = 0; - return result; -} - -bool MachoWalker::WalkHeader64AtOffset(off_t offset) { - struct mach_header_64 header; - if (!ReadBytes(&header, sizeof(header), offset)) - return false; - - bool swap = (header.magic == MH_CIGAM_64); - if (swap) - breakpad_swap_mach_header_64(&header, NXHostByteOrder()); - - current_header_ = &header; - current_header_size_ = sizeof(header); - current_header_offset_ = offset; - offset += current_header_size_; - bool result = WalkHeaderCore(offset, header.ncmds, swap); - current_header_ = NULL; - current_header_size_ = 0; - current_header_offset_ = 0; - return result; -} - -bool MachoWalker::WalkHeaderCore(off_t offset, uint32_t number_of_commands, - bool swap) { - for (uint32_t i = 0; i < number_of_commands; ++i) { - struct load_command cmd; - if (!ReadBytes(&cmd, sizeof(cmd), offset)) - return false; - - if (swap) - swap_load_command(&cmd, NXHostByteOrder()); - - // Call the user callback - if (callback_ && !callback_(this, &cmd, offset, swap, callback_context_)) - break; - - offset += cmd.cmdsize; - } - - return true; -} - -} // namespace MacFileUtilities diff --git a/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.h b/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.h deleted file mode 100644 index 6445a4f4..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/macho_walker.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// macho_walker.h: Iterate over the load commands in a mach-o file -// -// Author: Dan Waylonis - -#ifndef COMMON_MAC_MACHO_WALKER_H__ -#define COMMON_MAC_MACHO_WALKER_H__ - -#include -#include - -namespace MacFileUtilities { - -class MachoWalker { - public: - // A callback function executed when a new load command is read. If no - // further processing of load commands is desired, return false. Otherwise, - // return true. - // |cmd| is the current command, and |offset| is the location relative to the - // beginning of the file (not header) where the command was read. If |swap| - // is set, then any command data (other than the returned load_command) should - // be swapped when read - typedef bool (*LoadCommandCallback)(MachoWalker *walker, load_command *cmd, - off_t offset, bool swap, void *context); - - MachoWalker(const char *path, LoadCommandCallback callback, void *context); - MachoWalker(int file_descriptor, LoadCommandCallback callback, void *context); - ~MachoWalker(); - - // Begin walking the header for |cpu_type|. If |cpu_type| is 0, then the - // native cpu type is used. Otherwise, accepted values are listed in - // /usr/include/mach/machine.h (e.g., CPU_TYPE_X86 or CPU_TYPE_POWERPC). - // Returns false if opening the file failed or if the |cpu_type| is not - // present in the file. - bool WalkHeader(int cpu_type); - - // Locate (if any) the header offset for |cpu_type| and return in |offset|. - // Return true if found, false otherwise. - bool FindHeader(int cpu_type, off_t &offset); - - // Read |size| bytes from the opened file at |offset| into |buffer| - bool ReadBytes(void *buffer, size_t size, off_t offset); - - // Return the current header and header offset - bool CurrentHeader(struct mach_header_64 *header, off_t *offset); - - private: - // Validate the |cpu_type| - int ValidateCPUType(int cpu_type); - - // Process an individual header starting at |offset| from the start of the - // file. Return true if successful, false otherwise. - bool WalkHeaderAtOffset(off_t offset); - bool WalkHeader64AtOffset(off_t offset); - - // Bottleneck for walking the load commands - bool WalkHeaderCore(off_t offset, uint32_t number_of_commands, bool swap); - - // File descriptor to the opened file - int file_; - - // User specified callback & context - LoadCommandCallback callback_; - void *callback_context_; - - // Current header, size, and offset. The mach_header_64 is used for both - // 32-bit and 64-bit headers because they only differ in their last field - // (reserved). By adding the |current_header_size_| and the - // |current_header_offset_|, you can determine the offset in the file just - // after the header. - struct mach_header_64 *current_header_; - unsigned long current_header_size_; - off_t current_header_offset_; -}; - -} // namespace MacFileUtilities - -#endif // COMMON_MAC_MACHO_WALKER_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.cc b/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.cc deleted file mode 100644 index bdf3336c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.cc +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "processor/scoped_ptr.h" -#include "common/mac/string_utilities.h" - -namespace MacStringUtils { - -using google_breakpad::scoped_array; - -std::string ConvertToString(CFStringRef str) { - CFIndex length = CFStringGetLength(str); - std::string result; - - if (!length) - return result; - - CFIndex maxUTF8Length = - CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8); - scoped_array buffer(new UInt8[maxUTF8Length + 1]); - CFIndex actualUTF8Length; - CFStringGetBytes(str, CFRangeMake(0, length), kCFStringEncodingUTF8, 0, - false, buffer.get(), maxUTF8Length, &actualUTF8Length); - buffer[actualUTF8Length] = 0; - result.assign((const char *)buffer.get()); - - return result; -} - -unsigned int IntegerValueAtIndex(string &str, unsigned int idx) { - string digits("0123456789"), temp; - unsigned int start = 0; - unsigned int end; - unsigned int found = 0; - unsigned int result = 0; - - for (; found <= idx; ++found) { - end = str.find_first_not_of(digits, start); - - if (end == string::npos) - end = str.size(); - - temp = str.substr(start, end - start); - - if (found == idx) { - result = atoi(temp.c_str()); - } - - start = str.find_first_of(digits, end + 1); - - if (start == string::npos) - break; - } - - return result; -} - -} // namespace MacStringUtils diff --git a/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.h b/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.h deleted file mode 100644 index 6d89c834..00000000 --- a/thirdparty/google-breakpad/r318/src/common/mac/string_utilities.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// string_utilities.h: Utilities for strings for Mac platform - -#ifndef COMMON_MAC_STRING_UTILITIES_H__ -#define COMMON_MAC_STRING_UTILITIES_H__ - -#include - -#include - -namespace MacStringUtils { - -using std::string; - -// Convert a CoreFoundation string into a std::string -string ConvertToString(CFStringRef str); - -// Return the idx'th decimal integer in str, separated by non-decimal-digits -// E.g., str = 10.4.8, idx = 1 -> 4 -unsigned int IntegerValueAtIndex(string &str, unsigned int idx); - -} // namespace MacStringUtils - -#endif // COMMON_MAC_STRING_UTILITIES_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/md5.c b/thirdparty/google-breakpad/r318/src/common/md5.c deleted file mode 100644 index 7fc198af..00000000 --- a/thirdparty/google-breakpad/r318/src/common/md5.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5Context structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - */ - -#include - -#include "common/md5.h" - -#ifndef WORDS_BIGENDIAN -#define byteReverse(buf, len) /* Nothing */ -#else -/* - * Note: this code is harmless on little-endian machines. - */ -static void byteReverse(unsigned char *buf, unsigned longs) -{ - u32 t; - do { - t = (u32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | - ((unsigned) buf[1] << 8 | buf[0]); - *(u32 *) buf = t; - buf += 4; - } while (--longs); -} -#endif - -static void MD5Transform(u32 buf[4], u32 const in[16]); - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void MD5Init(struct MD5Context *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bits[0] = 0; - ctx->bits[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) -{ - u32 t; - - /* Update bitcount */ - - t = ctx->bits[0]; - if ((ctx->bits[0] = t + ((u32) len << 3)) < t) - ctx->bits[1]++; /* Carry from low to high */ - ctx->bits[1] += len >> 29; - - t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ - - /* Handle any leading odd-sized chunks */ - - if (t) { - unsigned char *p = (unsigned char *) ctx->in + t; - - t = 64 - t; - if (len < t) { - memcpy(p, buf, len); - return; - } - memcpy(p, buf, t); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - buf += t; - len -= t; - } - /* Process data in 64-byte chunks */ - - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void MD5Final(unsigned char digest[16], struct MD5Context *ctx) -{ - unsigned count; - unsigned char *p; - - /* Compute number of bytes mod 64 */ - count = (ctx->bits[0] >> 3) & 0x3F; - - /* Set the first char of padding to 0x80. This is safe since there is - always at least one byte free */ - p = ctx->in + count; - *p++ = 0x80; - - /* Bytes of padding needed to make 64 bytes */ - count = 64 - 1 - count; - - /* Pad out to 56 mod 64 */ - if (count < 8) { - /* Two lots of padding: Pad the first block to 64 bytes */ - memset(p, 0, count); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - - /* Now fill the next block with 56 bytes */ - memset(ctx->in, 0, 56); - } else { - /* Pad block to 56 bytes */ - memset(p, 0, count - 8); - } - byteReverse(ctx->in, 14); - - /* Append length in bits and transform */ - ((u32 *) ctx->in)[14] = ctx->bits[0]; - ((u32 *) ctx->in)[15] = ctx->bits[1]; - - MD5Transform(ctx->buf, (u32 *) ctx->in); - byteReverse((unsigned char *) ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f, w, x, y, z, data, s) \ - ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -static void MD5Transform(u32 buf[4], u32 const in[16]) -{ - register u32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} diff --git a/thirdparty/google-breakpad/r318/src/common/md5.h b/thirdparty/google-breakpad/r318/src/common/md5.h deleted file mode 100644 index dbf4893c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/md5.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2007 Google Inc. All Rights Reserved. -// Author: liuli@google.com (Liu Li) -#ifndef COMMON_MD5_H__ -#define COMMON_MD5_H__ - -#include - -typedef uint32_t u32; -typedef uint8_t u8; - -struct MD5Context { - u32 buf[4]; - u32 bits[2]; - u8 in[64]; -}; - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -void MD5Init(struct MD5Context *ctx); - -void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len); - -void MD5Final(unsigned char digest[16], struct MD5Context *ctx); - -#ifdef __cplusplus -} -#endif - -#endif // COMMON_MD5_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.cc b/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.cc deleted file mode 100644 index 816d744c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.cc +++ /dev/null @@ -1,681 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "common/solaris/dump_symbols.h" -#include "common/solaris/file_id.h" -#include "common/solaris/guid_creator.h" -#include "processor/scoped_ptr.h" - -// This namespace contains helper functions. -namespace { - -using std::make_pair; - -#if defined(_LP64) -typedef Elf64_Sym Elf_Sym; -#else -typedef Elf32_Sym Elf_Sym; -#endif - -// Symbol table entry from stabs. Sun CC specific. -struct slist { - // String table index. - unsigned int n_strx; - // Stab type. - unsigned char n_type; - char n_other; - short n_desc; - unsigned long n_value; -}; - -// Symbol table entry -struct SymbolEntry { - // Offset from the start of the file. - GElf_Addr offset; - // Function size. - GElf_Word size; -}; - -// Infomation of a line. -struct LineInfo { - // Offset from start of the function. - // Load from stab symbol. - GElf_Off rva_to_func; - // Offset from base of the loading binary. - GElf_Off rva_to_base; - // Size of the line. - // The first line: equals to rva_to_func. - // The other lines: the difference of rva_to_func of the line and - // rva_to_func of the previous N_SLINE. - uint32_t size; - // Line number. - uint32_t line_num; -}; - -// Information of a function. -struct FuncInfo { - // Name of the function. - const char *name; - // Offset from the base of the loading address. - GElf_Off rva_to_base; - // Virtual address of the function. - // Load from stab symbol. - GElf_Addr addr; - // Size of the function. - // Equal to rva_to_func of the last function line. - uint32_t size; - // Total size of stack parameters. - uint32_t stack_param_size; - // Line information array. - std::vector line_info; -}; - -// Information of a source file. -struct SourceFileInfo { - // Name of the source file. - const char *name; - // Starting address of the source file. - GElf_Addr addr; - // Id of the source file. - int source_id; - // Functions information. - std::vector func_info; -}; - -struct CompareString { - bool operator()(const char *s1, const char *s2) const { - return strcmp(s1, s2) < 0; - } -}; - -typedef std::map SymbolMap; - -// Information of a symbol table. -// This is the root of all types of symbol. -struct SymbolInfo { - std::vector source_file_info; - // Symbols information. - SymbolMap symbol_entries; -}; - -// Stab section name. -const char *kStabName = ".stab"; - -// Stab str section name. -const char *kStabStrName = ".stabstr"; - -// Symtab section name. -const char *kSymtabName = ".symtab"; - -// Strtab section name. -const char *kStrtabName = ".strtab"; - -// Default buffer lenght for demangle. -const int demangleLen = 20000; - -// Offset to the string table. -u_int64_t stringOffset = 0; - -// Update the offset to the start of the string index of the next -// object module for every N_ENDM stabs. -inline void RecalculateOffset(struct slist* cur_list, char *stabstr) { - while ((--cur_list)->n_strx == 0) ; - stringOffset += cur_list->n_strx; - - char *temp = stabstr + stringOffset; - while (*temp != '\0') { - ++stringOffset; - ++temp; - } - // Skip the extra '\0' - ++stringOffset; -} - -// Demangle using demangle library on Solaris. -std::string Demangle(const char *mangled) { - int status = 0; - std::string str(mangled); - char *demangled = (char *)malloc(demangleLen); - - if (!demangled) { - fprintf(stderr, "no enough memory.\n"); - goto out; - } - - if ((status = cplus_demangle(mangled, demangled, demangleLen)) == - DEMANGLE_ESPACE) { - fprintf(stderr, "incorrect demangle.\n"); - goto out; - } - - str = demangled; - free(demangled); - -out: - return str; -} - -bool WriteFormat(int fd, const char *fmt, ...) { - va_list list; - char buffer[4096]; - ssize_t expected, written; - va_start(list, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, list); - expected = strlen(buffer); - written = write(fd, buffer, strlen(buffer)); - va_end(list); - return expected == written; -} - -bool IsValidElf(const GElf_Ehdr *elf_header) { - return memcmp(elf_header, ELFMAG, SELFMAG) == 0; -} - -static bool FindSectionByName(Elf *elf, const char *name, - int shstrndx, - GElf_Shdr *shdr) { - assert(name != NULL); - - if (strlen(name) == 0) - return false; - - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn(elf, scn)) != NULL) { - if (gelf_getshdr(scn, shdr) == (GElf_Shdr *)0) { - fprintf(stderr, "failed to read section header: %s\n", elf_errmsg(0)); - return false; - } - - const char *section_name = elf_strptr(elf, shstrndx, shdr->sh_name); - if (!section_name) { - fprintf(stderr, "Section name error: %s\n", elf_errmsg(-1)); - continue; - } - - if (strcmp(section_name, name) == 0) - return true; - } - - return false; -} - -// The parameter size is used for FPO-optimized code, and -// this is all tied up with the debugging data for Windows x86. -// Set it to 0 on Solaris. -int LoadStackParamSize(struct slist *list, - struct slist *list_end, - struct FuncInfo *func_info) { - struct slist *cur_list = list; - int step = 1; - while (cur_list < list_end && cur_list->n_type == N_PSYM) { - ++cur_list; - ++step; - } - - func_info->stack_param_size = 0; - return step; -} - -int LoadLineInfo(struct slist *list, - struct slist *list_end, - struct FuncInfo *func_info) { - struct slist *cur_list = list; - do { - // Skip non line information. - while (cur_list < list_end && cur_list->n_type != N_SLINE) { - // Only exit when got another function, or source file, or end stab. - if (cur_list->n_type == N_FUN || cur_list->n_type == N_SO || - cur_list->n_type == N_ENDM) { - return cur_list - list; - } - ++cur_list; - } - struct LineInfo line; - while (cur_list < list_end && cur_list->n_type == N_SLINE) { - line.rva_to_func = cur_list->n_value; - // n_desc is a signed short - line.line_num = (unsigned short)cur_list->n_desc; - func_info->line_info.push_back(line); - ++cur_list; - } - if (cur_list == list_end && cur_list->n_type == N_ENDM) - break; - } while (list < list_end); - - return cur_list - list; -} - -int LoadFuncSymbols(struct slist *list, - struct slist *list_end, - char *stabstr, - GElf_Word base, - struct SourceFileInfo *source_file_info) { - struct slist *cur_list = list; - assert(cur_list->n_type == N_SO); - ++cur_list; - - source_file_info->func_info.clear(); - while (cur_list < list_end) { - // Go until the function symbol. - while (cur_list < list_end && cur_list->n_type != N_FUN) { - if (cur_list->n_type == N_SO) { - return cur_list - list; - } - ++cur_list; - if (cur_list->n_type == N_ENDM) - RecalculateOffset(cur_list, stabstr); - continue; - } - while (cur_list->n_type == N_FUN) { - struct FuncInfo func_info; - memset(&func_info, 0, sizeof(func_info)); - func_info.name = stabstr + cur_list->n_strx + stringOffset; - // The n_value field is always 0 from stab generated by Sun CC. - // TODO(Alfred): Find the correct value. - func_info.addr = cur_list->n_value; - ++cur_list; - if (cur_list->n_type == N_ENDM) - RecalculateOffset(cur_list, stabstr); - if (cur_list->n_type != N_ESYM && cur_list->n_type != N_ISYM && - cur_list->n_type != N_FUN) { - // Stack parameter size. - cur_list += LoadStackParamSize(cur_list, list_end, &func_info); - // Line info. - cur_list += LoadLineInfo(cur_list, list_end, &func_info); - } - if (cur_list < list_end && cur_list->n_type == N_ENDM) - RecalculateOffset(cur_list, stabstr); - // Functions in this module should have address bigger than the module - // starting address. - // - // These two values are always 0 with Sun CC. - // TODO(Alfred): Get the correct value or remove the condition statement. - if (func_info.addr >= source_file_info->addr) { - source_file_info->func_info.push_back(func_info); - } - } - } - return cur_list - list; -} - -// Compute size and rva information based on symbols loaded from stab section. -bool ComputeSizeAndRVA(struct SymbolInfo *symbols) { - std::vector *sorted_files = - &(symbols->source_file_info); - SymbolMap *symbol_entries = &(symbols->symbol_entries); - for (size_t i = 0; i < sorted_files->size(); ++i) { - struct SourceFileInfo &source_file = (*sorted_files)[i]; - std::vector *sorted_functions = &(source_file.func_info); - int func_size = sorted_functions->size(); - - for (size_t j = 0; j < func_size; ++j) { - struct FuncInfo &func_info = (*sorted_functions)[j]; - int line_count = func_info.line_info.size(); - - // Discard the ending part of the name. - std::string func_name(func_info.name); - std::string::size_type last_colon = func_name.find_first_of(':'); - if (last_colon != std::string::npos) - func_name = func_name.substr(0, last_colon); - - // Fine the symbol offset from the loading address and size by name. - SymbolMap::const_iterator it = symbol_entries->find(func_name.c_str()); - if (it->second) { - func_info.rva_to_base = it->second->offset; - func_info.size = (line_count == 0) ? 0 : it->second->size; - } else { - func_info.rva_to_base = 0; - func_info.size = 0; - } - - // Compute function and line size. - for (size_t k = 0; k < line_count; ++k) { - struct LineInfo &line_info = func_info.line_info[k]; - - line_info.rva_to_base = line_info.rva_to_func + func_info.rva_to_base; - if (k == line_count - 1) { - line_info.size = func_info.size - line_info.rva_to_func; - } else { - struct LineInfo &next_line = func_info.line_info[k + 1]; - line_info.size = next_line.rva_to_func - line_info.rva_to_func; - } - } // for each line. - } // for each function. - } // for each source file. - for (SymbolMap::iterator it = symbol_entries->begin(); - it != symbol_entries->end(); ++it) { - free(it->second); - } - return true; -} - -bool LoadAllSymbols(const GElf_Shdr *stab_section, - const GElf_Shdr *stabstr_section, - GElf_Word base, - struct SymbolInfo *symbols) { - if (stab_section == NULL || stabstr_section == NULL) - return false; - - char *stabstr = - reinterpret_cast(stabstr_section->sh_offset + base); - struct slist *lists = - reinterpret_cast(stab_section->sh_offset + base); - int nstab = stab_section->sh_size / sizeof(struct slist); - int source_id = 0; - - // First pass, load all symbols from the object file. - for (int i = 0; i < nstab; ) { - int step = 1; - struct slist *cur_list = lists + i; - if (cur_list->n_type == N_SO) { - // FUNC
      - struct SourceFileInfo source_file_info; - source_file_info.name = stabstr + cur_list->n_strx + stringOffset; - // The n_value field is always 0 from stab generated by Sun CC. - // TODO(Alfred): Find the correct value. - source_file_info.addr = cur_list->n_value; - if (strchr(source_file_info.name, '.')) - source_file_info.source_id = source_id++; - else - source_file_info.source_id = -1; - step = LoadFuncSymbols(cur_list, lists + nstab - 1, stabstr, - base, &source_file_info); - symbols->source_file_info.push_back(source_file_info); - } - i += step; - } - // Second pass, compute the size of functions and lines. - return ComputeSizeAndRVA(symbols); -} - -bool LoadSymbols(Elf *elf, GElf_Ehdr *elf_header, struct SymbolInfo *symbols, - void *obj_base) { - GElf_Word base = reinterpret_cast(obj_base); - - const GElf_Shdr *sections = - reinterpret_cast(elf_header->e_shoff + base); - GElf_Shdr stab_section; - if (!FindSectionByName(elf, kStabName, elf_header->e_shstrndx, - &stab_section)) { - fprintf(stderr, "Stab section not found.\n"); - return false; - } - GElf_Shdr stabstr_section; - if (!FindSectionByName(elf, kStabStrName, elf_header->e_shstrndx, - &stabstr_section)) { - fprintf(stderr, "Stabstr section not found.\n"); - return false; - } - GElf_Shdr symtab_section; - if (!FindSectionByName(elf, kSymtabName, elf_header->e_shstrndx, - &symtab_section)) { - fprintf(stderr, "Symtab section not found.\n"); - return false; - } - GElf_Shdr strtab_section; - if (!FindSectionByName(elf, kStrtabName, elf_header->e_shstrndx, - &strtab_section)) { - fprintf(stderr, "Strtab section not found.\n"); - return false; - } - - Elf_Sym *symbol = (Elf_Sym *)((char *)base + symtab_section.sh_offset); - for (int i = 0; i < symtab_section.sh_size/symtab_section.sh_entsize; ++i) { - struct SymbolEntry *symbol_entry = - (struct SymbolEntry *)malloc(sizeof(struct SymbolEntry)); - const char *name = reinterpret_cast( - strtab_section.sh_offset + (GElf_Word)base + symbol->st_name); - symbol_entry->offset = symbol->st_value; - symbol_entry->size = symbol->st_size; - symbols->symbol_entries.insert(make_pair(name, symbol_entry)); - ++symbol; - } - - - // Load symbols. - return LoadAllSymbols(&stab_section, &stabstr_section, base, symbols); -} - -bool WriteModuleInfo(int fd, GElf_Half arch, const std::string &obj_file) { - const char *arch_name = NULL; - if (arch == EM_386) - arch_name = "x86"; - else if (arch == EM_X86_64) - arch_name = "x86_64"; - else if (arch == EM_SPARC32PLUS) - arch_name = "SPARC_32+"; - else { - printf("Please add more ARCH support\n"); - return false; - } - - unsigned char identifier[16]; - google_breakpad::FileID file_id(obj_file.c_str()); - if (file_id.ElfFileIdentifier(identifier)) { - char identifier_str[40]; - file_id.ConvertIdentifierToString(identifier, - identifier_str, sizeof(identifier_str)); - std::string filename = obj_file; - size_t slash_pos = obj_file.find_last_of("/"); - if (slash_pos != std::string::npos) - filename = obj_file.substr(slash_pos + 1); - return WriteFormat(fd, "MODULE solaris %s %s %s\n", arch_name, - identifier_str, filename.c_str()); - } - return false; -} - -bool WriteSourceFileInfo(int fd, const struct SymbolInfo &symbols) { - for (size_t i = 0; i < symbols.source_file_info.size(); ++i) { - if (symbols.source_file_info[i].source_id != -1) { - const char *name = symbols.source_file_info[i].name; - if (!WriteFormat(fd, "FILE %d %s\n", - symbols.source_file_info[i].source_id, name)) - return false; - } - } - return true; -} - -bool WriteOneFunction(int fd, int source_id, - const struct FuncInfo &func_info){ - // Discard the ending part of the name. - std::string func_name(func_info.name); - std::string::size_type last_colon = func_name.find_last_of(':'); - if (last_colon != std::string::npos) - func_name = func_name.substr(0, last_colon); - func_name = Demangle(func_name.c_str()); - - if (func_info.size <= 0) - return true; - - // rva_to_base could be unsigned long(32 bit) or unsigned long long(64 bit). - if (WriteFormat(fd, "FUNC %llx %x %d %s\n", - (long long)func_info.rva_to_base, - func_info.size, - func_info.stack_param_size, - func_name.c_str())) { - for (size_t i = 0; i < func_info.line_info.size(); ++i) { - const struct LineInfo &line_info = func_info.line_info[i]; - if (line_info.line_num == 0) - return true; - if (!WriteFormat(fd, "%llx %x %d %d\n", - (long long)line_info.rva_to_base, - line_info.size, - line_info.line_num, - source_id)) - return false; - } - return true; - } - return false; -} - -bool WriteFunctionInfo(int fd, const struct SymbolInfo &symbols) { - for (size_t i = 0; i < symbols.source_file_info.size(); ++i) { - const struct SourceFileInfo &file_info = symbols.source_file_info[i]; - for (size_t j = 0; j < file_info.func_info.size(); ++j) { - const struct FuncInfo &func_info = file_info.func_info[j]; - if (!WriteOneFunction(fd, file_info.source_id, func_info)) - return false; - } - } - return true; -} - -bool DumpStabSymbols(int fd, const struct SymbolInfo &symbols) { - return WriteSourceFileInfo(fd, symbols) && - WriteFunctionInfo(fd, symbols); -} - -// -// FDWrapper -// -// Wrapper class to make sure opened file is closed. -// -class FDWrapper { - public: - explicit FDWrapper(int fd) : - fd_(fd) { - } - ~FDWrapper() { - if (fd_ != -1) - close(fd_); - } - int get() { - return fd_; - } - int release() { - int fd = fd_; - fd_ = -1; - return fd; - } - private: - int fd_; -}; - -// -// MmapWrapper -// -// Wrapper class to make sure mapped regions are unmapped. -// -class MmapWrapper { - public: - MmapWrapper(void *mapped_address, size_t mapped_size) : - base_(mapped_address), size_(mapped_size) { - } - ~MmapWrapper() { - if (base_ != NULL) { - assert(size_ > 0); - munmap((char *)base_, size_); - } - } - void release() { - base_ = NULL; - size_ = 0; - } - - private: - void *base_; - size_t size_; -}; - -} // namespace - -namespace google_breakpad { - -class AutoElfEnder { - public: - AutoElfEnder(Elf *elf) : elf_(elf) {} - ~AutoElfEnder() { if (elf_) elf_end(elf_); } - private: - Elf *elf_; -}; - - -bool DumpSymbols::WriteSymbolFile(const std::string &obj_file, int sym_fd) { - if (elf_version(EV_CURRENT) == EV_NONE) { - fprintf(stderr, "elf_version() failed: %s\n", elf_errmsg(0)); - return false; - } - - int obj_fd = open(obj_file.c_str(), O_RDONLY); - if (obj_fd < 0) - return false; - FDWrapper obj_fd_wrapper(obj_fd); - struct stat st; - if (fstat(obj_fd, &st) != 0 && st.st_size <= 0) - return false; - void *obj_base = mmap(NULL, st.st_size, - PROT_READ, MAP_PRIVATE, obj_fd, 0); - if (obj_base == MAP_FAILED)) - return false; - MmapWrapper map_wrapper(obj_base, st.st_size); - GElf_Ehdr elf_header; - Elf *elf = elf_begin(obj_fd, ELF_C_READ, NULL); - AutoElfEnder elfEnder(elf); - - if (gelf_getehdr(elf, &elf_header) == (GElf_Ehdr *)NULL) { - fprintf(stderr, "failed to read elf header: %s\n", elf_errmsg(-1)); - return false; - } - - if (!IsValidElf(&elf_header)) { - fprintf(stderr, "header magic doesn't match\n"); - return false; - } - struct SymbolInfo symbols; - if (!LoadSymbols(elf, &elf_header, &symbols, obj_base)) - return false; - // Write to symbol file. - if (WriteModuleInfo(sym_fd, elf_header.e_machine, obj_file) && - DumpStabSymbols(sym_fd, symbols)) - return true; - - return false; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.h b/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.h deleted file mode 100644 index 7f4baadc..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/dump_symbols.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. -// -// dump_symbols.cc: Implements a Solaris stab debugging format dumper. -// -// Author: Alfred Peng - -#ifndef COMMON_SOLARIS_DUMP_SYMBOLS_H__ -#define COMMON_SOLARIS_DUMP_SYMBOLS_H__ - -#include - -namespace google_breakpad { - -class DumpSymbols { - public: - bool WriteSymbolFile(const std::string &obj_file, - int sym_fd); -}; - -} // namespace google_breakpad - -#endif // COMMON_SOLARIS_DUMP_SYMBOLS_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/file_id.cc b/thirdparty/google-breakpad/r318/src/common/solaris/file_id.cc deleted file mode 100644 index 643a1462..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/file_id.cc +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// file_id.cc: Return a unique identifier for a file -// -// See file_id.h for documentation -// -// Author: Alfred Peng - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "common/md5.h" -#include "common/solaris/file_id.h" -#include "common/solaris/message_output.h" -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -class AutoElfEnder { - public: - AutoElfEnder(Elf *elf) : elf_(elf) {} - ~AutoElfEnder() { if (elf_) elf_end(elf_); } - private: - Elf *elf_; -}; - -// Find the text section in elf object file. -// Return the section start address and the size. -static bool FindElfTextSection(int fd, const void *elf_base, - const void **text_start, - int *text_size) { - assert(text_start); - assert(text_size); - - *text_start = NULL; - *text_size = 0; - - if (elf_version(EV_CURRENT) == EV_NONE) { - print_message2(2, "elf_version() failed: %s\n", elf_errmsg(0)); - return false; - } - - GElf_Ehdr elf_header; - lseek(fd, 0L, 0); - Elf *elf = elf_begin(fd, ELF_C_READ, NULL); - AutoElfEnder elfEnder(elf); - - if (gelf_getehdr(elf, &elf_header) == (GElf_Ehdr *)NULL) { - print_message2(2, "failed to read elf header: %s\n", elf_errmsg(-1)); - return false; - } - - if (elf_header.e_ident[EI_MAG0] != ELFMAG0 || - elf_header.e_ident[EI_MAG1] != ELFMAG1 || - elf_header.e_ident[EI_MAG2] != ELFMAG2 || - elf_header.e_ident[EI_MAG3] != ELFMAG3) { - print_message1(2, "header magic doesn't match\n"); - return false; - } - - static const char kTextSectionName[] = ".text"; - const GElf_Shdr *text_section = NULL; - Elf_Scn *scn = NULL; - GElf_Shdr shdr; - - while ((scn = elf_nextscn(elf, scn)) != NULL) { - if (gelf_getshdr(scn, &shdr) == (GElf_Shdr *)0) { - print_message2(2, "failed to read section header: %s\n", elf_errmsg(0)); - return false; - } - - if (shdr.sh_type == SHT_PROGBITS) { - const char *section_name = elf_strptr(elf, elf_header.e_shstrndx, - shdr.sh_name); - if (!section_name) { - print_message2(2, "Section name error: %s\n", elf_errmsg(-1)); - continue; - } - - if (strcmp(section_name, kTextSectionName) == 0) { - text_section = &shdr; - break; - } - } - } - if (text_section != NULL && text_section->sh_size > 0) { - *text_start = (char *)elf_base + text_section->sh_offset; - *text_size = text_section->sh_size; - return true; - } - - return false; -} - -FileID::FileID(const char *path) { - strcpy(path_, path); -} - -class AutoCloser { - public: - AutoCloser(int fd) : fd_(fd) {} - ~AutoCloser() { if (fd_) close(fd_); } - private: - int fd_; -}; - -bool FileID::ElfFileIdentifier(unsigned char identifier[16]) { - int fd = 0; - if ((fd = open(path_, O_RDONLY)) < 0) - return false; - - AutoCloser autocloser(fd); - struct stat st; - if (fstat(fd, &st) != 0 || st.st_size <= 0) - return false; - - void *base = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); - if (base == MAP_FAILED) - return false; - - bool success = false; - const void *text_section = NULL; - int text_size = 0; - - if (FindElfTextSection(fd, base, &text_section, &text_size)) { - MD5Context md5; - MD5Init(&md5); - MD5Update(&md5, (const unsigned char *)text_section, text_size); - MD5Final(identifier, &md5); - success = true; - } - - munmap((char *)base, st.st_size); - return success; -} - -// static -bool FileID::ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length) { - if (buffer_length < 34) - return false; - - int buffer_idx = 0; - for (int idx = 0; idx < 16; ++idx) { - int hi = (identifier[idx] >> 4) & 0x0F; - int lo = (identifier[idx]) & 0x0F; - - buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi; - buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo; - } - - // Add an extra "0" by the end. - buffer[buffer_idx++] = '0'; - - // NULL terminate - buffer[buffer_idx] = 0; - - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/file_id.h b/thirdparty/google-breakpad/r318/src/common/solaris/file_id.h deleted file mode 100644 index 375e8575..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/file_id.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// file_id.h: Return a unique identifier for a file -// -// Author: Alfred Peng - -#ifndef COMMON_SOLARIS_FILE_ID_H__ -#define COMMON_SOLARIS_FILE_ID_H__ - -#include - -namespace google_breakpad { - -class FileID { - public: - FileID(const char *path); - ~FileID() {}; - - // Load the identifier for the elf file path specified in the constructor into - // |identifier|. Return false if the identifier could not be created for the - // file. - // The current implementation will return the MD5 hash of the file's bytes. - bool ElfFileIdentifier(unsigned char identifier[16]); - - // Convert the |identifier| data to a NULL terminated string. The string will - // be formatted as a MDCVInfoPDB70 struct. - // The |buffer| should be at least 34 bytes long to receive all of the data - // and termination. Shorter buffers will return false. - static bool ConvertIdentifierToString(const unsigned char identifier[16], - char *buffer, int buffer_length); - - private: - // Storage for the path specified - char path_[PATH_MAX]; -}; - -} // namespace google_breakpad - -#endif // COMMON_SOLARIS_FILE_ID_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.cc b/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.cc deleted file mode 100644 index 70940259..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.cc +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include - -#include -#include -#include - -#include "common/solaris/guid_creator.h" - -// -// GUIDGenerator -// -// This class is used to generate random GUID. -// Currently use random number to generate a GUID. This should be OK since -// we don't expect crash to happen very offen. -// -class GUIDGenerator { - public: - GUIDGenerator() { - srandom(time(NULL)); - } - - bool CreateGUID(GUID *guid) const { - guid->data1 = random(); - guid->data2 = (u_int16_t)(random()); - guid->data3 = (u_int16_t)(random()); - *reinterpret_cast(&guid->data4[0]) = random(); - *reinterpret_cast(&guid->data4[4]) = random(); - return true; - } -}; - -// Guid generator. -const GUIDGenerator kGuidGenerator; - -bool CreateGUID(GUID *guid) { - return kGuidGenerator.CreateGUID(guid); -}; - -// Parse guid to string. -bool GUIDToString(const GUID *guid, char *buf, int buf_len) { - // Should allow more space the the max length of GUID. - assert(buf_len > kGUIDStringLength); - int num = snprintf(buf, buf_len, kGUIDFormatString, - guid->data1, guid->data2, guid->data3, - *reinterpret_cast(&(guid->data4[0])), - *reinterpret_cast(&(guid->data4[4]))); - if (num != kGUIDStringLength) - return false; - - buf[num] = '\0'; - return true; -} diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.h b/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.h deleted file mode 100644 index 4aee3a1c..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/guid_creator.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#ifndef COMMON_SOLARIS_GUID_CREATOR_H__ -#define COMMON_SOLARIS_GUID_CREATOR_H__ - -#include "google_breakpad/common/minidump_format.h" - -typedef MDGUID GUID; - -// Format string for parsing GUID. -#define kGUIDFormatString "%08x-%04x-%04x-%08x-%08x" -// Length of GUID string. Don't count the ending '\0'. -#define kGUIDStringLength 36 - -// Create a guid. -bool CreateGUID(GUID *guid); - -// Get the string from guid. -bool GUIDToString(const GUID *guid, char *buf, int buf_len); - -#endif // COMMON_SOLARIS_GUID_CREATOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/solaris/message_output.h b/thirdparty/google-breakpad/r318/src/common/solaris/message_output.h deleted file mode 100644 index 3e3b1d46..00000000 --- a/thirdparty/google-breakpad/r318/src/common/solaris/message_output.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#ifndef COMMON_SOLARIS_MESSAGE_OUTPUT_H__ -#define COMMON_SOLARIS_MESSAGE_OUTPUT_H__ - -namespace google_breakpad { - -const int MESSAGE_MAX = 1000; - -// Message output macros. -// snprintf doesn't operate heap on Solaris, while printf and fprintf do. -// Use snprintf here to avoid heap allocation. -#define print_message1(std, message) \ - char buffer[MESSAGE_MAX]; \ - int len = snprintf(buffer, MESSAGE_MAX, message); \ - write(std, buffer, len) - -#define print_message2(std, message, para) \ - char buffer[MESSAGE_MAX]; \ - int len = snprintf(buffer, MESSAGE_MAX, message, para); \ - write(std, buffer, len); - -} // namespace google_breakpad - -#endif // COMMON_SOLARIS_MESSAGE_OUTPUT_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/string_conversion.cc b/thirdparty/google-breakpad/r318/src/common/string_conversion.cc deleted file mode 100644 index 50054ebc..00000000 --- a/thirdparty/google-breakpad/r318/src/common/string_conversion.cc +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "common/convert_UTF.h" -#include "processor/scoped_ptr.h" -#include "common/string_conversion.h" -#include - -namespace google_breakpad { - -using std::string; -using std::vector; - -void UTF8ToUTF16(const char *in, vector *out) { - size_t source_length = strlen(in); - const UTF8 *source_ptr = reinterpret_cast(in); - const UTF8 *source_end_ptr = source_ptr + source_length; - // Erase the contents and zero fill to the expected size - out->empty(); - out->insert(out->begin(), source_length, 0); - u_int16_t *target_ptr = &(*out)[0]; - u_int16_t *target_end_ptr = target_ptr + out->capacity() * sizeof(u_int16_t); - ConversionResult result = ConvertUTF8toUTF16(&source_ptr, source_end_ptr, - &target_ptr, target_end_ptr, - strictConversion); - - // Resize to be the size of the # of converted characters + NULL - out->resize(result == conversionOK ? target_ptr - &(*out)[0] + 1: 0); -} - -int UTF8ToUTF16Char(const char *in, int in_length, u_int16_t out[2]) { - const UTF8 *source_ptr = reinterpret_cast(in); - const UTF8 *source_end_ptr = source_ptr + sizeof(char); - u_int16_t *target_ptr = out; - u_int16_t *target_end_ptr = target_ptr + 2 * sizeof(u_int16_t); - out[0] = out[1] = 0; - - // Process one character at a time - while (1) { - ConversionResult result = ConvertUTF8toUTF16(&source_ptr, source_end_ptr, - &target_ptr, target_end_ptr, - strictConversion); - - if (result == conversionOK) - return source_ptr - reinterpret_cast(in); - - // Add another character to the input stream and try again - source_ptr = reinterpret_cast(in); - ++source_end_ptr; - - if (source_end_ptr > reinterpret_cast(in) + in_length) - break; - } - - return 0; -} - -void UTF32ToUTF16(const wchar_t *in, vector *out) { - size_t source_length = wcslen(in); - const UTF32 *source_ptr = reinterpret_cast(in); - const UTF32 *source_end_ptr = source_ptr + source_length; - // Erase the contents and zero fill to the expected size - out->empty(); - out->insert(out->begin(), source_length, 0); - u_int16_t *target_ptr = &(*out)[0]; - u_int16_t *target_end_ptr = target_ptr + out->capacity() * sizeof(u_int16_t); - ConversionResult result = ConvertUTF32toUTF16(&source_ptr, source_end_ptr, - &target_ptr, target_end_ptr, - strictConversion); - - // Resize to be the size of the # of converted characters + NULL - out->resize(result == conversionOK ? target_ptr - &(*out)[0] + 1: 0); -} - -void UTF32ToUTF16Char(wchar_t in, u_int16_t out[2]) { - const UTF32 *source_ptr = reinterpret_cast(&in); - const UTF32 *source_end_ptr = source_ptr + 1; - u_int16_t *target_ptr = out; - u_int16_t *target_end_ptr = target_ptr + 2 * sizeof(u_int16_t); - out[0] = out[1] = 0; - ConversionResult result = ConvertUTF32toUTF16(&source_ptr, source_end_ptr, - &target_ptr, target_end_ptr, - strictConversion); - - if (result != conversionOK) { - out[0] = out[1] = 0; - } -} - -static inline u_int16_t Swap(u_int16_t value) { - return (value >> 8) | (value << 8); -} - -string UTF16ToUTF8(const vector &in, bool swap) { - const UTF16 *source_ptr = &in[0]; - scoped_ptr source_buffer; - - // If we're to swap, we need to make a local copy and swap each byte pair - if (swap) { - int idx = 0; - source_buffer.reset(new u_int16_t[in.size()]); - UTF16 *source_buffer_ptr = source_buffer.get(); - for (vector::const_iterator it = in.begin(); - it != in.end(); ++it, ++idx) - source_buffer_ptr[idx] = Swap(*it); - - source_ptr = source_buffer.get(); - } - - // The maximum expansion would be 4x the size of the input string. - const UTF16 *source_end_ptr = source_ptr + in.size(); - int target_capacity = in.size() * 4; - scoped_array target_buffer(new UTF8[target_capacity]); - UTF8 *target_ptr = target_buffer.get(); - UTF8 *target_end_ptr = target_ptr + target_capacity; - ConversionResult result = ConvertUTF16toUTF8(&source_ptr, source_end_ptr, - &target_ptr, target_end_ptr, - strictConversion); - - if (result == conversionOK) { - const char *targetPtr = reinterpret_cast(target_buffer.get()); - string result(targetPtr); - return result; - } - - return ""; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/string_conversion.h b/thirdparty/google-breakpad/r318/src/common/string_conversion.h deleted file mode 100644 index d51f46bb..00000000 --- a/thirdparty/google-breakpad/r318/src/common/string_conversion.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// string_conversion.h: Conversion between different UTF-8/16/32 encodings. - -#ifndef COMMON_STRING_CONVERSION_H__ -#define COMMON_STRING_CONVERSION_H__ - -#include -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::vector; - -// Convert |in| to UTF-16 into |out|. Use platform byte ordering. If the -// conversion failed, |out| will be zero length. -void UTF8ToUTF16(const char *in, vector *out); - -// Convert at least one character (up to a maximum of |in_length|) from |in| -// to UTF-16 into |out|. Return the number of characters consumed from |in|. -// Any unused characters in |out| will be initialized to 0. No memory will -// be allocated by this routine. -int UTF8ToUTF16Char(const char *in, int in_length, u_int16_t out[2]); - -// Convert |in| to UTF-16 into |out|. Use platform byte ordering. If the -// conversion failed, |out| will be zero length. -void UTF32ToUTF16(const wchar_t *in, vector *out); - -// Convert |in| to UTF-16 into |out|. Any unused characters in |out| will be -// initialized to 0. No memory will be allocated by this routine. -void UTF32ToUTF16Char(wchar_t in, u_int16_t out[2]); - -// Convert |in| to UTF-8. If |swap| is true, swap bytes before converting. -std::string UTF16ToUTF8(const vector &in, bool swap); - -} // namespace google_breakpad - -#endif // COMMON_STRING_CONVERSION_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/windows/guid_string.cc b/thirdparty/google-breakpad/r318/src/common/windows/guid_string.cc deleted file mode 100644 index b7f877e6..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/guid_string.cc +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// guid_string.cc: Convert GUIDs to strings. -// -// See guid_string.h for documentation. - -#include - -#include "common/windows/string_utils-inl.h" - -#include "common/windows/guid_string.h" - -namespace google_breakpad { - -// static -wstring GUIDString::GUIDToWString(GUID *guid) { - wchar_t guid_string[37]; - swprintf( - guid_string, sizeof(guid_string) / sizeof(guid_string[0]), - L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", - guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], - guid->Data4[3], guid->Data4[4], guid->Data4[5], - guid->Data4[6], guid->Data4[7]); - - // remove when VC++7.1 is no longer supported - guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0'; - - return wstring(guid_string); -} - -// static -wstring GUIDString::GUIDToSymbolServerWString(GUID *guid) { - wchar_t guid_string[33]; - swprintf( - guid_string, sizeof(guid_string) / sizeof(guid_string[0]), - L"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X", - guid->Data1, guid->Data2, guid->Data3, - guid->Data4[0], guid->Data4[1], guid->Data4[2], - guid->Data4[3], guid->Data4[4], guid->Data4[5], - guid->Data4[6], guid->Data4[7]); - - // remove when VC++7.1 is no longer supported - guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0'; - - return wstring(guid_string); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/windows/guid_string.h b/thirdparty/google-breakpad/r318/src/common/windows/guid_string.h deleted file mode 100644 index f8aa8a23..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/guid_string.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// guid_string.cc: Convert GUIDs to strings. - -#ifndef COMMON_WINDOWS_GUID_STRING_H__ -#define COMMON_WINDOWS_GUID_STRING_H__ - -#include - -#include - -namespace google_breakpad { - -using std::wstring; - -class GUIDString { - public: - // Converts guid to a string in the format recommended by RFC 4122 and - // returns the string. - static wstring GUIDToWString(GUID *guid); - - // Converts guid to a string formatted as uppercase hexadecimal, with - // no separators, and returns the string. This is the format used for - // symbol server identifiers, although identifiers have an age tacked - // on to the string. - static wstring GUIDToSymbolServerWString(GUID *guid); -}; - -} // namespace google_breakpad - -#endif // COMMON_WINDOWS_GUID_STRING_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/windows/http_upload.cc b/thirdparty/google-breakpad/r318/src/common/windows/http_upload.cc deleted file mode 100644 index 2f9ffa92..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/http_upload.cc +++ /dev/null @@ -1,393 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include - -#include "common/windows/string_utils-inl.h" - -#include "common/windows/http_upload.h" - -namespace google_breakpad { - -using std::ifstream; -using std::ios; - -static const wchar_t kUserAgent[] = L"Breakpad/1.0 (Windows)"; - -// Helper class which closes an internet handle when it goes away -class HTTPUpload::AutoInternetHandle { - public: - explicit AutoInternetHandle(HINTERNET handle) : handle_(handle) {} - ~AutoInternetHandle() { - if (handle_) { - InternetCloseHandle(handle_); - } - } - - HINTERNET get() { return handle_; } - - private: - HINTERNET handle_; -}; - -// static -bool HTTPUpload::SendRequest(const wstring &url, - const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - wstring *response_body, - int *response_code) { - if (response_code) { - *response_code = 0; - } - - // TODO(bryner): support non-ASCII parameter names - if (!CheckParameters(parameters)) { - return false; - } - - // Break up the URL and make sure we can handle it - wchar_t scheme[16], host[256], path[256]; - URL_COMPONENTS components; - memset(&components, 0, sizeof(components)); - components.dwStructSize = sizeof(components); - components.lpszScheme = scheme; - components.dwSchemeLength = sizeof(scheme) / sizeof(scheme[0]); - components.lpszHostName = host; - components.dwHostNameLength = sizeof(host) / sizeof(host[0]); - components.lpszUrlPath = path; - components.dwUrlPathLength = sizeof(path) / sizeof(path[0]); - if (!InternetCrackUrl(url.c_str(), static_cast(url.size()), - 0, &components)) { - return false; - } - bool secure = false; - if (wcscmp(scheme, L"https") == 0) { - secure = true; - } else if (wcscmp(scheme, L"http") != 0) { - return false; - } - - AutoInternetHandle internet(InternetOpen(kUserAgent, - INTERNET_OPEN_TYPE_PRECONFIG, - NULL, // proxy name - NULL, // proxy bypass - 0)); // flags - if (!internet.get()) { - return false; - } - - AutoInternetHandle connection(InternetConnect(internet.get(), - host, - components.nPort, - NULL, // user name - NULL, // password - INTERNET_SERVICE_HTTP, - 0, // flags - NULL)); // context - if (!connection.get()) { - return false; - } - - DWORD http_open_flags = secure ? INTERNET_FLAG_SECURE : 0; - AutoInternetHandle request(HttpOpenRequest(connection.get(), - L"POST", - path, - NULL, // version - NULL, // referer - NULL, // agent type - http_open_flags, - NULL)); // context - if (!request.get()) { - return false; - } - - wstring boundary = GenerateMultipartBoundary(); - wstring content_type_header = GenerateRequestHeader(boundary); - HttpAddRequestHeaders(request.get(), - content_type_header.c_str(), - static_cast(-1), - HTTP_ADDREQ_FLAG_ADD); - - string request_body; - if (!GenerateRequestBody(parameters, upload_file, - file_part_name, boundary, &request_body)) { - return false; - } - - if (!HttpSendRequest(request.get(), NULL, 0, - const_cast(request_body.data()), - static_cast(request_body.size()))) { - return false; - } - - // The server indicates a successful upload with HTTP status 200. - wchar_t http_status[4]; - DWORD http_status_size = sizeof(http_status); - if (!HttpQueryInfo(request.get(), HTTP_QUERY_STATUS_CODE, - static_cast(&http_status), &http_status_size, - 0)) { - return false; - } - - int http_response = wcstol(http_status, NULL, 10); - if (response_code) { - *response_code = http_response; - } - - bool result = (http_response == 200); - - if (result) { - result = ReadResponse(request.get(), response_body); - } - - return result; -} - -// static -bool HTTPUpload::ReadResponse(HINTERNET request, wstring *response) { - bool has_content_length_header = false; - wchar_t content_length[32]; - DWORD content_length_size = sizeof(content_length); - DWORD claimed_size = 0; - string response_body; - - if (HttpQueryInfo(request, HTTP_QUERY_CONTENT_LENGTH, - static_cast(&content_length), - &content_length_size, 0)) { - has_content_length_header = true; - claimed_size = wcstol(content_length, NULL, 10); - response_body.reserve(claimed_size); - } - - - DWORD bytes_available; - DWORD total_read = 0; - bool return_code; - - while ((return_code = InternetQueryDataAvailable(request, &bytes_available, - 0, 0) != 0) && - bytes_available > 0) { - vector response_buffer(bytes_available); - DWORD size_read; - - if ((return_code = InternetReadFile(request, &response_buffer[0], - bytes_available, &size_read) != 0) && - size_read > 0) { - total_read += size_read; - response_body.append(&response_buffer[0], size_read); - } else { - break; - } - } - - bool succeeded = return_code && (!has_content_length_header || - (total_read == claimed_size)); - if (succeeded && response) { - *response = UTF8ToWide(response_body); - } - - return succeeded; -} - -// static -wstring HTTPUpload::GenerateMultipartBoundary() { - // The boundary has 27 '-' characters followed by 16 hex digits - static const wchar_t kBoundaryPrefix[] = L"---------------------------"; - static const int kBoundaryLength = 27 + 16 + 1; - - // Generate some random numbers to fill out the boundary - int r0 = rand(); - int r1 = rand(); - - wchar_t temp[kBoundaryLength]; - swprintf(temp, kBoundaryLength, L"%s%08X%08X", kBoundaryPrefix, r0, r1); - - // remove when VC++7.1 is no longer supported - temp[kBoundaryLength - 1] = L'\0'; - - return wstring(temp); -} - -// static -wstring HTTPUpload::GenerateRequestHeader(const wstring &boundary) { - wstring header = L"Content-Type: multipart/form-data; boundary="; - header += boundary; - return header; -} - -// static -bool HTTPUpload::GenerateRequestBody(const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - const wstring &boundary, - string *request_body) { - vector contents; - GetFileContents(upload_file, &contents); - if (contents.empty()) { - return false; - } - - string boundary_str = WideToUTF8(boundary); - if (boundary_str.empty()) { - return false; - } - - request_body->clear(); - - // Append each of the parameter pairs as a form-data part - for (map::const_iterator pos = parameters.begin(); - pos != parameters.end(); ++pos) { - request_body->append("--" + boundary_str + "\r\n"); - request_body->append("Content-Disposition: form-data; name=\"" + - WideToUTF8(pos->first) + "\"\r\n\r\n" + - WideToUTF8(pos->second) + "\r\n"); - } - - // Now append the upload file as a binary (octet-stream) part - string filename_utf8 = WideToUTF8(upload_file); - if (filename_utf8.empty()) { - return false; - } - - string file_part_name_utf8 = WideToUTF8(file_part_name); - if (file_part_name_utf8.empty()) { - return false; - } - - request_body->append("--" + boundary_str + "\r\n"); - request_body->append("Content-Disposition: form-data; " - "name=\"" + file_part_name_utf8 + "\"; " - "filename=\"" + filename_utf8 + "\"\r\n"); - request_body->append("Content-Type: application/octet-stream\r\n"); - request_body->append("\r\n"); - - if (!contents.empty()) { - request_body->append(&(contents[0]), contents.size()); - } - request_body->append("\r\n"); - request_body->append("--" + boundary_str + "--\r\n"); - return true; -} - -// static -void HTTPUpload::GetFileContents(const wstring &filename, - vector *contents) { - // The "open" method on pre-MSVC8 ifstream implementations doesn't accept a - // wchar_t* filename, so use _wfopen directly in that case. For VC8 and - // later, _wfopen has been deprecated in favor of _wfopen_s, which does - // not exist in earlier versions, so let the ifstream open the file itself. -#if _MSC_VER >= 1400 // MSVC 2005/8 - ifstream file; - file.open(filename.c_str(), ios::binary); -#else // _MSC_VER >= 1400 - ifstream file(_wfopen(filename.c_str(), L"rb")); -#endif // _MSC_VER >= 1400 - if (file.is_open()) { - file.seekg(0, ios::end); - int length = file.tellg(); - contents->resize(length); - if (length != 0) { - file.seekg(0, ios::beg); - file.read(&((*contents)[0]), length); - } - file.close(); - } else { - contents->clear(); - } -} - -// static -wstring HTTPUpload::UTF8ToWide(const string &utf8) { - if (utf8.length() == 0) { - return wstring(); - } - - // compute the length of the buffer we'll need - int charcount = MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, NULL, 0); - - if (charcount == 0) { - return wstring(); - } - - // convert - wchar_t* buf = new wchar_t[charcount]; - MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, buf, charcount); - wstring result(buf); - delete[] buf; - return result; -} - -// static -string HTTPUpload::WideToUTF8(const wstring &wide) { - if (wide.length() == 0) { - return string(); - } - - // compute the length of the buffer we'll need - int charcount = WideCharToMultiByte(CP_UTF8, 0, wide.c_str(), -1, - NULL, 0, NULL, NULL); - if (charcount == 0) { - return string(); - } - - // convert - char *buf = new char[charcount]; - WideCharToMultiByte(CP_UTF8, 0, wide.c_str(), -1, buf, charcount, - NULL, NULL); - - string result(buf); - delete[] buf; - return result; -} - -// static -bool HTTPUpload::CheckParameters(const map ¶meters) { - for (map::const_iterator pos = parameters.begin(); - pos != parameters.end(); ++pos) { - const wstring &str = pos->first; - if (str.size() == 0) { - return false; // disallow empty parameter names - } - for (unsigned int i = 0; i < str.size(); ++i) { - wchar_t c = str[i]; - if (c < 32 || c == '"' || c > 127) { - return false; - } - } - } - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/windows/http_upload.h b/thirdparty/google-breakpad/r318/src/common/windows/http_upload.h deleted file mode 100644 index a1ba7ae1..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/http_upload.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// HTTPUpload provides a "nice" API to send a multipart HTTP(S) POST -// request using wininet. It currently supports requests that contain -// a set of string parameters (key/value pairs), and a file to upload. - -#ifndef COMMON_WINDOWS_HTTP_UPLOAD_H__ -#define COMMON_WINDOWS_HTTP_UPLOAD_H__ - -#pragma warning( push ) -// Disable exception handler warnings. -#pragma warning( disable : 4530 ) - -#include -#include - -#include -#include -#include - -namespace google_breakpad { - -using std::string; -using std::wstring; -using std::map; -using std::vector; - -class HTTPUpload { - public: - // Sends the given set of parameters, along with the contents of - // upload_file, as a multipart POST request to the given URL. - // file_part_name contains the name of the file part of the request - // (i.e. it corresponds to the name= attribute on an . - // Parameter names must contain only printable ASCII characters, - // and may not contain a quote (") character. - // Only HTTP(S) URLs are currently supported. Returns true on success. - // If the request is successful and response_body is non-NULL, - // the response body will be returned in response_body. - // If response_code is non-NULL, it will be set to the HTTP response code - // received (or 0 if the request failed before getting an HTTP response). - static bool SendRequest(const wstring &url, - const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - wstring *response_body, - int *response_code); - - private: - class AutoInternetHandle; - - // Retrieves the HTTP response. If NULL is passed in for response, - // this merely checks (via the return value) that we were successfully - // able to retrieve exactly as many bytes of content in the response as - // were specified in the Content-Length header. - static bool HTTPUpload::ReadResponse(HINTERNET request, wstring* response); - - // Generates a new multipart boundary for a POST request - static wstring GenerateMultipartBoundary(); - - // Generates a HTTP request header for a multipart form submit. - static wstring GenerateRequestHeader(const wstring &boundary); - - // Given a set of parameters, an upload filename, and a file part name, - // generates a multipart request body string with these parameters - // and minidump contents. Returns true on success. - static bool GenerateRequestBody(const map ¶meters, - const wstring &upload_file, - const wstring &file_part_name, - const wstring &boundary, - string *request_body); - - // Fills the supplied vector with the contents of filename. - static void GetFileContents(const wstring &filename, vector *contents); - - // Converts a UTF8 string to UTF16. - static wstring UTF8ToWide(const string &utf8); - - // Converts a UTF16 string to UTF8. - static string WideToUTF8(const wstring &wide); - - // Checks that the given list of parameters has only printable - // ASCII characters in the parameter name, and does not contain - // any quote (") characters. Returns true if so. - static bool CheckParameters(const map ¶meters); - - // No instances of this class should be created. - // Disallow all constructors, destructors, and operator=. - HTTPUpload(); - explicit HTTPUpload(const HTTPUpload &); - void operator=(const HTTPUpload &); - ~HTTPUpload(); -}; - -} // namespace google_breakpad - -#pragma warning( pop ) - -#endif // COMMON_WINDOWS_HTTP_UPLOAD_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.cc b/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.cc deleted file mode 100644 index 0392627f..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.cc +++ /dev/null @@ -1,800 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include - -#include "common/windows/string_utils-inl.h" - -#include "common/windows/pdb_source_line_writer.h" -#include "common/windows/guid_string.h" - -// This constant may be missing from DbgHelp.h. See the documentation for -// IDiaSymbol::get_undecoratedNameEx. -#ifndef UNDNAME_NO_ECSU -#define UNDNAME_NO_ECSU 0x8000 // Suppresses enum/class/struct/union. -#endif // UNDNAME_NO_ECSU - -namespace google_breakpad { - -PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) { -} - -PDBSourceLineWriter::~PDBSourceLineWriter() { -} - -bool PDBSourceLineWriter::Open(const wstring &file, FileFormat format) { - Close(); - - if (FAILED(CoInitialize(NULL))) { - fprintf(stderr, "CoInitialize failed\n"); - return false; - } - - CComPtr data_source; - if (FAILED(data_source.CoCreateInstance(CLSID_DiaSource))) { - fprintf(stderr, "CoCreateInstance CLSID_DiaSource failed " - "(msdia80.dll unregistered?)\n"); - return false; - } - - switch (format) { - case PDB_FILE: - if (FAILED(data_source->loadDataFromPdb(file.c_str()))) { - fprintf(stderr, "loadDataFromPdb failed\n"); - return false; - } - break; - case EXE_FILE: - if (FAILED(data_source->loadDataForExe(file.c_str(), NULL, NULL))) { - fprintf(stderr, "loadDataForExe failed\n"); - return false; - } - break; - case ANY_FILE: - if (FAILED(data_source->loadDataFromPdb(file.c_str()))) { - if (FAILED(data_source->loadDataForExe(file.c_str(), NULL, NULL))) { - fprintf(stderr, "loadDataForPdb and loadDataFromExe failed\n"); - return false; - } - } - break; - default: - fprintf(stderr, "Unknown file format\n"); - return false; - } - - if (FAILED(data_source->openSession(&session_))) { - fprintf(stderr, "openSession failed\n"); - } - - return true; -} - -bool PDBSourceLineWriter::PrintLines(IDiaEnumLineNumbers *lines) { - // The line number format is: - // - CComPtr line; - ULONG count; - - while (SUCCEEDED(lines->Next(1, &line, &count)) && count == 1) { - DWORD rva; - if (FAILED(line->get_relativeVirtualAddress(&rva))) { - fprintf(stderr, "failed to get line rva\n"); - return false; - } - - DWORD length; - if (FAILED(line->get_length(&length))) { - fprintf(stderr, "failed to get line code length\n"); - return false; - } - - DWORD source_id; - if (FAILED(line->get_sourceFileId(&source_id))) { - fprintf(stderr, "failed to get line source file id\n"); - return false; - } - - DWORD line_num; - if (FAILED(line->get_lineNumber(&line_num))) { - fprintf(stderr, "failed to get line number\n"); - return false; - } - - fprintf(output_, "%x %x %d %d\n", rva, length, line_num, source_id); - line.Release(); - } - return true; -} - -bool PDBSourceLineWriter::PrintFunction(IDiaSymbol *function) { - // The function format is: - // FUNC
      - DWORD rva; - if (FAILED(function->get_relativeVirtualAddress(&rva))) { - fprintf(stderr, "couldn't get rva\n"); - return false; - } - - ULONGLONG length; - if (FAILED(function->get_length(&length))) { - fprintf(stderr, "failed to get function length\n"); - return false; - } - - if (length == 0) { - // Silently ignore zero-length functions, which can infrequently pop up. - return true; - } - - CComBSTR name; - int stack_param_size; - if (!GetSymbolFunctionName(function, &name, &stack_param_size)) { - return false; - } - - // If the decorated name didn't give the parameter size, try to - // calculate it. - if (stack_param_size < 0) { - stack_param_size = GetFunctionStackParamSize(function); - } - - fprintf(output_, "FUNC %x %" WIN_STRING_FORMAT_LL "x %x %ws\n", - rva, length, stack_param_size, name); - - CComPtr lines; - if (FAILED(session_->findLinesByRVA(rva, DWORD(length), &lines))) { - return false; - } - - if (!PrintLines(lines)) { - return false; - } - return true; -} - -bool PDBSourceLineWriter::PrintSourceFiles() { - CComPtr global; - if (FAILED(session_->get_globalScope(&global))) { - fprintf(stderr, "get_globalScope failed\n"); - return false; - } - - CComPtr compilands; - if (FAILED(global->findChildren(SymTagCompiland, NULL, - nsNone, &compilands))) { - fprintf(stderr, "findChildren failed\n"); - return false; - } - - CComPtr compiland; - ULONG count; - while (SUCCEEDED(compilands->Next(1, &compiland, &count)) && count == 1) { - CComPtr source_files; - if (FAILED(session_->findFile(compiland, NULL, nsNone, &source_files))) { - return false; - } - CComPtr file; - while (SUCCEEDED(source_files->Next(1, &file, &count)) && count == 1) { - DWORD file_id; - if (FAILED(file->get_uniqueId(&file_id))) { - return false; - } - - CComBSTR file_name; - if (FAILED(file->get_fileName(&file_name))) { - return false; - } - - fwprintf(output_, L"FILE %d %s\n", file_id, file_name); - file.Release(); - } - compiland.Release(); - } - return true; -} - -bool PDBSourceLineWriter::PrintFunctions() { - CComPtr symbols; - if (FAILED(session_->getSymbolsByAddr(&symbols))) { - fprintf(stderr, "failed to get symbol enumerator\n"); - return false; - } - - CComPtr symbol; - if (FAILED(symbols->symbolByAddr(1, 0, &symbol))) { - fprintf(stderr, "failed to enumerate symbols\n"); - return false; - } - - DWORD rva_last = 0; - if (FAILED(symbol->get_relativeVirtualAddress(&rva_last))) { - fprintf(stderr, "failed to get symbol rva\n"); - return false; - } - - ULONG count; - do { - DWORD tag; - if (FAILED(symbol->get_symTag(&tag))) { - fprintf(stderr, "failed to get symbol tag\n"); - return false; - } - - // For a given function, DIA seems to give either a symbol with - // SymTagFunction or SymTagPublicSymbol, but not both. This means - // that PDBSourceLineWriter will output either a FUNC or PUBLIC line, - // but not both. - if (tag == SymTagFunction) { - if (!PrintFunction(symbol)) { - return false; - } - } else if (tag == SymTagPublicSymbol) { - if (!PrintCodePublicSymbol(symbol)) { - return false; - } - } - symbol.Release(); - } while (SUCCEEDED(symbols->Next(1, &symbol, &count)) && count == 1); - - return true; -} - -bool PDBSourceLineWriter::PrintFrameData() { - // It would be nice if it were possible to output frame data alongside the - // associated function, as is done with line numbers, but the DIA API - // doesn't make it possible to get the frame data in that way. - - CComPtr tables; - if (FAILED(session_->getEnumTables(&tables))) - return false; - - // Pick up the first table that supports IDiaEnumFrameData. - CComPtr frame_data_enum; - CComPtr table; - ULONG count; - while (!frame_data_enum && - SUCCEEDED(tables->Next(1, &table, &count)) && - count == 1) { - table->QueryInterface(_uuidof(IDiaEnumFrameData), - reinterpret_cast(&frame_data_enum)); - table.Release(); - } - if (!frame_data_enum) - return false; - - DWORD last_type = -1; - DWORD last_rva = -1; - DWORD last_code_size = 0; - DWORD last_prolog_size = -1; - - CComPtr frame_data; - while (SUCCEEDED(frame_data_enum->Next(1, &frame_data, &count)) && - count == 1) { - DWORD type; - if (FAILED(frame_data->get_type(&type))) - return false; - - DWORD rva; - if (FAILED(frame_data->get_relativeVirtualAddress(&rva))) - return false; - - DWORD code_size; - if (FAILED(frame_data->get_lengthBlock(&code_size))) - return false; - - DWORD prolog_size; - if (FAILED(frame_data->get_lengthProlog(&prolog_size))) - return false; - - // epliog_size is always 0. - DWORD epilog_size = 0; - - // parameter_size is the size of parameters passed on the stack. If any - // parameters are not passed on the stack (such as in registers), their - // sizes will not be included in parameter_size. - DWORD parameter_size; - if (FAILED(frame_data->get_lengthParams(¶meter_size))) - return false; - - DWORD saved_register_size; - if (FAILED(frame_data->get_lengthSavedRegisters(&saved_register_size))) - return false; - - DWORD local_size; - if (FAILED(frame_data->get_lengthLocals(&local_size))) - return false; - - // get_maxStack can return S_FALSE, just use 0 in that case. - DWORD max_stack_size = 0; - if (FAILED(frame_data->get_maxStack(&max_stack_size))) - return false; - - // get_programString can return S_FALSE, indicating that there is no - // program string. In that case, check whether %ebp is used. - HRESULT program_string_result; - CComBSTR program_string; - if (FAILED(program_string_result = frame_data->get_program( - &program_string))) { - return false; - } - - // get_allocatesBasePointer can return S_FALSE, treat that as though - // %ebp is not used. - BOOL allocates_base_pointer = FALSE; - if (program_string_result != S_OK) { - if (FAILED(frame_data->get_allocatesBasePointer( - &allocates_base_pointer))) { - return false; - } - } - - // Only print out a line if type, rva, code_size, or prolog_size have - // changed from the last line. It is surprisingly common (especially in - // system library PDBs) for DIA to return a series of identical - // IDiaFrameData objects. For kernel32.pdb from Windows XP SP2 on x86, - // this check reduces the size of the dumped symbol file by a third. - if (type != last_type || rva != last_rva || code_size != last_code_size || - prolog_size != last_prolog_size) { - fprintf(output_, "STACK WIN %x %x %x %x %x %x %x %x %x %d ", - type, rva, code_size, prolog_size, epilog_size, - parameter_size, saved_register_size, local_size, max_stack_size, - program_string_result == S_OK); - if (program_string_result == S_OK) { - fprintf(output_, "%ws\n", program_string); - } else { - fprintf(output_, "%d\n", allocates_base_pointer); - } - - last_type = type; - last_rva = rva; - last_code_size = code_size; - last_prolog_size = prolog_size; - } - - frame_data.Release(); - } - - return true; -} - -bool PDBSourceLineWriter::PrintCodePublicSymbol(IDiaSymbol *symbol) { - BOOL is_code; - if (FAILED(symbol->get_code(&is_code))) { - return false; - } - if (!is_code) { - return true; - } - - DWORD rva; - if (FAILED(symbol->get_relativeVirtualAddress(&rva))) { - return false; - } - - CComBSTR name; - int stack_param_size; - if (!GetSymbolFunctionName(symbol, &name, &stack_param_size)) { - return false; - } - - fprintf(output_, "PUBLIC %x %x %ws\n", rva, - stack_param_size > 0 ? stack_param_size : 0, name); - return true; -} - -bool PDBSourceLineWriter::PrintPDBInfo() { - PDBModuleInfo info; - if (!GetModuleInfo(&info)) { - return false; - } - - // Hard-code "windows" for the OS because that's the only thing that makes - // sense for PDB files. (This might not be strictly correct for Windows CE - // support, but we don't care about that at the moment.) - fprintf(output_, "MODULE windows %ws %ws %ws\n", - info.cpu.c_str(), info.debug_identifier.c_str(), - info.debug_file.c_str()); - - return true; -} - -// wcstol_positive_strict is sort of like wcstol, but much stricter. string -// should be a buffer pointing to a null-terminated string containing only -// decimal digits. If the entire string can be converted to an integer -// without overflowing, and there are no non-digit characters before the -// result is set to the value and this function returns true. Otherwise, -// this function returns false. This is an alternative to the strtol, atoi, -// and scanf families, which are not as strict about input and in some cases -// don't provide a good way for the caller to determine if a conversion was -// successful. -static bool wcstol_positive_strict(wchar_t *string, int *result) { - int value = 0; - for (wchar_t *c = string; *c != '\0'; ++c) { - int last_value = value; - value *= 10; - // Detect overflow. - if (value / 10 != last_value || value < 0) { - return false; - } - if (*c < '0' || *c > '9') { - return false; - } - unsigned int c_value = *c - '0'; - last_value = value; - value += c_value; - // Detect overflow. - if (value < last_value) { - return false; - } - // Forbid leading zeroes unless the string is just "0". - if (value == 0 && *(c+1) != '\0') { - return false; - } - } - *result = value; - return true; -} - -// static -bool PDBSourceLineWriter::GetSymbolFunctionName(IDiaSymbol *function, - BSTR *name, - int *stack_param_size) { - *stack_param_size = -1; - const DWORD undecorate_options = UNDNAME_NO_MS_KEYWORDS | - UNDNAME_NO_FUNCTION_RETURNS | - UNDNAME_NO_ALLOCATION_MODEL | - UNDNAME_NO_ALLOCATION_LANGUAGE | - UNDNAME_NO_THISTYPE | - UNDNAME_NO_ACCESS_SPECIFIERS | - UNDNAME_NO_THROW_SIGNATURES | - UNDNAME_NO_MEMBER_TYPE | - UNDNAME_NO_RETURN_UDT_MODEL | - UNDNAME_NO_ECSU; - - // Use get_undecoratedNameEx to get readable C++ names with arguments. - if (function->get_undecoratedNameEx(undecorate_options, name) != S_OK) { - if (function->get_name(name) != S_OK) { - fprintf(stderr, "failed to get function name\n"); - return false; - } - // If a name comes from get_name because no undecorated form existed, - // it's already formatted properly to be used as output. Don't do any - // additional processing. - // - // MSVC7's DIA seems to not undecorate names in as many cases as MSVC8's. - // This will result in calling get_name for some C++ symbols, so - // all of the parameter and return type information may not be included in - // the name string. - } else { - // C++ uses a bogus "void" argument for functions and methods that don't - // take any parameters. Take it out of the undecorated name because it's - // ugly and unnecessary. - const wchar_t *replace_string = L"(void)"; - const size_t replace_length = wcslen(replace_string); - const wchar_t *replacement_string = L"()"; - size_t length = wcslen(*name); - if (length >= replace_length) { - wchar_t *name_end = *name + length - replace_length; - if (wcscmp(name_end, replace_string) == 0) { - WindowsStringUtils::safe_wcscpy(name_end, replace_length, - replacement_string); - length = wcslen(*name); - } - } - - // Undecorate names used for stdcall and fastcall. These names prefix - // the identifier with '_' (stdcall) or '@' (fastcall) and suffix it - // with '@' followed by the number of bytes of parameters, in decimal. - // If such a name is found, take note of the size and undecorate it. - // Only do this for names that aren't C++, which is determined based on - // whether the undecorated name contains any ':' or '(' characters. - if (!wcschr(*name, ':') && !wcschr(*name, '(') && - (*name[0] == '_' || *name[0] == '@')) { - wchar_t *last_at = wcsrchr(*name + 1, '@'); - if (last_at && wcstol_positive_strict(last_at + 1, stack_param_size)) { - // If this function adheres to the fastcall convention, it accepts up - // to the first 8 bytes of parameters in registers (%ecx and %edx). - // We're only interested in the stack space used for parameters, so - // so subtract 8 and don't let the size go below 0. - if (*name[0] == '@') { - if (*stack_param_size > 8) { - *stack_param_size -= 8; - } else { - *stack_param_size = 0; - } - } - - // Undecorate the name by moving it one character to the left in its - // buffer, and terminating it where the last '@' had been. - WindowsStringUtils::safe_wcsncpy(*name, length, - *name + 1, last_at - *name - 1); - } else if (*name[0] == '_') { - // This symbol's name is encoded according to the cdecl rules. The - // name doesn't end in a '@' character followed by a decimal positive - // integer, so it's not a stdcall name. Strip off the leading - // underscore. - WindowsStringUtils::safe_wcsncpy(*name, length, *name + 1, length); - } - } - } - - return true; -} - -// static -int PDBSourceLineWriter::GetFunctionStackParamSize(IDiaSymbol *function) { - // This implementation is highly x86-specific. - - // Gather the symbols corresponding to data. - CComPtr data_children; - if (FAILED(function->findChildren(SymTagData, NULL, nsNone, - &data_children))) { - return 0; - } - - // lowest_base is the lowest %ebp-relative byte offset used for a parameter. - // highest_end is one greater than the highest offset (i.e. base + length). - // Stack parameters are assumed to be contiguous, because in reality, they - // are. - int lowest_base = INT_MAX; - int highest_end = INT_MIN; - - CComPtr child; - DWORD count; - while (SUCCEEDED(data_children->Next(1, &child, &count)) && count == 1) { - // If any operation fails at this point, just proceed to the next child. - // Use the next_child label instead of continue because child needs to - // be released before it's reused. Declare constructable/destructable - // types early to avoid gotos that cross initializations. - CComPtr child_type; - - // DataIsObjectPtr is only used for |this|. Because |this| can be passed - // as a stack parameter, look for it in addition to traditional - // parameters. - DWORD child_kind; - if (FAILED(child->get_dataKind(&child_kind)) || - (child_kind != DataIsParam && child_kind != DataIsObjectPtr)) { - goto next_child; - } - - // Only concentrate on register-relative parameters. Parameters may also - // be enregistered (passed directly in a register), but those don't - // consume any stack space, so they're not of interest. - DWORD child_location_type; - if (FAILED(child->get_locationType(&child_location_type)) || - child_location_type != LocIsRegRel) { - goto next_child; - } - - // Of register-relative parameters, the only ones that make any sense are - // %ebp- or %esp-relative. Note that MSVC's debugging information always - // gives parameters as %ebp-relative even when a function doesn't use a - // traditional frame pointer and stack parameters are accessed relative to - // %esp, so just look for %ebp-relative parameters. If you wanted to - // access parameters, you'd probably want to treat these %ebp-relative - // offsets as if they were relative to %esp before a function's prolog - // executed. - DWORD child_register; - if (FAILED(child->get_registerId(&child_register)) || - child_register != CV_REG_EBP) { - goto next_child; - } - - LONG child_register_offset; - if (FAILED(child->get_offset(&child_register_offset))) { - goto next_child; - } - - // IDiaSymbol::get_type can succeed but still pass back a NULL value. - if (FAILED(child->get_type(&child_type)) || !child_type) { - goto next_child; - } - - ULONGLONG child_length; - if (FAILED(child_type->get_length(&child_length))) { - goto next_child; - } - - int child_end = child_register_offset + static_cast(child_length); - if (child_register_offset < lowest_base) { - lowest_base = child_register_offset; - } - if (child_end > highest_end) { - highest_end = child_end; - } - -next_child: - child.Release(); - } - - int param_size = 0; - // Make sure lowest_base isn't less than 4, because [%esp+4] is the lowest - // possible address to find a stack parameter before executing a function's - // prolog (see above). Some optimizations cause parameter offsets to be - // lower than 4, but we're not concerned with those because we're only - // looking for parameters contained in addresses higher than where the - // return address is stored. - if (lowest_base < 4) { - lowest_base = 4; - } - if (highest_end > lowest_base) { - // All stack parameters are pushed as at least 4-byte quantities. If the - // last type was narrower than 4 bytes, promote it. This assumes that all - // parameters' offsets are 4-byte-aligned, which is always the case. Only - // worry about the last type, because we're not summing the type sizes, - // just looking at the lowest and highest offsets. - int remainder = highest_end % 4; - if (remainder) { - highest_end += 4 - remainder; - } - - param_size = highest_end - lowest_base; - } - - return param_size; -} - -bool PDBSourceLineWriter::WriteMap(FILE *map_file) { - output_ = map_file; - - bool ret = PrintPDBInfo() && - PrintSourceFiles() && - PrintFunctions() && - PrintFrameData(); - - output_ = NULL; - return ret; -} - -void PDBSourceLineWriter::Close() { - session_.Release(); -} - -bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) { - if (!info) { - return false; - } - - info->debug_file.clear(); - info->debug_identifier.clear(); - info->cpu.clear(); - - CComPtr global; - if (FAILED(session_->get_globalScope(&global))) { - return false; - } - - // All CPUs in CV_CPU_TYPE_e (cvconst.h) below 0x10 are x86. There's no - // single specific constant to use. - DWORD platform; - if (SUCCEEDED(global->get_platform(&platform)) && platform < 0x10) { - info->cpu = L"x86"; - } else { - // Unexpected, but handle gracefully. - info->cpu = L"unknown"; - } - - // DWORD* and int* are not compatible. This is clean and avoids a cast. - DWORD age; - if (FAILED(global->get_age(&age))) { - return false; - } - - bool uses_guid; - if (!UsesGUID(&uses_guid)) { - return false; - } - - if (uses_guid) { - GUID guid; - if (FAILED(global->get_guid(&guid))) { - return false; - } - - // Use the same format that the MS symbol server uses in filesystem - // hierarchies. - wchar_t age_string[9]; - swprintf(age_string, sizeof(age_string) / sizeof(age_string[0]), - L"%x", age); - - // remove when VC++7.1 is no longer supported - age_string[sizeof(age_string) / sizeof(age_string[0]) - 1] = L'\0'; - - info->debug_identifier = GUIDString::GUIDToSymbolServerWString(&guid); - info->debug_identifier.append(age_string); - } else { - DWORD signature; - if (FAILED(global->get_signature(&signature))) { - return false; - } - - // Use the same format that the MS symbol server uses in filesystem - // hierarchies. - wchar_t identifier_string[17]; - swprintf(identifier_string, - sizeof(identifier_string) / sizeof(identifier_string[0]), - L"%08X%x", signature, age); - - // remove when VC++7.1 is no longer supported - identifier_string[sizeof(identifier_string) / - sizeof(identifier_string[0]) - 1] = L'\0'; - - info->debug_identifier = identifier_string; - } - - CComBSTR debug_file_string; - if (FAILED(global->get_symbolsFileName(&debug_file_string))) { - return false; - } - info->debug_file = - WindowsStringUtils::GetBaseName(wstring(debug_file_string)); - - return true; -} - -bool PDBSourceLineWriter::UsesGUID(bool *uses_guid) { - if (!uses_guid) - return false; - - CComPtr global; - if (FAILED(session_->get_globalScope(&global))) - return false; - - GUID guid; - if (FAILED(global->get_guid(&guid))) - return false; - - DWORD signature; - if (FAILED(global->get_signature(&signature))) - return false; - - // There are two possibilities for guid: either it's a real 128-bit GUID - // as identified in a code module by a new-style CodeView record, or it's - // a 32-bit signature (timestamp) as identified by an old-style record. - // See MDCVInfoPDB70 and MDCVInfoPDB20 in minidump_format.h. - // - // Because DIA doesn't provide a way to directly determine whether a module - // uses a GUID or a 32-bit signature, this code checks whether the first 32 - // bits of guid are the same as the signature, and if the rest of guid is - // zero. If so, then with a pretty high degree of certainty, there's an - // old-style CodeView record in use. This method will only falsely find an - // an old-style CodeView record if a real 128-bit GUID has its first 32 - // bits set the same as the module's signature (timestamp) and the rest of - // the GUID is set to 0. This is highly unlikely. - - GUID signature_guid = {signature}; // 0-initializes other members - *uses_guid = !IsEqualGUID(guid, signature_guid); - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.h b/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.h deleted file mode 100644 index e91d0737..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/pdb_source_line_writer.h +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// PDBSourceLineWriter uses a pdb file produced by Visual C++ to output -// a line/address map for use with BasicSourceLineResolver. - -#ifndef _PDB_SOURCE_LINE_WRITER_H__ -#define _PDB_SOURCE_LINE_WRITER_H__ - -#include - -#include - -struct IDiaEnumLineNumbers; -struct IDiaSession; -struct IDiaSymbol; - -namespace google_breakpad { - -using std::wstring; - -// A structure that carries information that identifies a pdb file. -struct PDBModuleInfo { - public: - // The basename of the pdb file from which information was loaded. - wstring debug_file; - - // The pdb's identifier. For recent pdb files, the identifier consists - // of the pdb's guid, in uppercase hexadecimal form without any dashes - // or separators, followed immediately by the pdb's age, also in - // uppercase hexadecimal form. For older pdb files which have no guid, - // the identifier is the pdb's 32-bit signature value, in zero-padded - // hexadecimal form, followed immediately by the pdb's age, in lowercase - // hexadecimal form. - wstring debug_identifier; - - // A string identifying the cpu that the pdb is associated with. - // Currently, this may be "x86" or "unknown". - wstring cpu; -}; - -class PDBSourceLineWriter { - public: - enum FileFormat { - PDB_FILE, // a .pdb file containing debug symbols - EXE_FILE, // a .exe or .dll file - ANY_FILE // try PDB_FILE and then EXE_FILE - }; - - explicit PDBSourceLineWriter(); - ~PDBSourceLineWriter(); - - // Opens the given file. For executable files, the corresponding pdb - // file must be available; Open will be if it is not. - // If there is already a pdb file open, it is automatically closed. - // Returns true on success. - bool Open(const wstring &file, FileFormat format); - - // Locates the pdb file for the given executable (exe or dll) file, - // and opens it. If there is already a pdb file open, it is automatically - // closed. Returns true on success. - bool OpenExecutable(const wstring &exe_file); - - // Writes a map file from the current pdb file to the given file stream. - // Returns true on success. - bool WriteMap(FILE *map_file); - - // Closes the current pdb file and its associated resources. - void Close(); - - // Retrieves information about the module's debugging file. Returns - // true on success and false on failure. - bool GetModuleInfo(PDBModuleInfo *info); - - // Sets uses_guid to true if the opened file uses a new-style CodeView - // record with a 128-bit GUID, or false if the opened file uses an old-style - // CodeView record. When no GUID is available, a 32-bit signature should be - // used to identify the module instead. If the information cannot be - // determined, this method returns false. - bool UsesGUID(bool *uses_guid); - - private: - // Outputs the line/address pairs for each line in the enumerator. - // Returns true on success. - bool PrintLines(IDiaEnumLineNumbers *lines); - - // Outputs a function address and name, followed by its source line list. - // Returns true on success. - bool PrintFunction(IDiaSymbol *function); - - // Outputs all functions as described above. Returns true on success. - bool PrintFunctions(); - - // Outputs all of the source files in the session's pdb file. - // Returns true on success. - bool PrintSourceFiles(); - - // Outputs all of the frame information necessary to construct stack - // backtraces in the absence of frame pointers. Returns true on success. - bool PrintFrameData(); - - // Outputs a single public symbol address and name, if the symbol corresponds - // to a code address. Returns true on success. If symbol is does not - // correspond to code, returns true without outputting anything. - bool PrintCodePublicSymbol(IDiaSymbol *symbol); - - // Outputs a line identifying the PDB file that is being dumped, along with - // its uuid and age. - bool PrintPDBInfo(); - - // Returns the function name for a symbol. If possible, the name is - // undecorated. If the symbol's decorated form indicates the size of - // parameters on the stack, this information is returned in stack_param_size. - // Returns true on success. If the symbol doesn't encode parameter size - // information, stack_param_size is set to -1. - static bool GetSymbolFunctionName(IDiaSymbol *function, BSTR *name, - int *stack_param_size); - - // Returns the number of bytes of stack space used for a function's - // parameters. function must have the tag SymTagFunction. In the event of - // a failure, returns 0, which is also a valid number of bytes. - static int GetFunctionStackParamSize(IDiaSymbol *function); - - // The session for the currently-open pdb file. - CComPtr session_; - - // The current output file for this WriteMap invocation. - FILE *output_; - - // Disallow copy ctor and operator= - PDBSourceLineWriter(const PDBSourceLineWriter&); - void operator=(const PDBSourceLineWriter&); -}; - -} // namespace google_breakpad - -#endif // _PDB_SOURCE_LINE_WRITER_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/windows/string_utils-inl.h b/thirdparty/google-breakpad/r318/src/common/windows/string_utils-inl.h deleted file mode 100644 index 6f650812..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/string_utils-inl.h +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// string_utils-inl.h: Safer string manipulation on Windows, supporting -// pre-MSVC8 environments. - -#ifndef COMMON_WINDOWS_STRING_UTILS_INL_H__ -#define COMMON_WINDOWS_STRING_UTILS_INL_H__ - -#include -#include - -#include - -// The "ll" printf format size specifier corresponding to |long long| was -// intrudced in MSVC8. Earlier versions did not provide this size specifier, -// but "I64" can be used to print 64-bit types. Don't use "I64" where "ll" -// is available, in the event of oddball systems where |long long| is not -// 64 bits wide. -#if _MSC_VER >= 1400 // MSVC 2005/8 -#define WIN_STRING_FORMAT_LL "ll" -#else // MSC_VER >= 1400 -#define WIN_STRING_FORMAT_LL "I64" -#endif // MSC_VER >= 1400 - -// A nonconforming version of swprintf, without the length argument, was -// included with the CRT prior to MSVC8. Although a conforming version was -// also available via an overload, it is not reliably chosen. _snwprintf -// behaves as a standards-confirming swprintf should, so force the use of -// _snwprintf when using older CRTs. -#if _MSC_VER < 1400 // MSVC 2005/8 -#define swprintf _snwprintf -#else -// For MSVC8 and newer, swprintf_s is the recommended method. Conveniently, -// it takes the same argument list as swprintf. -#define swprintf swprintf_s -#endif // MSC_VER < 1400 - -namespace google_breakpad { - -using std::string; -using std::wstring; - -class WindowsStringUtils { - public: - // Roughly equivalent to MSVC8's wcscpy_s, except pre-MSVC8, this does - // not fail if source is longer than destination_size. The destination - // buffer is always 0-terminated. - static void safe_wcscpy(wchar_t *destination, size_t destination_size, - const wchar_t *source); - - // Roughly equivalent to MSVC8's wcsncpy_s, except that _TRUNCATE cannot - // be passed directly, and pre-MSVC8, this will not fail if source or count - // are longer than destination_size. The destination buffer is always - // 0-terminated. - static void safe_wcsncpy(wchar_t *destination, size_t destination_size, - const wchar_t *source, size_t count); - - // Performs multi-byte to wide character conversion on C++ strings, using - // mbstowcs_s (MSVC8) or mbstowcs (pre-MSVC8). Returns false on failure, - // without setting wcs. - static bool safe_mbstowcs(const string &mbs, wstring *wcs); - - // Returns the base name of a file, e.g. strips off the path. - static wstring GetBaseName(const wstring &filename); - - private: - // Disallow instantiation and other object-based operations. - WindowsStringUtils(); - WindowsStringUtils(const WindowsStringUtils&); - ~WindowsStringUtils(); - void operator=(const WindowsStringUtils&); -}; - -// static -inline void WindowsStringUtils::safe_wcscpy(wchar_t *destination, - size_t destination_size, - const wchar_t *source) { -#if _MSC_VER >= 1400 // MSVC 2005/8 - wcscpy_s(destination, destination_size, source); -#else // _MSC_VER >= 1400 - // Pre-MSVC 2005/8 doesn't have wcscpy_s. Simulate it with wcsncpy. - // wcsncpy doesn't 0-terminate the destination buffer if the source string - // is longer than size. Ensure that the destination is 0-terminated. - wcsncpy(destination, source, destination_size); - if (destination && destination_size) - destination[destination_size - 1] = 0; -#endif // _MSC_VER >= 1400 -} - -// static -inline void WindowsStringUtils::safe_wcsncpy(wchar_t *destination, - size_t destination_size, - const wchar_t *source, - size_t count) { -#if _MSC_VER >= 1400 // MSVC 2005/8 - wcsncpy_s(destination, destination_size, source, count); -#else // _MSC_VER >= 1400 - // Pre-MSVC 2005/8 doesn't have wcsncpy_s. Simulate it with wcsncpy. - // wcsncpy doesn't 0-terminate the destination buffer if the source string - // is longer than size. Ensure that the destination is 0-terminated. - if (destination_size < count) - count = destination_size; - - wcsncpy(destination, source, count); - if (destination && count) - destination[count - 1] = 0; -#endif // _MSC_VER >= 1400 -} - -} // namespace google_breakpad - -#endif // COMMON_WINDOWS_STRING_UTILS_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/common/windows/string_utils.cc b/thirdparty/google-breakpad/r318/src/common/windows/string_utils.cc deleted file mode 100644 index 5d464802..00000000 --- a/thirdparty/google-breakpad/r318/src/common/windows/string_utils.cc +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -#include "common/windows/string_utils-inl.h" - -namespace google_breakpad { - -// static -wstring WindowsStringUtils::GetBaseName(const wstring &filename) { - wstring base_name(filename); - size_t slash_pos = base_name.find_last_of(L"/\\"); - if (slash_pos != wstring::npos) { - base_name.erase(0, slash_pos + 1); - } - return base_name; -} - -// static -bool WindowsStringUtils::safe_mbstowcs(const string &mbs, wstring *wcs) { - assert(wcs); - - // First, determine the length of the destination buffer. - size_t wcs_length; - -#if _MSC_VER >= 1400 // MSVC 2005/8 - errno_t err; - if ((err = mbstowcs_s(&wcs_length, NULL, 0, mbs.c_str(), _TRUNCATE)) != 0) { - return false; - } -#else // _MSC_VER >= 1400 - if ((wcs_length = mbstowcs(NULL, mbs.c_str(), mbs.length())) < 0) { - return false; - } - - // Leave space for the 0-terminator. - ++wcs_length; -#endif // _MSC_VER >= 1400 - - // TODO(mmentovai): move scoped_ptr into common and use it for wcs_c. - wchar_t *wcs_c = new wchar_t[wcs_length]; - - // Now, convert. -#if _MSC_VER >= 1400 // MSVC 2005/8 - if ((err = mbstowcs_s(NULL, wcs_c, wcs_length, mbs.c_str(), - _TRUNCATE)) != 0) { - delete[] wcs_c; - return false; - } -#else // _MSC_VER >= 1400 - if (mbstowcs(wcs_c, mbs.c_str(), mbs.length()) < 0) { - delete[] wcs_c; - return false; - } - - // Ensure presence of 0-terminator. - wcs_c[wcs_length - 1] = '\0'; -#endif // _MSC_VER >= 1400 - - *wcs = wcs_c; - delete[] wcs_c; - return true; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/config.h b/thirdparty/google-breakpad/r318/src/config.h deleted file mode 100644 index 297bfc19..00000000 --- a/thirdparty/google-breakpad/r318/src/config.h +++ /dev/null @@ -1,56 +0,0 @@ -/* src/config.h. Generated from config.h.in by configure. */ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Name of package */ -#define PACKAGE "breakpad" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "opensource@google.com" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "breakpad" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "breakpad 0.1" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "breakpad" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.1" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "0.1" diff --git a/thirdparty/google-breakpad/r318/src/config.h.in b/thirdparty/google-breakpad/r318/src/config.h.in deleted file mode 100644 index 6b4c3e48..00000000 --- a/thirdparty/google-breakpad/r318/src/config.h.in +++ /dev/null @@ -1,55 +0,0 @@ -/* src/config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/breakpad_types.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/breakpad_types.h deleted file mode 100644 index 926b47f2..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/breakpad_types.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* breakpad_types.h: Precise-width types - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file ensures that types u_intN_t are defined for N = 8, 16, 32, and - * 64. Types of precise widths are crucial to the task of writing data - * structures on one platform and reading them on another. - * - * Author: Mark Mentovai */ - -#ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ -#define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ - -#ifndef _WIN32 - -#include -#ifndef __STDC_FORMAT_MACROS -#define __STDC_FORMAT_MACROS -#endif /* __STDC_FORMAT_MACROS */ -#include - -#if defined(__SUNPRO_CC) || (defined(__GNUC__) && defined(__sun__)) -typedef uint8_t u_int8_t; -typedef uint16_t u_int16_t; -typedef uint32_t u_int32_t; -typedef uint64_t u_int64_t; -#endif - -#else /* !_WIN32 */ - -#include - -typedef unsigned __int8 u_int8_t; -typedef unsigned __int16 u_int16_t; -typedef unsigned __int32 u_int32_t; -typedef unsigned __int64 u_int64_t; - -#endif /* !_WIN32 */ - -typedef struct { - u_int64_t high; - u_int64_t low; -} u_int128_t; - -typedef u_int64_t breakpad_time_t; - -/* Try to get PRIx64 from inttypes.h, but if it's not defined, fall back to - * llx, which is the format string for "long long" - this is a 64-bit - * integral type on many systems. */ -#ifndef PRIx64 -#define PRIx64 "llx" -#endif /* !PRIx64 */ - -#endif /* GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_amd64.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_amd64.h deleted file mode 100644 index 75dae7dd..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_amd64.h +++ /dev/null @@ -1,231 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on amd64. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ - - -/* - * AMD64 support, see WINNT.H - */ - -typedef struct { - u_int16_t control_word; - u_int16_t status_word; - u_int8_t tag_word; - u_int8_t reserved1; - u_int16_t error_opcode; - u_int32_t error_offset; - u_int16_t error_selector; - u_int16_t reserved2; - u_int32_t data_offset; - u_int16_t data_selector; - u_int16_t reserved3; - u_int32_t mx_csr; - u_int32_t mx_csr_mask; - u_int128_t float_registers[8]; - u_int128_t xmm_registers[16]; - u_int8_t reserved4[96]; -} MDXmmSaveArea32AMD64; /* XMM_SAVE_AREA32 */ - -#define MD_CONTEXT_AMD64_VR_COUNT 26 - -typedef struct { - /* - * Register parameter home addresses. - */ - u_int64_t p1_home; - u_int64_t p2_home; - u_int64_t p3_home; - u_int64_t p4_home; - u_int64_t p5_home; - u_int64_t p6_home; - - /* The next field determines the layout of the structure, and which parts - * of it are populated */ - u_int32_t context_flags; - u_int32_t mx_csr; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int16_t cs; - - /* The next 4 registers are included with MD_CONTEXT_AMD64_SEGMENTS */ - u_int16_t ds; - u_int16_t es; - u_int16_t fs; - u_int16_t gs; - - /* The next 2 registers are included with MD_CONTEXT_AMD64_CONTROL */ - u_int16_t ss; - u_int32_t eflags; - - /* The next 6 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */ - u_int64_t dr0; - u_int64_t dr1; - u_int64_t dr2; - u_int64_t dr3; - u_int64_t dr6; - u_int64_t dr7; - - /* The next 4 registers are included with MD_CONTEXT_AMD64_INTEGER */ - u_int64_t rax; - u_int64_t rcx; - u_int64_t rdx; - u_int64_t rbx; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int64_t rsp; - - /* The next 11 registers are included with MD_CONTEXT_AMD64_INTEGER */ - u_int64_t rbp; - u_int64_t rsi; - u_int64_t rdi; - u_int64_t r8; - u_int64_t r9; - u_int64_t r10; - u_int64_t r11; - u_int64_t r12; - u_int64_t r13; - u_int64_t r14; - u_int64_t r15; - - /* The next register is included with MD_CONTEXT_AMD64_CONTROL */ - u_int64_t rip; - - /* The next set of registers are included with - * MD_CONTEXT_AMD64_FLOATING_POINT - */ - union { - MDXmmSaveArea32AMD64 flt_save; - struct { - u_int128_t header[2]; - u_int128_t legacy[8]; - u_int128_t xmm0; - u_int128_t xmm1; - u_int128_t xmm2; - u_int128_t xmm3; - u_int128_t xmm4; - u_int128_t xmm5; - u_int128_t xmm6; - u_int128_t xmm7; - u_int128_t xmm8; - u_int128_t xmm9; - u_int128_t xmm10; - u_int128_t xmm11; - u_int128_t xmm12; - u_int128_t xmm13; - u_int128_t xmm14; - u_int128_t xmm15; - } sse_registers; - }; - - u_int128_t vector_register[MD_CONTEXT_AMD64_VR_COUNT]; - u_int64_t vector_control; - - /* The next 5 registers are included with MD_CONTEXT_AMD64_DEBUG_REGISTERS */ - u_int64_t debug_control; - u_int64_t last_branch_to_rip; - u_int64_t last_branch_from_rip; - u_int64_t last_exception_to_rip; - u_int64_t last_exception_from_rip; - -} MDRawContextAMD64; /* CONTEXT */ - -/* For (MDRawContextAMD64).context_flags. These values indicate the type of - * context stored in the structure. The high 26 bits identify the CPU, the - * low 6 bits identify the type of context saved. */ -#define MD_CONTEXT_AMD64_CONTROL (MD_CONTEXT_AMD64 | 0x00000001) - /* CONTEXT_CONTROL */ -#define MD_CONTEXT_AMD64_INTEGER (MD_CONTEXT_AMD64 | 0x00000002) - /* CONTEXT_INTEGER */ -#define MD_CONTEXT_AMD64_SEGMENTS (MD_CONTEXT_AMD64 | 0x00000004) - /* CONTEXT_SEGMENTS */ -#define MD_CONTEXT_AMD64_FLOATING_POINT (MD_CONTEXT_AMD64 | 0x00000008) - /* CONTEXT_FLOATING_POINT */ -#define MD_CONTEXT_AMD64_DEBUG_REGISTERS (MD_CONTEXT_AMD64 | 0x00000010) - /* CONTEXT_DEBUG_REGISTERS */ -/* WinNT.h refers to CONTEXT_MMX_REGISTERS but doesn't appear to define it - * I think it really means CONTEXT_FLOATING_POINT. - */ - -#define MD_CONTEXT_AMD64_FULL (MD_CONTEXT_AMD64_CONTROL | \ - MD_CONTEXT_AMD64_INTEGER | \ - MD_CONTEXT_AMD64_FLOATING_POINT) - /* CONTEXT_FULL */ - -#define MD_CONTEXT_AMD64_ALL (MD_CONTEXT_AMD64_FULL | \ - MD_CONTEXT_AMD64_SEGMENTS | \ - MD_CONTEXT_X86_DEBUG_REGISTERS) - /* CONTEXT_ALL */ - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_AMD64_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc.h deleted file mode 100644 index 038e921a..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc.h +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on ppc. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -/* - * Breakpad minidump extension for PowerPC support. Based on Darwin/Mac OS X' - * mach/ppc/_types.h - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ - -#define MD_FLOATINGSAVEAREA_PPC_FPR_COUNT 32 - -typedef struct { - /* fpregs is a double[32] in mach/ppc/_types.h, but a u_int64_t is used - * here for precise sizing. */ - u_int64_t fpregs[MD_FLOATINGSAVEAREA_PPC_FPR_COUNT]; - u_int32_t fpscr_pad; - u_int32_t fpscr; /* Status/control */ -} MDFloatingSaveAreaPPC; /* Based on ppc_float_state */ - - -#define MD_VECTORSAVEAREA_PPC_VR_COUNT 32 - -typedef struct { - /* Vector registers (including vscr) are 128 bits, but mach/ppc/_types.h - * exposes them as four 32-bit quantities. */ - u_int128_t save_vr[MD_VECTORSAVEAREA_PPC_VR_COUNT]; - u_int128_t save_vscr; /* Status/control */ - u_int32_t save_pad5[4]; - u_int32_t save_vrvalid; /* Identifies which vector registers are saved */ - u_int32_t save_pad6[7]; -} MDVectorSaveAreaPPC; /* ppc_vector_state */ - - -#define MD_CONTEXT_PPC_GPR_COUNT 32 - -/* Use the same 32-bit alignment when accessing this structure from 64-bit code - * as is used natively in 32-bit code. #pragma pack is a MSVC extension - * supported by gcc. */ -#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) -#pragma pack(4) -#else -#pragma pack(push, 4) -#endif - -typedef struct { - /* context_flags is not present in ppc_thread_state, but it aids - * identification of MDRawContextPPC among other raw context types, - * and it guarantees alignment when we get to float_save. */ - u_int32_t context_flags; - - u_int32_t srr0; /* Machine status save/restore: stores pc - * (instruction) */ - u_int32_t srr1; /* Machine status save/restore: stores msr - * (ps, program/machine state) */ - /* ppc_thread_state contains 32 fields, r0 .. r31. Here, an array is - * used for brevity. */ - u_int32_t gpr[MD_CONTEXT_PPC_GPR_COUNT]; - u_int32_t cr; /* Condition */ - u_int32_t xer; /* Integer (fiXed-point) exception */ - u_int32_t lr; /* Link */ - u_int32_t ctr; /* Count */ - u_int32_t mq; /* Multiply/Quotient (PPC 601, POWER only) */ - u_int32_t vrsave; /* Vector save */ - - /* float_save and vector_save aren't present in ppc_thread_state, but - * are represented in separate structures that still define a thread's - * context. */ - MDFloatingSaveAreaPPC float_save; - MDVectorSaveAreaPPC vector_save; -} MDRawContextPPC; /* Based on ppc_thread_state */ - -#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) -#pragma pack(0) -#else -#pragma pack(pop) -#endif - -/* For (MDRawContextPPC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_PPC 0x20000000 -#define MD_CONTEXT_PPC_BASE (MD_CONTEXT_PPC | 0x00000001) -#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008) -#define MD_CONTEXT_PPC_VECTOR (MD_CONTEXT_PPC | 0x00000020) - -#define MD_CONTEXT_PPC_FULL MD_CONTEXT_PPC_BASE -#define MD_CONTEXT_PPC_ALL (MD_CONTEXT_PPC_FULL | \ - MD_CONTEXT_PPC_FLOATING_POINT | \ - MD_CONTEXT_PPC_VECTOR) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc64.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc64.h deleted file mode 100644 index a788e5d1..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_ppc64.h +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (c) 2008, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on ppc64. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Neal Sidhwaney */ - - -/* - * Breakpad minidump extension for PPC64 support. Based on Darwin/Mac OS X' - * mach/ppc/_types.h - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ - -#include "minidump_cpu_ppc.h" - -// these types are the same in ppc64 & ppc -typedef MDFloatingSaveAreaPPC MDFloatingSaveAreaPPC64; -typedef MDVectorSaveAreaPPC MDVectorSaveAreaPPC64; - -#define MD_CONTEXT_PPC64_GPR_COUNT MD_CONTEXT_PPC_GPR_COUNT - -typedef struct { - /* context_flags is not present in ppc_thread_state, but it aids - * identification of MDRawContextPPC among other raw context types, - * and it guarantees alignment when we get to float_save. */ - u_int64_t context_flags; - - u_int64_t srr0; /* Machine status save/restore: stores pc - * (instruction) */ - u_int64_t srr1; /* Machine status save/restore: stores msr - * (ps, program/machine state) */ - /* ppc_thread_state contains 32 fields, r0 .. r31. Here, an array is - * used for brevity. */ - u_int64_t gpr[MD_CONTEXT_PPC64_GPR_COUNT]; - u_int64_t cr; /* Condition */ - u_int64_t xer; /* Integer (fiXed-point) exception */ - u_int64_t lr; /* Link */ - u_int64_t ctr; /* Count */ - u_int64_t vrsave; /* Vector save */ - - /* float_save and vector_save aren't present in ppc_thread_state, but - * are represented in separate structures that still define a thread's - * context. */ - MDFloatingSaveAreaPPC float_save; - MDVectorSaveAreaPPC vector_save; -} MDRawContextPPC64; /* Based on ppc_thread_state */ - -/* For (MDRawContextPPC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_PPC 0x20000000 -#define MD_CONTEXT_PPC_BASE (MD_CONTEXT_PPC | 0x00000001) -#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008) -#define MD_CONTEXT_PPC_VECTOR (MD_CONTEXT_PPC | 0x00000020) - -#define MD_CONTEXT_PPC_FULL MD_CONTEXT_PPC_BASE -#define MD_CONTEXT_PPC_ALL (MD_CONTEXT_PPC_FULL | \ - MD_CONTEXT_PPC_FLOATING_POINT | \ - MD_CONTEXT_PPC_VECTOR) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_PPC64_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_sparc.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_sparc.h deleted file mode 100644 index ee95b64e..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_sparc.h +++ /dev/null @@ -1,158 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on sparc. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai - * Change to split into its own file: Neal Sidhwaney */ - -/* - * SPARC support, see (solaris)sys/procfs_isa.h also - */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ - -#define MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT 32 - -typedef struct { - - /* FPU floating point regs */ - u_int64_t regs[MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT]; - - u_int64_t filler; - u_int64_t fsr; /* FPU status register */ -} MDFloatingSaveAreaSPARC; /* FLOATING_SAVE_AREA */ - -#define MD_CONTEXT_SPARC_GPR_COUNT 32 - -typedef struct { - /* The next field determines the layout of the structure, and which parts - * of it are populated - */ - u_int32_t context_flags; - u_int32_t flag_pad; - /* - * General register access (SPARC). - * Don't confuse definitions here with definitions in . - * Registers are 32 bits for ILP32, 64 bits for LP64. - * SPARC V7/V8 is for 32bit, SPARC V9 is for 64bit - */ - - /* 32 Integer working registers */ - - /* g_r[0-7] global registers(g0-g7) - * g_r[8-15] out registers(o0-o7) - * g_r[16-23] local registers(l0-l7) - * g_r[24-31] in registers(i0-i7) - */ - u_int64_t g_r[MD_CONTEXT_SPARC_GPR_COUNT]; - - /* several control registers */ - - /* Processor State register(PSR) for SPARC V7/V8 - * Condition Code register (CCR) for SPARC V9 - */ - u_int64_t ccr; - - u_int64_t pc; /* Program Counter register (PC) */ - u_int64_t npc; /* Next Program Counter register (nPC) */ - u_int64_t y; /* Y register (Y) */ - - /* Address Space Identifier register (ASI) for SPARC V9 - * WIM for SPARC V7/V8 - */ - u_int64_t asi; - - /* Floating-Point Registers State register (FPRS) for SPARC V9 - * TBR for for SPARC V7/V8 - */ - u_int64_t fprs; - - /* The next field is included with MD_CONTEXT_SPARC_FLOATING_POINT */ - MDFloatingSaveAreaSPARC float_save; - -} MDRawContextSPARC; /* CONTEXT_SPARC */ - -/* For (MDRawContextSPARC).context_flags. These values indicate the type of - * context stored in the structure. MD_CONTEXT_SPARC is Breakpad-defined. Its - * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other - * CPUs. */ -#define MD_CONTEXT_SPARC 0x10000000 -#define MD_CONTEXT_SPARC_CONTROL (MD_CONTEXT_SPARC | 0x00000001) -#define MD_CONTEXT_SPARC_INTEGER (MD_CONTEXT_SPARC | 0x00000002) -#define MD_CONTEXT_SAPARC_FLOATING_POINT (MD_CONTEXT_SPARC | 0x00000004) -#define MD_CONTEXT_SAPARC_EXTRA (MD_CONTEXT_SPARC | 0x00000008) - -#define MD_CONTEXT_SPARC_FULL (MD_CONTEXT_SPARC_CONTROL | \ - MD_CONTEXT_SPARC_INTEGER) - -#define MD_CONTEXT_SPARC_ALL (MD_CONTEXT_SPARC_FULL | \ - MD_CONTEXT_SAPARC_FLOATING_POINT | \ - MD_CONTEXT_SAPARC_EXTRA) - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_SPARC_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_x86.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_x86.h deleted file mode 100644 index 4dbc0e9a..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_cpu_x86.h +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * This file contains the necessary definitions to read minidump files - * produced on x86. These files may be read on any platform provided - * that the alignments of these structures on the processing system are - * identical to the alignments of these structures on the producing system. - * For this reason, precise-sized types are used. The structures defined - * by this file have been laid out to minimize alignment problems by ensuring - * ensuring that all members are aligned on their natural boundaries. In - * In some cases, tail-padding may be significant when different ABIs specify - * different tail-padding behaviors. To avoid problems when reading or - * writing affected structures, MD_*_SIZE macros are provided where needed, - * containing the useful size of the structures without padding. - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai */ - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ - -#define MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE 80 - /* SIZE_OF_80387_REGISTERS */ - -typedef struct { - u_int32_t control_word; - u_int32_t status_word; - u_int32_t tag_word; - u_int32_t error_offset; - u_int32_t error_selector; - u_int32_t data_offset; - u_int32_t data_selector; - - /* register_area contains eight 80-bit (x87 "long double") quantities for - * floating-point registers %st0 (%mm0) through %st7 (%mm7). */ - u_int8_t register_area[MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE]; - u_int32_t cr0_npx_state; -} MDFloatingSaveAreaX86; /* FLOATING_SAVE_AREA */ - - -#define MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE 512 - /* MAXIMUM_SUPPORTED_EXTENSION */ - -typedef struct { - /* The next field determines the layout of the structure, and which parts - * of it are populated */ - u_int32_t context_flags; - - /* The next 6 registers are included with MD_CONTEXT_X86_DEBUG_REGISTERS */ - u_int32_t dr0; - u_int32_t dr1; - u_int32_t dr2; - u_int32_t dr3; - u_int32_t dr6; - u_int32_t dr7; - - /* The next field is included with MD_CONTEXT_X86_FLOATING_POINT */ - MDFloatingSaveAreaX86 float_save; - - /* The next 4 registers are included with MD_CONTEXT_X86_SEGMENTS */ - u_int32_t gs; - u_int32_t fs; - u_int32_t es; - u_int32_t ds; - /* The next 6 registers are included with MD_CONTEXT_X86_INTEGER */ - u_int32_t edi; - u_int32_t esi; - u_int32_t ebx; - u_int32_t edx; - u_int32_t ecx; - u_int32_t eax; - - /* The next 6 registers are included with MD_CONTEXT_X86_CONTROL */ - u_int32_t ebp; - u_int32_t eip; - u_int32_t cs; /* WinNT.h says "must be sanitized" */ - u_int32_t eflags; /* WinNT.h says "must be sanitized" */ - u_int32_t esp; - u_int32_t ss; - - /* The next field is included with MD_CONTEXT_X86_EXTENDED_REGISTERS. - * It contains vector (MMX/SSE) registers. It it laid out in the - * format used by the fxsave and fsrstor instructions, so it includes - * a copy of the x87 floating-point registers as well. See FXSAVE in - * "Intel Architecture Software Developer's Manual, Volume 2." */ - u_int8_t extended_registers[ - MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE]; -} MDRawContextX86; /* CONTEXT */ - -/* For (MDRawContextX86).context_flags. These values indicate the type of - * context stored in the structure. The high 26 bits identify the CPU, the - * low 6 bits identify the type of context saved. */ -#define MD_CONTEXT_X86 0x00010000 - /* CONTEXT_i386, CONTEXT_i486: identifies CPU */ -#define MD_CONTEXT_X86_CONTROL (MD_CONTEXT_X86 | 0x00000001) - /* CONTEXT_CONTROL */ -#define MD_CONTEXT_X86_INTEGER (MD_CONTEXT_X86 | 0x00000002) - /* CONTEXT_INTEGER */ -#define MD_CONTEXT_X86_SEGMENTS (MD_CONTEXT_X86 | 0x00000004) - /* CONTEXT_SEGMENTS */ -#define MD_CONTEXT_X86_FLOATING_POINT (MD_CONTEXT_X86 | 0x00000008) - /* CONTEXT_FLOATING_POINT */ -#define MD_CONTEXT_X86_DEBUG_REGISTERS (MD_CONTEXT_X86 | 0x00000010) - /* CONTEXT_DEBUG_REGISTERS */ -#define MD_CONTEXT_X86_EXTENDED_REGISTERS (MD_CONTEXT_X86 | 0x00000020) - /* CONTEXT_EXTENDED_REGISTERS */ - -#define MD_CONTEXT_X86_FULL (MD_CONTEXT_X86_CONTROL | \ - MD_CONTEXT_X86_INTEGER | \ - MD_CONTEXT_X86_SEGMENTS) - /* CONTEXT_FULL */ - -#define MD_CONTEXT_X86_ALL (MD_CONTEXT_X86_FULL | \ - MD_CONTEXT_X86_FLOATING_POINT | \ - MD_CONTEXT_X86_DEBUG_REGISTERS | \ - MD_CONTEXT_X86_EXTENDED_REGISTERS) - /* CONTEXT_ALL */ - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_X86_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_linux.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_linux.h deleted file mode 100644 index d52c7519..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_linux.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_linux.h: A definition of exception codes for - * Linux - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -/* For (MDException).exception_code. These values come from bits/signum.h. - */ -typedef enum { - MD_EXCEPTION_CODE_LIN_SIGHUP = 1, /* Hangup (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGINT = 2, /* Interrupt (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGQUIT = 3, /* Quit (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGILL = 4, /* Illegal instruction (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGTRAP = 5, /* Trace trap (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGABRT = 6, /* Abort (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGBUS = 7, /* BUS error (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGFPE = 8, /* Floating-point exception (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGKILL = 9, /* Kill, unblockable (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGUSR1 = 10, /* User-defined signal 1 (POSIX). */ - MD_EXCEPTION_CODE_LIN_SIGSEGV = 11, /* Segmentation violation (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGUSR2 = 12, /* User-defined signal 2 (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGPIPE = 13, /* Broken pipe (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGALRM = 14, /* Alarm clock (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTERM = 15, /* Termination (ANSI) */ - MD_EXCEPTION_CODE_LIN_SIGSTKFLT = 16, /* Stack faultd */ - MD_EXCEPTION_CODE_LIN_SIGCHLD = 17, /* Child status has changed (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGCONT = 18, /* Continue (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGSTOP = 19, /* Stop, unblockable (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTSTP = 20, /* Keyboard stop (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTTIN = 21, /* Background read from tty (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGTTOU = 22, /* Background write to tty (POSIX) */ - MD_EXCEPTION_CODE_LIN_SIGURG = 23, - /* Urgent condition on socket (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGXCPU = 24, /* CPU limit exceeded (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGXFSZ = 25, - /* File size limit exceeded (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGVTALRM = 26, /* Virtual alarm clock (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGPROF = 27, /* Profiling alarm clock (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGWINCH = 28, /* Window size change (4.3 BSD, Sun) */ - MD_EXCEPTION_CODE_LIN_SIGIO = 29, /* I/O now possible (4.2 BSD) */ - MD_EXCEPTION_CODE_LIN_SIGPWR = 30, /* Power failure restart (System V) */ - MD_EXCEPTION_CODE_LIN_SIGSYS = 31 /* Bad system call */ -} MDExceptionCodeLinux; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_LINUX_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_mac.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_mac.h deleted file mode 100644 index 5fba44ca..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_mac.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_mac.h: A definition of exception codes for Mac - * OS X - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -/* For (MDException).exception_code. Breakpad minidump extension for Mac OS X - * support. Based on Darwin/Mac OS X' mach/exception_types.h. This is - * what Mac OS X calls an "exception", not a "code". */ -typedef enum { - /* Exception code. The high 16 bits of exception_code contains one of - * these values. */ - MD_EXCEPTION_MAC_BAD_ACCESS = 1, /* code can be a kern_return_t */ - /* EXC_BAD_ACCESS */ - MD_EXCEPTION_MAC_BAD_INSTRUCTION = 2, /* code is CPU-specific */ - /* EXC_BAD_INSTRUCTION */ - MD_EXCEPTION_MAC_ARITHMETIC = 3, /* code is CPU-specific */ - /* EXC_ARITHMETIC */ - MD_EXCEPTION_MAC_EMULATION = 4, /* code is CPU-specific */ - /* EXC_EMULATION */ - MD_EXCEPTION_MAC_SOFTWARE = 5, - /* EXC_SOFTWARE */ - MD_EXCEPTION_MAC_BREAKPOINT = 6, /* code is CPU-specific */ - /* EXC_BREAKPOINT */ - MD_EXCEPTION_MAC_SYSCALL = 7, - /* EXC_SYSCALL */ - MD_EXCEPTION_MAC_MACH_SYSCALL = 8, - /* EXC_MACH_SYSCALL */ - MD_EXCEPTION_MAC_RPC_ALERT = 9 - /* EXC_RPC_ALERT */ -} MDExceptionMac; - -/* For (MDException).exception_flags. Breakpad minidump extension for Mac OS X - * support. Based on Darwin/Mac OS X' mach/ppc/exception.h and - * mach/i386/exception.h. This is what Mac OS X calls a "code". */ -typedef enum { - /* With MD_EXCEPTION_BAD_ACCESS. These are relevant kern_return_t values - * from mach/kern_return.h. */ - MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS = 1, - /* KERN_INVALID_ADDRESS */ - MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE = 2, - /* KERN_PROTECTION_FAILURE */ - MD_EXCEPTION_CODE_MAC_NO_ACCESS = 8, - /* KERN_NO_ACCESS */ - MD_EXCEPTION_CODE_MAC_MEMORY_FAILURE = 9, - /* KERN_MEMORY_FAILURE */ - MD_EXCEPTION_CODE_MAC_MEMORY_ERROR = 10, - /* KERN_MEMORY_ERROR */ - - /* With MD_EXCEPTION_SOFTWARE */ - MD_EXCEPTION_CODE_MAC_BAD_SYSCALL = 0x00010000, /* Mach SIGSYS */ - MD_EXCEPTION_CODE_MAC_BAD_PIPE = 0x00010001, /* Mach SIGPIPE */ - MD_EXCEPTION_CODE_MAC_ABORT = 0x00010002, /* Mach SIGABRT */ - - /* With MD_EXCEPTION_MAC_BAD_ACCESS on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_VM_PROT_READ = 0x0101, - /* EXC_PPC_VM_PROT_READ */ - MD_EXCEPTION_CODE_MAC_PPC_BADSPACE = 0x0102, - /* EXC_PPC_BADSPACE */ - MD_EXCEPTION_CODE_MAC_PPC_UNALIGNED = 0x0103, - /* EXC_PPC_UNALIGNED */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_INVALID_SYSCALL = 1, - /* EXC_PPC_INVALID_SYSCALL */ - MD_EXCEPTION_CODE_MAC_PPC_UNIMPLEMENTED_INSTRUCTION = 2, - /* EXC_PPC_UNIPL_INST */ - MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_INSTRUCTION = 3, - /* EXC_PPC_PRIVINST */ - MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_REGISTER = 4, - /* EXC_PPC_PRIVREG */ - MD_EXCEPTION_CODE_MAC_PPC_TRACE = 5, - /* EXC_PPC_TRACE */ - MD_EXCEPTION_CODE_MAC_PPC_PERFORMANCE_MONITOR = 6, - /* EXC_PPC_PERFMON */ - - /* With MD_EXCEPTION_MAC_ARITHMETIC on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_OVERFLOW = 1, - /* EXC_PPC_OVERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_ZERO_DIVIDE = 2, - /* EXC_PPC_ZERO_DIVIDE */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_INEXACT = 3, - /* EXC_FLT_INEXACT */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_ZERO_DIVIDE = 4, - /* EXC_PPC_FLT_ZERO_DIVIDE */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_UNDERFLOW = 5, - /* EXC_PPC_FLT_UNDERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_OVERFLOW = 6, - /* EXC_PPC_FLT_OVERFLOW */ - MD_EXCEPTION_CODE_MAC_PPC_FLOAT_NOT_A_NUMBER = 7, - /* EXC_PPC_FLT_NOT_A_NUMBER */ - - /* With MD_EXCEPTION_MAC_EMULATION on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_NO_EMULATION = 8, - /* EXC_PPC_NOEMULATION */ - MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST = 9, - /* EXC_PPC_ALTIVECASSIST */ - - /* With MD_EXCEPTION_MAC_SOFTWARE on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_TRAP = 0x00000001, /* EXC_PPC_TRAP */ - MD_EXCEPTION_CODE_MAC_PPC_MIGRATE = 0x00010100, /* EXC_PPC_MIGRATE */ - - /* With MD_EXCEPTION_MAC_BREAKPOINT on ppc */ - MD_EXCEPTION_CODE_MAC_PPC_BREAKPOINT = 1, /* EXC_PPC_BREAKPOINT */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86, see also x86 interrupt - * values below. */ - MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION = 1, /* EXC_I386_INVOP */ - - /* With MD_EXCEPTION_MAC_ARITHMETIC on x86 */ - MD_EXCEPTION_CODE_MAC_X86_DIV = 1, /* EXC_I386_DIV */ - MD_EXCEPTION_CODE_MAC_X86_INTO = 2, /* EXC_I386_INTO */ - MD_EXCEPTION_CODE_MAC_X86_NOEXT = 3, /* EXC_I386_NOEXT */ - MD_EXCEPTION_CODE_MAC_X86_EXTOVR = 4, /* EXC_I386_EXTOVR */ - MD_EXCEPTION_CODE_MAC_X86_EXTERR = 5, /* EXC_I386_EXTERR */ - MD_EXCEPTION_CODE_MAC_X86_EMERR = 6, /* EXC_I386_EMERR */ - MD_EXCEPTION_CODE_MAC_X86_BOUND = 7, /* EXC_I386_BOUND */ - MD_EXCEPTION_CODE_MAC_X86_SSEEXTERR = 8, /* EXC_I386_SSEEXTERR */ - - /* With MD_EXCEPTION_MAC_BREAKPOINT on x86 */ - MD_EXCEPTION_CODE_MAC_X86_SGL = 1, /* EXC_I386_SGL */ - MD_EXCEPTION_CODE_MAC_X86_BPT = 2, /* EXC_I386_BPT */ - - /* With MD_EXCEPTION_MAC_BAD_INSTRUCTION on x86. These are the raw - * x86 interrupt codes. Most of these are mapped to other Mach - * exceptions and codes, are handled, or should not occur in user space. - * A few of these will do occur with MD_EXCEPTION_MAC_BAD_INSTRUCTION. */ - /* EXC_I386_DIVERR = 0: mapped to EXC_ARITHMETIC/EXC_I386_DIV */ - /* EXC_I386_SGLSTP = 1: mapped to EXC_BREAKPOINT/EXC_I386_SGL */ - /* EXC_I386_NMIFLT = 2: should not occur in user space */ - /* EXC_I386_BPTFLT = 3: mapped to EXC_BREAKPOINT/EXC_I386_BPT */ - /* EXC_I386_INTOFLT = 4: mapped to EXC_ARITHMETIC/EXC_I386_INTO */ - /* EXC_I386_BOUNDFLT = 5: mapped to EXC_ARITHMETIC/EXC_I386_BOUND */ - /* EXC_I386_INVOPFLT = 6: mapped to EXC_BAD_INSTRUCTION/EXC_I386_INVOP */ - /* EXC_I386_NOEXTFLT = 7: should be handled by the kernel */ - /* EXC_I386_DBLFLT = 8: should be handled (if possible) by the kernel */ - /* EXC_I386_EXTOVRFLT = 9: mapped to EXC_BAD_ACCESS/(PROT_READ|PROT_EXEC) */ - MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT = 10, - /* EXC_INVTSSFLT */ - MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT = 11, - /* EXC_SEGNPFLT */ - MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT = 12, - /* EXC_STKFLT */ - MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT = 13, - /* EXC_GPFLT */ - /* EXC_I386_PGFLT = 14: should not occur in user space */ - /* EXC_I386_EXTERRFLT = 16: mapped to EXC_ARITHMETIC/EXC_I386_EXTERR */ - MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT = 17 - /* EXC_ALIGNFLT (for vector operations) */ - /* EXC_I386_ENOEXTFLT = 32: should be handled by the kernel */ - /* EXC_I386_ENDPERR = 33: should not occur */ -} MDExceptionCodeMac; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_OSX_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_solaris.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_solaris.h deleted file mode 100644 index d48632ac..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_solaris.h +++ /dev/null @@ -1,94 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_solaris.h: A definition of exception codes for - * Solaris - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -/* For (MDException).exception_code. These values come from sys/iso/signal_iso.h - */ -typedef enum { - MD_EXCEPTION_CODE_SOL_SIGHUP = 1, /* Hangup */ - MD_EXCEPTION_CODE_SOL_SIGINT = 2, /* interrupt (rubout) */ - MD_EXCEPTION_CODE_SOL_SIGQUIT = 3, /* quit (ASCII FS) */ - MD_EXCEPTION_CODE_SOL_SIGILL = 4, /* illegal instruction (not reset when caught) */ - MD_EXCEPTION_CODE_SOL_SIGTRAP = 5, /* trace trap (not reset when caught) */ - MD_EXCEPTION_CODE_SOL_SIGIOT = 6, /* IOT instruction */ - MD_EXCEPTION_CODE_SOL_SIGABRT = 6, /* used by abort, replace SIGIOT in the future */ - MD_EXCEPTION_CODE_SOL_SIGEMT = 7, /* EMT instruction */ - MD_EXCEPTION_CODE_SOL_SIGFPE = 8, /* floating point exception */ - MD_EXCEPTION_CODE_SOL_SIGKILL = 9, /* kill (cannot be caught or ignored) */ - MD_EXCEPTION_CODE_SOL_SIGBUS = 10, /* bus error */ - MD_EXCEPTION_CODE_SOL_SIGSEGV = 11, /* segmentation violation */ - MD_EXCEPTION_CODE_SOL_SIGSYS = 12, /* bad argument to system call */ - MD_EXCEPTION_CODE_SOL_SIGPIPE = 13, /* write on a pipe with no one to read it */ - MD_EXCEPTION_CODE_SOL_SIGALRM = 14, /* alarm clock */ - MD_EXCEPTION_CODE_SOL_SIGTERM = 15, /* software termination signal from kill */ - MD_EXCEPTION_CODE_SOL_SIGUSR1 = 16, /* user defined signal 1 */ - MD_EXCEPTION_CODE_SOL_SIGUSR2 = 17, /* user defined signal 2 */ - MD_EXCEPTION_CODE_SOL_SIGCLD = 18, /* child status change */ - MD_EXCEPTION_CODE_SOL_SIGCHLD = 18, /* child status change alias (POSIX) */ - MD_EXCEPTION_CODE_SOL_SIGPWR = 19, /* power-fail restart */ - MD_EXCEPTION_CODE_SOL_SIGWINCH = 20, /* window size change */ - MD_EXCEPTION_CODE_SOL_SIGURG = 21, /* urgent socket condition */ - MD_EXCEPTION_CODE_SOL_SIGPOLL = 22, /* pollable event occured */ - MD_EXCEPTION_CODE_SOL_SIGIO = 22, /* socket I/O possible (SIGPOLL alias) */ - MD_EXCEPTION_CODE_SOL_SIGSTOP = 23, /* stop (cannot be caught or ignored) */ - MD_EXCEPTION_CODE_SOL_SIGTSTP = 24, /* user stop requested from tty */ - MD_EXCEPTION_CODE_SOL_SIGCONT = 25, /* stopped process has been continued */ - MD_EXCEPTION_CODE_SOL_SIGTTIN = 26, /* background tty read attempted */ - MD_EXCEPTION_CODE_SOL_SIGTTOU = 27, /* background tty write attempted */ - MD_EXCEPTION_CODE_SOL_SIGVTALRM = 28, /* virtual timer expired */ - MD_EXCEPTION_CODE_SOL_SIGPROF = 29, /* profiling timer expired */ - MD_EXCEPTION_CODE_SOL_SIGXCPU = 30, /* exceeded cpu limit */ - MD_EXCEPTION_CODE_SOL_SIGXFSZ = 31, /* exceeded file size limit */ - MD_EXCEPTION_CODE_SOL_SIGWAITING = 32, /* reserved signal no longer used by threading code */ - MD_EXCEPTION_CODE_SOL_SIGLWP = 33, /* reserved signal no longer used by threading code */ - MD_EXCEPTION_CODE_SOL_SIGFREEZE = 34, /* special signal used by CPR */ - MD_EXCEPTION_CODE_SOL_SIGTHAW = 35, /* special signal used by CPR */ - MD_EXCEPTION_CODE_SOL_SIGCANCEL = 36, /* reserved signal for thread cancellation */ - MD_EXCEPTION_CODE_SOL_SIGLOST = 37, /* resource lost (eg, record-lock lost) */ - MD_EXCEPTION_CODE_SOL_SIGXRES = 38, /* resource control exceeded */ - MD_EXCEPTION_CODE_SOL_SIGJVM1 = 39, /* reserved signal for Java Virtual Machine */ - MD_EXCEPTION_CODE_SOL_SIGJVM2 = 40 /* reserved signal for Java Virtual Machine */ -} MDExceptionCodeSolaris; - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_SOLARIS_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_win32.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_win32.h deleted file mode 100644 index 7fd4bc4f..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_exception_win32.h +++ /dev/null @@ -1,102 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_exception_win32.h: Definitions of exception codes for - * Win32 platform - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Author: Mark Mentovai - * Split into its own file: Neal Sidhwaney */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -/* For (MDException).exception_code. These values come from WinBase.h - * and WinNT.h (names beginning with EXCEPTION_ are in WinBase.h, - * they are STATUS_ in WinNT.h). */ -typedef enum { - MD_EXCEPTION_CODE_WIN_CONTROL_C = 0x40010005, - /* DBG_CONTROL_C */ - MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION = 0x80000001, - /* EXCEPTION_GUARD_PAGE */ - MD_EXCEPTION_CODE_WIN_DATATYPE_MISALIGNMENT = 0x80000002, - /* EXCEPTION_DATATYPE_MISALIGNMENT */ - MD_EXCEPTION_CODE_WIN_BREAKPOINT = 0x80000003, - /* EXCEPTION_BREAKPOINT */ - MD_EXCEPTION_CODE_WIN_SINGLE_STEP = 0x80000004, - /* EXCEPTION_SINGLE_STEP */ - MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION = 0xc0000005, - /* EXCEPTION_ACCESS_VIOLATION */ - MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR = 0xc0000006, - /* EXCEPTION_IN_PAGE_ERROR */ - MD_EXCEPTION_CODE_WIN_INVALID_HANDLE = 0xc0000008, - /* EXCEPTION_INVALID_HANDLE */ - MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION = 0xc000001d, - /* EXCEPTION_ILLEGAL_INSTRUCTION */ - MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION = 0xc0000025, - /* EXCEPTION_NONCONTINUABLE_EXCEPTION */ - MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION = 0xc0000026, - /* EXCEPTION_INVALID_DISPOSITION */ - MD_EXCEPTION_CODE_WIN_ARRAY_BOUNDS_EXCEEDED = 0xc000008c, - /* EXCEPTION_BOUNDS_EXCEEDED */ - MD_EXCEPTION_CODE_WIN_FLOAT_DENORMAL_OPERAND = 0xc000008d, - /* EXCEPTION_FLT_DENORMAL_OPERAND */ - MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO = 0xc000008e, - /* EXCEPTION_FLT_DIVIDE_BY_ZERO */ - MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT = 0xc000008f, - /* EXCEPTION_FLT_INEXACT_RESULT */ - MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION = 0xc0000090, - /* EXCEPTION_FLT_INVALID_OPERATION */ - MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW = 0xc0000091, - /* EXCEPTION_FLT_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_FLOAT_STACK_CHECK = 0xc0000092, - /* EXCEPTION_FLT_STACK_CHECK */ - MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW = 0xc0000093, - /* EXCEPTION_FLT_UNDERFLOW */ - MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO = 0xc0000094, - /* EXCEPTION_INT_DIVIDE_BY_ZERO */ - MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW = 0xc0000095, - /* EXCEPTION_INT_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION = 0xc0000096, - /* EXCEPTION_PRIV_INSTRUCTION */ - MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW = 0xc00000fd, - /* EXCEPTION_STACK_OVERFLOW */ - MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK = 0xc0000194 - /* EXCEPTION_POSSIBLE_DEADLOCK */ -} MDExceptionCodeWin; - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_WIN32_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_format.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_format.h deleted file mode 100644 index 4d9e767f..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_format.h +++ /dev/null @@ -1,721 +0,0 @@ -/* Copyright (c) 2006, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. */ - -/* minidump_format.h: A cross-platform reimplementation of minidump-related - * portions of DbgHelp.h from the Windows Platform SDK. - * - * (This is C99 source, please don't corrupt it with C++.) - * - * Structures that are defined by Microsoft to contain a zero-length array - * are instead defined here to contain an array with one element, as - * zero-length arrays are forbidden by standard C and C++. In these cases, - * *_minsize constants are provided to be used in place of sizeof. For a - * cleaner interface to these sizes when using C++, see minidump_size.h. - * - * These structures are also sufficient to populate minidump files. - * - * These definitions may be extended to support handling minidump files - * for other CPUs and other operating systems. - * - * Because precise data type sizes are crucial for this implementation to - * function properly and portably in terms of interoperability with minidumps - * produced by DbgHelp on Windows, a set of primitive types with known sizes - * are used as the basis of each structure defined by this file. DbgHelp - * on Windows is assumed to be the reference implementation; this file - * seeks to provide a cross-platform compatible implementation. To avoid - * collisions with the types and values defined and used by DbgHelp in the - * event that this implementation is used on Windows, each type and value - * defined here is given a new name, beginning with "MD". Names of the - * equivalent types and values in the Windows Platform SDK are given in - * comments. - * - * Author: Mark Mentovai */ - - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - - -#if defined(_MSC_VER) -/* Disable "zero-sized array in struct/union" warnings when compiling in - * MSVC. DbgHelp.h does this too. */ -#pragma warning(push) -#pragma warning(disable:4200) -#endif /* _MSC_VER */ - - -/* - * guiddef.h - */ - -typedef struct { - u_int32_t data1; - u_int16_t data2; - u_int16_t data3; - u_int8_t data4[8]; -} MDGUID; /* GUID */ - - -/* - * WinNT.h - */ - -/* Non-x86 CPU identifiers found in the high 26 bits of - * (MDRawContext*).context_flags. These aren't used by Breakpad, but are - * defined here for reference, to avoid assigning values that conflict - * (although some values already conflict). */ -#define MD_CONTEXT_IA64 0x00080000 /* CONTEXT_IA64 */ -#define MD_CONTEXT_AMD64 0x00100000 /* CONTEXT_AMD64 */ -/* Additional values from winnt.h in the Windows CE 5.0 SDK: */ -#define MD_CONTEXT_SHX 0x000000c0 /* CONTEXT_SH4 (Super-H, includes SH3) */ -#define MD_CONTEXT_ARM 0x00000040 /* CONTEXT_ARM (0x40 bit set in SHx?) */ -#define MD_CONTEXT_MIPS 0x00010000 /* CONTEXT_R4000 (same value as x86?) */ -#define MD_CONTEXT_ALPHA 0x00020000 /* CONTEXT_ALPHA */ - -#define MD_CONTEXT_CPU_MASK 0xffffffc0 - - -/* This is a base type for MDRawContextX86 and MDRawContextPPC. This - * structure should never be allocated directly. The actual structure type - * can be determined by examining the context_flags field. */ -typedef struct { - u_int32_t context_flags; -} MDRawContextBase; - -#include "minidump_cpu_sparc.h" -#include "minidump_cpu_x86.h" -#include "minidump_cpu_ppc.h" -#include "minidump_cpu_ppc64.h" -#include "minidump_cpu_amd64.h" - - -/* - * WinVer.h - */ - - -typedef struct { - u_int32_t signature; - u_int32_t struct_version; - u_int32_t file_version_hi; - u_int32_t file_version_lo; - u_int32_t product_version_hi; - u_int32_t product_version_lo; - u_int32_t file_flags_mask; /* Identifies valid bits in fileFlags */ - u_int32_t file_flags; - u_int32_t file_os; - u_int32_t file_type; - u_int32_t file_subtype; - u_int32_t file_date_hi; - u_int32_t file_date_lo; -} MDVSFixedFileInfo; /* VS_FIXEDFILEINFO */ - -/* For (MDVSFixedFileInfo).signature */ -#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd - /* VS_FFI_SIGNATURE */ - -/* For (MDVSFixedFileInfo).version */ -#define MD_VSFIXEDFILEINFO_VERSION 0x00010000 - /* VS_FFI_STRUCVERSION */ - -/* For (MDVSFixedFileInfo).file_flags_mask and - * (MDVSFixedFileInfo).file_flags */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG 0x00000001 - /* VS_FF_DEBUG */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE 0x00000002 - /* VS_FF_PRERELEASE */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED 0x00000004 - /* VS_FF_PATCHED */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008 - /* VS_FF_PRIVATEBUILD */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010 - /* VS_FF_INFOINFERRED */ -#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020 - /* VS_FF_SPECIALBUILD */ - -/* For (MDVSFixedFileInfo).file_os: high 16 bits */ -#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN 0 /* VOS_UNKNOWN */ -#define MD_VSFIXEDFILEINFO_FILE_OS_DOS (1 << 16) /* VOS_DOS */ -#define MD_VSFIXEDFILEINFO_FILE_OS_OS216 (2 << 16) /* VOS_OS216 */ -#define MD_VSFIXEDFILEINFO_FILE_OS_OS232 (3 << 16) /* VOS_OS232 */ -#define MD_VSFIXEDFILEINFO_FILE_OS_NT (4 << 16) /* VOS_NT */ -#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE (5 << 16) /* VOS_WINCE */ -/* Low 16 bits */ -#define MD_VSFIXEDFILEINFO_FILE_OS__BASE 0 /* VOS__BASE */ -#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1 /* VOS__WINDOWS16 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__PM16 2 /* VOS__PM16 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__PM32 3 /* VOS__PM32 */ -#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4 /* VOS__WINDOWS32 */ - -/* For (MDVSFixedFileInfo).file_type */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN 0 /* VFT_UNKNOWN */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP 1 /* VFT_APP */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL 2 /* VFT_DLL */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV 3 /* VFT_DLL */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT 4 /* VFT_FONT */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD 5 /* VFT_VXD */ -#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7 /* VFT_STATIC_LIB */ - -/* For (MDVSFixedFileInfo).file_subtype */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN 0 - /* VFT2_UNKNOWN */ -/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER 1 - /* VFT2_DRV_PRINTER */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD 2 - /* VFT2_DRV_KEYBOARD */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE 3 - /* VFT2_DRV_LANGUAGE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY 4 - /* VFT2_DRV_DISPLAY */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE 5 - /* VFT2_DRV_MOUSE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK 6 - /* VFT2_DRV_NETWORK */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM 7 - /* VFT2_DRV_SYSTEM */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE 8 - /* VFT2_DRV_INSTALLABLE */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND 9 - /* VFT2_DRV_SOUND */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM 10 - /* VFT2_DRV_COMM */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD 11 - /* VFT2_DRV_INPUTMETHOD */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12 - /* VFT2_DRV_VERSIONED_PRINTER */ -/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER 1 - /* VFT2_FONT_RASTER */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR 2 - /* VFT2_FONT_VECTOR */ -#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE 3 - /* VFT2_FONT_TRUETYPE */ - - -/* - * DbgHelp.h - */ - - -/* An MDRVA is an offset into the minidump file. The beginning of the - * MDRawHeader is at offset 0. */ -typedef u_int32_t MDRVA; /* RVA */ - -typedef struct { - u_int32_t data_size; - MDRVA rva; -} MDLocationDescriptor; /* MINIDUMP_LOCATION_DESCRIPTOR */ - - -typedef struct { - /* The base address of the memory range on the host that produced the - * minidump. */ - u_int64_t start_of_memory_range; - - MDLocationDescriptor memory; -} MDMemoryDescriptor; /* MINIDUMP_MEMORY_DESCRIPTOR */ - - -typedef struct { - u_int32_t signature; - u_int32_t version; - u_int32_t stream_count; - MDRVA stream_directory_rva; /* A |stream_count|-sized array of - * MDRawDirectory structures. */ - u_int32_t checksum; /* Can be 0. In fact, that's all that's - * been found in minidump files. */ - u_int32_t time_date_stamp; /* time_t */ - u_int64_t flags; -} MDRawHeader; /* MINIDUMP_HEADER */ - -/* For (MDRawHeader).signature and (MDRawHeader).version. Note that only the - * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION. Per the - * documentation, the high 16 bits are implementation-specific. */ -#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */ - /* MINIDUMP_SIGNATURE */ -#define MD_HEADER_VERSION 0x0000a793 /* 42899 */ - /* MINIDUMP_VERSION */ - -/* For (MDRawHeader).flags: */ -typedef enum { - /* MD_NORMAL is the standard type of minidump. It includes full - * streams for the thread list, module list, exception, system info, - * and miscellaneous info. A memory list stream is also present, - * pointing to the same stack memory contained in the thread list, - * as well as a 256-byte region around the instruction address that - * was executing when the exception occurred. Stack memory is from - * 4 bytes below a thread's stack pointer up to the top of the - * memory region encompassing the stack. */ - MD_NORMAL = 0x00000000, - MD_WITH_DATA_SEGS = 0x00000001, - MD_WITH_FULL_MEMORY = 0x00000002, - MD_WITH_HANDLE_DATA = 0x00000004, - MD_FILTER_MEMORY = 0x00000008, - MD_SCAN_MEMORY = 0x00000010, - MD_WITH_UNLOADED_MODULES = 0x00000020, - MD_WITH_INDIRECTLY_REFERENCED_MEMORY = 0x00000040, - MD_FILTER_MODULE_PATHS = 0x00000080, - MD_WITH_PROCESS_THREAD_DATA = 0x00000100, - MD_WITH_PRIVATE_READ_WRITE_MEMORY = 0x00000200, - MD_WITHOUT_OPTIONAL_DATA = 0x00000400, - MD_WITH_FULL_MEMORY_INFO = 0x00000800, - MD_WITH_THREAD_INFO = 0x00001000, - MD_WITH_CODE_SEGS = 0x00002000 -} MDType; /* MINIDUMP_TYPE */ - - -typedef struct { - u_int32_t stream_type; - MDLocationDescriptor location; -} MDRawDirectory; /* MINIDUMP_DIRECTORY */ - -/* For (MDRawDirectory).stream_type */ -typedef enum { - MD_UNUSED_STREAM = 0, - MD_RESERVED_STREAM_0 = 1, - MD_RESERVED_STREAM_1 = 2, - MD_THREAD_LIST_STREAM = 3, /* MDRawThreadList */ - MD_MODULE_LIST_STREAM = 4, /* MDRawModuleList */ - MD_MEMORY_LIST_STREAM = 5, /* MDRawMemoryList */ - MD_EXCEPTION_STREAM = 6, /* MDRawExceptionStream */ - MD_SYSTEM_INFO_STREAM = 7, /* MDRawSystemInfo */ - MD_THREAD_EX_LIST_STREAM = 8, - MD_MEMORY_64_LIST_STREAM = 9, - MD_COMMENT_STREAM_A = 10, - MD_COMMENT_STREAM_W = 11, - MD_HANDLE_DATA_STREAM = 12, - MD_FUNCTION_TABLE_STREAM = 13, - MD_UNLOADED_MODULE_LIST_STREAM = 14, - MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */ - MD_LAST_RESERVED_STREAM = 0x0000ffff, - - /* Breakpad extension types. 0x4767 = "Gg" */ - MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */ - MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */ -} MDStreamType; /* MINIDUMP_STREAM_TYPE */ - - -typedef struct { - u_int32_t length; /* Length of buffer in bytes (not characters), - * excluding 0-terminator */ - u_int16_t buffer[1]; /* UTF-16-encoded, 0-terminated */ -} MDString; /* MINIDUMP_STRING */ - -static const size_t MDString_minsize = offsetof(MDString, buffer[0]); - - -typedef struct { - u_int32_t thread_id; - u_int32_t suspend_count; - u_int32_t priority_class; - u_int32_t priority; - u_int64_t teb; /* Thread environment block */ - MDMemoryDescriptor stack; - MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ -} MDRawThread; /* MINIDUMP_THREAD */ - - -typedef struct { - u_int32_t number_of_threads; - MDRawThread threads[1]; -} MDRawThreadList; /* MINIDUMP_THREAD_LIST */ - -static const size_t MDRawThreadList_minsize = offsetof(MDRawThreadList, - threads[0]); - - -typedef struct { - u_int64_t base_of_image; - u_int32_t size_of_image; - u_int32_t checksum; /* 0 if unknown */ - u_int32_t time_date_stamp; /* time_t */ - MDRVA module_name_rva; /* MDString, pathname or filename */ - MDVSFixedFileInfo version_info; - - /* The next field stores a CodeView record and is populated when a module's - * debug information resides in a PDB file. It identifies the PDB file. */ - MDLocationDescriptor cv_record; - - /* The next field is populated when a module's debug information resides - * in a DBG file. It identifies the DBG file. This field is effectively - * obsolete with modules built by recent toolchains. */ - MDLocationDescriptor misc_record; - - /* Alignment problem: reserved0 and reserved1 are defined by the platform - * SDK as 64-bit quantities. However, that results in a structure whose - * alignment is unpredictable on different CPUs and ABIs. If the ABI - * specifies full alignment of 64-bit quantities in structures (as ppc - * does), there will be padding between miscRecord and reserved0. If - * 64-bit quantities can be aligned on 32-bit boundaries (as on x86), - * this padding will not exist. (Note that the structure up to this point - * contains 1 64-bit member followed by 21 32-bit members.) - * As a workaround, reserved0 and reserved1 are instead defined here as - * four 32-bit quantities. This should be harmless, as there are - * currently no known uses for these fields. */ - u_int32_t reserved0[2]; - u_int32_t reserved1[2]; -} MDRawModule; /* MINIDUMP_MODULE */ - -/* The inclusion of a 64-bit type in MINIDUMP_MODULE forces the struct to - * be tail-padded out to a multiple of 64 bits under some ABIs (such as PPC). - * This doesn't occur on systems that don't tail-pad in this manner. Define - * this macro to be the usable size of the MDRawModule struct, and use it in - * place of sizeof(MDRawModule). */ -#define MD_MODULE_SIZE 108 - - -/* (MDRawModule).cv_record can reference MDCVInfoPDB20 or MDCVInfoPDB70. - * Ref.: http://www.debuginfo.com/articles/debuginfomatch.html - * MDCVInfoPDB70 is the expected structure type with recent toolchains. */ - -typedef struct { - u_int32_t signature; - u_int32_t offset; /* Offset to debug data (expect 0 in minidump) */ -} MDCVHeader; - -typedef struct { - MDCVHeader cv_header; - u_int32_t signature; /* time_t debug information created */ - u_int32_t age; /* revision of PDB file */ - u_int8_t pdb_file_name[1]; /* Pathname or filename of PDB file */ -} MDCVInfoPDB20; - -static const size_t MDCVInfoPDB20_minsize = offsetof(MDCVInfoPDB20, - pdb_file_name[0]); - -#define MD_CVINFOPDB20_SIGNATURE 0x3031424e /* cvHeader.signature = '01BN' */ - -typedef struct { - u_int32_t cv_signature; - MDGUID signature; /* GUID, identifies PDB file */ - u_int32_t age; /* Identifies incremental changes to PDB file */ - u_int8_t pdb_file_name[1]; /* Pathname or filename of PDB file, - * 0-terminated 8-bit character data (UTF-8?) */ -} MDCVInfoPDB70; - -static const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70, - pdb_file_name[0]); - -#define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ - -typedef struct { - u_int32_t data1[2]; - u_int32_t data2; - u_int32_t data3; - u_int32_t data4; - u_int32_t data5[3]; - u_int8_t extra[2]; -} MDCVInfoELF; - -/* In addition to the two CodeView record formats above, used for linking - * to external pdb files, it is possible for debugging data to be carried - * directly in the CodeView record itself. These signature values will - * be found in the first 4 bytes of the CodeView record. Additional values - * not commonly experienced in the wild are given by "Microsoft Symbol and - * Type Information", http://www.x86.org/ftp/manuals/tools/sym.pdf, section - * 7.2. An in-depth description of the CodeView 4.1 format is given by - * "Undocumented Windows 2000 Secrets", Windows 2000 Debugging Support/ - * Microsoft Symbol File Internals/CodeView Subsections, - * http://www.rawol.com/features/undocumented/sbs-w2k-1-windows-2000-debugging-support.pdf - */ -#define MD_CVINFOCV41_SIGNATURE 0x3930424e /* '90BN', CodeView 4.10. */ -#define MD_CVINFOCV50_SIGNATURE 0x3131424e /* '11BN', CodeView 5.0, - * MS C7-format (/Z7). */ - -#define MD_CVINFOUNKNOWN_SIGNATURE 0xffffffff /* An unlikely value. */ - -/* (MDRawModule).miscRecord can reference MDImageDebugMisc. The Windows - * structure is actually defined in WinNT.h. This structure is effectively - * obsolete with modules built by recent toolchains. */ - -typedef struct { - u_int32_t data_type; /* IMAGE_DEBUG_TYPE_*, not defined here because - * this debug record type is mostly obsolete. */ - u_int32_t length; /* Length of entire MDImageDebugMisc structure */ - u_int8_t unicode; /* True if data is multibyte */ - u_int8_t reserved[3]; - u_int8_t data[1]; -} MDImageDebugMisc; /* IMAGE_DEBUG_MISC */ - -static const size_t MDImageDebugMisc_minsize = offsetof(MDImageDebugMisc, - data[0]); - - -typedef struct { - u_int32_t number_of_modules; - MDRawModule modules[1]; -} MDRawModuleList; /* MINIDUMP_MODULE_LIST */ - -static const size_t MDRawModuleList_minsize = offsetof(MDRawModuleList, - modules[0]); - - -typedef struct { - u_int32_t number_of_memory_ranges; - MDMemoryDescriptor memory_ranges[1]; -} MDRawMemoryList; /* MINIDUMP_MEMORY_LIST */ - -static const size_t MDRawMemoryList_minsize = offsetof(MDRawMemoryList, - memory_ranges[0]); - - -#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15 - -typedef struct { - u_int32_t exception_code; /* Windows: MDExceptionCodeWin, - * Mac OS X: MDExceptionMac, - * Linux: MDExceptionCodeLinux. */ - u_int32_t exception_flags; /* Windows: 1 if noncontinuable, - Mac OS X: MDExceptionCodeMac. */ - u_int64_t exception_record; /* Address (in the minidump-producing host's - * memory) of another MDException, for - * nested exceptions. */ - u_int64_t exception_address; /* The address that caused the exception. - * Mac OS X: exception subcode (which is - * typically the address). */ - u_int32_t number_parameters; /* Number of valid elements in - * exception_information. */ - u_int32_t __align; - u_int64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS]; -} MDException; /* MINIDUMP_EXCEPTION */ - -#include "minidump_exception_win32.h" -#include "minidump_exception_mac.h" -#include "minidump_exception_linux.h" -#include "minidump_exception_solaris.h" - -typedef struct { - u_int32_t thread_id; /* Thread in which the exception - * occurred. Corresponds to - * (MDRawThread).thread_id. */ - u_int32_t __align; - MDException exception_record; - MDLocationDescriptor thread_context; /* MDRawContext[CPU] */ -} MDRawExceptionStream; /* MINIDUMP_EXCEPTION_STREAM */ - - -typedef union { - struct { - u_int32_t vendor_id[3]; /* cpuid 0: ebx, edx, ecx */ - u_int32_t version_information; /* cpuid 1: eax */ - u_int32_t feature_information; /* cpuid 1: edx */ - u_int32_t amd_extended_cpu_features; /* cpuid 0x80000001, ebx */ - } x86_cpu_info; - struct { - u_int64_t processor_features[2]; - } other_cpu_info; -} MDCPUInformation; /* CPU_INFORMATION */ - - -typedef struct { - /* The next 3 fields and numberOfProcessors are from the SYSTEM_INFO - * structure as returned by GetSystemInfo */ - u_int16_t processor_architecture; - u_int16_t processor_level; /* x86: 5 = 586, 6 = 686, ... */ - u_int16_t processor_revision; /* x86: 0xMMSS, where MM=model, - * SS=stepping */ - - u_int8_t number_of_processors; - u_int8_t product_type; /* Windows: VER_NT_* from WinNT.h */ - - /* The next 5 fields are from the OSVERSIONINFO structure as returned - * by GetVersionEx */ - u_int32_t major_version; - u_int32_t minor_version; - u_int32_t build_number; - u_int32_t platform_id; - MDRVA csd_version_rva; /* MDString further identifying the - * host OS. - * Windows: name of the installed OS - * service pack. - * Mac OS X: the Apple OS build number - * (sw_vers -buildVersion). - * Linux: uname -srvmo */ - - u_int16_t suite_mask; /* Windows: VER_SUITE_* from WinNT.h */ - u_int16_t reserved2; - - MDCPUInformation cpu; -} MDRawSystemInfo; /* MINIDUMP_SYSTEM_INFO */ - -/* For (MDRawSystemInfo).processor_architecture: */ -typedef enum { - MD_CPU_ARCHITECTURE_X86 = 0, /* PROCESSOR_ARCHITECTURE_INTEL */ - MD_CPU_ARCHITECTURE_MIPS = 1, /* PROCESSOR_ARCHITECTURE_MIPS */ - MD_CPU_ARCHITECTURE_ALPHA = 2, /* PROCESSOR_ARCHITECTURE_ALPHA */ - MD_CPU_ARCHITECTURE_PPC = 3, /* PROCESSOR_ARCHITECTURE_PPC */ - MD_CPU_ARCHITECTURE_SHX = 4, /* PROCESSOR_ARCHITECTURE_SHX - * (Super-H) */ - MD_CPU_ARCHITECTURE_ARM = 5, /* PROCESSOR_ARCHITECTURE_ARM */ - MD_CPU_ARCHITECTURE_IA64 = 6, /* PROCESSOR_ARCHITECTURE_IA64 */ - MD_CPU_ARCHITECTURE_ALPHA64 = 7, /* PROCESSOR_ARCHITECTURE_ALPHA64 */ - MD_CPU_ARCHITECTURE_MSIL = 8, /* PROCESSOR_ARCHITECTURE_MSIL - * (Microsoft Intermediate Language) */ - MD_CPU_ARCHITECTURE_AMD64 = 9, /* PROCESSOR_ARCHITECTURE_AMD64 */ - MD_CPU_ARCHITECTURE_X86_WIN64 = 10, - /* PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 (WoW64) */ - MD_CPU_ARCHITECTURE_SPARC = 0x8001, /* Breakpad-defined value for SPARC */ - MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */ -} MDCPUArchitecture; - -/* For (MDRawSystemInfo).platform_id: */ -typedef enum { - MD_OS_WIN32S = 0, /* VER_PLATFORM_WIN32s (Windows 3.1) */ - MD_OS_WIN32_WINDOWS = 1, /* VER_PLATFORM_WIN32_WINDOWS (Windows 95-98-Me) */ - MD_OS_WIN32_NT = 2, /* VER_PLATFORM_WIN32_NT (Windows NT, 2000+) */ - MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH - * (Windows CE, Windows Mobile, "Handheld") */ - - /* The following values are Breakpad-defined. */ - MD_OS_UNIX = 0x8000, /* Generic Unix-ish */ - MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */ - MD_OS_LINUX = 0x8201, /* Linux */ - MD_OS_SOLARIS = 0x8202 /* Solaris */ -} MDOSPlatform; - - -typedef struct { - u_int32_t size_of_info; /* Length of entire MDRawMiscInfo structure. */ - u_int32_t flags1; - - /* The next field is only valid if flags1 contains - * MD_MISCINFO_FLAGS1_PROCESS_ID. */ - u_int32_t process_id; - - /* The next 3 fields are only valid if flags1 contains - * MD_MISCINFO_FLAGS1_PROCESS_TIMES. */ - u_int32_t process_create_time; /* time_t process started */ - u_int32_t process_user_time; /* seconds of user CPU time */ - u_int32_t process_kernel_time; /* seconds of kernel CPU time */ - - /* The following fields are not present in MINIDUMP_MISC_INFO but are - * in MINIDUMP_MISC_INFO_2. When this struct is populated, these values - * may not be set. Use flags1 or sizeOfInfo to determine whether these - * values are present. These are only valid when flags1 contains - * MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO. */ - u_int32_t processor_max_mhz; - u_int32_t processor_current_mhz; - u_int32_t processor_mhz_limit; - u_int32_t processor_max_idle_state; - u_int32_t processor_current_idle_state; -} MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO2 */ - -#define MD_MISCINFO_SIZE 24 -#define MD_MISCINFO2_SIZE 44 - -/* For (MDRawMiscInfo).flags1. These values indicate which fields in the - * MDRawMiscInfoStructure are valid. */ -typedef enum { - MD_MISCINFO_FLAGS1_PROCESS_ID = 0x00000001, - /* MINIDUMP_MISC1_PROCESS_ID */ - MD_MISCINFO_FLAGS1_PROCESS_TIMES = 0x00000002, - /* MINIDUMP_MISC1_PROCESS_TIMES */ - MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO = 0x00000004 - /* MINIDUMP_MISC1_PROCESSOR_POWER_INFO */ -} MDMiscInfoFlags1; - - -/* - * Breakpad extension types - */ - - -typedef struct { - /* validity is a bitmask with values from MDBreakpadInfoValidity, indicating - * which of the other fields in the structure are valid. */ - u_int32_t validity; - - /* Thread ID of the handler thread. dump_thread_id should correspond to - * the thread_id of an MDRawThread in the minidump's MDRawThreadList if - * a dedicated thread in that list was used to produce the minidump. If - * the MDRawThreadList does not contain a dedicated thread used to produce - * the minidump, this field should be set to 0 and the validity field - * must not contain MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID. */ - u_int32_t dump_thread_id; - - /* Thread ID of the thread that requested the minidump be produced. As - * with dump_thread_id, requesting_thread_id should correspond to the - * thread_id of an MDRawThread in the minidump's MDRawThreadList. For - * minidumps produced as a result of an exception, requesting_thread_id - * will be the same as the MDRawExceptionStream's thread_id field. For - * minidumps produced "manually" at the program's request, - * requesting_thread_id will indicate which thread caused the dump to be - * written. If the minidump was produced at the request of something - * other than a thread in the MDRawThreadList, this field should be set - * to 0 and the validity field must not contain - * MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID. */ - u_int32_t requesting_thread_id; -} MDRawBreakpadInfo; - -/* For (MDRawBreakpadInfo).validity: */ -typedef enum { - /* When set, the dump_thread_id field is valid. */ - MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID = 1 << 0, - - /* When set, the requesting_thread_id field is valid. */ - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1 -} MDBreakpadInfoValidity; - -typedef struct { - /* expression, function, and file are 0-terminated UTF-16 strings. They - * may be truncated if necessary, but should always be 0-terminated when - * written to a file. - * Fixed-length strings are used because MiniDumpWriteDump doesn't offer - * a way for user streams to point to arbitrary RVAs for strings. */ - u_int16_t expression[128]; /* Assertion that failed... */ - u_int16_t function[128]; /* ...within this function... */ - u_int16_t file[128]; /* ...in this file... */ - u_int32_t line; /* ...at this line. */ - u_int32_t type; -} MDRawAssertionInfo; - -/* For (MDRawAssertionInfo).type: */ -typedef enum { - MD_ASSERTION_INFO_TYPE_UNKNOWN = 0, - - /* Used for assertions that would be raised by the MSVC CRT but are - * directed to an invalid parameter handler instead. */ - MD_ASSERTION_INFO_TYPE_INVALID_PARAMETER, - - /* Used for assertions that would be raised by the MSVC CRT but are - * directed to a pure virtual call handler instead. */ - MD_ASSERTION_INFO_TYPE_PURE_VIRTUAL_CALL -} MDAssertionInfoData; - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif /* _MSC_VER */ - - -#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ */ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_size.h b/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_size.h deleted file mode 100644 index 918544b6..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/common/minidump_size.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. */ - -// minidump_size.h: Provides a C++ template for programmatic access to -// the sizes of various types defined in minidump_format.h. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ -#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ - -#include - -#include "google_breakpad/common/minidump_format.h" - -namespace google_breakpad { - -template -class minidump_size { - public: - static size_t size() { return sizeof(T); } -}; - -// Explicit specializations for variable-length types. The size returned -// for these should be the size for an object without its variable-length -// section. - -template<> -class minidump_size { - public: - static size_t size() { return MDString_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawThreadList_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDCVInfoPDB20_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDCVInfoPDB70_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDImageDebugMisc_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawModuleList_minsize; } -}; - -template<> -class minidump_size { - public: - static size_t size() { return MDRawMemoryList_minsize; } -}; - -// Explicit specialization for MDRawModule, for which sizeof may include -// tail-padding on some architectures but not others. - -template<> -class minidump_size { - public: - static size_t size() { return MD_MODULE_SIZE; } -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_COMMON_MINIDUMP_SIZE_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/basic_source_line_resolver.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/basic_source_line_resolver.h deleted file mode 100644 index 38759579..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/basic_source_line_resolver.h +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// BasicSourceLineResolver implements SourceLineResolverInterface, using -// address map files produced by a compatible writer, e.g. PDBSourceLineWriter. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ - -// TODO: Platforms that have no hash_map can use map, at the likely cost of -// performance. -#ifdef __SUNPRO_CC -#define BSLR_NO_HASH_MAP -#endif // __SUNPRO_CC - -#ifdef BSLR_NO_HASH_MAP -#include -#else // BSLR_NO_HASH_MAP -#include -#endif // BSLR_NO_HASH_MAP - -#include "google_breakpad/processor/source_line_resolver_interface.h" - -namespace google_breakpad { - -using std::string; -#ifdef BSLR_NO_HASH_MAP -using std::map; -#else // BSLR_NO_HASH_MAP -using __gnu_cxx::hash_map; -#endif // BSLR_NO_HASH_MAP - -class BasicSourceLineResolver : public SourceLineResolverInterface { - public: - BasicSourceLineResolver(); - virtual ~BasicSourceLineResolver(); - - // SourceLineResolverInterface methods, see source_line_resolver_interface.h - // for more details. - - // Adds a module to this resolver, returning true on success. - // The given map_file is read into memory, and its symbols will be - // retained until the BasicSourceLineResolver is destroyed. - virtual bool LoadModule(const string &module_name, const string &map_file); - - // Exactly the same as above, except the given map_buffer is used - // for symbols. - virtual bool LoadModuleUsingMapBuffer(const string &module_name, - const string &map_buffer); - - - virtual bool HasModule(const string &module_name) const; - - virtual StackFrameInfo* FillSourceLineInfo(StackFrame *frame) const; - - private: - template class MemAddrMap; - struct Line; - struct Function; - struct PublicSymbol; - struct File; -#ifdef BSLR_NO_HASH_MAP - struct CompareString { - bool operator()(const string &s1, const string &s2) const; - }; -#else // BSLR_NO_HASH_MAP - struct HashString { - size_t operator()(const string &s) const; - }; -#endif // BSLR_NO_HASH_MAP - class Module; - - // All of the modules we've loaded -#ifdef BSLR_NO_HASH_MAP - typedef map ModuleMap; -#else // BSLR_NO_HASH_MAP - typedef hash_map ModuleMap; -#endif // BSLR_NO_HASH_MAP - ModuleMap *modules_; - - // Disallow unwanted copy ctor and assignment operator - BasicSourceLineResolver(const BasicSourceLineResolver&); - void operator=(const BasicSourceLineResolver&); -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/call_stack.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/call_stack.h deleted file mode 100644 index 21f595e7..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/call_stack.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// call_stack.h: A call stack comprised of stack frames. -// -// This class manages a vector of stack frames. It is used instead of -// exposing the vector directly to allow the CallStack to own StackFrame -// pointers without having to publicly export the linked_ptr class. A -// CallStack must be composed of pointers instead of objects to allow for -// CPU-specific StackFrame subclasses. -// -// By convention, the stack frame at index 0 is the innermost callee frame, -// and the frame at the highest index in a call stack is the outermost -// caller. CallStack only allows stacks to be built by pushing frames, -// beginning with the innermost callee frame. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ - -#include - -namespace google_breakpad { - -using std::vector; - -struct StackFrame; -template class linked_ptr; - -class CallStack { - public: - CallStack() { Clear(); } - ~CallStack(); - - // Resets the CallStack to its initial empty state - void Clear(); - - const vector* frames() const { return &frames_; } - - private: - // Stackwalker is responsible for building the frames_ vector. - friend class Stackwalker; - - // Storage for pushed frames. - vector frames_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCSSOR_CALL_STACK_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_module.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_module.h deleted file mode 100644 index 38ee956e..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_module.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// code_module.h: Carries information about code modules that are loaded -// into a process. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -class CodeModule { - public: - virtual ~CodeModule() {} - - // The base address of this code module as it was loaded by the process. - // (u_int64_t)-1 on error. - virtual u_int64_t base_address() const = 0; - - // The size of the code module. 0 on error. - virtual u_int64_t size() const = 0; - - // The path or file name that the code module was loaded from. Empty on - // error. - virtual string code_file() const = 0; - - // An identifying string used to discriminate between multiple versions and - // builds of the same code module. This may contain a uuid, timestamp, - // version number, or any combination of this or other information, in an - // implementation-defined format. Empty on error. - virtual string code_identifier() const = 0; - - // The filename containing debugging information associated with the code - // module. If debugging information is stored in a file separate from the - // code module itself (as is the case when .pdb or .dSYM files are used), - // this will be different from code_file. If debugging information is - // stored in the code module itself (possibly prior to stripping), this - // will be the same as code_file. Empty on error. - virtual string debug_file() const = 0; - - // An identifying string similar to code_identifier, but identifies a - // specific version and build of the associated debug file. This may be - // the same as code_identifier when the debug_file and code_file are - // identical or when the same identifier is used to identify distinct - // debug and code files. - virtual string debug_identifier() const = 0; - - // A human-readable representation of the code module's version. Empty on - // error. - virtual string version() const = 0; - - // Creates a new copy of this CodeModule object, which the caller takes - // ownership of. The new CodeModule may be of a different concrete class - // than the CodeModule being copied, but will behave identically to the - // copied CodeModule as far as the CodeModule interface is concerned. - virtual const CodeModule* Copy() const = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_modules.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_modules.h deleted file mode 100644 index 29c55d4e..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/code_modules.h +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// code_modules.h: Contains all of the CodeModule objects that were loaded -// into a single process. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ - -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -class CodeModule; - -class CodeModules { - public: - virtual ~CodeModules() {} - - // The number of contained CodeModule objects. - virtual unsigned int module_count() const = 0; - - // Random access to modules. Returns the module whose code is present - // at the address indicated by |address|. If no module is present at this - // address, returns NULL. Ownership of the returned CodeModule is retained - // by the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleForAddress(u_int64_t address) const = 0; - - // Returns the module corresponding to the main executable. If there is - // no main executable, returns NULL. Ownership of the returned CodeModule - // is retained by the CodeModules object; pointers returned by this method - // are valid for comparison with pointers returned by the other Get - // methods. - virtual const CodeModule* GetMainModule() const = 0; - - // Sequential access to modules. A sequence number of 0 corresponds to the - // module residing lowest in memory. If the sequence number is out of - // range, returns NULL. Ownership of the returned CodeModule is retained - // by the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleAtSequence( - unsigned int sequence) const = 0; - - // Sequential access to modules. This is similar to GetModuleAtSequence, - // except no ordering requirement is enforced. A CodeModules implementation - // may return CodeModule objects from GetModuleAtIndex in any order it - // wishes, provided that the order remain the same throughout the life of - // the CodeModules object. Typically, GetModuleAtIndex would be used by - // a caller to enumerate all CodeModule objects quickly when the enumeration - // does not require any ordering. If the index argument is out of range, - // returns NULL. Ownership of the returned CodeModule is retained by - // the CodeModules object; pointers returned by this method are valid for - // comparison with pointers returned by the other Get methods. - virtual const CodeModule* GetModuleAtIndex(unsigned int index) const = 0; - - // Creates a new copy of this CodeModules object, which the caller takes - // ownership of. The new object will also contain copies of the existing - // object's child CodeModule objects. The new CodeModules object may be of - // a different concrete class than the object being copied, but will behave - // identically to the copied object as far as the CodeModules and CodeModule - // interfaces are concerned, except that the order that GetModuleAtIndex - // returns objects in may differ between a copy and the original CodeModules - // object. - virtual const CodeModules* Copy() const = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/memory_region.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/memory_region.h deleted file mode 100644 index 1ac3fe8d..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/memory_region.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// memory_region.h: Access to memory regions. -// -// A MemoryRegion provides virtual access to a range of memory. It is an -// abstraction allowing the actual source of memory to be independent of -// methods which need to access a virtual memory space. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ - - -#include "google_breakpad/common/breakpad_types.h" - - -namespace google_breakpad { - - -class MemoryRegion { - public: - virtual ~MemoryRegion() {} - - // The base address of this memory region. - virtual u_int64_t GetBase() = 0; - - // The size of this memory region. - virtual u_int32_t GetSize() = 0; - - // Access to data of various sizes within the memory region. address - // is a pointer to read, and it must lie within the memory region as - // defined by its base address and size. The location pointed to by - // value is set to the value at address. Byte-swapping is performed - // if necessary so that the value is appropriate for the running - // program. Returns true on success. Fails and returns false if address - // is out of the region's bounds (after considering the width of value), - // or for other types of errors. - virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) = 0; - virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) = 0; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump.h deleted file mode 100644 index 5c5dccc9..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump.h +++ /dev/null @@ -1,904 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump.h: A minidump reader. -// -// The basic structure of this module tracks the structure of the minidump -// file itself. At the top level, a minidump file is represented by a -// Minidump object. Like most other classes in this module, Minidump -// provides a Read method that initializes the object with information from -// the file. Most of the classes in this file are wrappers around the -// "raw" structures found in the minidump file itself, and defined in -// minidump_format.h. For example, each thread is represented by a -// MinidumpThread object, whose parameters are specified in an MDRawThread -// structure. A properly byte-swapped MDRawThread can be obtained from a -// MinidumpThread easily by calling its thread() method. -// -// Most of the module lazily reads only the portion of the minidump file -// necessary to fulfill the user's request. Calling Minidump::Read -// only reads the minidump's directory. The thread list is not read until -// it is needed, and even once it's read, the memory regions for each -// thread's stack aren't read until they're needed. This strategy avoids -// unnecessary file input, and allocating memory for data in which the user -// has no interest. Note that although memory allocations for a typical -// minidump file are not particularly large, it is possible for legitimate -// minidumps to be sizable. A full-memory minidump, for example, contains -// a snapshot of the entire mapped memory space. Even a normal minidump, -// with stack memory only, can be large if, for example, the dump was -// generated in response to a crash that occurred due to an infinite- -// recursion bug that caused the stack's limits to be exceeded. Finally, -// some users of this library will unfortunately find themselves in the -// position of having to process potentially-hostile minidumps that might -// attempt to cause problems by forcing the minidump processor to over- -// allocate memory. -// -// Memory management in this module is based on a strict -// you-don't-own-anything policy. The only object owned by the user is -// the top-level Minidump object, the creation and destruction of which -// must be the user's own responsibility. All other objects obtained -// through interaction with this module are ultimately owned by the -// Minidump object, and will be freed upon the Minidump object's destruction. -// Because memory regions can potentially involve large allocations, a -// FreeMemory method is provided by MinidumpMemoryRegion, allowing the user -// to release data when it is no longer needed. Use of this method is -// optional but recommended. If freed data is later required, it will -// be read back in from the minidump file again. -// -// There is one exception to this memory management policy: -// Minidump::ReadString will return a string object to the user, and the user -// is responsible for its deletion. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ - -#include - -#include -#include -#include - -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/memory_region.h" - - -namespace google_breakpad { - - -using std::map; -using std::string; -using std::vector; - - -class Minidump; -template class RangeMap; - - -// MinidumpObject is the base of all Minidump* objects except for Minidump -// itself. -class MinidumpObject { - public: - virtual ~MinidumpObject() {} - - bool valid() const { return valid_; } - - protected: - explicit MinidumpObject(Minidump* minidump); - - // Refers to the Minidump object that is the ultimate parent of this - // Some MinidumpObjects are owned by other MinidumpObjects, but at the - // root of the ownership tree is always a Minidump. The Minidump object - // is kept here for access to its seeking and reading facilities, and - // for access to data about the minidump file itself, such as whether - // it should be byte-swapped. - Minidump* minidump_; - - // MinidumpObjects are not valid when created. When a subclass populates - // its own fields, it can set valid_ to true. Accessors and mutators may - // wish to consider or alter the valid_ state as they interact with - // objects. - bool valid_; -}; - - -// This class exists primarily to provide a virtual destructor in a base -// class common to all objects that might be stored in -// Minidump::mStreamObjects. Some object types (MinidumpContext) will -// never be stored in Minidump::mStreamObjects, but are represented as -// streams and adhere to the same interface, and may be derived from -// this class. -class MinidumpStream : public MinidumpObject { - public: - virtual ~MinidumpStream() {} - - protected: - explicit MinidumpStream(Minidump* minidump); - - private: - // Populate (and validate) the MinidumpStream. minidump_ is expected - // to be positioned at the beginning of the stream, so that the next - // read from the minidump will be at the beginning of the stream. - // expected_size should be set to the stream's length as contained in - // the MDRawDirectory record or other identifying record. A class - // that implements MinidumpStream can compare expected_size to a - // known size as an integrity check. - virtual bool Read(u_int32_t expected_size) = 0; -}; - - -// MinidumpContext carries a CPU-specific MDRawContext structure, which -// contains CPU context such as register states. Each thread has its -// own context, and the exception record, if present, also has its own -// context. Note that if the exception record is present, the context it -// refers to is probably what the user wants to use for the exception -// thread, instead of that thread's own context. The exception thread's -// context (as opposed to the exception record's context) will contain -// context for the exception handler (which performs minidump generation), -// and not the context that caused the exception (which is probably what the -// user wants). -class MinidumpContext : public MinidumpStream { - public: - virtual ~MinidumpContext(); - - // Returns an MD_CONTEXT_* value such as MD_CONTEXT_X86 or MD_CONTEXT_PPC - // identifying the CPU type that the context was collected from. The - // returned value will identify the CPU only, and will have any other - // MD_CONTEXT_* bits masked out. Returns 0 on failure. - u_int32_t GetContextCPU() const; - - // Returns raw CPU-specific context data for the named CPU type. If the - // context data does not match the CPU type or does not exist, returns - // NULL. - const MDRawContextX86* GetContextX86() const; - const MDRawContextPPC* GetContextPPC() const; - const MDRawContextAMD64* GetContextAMD64() const; - const MDRawContextSPARC* GetContextSPARC() const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class MinidumpThread; - friend class MinidumpException; - - explicit MinidumpContext(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // Free the CPU-specific context structure. - void FreeContext(); - - // If the minidump contains a SYSTEM_INFO_STREAM, makes sure that the - // system info stream gives an appropriate CPU type matching the context - // CPU type in context_cpu_type. Returns false if the CPU type does not - // match. Returns true if the CPU type matches or if the minidump does - // not contain a system info stream. - bool CheckAgainstSystemInfo(u_int32_t context_cpu_type); - - // Store this separately because of the weirdo AMD64 context - u_int32_t context_flags_; - - // The CPU-specific context structure. - union { - MDRawContextBase* base; - MDRawContextX86* x86; - MDRawContextPPC* ppc; - MDRawContextAMD64* amd64; - // on Solaris SPARC, sparc is defined as a numeric constant, - // so variables can NOT be named as sparc - MDRawContextSPARC* ctx_sparc; - } context_; -}; - - -// MinidumpMemoryRegion does not wrap any MDRaw structure, and only contains -// a reference to an MDMemoryDescriptor. This object is intended to wrap -// portions of a minidump file that contain memory dumps. In normal -// minidumps, each MinidumpThread owns a MinidumpMemoryRegion corresponding -// to the thread's stack memory. MinidumpMemoryList also gives access to -// memory regions in its list as MinidumpMemoryRegions. This class -// adheres to MemoryRegion so that it may be used as a data provider to -// the Stackwalker family of classes. -class MinidumpMemoryRegion : public MinidumpObject, - public MemoryRegion { - public: - virtual ~MinidumpMemoryRegion(); - - static void set_max_bytes(u_int32_t max_bytes) { max_bytes_ = max_bytes; } - static u_int32_t max_bytes() { return max_bytes_; } - - // Returns a pointer to the base of the memory region. Returns the - // cached value if available, otherwise, reads the minidump file and - // caches the memory region. - const u_int8_t* GetMemory(); - - // The address of the base of the memory region. - u_int64_t GetBase(); - - // The size, in bytes, of the memory region. - u_int32_t GetSize(); - - // Frees the cached memory region, if cached. - void FreeMemory(); - - // Obtains the value of memory at the pointer specified by address. - bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value); - bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class MinidumpThread; - friend class MinidumpMemoryList; - - explicit MinidumpMemoryRegion(Minidump* minidump); - - // Identify the base address and size of the memory region, and the - // location it may be found in the minidump file. - void SetDescriptor(MDMemoryDescriptor* descriptor); - - // Implementation for GetMemoryAtAddress - template bool GetMemoryAtAddressInternal(u_int64_t address, - T* value); - - // The largest memory region that will be read from a minidump. The - // default is 1MB. - static u_int32_t max_bytes_; - - // Base address and size of the memory region, and its position in the - // minidump file. - MDMemoryDescriptor* descriptor_; - - // Cached memory. - vector* memory_; -}; - - -// MinidumpThread contains information about a thread of execution, -// including a snapshot of the thread's stack and CPU context. For -// the thread that caused an exception, the context carried by -// MinidumpException is probably desired instead of the CPU context -// provided here. -class MinidumpThread : public MinidumpObject { - public: - virtual ~MinidumpThread(); - - const MDRawThread* thread() const { return valid_ ? &thread_ : NULL; } - MinidumpMemoryRegion* GetMemory(); - MinidumpContext* GetContext(); - - // The thread ID is used to determine if a thread is the exception thread, - // so a special getter is provided to retrieve this data from the - // MDRawThread structure. Returns false if the thread ID cannot be - // determined. - bool GetThreadID(u_int32_t *thread_id) const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // These objects are managed by MinidumpThreadList. - friend class MinidumpThreadList; - - explicit MinidumpThread(Minidump* minidump); - - // This works like MinidumpStream::Read, but is driven by - // MinidumpThreadList. No size checking is done, because - // MinidumpThreadList handles that directly. - bool Read(); - - MDRawThread thread_; - MinidumpMemoryRegion* memory_; - MinidumpContext* context_; -}; - - -// MinidumpThreadList contains all of the threads (as MinidumpThreads) in -// a process. -class MinidumpThreadList : public MinidumpStream { - public: - virtual ~MinidumpThreadList(); - - static void set_max_threads(u_int32_t max_threads) { - max_threads_ = max_threads; - } - static u_int32_t max_threads() { return max_threads_; } - - unsigned int thread_count() const { return valid_ ? thread_count_ : 0; } - - // Sequential access to threads. - MinidumpThread* GetThreadAtIndex(unsigned int index) const; - - // Random access to threads. - MinidumpThread* GetThreadByID(u_int32_t thread_id); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef map IDToThreadMap; - typedef vector MinidumpThreads; - - static const u_int32_t kStreamType = MD_THREAD_LIST_STREAM; - - explicit MinidumpThreadList(Minidump* aMinidump); - - bool Read(u_int32_t aExpectedSize); - - // The largest number of threads that will be read from a minidump. The - // default is 256. - static u_int32_t max_threads_; - - // Access to threads using the thread ID as the key. - IDToThreadMap id_to_thread_map_; - - // The list of threads. - MinidumpThreads* threads_; - u_int32_t thread_count_; -}; - - -// MinidumpModule wraps MDRawModule, which contains information about loaded -// code modules. Access is provided to various data referenced indirectly -// by MDRawModule, such as the module's name and a specification for where -// to locate debugging information for the module. -class MinidumpModule : public MinidumpObject, - public CodeModule { - public: - virtual ~MinidumpModule(); - - static void set_max_cv_bytes(u_int32_t max_cv_bytes) { - max_cv_bytes_ = max_cv_bytes; - } - static u_int32_t max_cv_bytes() { return max_cv_bytes_; } - - static void set_max_misc_bytes(u_int32_t max_misc_bytes) { - max_misc_bytes_ = max_misc_bytes; - } - static u_int32_t max_misc_bytes() { return max_misc_bytes_; } - - const MDRawModule* module() const { return valid_ ? &module_ : NULL; } - - // CodeModule implementation - virtual u_int64_t base_address() const { - return valid_ ? module_.base_of_image : static_cast(-1); - } - virtual u_int64_t size() const { return valid_ ? module_.size_of_image : 0; } - virtual string code_file() const; - virtual string code_identifier() const; - virtual string debug_file() const; - virtual string debug_identifier() const; - virtual string version() const; - virtual const CodeModule* Copy() const; - - // The CodeView record, which contains information to locate the module's - // debugging information (pdb). This is returned as u_int8_t* because - // the data can be of types MDCVInfoPDB20* or MDCVInfoPDB70*, or it may be - // of a type unknown to Breakpad, in which case the raw data will still be - // returned but no byte-swapping will have been performed. Check the - // record's signature in the first four bytes to differentiate between - // the various types. Current toolchains generate modules which carry - // MDCVInfoPDB70 by default. Returns a pointer to the CodeView record on - // success, and NULL on failure. On success, the optional |size| argument - // is set to the size of the CodeView record. - const u_int8_t* GetCVRecord(u_int32_t* size); - - // The miscellaneous debug record, which is obsolete. Current toolchains - // do not generate this type of debugging information (dbg), and this - // field is not expected to be present. Returns a pointer to the debugging - // record on success, and NULL on failure. On success, the optional |size| - // argument is set to the size of the debugging record. - const MDImageDebugMisc* GetMiscRecord(u_int32_t* size); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // These objects are managed by MinidumpModuleList. - friend class MinidumpModuleList; - - explicit MinidumpModule(Minidump* minidump); - - // This works like MinidumpStream::Read, but is driven by - // MinidumpModuleList. No size checking is done, because - // MinidumpModuleList handles that directly. - bool Read(); - - // Reads indirectly-referenced data, including the module name, CodeView - // record, and miscellaneous debugging record. This is necessary to allow - // MinidumpModuleList to fully construct MinidumpModule objects without - // requiring seeks to read a contiguous set of MinidumpModule objects. - // All auxiliary data should be available when Read is called, in order to - // allow the CodeModule getters to be const methods. - bool ReadAuxiliaryData(); - - // The largest number of bytes that will be read from a minidump for a - // CodeView record or miscellaneous debugging record, respectively. The - // default for each is 1024. - static u_int32_t max_cv_bytes_; - static u_int32_t max_misc_bytes_; - - // True after a successful Read. This is different from valid_, which is - // not set true until ReadAuxiliaryData also completes successfully. - // module_valid_ is only used by ReadAuxiliaryData and the functions it - // calls to determine whether the object is ready for auxiliary data to - // be read. - bool module_valid_; - - // True if debug info was read from the module. Certain modules - // may contain debug records in formats we don't support, - // so we can just set this to false to ignore them. - bool has_debug_info_; - - MDRawModule module_; - - // Cached module name. - const string* name_; - - // Cached CodeView record - this is MDCVInfoPDB20 or (likely) - // MDCVInfoPDB70, or possibly something else entirely. Stored as a u_int8_t - // because the structure contains a variable-sized string and its exact - // size cannot be known until it is processed. - vector* cv_record_; - - // If cv_record_ is present, cv_record_signature_ contains a copy of the - // CodeView record's first four bytes, for ease of determinining the - // type of structure that cv_record_ contains. - u_int32_t cv_record_signature_; - - // Cached MDImageDebugMisc (usually not present), stored as u_int8_t - // because the structure contains a variable-sized string and its exact - // size cannot be known until it is processed. - vector* misc_record_; -}; - - -// MinidumpModuleList contains all of the loaded code modules for a process -// in the form of MinidumpModules. It maintains a map of these modules -// so that it may easily provide a code module corresponding to a specific -// address. -class MinidumpModuleList : public MinidumpStream, - public CodeModules { - public: - virtual ~MinidumpModuleList(); - - static void set_max_modules(u_int32_t max_modules) { - max_modules_ = max_modules; - } - static u_int32_t max_modules() { return max_modules_; } - - // CodeModules implementation. - virtual unsigned int module_count() const { - return valid_ ? module_count_ : 0; - } - virtual const MinidumpModule* GetModuleForAddress(u_int64_t address) const; - virtual const MinidumpModule* GetMainModule() const; - virtual const MinidumpModule* GetModuleAtSequence( - unsigned int sequence) const; - virtual const MinidumpModule* GetModuleAtIndex(unsigned int index) const; - virtual const CodeModules* Copy() const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef vector MinidumpModules; - - static const u_int32_t kStreamType = MD_MODULE_LIST_STREAM; - - explicit MinidumpModuleList(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // The largest number of modules that will be read from a minidump. The - // default is 1024. - static u_int32_t max_modules_; - - // Access to modules using addresses as the key. - RangeMap *range_map_; - - MinidumpModules *modules_; - u_int32_t module_count_; -}; - - -// MinidumpMemoryList corresponds to a minidump's MEMORY_LIST_STREAM stream, -// which references the snapshots of all of the memory regions contained -// within the minidump. For a normal minidump, this includes stack memory -// (also referenced by each MinidumpThread, in fact, the MDMemoryDescriptors -// here and in MDRawThread both point to exactly the same data in a -// minidump file, conserving space), as well as a 256-byte snapshot of memory -// surrounding the instruction pointer in the case of an exception. Other -// types of minidumps may contain significantly more memory regions. Full- -// memory minidumps contain all of a process' mapped memory. -class MinidumpMemoryList : public MinidumpStream { - public: - virtual ~MinidumpMemoryList(); - - static void set_max_regions(u_int32_t max_regions) { - max_regions_ = max_regions; - } - static u_int32_t max_regions() { return max_regions_; } - - unsigned int region_count() const { return valid_ ? region_count_ : 0; } - - // Sequential access to memory regions. - MinidumpMemoryRegion* GetMemoryRegionAtIndex(unsigned int index); - - // Random access to memory regions. Returns the region encompassing - // the address identified by address. - MinidumpMemoryRegion* GetMemoryRegionForAddress(u_int64_t address); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - typedef vector MemoryDescriptors; - typedef vector MemoryRegions; - - static const u_int32_t kStreamType = MD_MEMORY_LIST_STREAM; - - explicit MinidumpMemoryList(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - // The largest number of memory regions that will be read from a minidump. - // The default is 256. - static u_int32_t max_regions_; - - // Access to memory regions using addresses as the key. - RangeMap *range_map_; - - // The list of descriptors. This is maintained separately from the list - // of regions, because MemoryRegion doesn't own its MemoryDescriptor, it - // maintains a pointer to it. descriptors_ provides the storage for this - // purpose. - MemoryDescriptors *descriptors_; - - // The list of regions. - MemoryRegions *regions_; - u_int32_t region_count_; -}; - - -// MinidumpException wraps MDRawExceptionStream, which contains information -// about the exception that caused the minidump to be generated, if the -// minidump was generated in an exception handler called as a result of -// an exception. It also provides access to a MinidumpContext object, -// which contains the CPU context for the exception thread at the time -// the exception occurred. -class MinidumpException : public MinidumpStream { - public: - virtual ~MinidumpException(); - - const MDRawExceptionStream* exception() const { - return valid_ ? &exception_ : NULL; - } - - // The thread ID is used to determine if a thread is the exception thread, - // so a special getter is provided to retrieve this data from the - // MDRawExceptionStream structure. Returns false if the thread ID cannot - // be determined. - bool GetThreadID(u_int32_t *thread_id) const; - - MinidumpContext* GetContext(); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_EXCEPTION_STREAM; - - explicit MinidumpException(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - MDRawExceptionStream exception_; - MinidumpContext* context_; -}; - - -// MinidumpSystemInfo wraps MDRawSystemInfo and provides information about -// the system on which the minidump was generated. See also MinidumpMiscInfo. -class MinidumpSystemInfo : public MinidumpStream { - public: - virtual ~MinidumpSystemInfo(); - - const MDRawSystemInfo* system_info() const { - return valid_ ? &system_info_ : NULL; - } - - // GetOS and GetCPU return textual representations of the operating system - // and CPU that produced the minidump. Unlike most other Minidump* methods, - // they return string objects, not weak pointers. Defined values for - // GetOS() are "mac", "windows", and "linux". Defined values for GetCPU - // are "x86" and "ppc". These methods return an empty string when their - // values are unknown. - string GetOS(); - string GetCPU(); - - // I don't know what CSD stands for, but this field is documented as - // returning a textual representation of the OS service pack. On other - // platforms, this provides additional information about an OS version - // level beyond major.minor.micro. Returns NULL if unknown. - const string* GetCSDVersion(); - - // If a CPU vendor string can be determined, returns a pointer to it, - // otherwise, returns NULL. CPU vendor strings can be determined from - // x86 CPUs with CPUID 0. - const string* GetCPUVendor(); - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_SYSTEM_INFO_STREAM; - - explicit MinidumpSystemInfo(Minidump* minidump); - - bool Read(u_int32_t expected_size); - - MDRawSystemInfo system_info_; - - // Textual representation of the OS service pack, for minidumps produced - // by MiniDumpWriteDump on Windows. - const string* csd_version_; - - // A string identifying the CPU vendor, if known. - const string* cpu_vendor_; -}; - - -// MinidumpMiscInfo wraps MDRawMiscInfo and provides information about -// the process that generated the minidump, and optionally additional system -// information. See also MinidumpSystemInfo. -class MinidumpMiscInfo : public MinidumpStream { - public: - const MDRawMiscInfo* misc_info() const { - return valid_ ? &misc_info_ : NULL; - } - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_MISC_INFO_STREAM; - - explicit MinidumpMiscInfo(Minidump* minidump_); - - bool Read(u_int32_t expected_size_); - - MDRawMiscInfo misc_info_; -}; - - -// MinidumpBreakpadInfo wraps MDRawBreakpadInfo, which is an optional stream in -// a minidump that provides additional information about the process state -// at the time the minidump was generated. -class MinidumpBreakpadInfo : public MinidumpStream { - public: - const MDRawBreakpadInfo* breakpad_info() const { - return valid_ ? &breakpad_info_ : NULL; - } - - // These thread IDs are used to determine if threads deserve special - // treatment, so special getters are provided to retrieve this data from - // the MDRawBreakpadInfo structure. The getters return false if the thread - // IDs cannot be determined. - bool GetDumpThreadID(u_int32_t *thread_id) const; - bool GetRequestingThreadID(u_int32_t *thread_id) const; - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - friend class Minidump; - - static const u_int32_t kStreamType = MD_BREAKPAD_INFO_STREAM; - - explicit MinidumpBreakpadInfo(Minidump* minidump_); - - bool Read(u_int32_t expected_size_); - - MDRawBreakpadInfo breakpad_info_; -}; - - -// Minidump is the user's interface to a minidump file. It wraps MDRawHeader -// and provides access to the minidump's top-level stream directory. -class Minidump { - public: - // path is the pathname of a file containing the minidump. - explicit Minidump(const string& path); - - ~Minidump(); - - static void set_max_streams(u_int32_t max_streams) { - max_streams_ = max_streams; - } - static u_int32_t max_streams() { return max_streams_; } - - static void set_max_string_length(u_int32_t max_string_length) { - max_string_length_ = max_string_length; - } - static u_int32_t max_string_length() { return max_string_length_; } - - const MDRawHeader* header() const { return valid_ ? &header_ : NULL; } - - // Reads the minidump file's header and top-level stream directory. - // The minidump is expected to be positioned at the beginning of the - // header. Read() sets up the stream list and map, and validates the - // Minidump object. - bool Read(); - - // The next set of methods are stubs that call GetStream. They exist to - // force code generation of the templatized API within the module, and - // to avoid exposing an ugly API (GetStream needs to accept a garbage - // parameter). - MinidumpThreadList* GetThreadList(); - MinidumpModuleList* GetModuleList(); - MinidumpMemoryList* GetMemoryList(); - MinidumpException* GetException(); - MinidumpSystemInfo* GetSystemInfo(); - MinidumpMiscInfo* GetMiscInfo(); - MinidumpBreakpadInfo* GetBreakpadInfo(); - - // The next set of methods are provided for users who wish to access - // data in minidump files directly, while leveraging the rest of - // this class and related classes to handle the basic minidump - // structure and known stream types. - - unsigned int GetDirectoryEntryCount() const { - return valid_ ? header_.stream_count : 0; - } - const MDRawDirectory* GetDirectoryEntryAtIndex(unsigned int index) const; - - // The next 2 methods are lower-level I/O routines. They use fd_. - - // Reads count bytes from the minidump at the current position into - // the storage area pointed to by bytes. bytes must be of sufficient - // size. After the read, the file position is advanced by count. - bool ReadBytes(void* bytes, size_t count); - - // Sets the position of the minidump file to offset. - bool SeekSet(off_t offset); - - // Returns the current position of the minidump file. - off_t Tell() { return valid_ ? lseek(fd_, 0, SEEK_CUR) : (off_t)-1; } - - // The next 2 methods are medium-level I/O routines. - - // ReadString returns a string which is owned by the caller! offset - // specifies the offset that a length-encoded string is stored at in the - // minidump file. - string* ReadString(off_t offset); - - // SeekToStreamType positions the file at the beginning of a stream - // identified by stream_type, and informs the caller of the stream's - // length by setting *stream_length. Because stream_map maps each stream - // type to only one stream in the file, this might mislead the user into - // thinking that the stream that this seeks to is the only stream with - // type stream_type. That can't happen for streams that these classes - // deal with directly, because they're only supposed to be present in the - // file singly, and that's verified when stream_map_ is built. Users who - // are looking for other stream types should be aware of this - // possibility, and consider using GetDirectoryEntryAtIndex (possibly - // with GetDirectoryEntryCount) if expecting multiple streams of the same - // type in a single minidump file. - bool SeekToStreamType(u_int32_t stream_type, u_int32_t* stream_length); - - bool swap() const { return valid_ ? swap_ : false; } - - // Print a human-readable representation of the object to stdout. - void Print(); - - private: - // MinidumpStreamInfo is used in the MinidumpStreamMap. It lets - // the Minidump object locate interesting streams quickly, and - // provides a convenient place to stash MinidumpStream objects. - struct MinidumpStreamInfo { - MinidumpStreamInfo() : stream_index(0), stream(NULL) {} - ~MinidumpStreamInfo() { delete stream; } - - // Index into the MinidumpDirectoryEntries vector - unsigned int stream_index; - - // Pointer to the stream if cached, or NULL if not yet populated - MinidumpStream* stream; - }; - - typedef vector MinidumpDirectoryEntries; - typedef map MinidumpStreamMap; - - template T* GetStream(T** stream); - - // Opens the minidump file, or if already open, seeks to the beginning. - bool Open(); - - // The largest number of top-level streams that will be read from a minidump. - // Note that streams are only read (and only consume memory) as needed, - // when directed by the caller. The default is 128. - static u_int32_t max_streams_; - - // The maximum length of a UTF-16 string that will be read from a minidump - // in 16-bit words. The default is 1024. UTF-16 strings are converted - // to UTF-8 when stored in memory, and each UTF-16 word will be represented - // by as many as 3 bytes in UTF-8. - static unsigned int max_string_length_; - - MDRawHeader header_; - - // The list of streams. - MinidumpDirectoryEntries* directory_; - - // Access to streams using the stream type as the key. - MinidumpStreamMap* stream_map_; - - // The pathname of the minidump file to process, set in the constructor. - const string path_; - - // The file descriptor for all file I/O. Used by ReadBytes and SeekSet. - // Set based on the |path_| member by Open, which is called by Read. - int fd_; - - // swap_ is true if the minidump file should be byte-swapped. If the - // minidump was produced by a CPU that is other-endian than the CPU - // processing the minidump, this will be true. If the two CPUs are - // same-endian, this will be false. - bool swap_; - - // Validity of the Minidump structure, false immediately after - // construction or after a failed Read(); true following a successful - // Read(). - bool valid_; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump_processor.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump_processor.h deleted file mode 100644 index 73447f97..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/minidump_processor.h +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -class Minidump; -class ProcessState; -class SourceLineResolverInterface; -class SymbolSupplier; -class SystemInfo; - -class MinidumpProcessor { - public: - // Return type for Process() - enum ProcessResult { - PROCESS_OK, // the minidump was processed successfully - PROCESS_ERROR, // there was an error processing the minidump - PROCESS_INTERRUPTED // processing was interrupted by the SymbolSupplier - }; - - // Initializes this MinidumpProcessor. supplier should be an - // implementation of the SymbolSupplier abstract base class. - MinidumpProcessor(SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - ~MinidumpProcessor(); - - // Processes the minidump file and fills process_state with the result. - ProcessResult Process(const string &minidump_file, - ProcessState *process_state); - - // Populates the cpu_* fields of the |info| parameter with textual - // representations of the CPU type that the minidump in |dump| was - // produced on. Returns false if this information is not available in - // the minidump. - static bool GetCPUInfo(Minidump *dump, SystemInfo *info); - - // Populates the os_* fields of the |info| parameter with textual - // representations of the operating system that the minidump in |dump| - // was produced on. Returns false if this information is not available in - // the minidump. - static bool GetOSInfo(Minidump *dump, SystemInfo *info); - - // Returns a textual representation of the reason that a crash occurred, - // if the minidump in dump was produced as a result of a crash. Returns - // an empty string if this information cannot be determined. If address - // is non-NULL, it will be set to contain the address that caused the - // exception, if this information is available. This will be a code - // address when the crash was caused by problems such as illegal - // instructions or divisions by zero, or a data address when the crash - // was caused by a memory access violation. - static string GetCrashReason(Minidump *dump, u_int64_t *address); - - private: - SymbolSupplier *supplier_; - SourceLineResolverInterface *resolver_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/process_state.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/process_state.h deleted file mode 100644 index afbbb193..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/process_state.h +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// process_state.h: A snapshot of a process, in a fully-digested state. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ - -#include -#include -#include "google_breakpad/processor/system_info.h" -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; -using std::vector; - -class CallStack; -class CodeModules; - -class ProcessState { - public: - ProcessState() : modules_(NULL) { Clear(); } - ~ProcessState(); - - // Resets the ProcessState to its default values - void Clear(); - - // Accessors. See the data declarations below. - u_int32_t time_date_stamp() const { return time_date_stamp_; } - bool crashed() const { return crashed_; } - string crash_reason() const { return crash_reason_; } - u_int64_t crash_address() const { return crash_address_; } - int requesting_thread() const { return requesting_thread_; } - const vector* threads() const { return &threads_; } - const SystemInfo* system_info() const { return &system_info_; } - const CodeModules* modules() const { return modules_; } - - private: - // MinidumpProcessor is responsible for building ProcessState objects. - friend class MinidumpProcessor; - - // The time-date stamp of the minidump (time_t format) - u_int32_t time_date_stamp_; - - // True if the process crashed, false if the dump was produced outside - // of an exception handler. - bool crashed_; - - // If the process crashed, the type of crash. OS- and possibly CPU- - // specific. For example, "EXCEPTION_ACCESS_VIOLATION" (Windows), - // "EXC_BAD_ACCESS / KERN_INVALID_ADDRESS" (Mac OS X), "SIGSEGV" - // (other Unix). - string crash_reason_; - - // If the process crashed, and if crash_reason implicates memory, - // the memory address that caused the crash. For data access errors, - // this will be the data address that caused the fault. For code errors, - // this will be the address of the instruction that caused the fault. - u_int64_t crash_address_; - - // The index of the thread that requested a dump be written in the - // threads vector. If a dump was produced as a result of a crash, this - // will point to the thread that crashed. If the dump was produced as - // by user code without crashing, and the dump contains extended Breakpad - // information, this will point to the thread that requested the dump. - // If the dump was not produced as a result of an exception and no - // extended Breakpad information is present, this field will be set to -1, - // indicating that the dump thread is not available. - int requesting_thread_; - - // Stacks for each thread (except possibly the exception handler - // thread) at the time of the crash. - vector threads_; - - // OS and CPU information. - SystemInfo system_info_; - - // The modules that were loaded into the process represented by the - // ProcessState. - const CodeModules *modules_; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/source_line_resolver_interface.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/source_line_resolver_interface.h deleted file mode 100644 index 93ef85d2..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/source_line_resolver_interface.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Abstract interface to return function/file/line info for a memory address. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -using std::string; - -struct StackFrame; -struct StackFrameInfo; - -class SourceLineResolverInterface { - public: - typedef u_int64_t MemAddr; - - virtual ~SourceLineResolverInterface() {} - - // Adds a module to this resolver, returning true on success. - // - // module_name may be an arbitrary string. Typically, it will be the - // filename of the module, optionally with version identifiers. - // - // map_file should contain line/address mappings for this module. - virtual bool LoadModule(const string &module_name, - const string &map_file) = 0; - // Same as above, but takes the contents of a pre-read map buffer - virtual bool LoadModuleUsingMapBuffer(const string &module_name, - const string &map_buffer) = 0; - - // Returns true if a module with the given name has been loaded. - virtual bool HasModule(const string &module_name) const = 0; - - // Fills in the function_base, function_name, source_file_name, - // and source_line fields of the StackFrame. The instruction and - // module_name fields must already be filled in. Additional debugging - // information, if available, is returned. If the information is not - // available, returns NULL. A NULL return value does not indicate an - // error. The caller takes ownership of any returned StackFrameInfo - // object. - virtual StackFrameInfo* FillSourceLineInfo(StackFrame *frame) const = 0; - - protected: - // SourceLineResolverInterface cannot be instantiated except by subclasses - SourceLineResolverInterface() {} -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame.h deleted file mode 100644 index b330f8ae..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ - -#include -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -class CodeModule; - -using std::string; - -struct StackFrame { - StackFrame() - : instruction(), - module(NULL), - function_name(), - function_base(), - source_file_name(), - source_line(), - source_line_base() {} - virtual ~StackFrame() {} - - // The program counter location as an absolute virtual address. For the - // innermost called frame in a stack, this will be an exact program counter - // or instruction pointer value. For all other frames, this will be within - // the instruction that caused execution to branch to a called function, - // but may not necessarily point to the exact beginning of that instruction. - u_int64_t instruction; - - // The module in which the instruction resides. - const CodeModule *module; - - // The function name, may be omitted if debug symbols are not available. - string function_name; - - // The start address of the function, may be omitted if debug symbols - // are not available. - u_int64_t function_base; - - // The source file name, may be omitted if debug symbols are not available. - string source_file_name; - - // The (1-based) source line number, may be omitted if debug symbols are - // not available. - int source_line; - - // The start address of the source line, may be omitted if debug symbols - // are not available. - u_int64_t source_line_base; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame_cpu.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame_cpu.h deleted file mode 100644 index 70823b9c..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stack_frame_cpu.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stack_frame_cpu.h: CPU-specific StackFrame extensions. -// -// These types extend the StackFrame structure to carry CPU-specific register -// state. They are defined in this header instead of stack_frame.h to -// avoid the need to include minidump_format.h when only the generic -// StackFrame type is needed. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ - -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stack_frame.h" - -namespace google_breakpad { - -struct StackFrameX86 : public StackFrame { - // ContextValidity has one entry for each relevant hardware pointer register - // (%eip and %esp) and one entry for each nonvolatile (callee-save) register. - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_EIP = 1 << 0, - CONTEXT_VALID_ESP = 1 << 1, - CONTEXT_VALID_EBP = 1 << 2, - CONTEXT_VALID_EBX = 1 << 3, - CONTEXT_VALID_ESI = 1 << 4, - CONTEXT_VALID_EDI = 1 << 5, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameX86() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextX86 context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFramePPC : public StackFrame { - // ContextValidity should eventually contain entries for the validity of - // other nonvolatile (callee-save) registers as in - // StackFrameX86::ContextValidity, but the ppc stackwalker doesn't currently - // locate registers other than the ones listed here. - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_SRR0 = 1 << 0, - CONTEXT_VALID_GPR1 = 1 << 1, - CONTEXT_VALID_ALL = -1 - }; - - StackFramePPC() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextPPC context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFrameAMD64 : public StackFrame { - // ContextValidity has one entry for each relevant hardware pointer register - // (%rip and %rsp) and one entry for each nonvolatile (callee-save) register. - //FIXME: validate this list - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_RIP = 1 << 0, - CONTEXT_VALID_RSP = 1 << 1, - CONTEXT_VALID_RBP = 1 << 2, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameAMD64() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextAMD64 context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -struct StackFrameSPARC : public StackFrame { - // to be confirmed - enum ContextValidity { - CONTEXT_VALID_NONE = 0, - CONTEXT_VALID_PC = 1 << 0, - CONTEXT_VALID_SP = 1 << 1, - CONTEXT_VALID_FP = 1 << 2, - CONTEXT_VALID_ALL = -1 - }; - - StackFrameSPARC() : context(), context_validity(CONTEXT_VALID_NONE) {} - - // Register state. This is only fully valid for the topmost frame in a - // stack. In other frames, the values of nonvolatile registers may be - // present, given sufficient debugging information. Refer to - // context_validity. - MDRawContextSPARC context; - - // context_validity is actually ContextValidity, but int is used because - // the OR operator doesn't work well with enumerated types. This indicates - // which fields in context are valid. - int context_validity; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stackwalker.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stackwalker.h deleted file mode 100644 index c463fd80..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/stackwalker.h +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker.h: Generic stackwalker. -// -// The Stackwalker class is an abstract base class providing common generic -// methods that apply to stacks from all systems. Specific implementations -// will extend this class by providing GetContextFrame and GetCallerFrame -// methods to fill in system-specific data in a StackFrame structure. -// Stackwalker assembles these StackFrame strucutres into a CallStack. -// -// Author: Mark Mentovai - - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ - -#include - -namespace google_breakpad { - -class CallStack; -class CodeModules; -template class linked_ptr; -class MemoryRegion; -class MinidumpContext; -class SourceLineResolverInterface; -struct StackFrame; -struct StackFrameInfo; -class SymbolSupplier; -class SystemInfo; - -using std::vector; - - -class Stackwalker { - public: - virtual ~Stackwalker() {} - - // Populates the given CallStack by calling GetContextFrame and - // GetCallerFrame. The frames are further processed to fill all available - // data. Returns true if the stackwalk completed, or false if it was - // interrupted by SymbolSupplier::GetSymbolFile(). - bool Walk(CallStack *stack); - - // Returns a new concrete subclass suitable for the CPU that a stack was - // generated on, according to the CPU type indicated by the context - // argument. If no suitable concrete subclass exists, returns NULL. - static Stackwalker* StackwalkerForCPU(const SystemInfo *system_info, - MinidumpContext *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - protected: - // system_info identifies the operating system, NULL or empty if unknown. - // memory identifies a MemoryRegion that provides the stack memory - // for the stack to walk. modules, if non-NULL, is a CodeModules - // object that is used to look up which code module each stack frame is - // associated with. supplier is an optional caller-supplied SymbolSupplier - // implementation. If supplier is NULL, source line info will not be - // resolved. resolver is an instance of SourceLineResolverInterface - // (see source_line_resolver_interface.h and basic_source_line_resolver.h). - // If resolver is NULL, source line info will not be resolved. - Stackwalker(const SystemInfo *system_info, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - // Information about the system that produced the minidump. Subclasses - // and the SymbolSupplier may find this information useful. - const SystemInfo *system_info_; - - // The stack memory to walk. Subclasses will require this region to - // get information from the stack. - MemoryRegion *memory_; - - // A list of modules, for populating each StackFrame's module information. - // This field is optional and may be NULL. - const CodeModules *modules_; - - private: - // Obtains the context frame, the innermost called procedure in a stack - // trace. Returns NULL on failure. GetContextFrame allocates a new - // StackFrame (or StackFrame subclass), ownership of which is taken by - // the caller. - virtual StackFrame* GetContextFrame() = 0; - - // Obtains a caller frame. Each call to GetCallerFrame should return the - // frame that called the last frame returned by GetContextFrame or - // GetCallerFrame. To aid this purpose, stack contains the CallStack - // made of frames that have already been walked. GetCallerFrame should - // return NULL on failure or when there are no more caller frames (when - // the end of the stack has been reached). GetCallerFrame allocates a new - // StackFrame (or StackFrame subclass), ownership of which is taken by - // the caller. - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) = 0; - - // The optional SymbolSupplier for resolving source line info. - SymbolSupplier *supplier_; - - // The SourceLineResolver implementation - SourceLineResolverInterface *resolver_; -}; - - -} // namespace google_breakpad - - -#endif // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/symbol_supplier.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/symbol_supplier.h deleted file mode 100644 index 7b9d00e4..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/symbol_supplier.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// The caller may implement the SymbolSupplier abstract base class -// to provide symbols for a given module. - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ - -#include - -namespace google_breakpad { - -using std::string; -class CodeModule; -class SystemInfo; - -class SymbolSupplier { - public: - // Result type for GetSymbolFile - enum SymbolResult { - // no symbols were found, but continue processing - NOT_FOUND, - - // symbols were found, and the path has been placed in symbol_file - FOUND, - - // stops processing the minidump immediately - INTERRUPT - }; - - virtual ~SymbolSupplier() {} - - // Retrieves the symbol file for the given CodeModule, placing the - // path in symbol_file if successful. system_info contains strings - // identifying the operating system and CPU; SymbolSupplier may use - // to help locate the symbol file. system_info may be NULL or its - // fields may be empty if these values are unknown. symbol_file - // must be a pointer to a valid string - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file) = 0; - // Same as above, except also places symbol data into symbol_data. - // If symbol_data is NULL, the data is not returned. - // TODO(nealsid) Once we have symbol data caching behavior implemented - // investigate making all symbol suppliers implement all methods, - // and make this pure virtual - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data) = 0; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__ diff --git a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/system_info.h b/thirdparty/google-breakpad/r318/src/google_breakpad/processor/system_info.h deleted file mode 100644 index fdbdbfd6..00000000 --- a/thirdparty/google-breakpad/r318/src/google_breakpad/processor/system_info.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// system_info.h: Information about the system that was running a program -// when a crash report was produced. -// -// Author: Mark Mentovai - -#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ -#define GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ - -#include - -namespace google_breakpad { - -using std::string; - -struct SystemInfo { - public: - SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(), - cpu_count(0) {} - - // Resets the SystemInfo object to its default values. - void Clear() { - os.clear(); - os_short.clear(); - os_version.clear(); - cpu.clear(); - cpu_info.clear(); - cpu_count = 0; - } - - // A string identifying the operating system, such as "Windows NT", - // "Mac OS X", or "Linux". If the information is present in the dump but - // its value is unknown, this field will contain a numeric value. If - // the information is not present in the dump, this field will be empty. - string os; - - // A short form of the os string, using lowercase letters and no spaces, - // suitable for use in a filesystem. Possible values are "windows", - // "mac", and "linux". Empty if the information is not present in the dump - // or if the OS given by the dump is unknown. The values stored in this - // field should match those used by MinidumpSystemInfo::GetOS. - string os_short; - - // A string identifying the version of the operating system, such as - // "5.1.2600 Service Pack 2" or "10.4.8 8L2127". If the dump does not - // contain this information, this field will be empty. - string os_version; - - // A string identifying the basic CPU family, such as "x86" or "ppc". - // If this information is present in the dump but its value is unknown, - // this field will contain a numeric value. If the information is not - // present in the dump, this field will be empty. The values stored in - // this field should match those used by MinidumpSystemInfo::GetCPU. - string cpu; - - // A string further identifying the specific CPU, such as - // "GenuineIntel level 6 model 13 stepping 8". If the information is not - // present in the dump, or additional identifying information is not - // defined for the CPU family, this field will be empty. - string cpu_info; - - // The number of processors in the system. Will be greater than one for - // multi-core systems. - int cpu_count; -}; - -} // namespace google_breakpad - -#endif // GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/.dirstamp b/thirdparty/google-breakpad/r318/src/processor/.deps/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/address_map_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/address_map_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/address_map_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_code_modules.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/basic_code_modules.Plo deleted file mode 100644 index 79f6454d..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_code_modules.Plo +++ /dev/null @@ -1,385 +0,0 @@ -src/processor/basic_code_modules.lo src/processor/basic_code_modules.o: \ - src/processor/basic_code_modules.cc /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/sys/cdefs.h /usr/include/stdlib.h \ - /usr/include/available.h /usr/include/_types.h \ - /usr/include/sys/_types.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - src/processor/basic_code_modules.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - src/google_breakpad/processor/code_module.h \ - /usr/include/c++/4.0.0/string \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc src/processor/linked_ptr.h \ - src/processor/logging.h /usr/include/c++/4.0.0/iostream \ - /usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc src/processor/range_map-inl.h \ - src/processor/range_map.h /usr/include/c++/4.0.0/map \ - /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/sys/cdefs.h: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -src/processor/basic_code_modules.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -src/google_breakpad/processor/code_module.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/processor/linked_ptr.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/processor/range_map-inl.h: - -src/processor/range_map.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver.Plo deleted file mode 100644 index 1beffa48..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver.Plo +++ /dev/null @@ -1,436 +0,0 @@ -src/processor/basic_source_line_resolver.lo \ - src/processor/basic_source_line_resolver.o: \ - src/processor/basic_source_line_resolver.cc /usr/include/stdio.h \ - /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/string.h \ - /usr/include/sys/types.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/machine/endian.h /usr/include/i386/endian.h \ - /usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/sys/_structs.h \ - /usr/include/sys/stat.h /usr/include/unistd.h /usr/include/sys/unistd.h \ - /usr/include/sys/select.h /usr/include/sys/_select.h \ - /usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/alloca.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h \ - /usr/include/c++/4.0.0/cctype /usr/include/ctype.h \ - /usr/include/runetype.h /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - /usr/include/c++/4.0.0/utility /usr/include/c++/4.0.0/bits/stl_relops.h \ - /usr/include/c++/4.0.0/vector \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc src/processor/address_map-inl.h \ - src/processor/address_map.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/inttypes.h \ - src/processor/contained_range_map-inl.h \ - src/processor/contained_range_map.h src/processor/range_map-inl.h \ - src/processor/range_map.h \ - src/google_breakpad/processor/basic_source_line_resolver.h \ - /usr/include/c++/4.0.0/ext/hash_map \ - /usr/include/c++/4.0.0/ext/hashtable.h /usr/include/c++/4.0.0/iterator \ - /usr/include/c++/4.0.0/bits/stream_iterator.h \ - /usr/include/c++/4.0.0/ext/hash_fun.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/stack_frame.h src/processor/linked_ptr.h \ - src/processor/scoped_ptr.h src/processor/stack_frame_info.h - -/usr/include/stdio.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/string.h: - -/usr/include/sys/types.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/sys/_structs.h: - -/usr/include/sys/stat.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/alloca.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -/usr/include/c++/4.0.0/utility: - -/usr/include/c++/4.0.0/bits/stl_relops.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/processor/address_map-inl.h: - -src/processor/address_map.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/inttypes.h: - -src/processor/contained_range_map-inl.h: - -src/processor/contained_range_map.h: - -src/processor/range_map-inl.h: - -src/processor/range_map.h: - -src/google_breakpad/processor/basic_source_line_resolver.h: - -/usr/include/c++/4.0.0/ext/hash_map: - -/usr/include/c++/4.0.0/ext/hashtable.h: - -/usr/include/c++/4.0.0/iterator: - -/usr/include/c++/4.0.0/bits/stream_iterator.h: - -/usr/include/c++/4.0.0/ext/hash_fun.h: - -src/google_breakpad/processor/source_line_resolver_interface.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/processor/stack_frame.h: - -src/processor/linked_ptr.h: - -src/processor/scoped_ptr.h: - -src/processor/stack_frame_info.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/basic_source_line_resolver_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/call_stack.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/call_stack.Plo deleted file mode 100644 index 16fe559b..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/call_stack.Plo +++ /dev/null @@ -1,301 +0,0 @@ -src/processor/call_stack.lo src/processor/call_stack.o: \ - src/processor/call_stack.cc src/google_breakpad/processor/call_stack.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/stack_frame.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h - -src/google_breakpad/processor/call_stack.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/stack_frame.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/contained_range_map_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/contained_range_map_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/contained_range_map_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/logging.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/logging.Plo deleted file mode 100644 index 572dbc28..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/logging.Plo +++ /dev/null @@ -1,365 +0,0 @@ -src/processor/logging.lo src/processor/logging.o: \ - src/processor/logging.cc /usr/include/assert.h /usr/include/sys/cdefs.h \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/_types.h \ - /usr/include/sys/_types.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/errno.h /usr/include/sys/errno.h /usr/include/stdio.h \ - /usr/include/string.h /usr/include/time.h /usr/include/_structs.h \ - src/processor/logging.h /usr/include/c++/4.0.0/iostream \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstring \ - /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/c++/4.0.0/cstdio \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/unistd.h /usr/include/sys/unistd.h \ - /usr/include/sys/select.h /usr/include/sys/_select.h \ - /usr/include/c++/4.0.0/cctype /usr/include/ctype.h \ - /usr/include/runetype.h /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/processor/pathname_stripper.h - -/usr/include/assert.h: - -/usr/include/sys/cdefs.h: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/errno.h: - -/usr/include/sys/errno.h: - -/usr/include/stdio.h: - -/usr/include/string.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/processor/pathname_stripper.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/minidump.Plo deleted file mode 100644 index 4214a0f8..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump.Plo +++ /dev/null @@ -1,438 +0,0 @@ -src/processor/minidump.lo src/processor/minidump.o: \ - src/processor/minidump.cc /usr/include/fcntl.h /usr/include/sys/fcntl.h \ - /usr/include/sys/_types.h /usr/include/sys/cdefs.h \ - /usr/include/machine/_types.h /usr/include/i386/_types.h \ - /usr/include/stdio.h /usr/include/_types.h /usr/include/string.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \ - /usr/include/unistd.h /usr/include/sys/unistd.h \ - /usr/include/sys/select.h /usr/include/sys/appleapiopts.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/stdlib.h /usr/include/available.h \ - /usr/include/sys/wait.h /usr/include/sys/signal.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/machine/_structs.h \ - /usr/include/mach/i386/_structs.h /usr/include/sys/resource.h \ - /usr/include/machine/endian.h /usr/include/i386/endian.h \ - /usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/c++/4.0.0/cctype /usr/include/ctype.h \ - /usr/include/runetype.h /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - /usr/include/c++/4.0.0/vector \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc src/processor/range_map-inl.h \ - src/processor/range_map.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/minidump.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/memory_region.h \ - src/processor/basic_code_module.h src/processor/basic_code_modules.h \ - src/processor/scoped_ptr.h - -/usr/include/fcntl.h: - -/usr/include/sys/fcntl.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/stdio.h: - -/usr/include/_types.h: - -/usr/include/string.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/processor/range_map-inl.h: - -src/processor/range_map.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/minidump.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/memory_region.h: - -src/processor/basic_code_module.h: - -src/processor/basic_code_modules.h: - -src/processor/scoped_ptr.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_dump.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_dump.Po deleted file mode 100644 index d25636e0..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_dump.Po +++ /dev/null @@ -1,420 +0,0 @@ -src/processor/minidump_dump.o src/processor/minidump_dump.o: \ - src/processor/minidump_dump.cc /usr/include/c++/4.0.0/cstdio \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/stdio.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h src/google_breakpad/processor/minidump.h \ - /usr/include/unistd.h /usr/include/sys/unistd.h \ - /usr/include/sys/select.h /usr/include/sys/appleapiopts.h \ - /usr/include/sys/_structs.h /usr/include/sys/_select.h \ - /usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/cstring /usr/include/string.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h \ - /usr/include/c++/4.0.0/cctype /usr/include/ctype.h \ - /usr/include/runetype.h /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/memory_region.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/stdio.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -src/google_breakpad/processor/minidump.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/_structs.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/memory_region.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor.Plo deleted file mode 100644 index 47031ede..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor.Plo +++ /dev/null @@ -1,441 +0,0 @@ -src/processor/minidump_processor.lo src/processor/minidump_processor.o: \ - src/processor/minidump_processor.cc /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/sys/cdefs.h /usr/include/stdlib.h \ - /usr/include/available.h /usr/include/_types.h \ - /usr/include/sys/_types.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - src/google_breakpad/processor/minidump_processor.h \ - /usr/include/c++/4.0.0/string \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/call_stack.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/minidump.h /usr/include/c++/4.0.0/map \ - /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/process_state.h \ - src/google_breakpad/processor/system_info.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc src/processor/scoped_ptr.h \ - src/processor/stackwalker_x86.h \ - src/google_breakpad/processor/stackwalker.h - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/sys/cdefs.h: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -src/google_breakpad/processor/minidump_processor.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/call_stack.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/minidump.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/processor/process_state.h: - -src/google_breakpad/processor/system_info.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/processor/scoped_ptr.h: - -src/processor/stackwalker_x86.h: - -src/google_breakpad/processor/stackwalker.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_processor_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_stackwalk.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_stackwalk.Po deleted file mode 100644 index 9ca4ce0b..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/minidump_stackwalk.Po +++ /dev/null @@ -1,469 +0,0 @@ -src/processor/minidump_stackwalk.o src/processor/minidump_stackwalk.o: \ - src/processor/minidump_stackwalk.cc /usr/include/c++/4.0.0/cstdio \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/stdio.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/cstring /usr/include/string.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/basic_source_line_resolver.h \ - /usr/include/c++/4.0.0/ext/hash_map \ - /usr/include/c++/4.0.0/ext/hashtable.h /usr/include/c++/4.0.0/iterator \ - /usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc \ - /usr/include/c++/4.0.0/bits/stream_iterator.h \ - /usr/include/c++/4.0.0/ext/hash_fun.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/minidump.h /usr/include/c++/4.0.0/map \ - /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/minidump_processor.h \ - src/google_breakpad/processor/process_state.h \ - src/google_breakpad/processor/system_info.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stack_frame.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream src/processor/pathname_stripper.h \ - src/processor/scoped_ptr.h src/processor/simple_symbol_supplier.h \ - src/google_breakpad/processor/symbol_supplier.h - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/stdio.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/basic_source_line_resolver.h: - -/usr/include/c++/4.0.0/ext/hash_map: - -/usr/include/c++/4.0.0/ext/hashtable.h: - -/usr/include/c++/4.0.0/iterator: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -/usr/include/c++/4.0.0/bits/stream_iterator.h: - -/usr/include/c++/4.0.0/ext/hash_fun.h: - -src/google_breakpad/processor/source_line_resolver_interface.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/minidump.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/processor/minidump_processor.h: - -src/google_breakpad/processor/process_state.h: - -src/google_breakpad/processor/system_info.h: - -src/google_breakpad/processor/stack_frame_cpu.h: - -src/google_breakpad/processor/stack_frame.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -src/processor/pathname_stripper.h: - -src/processor/scoped_ptr.h: - -src/processor/simple_symbol_supplier.h: - -src/google_breakpad/processor/symbol_supplier.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper.Plo deleted file mode 100644 index cd28c7ae..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper.Plo +++ /dev/null @@ -1,280 +0,0 @@ -src/processor/pathname_stripper.lo src/processor/pathname_stripper.o: \ - src/processor/pathname_stripper.cc src/processor/pathname_stripper.h \ - /usr/include/c++/4.0.0/string \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc - -src/processor/pathname_stripper.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/pathname_stripper_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/postfix_evaluator_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/postfix_evaluator_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/postfix_evaluator_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/process_state.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/process_state.Plo deleted file mode 100644 index 20be5192..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/process_state.Plo +++ /dev/null @@ -1,308 +0,0 @@ -src/processor/process_state.lo src/processor/process_state.o: \ - src/processor/process_state.cc \ - src/google_breakpad/processor/process_state.h \ - /usr/include/c++/4.0.0/string \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/system_info.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_modules.h - -src/google_breakpad/processor/process_state.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/system_info.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/code_modules.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/range_map_unittest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/range_map_unittest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/range_map_unittest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/simple_symbol_supplier.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/simple_symbol_supplier.Plo deleted file mode 100644 index 5cfe3a15..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/simple_symbol_supplier.Plo +++ /dev/null @@ -1,395 +0,0 @@ -src/processor/simple_symbol_supplier.lo \ - src/processor/simple_symbol_supplier.o: \ - src/processor/simple_symbol_supplier.cc /usr/include/sys/types.h \ - /usr/include/sys/appleapiopts.h /usr/include/sys/cdefs.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/i386/_types.h /usr/include/sys/_types.h \ - /usr/include/machine/_types.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/sys/_structs.h \ - /usr/include/sys/stat.h /usr/include/c++/4.0.0/algorithm \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/_types.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/alloca.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/new /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits /usr/include/c++/4.0.0/iostream \ - /usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/string \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/fstream \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h \ - /usr/include/c++/4.0.0/bits/fstream.tcc \ - src/processor/simple_symbol_supplier.h /usr/include/c++/4.0.0/vector \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/symbol_supplier.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/inttypes.h \ - src/google_breakpad/processor/system_info.h src/processor/logging.h \ - src/processor/pathname_stripper.h - -/usr/include/sys/types.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/sys/_structs.h: - -/usr/include/sys/stat.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/_types.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/alloca.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -/usr/include/c++/4.0.0/fstream: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h: - -/usr/include/c++/4.0.0/bits/fstream.tcc: - -src/processor/simple_symbol_supplier.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/symbol_supplier.h: - -src/google_breakpad/processor/code_module.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/system_info.h: - -src/processor/logging.h: - -src/processor/pathname_stripper.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker.Plo deleted file mode 100644 index 7be34939..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker.Plo +++ /dev/null @@ -1,454 +0,0 @@ -src/processor/stackwalker.lo src/processor/stackwalker.o: \ - src/processor/stackwalker.cc /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/sys/cdefs.h /usr/include/stdlib.h \ - /usr/include/available.h /usr/include/_types.h \ - /usr/include/sys/_types.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - src/google_breakpad/processor/stackwalker.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_module.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/minidump.h /usr/include/c++/4.0.0/map \ - /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/processor/stack_frame.h \ - src/google_breakpad/processor/symbol_supplier.h \ - src/processor/linked_ptr.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc src/processor/scoped_ptr.h \ - src/processor/stack_frame_info.h src/processor/stackwalker_ppc.h \ - src/processor/stackwalker_sparc.h src/processor/stackwalker_x86.h \ - src/processor/stackwalker_amd64.h - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/sys/cdefs.h: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -src/google_breakpad/processor/stackwalker.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/code_module.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/minidump.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/processor/source_line_resolver_interface.h: - -src/google_breakpad/processor/stack_frame.h: - -src/google_breakpad/processor/symbol_supplier.h: - -src/processor/linked_ptr.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/processor/scoped_ptr.h: - -src/processor/stack_frame_info.h: - -src/processor/stackwalker_ppc.h: - -src/processor/stackwalker_sparc.h: - -src/processor/stackwalker_x86.h: - -src/processor/stackwalker_amd64.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_amd64.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_amd64.Plo deleted file mode 100644 index a275c2c7..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_amd64.Plo +++ /dev/null @@ -1,414 +0,0 @@ -src/processor/stackwalker_amd64.lo src/processor/stackwalker_amd64.o: \ - src/processor/stackwalker_amd64.cc src/processor/stackwalker_amd64.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/sys/appleapiopts.h /usr/include/sys/cdefs.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/i386/_types.h /usr/include/sys/_types.h \ - /usr/include/machine/_types.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/sys/_structs.h \ - /usr/include/inttypes.h /usr/include/_types.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - src/google_breakpad/common/minidump_format.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/stackwalker.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/include/string.h /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/alloca.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stack_frame.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc - -src/processor/stackwalker_amd64.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/sys/_structs.h: - -/usr/include/inttypes.h: - -/usr/include/_types.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -src/google_breakpad/common/minidump_format.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/stackwalker.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/alloca.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/processor/stack_frame_cpu.h: - -src/google_breakpad/processor/stack_frame.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_ppc.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_ppc.Plo deleted file mode 100644 index c18f5722..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_ppc.Plo +++ /dev/null @@ -1,414 +0,0 @@ -src/processor/stackwalker_ppc.lo src/processor/stackwalker_ppc.o: \ - src/processor/stackwalker_ppc.cc src/processor/stackwalker_ppc.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/sys/appleapiopts.h /usr/include/sys/cdefs.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/i386/_types.h /usr/include/sys/_types.h \ - /usr/include/machine/_types.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/sys/_structs.h \ - /usr/include/inttypes.h /usr/include/_types.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - src/google_breakpad/common/minidump_format.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/stackwalker.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/include/string.h /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/alloca.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stack_frame.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc - -src/processor/stackwalker_ppc.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/i386/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/sys/_structs.h: - -/usr/include/inttypes.h: - -/usr/include/_types.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -src/google_breakpad/common/minidump_format.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/stackwalker.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/alloca.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/processor/stack_frame_cpu.h: - -src/google_breakpad/processor/stack_frame.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_selftest.Po b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_selftest.Po deleted file mode 100644 index 9ce06a81..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_selftest.Po +++ /dev/null @@ -1 +0,0 @@ -# dummy diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_sparc.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_sparc.Plo deleted file mode 100644 index e2afb958..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_sparc.Plo +++ /dev/null @@ -1,415 +0,0 @@ -src/processor/stackwalker_sparc.lo src/processor/stackwalker_sparc.o: \ - src/processor/stackwalker_sparc.cc \ - src/google_breakpad/processor/call_stack.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/_types.h /usr/include/sys/_types.h \ - /usr/include/sys/cdefs.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \ - /usr/include/machine/signal.h /usr/include/i386/signal.h \ - /usr/include/i386/_structs.h /usr/include/sys/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \ - /usr/include/sys/unistd.h /usr/include/sys/select.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/stack_frame.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/bits/istream.tcc \ - src/processor/stackwalker_sparc.h \ - src/google_breakpad/processor/stackwalker.h - -src/google_breakpad/processor/call_stack.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/sys/cdefs.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/google_breakpad/processor/stack_frame_cpu.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/stack_frame.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -src/processor/stackwalker_sparc.h: - -src/google_breakpad/processor/stackwalker.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_x86.Plo b/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_x86.Plo deleted file mode 100644 index 64d30066..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/.deps/stackwalker_x86.Plo +++ /dev/null @@ -1,446 +0,0 @@ -src/processor/stackwalker_x86.lo src/processor/stackwalker_x86.o: \ - src/processor/stackwalker_x86.cc src/processor/postfix_evaluator-inl.h \ - /usr/include/c++/4.0.0/sstream /usr/include/c++/4.0.0/istream \ - /usr/include/c++/4.0.0/ios /usr/include/c++/4.0.0/iosfwd \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \ - /usr/include/c++/4.0.0/clocale /usr/include/locale.h \ - /usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \ - /usr/include/sys/_types.h /usr/include/machine/_types.h \ - /usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \ - /usr/include/c++/4.0.0/cstddef \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \ - /usr/include/string.h /usr/include/c++/4.0.0/cstdio \ - /usr/include/stdio.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \ - /usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \ - /usr/include/unistd.h /usr/include/sys/unistd.h \ - /usr/include/sys/select.h /usr/include/sys/appleapiopts.h \ - /usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \ - /usr/include/ctype.h /usr/include/runetype.h \ - /usr/include/c++/4.0.0/bits/stringfwd.h \ - /usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \ - /usr/include/c++/4.0.0/ctime /usr/include/wchar.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \ - /usr/include/_wctype.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \ - /usr/include/c++/4.0.0/bits/functexcept.h \ - /usr/include/c++/4.0.0/exception_defines.h \ - /usr/include/c++/4.0.0/exception \ - /usr/include/c++/4.0.0/bits/char_traits.h \ - /usr/include/c++/4.0.0/bits/stl_algobase.h \ - /usr/include/c++/4.0.0/climits \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \ - /usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/machine/limits.h \ - /usr/include/i386/limits.h /usr/include/i386/_limits.h \ - /usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \ - /usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \ - /usr/include/sys/signal.h /usr/include/machine/signal.h \ - /usr/include/i386/signal.h /usr/include/i386/_structs.h \ - /usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \ - /usr/include/sys/resource.h /usr/include/machine/endian.h \ - /usr/include/i386/endian.h /usr/include/sys/_endian.h \ - /usr/include/libkern/_OSByteOrder.h \ - /usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \ - /usr/include/machine/types.h /usr/include/i386/types.h \ - /usr/include/c++/4.0.0/bits/stl_pair.h \ - /usr/include/c++/4.0.0/bits/cpp_type_traits.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \ - /usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/4.0.0/bits/concept_check.h \ - /usr/include/c++/4.0.0/bits/stl_iterator.h \ - /usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \ - /usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \ - /usr/include/c++/4.0.0/bits/ios_base.h \ - /usr/include/c++/4.0.0/bits/atomicity.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \ - /usr/include/c++/4.0.0/bits/locale_classes.h \ - /usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \ - /usr/include/c++/4.0.0/bits/allocator.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \ - /usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \ - /usr/include/c++/4.0.0/bits/stl_construct.h \ - /usr/include/c++/4.0.0/bits/stl_uninitialized.h \ - /usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/4.0.0/limits \ - /usr/include/c++/4.0.0/bits/stl_function.h \ - /usr/include/c++/4.0.0/bits/basic_string.h \ - /usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \ - /usr/include/c++/4.0.0/bits/stl_heap.h \ - /usr/include/c++/4.0.0/bits/stl_tempbuf.h \ - /usr/include/c++/4.0.0/bits/basic_string.tcc \ - /usr/include/c++/4.0.0/streambuf \ - /usr/include/c++/4.0.0/bits/streambuf.tcc \ - /usr/include/c++/4.0.0/bits/basic_ios.h \ - /usr/include/c++/4.0.0/bits/streambuf_iterator.h \ - /usr/include/c++/4.0.0/bits/locale_facets.h \ - /usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \ - /usr/include/c++/4.0.0/bits/codecvt.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \ - /usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \ - /usr/include/c++/4.0.0/bits/basic_ios.tcc \ - /usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/locale \ - /usr/include/c++/4.0.0/bits/locale_facets.tcc \ - /usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/ostream \ - /usr/include/c++/4.0.0/bits/ostream.tcc \ - /usr/include/c++/4.0.0/bits/sstream.tcc \ - src/processor/postfix_evaluator.h /usr/include/c++/4.0.0/map \ - /usr/include/c++/4.0.0/bits/stl_tree.h \ - /usr/include/c++/4.0.0/bits/stl_map.h \ - /usr/include/c++/4.0.0/bits/stl_multimap.h \ - /usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \ - /usr/include/c++/4.0.0/bits/stl_bvector.h \ - /usr/include/c++/4.0.0/bits/vector.tcc \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/common/breakpad_types.h /usr/include/sys/types.h \ - /usr/include/inttypes.h src/processor/logging.h \ - /usr/include/c++/4.0.0/iostream src/processor/stackwalker_x86.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_cpu_sparc.h \ - src/google_breakpad/common/minidump_cpu_x86.h \ - src/google_breakpad/common/minidump_cpu_ppc.h \ - src/google_breakpad/common/minidump_cpu_ppc64.h \ - src/google_breakpad/common/minidump_cpu_amd64.h \ - src/google_breakpad/common/minidump_exception_win32.h \ - src/google_breakpad/common/minidump_exception_mac.h \ - src/google_breakpad/common/minidump_exception_linux.h \ - src/google_breakpad/common/minidump_exception_solaris.h \ - src/google_breakpad/processor/stackwalker.h \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stack_frame.h src/processor/linked_ptr.h \ - src/processor/stack_frame_info.h - -src/processor/postfix_evaluator-inl.h: - -/usr/include/c++/4.0.0/sstream: - -/usr/include/c++/4.0.0/istream: - -/usr/include/c++/4.0.0/ios: - -/usr/include/c++/4.0.0/iosfwd: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h: - -/usr/include/c++/4.0.0/clocale: - -/usr/include/locale.h: - -/usr/include/_locale.h: - -/usr/include/sys/cdefs.h: - -/usr/include/_types.h: - -/usr/include/sys/_types.h: - -/usr/include/machine/_types.h: - -/usr/include/i386/_types.h: - -/usr/include/c++/4.0.0/cstring: - -/usr/include/c++/4.0.0/cstddef: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h: - -/usr/include/string.h: - -/usr/include/c++/4.0.0/cstdio: - -/usr/include/stdio.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h: - -/usr/include/pthread.h: - -/usr/include/pthread_impl.h: - -/usr/include/sched.h: - -/usr/include/time.h: - -/usr/include/_structs.h: - -/usr/include/sys/_structs.h: - -/usr/include/unistd.h: - -/usr/include/sys/unistd.h: - -/usr/include/sys/select.h: - -/usr/include/sys/appleapiopts.h: - -/usr/include/sys/_select.h: - -/usr/include/c++/4.0.0/cctype: - -/usr/include/ctype.h: - -/usr/include/runetype.h: - -/usr/include/c++/4.0.0/bits/stringfwd.h: - -/usr/include/c++/4.0.0/bits/postypes.h: - -/usr/include/c++/4.0.0/cwchar: - -/usr/include/c++/4.0.0/ctime: - -/usr/include/wchar.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h: - -/usr/include/_wctype.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h: - -/usr/include/c++/4.0.0/bits/functexcept.h: - -/usr/include/c++/4.0.0/exception_defines.h: - -/usr/include/c++/4.0.0/exception: - -/usr/include/c++/4.0.0/bits/char_traits.h: - -/usr/include/c++/4.0.0/bits/stl_algobase.h: - -/usr/include/c++/4.0.0/climits: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h: - -/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h: - -/usr/include/limits.h: - -/usr/include/machine/limits.h: - -/usr/include/i386/limits.h: - -/usr/include/i386/_limits.h: - -/usr/include/sys/syslimits.h: - -/usr/include/c++/4.0.0/cstdlib: - -/usr/include/stdlib.h: - -/usr/include/available.h: - -/usr/include/sys/wait.h: - -/usr/include/sys/signal.h: - -/usr/include/machine/signal.h: - -/usr/include/i386/signal.h: - -/usr/include/i386/_structs.h: - -/usr/include/machine/_structs.h: - -/usr/include/mach/i386/_structs.h: - -/usr/include/sys/resource.h: - -/usr/include/machine/endian.h: - -/usr/include/i386/endian.h: - -/usr/include/sys/_endian.h: - -/usr/include/libkern/_OSByteOrder.h: - -/usr/include/libkern/i386/_OSByteOrder.h: - -/usr/include/alloca.h: - -/usr/include/machine/types.h: - -/usr/include/i386/types.h: - -/usr/include/c++/4.0.0/bits/stl_pair.h: - -/usr/include/c++/4.0.0/bits/cpp_type_traits.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h: - -/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h: - -/usr/include/c++/4.0.0/bits/concept_check.h: - -/usr/include/c++/4.0.0/bits/stl_iterator.h: - -/usr/include/c++/4.0.0/debug/debug.h: - -/usr/include/c++/4.0.0/cassert: - -/usr/include/assert.h: - -/usr/include/c++/4.0.0/bits/localefwd.h: - -/usr/include/c++/4.0.0/bits/ios_base.h: - -/usr/include/c++/4.0.0/bits/atomicity.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h: - -/usr/include/c++/4.0.0/bits/locale_classes.h: - -/usr/include/c++/4.0.0/string: - -/usr/include/c++/4.0.0/memory: - -/usr/include/c++/4.0.0/bits/allocator.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h: - -/usr/include/c++/4.0.0/ext/new_allocator.h: - -/usr/include/c++/4.0.0/new: - -/usr/include/c++/4.0.0/bits/stl_construct.h: - -/usr/include/c++/4.0.0/bits/stl_uninitialized.h: - -/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h: - -/usr/include/c++/4.0.0/limits: - -/usr/include/c++/4.0.0/bits/stl_function.h: - -/usr/include/c++/4.0.0/bits/basic_string.h: - -/usr/include/c++/4.0.0/algorithm: - -/usr/include/c++/4.0.0/bits/stl_algo.h: - -/usr/include/c++/4.0.0/bits/stl_heap.h: - -/usr/include/c++/4.0.0/bits/stl_tempbuf.h: - -/usr/include/c++/4.0.0/bits/basic_string.tcc: - -/usr/include/c++/4.0.0/streambuf: - -/usr/include/c++/4.0.0/bits/streambuf.tcc: - -/usr/include/c++/4.0.0/bits/basic_ios.h: - -/usr/include/c++/4.0.0/bits/streambuf_iterator.h: - -/usr/include/c++/4.0.0/bits/locale_facets.h: - -/usr/include/c++/4.0.0/cwctype: - -/usr/include/wctype.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h: - -/usr/include/c++/4.0.0/bits/codecvt.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h: - -/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h: - -/usr/include/c++/4.0.0/bits/basic_ios.tcc: - -/usr/include/c++/4.0.0/bits/istream.tcc: - -/usr/include/c++/4.0.0/locale: - -/usr/include/c++/4.0.0/bits/locale_facets.tcc: - -/usr/include/c++/4.0.0/typeinfo: - -/usr/include/c++/4.0.0/ostream: - -/usr/include/c++/4.0.0/bits/ostream.tcc: - -/usr/include/c++/4.0.0/bits/sstream.tcc: - -src/processor/postfix_evaluator.h: - -/usr/include/c++/4.0.0/map: - -/usr/include/c++/4.0.0/bits/stl_tree.h: - -/usr/include/c++/4.0.0/bits/stl_map.h: - -/usr/include/c++/4.0.0/bits/stl_multimap.h: - -/usr/include/c++/4.0.0/vector: - -/usr/include/c++/4.0.0/bits/stl_vector.h: - -/usr/include/c++/4.0.0/bits/stl_bvector.h: - -/usr/include/c++/4.0.0/bits/vector.tcc: - -src/google_breakpad/processor/memory_region.h: - -src/google_breakpad/common/breakpad_types.h: - -/usr/include/sys/types.h: - -/usr/include/inttypes.h: - -src/processor/logging.h: - -/usr/include/c++/4.0.0/iostream: - -src/processor/stackwalker_x86.h: - -src/google_breakpad/common/minidump_format.h: - -src/google_breakpad/common/minidump_cpu_sparc.h: - -src/google_breakpad/common/minidump_cpu_x86.h: - -src/google_breakpad/common/minidump_cpu_ppc.h: - -src/google_breakpad/common/minidump_cpu_ppc64.h: - -src/google_breakpad/common/minidump_cpu_amd64.h: - -src/google_breakpad/common/minidump_exception_win32.h: - -src/google_breakpad/common/minidump_exception_mac.h: - -src/google_breakpad/common/minidump_exception_linux.h: - -src/google_breakpad/common/minidump_exception_solaris.h: - -src/google_breakpad/processor/stackwalker.h: - -src/google_breakpad/processor/call_stack.h: - -src/google_breakpad/processor/code_modules.h: - -src/google_breakpad/processor/stack_frame_cpu.h: - -src/google_breakpad/processor/stack_frame.h: - -src/processor/linked_ptr.h: - -src/processor/stack_frame_info.h: diff --git a/thirdparty/google-breakpad/r318/src/processor/.dirstamp b/thirdparty/google-breakpad/r318/src/processor/.dirstamp deleted file mode 100644 index e69de29b..00000000 diff --git a/thirdparty/google-breakpad/r318/src/processor/address_map-inl.h b/thirdparty/google-breakpad/r318/src/processor/address_map-inl.h deleted file mode 100644 index d88b4fcc..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/address_map-inl.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// address_map-inl.h: Address map implementation. -// -// See address_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_ADDRESS_MAP_INL_H__ -#define PROCESSOR_ADDRESS_MAP_INL_H__ - -#include - -#include "processor/address_map.h" -#include "processor/logging.h" - -namespace google_breakpad { - -template -bool AddressMap::Store(const AddressType &address, - const EntryType &entry) { - // Ensure that the specified address doesn't conflict with something already - // in the map. - if (map_.find(address) != map_.end()) { - BPLOG(INFO) << "Store failed, address " << HexString(address) << - " is already present"; - return false; - } - - map_.insert(MapValue(address, entry)); - return true; -} - -template -bool AddressMap::Retrieve( - const AddressType &address, - EntryType *entry, AddressType *entry_address) const { - BPLOG_IF(ERROR, !entry) << "AddressMap::Retrieve requires |entry|"; - assert(entry); - - // upper_bound gives the first element whose key is greater than address, - // but we want the first element whose key is less than or equal to address. - // Decrement the iterator to get there, but not if the upper_bound already - // points to the beginning of the map - in that case, address is lower than - // the lowest stored key, so return false. - MapConstIterator iterator = map_.upper_bound(address); - if (iterator == map_.begin()) - return false; - --iterator; - - *entry = iterator->second; - if (entry_address) - *entry_address = iterator->first; - - return true; -} - -template -void AddressMap::Clear() { - map_.clear(); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_ADDRESS_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/address_map.h b/thirdparty/google-breakpad/r318/src/processor/address_map.h deleted file mode 100644 index 14139e7a..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/address_map.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// address_map.h: Address maps. -// -// An address map contains a set of objects keyed by address. Objects are -// retrieved from the map by returning the object with the highest key less -// than or equal to the lookup key. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_ADDRESS_MAP_H__ -#define PROCESSOR_ADDRESS_MAP_H__ - -#include - -namespace google_breakpad { - -template -class AddressMap { - public: - AddressMap() : map_() {} - - // Inserts an entry into the map. Returns false without storing the entry - // if an entry is already stored in the map at the same address as specified - // by the address argument. - bool Store(const AddressType &address, const EntryType &entry); - - // Locates the entry stored at the highest address less than or equal to - // the address argument. If there is no such range, returns false. The - // entry is returned in entry, which is a required argument. If - // entry_address is not NULL, it will be set to the address that the entry - // was stored at. - bool Retrieve(const AddressType &address, - EntryType *entry, AddressType *entry_address) const; - - // Empties the address map, restoring it to the same state as when it was - // initially created. - void Clear(); - - private: - // Convenience types. - typedef std::map AddressToEntryMap; - typedef typename AddressToEntryMap::const_iterator MapConstIterator; - typedef typename AddressToEntryMap::value_type MapValue; - - // Maps the address of each entry to an EntryType. - AddressToEntryMap map_; -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_ADDRESS_MAP_H__ - diff --git a/thirdparty/google-breakpad/r318/src/processor/address_map_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/address_map_unittest.cc deleted file mode 100644 index f64a8984..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/address_map_unittest.cc +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// address_map_unittest.cc: Unit tests for AddressMap. -// -// Author: Mark Mentovai - -#include -#include - -#include "processor/address_map-inl.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" - -#define ASSERT_TRUE(condition) \ - if (!(condition)) { \ - fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \ - return false; \ - } - -#define ASSERT_FALSE(condition) ASSERT_TRUE(!(condition)) - -#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2)) - -namespace { - -using google_breakpad::AddressMap; -using google_breakpad::linked_ptr; - -// A CountedObject holds an int. A global (not thread safe!) count of -// allocated CountedObjects is maintained to help test memory management. -class CountedObject { - public: - explicit CountedObject(int id) : id_(id) { ++count_; } - ~CountedObject() { --count_; } - - static int count() { return count_; } - int id() const { return id_; } - - private: - static int count_; - int id_; -}; - -int CountedObject::count_; - -typedef int AddressType; -typedef AddressMap< AddressType, linked_ptr > TestMap; - -static bool DoAddressMapTest() { - ASSERT_EQ(CountedObject::count(), 0); - - TestMap test_map; - linked_ptr entry; - AddressType address; - - // Check that a new map is truly empty. - ASSERT_FALSE(test_map.Retrieve(0, &entry, &address)); - ASSERT_FALSE(test_map.Retrieve(INT_MIN, &entry, &address)); - ASSERT_FALSE(test_map.Retrieve(INT_MAX, &entry, &address)); - - // Check that Clear clears the map without leaking. - ASSERT_EQ(CountedObject::count(), 0); - ASSERT_TRUE(test_map.Store(1, - linked_ptr(new CountedObject(0)))); - ASSERT_TRUE(test_map.Retrieve(1, &entry, &address)); - ASSERT_EQ(CountedObject::count(), 1); - test_map.Clear(); - ASSERT_EQ(CountedObject::count(), 1); // still holding entry in this scope - - // Check that a cleared map is truly empty. - ASSERT_FALSE(test_map.Retrieve(0, &entry, &address)); - ASSERT_FALSE(test_map.Retrieve(INT_MIN, &entry, &address)); - ASSERT_FALSE(test_map.Retrieve(INT_MAX, &entry, &address)); - - // Check a single-element map. - ASSERT_TRUE(test_map.Store(10, - linked_ptr(new CountedObject(1)))); - ASSERT_FALSE(test_map.Retrieve(9, &entry, &address)); - ASSERT_TRUE(test_map.Retrieve(10, &entry, &address)); - ASSERT_EQ(CountedObject::count(), 1); - ASSERT_EQ(entry->id(), 1); - ASSERT_EQ(address, 10); - ASSERT_TRUE(test_map.Retrieve(11, &entry, &address)); - ASSERT_TRUE(test_map.Retrieve(11, &entry, NULL)); // NULL ok here - - // Add some more elements. - ASSERT_TRUE(test_map.Store(5, - linked_ptr(new CountedObject(2)))); - ASSERT_EQ(CountedObject::count(), 2); - ASSERT_TRUE(test_map.Store(20, - linked_ptr(new CountedObject(3)))); - ASSERT_TRUE(test_map.Store(15, - linked_ptr(new CountedObject(4)))); - ASSERT_FALSE(test_map.Store(10, - linked_ptr(new CountedObject(5)))); // already in map - ASSERT_TRUE(test_map.Store(16, - linked_ptr(new CountedObject(6)))); - ASSERT_TRUE(test_map.Store(14, - linked_ptr(new CountedObject(7)))); - - // Nothing was stored with a key under 5. Don't use ASSERT inside loops - // because it won't show exactly which key/entry/address failed. - for (AddressType key = 0; key < 5; ++key) { - if (test_map.Retrieve(key, &entry, &address)) { - fprintf(stderr, - "FAIL: retrieve %d expected false observed true @ %s:%d\n", - key, __FILE__, __LINE__); - return false; - } - } - - // Check everything that was stored. - const int id_verify[] = { 0, 0, 0, 0, 0, // unused - 2, 2, 2, 2, 2, // 5 - 9 - 1, 1, 1, 1, 7, // 10 - 14 - 4, 6, 6, 6, 6, // 15 - 19 - 3, 3, 3, 3, 3, // 20 - 24 - 3, 3, 3, 3, 3 }; // 25 - 29 - const AddressType address_verify[] = { 0, 0, 0, 0, 0, // unused - 5, 5, 5, 5, 5, // 5 - 9 - 10, 10, 10, 10, 14, // 10 - 14 - 15, 16, 16, 16, 16, // 15 - 19 - 20, 20, 20, 20, 20, // 20 - 24 - 20, 20, 20, 20, 20 }; // 25 - 29 - - for (AddressType key = 5; key < 30; ++key) { - if (!test_map.Retrieve(key, &entry, &address)) { - fprintf(stderr, - "FAIL: retrieve %d expected true observed false @ %s:%d\n", - key, __FILE__, __LINE__); - return false; - } - if (entry->id() != id_verify[key]) { - fprintf(stderr, - "FAIL: retrieve %d expected entry %d observed %d @ %s:%d\n", - key, id_verify[key], entry->id(), __FILE__, __LINE__); - return false; - } - if (address != address_verify[key]) { - fprintf(stderr, - "FAIL: retrieve %d expected address %d observed %d @ %s:%d\n", - key, address_verify[key], address, __FILE__, __LINE__); - return false; - } - } - - // The stored objects should still be in the map. - ASSERT_EQ(CountedObject::count(), 6); - - return true; -} - -static bool RunTests() { - if (!DoAddressMapTest()) - return false; - - // Leak check. - ASSERT_EQ(CountedObject::count(), 0); - - return true; -} - -} // namespace - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/basic_code_module.h b/thirdparty/google-breakpad/r318/src/processor/basic_code_module.h deleted file mode 100644 index 5c9f75f1..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/basic_code_module.h +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// basic_code_module.h: Carries information about code modules that are loaded -// into a process. -// -// This is a basic concrete implementation of CodeModule. It cannot be -// instantiated directly, only based on other objects that implement -// the CodeModule interface. It exists to provide a CodeModule implementation -// a place to store information when the life of the original object (such as -// a MinidumpModule) cannot be guaranteed. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_BASIC_CODE_MODULE_H__ -#define PROCESSOR_BASIC_CODE_MODULE_H__ - -#include - -#include "google_breakpad/processor/code_module.h" - -namespace google_breakpad { - -using std::string; - -class BasicCodeModule : public CodeModule { - public: - // Creates a new BasicCodeModule given any existing CodeModule - // implementation. This is useful to make a copy of the data relevant to - // the CodeModule interface without requiring all of the resources that - // other CodeModule implementations may require. - explicit BasicCodeModule(const CodeModule *that) - : base_address_(that->base_address()), - size_(that->size()), - code_file_(that->code_file()), - code_identifier_(that->code_identifier()), - debug_file_(that->debug_file()), - debug_identifier_(that->debug_identifier()), - version_(that->version()) {} - virtual ~BasicCodeModule() {} - - // See code_module.h for descriptions of these methods and the associated - // members. - virtual u_int64_t base_address() const { return base_address_; } - virtual u_int64_t size() const { return size_; } - virtual string code_file() const { return code_file_; } - virtual string code_identifier() const { return code_identifier_; } - virtual string debug_file() const { return debug_file_; } - virtual string debug_identifier() const { return debug_identifier_; } - virtual string version() const { return version_; } - virtual const CodeModule* Copy() const { return new BasicCodeModule(this); } - - private: - u_int64_t base_address_; - u_int64_t size_; - string code_file_; - string code_identifier_; - string debug_file_; - string debug_identifier_; - string version_; - - // Disallow copy constructor and assignment operator. - BasicCodeModule(const BasicCodeModule &that); - void operator=(const BasicCodeModule &that); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_BASIC_CODE_MODULE_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.cc b/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.cc deleted file mode 100644 index a21491c4..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.cc +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// basic_code_modules.cc: Contains all of the CodeModule objects that -// were loaded into a single process. -// -// See basic_code_modules.h for documentation. -// -// Author: Mark Mentovai - -#include - -#include "processor/basic_code_modules.h" -#include "google_breakpad/processor/code_module.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" -#include "processor/range_map-inl.h" - -namespace google_breakpad { - -BasicCodeModules::BasicCodeModules(const CodeModules *that) - : main_address_(0), - map_(new RangeMap >()) { - BPLOG_IF(ERROR, !that) << "BasicCodeModules::BasicCodeModules requires " - "|that|"; - assert(that); - - const CodeModule *main_module = that->GetMainModule(); - if (main_module) - main_address_ = main_module->base_address(); - - unsigned int count = that->module_count(); - for (unsigned int module_sequence = 0; - module_sequence < count; - ++module_sequence) { - // Make a copy of the module and insert it into the map. Use - // GetModuleAtIndex because ordering is unimportant when slurping the - // entire list, and GetModuleAtIndex may be faster than - // GetModuleAtSequence. - const CodeModule *module = that->GetModuleAtIndex(module_sequence)->Copy(); - if (!map_->StoreRange(module->base_address(), module->size(), - linked_ptr(module))) { - BPLOG(ERROR) << "Module " << module->code_file() << - " could not be stored"; - } - } -} - -BasicCodeModules::~BasicCodeModules() { - delete map_; -} - -unsigned int BasicCodeModules::module_count() const { - return map_->GetCount(); -} - -const CodeModule* BasicCodeModules::GetModuleForAddress( - u_int64_t address) const { - linked_ptr module; - if (!map_->RetrieveRange(address, &module, NULL, NULL)) { - BPLOG(INFO) << "No module at " << HexString(address); - return NULL; - } - - return module.get(); -} - -const CodeModule* BasicCodeModules::GetMainModule() const { - return GetModuleForAddress(main_address_); -} - -const CodeModule* BasicCodeModules::GetModuleAtSequence( - unsigned int sequence) const { - linked_ptr module; - if (!map_->RetrieveRangeAtIndex(sequence, &module, NULL, NULL)) { - BPLOG(ERROR) << "RetrieveRangeAtIndex failed for sequence " << sequence; - return NULL; - } - - return module.get(); -} - -const CodeModule* BasicCodeModules::GetModuleAtIndex( - unsigned int index) const { - // This class stores everything in a RangeMap, without any more-efficient - // way to walk the list of CodeModule objects. Implement GetModuleAtIndex - // using GetModuleAtSequence, which meets all of the requirements, and - // in addition, guarantees ordering. - return GetModuleAtSequence(index); -} - -const CodeModules* BasicCodeModules::Copy() const { - return new BasicCodeModules(this); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.h b/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.h deleted file mode 100644 index df87fc49..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/basic_code_modules.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// basic_code_modules.h: Contains all of the CodeModule objects that -// were loaded into a single process. -// -// This is a basic concrete implementation of CodeModules. It cannot be -// instantiated directly, only based on other objects that implement -// the CodeModules interface. It exists to provide a CodeModules -// implementation a place to store information when the life of the original -// object (such as a MinidumpModuleList) cannot be guaranteed. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_BASIC_CODE_MODULES_H__ -#define PROCESSOR_BASIC_CODE_MODULES_H__ - -#include "google_breakpad/processor/code_modules.h" - -namespace google_breakpad { - -template class linked_ptr; -template class RangeMap; - -class BasicCodeModules : public CodeModules { - public: - // Creates a new BasicCodeModules object given any existing CodeModules - // implementation. This is useful to make a copy of the data relevant to - // the CodeModules and CodeModule interfaces without requiring all of the - // resources that other implementations may require. A copy will be - // made of each contained CodeModule using CodeModule::Copy. - explicit BasicCodeModules(const CodeModules *that); - - virtual ~BasicCodeModules(); - - // See code_modules.h for descriptions of these methods. - virtual unsigned int module_count() const; - virtual const CodeModule* GetModuleForAddress(u_int64_t address) const; - virtual const CodeModule* GetMainModule() const; - virtual const CodeModule* GetModuleAtSequence(unsigned int sequence) const; - virtual const CodeModule* GetModuleAtIndex(unsigned int index) const; - virtual const CodeModules* Copy() const; - - private: - // The base address of the main module. - u_int64_t main_address_; - - // The map used to contain each CodeModule, keyed by each CodeModule's - // address range. - RangeMap > *map_; - - // Disallow copy constructor and assignment operator. - BasicCodeModules(const BasicCodeModules &that); - void operator=(const BasicCodeModules &that); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_BASIC_CODE_MODULES_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver.cc b/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver.cc deleted file mode 100644 index bba86599..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver.cc +++ /dev/null @@ -1,714 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "processor/address_map-inl.h" -#include "processor/contained_range_map-inl.h" -#include "processor/range_map-inl.h" - -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/stack_frame.h" -#include "processor/linked_ptr.h" -#include "processor/scoped_ptr.h" -#include "processor/stack_frame_info.h" - -using std::map; -using std::vector; -using std::make_pair; -#ifndef BSLR_NO_HASH_MAP -using __gnu_cxx::hash; -#endif // BSLR_NO_HASH_MAP - -namespace google_breakpad { - -struct BasicSourceLineResolver::Line { - Line(MemAddr addr, MemAddr code_size, int file_id, int source_line) - : address(addr) - , size(code_size) - , source_file_id(file_id) - , line(source_line) { } - - MemAddr address; - MemAddr size; - int source_file_id; - int line; -}; - -struct BasicSourceLineResolver::Function { - Function(const string &function_name, - MemAddr function_address, - MemAddr code_size, - int set_parameter_size) - : name(function_name), address(function_address), size(code_size), - parameter_size(set_parameter_size) { } - - string name; - MemAddr address; - MemAddr size; - - // The size of parameters passed to this function on the stack. - int parameter_size; - - RangeMap< MemAddr, linked_ptr > lines; -}; - -struct BasicSourceLineResolver::PublicSymbol { - PublicSymbol(const string& set_name, - MemAddr set_address, - int set_parameter_size) - : name(set_name), - address(set_address), - parameter_size(set_parameter_size) {} - - string name; - MemAddr address; - - // If the public symbol is used as a function entry point, parameter_size - // is set to the size of the parameters passed to the funciton on the - // stack, if known. - int parameter_size; -}; - -class BasicSourceLineResolver::Module { - public: - Module(const string &name) : name_(name) { } - - // Loads the given map file, returning true on success. Reads the - // map file into memory and calls LoadMapFromBuffer - bool LoadMap(const string &map_file); - - // Loads a map from the given buffer, returning true on success - bool LoadMapFromBuffer(const string &map_buffer); - - // Looks up the given relative address, and fills the StackFrame struct - // with the result. Additional debugging information, if available, is - // returned. If no additional information is available, returns NULL. - // A NULL return value is not an error. The caller takes ownership of - // any returned StackFrameInfo object. - StackFrameInfo* LookupAddress(StackFrame *frame) const; - - private: - friend class BasicSourceLineResolver; -#ifdef BSLR_NO_HASH_MAP - typedef map FileMap; -#else // BSLR_NO_HASH_MAP - typedef hash_map FileMap; -#endif // BSLR_NO_HASH_MAP - - // The types for stack_info_. This is equivalent to MS DIA's - // StackFrameTypeEnum. Each identifies a different type of frame - // information, although all are represented in the symbol file in the - // same format. These are used as indices to the stack_info_ array. - enum StackInfoTypes { - STACK_INFO_FPO = 0, - STACK_INFO_TRAP, // not used here - STACK_INFO_TSS, // not used here - STACK_INFO_STANDARD, - STACK_INFO_FRAME_DATA, - STACK_INFO_LAST, // must be the last sequentially-numbered item - STACK_INFO_UNKNOWN = -1 - }; - - // Splits line into at most max_tokens space-separated tokens, placing - // them in the tokens vector. line is a 0-terminated string that - // optionally ends with a newline character or combination, which will - // be removed. line must not contain any embedded '\n' or '\r' characters. - // If more tokens than max_tokens are present, the final token is placed - // into the vector without splitting it up at all. This modifies line as - // a side effect. Returns true if exactly max_tokens tokens are returned, - // and false if fewer are returned. This is not considered a failure of - // Tokenize, but may be treated as a failure if the caller expects an - // exact, as opposed to maximum, number of tokens. - static bool Tokenize(char *line, int max_tokens, vector *tokens); - - // Parses a file declaration - bool ParseFile(char *file_line); - - // Parses a function declaration, returning a new Function object. - Function* ParseFunction(char *function_line); - - // Parses a line declaration, returning a new Line object. - Line* ParseLine(char *line_line); - - // Parses a PUBLIC symbol declaration, storing it in public_symbols_. - // Returns false if an error occurs. - bool ParsePublicSymbol(char *public_line); - - // Parses a stack frame info declaration, storing it in stack_info_. - bool ParseStackInfo(char *stack_info_line); - - string name_; - FileMap files_; - RangeMap< MemAddr, linked_ptr > functions_; - AddressMap< MemAddr, linked_ptr > public_symbols_; - - // Each element in the array is a ContainedRangeMap for a type listed in - // StackInfoTypes. These are split by type because there may be overlaps - // between maps of different types, but some information is only available - // as certain types. - ContainedRangeMap< MemAddr, linked_ptr > - stack_info_[STACK_INFO_LAST]; -}; - -BasicSourceLineResolver::BasicSourceLineResolver() : modules_(new ModuleMap) { -} - -BasicSourceLineResolver::~BasicSourceLineResolver() { - ModuleMap::iterator it; - for (it = modules_->begin(); it != modules_->end(); ++it) { - delete it->second; - } - delete modules_; -} - -bool BasicSourceLineResolver::LoadModule(const string &module_name, - const string &map_file) { - // Make sure we don't already have a module with the given name. - if (modules_->find(module_name) != modules_->end()) { - BPLOG(INFO) << "Symbols for module " << module_name << " already loaded"; - return false; - } - - BPLOG(INFO) << "Loading symbols for module " << module_name << " from " << - map_file; - - Module *module = new Module(module_name); - if (!module->LoadMap(map_file)) { - delete module; - return false; - } - - modules_->insert(make_pair(module_name, module)); - return true; -} - -bool BasicSourceLineResolver::LoadModuleUsingMapBuffer( - const string &module_name, - const string &map_buffer) { - // Make sure we don't already have a module with the given name. - if (modules_->find(module_name) != modules_->end()) { - BPLOG(INFO) << "Symbols for module " << module_name << " already loaded"; - return false; - } - - BPLOG(INFO) << "Loading symbols for module " << module_name << " from buffer"; - - Module *module = new Module(module_name); - if (!module->LoadMapFromBuffer(map_buffer)) { - delete module; - return false; - } - - modules_->insert(make_pair(module_name, module)); - return true; -} - -bool BasicSourceLineResolver::HasModule(const string &module_name) const { - return modules_->find(module_name) != modules_->end(); -} - -StackFrameInfo* BasicSourceLineResolver::FillSourceLineInfo( - StackFrame *frame) const { - if (frame->module) { - ModuleMap::const_iterator it = modules_->find(frame->module->code_file()); - if (it != modules_->end()) { - return it->second->LookupAddress(frame); - } - } - return NULL; -} - -class AutoFileCloser { - public: - AutoFileCloser(FILE *file) : file_(file) {} - ~AutoFileCloser() { - if (file_) - fclose(file_); - } - - private: - FILE *file_; -}; - -bool BasicSourceLineResolver::Module::LoadMapFromBuffer( - const string &map_buffer) { - linked_ptr cur_func; - int line_number = 0; - const char *map_buffer_c_str = map_buffer.c_str(); - char *save_ptr; - - // set up our input buffer as a c-style string so we - // can we use strtok() - // have to copy because modifying the result of string::c_str is not - // permitted - size_t map_buffer_length = strlen(map_buffer_c_str); - char *map_buffer_chars = new char[map_buffer_length]; - if (map_buffer_chars == NULL) { - BPLOG(ERROR) << "Memory allocation of " << map_buffer_length << - " bytes failed"; - return false; - } - - strncpy(map_buffer_chars, map_buffer_c_str, map_buffer_length); - - if (map_buffer_chars[map_buffer_length - 1] == '\n') { - map_buffer_chars[map_buffer_length - 1] = '\0'; - } - char *buffer; - buffer = strtok_r(map_buffer_chars, "\r\n", &save_ptr); - - while (buffer != NULL) { - ++line_number; - - if (strncmp(buffer, "FILE ", 5) == 0) { - if (!ParseFile(buffer)) { - BPLOG(ERROR) << "ParseFile on buffer failed at " << - ":" << line_number; - delete [] map_buffer_chars; - return false; - } - } else if (strncmp(buffer, "STACK ", 6) == 0) { - if (!ParseStackInfo(buffer)) { - BPLOG(ERROR) << "ParseStackInfo failed at " << - ":" << line_number; - delete [] map_buffer_chars; - return false; - } - } else if (strncmp(buffer, "FUNC ", 5) == 0) { - cur_func.reset(ParseFunction(buffer)); - if (!cur_func.get()) { - BPLOG(ERROR) << "ParseFunction failed at " << - ":" << line_number; - delete [] map_buffer_chars; - return false; - } - // StoreRange will fail if the function has an invalid address or size. - // We'll silently ignore this, the function and any corresponding lines - // will be destroyed when cur_func is released. - functions_.StoreRange(cur_func->address, cur_func->size, cur_func); - } else if (strncmp(buffer, "PUBLIC ", 7) == 0) { - // Clear cur_func: public symbols don't contain line number information. - cur_func.reset(); - - if (!ParsePublicSymbol(buffer)) { - BPLOG(ERROR) << "ParsePublicSymbol failed at " << - ":" << line_number; - delete [] map_buffer_chars; - return false; - } - } else if (strncmp(buffer, "MODULE ", 7) == 0) { - // Ignore these. They're not of any use to BasicSourceLineResolver, - // which is fed modules by a SymbolSupplier. These lines are present to - // aid other tools in properly placing symbol files so that they can - // be accessed by a SymbolSupplier. - // - // MODULE - } else { - if (!cur_func.get()) { - BPLOG(ERROR) << "Found source line data without a function at " << - ":" << line_number; - delete [] map_buffer_chars; - return false; - } - Line *line = ParseLine(buffer); - if (!line) { - BPLOG(ERROR) << "ParseLine failed at " << line_number << " for " << - buffer; - delete [] map_buffer_chars; - return false; - } - cur_func->lines.StoreRange(line->address, line->size, - linked_ptr(line)); - } - - buffer = strtok_r(NULL, "\r\n", &save_ptr); - } - - return true; -} - -bool BasicSourceLineResolver::Module::LoadMap(const string &map_file) { - struct stat buf; - int error_code = stat(map_file.c_str(), &buf); - if (error_code == -1) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "Could not open " << map_file << - ", error " << error_code << ": " << error_string; - return false; - } - - off_t file_size = buf.st_size; - - // Allocate memory for file contents, plus a null terminator - // since we'll use strtok() on the contents. - char *file_buffer = new char[sizeof(char)*file_size + 1]; - - if (file_buffer == NULL) { - BPLOG(ERROR) << "Could not allocate memory for " << map_file; - return false; - } - - BPLOG(ERROR) << "Opening " << map_file; - - FILE *f = fopen(map_file.c_str(), "rt"); - if (!f) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "Could not open " << map_file << - ", error " << error_code << ": " << error_string; - delete [] file_buffer; - return false; - } - - AutoFileCloser closer(f); - - int items_read = 0; - - items_read = fread(file_buffer, 1, file_size, f); - - if (items_read != file_size) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "Could not slurp " << map_file << - ", error " << error_code << ": " << error_string; - delete [] file_buffer; - return false; - } - file_buffer[file_size] = '\0'; - string map_buffer(file_buffer); - delete [] file_buffer; - - return LoadMapFromBuffer(map_buffer); -} - -StackFrameInfo* BasicSourceLineResolver::Module::LookupAddress( - StackFrame *frame) const { - MemAddr address = frame->instruction - frame->module->base_address(); - - linked_ptr retrieved_info; - // Check for debugging info first, before any possible early returns. - // - // We only know about STACK_INFO_FRAME_DATA and STACK_INFO_FPO. Prefer - // them in this order. STACK_INFO_FRAME_DATA is the newer type that - // includes its own program string. STACK_INFO_FPO is the older type - // corresponding to the FPO_DATA struct. See stackwalker_x86.cc. - if (!stack_info_[STACK_INFO_FRAME_DATA].RetrieveRange(address, - &retrieved_info)) { - stack_info_[STACK_INFO_FPO].RetrieveRange(address, &retrieved_info); - } - - scoped_ptr frame_info; - if (retrieved_info.get()) { - frame_info.reset(new StackFrameInfo()); - frame_info->CopyFrom(*retrieved_info.get()); - } - - // First, look for a matching FUNC range. Use RetrieveNearestRange instead - // of RetrieveRange so that the nearest function can be compared to the - // nearest PUBLIC symbol if the address does not lie within the function. - // Having access to the highest function below address, even when address - // is outside of the function, is useful: if the function is higher than - // the nearest PUBLIC symbol, then it means that the PUBLIC symbols is not - // valid for the address, and no function information should be filled in. - // Using RetrieveNearestRange instead of RetrieveRange means that we need - // to verify that address is within the range before using a FUNC. - // - // If no FUNC containing the address is found, look for the nearest PUBLIC - // symbol, being careful not to use a public symbol at a lower address than - // the nearest FUNC. - int parameter_size = 0; - linked_ptr func; - linked_ptr public_symbol; - MemAddr function_base; - MemAddr function_size; - MemAddr public_address; - if (functions_.RetrieveNearestRange(address, &func, - &function_base, &function_size) && - address >= function_base && address < function_base + function_size) { - parameter_size = func->parameter_size; - - frame->function_name = func->name; - frame->function_base = frame->module->base_address() + function_base; - - linked_ptr line; - MemAddr line_base; - if (func->lines.RetrieveRange(address, &line, &line_base, NULL)) { - FileMap::const_iterator it = files_.find(line->source_file_id); - if (it != files_.end()) { - frame->source_file_name = files_.find(line->source_file_id)->second; - } - frame->source_line = line->line; - frame->source_line_base = frame->module->base_address() + line_base; - } - } else if (public_symbols_.Retrieve(address, - &public_symbol, &public_address) && - (!func.get() || public_address > function_base + function_size)) { - parameter_size = public_symbol->parameter_size; - - frame->function_name = public_symbol->name; - frame->function_base = frame->module->base_address() + public_address; - } else { - // No FUNC or PUBLIC data available. - return frame_info.release(); - } - - if (!frame_info.get()) { - // Even without a relevant STACK line, many functions contain information - // about how much space their parameters consume on the stack. Prefer - // the STACK stuff (above), but if it's not present, take the - // information from the FUNC or PUBLIC line. - frame_info.reset(new StackFrameInfo()); - frame_info->parameter_size = parameter_size; - frame_info->valid |= StackFrameInfo::VALID_PARAMETER_SIZE; - } - - return frame_info.release(); -} - -// static -bool BasicSourceLineResolver::Module::Tokenize(char *line, int max_tokens, - vector *tokens) { - tokens->clear(); - tokens->reserve(max_tokens); - - int remaining = max_tokens; - - // Split tokens on the space character. Look for newlines too to - // strip them out before exhausting max_tokens. - char *save_ptr; - char *token = strtok_r(line, " \r\n", &save_ptr); - while (token && --remaining > 0) { - tokens->push_back(token); - if (remaining > 1) - token = strtok_r(NULL, " \r\n", &save_ptr); - } - - // If there's anything left, just add it as a single token. - if (!remaining > 0) { - if ((token = strtok_r(NULL, "\r\n", &save_ptr))) { - tokens->push_back(token); - } - } - - return tokens->size() == static_cast(max_tokens); -} - -bool BasicSourceLineResolver::Module::ParseFile(char *file_line) { - // FILE - file_line += 5; // skip prefix - - vector tokens; - if (!Tokenize(file_line, 2, &tokens)) { - return false; - } - - int index = atoi(tokens[0]); - if (index < 0) { - return false; - } - - char *filename = tokens[1]; - if (!filename) { - return false; - } - - files_.insert(make_pair(index, string(filename))); - return true; -} - -BasicSourceLineResolver::Function* -BasicSourceLineResolver::Module::ParseFunction(char *function_line) { - // FUNC
      - function_line += 5; // skip prefix - - vector tokens; - if (!Tokenize(function_line, 4, &tokens)) { - return NULL; - } - - u_int64_t address = strtoull(tokens[0], NULL, 16); - u_int64_t size = strtoull(tokens[1], NULL, 16); - int stack_param_size = strtoull(tokens[2], NULL, 16); - char *name = tokens[3]; - - return new Function(name, address, size, stack_param_size); -} - -BasicSourceLineResolver::Line* BasicSourceLineResolver::Module::ParseLine( - char *line_line) { - //
      - vector tokens; - if (!Tokenize(line_line, 4, &tokens)) { - return NULL; - } - - u_int64_t address = strtoull(tokens[0], NULL, 16); - u_int64_t size = strtoull(tokens[1], NULL, 16); - int line_number = atoi(tokens[2]); - int source_file = atoi(tokens[3]); - if (line_number <= 0) { - return NULL; - } - - return new Line(address, size, source_file, line_number); -} - -bool BasicSourceLineResolver::Module::ParsePublicSymbol(char *public_line) { - // PUBLIC
      - - // Skip "PUBLIC " prefix. - public_line += 7; - - vector tokens; - if (!Tokenize(public_line, 3, &tokens)) { - return false; - } - - u_int64_t address = strtoull(tokens[0], NULL, 16); - int stack_param_size = strtoull(tokens[1], NULL, 16); - char *name = tokens[2]; - - // A few public symbols show up with an address of 0. This has been seen - // in the dumped output of ntdll.pdb for symbols such as _CIlog, _CIpow, - // RtlDescribeChunkLZNT1, and RtlReserveChunkLZNT1. They would conflict - // with one another if they were allowed into the public_symbols_ map, - // but since the address is obviously invalid, gracefully accept them - // as input without putting them into the map. - if (address == 0) { - return true; - } - - linked_ptr symbol(new PublicSymbol(name, address, - stack_param_size)); - return public_symbols_.Store(address, symbol); -} - -bool BasicSourceLineResolver::Module::ParseStackInfo(char *stack_info_line) { - // STACK WIN - // - // - // - // If has_program_string is 1, the rest of the line is a program string. - // Otherwise, the final token tells whether the stack info indicates that - // a base pointer has been allocated. - // - // Expect has_program_string to be 1 when type is STACK_INFO_FRAME_DATA and - // 0 when type is STACK_INFO_FPO, but don't enforce this. - - // Skip "STACK " prefix. - stack_info_line += 6; - - vector tokens; - if (!Tokenize(stack_info_line, 12, &tokens)) - return false; - - // Only MSVC stack frame info is understood for now. - const char *platform = tokens[0]; - if (strcmp(platform, "WIN") != 0) - return false; - - int type = strtol(tokens[1], NULL, 16); - if (type < 0 || type > STACK_INFO_LAST - 1) - return false; - - u_int64_t rva = strtoull(tokens[2], NULL, 16); - u_int64_t code_size = strtoull(tokens[3], NULL, 16); - u_int32_t prolog_size = strtoul(tokens[4], NULL, 16); - u_int32_t epilog_size = strtoul(tokens[5], NULL, 16); - u_int32_t parameter_size = strtoul(tokens[6], NULL, 16); - u_int32_t saved_register_size = strtoul(tokens[7], NULL, 16); - u_int32_t local_size = strtoul(tokens[8], NULL, 16); - u_int32_t max_stack_size = strtoul(tokens[9], NULL, 16); - int has_program_string = strtoul(tokens[10], NULL, 16); - - const char *program_string = ""; - int allocates_base_pointer = 0; - if (has_program_string) { - program_string = tokens[11]; - } else { - allocates_base_pointer = strtoul(tokens[11], NULL, 16); - } - - // TODO(mmentovai): I wanted to use StoreRange's return value as this - // method's return value, but MSVC infrequently outputs stack info that - // violates the containment rules. This happens with a section of code - // in strncpy_s in test_app.cc (testdata/minidump2). There, problem looks - // like this: - // STACK WIN 4 4242 1a a 0 ... (STACK WIN 4 base size prolog 0 ...) - // STACK WIN 4 4243 2e 9 0 ... - // ContainedRangeMap treats these two blocks as conflicting. In reality, - // when the prolog lengths are taken into account, the actual code of - // these blocks doesn't conflict. However, we can't take the prolog lengths - // into account directly here because we'd wind up with a different set - // of range conflicts when MSVC outputs stack info like this: - // STACK WIN 4 1040 73 33 0 ... - // STACK WIN 4 105a 59 19 0 ... - // because in both of these entries, the beginning of the code after the - // prolog is at 0x1073, and the last byte of contained code is at 0x10b2. - // Perhaps we could get away with storing ranges by rva + prolog_size - // if ContainedRangeMap were modified to allow replacement of - // already-stored values. - - linked_ptr stack_frame_info( - new StackFrameInfo(prolog_size, - epilog_size, - parameter_size, - saved_register_size, - local_size, - max_stack_size, - allocates_base_pointer, - program_string)); - stack_info_[type].StoreRange(rva, code_size, stack_frame_info); - - return true; -} - -#ifdef BSLR_NO_HASH_MAP -bool BasicSourceLineResolver::CompareString::operator()( - const string &s1, const string &s2) const { - return strcmp(s1.c_str(), s2.c_str()) < 0; -} -#else // BSLR_NO_HASH_MAP -size_t BasicSourceLineResolver::HashString::operator()(const string &s) const { - return hash()(s.c_str()); -} -#endif // BSLR_NO_HASH_MAP - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver_unittest.cc deleted file mode 100644 index 95595a85..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/basic_source_line_resolver_unittest.cc +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/stack_frame.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" -#include "processor/stack_frame_info.h" - -#define ASSERT_TRUE(cond) \ - if (!(cond)) { \ - fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \ - return false; \ - } - -#define ASSERT_FALSE(cond) ASSERT_TRUE(!(cond)) - -#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2)) - -namespace { - -using std::string; -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CodeModule; -using google_breakpad::linked_ptr; -using google_breakpad::scoped_ptr; -using google_breakpad::StackFrame; -using google_breakpad::StackFrameInfo; - -class TestCodeModule : public CodeModule { - public: - TestCodeModule(string code_file) : code_file_(code_file) {} - virtual ~TestCodeModule() {} - - virtual u_int64_t base_address() const { return 0; } - virtual u_int64_t size() const { return 0x4000; } - virtual string code_file() const { return code_file_; } - virtual string code_identifier() const { return ""; } - virtual string debug_file() const { return ""; } - virtual string debug_identifier() const { return ""; } - virtual string version() const { return ""; } - virtual const CodeModule* Copy() const { - return new TestCodeModule(code_file_); - } - - private: - string code_file_; -}; - -static bool VerifyEmpty(const StackFrame &frame) { - ASSERT_TRUE(frame.function_name.empty()); - ASSERT_TRUE(frame.source_file_name.empty()); - ASSERT_EQ(frame.source_line, 0); - return true; -} - -static void ClearSourceLineInfo(StackFrame *frame) { - frame->function_name.clear(); - frame->module = NULL; - frame->source_file_name.clear(); - frame->source_line = 0; -} - -static bool RunTests() { - string testdata_dir = string(getenv("srcdir") ? getenv("srcdir") : ".") + - "/src/processor/testdata"; - - BasicSourceLineResolver resolver; - ASSERT_TRUE(resolver.LoadModule("module1", testdata_dir + "/module1.out")); - ASSERT_TRUE(resolver.HasModule("module1")); - ASSERT_TRUE(resolver.LoadModule("module2", testdata_dir + "/module2.out")); - ASSERT_TRUE(resolver.HasModule("module2")); - - TestCodeModule module1("module1"); - - StackFrame frame; - frame.instruction = 0x1000; - frame.module = NULL; - scoped_ptr frame_info(resolver.FillSourceLineInfo(&frame)); - ASSERT_FALSE(frame.module); - ASSERT_TRUE(frame.function_name.empty()); - ASSERT_EQ(frame.function_base, 0); - ASSERT_TRUE(frame.source_file_name.empty()); - ASSERT_EQ(frame.source_line, 0); - ASSERT_EQ(frame.source_line_base, 0); - - frame.module = &module1; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_EQ(frame.function_name, "Function1_1"); - ASSERT_TRUE(frame.module); - ASSERT_EQ(frame.module->code_file(), "module1"); - ASSERT_EQ(frame.function_base, 0x1000); - ASSERT_EQ(frame.source_file_name, "file1_1.cc"); - ASSERT_EQ(frame.source_line, 44); - ASSERT_EQ(frame.source_line_base, 0x1000); - ASSERT_TRUE(frame_info.get()); - ASSERT_FALSE(frame_info->allocates_base_pointer); - ASSERT_EQ(frame_info->program_string, - "$eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ ="); - - ClearSourceLineInfo(&frame); - frame.instruction = 0x800; - frame.module = &module1; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_TRUE(VerifyEmpty(frame)); - ASSERT_FALSE(frame_info.get()); - - frame.instruction = 0x1280; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_EQ(frame.function_name, "Function1_3"); - ASSERT_TRUE(frame.source_file_name.empty()); - ASSERT_EQ(frame.source_line, 0); - ASSERT_TRUE(frame_info.get()); - ASSERT_FALSE(frame_info->allocates_base_pointer); - ASSERT_TRUE(frame_info->program_string.empty()); - - frame.instruction = 0x1380; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_EQ(frame.function_name, "Function1_4"); - ASSERT_TRUE(frame.source_file_name.empty()); - ASSERT_EQ(frame.source_line, 0); - ASSERT_TRUE(frame_info.get()); - ASSERT_FALSE(frame_info->allocates_base_pointer); - ASSERT_FALSE(frame_info->program_string.empty()); - - frame.instruction = 0x2000; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_FALSE(frame_info.get()); - - TestCodeModule module2("module2"); - - frame.instruction = 0x2181; - frame.module = &module2; - frame_info.reset(resolver.FillSourceLineInfo(&frame)); - ASSERT_EQ(frame.function_name, "Function2_2"); - ASSERT_EQ(frame.function_base, 0x2170); - ASSERT_TRUE(frame.module); - ASSERT_EQ(frame.module->code_file(), "module2"); - ASSERT_EQ(frame.source_file_name, "file2_2.cc"); - ASSERT_EQ(frame.source_line, 21); - ASSERT_EQ(frame.source_line_base, 0x2180); - ASSERT_TRUE(frame_info.get()); - ASSERT_EQ(frame_info->prolog_size, 1); - - frame.instruction = 0x216f; - resolver.FillSourceLineInfo(&frame); - ASSERT_EQ(frame.function_name, "Public2_1"); - - ClearSourceLineInfo(&frame); - frame.instruction = 0x219f; - frame.module = &module2; - resolver.FillSourceLineInfo(&frame); - ASSERT_TRUE(frame.function_name.empty()); - - frame.instruction = 0x21a0; - frame.module = &module2; - resolver.FillSourceLineInfo(&frame); - ASSERT_EQ(frame.function_name, "Public2_2"); - - ASSERT_FALSE(resolver.LoadModule("module3", - testdata_dir + "/module3_bad.out")); - ASSERT_FALSE(resolver.HasModule("module3")); - ASSERT_FALSE(resolver.LoadModule("module4", - testdata_dir + "/module4_bad.out")); - ASSERT_FALSE(resolver.HasModule("module4")); - ASSERT_FALSE(resolver.LoadModule("module5", - testdata_dir + "/invalid-filename")); - ASSERT_FALSE(resolver.HasModule("module5")); - ASSERT_FALSE(resolver.HasModule("invalid-module")); - return true; -} - -} // namespace - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - if (!RunTests()) { - return 1; - } - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/call_stack.cc b/thirdparty/google-breakpad/r318/src/processor/call_stack.cc deleted file mode 100644 index e3276716..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/call_stack.cc +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// call_stack.cc: A call stack comprised of stack frames. -// -// See call_stack.h for documentation. -// -// Author: Mark Mentovai - -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/stack_frame.h" - -namespace google_breakpad { - -CallStack::~CallStack() { - Clear(); -} - -void CallStack::Clear() { - for (vector::const_iterator iterator = frames_.begin(); - iterator != frames_.end(); - ++iterator) { - delete *iterator; - } -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/contained_range_map-inl.h b/thirdparty/google-breakpad/r318/src/processor/contained_range_map-inl.h deleted file mode 100644 index 5cc498df..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/contained_range_map-inl.h +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// contained_range_map-inl.h: Hierarchically-organized range map implementation. -// -// See contained_range_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ -#define PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ - - -#include - -#include "processor/contained_range_map.h" -#include "processor/logging.h" - - -namespace google_breakpad { - - -template -ContainedRangeMap::~ContainedRangeMap() { - // Clear frees the children pointed to by the map, and frees the map itself. - Clear(); -} - - -template -bool ContainedRangeMap::StoreRange( - const AddressType &base, const AddressType &size, const EntryType &entry) { - AddressType high = base + size - 1; - - // Check for undersize or overflow. - if (size <= 0 || high < base) { - //TODO(nealsid) We are commenting this out in order to prevent - // excessive logging. We plan to move to better logging as this - // failure happens quite often and is expected(see comment in - // basic_source_line_resolver.cc:671). - // BPLOG(INFO) << "StoreRange failed, " << HexString(base) << "+" - // << HexString(size) << ", " << HexString(high); - return false; - } - - if (!map_) - map_ = new AddressToRangeMap(); - - MapIterator iterator_base = map_->lower_bound(base); - MapIterator iterator_high = map_->lower_bound(high); - MapIterator iterator_end = map_->end(); - - if (iterator_base == iterator_high && iterator_base != iterator_end && - base >= iterator_base->second->base_) { - // The new range is entirely within an existing child range. - - // If the new range's geometry is exactly equal to an existing child - // range's, it violates the containment rules, and an attempt to store - // it must fail. iterator_base->first contains the key, which was the - // containing child's high address. - if (iterator_base->second->base_ == base && iterator_base->first == high) { - // TODO(nealsid): See the TODO above on why this is commented out. -// BPLOG(INFO) << "StoreRange failed, identical range is already " -// "present: " << HexString(base) << "+" << HexString(size); - return false; - } - - // Pass the new range on to the child to attempt to store. - return iterator_base->second->StoreRange(base, size, entry); - } - - // iterator_high might refer to an irrelevant range: one whose base address - // is higher than the new range's high address. Set contains_high to true - // only if iterator_high refers to a range that is at least partially - // within the new range. - bool contains_high = iterator_high != iterator_end && - high >= iterator_high->second->base_; - - // If the new range encompasses any existing child ranges, it must do so - // fully. Partial containment isn't allowed. - if ((iterator_base != iterator_end && base > iterator_base->second->base_) || - (contains_high && high < iterator_high->first)) { - // TODO(mmentovai): Some symbol files will trip this check frequently - // on STACK lines. Too many messages will be produced. These are more - // suitable for a DEBUG channel than an INFO channel. - // BPLOG(INFO) << "StoreRange failed, new range partially contains " - // "existing range: " << HexString(base) << "+" << - // HexString(size); - return false; - } - - // When copying and erasing contained ranges, the "end" iterator needs to - // point one past the last item of the range to copy. If contains_high is - // false, the iterator's already in the right place; the increment is safe - // because contains_high can't be true if iterator_high == iterator_end. - if (contains_high) - ++iterator_high; - - // Optimization: if the iterators are equal, no child ranges would be - // moved. Create the new child range with a NULL map to conserve space - // in leaf nodes, of which there will be many. - AddressToRangeMap *child_map = NULL; - - if (iterator_base != iterator_high) { - // The children of this range that are contained by the new range must - // be transferred over to the new range. Create the new child range map - // and copy the pointers to range maps it should contain into it. - child_map = new AddressToRangeMap(iterator_base, iterator_high); - - // Remove the copied child pointers from this range's map of children. - map_->erase(iterator_base, iterator_high); - } - - // Store the new range in the map by its high address. Any children that - // the new child range contains were formerly children of this range but - // are now this range's grandchildren. Ownership of these is transferred - // to the new child range. - map_->insert(MapValue(high, - new ContainedRangeMap(base, entry, child_map))); - return true; -} - - -template -bool ContainedRangeMap::RetrieveRange( - const AddressType &address, EntryType *entry) const { - BPLOG_IF(ERROR, !entry) << "ContainedRangeMap::RetrieveRange requires " - "|entry|"; - assert(entry); - - // If nothing was ever stored, then there's nothing to retrieve. - if (!map_) - return false; - - // Get an iterator to the child range whose high address is equal to or - // greater than the supplied address. If the supplied address is higher - // than all of the high addresses in the range, then this range does not - // contain a child at address, so return false. If the supplied address - // is lower than the base address of the child range, then it is not within - // the child range, so return false. - MapConstIterator iterator = map_->lower_bound(address); - if (iterator == map_->end() || address < iterator->second->base_) - return false; - - // The child in iterator->second contains the specified address. Find out - // if it has a more-specific descendant that also contains it. If it does, - // it will set |entry| appropriately. If not, set |entry| to the child. - if (!iterator->second->RetrieveRange(address, entry)) - *entry = iterator->second->entry_; - - return true; -} - - -template -void ContainedRangeMap::Clear() { - if (map_) { - MapConstIterator end = map_->end(); - for (MapConstIterator child = map_->begin(); child != end; ++child) - delete child->second; - - delete map_; - map_ = NULL; - } -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_CONTAINED_RANGE_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/contained_range_map.h b/thirdparty/google-breakpad/r318/src/processor/contained_range_map.h deleted file mode 100644 index f30016f3..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/contained_range_map.h +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// contained_range_map.h: Hierarchically-organized range maps. -// -// A contained range map is similar to a standard range map, except it allows -// objects to be organized hierarchically. A contained range map allows -// objects to contain other objects. It is not sensitive to the order that -// objects are added to the map: larger, more general, containing objects -// may be added either before or after smaller, more specific, contained -// ones. -// -// Contained range maps guarantee that each object may only contain smaller -// objects than itself, and that a parent object may only contain child -// objects located entirely within the parent's address space. Attempts -// to introduce objects (via StoreRange) that violate these rules will fail. -// Retrieval (via RetrieveRange) always returns the most specific (smallest) -// object that contains the address being queried. Note that while it is -// not possible to insert two objects into a map that have exactly the same -// geometry (base address and size), it is possible to completely mask a -// larger object by inserting smaller objects that entirely fill the larger -// object's address space. -// -// Internally, contained range maps are implemented as a tree. Each tree -// node except for the root node describes an object in the map. Each node -// maintains its list of children in a map similar to a standard range map, -// keyed by the highest address that each child occupies. Each node's -// children occupy address ranges entirely within the node. The root node -// is the only node directly accessible to the user, and represents the -// entire address space. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_CONTAINED_RANGE_MAP_H__ -#define PROCESSOR_CONTAINED_RANGE_MAP_H__ - - -#include - - -namespace google_breakpad { - - -template -class ContainedRangeMap { - public: - // The default constructor creates a ContainedRangeMap with no geometry - // and no entry, and as such is only suitable for the root node of a - // ContainedRangeMap tree. - ContainedRangeMap() : base_(), entry_(), map_(NULL) {} - - ~ContainedRangeMap(); - - // Inserts a range into the map. If the new range is encompassed by - // an existing child range, the new range is passed into the child range's - // StoreRange method. If the new range encompasses any existing child - // ranges, those child ranges are moved to the new range, becoming - // grandchildren of this ContainedRangeMap. Returns false for a - // parameter error, or if the ContainedRangeMap hierarchy guarantees - // would be violated. - bool StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry); - - // Retrieves the most specific (smallest) descendant range encompassing - // the specified address. This method will only return entries held by - // child ranges, and not the entry contained by |this|. This is necessary - // to support a sparsely-populated root range. If no descendant range - // encompasses the address, returns false. - bool RetrieveRange(const AddressType &address, EntryType *entry) const; - - // Removes all children. Note that Clear only removes descendants, - // leaving the node on which it is called intact. Because the only - // meaningful things contained by a root node are descendants, this - // is sufficient to restore an entire ContainedRangeMap to its initial - // empty state when called on the root node. - void Clear(); - - private: - // AddressToRangeMap stores pointers. This makes reparenting simpler in - // StoreRange, because it doesn't need to copy entire objects. - typedef std::map AddressToRangeMap; - typedef typename AddressToRangeMap::const_iterator MapConstIterator; - typedef typename AddressToRangeMap::iterator MapIterator; - typedef typename AddressToRangeMap::value_type MapValue; - - // Creates a new ContainedRangeMap with the specified base address, entry, - // and initial child map, which may be NULL. This is only used internally - // by ContainedRangeMap when it creates a new child. - ContainedRangeMap(const AddressType &base, const EntryType &entry, - AddressToRangeMap *map) - : base_(base), entry_(entry), map_(map) {} - - // The base address of this range. The high address does not need to - // be stored, because it is used as the key to an object in its parent's - // map, and all ContainedRangeMaps except for the root range are contained - // within maps. The root range does not actually contain an entry, so its - // base_ field is meaningless, and the fact that it has no parent and thus - // no key is unimportant. For this reason, the base_ field should only be - // is accessed on child ContainedRangeMap objects, and never on |this|. - const AddressType base_; - - // The entry corresponding to this range. The root range does not - // actually contain an entry, so its entry_ field is meaningless. For - // this reason, the entry_ field should only be accessed on child - // ContainedRangeMap objects, and never on |this|. - const EntryType entry_; - - // The map containing child ranges, keyed by each child range's high - // address. This is a pointer to avoid allocating map structures for - // leaf nodes, where they are not needed. - AddressToRangeMap *map_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_CONTAINED_RANGE_MAP_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/contained_range_map_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/contained_range_map_unittest.cc deleted file mode 100644 index 6b65b4e1..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/contained_range_map_unittest.cc +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// contained_range_map_unittest.cc: Unit tests for ContainedRangeMap -// -// Author: Mark Mentovai - -#include - -#include "processor/contained_range_map-inl.h" - -#include "processor/logging.h" - - -#define ASSERT_TRUE(condition) \ - if (!(condition)) { \ - fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \ - return false; \ - } - -#define ASSERT_FALSE(condition) ASSERT_TRUE(!(condition)) - - -namespace { - - -using google_breakpad::ContainedRangeMap; - - -static bool RunTests() { - ContainedRangeMap crm; - - // First, do the StoreRange tests. This validates the containment - // rules. - ASSERT_TRUE (crm.StoreRange(10, 10, 1)); - ASSERT_FALSE(crm.StoreRange(10, 10, 2)); // exactly equal to 1 - ASSERT_FALSE(crm.StoreRange(11, 10, 3)); // begins inside 1 and extends up - ASSERT_FALSE(crm.StoreRange( 9, 10, 4)); // begins below 1 and ends inside - ASSERT_TRUE (crm.StoreRange(11, 9, 5)); // contained by existing - ASSERT_TRUE (crm.StoreRange(12, 7, 6)); - ASSERT_TRUE (crm.StoreRange( 9, 12, 7)); // contains existing - ASSERT_TRUE (crm.StoreRange( 9, 13, 8)); - ASSERT_TRUE (crm.StoreRange( 8, 14, 9)); - ASSERT_TRUE (crm.StoreRange(30, 3, 10)); - ASSERT_TRUE (crm.StoreRange(33, 3, 11)); - ASSERT_TRUE (crm.StoreRange(30, 6, 12)); // storable but totally masked - ASSERT_TRUE (crm.StoreRange(40, 8, 13)); // will be totally masked - ASSERT_TRUE (crm.StoreRange(40, 4, 14)); - ASSERT_TRUE (crm.StoreRange(44, 4, 15)); - ASSERT_FALSE(crm.StoreRange(32, 10, 16)); // begins in #10, ends in #14 - ASSERT_FALSE(crm.StoreRange(50, 0, 17)); // zero length - ASSERT_TRUE (crm.StoreRange(50, 10, 18)); - ASSERT_TRUE (crm.StoreRange(50, 1, 19)); - ASSERT_TRUE (crm.StoreRange(59, 1, 20)); - ASSERT_TRUE (crm.StoreRange(60, 1, 21)); - ASSERT_TRUE (crm.StoreRange(69, 1, 22)); - ASSERT_TRUE (crm.StoreRange(60, 10, 23)); - ASSERT_TRUE (crm.StoreRange(68, 1, 24)); - ASSERT_TRUE (crm.StoreRange(61, 1, 25)); - ASSERT_TRUE (crm.StoreRange(61, 8, 26)); - ASSERT_FALSE(crm.StoreRange(59, 9, 27)); - ASSERT_FALSE(crm.StoreRange(59, 10, 28)); - ASSERT_FALSE(crm.StoreRange(59, 11, 29)); - ASSERT_TRUE (crm.StoreRange(70, 10, 30)); - ASSERT_TRUE (crm.StoreRange(74, 2, 31)); - ASSERT_TRUE (crm.StoreRange(77, 2, 32)); - ASSERT_FALSE(crm.StoreRange(72, 6, 33)); - ASSERT_TRUE (crm.StoreRange(80, 3, 34)); - ASSERT_TRUE (crm.StoreRange(81, 1, 35)); - ASSERT_TRUE (crm.StoreRange(82, 1, 36)); - ASSERT_TRUE (crm.StoreRange(83, 3, 37)); - ASSERT_TRUE (crm.StoreRange(84, 1, 38)); - ASSERT_TRUE (crm.StoreRange(83, 1, 39)); - ASSERT_TRUE (crm.StoreRange(86, 5, 40)); - ASSERT_TRUE (crm.StoreRange(88, 1, 41)); - ASSERT_TRUE (crm.StoreRange(90, 1, 42)); - ASSERT_TRUE (crm.StoreRange(86, 1, 43)); - ASSERT_TRUE (crm.StoreRange(87, 1, 44)); - ASSERT_TRUE (crm.StoreRange(89, 1, 45)); - ASSERT_TRUE (crm.StoreRange(87, 4, 46)); - ASSERT_TRUE (crm.StoreRange(87, 3, 47)); - ASSERT_FALSE(crm.StoreRange(86, 2, 48)); - - // Each element in test_data contains the expected result when calling - // RetrieveRange on an address. - const int test_data[] = { - 0, // 0 - 0, // 1 - 0, // 2 - 0, // 3 - 0, // 4 - 0, // 5 - 0, // 6 - 0, // 7 - 9, // 8 - 7, // 9 - 1, // 10 - 5, // 11 - 6, // 12 - 6, // 13 - 6, // 14 - 6, // 15 - 6, // 16 - 6, // 17 - 6, // 18 - 5, // 19 - 7, // 20 - 8, // 21 - 0, // 22 - 0, // 23 - 0, // 24 - 0, // 25 - 0, // 26 - 0, // 27 - 0, // 28 - 0, // 29 - 10, // 30 - 10, // 31 - 10, // 32 - 11, // 33 - 11, // 34 - 11, // 35 - 0, // 36 - 0, // 37 - 0, // 38 - 0, // 39 - 14, // 40 - 14, // 41 - 14, // 42 - 14, // 43 - 15, // 44 - 15, // 45 - 15, // 46 - 15, // 47 - 0, // 48 - 0, // 49 - 19, // 50 - 18, // 51 - 18, // 52 - 18, // 53 - 18, // 54 - 18, // 55 - 18, // 56 - 18, // 57 - 18, // 58 - 20, // 59 - 21, // 60 - 25, // 61 - 26, // 62 - 26, // 63 - 26, // 64 - 26, // 65 - 26, // 66 - 26, // 67 - 24, // 68 - 22, // 69 - 30, // 70 - 30, // 71 - 30, // 72 - 30, // 73 - 31, // 74 - 31, // 75 - 30, // 76 - 32, // 77 - 32, // 78 - 30, // 79 - 34, // 80 - 35, // 81 - 36, // 82 - 39, // 83 - 38, // 84 - 37, // 85 - 43, // 86 - 44, // 87 - 41, // 88 - 45, // 89 - 42, // 90 - 0, // 91 - 0, // 92 - 0, // 93 - 0, // 94 - 0, // 95 - 0, // 96 - 0, // 97 - 0, // 98 - 0 // 99 - }; - unsigned int test_high = sizeof(test_data) / sizeof(int); - - // Now, do the RetrieveRange tests. This further validates that the - // objects were stored properly and that retrieval returns the correct - // object. - // If GENERATE_TEST_DATA is defined, instead of the retrieval tests, a - // new test_data array will be printed. Exercise caution when doing this. - // Be sure to verify the results manually! -#ifdef GENERATE_TEST_DATA - printf(" const int test_data[] = {\n"); -#endif // GENERATE_TEST_DATA - - for (unsigned int address = 0; address < test_high; ++address) { - int value; - if (!crm.RetrieveRange(address, &value)) - value = 0; - -#ifndef GENERATE_TEST_DATA - // Don't use ASSERT inside the loop because it won't show the failed - // |address|, and the line number will always be the same. That makes - // it difficult to figure out which test failed. - if (value != test_data[address]) { - fprintf(stderr, "FAIL: retrieve %d expected %d observed %d @ %s:%d\n", - address, test_data[address], value, __FILE__, __LINE__); - return false; - } -#else // !GENERATE_TEST_DATA - printf(" %d%c%s // %d\n", value, - address == test_high - 1 ? ' ' : ',', - value < 10 ? " " : "", - address); -#endif // !GENERATE_TEST_DATA - } - -#ifdef GENERATE_TEST_DATA - printf(" };\n"); -#endif // GENERATE_TEST_DATA - - return true; -} - - -} // namespace - - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/linked_ptr.h b/thirdparty/google-breakpad/r318/src/processor/linked_ptr.h deleted file mode 100644 index 1a4ef7d4..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/linked_ptr.h +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// A "smart" pointer type with reference tracking. Every pointer to a -// particular object is kept on a circular linked list. When the last pointer -// to an object is destroyed or reassigned, the object is deleted. -// -// Used properly, this deletes the object when the last reference goes away. -// There are several caveats: -// - Like all reference counting schemes, cycles lead to leaks. -// - Each smart pointer is actually two pointers (8 bytes instead of 4). -// - Every time a pointer is assigned, the entire list of pointers to that -// object is traversed. This class is therefore NOT SUITABLE when there -// will often be more than two or three pointers to a particular object. -// - References are only tracked as long as linked_ptr<> objects are copied. -// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS -// will happen (double deletion). -// -// A good use of this class is storing object references in STL containers. -// You can safely put linked_ptr<> in a vector<>. -// Other uses may not be as good. -// -// Note: If you use an incomplete type with linked_ptr<>, the class -// *containing* linked_ptr<> must have a constructor and destructor (even -// if they do nothing!). - -#ifndef PROCESSOR_LINKED_PTR_H__ -#define PROCESSOR_LINKED_PTR_H__ - -namespace google_breakpad { - -// This is used internally by all instances of linked_ptr<>. It needs to be -// a non-template class because different types of linked_ptr<> can refer to -// the same object (linked_ptr(obj) vs linked_ptr(obj)). -// So, it needs to be possible for different types of linked_ptr to participate -// in the same circular linked list, so we need a single class type here. -// -// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. -class linked_ptr_internal { - public: - // Create a new circle that includes only this instance. - void join_new() { - next_ = this; - } - - // Join an existing circle. - void join(linked_ptr_internal const* ptr) { - linked_ptr_internal const* p = ptr; - while (p->next_ != ptr) p = p->next_; - p->next_ = this; - next_ = ptr; - } - - // Leave whatever circle we're part of. Returns true iff we were the - // last member of the circle. Once this is done, you can join() another. - bool depart() { - if (next_ == this) return true; - linked_ptr_internal const* p = next_; - while (p->next_ != this) p = p->next_; - p->next_ = next_; - return false; - } - - private: - mutable linked_ptr_internal const* next_; -}; - -template -class linked_ptr { - public: - typedef T element_type; - - // Take over ownership of a raw pointer. This should happen as soon as - // possible after the object is created. - explicit linked_ptr(T* ptr = NULL) { capture(ptr); } - ~linked_ptr() { depart(); } - - // Copy an existing linked_ptr<>, adding ourselves to the list of references. - template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } - linked_ptr(linked_ptr const& ptr) { copy(&ptr); } - - // Assignment releases the old value and acquires the new. - template linked_ptr& operator=(linked_ptr const& ptr) { - depart(); - copy(&ptr); - return *this; - } - - linked_ptr& operator=(linked_ptr const& ptr) { - if (&ptr != this) { - depart(); - copy(&ptr); - } - return *this; - } - - // Smart pointer members. - void reset(T* ptr = NULL) { depart(); capture(ptr); } - T* get() const { return value_; } - T* operator->() const { return value_; } - T& operator*() const { return *value_; } - // Release ownership of the pointed object and returns it. - // Sole ownership by this linked_ptr object is required. - T* release() { - bool last = link_.depart(); - T* v = value_; - value_ = NULL; - return v; - } - - bool operator==(T* p) const { return value_ == p; } - bool operator!=(T* p) const { return value_ != p; } - template - bool operator==(linked_ptr const& ptr) const { - return value_ == ptr.get(); - } - template - bool operator!=(linked_ptr const& ptr) const { - return value_ != ptr.get(); - } - - private: - template - friend class linked_ptr; - - T* value_; - linked_ptr_internal link_; - - void depart() { - if (link_.depart()) delete value_; - } - - void capture(T* ptr) { - value_ = ptr; - link_.join_new(); - } - - template void copy(linked_ptr const* ptr) { - value_ = ptr->get(); - if (value_) - link_.join(&ptr->link_); - else - link_.join_new(); - } -}; - -template inline -bool operator==(T* ptr, const linked_ptr& x) { - return ptr == x.get(); -} - -template inline -bool operator!=(T* ptr, const linked_ptr& x) { - return ptr != x.get(); -} - -// A function to convert T* into linked_ptr -// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation -// for linked_ptr >(new FooBarBaz(arg)) -template -linked_ptr make_linked_ptr(T* ptr) { - return linked_ptr(ptr); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_LINKED_PTR_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/logging.cc b/thirdparty/google-breakpad/r318/src/processor/logging.cc deleted file mode 100644 index 8842df35..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/logging.cc +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// logging.cc: Breakpad logging -// -// See logging.h for documentation. -// -// Author: Mark Mentovai - -#include -#include -#include -#include -#include - -#include "processor/logging.h" -#include "processor/pathname_stripper.h" - -namespace google_breakpad { - -LogStream::LogStream(std::ostream &stream, Severity severity, - const char *file, int line) - : stream_(stream) { - time_t clock; - time(&clock); - struct tm tm_struct; - localtime_r(&clock, &tm_struct); - char time_string[20]; - strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", &tm_struct); - - const char *severity_string = "UNKNOWN_SEVERITY"; - switch (severity) { - case SEVERITY_INFO: - severity_string = "INFO"; - break; - case SEVERITY_ERROR: - severity_string = "ERROR"; - break; - } - - stream_ << time_string << ": " << PathnameStripper::File(file) << ":" << - line << ": " << severity_string << ": "; -} - -LogStream::~LogStream() { - stream_ << std::endl; -} - -std::string HexString(u_int32_t number) { - char buffer[11]; - snprintf(buffer, sizeof(buffer), "0x%x", number); - return std::string(buffer); -} - -std::string HexString(u_int64_t number) { - char buffer[19]; - snprintf(buffer, sizeof(buffer), "0x%" PRIx64, number); - return std::string(buffer); -} - -std::string HexString(int number) { - char buffer[19]; - snprintf(buffer, sizeof(buffer), "0x%x", number); - return std::string(buffer); -} - -int ErrnoString(std::string *error_string) { - assert(error_string); - - // strerror isn't necessarily thread-safe. strerror_r would be preferrable, - // but GNU libc uses a nonstandard strerror_r by default, which returns a - // char* (rather than an int success indicator) and doesn't necessarily - // use the supplied buffer. - error_string->assign(strerror(errno)); - return errno; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/logging.h b/thirdparty/google-breakpad/r318/src/processor/logging.h deleted file mode 100644 index b638ff58..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/logging.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// logging.h: Breakpad logging -// -// Breakpad itself uses Breakpad logging with statements of the form: -// BPLOG(severity) << "message"; -// severity may be INFO, ERROR, or other values defined in this file. -// -// BPLOG is an overridable macro so that users can customize Breakpad's -// logging. Left at the default, logging messages are sent to stderr along -// with a timestamp and the source code location that produced a message. -// The streams may be changed by redefining BPLOG_*_STREAM, the logging -// behavior may be changed by redefining BPLOG_*, and the entire logging -// system may be overridden by redefining BPLOG(severity). These -// redefinitions may be passed to the preprocessor as a command-line flag -// (-D). -// -// If an additional header is required to override Breakpad logging, it can -// be specified by the BP_LOGGING_INCLUDE macro. If defined, this header -// will #include the header specified by that macro. -// -// If any initialization is needed before logging, it can be performed by -// a function called through the BPLOG_INIT macro. Each main function of -// an executable program in the Breakpad processor library calls -// BPLOG_INIT(&argc, &argv); before any logging can be performed; define -// BPLOG_INIT appropriately if initialization is required. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_LOGGING_H__ -#define PROCESSOR_LOGGING_H__ - -#include -#include - -#include "google_breakpad/common/breakpad_types.h" - -#ifdef BP_LOGGING_INCLUDE -#include BP_LOGGING_INCLUDE -#endif // BP_LOGGING_INCLUDE - -namespace google_breakpad { - -class LogStream { - public: - enum Severity { - SEVERITY_INFO, - SEVERITY_ERROR - }; - - // Begin logging a message to the stream identified by |stream|, at the - // indicated severity. The file and line parameters should be set so as to - // identify the line of source code that is producing a message. - LogStream(std::ostream &stream, Severity severity, - const char *file, int line); - - // Finish logging by printing a newline and flushing the output stream. - ~LogStream(); - - template std::ostream& operator<<(const T &t) { - return stream_ << t; - } - - private: - std::ostream &stream_; - - // Disallow copy constructor and assignment operator - explicit LogStream(const LogStream &that); - void operator=(const LogStream &that); -}; - -// This class is used to explicitly ignore values in the conditional logging -// macros. This avoids compiler warnings like "value computed is not used" -// and "statement has no effect". -class LogMessageVoidify { - public: - LogMessageVoidify() {} - - // This has to be an operator with a precedence lower than << but higher - // than ?: - void operator&(std::ostream &) {} -}; - -// Returns number formatted as a hexadecimal string, such as "0x7b". -std::string HexString(u_int32_t number); -std::string HexString(u_int64_t number); -std::string HexString(int number); - -// Returns the error code as set in the global errno variable, and sets -// error_string, a required argument, to a string describing that error -// code. -int ErrnoString(std::string *error_string); - -} // namespace google_breakpad - -#ifndef BPLOG_INIT -#define BPLOG_INIT(pargc, pargv) -#endif // BPLOG_INIT - -#ifndef BPLOG -#define BPLOG(severity) BPLOG_ ## severity -#endif // BPLOG - -#ifndef BPLOG_INFO -#ifndef BPLOG_INFO_STREAM -#define BPLOG_INFO_STREAM std::clog -#endif // BPLOG_INFO_STREAM -#define BPLOG_INFO google_breakpad::LogStream(BPLOG_INFO_STREAM, \ - google_breakpad::LogStream::SEVERITY_INFO, \ - __FILE__, __LINE__) -#endif // BPLOG_INFO - -#ifndef BPLOG_ERROR -#ifndef BPLOG_ERROR_STREAM -#define BPLOG_ERROR_STREAM std::cerr -#endif // BPLOG_ERROR_STREAM -#define BPLOG_ERROR google_breakpad::LogStream(BPLOG_ERROR_STREAM, \ - google_breakpad::LogStream::SEVERITY_ERROR, \ - __FILE__, __LINE__) -#endif // BPLOG_ERROR - -#define BPLOG_IF(severity, condition) \ - !(condition) ? (void) 0 : \ - google_breakpad::LogMessageVoidify() & BPLOG(severity) - -#endif // PROCESSOR_LOGGING_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump.cc b/thirdparty/google-breakpad/r318/src/processor/minidump.cc deleted file mode 100644 index 83944501..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump.cc +++ /dev/null @@ -1,3679 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump.cc: A minidump reader. -// -// See minidump.h for documentation. -// -// Author: Mark Mentovai - - -#include -#include -#include -#include -#include -#ifdef _WIN32 -#include -typedef SSIZE_T ssize_t; -#define open _open -#define read _read -#define lseek _lseek -#else // _WIN32 -#define O_BINARY 0 -#endif // _WIN32 - -#include -#include -#include -#include - -#include "processor/range_map-inl.h" - -#include "google_breakpad/processor/minidump.h" -#include "processor/basic_code_module.h" -#include "processor/basic_code_modules.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" - - -namespace google_breakpad { - - -using std::numeric_limits; -using std::vector; - - -// -// Swapping routines -// -// Inlining these doesn't increase code size significantly, and it saves -// a whole lot of unnecessary jumping back and forth. -// - - -// Swapping an 8-bit quantity is a no-op. This function is only provided -// to account for certain templatized operations that require swapping for -// wider types but handle u_int8_t too -// (MinidumpMemoryRegion::GetMemoryAtAddressInternal). -static inline void Swap(u_int8_t* value) { -} - - -// Optimization: don't need to AND the furthest right shift, because we're -// shifting an unsigned quantity. The standard requires zero-filling in this -// case. If the quantities were signed, a bitmask whould be needed for this -// right shift to avoid an arithmetic shift (which retains the sign bit). -// The furthest left shift never needs to be ANDed bitmask. - - -static inline void Swap(u_int16_t* value) { - *value = (*value >> 8) | - (*value << 8); -} - - -static inline void Swap(u_int32_t* value) { - *value = (*value >> 24) | - ((*value >> 8) & 0x0000ff00) | - ((*value << 8) & 0x00ff0000) | - (*value << 24); -} - - -static inline void Swap(u_int64_t* value) { - u_int32_t* value32 = reinterpret_cast(value); - Swap(&value32[0]); - Swap(&value32[1]); - u_int32_t temp = value32[0]; - value32[0] = value32[1]; - value32[1] = temp; -} - - -// Given a pointer to a 128-bit int in the minidump data, set the "low" -// and "high" fields appropriately. -static void Normalize128(u_int128_t* value, bool is_big_endian) { - // The struct format is [high, low], so if the format is big-endian, - // the most significant bytes will already be in the high field. - if (!is_big_endian) { - u_int64_t temp = value->low; - value->low = value->high; - value->high = temp; - } -} - -// This just swaps each int64 half of the 128-bit value. -// The value should also be normalized by calling Normalize128(). -static void Swap(u_int128_t* value) { - Swap(&value->low); - Swap(&value->high); -} - - -static inline void Swap(MDLocationDescriptor* location_descriptor) { - Swap(&location_descriptor->data_size); - Swap(&location_descriptor->rva); -} - - -static inline void Swap(MDMemoryDescriptor* memory_descriptor) { - Swap(&memory_descriptor->start_of_memory_range); - Swap(&memory_descriptor->memory); -} - - -static inline void Swap(MDGUID* guid) { - Swap(&guid->data1); - Swap(&guid->data2); - Swap(&guid->data3); - // Don't swap guid->data4[] because it contains 8-bit quantities. -} - - -// -// Character conversion routines -// - - -// Standard wide-character conversion routines depend on the system's own -// idea of what width a wide character should be: some use 16 bits, and -// some use 32 bits. For the purposes of a minidump, wide strings are -// always represented with 16-bit UTF-16 chracters. iconv isn't available -// everywhere, and its interface varies where it is available. iconv also -// deals purely with char* pointers, so in addition to considering the swap -// parameter, a converter that uses iconv would also need to take the host -// CPU's endianness into consideration. It doesn't seems worth the trouble -// of making it a dependency when we don't care about anything but UTF-16. -static string* UTF16ToUTF8(const vector& in, - bool swap) { - scoped_ptr out(new string()); - - // Set the string's initial capacity to the number of UTF-16 characters, - // because the UTF-8 representation will always be at least this long. - // If the UTF-8 representation is longer, the string will grow dynamically. - out->reserve(in.size()); - - for (vector::const_iterator iterator = in.begin(); - iterator != in.end(); - ++iterator) { - // Get a 16-bit value from the input - u_int16_t in_word = *iterator; - if (swap) - Swap(&in_word); - - // Convert the input value (in_word) into a Unicode code point (unichar). - u_int32_t unichar; - if (in_word >= 0xdc00 && in_word <= 0xdcff) { - BPLOG(ERROR) << "UTF16ToUTF8 found low surrogate " << - HexString(in_word) << " without high"; - return NULL; - } else if (in_word >= 0xd800 && in_word <= 0xdbff) { - // High surrogate. - unichar = (in_word - 0xd7c0) << 10; - if (++iterator == in.end()) { - BPLOG(ERROR) << "UTF16ToUTF8 found high surrogate " << - HexString(in_word) << " at end of string"; - return NULL; - } - u_int32_t high_word = in_word; - in_word = *iterator; - if (in_word < 0xdc00 || in_word > 0xdcff) { - BPLOG(ERROR) << "UTF16ToUTF8 found high surrogate " << - HexString(high_word) << " without low " << - HexString(in_word); - return NULL; - } - unichar |= in_word & 0x03ff; - } else { - // The ordinary case, a single non-surrogate Unicode character encoded - // as a single 16-bit value. - unichar = in_word; - } - - // Convert the Unicode code point (unichar) into its UTF-8 representation, - // appending it to the out string. - if (unichar < 0x80) { - (*out) += unichar; - } else if (unichar < 0x800) { - (*out) += 0xc0 | (unichar >> 6); - (*out) += 0x80 | (unichar & 0x3f); - } else if (unichar < 0x10000) { - (*out) += 0xe0 | (unichar >> 12); - (*out) += 0x80 | ((unichar >> 6) & 0x3f); - (*out) += 0x80 | (unichar & 0x3f); - } else if (unichar < 0x200000) { - (*out) += 0xf0 | (unichar >> 18); - (*out) += 0x80 | ((unichar >> 12) & 0x3f); - (*out) += 0x80 | ((unichar >> 6) & 0x3f); - (*out) += 0x80 | (unichar & 0x3f); - } else { - BPLOG(ERROR) << "UTF16ToUTF8 cannot represent high value " << - HexString(unichar) << " in UTF-8"; - return NULL; - } - } - - return out.release(); -} - - -// -// MinidumpObject -// - - -MinidumpObject::MinidumpObject(Minidump* minidump) - : minidump_(minidump), - valid_(false) { -} - - -// -// MinidumpStream -// - - -MinidumpStream::MinidumpStream(Minidump* minidump) - : MinidumpObject(minidump) { -} - - -// -// MinidumpContext -// - - -MinidumpContext::MinidumpContext(Minidump* minidump) - : MinidumpStream(minidump), - context_flags_(0), - context_() { -} - - -MinidumpContext::~MinidumpContext() { - FreeContext(); -} - - -bool MinidumpContext::Read(u_int32_t expected_size) { - valid_ = false; - - FreeContext(); - - // First, figure out what type of CPU this context structure is for. - // For some reason, the AMD64 Context doesn't have context_flags - // at the beginning of the structure, so special case it here. - if (expected_size == sizeof(MDRawContextAMD64)) { - BPLOG(INFO) << "MinidumpContext: looks like AMD64 context"; - - scoped_ptr context_amd64(new MDRawContextAMD64()); - if (!minidump_->ReadBytes(context_amd64.get(), - sizeof(MDRawContextAMD64))) { - BPLOG(ERROR) << "MinidumpContext could not read amd64 context"; - return false; - } - - if (minidump_->swap()) - Swap(&context_amd64->context_flags); - - u_int32_t cpu_type = context_amd64->context_flags & MD_CONTEXT_CPU_MASK; - - if (cpu_type != MD_CONTEXT_AMD64) { - //TODO: fall through to switch below? - // need a Tell method to be able to SeekSet back to beginning - // http://code.google.com/p/google-breakpad/issues/detail?id=224 - BPLOG(ERROR) << "MinidumpContext not actually amd64 context"; - return false; - } - - // Do this after reading the entire MDRawContext structure because - // GetSystemInfo may seek minidump to a new position. - if (!CheckAgainstSystemInfo(cpu_type)) { - BPLOG(ERROR) << "MinidumpContext amd64 does not match system info"; - return false; - } - - // Normalize the 128-bit types in the dump. - // Since this is AMD64, by definition, the values are little-endian. - for (unsigned int vr_index = 0; - vr_index < MD_CONTEXT_AMD64_VR_COUNT; - ++vr_index) - Normalize128(&context_amd64->vector_register[vr_index], false); - - if (minidump_->swap()) { - Swap(&context_amd64->p1_home); - Swap(&context_amd64->p2_home); - Swap(&context_amd64->p3_home); - Swap(&context_amd64->p4_home); - Swap(&context_amd64->p5_home); - Swap(&context_amd64->p6_home); - // context_flags is already swapped - Swap(&context_amd64->mx_csr); - Swap(&context_amd64->cs); - Swap(&context_amd64->ds); - Swap(&context_amd64->es); - Swap(&context_amd64->fs); - Swap(&context_amd64->ss); - Swap(&context_amd64->eflags); - Swap(&context_amd64->dr0); - Swap(&context_amd64->dr1); - Swap(&context_amd64->dr2); - Swap(&context_amd64->dr3); - Swap(&context_amd64->dr6); - Swap(&context_amd64->dr7); - Swap(&context_amd64->rax); - Swap(&context_amd64->rcx); - Swap(&context_amd64->rdx); - Swap(&context_amd64->rbx); - Swap(&context_amd64->rsp); - Swap(&context_amd64->rbp); - Swap(&context_amd64->rsi); - Swap(&context_amd64->rdi); - Swap(&context_amd64->r8); - Swap(&context_amd64->r9); - Swap(&context_amd64->r10); - Swap(&context_amd64->r11); - Swap(&context_amd64->r12); - Swap(&context_amd64->r13); - Swap(&context_amd64->r14); - Swap(&context_amd64->r15); - Swap(&context_amd64->rip); - //FIXME: I'm not sure what actually determines - // which member of the union {flt_save, sse_registers} - // is valid. We're not currently using either, - // but it would be good to have them swapped properly. - - for (unsigned int vr_index = 0; - vr_index < MD_CONTEXT_AMD64_VR_COUNT; - ++vr_index) - Swap(&context_amd64->vector_register[vr_index]); - Swap(&context_amd64->vector_control); - Swap(&context_amd64->debug_control); - Swap(&context_amd64->last_branch_to_rip); - Swap(&context_amd64->last_branch_from_rip); - Swap(&context_amd64->last_exception_to_rip); - Swap(&context_amd64->last_exception_from_rip); - } - - context_flags_ = context_amd64->context_flags; - - context_.amd64 = context_amd64.release(); - } - else { - u_int32_t context_flags; - if (!minidump_->ReadBytes(&context_flags, sizeof(context_flags))) { - BPLOG(ERROR) << "MinidumpContext could not read context flags"; - return false; - } - if (minidump_->swap()) - Swap(&context_flags); - - u_int32_t cpu_type = context_flags & MD_CONTEXT_CPU_MASK; - - // Allocate the context structure for the correct CPU and fill it. The - // casts are slightly unorthodox, but it seems better to do that than to - // maintain a separate pointer for each type of CPU context structure - // when only one of them will be used. - switch (cpu_type) { - case MD_CONTEXT_X86: { - if (expected_size != sizeof(MDRawContextX86)) { - BPLOG(ERROR) << "MinidumpContext x86 size mismatch, " << - expected_size << " != " << sizeof(MDRawContextX86); - return false; - } - - scoped_ptr context_x86(new MDRawContextX86()); - - // Set the context_flags member, which has already been read, and - // read the rest of the structure beginning with the first member - // after context_flags. - context_x86->context_flags = context_flags; - - size_t flags_size = sizeof(context_x86->context_flags); - u_int8_t* context_after_flags = - reinterpret_cast(context_x86.get()) + flags_size; - if (!minidump_->ReadBytes(context_after_flags, - sizeof(MDRawContextX86) - flags_size)) { - BPLOG(ERROR) << "MinidumpContext could not read x86 context"; - return false; - } - - // Do this after reading the entire MDRawContext structure because - // GetSystemInfo may seek minidump to a new position. - if (!CheckAgainstSystemInfo(cpu_type)) { - BPLOG(ERROR) << "MinidumpContext x86 does not match system info"; - return false; - } - - if (minidump_->swap()) { - // context_x86->context_flags was already swapped. - Swap(&context_x86->dr0); - Swap(&context_x86->dr1); - Swap(&context_x86->dr2); - Swap(&context_x86->dr3); - Swap(&context_x86->dr6); - Swap(&context_x86->dr7); - Swap(&context_x86->float_save.control_word); - Swap(&context_x86->float_save.status_word); - Swap(&context_x86->float_save.tag_word); - Swap(&context_x86->float_save.error_offset); - Swap(&context_x86->float_save.error_selector); - Swap(&context_x86->float_save.data_offset); - Swap(&context_x86->float_save.data_selector); - // context_x86->float_save.register_area[] contains 8-bit quantities - // and does not need to be swapped. - Swap(&context_x86->float_save.cr0_npx_state); - Swap(&context_x86->gs); - Swap(&context_x86->fs); - Swap(&context_x86->es); - Swap(&context_x86->ds); - Swap(&context_x86->edi); - Swap(&context_x86->esi); - Swap(&context_x86->ebx); - Swap(&context_x86->edx); - Swap(&context_x86->ecx); - Swap(&context_x86->eax); - Swap(&context_x86->ebp); - Swap(&context_x86->eip); - Swap(&context_x86->cs); - Swap(&context_x86->eflags); - Swap(&context_x86->esp); - Swap(&context_x86->ss); - // context_x86->extended_registers[] contains 8-bit quantities and - // does not need to be swapped. - } - - context_.x86 = context_x86.release(); - - break; - } - - case MD_CONTEXT_PPC: { - if (expected_size != sizeof(MDRawContextPPC)) { - BPLOG(ERROR) << "MinidumpContext ppc size mismatch, " << - expected_size << " != " << sizeof(MDRawContextPPC); - return false; - } - - scoped_ptr context_ppc(new MDRawContextPPC()); - - // Set the context_flags member, which has already been read, and - // read the rest of the structure beginning with the first member - // after context_flags. - context_ppc->context_flags = context_flags; - - size_t flags_size = sizeof(context_ppc->context_flags); - u_int8_t* context_after_flags = - reinterpret_cast(context_ppc.get()) + flags_size; - if (!minidump_->ReadBytes(context_after_flags, - sizeof(MDRawContextPPC) - flags_size)) { - BPLOG(ERROR) << "MinidumpContext could not read ppc context"; - return false; - } - - // Do this after reading the entire MDRawContext structure because - // GetSystemInfo may seek minidump to a new position. - if (!CheckAgainstSystemInfo(cpu_type)) { - BPLOG(ERROR) << "MinidumpContext ppc does not match system info"; - return false; - } - - // Normalize the 128-bit types in the dump. - // Since this is PowerPC, by definition, the values are big-endian. - for (unsigned int vr_index = 0; - vr_index < MD_VECTORSAVEAREA_PPC_VR_COUNT; - ++vr_index) { - Normalize128(&context_ppc->vector_save.save_vr[vr_index], true); - } - - if (minidump_->swap()) { - // context_ppc->context_flags was already swapped. - Swap(&context_ppc->srr0); - Swap(&context_ppc->srr1); - for (unsigned int gpr_index = 0; - gpr_index < MD_CONTEXT_PPC_GPR_COUNT; - ++gpr_index) { - Swap(&context_ppc->gpr[gpr_index]); - } - Swap(&context_ppc->cr); - Swap(&context_ppc->xer); - Swap(&context_ppc->lr); - Swap(&context_ppc->ctr); - Swap(&context_ppc->mq); - Swap(&context_ppc->vrsave); - for (unsigned int fpr_index = 0; - fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; - ++fpr_index) { - Swap(&context_ppc->float_save.fpregs[fpr_index]); - } - // Don't swap context_ppc->float_save.fpscr_pad because it is only - // used for padding. - Swap(&context_ppc->float_save.fpscr); - for (unsigned int vr_index = 0; - vr_index < MD_VECTORSAVEAREA_PPC_VR_COUNT; - ++vr_index) { - Swap(&context_ppc->vector_save.save_vr[vr_index]); - } - Swap(&context_ppc->vector_save.save_vscr); - // Don't swap the padding fields in vector_save. - Swap(&context_ppc->vector_save.save_vrvalid); - } - - context_.ppc = context_ppc.release(); - - break; - } - - case MD_CONTEXT_SPARC: { - if (expected_size != sizeof(MDRawContextSPARC)) { - BPLOG(ERROR) << "MinidumpContext sparc size mismatch, " << - expected_size << " != " << sizeof(MDRawContextSPARC); - return false; - } - - scoped_ptr context_sparc(new MDRawContextSPARC()); - - // Set the context_flags member, which has already been read, and - // read the rest of the structure beginning with the first member - // after context_flags. - context_sparc->context_flags = context_flags; - - size_t flags_size = sizeof(context_sparc->context_flags); - u_int8_t* context_after_flags = - reinterpret_cast(context_sparc.get()) + flags_size; - if (!minidump_->ReadBytes(context_after_flags, - sizeof(MDRawContextSPARC) - flags_size)) { - BPLOG(ERROR) << "MinidumpContext could not read sparc context"; - return false; - } - - // Do this after reading the entire MDRawContext structure because - // GetSystemInfo may seek minidump to a new position. - if (!CheckAgainstSystemInfo(cpu_type)) { - BPLOG(ERROR) << "MinidumpContext sparc does not match system info"; - return false; - } - - if (minidump_->swap()) { - // context_sparc->context_flags was already swapped. - for (unsigned int gpr_index = 0; - gpr_index < MD_CONTEXT_SPARC_GPR_COUNT; - ++gpr_index) { - Swap(&context_sparc->g_r[gpr_index]); - } - Swap(&context_sparc->ccr); - Swap(&context_sparc->pc); - Swap(&context_sparc->npc); - Swap(&context_sparc->y); - Swap(&context_sparc->asi); - Swap(&context_sparc->fprs); - for (unsigned int fpr_index = 0; - fpr_index < MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT; - ++fpr_index) { - Swap(&context_sparc->float_save.regs[fpr_index]); - } - Swap(&context_sparc->float_save.filler); - Swap(&context_sparc->float_save.fsr); - } - context_.ctx_sparc = context_sparc.release(); - - break; - } - - default: { - // Unknown context type - BPLOG(ERROR) << "MinidumpContext unknown context type " << - HexString(cpu_type); - return false; - break; - } - } - context_flags_ = context_flags; - } - - valid_ = true; - return true; -} - - -u_int32_t MinidumpContext::GetContextCPU() const { - if (!valid_) { - // Don't log a message, GetContextCPU can be legitimately called with - // valid_ false by FreeContext, which is called by Read. - return 0; - } - - return context_flags_ & MD_CONTEXT_CPU_MASK; -} - - -const MDRawContextX86* MinidumpContext::GetContextX86() const { - if (GetContextCPU() != MD_CONTEXT_X86) { - BPLOG(ERROR) << "MinidumpContext cannot get x86 context"; - return NULL; - } - - return context_.x86; -} - - -const MDRawContextPPC* MinidumpContext::GetContextPPC() const { - if (GetContextCPU() != MD_CONTEXT_PPC) { - BPLOG(ERROR) << "MinidumpContext cannot get ppc context"; - return NULL; - } - - return context_.ppc; -} - -const MDRawContextAMD64* MinidumpContext::GetContextAMD64() const { - if (GetContextCPU() != MD_CONTEXT_AMD64) { - BPLOG(ERROR) << "MinidumpContext cannot get amd64 context"; - return NULL; - } - - return context_.amd64; -} - -const MDRawContextSPARC* MinidumpContext::GetContextSPARC() const { - if (GetContextCPU() != MD_CONTEXT_SPARC) { - BPLOG(ERROR) << "MinidumpContext cannot get sparc context"; - return NULL; - } - - return context_.ctx_sparc; -} - -void MinidumpContext::FreeContext() { - switch (GetContextCPU()) { - case MD_CONTEXT_X86: - delete context_.x86; - break; - - case MD_CONTEXT_PPC: - delete context_.ppc; - break; - - case MD_CONTEXT_AMD64: - delete context_.amd64; - break; - - case MD_CONTEXT_SPARC: - delete context_.ctx_sparc; - break; - - default: - // There is no context record (valid_ is false) or there's a - // context record for an unknown CPU (shouldn't happen, only known - // records are stored by Read). - break; - } - - context_flags_ = 0; - context_.base = NULL; -} - - -bool MinidumpContext::CheckAgainstSystemInfo(u_int32_t context_cpu_type) { - // It's OK if the minidump doesn't contain an MD_SYSTEM_INFO_STREAM, - // as this function just implements a sanity check. - MinidumpSystemInfo* system_info = minidump_->GetSystemInfo(); - if (!system_info) { - BPLOG(INFO) << "MinidumpContext could not be compared against " - "MinidumpSystemInfo"; - return true; - } - - // If there is an MD_SYSTEM_INFO_STREAM, it should contain valid system info. - const MDRawSystemInfo* raw_system_info = system_info->system_info(); - if (!raw_system_info) { - BPLOG(INFO) << "MinidumpContext could not be compared against " - "MDRawSystemInfo"; - return false; - } - - MDCPUArchitecture system_info_cpu_type = static_cast( - raw_system_info->processor_architecture); - - // Compare the CPU type of the context record to the CPU type in the - // minidump's system info stream. - bool return_value = false; - switch (context_cpu_type) { - case MD_CONTEXT_X86: - if (system_info_cpu_type == MD_CPU_ARCHITECTURE_X86 || - system_info_cpu_type == MD_CPU_ARCHITECTURE_X86_WIN64 || - system_info_cpu_type == MD_CPU_ARCHITECTURE_AMD64) { - return_value = true; - } - break; - - case MD_CONTEXT_PPC: - if (system_info_cpu_type == MD_CPU_ARCHITECTURE_PPC) - return_value = true; - break; - - case MD_CONTEXT_AMD64: - if (system_info_cpu_type == MD_CPU_ARCHITECTURE_AMD64) - return_value = true; - break; - - case MD_CONTEXT_SPARC: - if (system_info_cpu_type == MD_CPU_ARCHITECTURE_SPARC) - return_value = true; - break; - } - - BPLOG_IF(ERROR, !return_value) << "MinidumpContext CPU " << - HexString(context_cpu_type) << - " wrong for MinidumpSysmtemInfo CPU " << - HexString(system_info_cpu_type); - - return return_value; -} - - -void MinidumpContext::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpContext cannot print invalid data"; - return; - } - - switch (GetContextCPU()) { - case MD_CONTEXT_X86: { - const MDRawContextX86* context_x86 = GetContextX86(); - printf("MDRawContextX86\n"); - printf(" context_flags = 0x%x\n", - context_x86->context_flags); - printf(" dr0 = 0x%x\n", context_x86->dr0); - printf(" dr1 = 0x%x\n", context_x86->dr1); - printf(" dr2 = 0x%x\n", context_x86->dr2); - printf(" dr3 = 0x%x\n", context_x86->dr3); - printf(" dr6 = 0x%x\n", context_x86->dr6); - printf(" dr7 = 0x%x\n", context_x86->dr7); - printf(" float_save.control_word = 0x%x\n", - context_x86->float_save.control_word); - printf(" float_save.status_word = 0x%x\n", - context_x86->float_save.status_word); - printf(" float_save.tag_word = 0x%x\n", - context_x86->float_save.tag_word); - printf(" float_save.error_offset = 0x%x\n", - context_x86->float_save.error_offset); - printf(" float_save.error_selector = 0x%x\n", - context_x86->float_save.error_selector); - printf(" float_save.data_offset = 0x%x\n", - context_x86->float_save.data_offset); - printf(" float_save.data_selector = 0x%x\n", - context_x86->float_save.data_selector); - printf(" float_save.register_area[%2d] = 0x", - MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE); - for (unsigned int register_index = 0; - register_index < MD_FLOATINGSAVEAREA_X86_REGISTERAREA_SIZE; - ++register_index) { - printf("%02x", context_x86->float_save.register_area[register_index]); - } - printf("\n"); - printf(" float_save.cr0_npx_state = 0x%x\n", - context_x86->float_save.cr0_npx_state); - printf(" gs = 0x%x\n", context_x86->gs); - printf(" fs = 0x%x\n", context_x86->fs); - printf(" es = 0x%x\n", context_x86->es); - printf(" ds = 0x%x\n", context_x86->ds); - printf(" edi = 0x%x\n", context_x86->edi); - printf(" esi = 0x%x\n", context_x86->esi); - printf(" ebx = 0x%x\n", context_x86->ebx); - printf(" edx = 0x%x\n", context_x86->edx); - printf(" ecx = 0x%x\n", context_x86->ecx); - printf(" eax = 0x%x\n", context_x86->eax); - printf(" ebp = 0x%x\n", context_x86->ebp); - printf(" eip = 0x%x\n", context_x86->eip); - printf(" cs = 0x%x\n", context_x86->cs); - printf(" eflags = 0x%x\n", context_x86->eflags); - printf(" esp = 0x%x\n", context_x86->esp); - printf(" ss = 0x%x\n", context_x86->ss); - printf(" extended_registers[%3d] = 0x", - MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE); - for (unsigned int register_index = 0; - register_index < MD_CONTEXT_X86_EXTENDED_REGISTERS_SIZE; - ++register_index) { - printf("%02x", context_x86->extended_registers[register_index]); - } - printf("\n\n"); - - break; - } - - case MD_CONTEXT_PPC: { - const MDRawContextPPC* context_ppc = GetContextPPC(); - printf("MDRawContextPPC\n"); - printf(" context_flags = 0x%x\n", - context_ppc->context_flags); - printf(" srr0 = 0x%x\n", context_ppc->srr0); - printf(" srr1 = 0x%x\n", context_ppc->srr1); - for (unsigned int gpr_index = 0; - gpr_index < MD_CONTEXT_PPC_GPR_COUNT; - ++gpr_index) { - printf(" gpr[%2d] = 0x%x\n", - gpr_index, context_ppc->gpr[gpr_index]); - } - printf(" cr = 0x%x\n", context_ppc->cr); - printf(" xer = 0x%x\n", context_ppc->xer); - printf(" lr = 0x%x\n", context_ppc->lr); - printf(" ctr = 0x%x\n", context_ppc->ctr); - printf(" mq = 0x%x\n", context_ppc->mq); - printf(" vrsave = 0x%x\n", context_ppc->vrsave); - for (unsigned int fpr_index = 0; - fpr_index < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; - ++fpr_index) { - printf(" float_save.fpregs[%2d] = 0x%" PRIx64 "\n", - fpr_index, context_ppc->float_save.fpregs[fpr_index]); - } - printf(" float_save.fpscr = 0x%x\n", - context_ppc->float_save.fpscr); - // TODO(mmentovai): print the 128-bit quantities in - // context_ppc->vector_save. This isn't done yet because printf - // doesn't support 128-bit quantities, and printing them using - // PRIx64 as two 64-bit quantities requires knowledge of the CPU's - // byte ordering. - printf(" vector_save.save_vrvalid = 0x%x\n", - context_ppc->vector_save.save_vrvalid); - printf("\n"); - - break; - } - - case MD_CONTEXT_AMD64: { - const MDRawContextAMD64* context_amd64 = GetContextAMD64(); - printf("MDRawContextAMD64\n"); - printf(" p1_home = 0x%" PRIx64 "\n", - context_amd64->p1_home); - printf(" p2_home = 0x%" PRIx64 "\n", - context_amd64->p2_home); - printf(" p3_home = 0x%" PRIx64 "\n", - context_amd64->p3_home); - printf(" p4_home = 0x%" PRIx64 "\n", - context_amd64->p4_home); - printf(" p5_home = 0x%" PRIx64 "\n", - context_amd64->p5_home); - printf(" p6_home = 0x%" PRIx64 "\n", - context_amd64->p6_home); - printf(" context_flags = 0x%x\n", - context_amd64->context_flags); - printf(" mx_csr = 0x%x\n", - context_amd64->mx_csr); - printf(" cs = 0x%x\n", context_amd64->cs); - printf(" ds = 0x%x\n", context_amd64->ds); - printf(" es = 0x%x\n", context_amd64->es); - printf(" fs = 0x%x\n", context_amd64->fs); - printf(" gs = 0x%x\n", context_amd64->gs); - printf(" ss = 0x%x\n", context_amd64->ss); - printf(" eflags = 0x%x\n", context_amd64->eflags); - printf(" dr0 = 0x%" PRIx64 "\n", context_amd64->dr0); - printf(" dr1 = 0x%" PRIx64 "\n", context_amd64->dr1); - printf(" dr2 = 0x%" PRIx64 "\n", context_amd64->dr2); - printf(" dr3 = 0x%" PRIx64 "\n", context_amd64->dr3); - printf(" dr6 = 0x%" PRIx64 "\n", context_amd64->dr6); - printf(" dr7 = 0x%" PRIx64 "\n", context_amd64->dr7); - printf(" rax = 0x%" PRIx64 "\n", context_amd64->rax); - printf(" rcx = 0x%" PRIx64 "\n", context_amd64->rcx); - printf(" rdx = 0x%" PRIx64 "\n", context_amd64->rdx); - printf(" rbx = 0x%" PRIx64 "\n", context_amd64->rbx); - printf(" rsp = 0x%" PRIx64 "\n", context_amd64->rsp); - printf(" rbp = 0x%" PRIx64 "\n", context_amd64->rbp); - printf(" rsi = 0x%" PRIx64 "\n", context_amd64->rsi); - printf(" rdi = 0x%" PRIx64 "\n", context_amd64->rdi); - printf(" r8 = 0x%" PRIx64 "\n", context_amd64->r8); - printf(" r9 = 0x%" PRIx64 "\n", context_amd64->r9); - printf(" r10 = 0x%" PRIx64 "\n", context_amd64->r10); - printf(" r11 = 0x%" PRIx64 "\n", context_amd64->r11); - printf(" r12 = 0x%" PRIx64 "\n", context_amd64->r12); - printf(" r13 = 0x%" PRIx64 "\n", context_amd64->r13); - printf(" r14 = 0x%" PRIx64 "\n", context_amd64->r14); - printf(" r15 = 0x%" PRIx64 "\n", context_amd64->r15); - printf(" rip = 0x%" PRIx64 "\n", context_amd64->rip); - //TODO: print xmm, vector, debug registers - printf("\n"); - break; - } - - case MD_CONTEXT_SPARC: { - const MDRawContextSPARC* context_sparc = GetContextSPARC(); - printf("MDRawContextSPARC\n"); - printf(" context_flags = 0x%x\n", - context_sparc->context_flags); - for (unsigned int g_r_index = 0; - g_r_index < MD_CONTEXT_SPARC_GPR_COUNT; - ++g_r_index) { - printf(" g_r[%2d] = 0x%" PRIx64 "\n", - g_r_index, context_sparc->g_r[g_r_index]); - } - printf(" ccr = 0x%" PRIx64 "\n", context_sparc->ccr); - printf(" pc = 0x%" PRIx64 "\n", context_sparc->pc); - printf(" npc = 0x%" PRIx64 "\n", context_sparc->npc); - printf(" y = 0x%" PRIx64 "\n", context_sparc->y); - printf(" asi = 0x%" PRIx64 "\n", context_sparc->asi); - printf(" fprs = 0x%" PRIx64 "\n", context_sparc->fprs); - - for (unsigned int fpr_index = 0; - fpr_index < MD_FLOATINGSAVEAREA_SPARC_FPR_COUNT; - ++fpr_index) { - printf(" float_save.regs[%2d] = 0x%" PRIx64 "\n", - fpr_index, context_sparc->float_save.regs[fpr_index]); - } - printf(" float_save.filler = 0x%" PRIx64 "\n", - context_sparc->float_save.filler); - printf(" float_save.fsr = 0x%" PRIx64 "\n", - context_sparc->float_save.fsr); - break; - } - - default: { - break; - } - } -} - - -// -// MinidumpMemoryRegion -// - - -u_int32_t MinidumpMemoryRegion::max_bytes_ = 1024 * 1024; // 1MB - - -MinidumpMemoryRegion::MinidumpMemoryRegion(Minidump* minidump) - : MinidumpObject(minidump), - descriptor_(NULL), - memory_(NULL) { -} - - -MinidumpMemoryRegion::~MinidumpMemoryRegion() { - delete memory_; -} - - -void MinidumpMemoryRegion::SetDescriptor(MDMemoryDescriptor* descriptor) { - descriptor_ = descriptor; - valid_ = descriptor && - descriptor_->memory.data_size <= - numeric_limits::max() - - descriptor_->start_of_memory_range; -} - - -const u_int8_t* MinidumpMemoryRegion::GetMemory() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetMemory"; - return NULL; - } - - if (!memory_) { - if (descriptor_->memory.data_size == 0) { - BPLOG(ERROR) << "MinidumpMemoryRegion is empty"; - return NULL; - } - - if (!minidump_->SeekSet(descriptor_->memory.rva)) { - BPLOG(ERROR) << "MinidumpMemoryRegion could not seek to memory region"; - return NULL; - } - - if (descriptor_->memory.data_size > max_bytes_) { - BPLOG(ERROR) << "MinidumpMemoryRegion size " << - descriptor_->memory.data_size << " exceeds maximum " << - max_bytes_; - return NULL; - } - - scoped_ptr< vector > memory( - new vector(descriptor_->memory.data_size)); - - if (!minidump_->ReadBytes(&(*memory)[0], descriptor_->memory.data_size)) { - BPLOG(ERROR) << "MinidumpMemoryRegion could not read memory region"; - return NULL; - } - - memory_ = memory.release(); - } - - return &(*memory_)[0]; -} - - -u_int64_t MinidumpMemoryRegion::GetBase() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetBase"; - return static_cast(-1); - } - - return descriptor_->start_of_memory_range; -} - - -u_int32_t MinidumpMemoryRegion::GetSize() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for GetSize"; - return 0; - } - - return descriptor_->memory.data_size; -} - - -void MinidumpMemoryRegion::FreeMemory() { - delete memory_; - memory_ = NULL; -} - - -template -bool MinidumpMemoryRegion::GetMemoryAtAddressInternal(u_int64_t address, - T* value) { - BPLOG_IF(ERROR, !value) << "MinidumpMemoryRegion::GetMemoryAtAddressInternal " - "requires |value|"; - assert(value); - *value = 0; - - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryRegion for " - "GetMemoryAtAddressInternal"; - return false; - } - - if (address < descriptor_->start_of_memory_range || - sizeof(T) > numeric_limits::max() - address || - address + sizeof(T) > descriptor_->start_of_memory_range + - descriptor_->memory.data_size) { - BPLOG(ERROR) << "MinidumpMemoryRegion request out of range: " << - HexString(address) << "+" << sizeof(T) << "/" << - HexString(descriptor_->start_of_memory_range) << "+" << - HexString(descriptor_->memory.data_size); - return false; - } - - const u_int8_t* memory = GetMemory(); - if (!memory) { - // GetMemory already logged a perfectly good message. - return false; - } - - // If the CPU requires memory accesses to be aligned, this can crash. - // x86 and ppc are able to cope, though. - *value = *reinterpret_cast( - &memory[address - descriptor_->start_of_memory_range]); - - if (minidump_->swap()) - Swap(value); - - return true; -} - - -bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, - u_int8_t* value) { - return GetMemoryAtAddressInternal(address, value); -} - - -bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, - u_int16_t* value) { - return GetMemoryAtAddressInternal(address, value); -} - - -bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, - u_int32_t* value) { - return GetMemoryAtAddressInternal(address, value); -} - - -bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, - u_int64_t* value) { - return GetMemoryAtAddressInternal(address, value); -} - - -void MinidumpMemoryRegion::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpMemoryRegion cannot print invalid data"; - return; - } - - const u_int8_t* memory = GetMemory(); - if (memory) { - printf("0x"); - for (unsigned int byte_index = 0; - byte_index < descriptor_->memory.data_size; - byte_index++) { - printf("%02x", memory[byte_index]); - } - printf("\n"); - } else { - printf("No memory\n"); - } -} - - -// -// MinidumpThread -// - - -MinidumpThread::MinidumpThread(Minidump* minidump) - : MinidumpObject(minidump), - thread_(), - memory_(NULL), - context_(NULL) { -} - - -MinidumpThread::~MinidumpThread() { - delete memory_; - delete context_; -} - - -bool MinidumpThread::Read() { - // Invalidate cached data. - delete memory_; - memory_ = NULL; - delete context_; - context_ = NULL; - - valid_ = false; - - if (!minidump_->ReadBytes(&thread_, sizeof(thread_))) { - BPLOG(ERROR) << "MinidumpThread cannot read thread"; - return false; - } - - if (minidump_->swap()) { - Swap(&thread_.thread_id); - Swap(&thread_.suspend_count); - Swap(&thread_.priority_class); - Swap(&thread_.priority); - Swap(&thread_.teb); - Swap(&thread_.stack); - Swap(&thread_.thread_context); - } - - // Check for base + size overflow or undersize. - if (thread_.stack.memory.data_size == 0 || - thread_.stack.memory.data_size > numeric_limits::max() - - thread_.stack.start_of_memory_range) { - BPLOG(ERROR) << "MinidumpThread has a memory region problem, " << - HexString(thread_.stack.start_of_memory_range) << "+" << - HexString(thread_.stack.memory.data_size); - return false; - } - - memory_ = new MinidumpMemoryRegion(minidump_); - memory_->SetDescriptor(&thread_.stack); - - valid_ = true; - return true; -} - - -MinidumpMemoryRegion* MinidumpThread::GetMemory() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpThread for GetMemory"; - return NULL; - } - - return memory_; -} - - -MinidumpContext* MinidumpThread::GetContext() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpThread for GetContext"; - return NULL; - } - - if (!context_) { - if (!minidump_->SeekSet(thread_.thread_context.rva)) { - BPLOG(ERROR) << "MinidumpThread cannot seek to context"; - return NULL; - } - - scoped_ptr context(new MinidumpContext(minidump_)); - - if (!context->Read(thread_.thread_context.data_size)) { - BPLOG(ERROR) << "MinidumpThread cannot read context"; - return NULL; - } - - context_ = context.release(); - } - - return context_; -} - - -bool MinidumpThread::GetThreadID(u_int32_t *thread_id) const { - BPLOG_IF(ERROR, !thread_id) << "MinidumpThread::GetThreadID requires " - "|thread_id|"; - assert(thread_id); - *thread_id = 0; - - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpThread for GetThreadID"; - return false; - } - - *thread_id = thread_.thread_id; - return true; -} - - -void MinidumpThread::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpThread cannot print invalid data"; - return; - } - - printf("MDRawThread\n"); - printf(" thread_id = 0x%x\n", thread_.thread_id); - printf(" suspend_count = %d\n", thread_.suspend_count); - printf(" priority_class = 0x%x\n", thread_.priority_class); - printf(" priority = 0x%x\n", thread_.priority); - printf(" teb = 0x%" PRIx64 "\n", thread_.teb); - printf(" stack.start_of_memory_range = 0x%" PRIx64 "\n", - thread_.stack.start_of_memory_range); - printf(" stack.memory.data_size = 0x%x\n", - thread_.stack.memory.data_size); - printf(" stack.memory.rva = 0x%x\n", thread_.stack.memory.rva); - printf(" thread_context.data_size = 0x%x\n", - thread_.thread_context.data_size); - printf(" thread_context.rva = 0x%x\n", - thread_.thread_context.rva); - - MinidumpContext* context = GetContext(); - if (context) { - printf("\n"); - context->Print(); - } else { - printf(" (no context)\n"); - printf("\n"); - } - - MinidumpMemoryRegion* memory = GetMemory(); - if (memory) { - printf("Stack\n"); - memory->Print(); - } else { - printf("No stack\n"); - } - printf("\n"); -} - - -// -// MinidumpThreadList -// - - -u_int32_t MinidumpThreadList::max_threads_ = 256; - - -MinidumpThreadList::MinidumpThreadList(Minidump* minidump) - : MinidumpStream(minidump), - id_to_thread_map_(), - threads_(NULL), - thread_count_(0) { -} - - -MinidumpThreadList::~MinidumpThreadList() { - delete threads_; -} - - -bool MinidumpThreadList::Read(u_int32_t expected_size) { - // Invalidate cached data. - id_to_thread_map_.clear(); - delete threads_; - threads_ = NULL; - thread_count_ = 0; - - valid_ = false; - - u_int32_t thread_count; - if (expected_size < sizeof(thread_count)) { - BPLOG(ERROR) << "MinidumpThreadList count size mismatch, " << - expected_size << " < " << sizeof(thread_count); - return false; - } - if (!minidump_->ReadBytes(&thread_count, sizeof(thread_count))) { - BPLOG(ERROR) << "MinidumpThreadList cannot read thread count"; - return false; - } - - if (minidump_->swap()) - Swap(&thread_count); - - if (thread_count > numeric_limits::max() / sizeof(MDRawThread)) { - BPLOG(ERROR) << "MinidumpThreadList thread count " << thread_count << - " would cause multiplication overflow"; - return false; - } - - if (expected_size != sizeof(thread_count) + - thread_count * sizeof(MDRawThread)) { - // may be padded with 4 bytes on 64bit ABIs for alignment - if (expected_size == sizeof(thread_count) + 4 + - thread_count * sizeof(MDRawThread)) { - u_int32_t useless; - if (!minidump_->ReadBytes(&useless, 4)) { - BPLOG(ERROR) << "MinidumpThreadList cannot read threadlist padded bytes"; - return false; - } - } else { - BPLOG(ERROR) << "MinidumpThreadList size mismatch, " << expected_size << - " != " << sizeof(thread_count) + - thread_count * sizeof(MDRawThread); - return false; - } - } - - - if (thread_count > max_threads_) { - BPLOG(ERROR) << "MinidumpThreadList count " << thread_count << - " exceeds maximum " << max_threads_; - return false; - } - - if (thread_count != 0) { - scoped_ptr threads( - new MinidumpThreads(thread_count, MinidumpThread(minidump_))); - - for (unsigned int thread_index = 0; - thread_index < thread_count; - ++thread_index) { - MinidumpThread* thread = &(*threads)[thread_index]; - - // Assume that the file offset is correct after the last read. - if (!thread->Read()) { - BPLOG(ERROR) << "MinidumpThreadList cannot read thread " << - thread_index << "/" << thread_count; - return false; - } - - u_int32_t thread_id; - if (!thread->GetThreadID(&thread_id)) { - BPLOG(ERROR) << "MinidumpThreadList cannot get thread ID for thread " << - thread_index << "/" << thread_count; - return false; - } - - if (GetThreadByID(thread_id)) { - // Another thread with this ID is already in the list. Data error. - BPLOG(ERROR) << "MinidumpThreadList found multiple threads with ID " << - HexString(thread_id) << " at thread " << - thread_index << "/" << thread_count; - return false; - } - id_to_thread_map_[thread_id] = thread; - } - - threads_ = threads.release(); - } - - thread_count_ = thread_count; - - valid_ = true; - return true; -} - - -MinidumpThread* MinidumpThreadList::GetThreadAtIndex(unsigned int index) - const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpThreadList for GetThreadAtIndex"; - return NULL; - } - - if (index >= thread_count_) { - BPLOG(ERROR) << "MinidumpThreadList index out of range: " << - index << "/" << thread_count_; - return NULL; - } - - return &(*threads_)[index]; -} - - -MinidumpThread* MinidumpThreadList::GetThreadByID(u_int32_t thread_id) { - // Don't check valid_. Read calls this method before everything is - // validated. It is safe to not check valid_ here. - return id_to_thread_map_[thread_id]; -} - - -void MinidumpThreadList::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpThreadList cannot print invalid data"; - return; - } - - printf("MinidumpThreadList\n"); - printf(" thread_count = %d\n", thread_count_); - printf("\n"); - - for (unsigned int thread_index = 0; - thread_index < thread_count_; - ++thread_index) { - printf("thread[%d]\n", thread_index); - - (*threads_)[thread_index].Print(); - } -} - - -// -// MinidumpModule -// - - -u_int32_t MinidumpModule::max_cv_bytes_ = 1024; -u_int32_t MinidumpModule::max_misc_bytes_ = 1024; - - -MinidumpModule::MinidumpModule(Minidump* minidump) - : MinidumpObject(minidump), - module_valid_(false), - has_debug_info_(false), - module_(), - name_(NULL), - cv_record_(NULL), - cv_record_signature_(MD_CVINFOUNKNOWN_SIGNATURE), - misc_record_(NULL) { -} - - -MinidumpModule::~MinidumpModule() { - delete name_; - delete cv_record_; - delete misc_record_; -} - - -bool MinidumpModule::Read() { - // Invalidate cached data. - delete name_; - name_ = NULL; - delete cv_record_; - cv_record_ = NULL; - cv_record_signature_ = MD_CVINFOUNKNOWN_SIGNATURE; - delete misc_record_; - misc_record_ = NULL; - - module_valid_ = false; - has_debug_info_ = false; - valid_ = false; - - if (!minidump_->ReadBytes(&module_, MD_MODULE_SIZE)) { - BPLOG(ERROR) << "MinidumpModule cannot read module"; - return false; - } - - if (minidump_->swap()) { - Swap(&module_.base_of_image); - Swap(&module_.size_of_image); - Swap(&module_.checksum); - Swap(&module_.time_date_stamp); - Swap(&module_.module_name_rva); - Swap(&module_.version_info.signature); - Swap(&module_.version_info.struct_version); - Swap(&module_.version_info.file_version_hi); - Swap(&module_.version_info.file_version_lo); - Swap(&module_.version_info.product_version_hi); - Swap(&module_.version_info.product_version_lo); - Swap(&module_.version_info.file_flags_mask); - Swap(&module_.version_info.file_flags); - Swap(&module_.version_info.file_os); - Swap(&module_.version_info.file_type); - Swap(&module_.version_info.file_subtype); - Swap(&module_.version_info.file_date_hi); - Swap(&module_.version_info.file_date_lo); - Swap(&module_.cv_record); - Swap(&module_.misc_record); - // Don't swap reserved fields because their contents are unknown (as - // are their proper widths). - } - - // Check for base + size overflow or undersize. - if (module_.size_of_image == 0 || - module_.size_of_image > - numeric_limits::max() - module_.base_of_image) { - BPLOG(ERROR) << "MinidumpModule has a module problem, " << - HexString(module_.base_of_image) << "+" << - HexString(module_.size_of_image); - return false; - } - - module_valid_ = true; - return true; -} - - -bool MinidumpModule::ReadAuxiliaryData() { - if (!module_valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for ReadAuxiliaryData"; - return false; - } - - // Each module must have a name. - name_ = minidump_->ReadString(module_.module_name_rva); - if (!name_) { - BPLOG(ERROR) << "MinidumpModule could not read name"; - return false; - } - - // At this point, we have enough info for the module to be valid. - valid_ = true; - - // CodeView and miscellaneous debug records are only required if the - // module indicates that they exist. - if (module_.cv_record.data_size && !GetCVRecord(NULL)) { - BPLOG(ERROR) << "MinidumpModule has no CodeView record, " - "but one was expected"; - return false; - } - - if (module_.misc_record.data_size && !GetMiscRecord(NULL)) { - BPLOG(ERROR) << "MinidumpModule has no miscellaneous debug record, " - "but one was expected"; - return false; - } - - has_debug_info_ = true; - return true; -} - - -string MinidumpModule::code_file() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for code_file"; - return ""; - } - - return *name_; -} - - -string MinidumpModule::code_identifier() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for code_identifier"; - return ""; - } - - if (!has_debug_info_) - return ""; - - MinidumpSystemInfo *minidump_system_info = minidump_->GetSystemInfo(); - if (!minidump_system_info) { - BPLOG(ERROR) << "MinidumpModule code_identifier requires " - "MinidumpSystemInfo"; - return ""; - } - - const MDRawSystemInfo *raw_system_info = minidump_system_info->system_info(); - if (!raw_system_info) { - BPLOG(ERROR) << "MinidumpModule code_identifier requires MDRawSystemInfo"; - return ""; - } - - string identifier; - - switch (raw_system_info->platform_id) { - case MD_OS_WIN32_NT: - case MD_OS_WIN32_WINDOWS: { - // Use the same format that the MS symbol server uses in filesystem - // hierarchies. - char identifier_string[17]; - snprintf(identifier_string, sizeof(identifier_string), "%08X%x", - module_.time_date_stamp, module_.size_of_image); - identifier = identifier_string; - break; - } - - case MD_OS_MAC_OS_X: - case MD_OS_SOLARIS: - case MD_OS_LINUX: { - // TODO(mmentovai): support uuid extension if present, otherwise fall - // back to version (from LC_ID_DYLIB?), otherwise fall back to something - // else. - identifier = "id"; - break; - } - - default: { - // Without knowing what OS generated the dump, we can't generate a good - // identifier. Return an empty string, signalling failure. - BPLOG(ERROR) << "MinidumpModule code_identifier requires known platform, " - "found " << HexString(raw_system_info->platform_id); - break; - } - } - - return identifier; -} - - -string MinidumpModule::debug_file() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for debug_file"; - return ""; - } - - if (!has_debug_info_) - return ""; - - string file; - // Prefer the CodeView record if present. - if (cv_record_) { - if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) { - // It's actually an MDCVInfoPDB70 structure. - const MDCVInfoPDB70* cv_record_70 = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE); - - // GetCVRecord guarantees pdb_file_name is null-terminated. - file = reinterpret_cast(cv_record_70->pdb_file_name); - } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) { - // It's actually an MDCVInfoPDB20 structure. - const MDCVInfoPDB20* cv_record_20 = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE); - - // GetCVRecord guarantees pdb_file_name is null-terminated. - file = reinterpret_cast(cv_record_20->pdb_file_name); - } - - // If there's a CodeView record but it doesn't match a known signature, - // try the miscellaneous record. - } - - if (file.empty()) { - // No usable CodeView record. Try the miscellaneous debug record. - if (misc_record_) { - const MDImageDebugMisc* misc_record = - reinterpret_cast(&(*misc_record_)[0]); - if (!misc_record->unicode) { - // If it's not Unicode, just stuff it into the string. It's unclear - // if misc_record->data is 0-terminated, so use an explicit size. - file = string( - reinterpret_cast(misc_record->data), - module_.misc_record.data_size - MDImageDebugMisc_minsize); - } else { - // There's a misc_record but it encodes the debug filename in UTF-16. - // (Actually, because miscellaneous records are so old, it's probably - // UCS-2.) Convert it to UTF-8 for congruity with the other strings - // that this method (and all other methods in the Minidump family) - // return. - - unsigned int bytes = - module_.misc_record.data_size - MDImageDebugMisc_minsize; - if (bytes % 2 == 0) { - unsigned int utf16_words = bytes / 2; - - // UTF16ToUTF8 expects a vector, so create a temporary one - // and copy the UTF-16 data into it. - vector string_utf16(utf16_words); - if (utf16_words) - memcpy(&string_utf16[0], &misc_record->data, bytes); - - // GetMiscRecord already byte-swapped the data[] field if it contains - // UTF-16, so pass false as the swap argument. - scoped_ptr new_file(UTF16ToUTF8(string_utf16, false)); - file = *new_file; - } - } - } - } - - BPLOG_IF(ERROR, file.empty()) << "MinidumpModule could not determine " - "debug_file for " << *name_; - - return file; -} - - -string MinidumpModule::debug_identifier() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for debug_identifier"; - return ""; - } - - if (!has_debug_info_) - return ""; - - string identifier; - - // Use the CodeView record if present. - if (cv_record_) { - if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) { - // It's actually an MDCVInfoPDB70 structure. - const MDCVInfoPDB70* cv_record_70 = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE); - - // Use the same format that the MS symbol server uses in filesystem - // hierarchies. - char identifier_string[41]; - snprintf(identifier_string, sizeof(identifier_string), - "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", - cv_record_70->signature.data1, - cv_record_70->signature.data2, - cv_record_70->signature.data3, - cv_record_70->signature.data4[0], - cv_record_70->signature.data4[1], - cv_record_70->signature.data4[2], - cv_record_70->signature.data4[3], - cv_record_70->signature.data4[4], - cv_record_70->signature.data4[5], - cv_record_70->signature.data4[6], - cv_record_70->signature.data4[7], - cv_record_70->age); - identifier = identifier_string; - } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) { - // It's actually an MDCVInfoPDB20 structure. - const MDCVInfoPDB20* cv_record_20 = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE); - - // Use the same format that the MS symbol server uses in filesystem - // hierarchies. - char identifier_string[17]; - snprintf(identifier_string, sizeof(identifier_string), - "%08X%x", cv_record_20->signature, cv_record_20->age); - identifier = identifier_string; - } - } - - // TODO(mmentovai): if there's no usable CodeView record, there might be a - // miscellaneous debug record. It only carries a filename, though, and no - // identifier. I'm not sure what the right thing to do for the identifier - // is in that case, but I don't expect to find many modules without a - // CodeView record (or some other Breakpad extension structure in place of - // a CodeView record). Treat it as an error (empty identifier) for now. - - // TODO(mmentovai): on the Mac, provide fallbacks as in code_identifier(). - - BPLOG_IF(ERROR, identifier.empty()) << "MinidumpModule could not determine " - "debug_identifier for " << *name_; - - return identifier; -} - - -string MinidumpModule::version() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for version"; - return ""; - } - - string version; - - if (module_.version_info.signature == MD_VSFIXEDFILEINFO_SIGNATURE && - module_.version_info.struct_version & MD_VSFIXEDFILEINFO_VERSION && - (module_.version_info.file_version_hi != 0 || module_.version_info.file_version_lo != 0)) { - char version_string[24]; - snprintf(version_string, sizeof(version_string), "%u.%u.%u.%u", - module_.version_info.file_version_hi >> 16, - module_.version_info.file_version_hi & 0xffff, - module_.version_info.file_version_lo >> 16, - module_.version_info.file_version_lo & 0xffff); - version = version_string; - } - - // TODO(mmentovai): possibly support other struct types in place of - // the one used with MD_VSFIXEDFILEINFO_SIGNATURE. We can possibly use - // a different structure that better represents versioning facilities on - // Mac OS X and Linux, instead of forcing them to adhere to the dotted - // quad of 16-bit ints that Windows uses. - - BPLOG_IF(INFO, version.empty()) << "MinidumpModule could not determine " - "version for " << *name_; - - return version; -} - - -const CodeModule* MinidumpModule::Copy() const { - return new BasicCodeModule(this); -} - - -const u_int8_t* MinidumpModule::GetCVRecord(u_int32_t* size) { - if (!module_valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord"; - return NULL; - } - - if (!cv_record_) { - // This just guards against 0-sized CodeView records; more specific checks - // are used when the signature is checked against various structure types. - if (module_.cv_record.data_size == 0) { - return NULL; - } - - if (!minidump_->SeekSet(module_.cv_record.rva)) { - BPLOG(ERROR) << "MinidumpModule could not seek to CodeView record"; - return NULL; - } - - if (module_.cv_record.data_size > max_cv_bytes_) { - BPLOG(ERROR) << "MinidumpModule CodeView record size " << - module_.cv_record.data_size << " exceeds maximum " << - max_cv_bytes_; - return NULL; - } - - // Allocating something that will be accessed as MDCVInfoPDB70 or - // MDCVInfoPDB20 but is allocated as u_int8_t[] can cause alignment - // problems. x86 and ppc are able to cope, though. This allocation - // style is needed because the MDCVInfoPDB70 or MDCVInfoPDB20 are - // variable-sized due to their pdb_file_name fields; these structures - // are not MDCVInfoPDB70_minsize or MDCVInfoPDB20_minsize and treating - // them as such would result in incomplete structures or overruns. - scoped_ptr< vector > cv_record( - new vector(module_.cv_record.data_size)); - - if (!minidump_->ReadBytes(&(*cv_record)[0], module_.cv_record.data_size)) { - BPLOG(ERROR) << "MinidumpModule could not read CodeView record"; - return NULL; - } - - u_int32_t signature = MD_CVINFOUNKNOWN_SIGNATURE; - if (module_.cv_record.data_size > sizeof(signature)) { - MDCVInfoPDB70* cv_record_signature = - reinterpret_cast(&(*cv_record)[0]); - signature = cv_record_signature->cv_signature; - if (minidump_->swap()) - Swap(&signature); - } - - if (signature == MD_CVINFOPDB70_SIGNATURE) { - // Now that the structure type is known, recheck the size. - if (MDCVInfoPDB70_minsize > module_.cv_record.data_size) { - BPLOG(ERROR) << "MinidumpModule CodeView7 record size mismatch, " << - MDCVInfoPDB70_minsize << " > " << - module_.cv_record.data_size; - return NULL; - } - - if (minidump_->swap()) { - MDCVInfoPDB70* cv_record_70 = - reinterpret_cast(&(*cv_record)[0]); - Swap(&cv_record_70->cv_signature); - Swap(&cv_record_70->signature); - Swap(&cv_record_70->age); - // Don't swap cv_record_70.pdb_file_name because it's an array of 8-bit - // quantities. (It's a path, is it UTF-8?) - } - - // The last field of either structure is null-terminated 8-bit character - // data. Ensure that it's null-terminated. - if ((*cv_record)[module_.cv_record.data_size - 1] != '\0') { - BPLOG(ERROR) << "MinidumpModule CodeView7 record string is not " - "0-terminated"; - return NULL; - } - } else if (signature == MD_CVINFOPDB20_SIGNATURE) { - // Now that the structure type is known, recheck the size. - if (MDCVInfoPDB20_minsize > module_.cv_record.data_size) { - BPLOG(ERROR) << "MinidumpModule CodeView2 record size mismatch, " << - MDCVInfoPDB20_minsize << " > " << - module_.cv_record.data_size; - return NULL; - } - if (minidump_->swap()) { - MDCVInfoPDB20* cv_record_20 = - reinterpret_cast(&(*cv_record)[0]); - Swap(&cv_record_20->cv_header.signature); - Swap(&cv_record_20->cv_header.offset); - Swap(&cv_record_20->signature); - Swap(&cv_record_20->age); - // Don't swap cv_record_20.pdb_file_name because it's an array of 8-bit - // quantities. (It's a path, is it UTF-8?) - } - - // The last field of either structure is null-terminated 8-bit character - // data. Ensure that it's null-terminated. - if ((*cv_record)[module_.cv_record.data_size - 1] != '\0') { - BPLOG(ERROR) << "MindumpModule CodeView2 record string is not " - "0-terminated"; - return NULL; - } - } - - // If the signature doesn't match something above, it's not something - // that Breakpad can presently handle directly. Because some modules in - // the wild contain such CodeView records as MD_CVINFOCV50_SIGNATURE, - // don't bail out here - allow the data to be returned to the user, - // although byte-swapping can't be done. - - // Store the vector type because that's how storage was allocated, but - // return it casted to u_int8_t*. - cv_record_ = cv_record.release(); - cv_record_signature_ = signature; - } - - if (size) - *size = module_.cv_record.data_size; - - return &(*cv_record_)[0]; -} - - -const MDImageDebugMisc* MinidumpModule::GetMiscRecord(u_int32_t* size) { - if (!module_valid_) { - BPLOG(ERROR) << "Invalid MinidumpModule for GetMiscRecord"; - return NULL; - } - - if (!misc_record_) { - if (module_.misc_record.data_size == 0) { - return NULL; - } - - if (MDImageDebugMisc_minsize > module_.misc_record.data_size) { - BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record " - "size mismatch, " << MDImageDebugMisc_minsize << " > " << - module_.misc_record.data_size; - return NULL; - } - - if (!minidump_->SeekSet(module_.misc_record.rva)) { - BPLOG(ERROR) << "MinidumpModule could not seek to miscellaneous " - "debugging record"; - return NULL; - } - - if (module_.misc_record.data_size > max_misc_bytes_) { - BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record size " << - module_.misc_record.data_size << " exceeds maximum " << - max_misc_bytes_; - return NULL; - } - - // Allocating something that will be accessed as MDImageDebugMisc but - // is allocated as u_int8_t[] can cause alignment problems. x86 and - // ppc are able to cope, though. This allocation style is needed - // because the MDImageDebugMisc is variable-sized due to its data field; - // this structure is not MDImageDebugMisc_minsize and treating it as such - // would result in an incomplete structure or an overrun. - scoped_ptr< vector > misc_record_mem( - new vector(module_.misc_record.data_size)); - MDImageDebugMisc* misc_record = - reinterpret_cast(&(*misc_record_mem)[0]); - - if (!minidump_->ReadBytes(misc_record, module_.misc_record.data_size)) { - BPLOG(ERROR) << "MinidumpModule could not read miscellaneous debugging " - "record"; - return NULL; - } - - if (minidump_->swap()) { - Swap(&misc_record->data_type); - Swap(&misc_record->length); - // Don't swap misc_record.unicode because it's an 8-bit quantity. - // Don't swap the reserved fields for the same reason, and because - // they don't contain any valid data. - if (misc_record->unicode) { - // There is a potential alignment problem, but shouldn't be a problem - // in practice due to the layout of MDImageDebugMisc. - u_int16_t* data16 = reinterpret_cast(&(misc_record->data)); - unsigned int dataBytes = module_.misc_record.data_size - - MDImageDebugMisc_minsize; - unsigned int dataLength = dataBytes / 2; - for (unsigned int characterIndex = 0; - characterIndex < dataLength; - ++characterIndex) { - Swap(&data16[characterIndex]); - } - } - } - - if (module_.misc_record.data_size != misc_record->length) { - BPLOG(ERROR) << "MinidumpModule miscellaneous debugging record data " - "size mismatch, " << module_.misc_record.data_size << - " != " << misc_record->length; - return NULL; - } - - // Store the vector type because that's how storage was allocated, but - // return it casted to MDImageDebugMisc*. - misc_record_ = misc_record_mem.release(); - } - - if (size) - *size = module_.misc_record.data_size; - - return reinterpret_cast(&(*misc_record_)[0]); -} - - -void MinidumpModule::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpModule cannot print invalid data"; - return; - } - - printf("MDRawModule\n"); - printf(" base_of_image = 0x%" PRIx64 "\n", - module_.base_of_image); - printf(" size_of_image = 0x%x\n", - module_.size_of_image); - printf(" checksum = 0x%x\n", - module_.checksum); - printf(" time_date_stamp = 0x%x\n", - module_.time_date_stamp); - printf(" module_name_rva = 0x%x\n", - module_.module_name_rva); - printf(" version_info.signature = 0x%x\n", - module_.version_info.signature); - printf(" version_info.struct_version = 0x%x\n", - module_.version_info.struct_version); - printf(" version_info.file_version = 0x%x:0x%x\n", - module_.version_info.file_version_hi, - module_.version_info.file_version_lo); - printf(" version_info.product_version = 0x%x:0x%x\n", - module_.version_info.product_version_hi, - module_.version_info.product_version_lo); - printf(" version_info.file_flags_mask = 0x%x\n", - module_.version_info.file_flags_mask); - printf(" version_info.file_flags = 0x%x\n", - module_.version_info.file_flags); - printf(" version_info.file_os = 0x%x\n", - module_.version_info.file_os); - printf(" version_info.file_type = 0x%x\n", - module_.version_info.file_type); - printf(" version_info.file_subtype = 0x%x\n", - module_.version_info.file_subtype); - printf(" version_info.file_date = 0x%x:0x%x\n", - module_.version_info.file_date_hi, - module_.version_info.file_date_lo); - printf(" cv_record.data_size = %d\n", - module_.cv_record.data_size); - printf(" cv_record.rva = 0x%x\n", - module_.cv_record.rva); - printf(" misc_record.data_size = %d\n", - module_.misc_record.data_size); - printf(" misc_record.rva = 0x%x\n", - module_.misc_record.rva); - - printf(" (code_file) = \"%s\"\n", code_file().c_str()); - printf(" (code_identifier) = \"%s\"\n", - code_identifier().c_str()); - - u_int32_t cv_record_size; - const u_int8_t *cv_record = GetCVRecord(&cv_record_size); - if (cv_record) { - if (cv_record_signature_ == MD_CVINFOPDB70_SIGNATURE) { - const MDCVInfoPDB70* cv_record_70 = - reinterpret_cast(cv_record); - assert(cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE); - - printf(" (cv_record).cv_signature = 0x%x\n", - cv_record_70->cv_signature); - printf(" (cv_record).signature = %08x-%04x-%04x-%02x%02x-", - cv_record_70->signature.data1, - cv_record_70->signature.data2, - cv_record_70->signature.data3, - cv_record_70->signature.data4[0], - cv_record_70->signature.data4[1]); - for (unsigned int guidIndex = 2; - guidIndex < 8; - ++guidIndex) { - printf("%02x", cv_record_70->signature.data4[guidIndex]); - } - printf("\n"); - printf(" (cv_record).age = %d\n", - cv_record_70->age); - printf(" (cv_record).pdb_file_name = \"%s\"\n", - cv_record_70->pdb_file_name); - } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) { - const MDCVInfoPDB20* cv_record_20 = - reinterpret_cast(cv_record); - assert(cv_record_20->cv_header.signature == MD_CVINFOPDB20_SIGNATURE); - - printf(" (cv_record).cv_header.signature = 0x%x\n", - cv_record_20->cv_header.signature); - printf(" (cv_record).cv_header.offset = 0x%x\n", - cv_record_20->cv_header.offset); - printf(" (cv_record).signature = 0x%x\n", - cv_record_20->signature); - printf(" (cv_record).age = %d\n", - cv_record_20->age); - printf(" (cv_record).pdb_file_name = \"%s\"\n", - cv_record_20->pdb_file_name); - } else { - printf(" (cv_record) = "); - for (unsigned int cv_byte_index = 0; - cv_byte_index < cv_record_size; - ++cv_byte_index) { - printf("%02x", cv_record[cv_byte_index]); - } - printf("\n"); - } - } else { - printf(" (cv_record) = (null)\n"); - } - - const MDImageDebugMisc* misc_record = GetMiscRecord(NULL); - if (misc_record) { - printf(" (misc_record).data_type = 0x%x\n", - misc_record->data_type); - printf(" (misc_record).length = 0x%x\n", - misc_record->length); - printf(" (misc_record).unicode = %d\n", - misc_record->unicode); - // Don't bother printing the UTF-16, we don't really even expect to ever - // see this misc_record anyway. - if (misc_record->unicode) - printf(" (misc_record).data = \"%s\"\n", - misc_record->data); - else - printf(" (misc_record).data = (UTF-16)\n"); - } else { - printf(" (misc_record) = (null)\n"); - } - - printf(" (debug_file) = \"%s\"\n", debug_file().c_str()); - printf(" (debug_identifier) = \"%s\"\n", - debug_identifier().c_str()); - printf(" (version) = \"%s\"\n", version().c_str()); - printf("\n"); -} - - -// -// MinidumpModuleList -// - - -u_int32_t MinidumpModuleList::max_modules_ = 1024; - - -MinidumpModuleList::MinidumpModuleList(Minidump* minidump) - : MinidumpStream(minidump), - range_map_(new RangeMap()), - modules_(NULL), - module_count_(0) { -} - - -MinidumpModuleList::~MinidumpModuleList() { - delete range_map_; - delete modules_; -} - - -bool MinidumpModuleList::Read(u_int32_t expected_size) { - // Invalidate cached data. - range_map_->Clear(); - delete modules_; - modules_ = NULL; - module_count_ = 0; - - valid_ = false; - - u_int32_t module_count; - if (expected_size < sizeof(module_count)) { - BPLOG(ERROR) << "MinidumpModuleList count size mismatch, " << - expected_size << " < " << sizeof(module_count); - return false; - } - if (!minidump_->ReadBytes(&module_count, sizeof(module_count))) { - BPLOG(ERROR) << "MinidumpModuleList could not read module count"; - return false; - } - - if (minidump_->swap()) - Swap(&module_count); - - if (module_count > numeric_limits::max() / MD_MODULE_SIZE) { - BPLOG(ERROR) << "MinidumpModuleList module count " << module_count << - " would cause multiplication overflow"; - return false; - } - - if (expected_size != sizeof(module_count) + - module_count * MD_MODULE_SIZE) { - // may be padded with 4 bytes on 64bit ABIs for alignment - if (expected_size == sizeof(module_count) + 4 + - module_count * MD_MODULE_SIZE) { - u_int32_t useless; - if (!minidump_->ReadBytes(&useless, 4)) { - BPLOG(ERROR) << "MinidumpModuleList cannot read modulelist padded bytes"; - return false; - } - } else { - BPLOG(ERROR) << "MinidumpModuleList size mismatch, " << expected_size << - " != " << sizeof(module_count) + - module_count * MD_MODULE_SIZE; - return false; - } - } - - if (module_count > max_modules_) { - BPLOG(ERROR) << "MinidumpModuleList count " << module_count_ << - " exceeds maximum " << max_modules_; - return false; - } - - if (module_count != 0) { - scoped_ptr modules( - new MinidumpModules(module_count, MinidumpModule(minidump_))); - - for (unsigned int module_index = 0; - module_index < module_count; - ++module_index) { - MinidumpModule* module = &(*modules)[module_index]; - - // Assume that the file offset is correct after the last read. - if (!module->Read()) { - BPLOG(ERROR) << "MinidumpModuleList could not read module " << - module_index << "/" << module_count; - return false; - } - } - - // Loop through the module list once more to read additional data and - // build the range map. This is done in a second pass because - // MinidumpModule::ReadAuxiliaryData seeks around, and if it were - // included in the loop above, additional seeks would be needed where - // none are now to read contiguous data. - for (unsigned int module_index = 0; - module_index < module_count; - ++module_index) { - MinidumpModule* module = &(*modules)[module_index]; - - // ReadAuxiliaryData fails if any data that the module indicates should - // exist is missing, but we treat some such cases as valid anyway. See - // issue #222: if a debugging record is of a format that's too large to - // handle, it shouldn't render the entire dump invalid. Check module - // validity before giving up. - if (!module->ReadAuxiliaryData() && !module->valid()) { - BPLOG(ERROR) << "MinidumpModuleList could not read required module " - "auxiliary data for module " << - module_index << "/" << module_count; - return false; - } - - // It is safe to use module->code_file() after successfully calling - // module->ReadAuxiliaryData or noting that the module is valid. - - u_int64_t base_address = module->base_address(); - u_int64_t module_size = module->size(); - if (base_address == static_cast(-1)) { - BPLOG(ERROR) << "MinidumpModuleList found bad base address " - "for module " << module_index << "/" << module_count << - ", " << module->code_file(); - return false; - } - - if (!range_map_->StoreRange(base_address, module_size, module_index)) { - BPLOG(ERROR) << "MinidumpModuleList could not store module " << - module_index << "/" << module_count << ", " << - module->code_file() << ", " << - HexString(base_address) << "+" << - HexString(module_size); - return false; - } - } - - modules_ = modules.release(); - } - - module_count_ = module_count; - - valid_ = true; - return true; -} - - -const MinidumpModule* MinidumpModuleList::GetModuleForAddress( - u_int64_t address) const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleForAddress"; - return NULL; - } - - unsigned int module_index; - if (!range_map_->RetrieveRange(address, &module_index, NULL, NULL)) { - BPLOG(INFO) << "MinidumpModuleList has no module at " << - HexString(address); - return NULL; - } - - return GetModuleAtIndex(module_index); -} - - -const MinidumpModule* MinidumpModuleList::GetMainModule() const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModuleList for GetMainModule"; - return NULL; - } - - // The main code module is the first one present in a minidump file's - // MDRawModuleList. - return GetModuleAtSequence(0); -} - - -const MinidumpModule* MinidumpModuleList::GetModuleAtSequence( - unsigned int sequence) const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleAtSequence"; - return NULL; - } - - if (sequence >= module_count_) { - BPLOG(ERROR) << "MinidumpModuleList sequence out of range: " << - sequence << "/" << module_count_; - return NULL; - } - - unsigned int module_index; - if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, NULL, NULL)) { - BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence; - return NULL; - } - - return GetModuleAtIndex(module_index); -} - - -const MinidumpModule* MinidumpModuleList::GetModuleAtIndex( - unsigned int index) const { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpModuleList for GetModuleAtIndex"; - return NULL; - } - - if (index >= module_count_) { - BPLOG(ERROR) << "MinidumpModuleList index out of range: " << - index << "/" << module_count_; - return NULL; - } - - return &(*modules_)[index]; -} - - -const CodeModules* MinidumpModuleList::Copy() const { - return new BasicCodeModules(this); -} - - -void MinidumpModuleList::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpModuleList cannot print invalid data"; - return; - } - - printf("MinidumpModuleList\n"); - printf(" module_count = %d\n", module_count_); - printf("\n"); - - for (unsigned int module_index = 0; - module_index < module_count_; - ++module_index) { - printf("module[%d]\n", module_index); - - (*modules_)[module_index].Print(); - } -} - - -// -// MinidumpMemoryList -// - - -u_int32_t MinidumpMemoryList::max_regions_ = 256; - - -MinidumpMemoryList::MinidumpMemoryList(Minidump* minidump) - : MinidumpStream(minidump), - range_map_(new RangeMap()), - descriptors_(NULL), - regions_(NULL), - region_count_(0) { -} - - -MinidumpMemoryList::~MinidumpMemoryList() { - delete range_map_; - delete descriptors_; - delete regions_; -} - - -bool MinidumpMemoryList::Read(u_int32_t expected_size) { - // Invalidate cached data. - delete descriptors_; - descriptors_ = NULL; - delete regions_; - regions_ = NULL; - range_map_->Clear(); - region_count_ = 0; - - valid_ = false; - - u_int32_t region_count; - if (expected_size < sizeof(region_count)) { - BPLOG(ERROR) << "MinidumpMemoryList count size mismatch, " << - expected_size << " < " << sizeof(region_count); - return false; - } - if (!minidump_->ReadBytes(®ion_count, sizeof(region_count))) { - BPLOG(ERROR) << "MinidumpMemoryList could not read memory region count"; - return false; - } - - if (minidump_->swap()) - Swap(®ion_count); - - if (region_count > - numeric_limits::max() / sizeof(MDMemoryDescriptor)) { - BPLOG(ERROR) << "MinidumpMemoryList region count " << region_count << - " would cause multiplication overflow"; - return false; - } - - if (expected_size != sizeof(region_count) + - region_count * sizeof(MDMemoryDescriptor)) { - // may be padded with 4 bytes on 64bit ABIs for alignment - if (expected_size == sizeof(region_count) + 4 + - region_count * sizeof(MDMemoryDescriptor)) { - u_int32_t useless; - if (!minidump_->ReadBytes(&useless, 4)) { - BPLOG(ERROR) << "MinidumpMemoryList cannot read memorylist padded bytes"; - return false; - } - } else { - BPLOG(ERROR) << "MinidumpMemoryList size mismatch, " << expected_size << - " != " << sizeof(region_count) + - region_count * sizeof(MDMemoryDescriptor); - return false; - } - } - - if (region_count > max_regions_) { - BPLOG(ERROR) << "MinidumpMemoryList count " << region_count << - " exceeds maximum " << max_regions_; - return false; - } - - if (region_count != 0) { - scoped_ptr descriptors( - new MemoryDescriptors(region_count)); - - // Read the entire array in one fell swoop, instead of reading one entry - // at a time in the loop. - if (!minidump_->ReadBytes(&(*descriptors)[0], - sizeof(MDMemoryDescriptor) * region_count)) { - BPLOG(ERROR) << "MinidumpMemoryList could not read memory region list"; - return false; - } - - scoped_ptr regions( - new MemoryRegions(region_count, MinidumpMemoryRegion(minidump_))); - - for (unsigned int region_index = 0; - region_index < region_count; - ++region_index) { - MDMemoryDescriptor* descriptor = &(*descriptors)[region_index]; - - if (minidump_->swap()) - Swap(descriptor); - - u_int64_t base_address = descriptor->start_of_memory_range; - u_int32_t region_size = descriptor->memory.data_size; - - // Check for base + size overflow or undersize. - if (region_size == 0 || - region_size > numeric_limits::max() - base_address) { - BPLOG(ERROR) << "MinidumpMemoryList has a memory region problem, " << - " region " << region_index << "/" << region_count << - ", " << HexString(base_address) << "+" << - HexString(region_size); - return false; - } - - if (!range_map_->StoreRange(base_address, region_size, region_index)) { - BPLOG(ERROR) << "MinidumpMemoryList could not store memory region " << - region_index << "/" << region_count << ", " << - HexString(base_address) << "+" << - HexString(region_size); - return false; - } - - (*regions)[region_index].SetDescriptor(descriptor); - } - - descriptors_ = descriptors.release(); - regions_ = regions.release(); - } - - region_count_ = region_count; - - valid_ = true; - return true; -} - - -MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionAtIndex( - unsigned int index) { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryList for GetMemoryRegionAtIndex"; - return NULL; - } - - if (index >= region_count_) { - BPLOG(ERROR) << "MinidumpMemoryList index out of range: " << - index << "/" << region_count_; - return NULL; - } - - return &(*regions_)[index]; -} - - -MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionForAddress( - u_int64_t address) { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpMemoryList for GetMemoryRegionForAddress"; - return NULL; - } - - unsigned int region_index; - if (!range_map_->RetrieveRange(address, ®ion_index, NULL, NULL)) { - BPLOG(INFO) << "MinidumpMemoryList has no memory region at " << - HexString(address); - return NULL; - } - - return GetMemoryRegionAtIndex(region_index); -} - - -void MinidumpMemoryList::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpMemoryList cannot print invalid data"; - return; - } - - printf("MinidumpMemoryList\n"); - printf(" region_count = %d\n", region_count_); - printf("\n"); - - for (unsigned int region_index = 0; - region_index < region_count_; - ++region_index) { - MDMemoryDescriptor* descriptor = &(*descriptors_)[region_index]; - printf("region[%d]\n", region_index); - printf("MDMemoryDescriptor\n"); - printf(" start_of_memory_range = 0x%" PRIx64 "\n", - descriptor->start_of_memory_range); - printf(" memory.data_size = 0x%x\n", descriptor->memory.data_size); - printf(" memory.rva = 0x%x\n", descriptor->memory.rva); - MinidumpMemoryRegion* region = GetMemoryRegionAtIndex(region_index); - if (region) { - printf("Memory\n"); - region->Print(); - } else { - printf("No memory\n"); - } - printf("\n"); - } -} - - -// -// MinidumpException -// - - -MinidumpException::MinidumpException(Minidump* minidump) - : MinidumpStream(minidump), - exception_(), - context_(NULL) { -} - - -MinidumpException::~MinidumpException() { - delete context_; -} - - -bool MinidumpException::Read(u_int32_t expected_size) { - // Invalidate cached data. - delete context_; - context_ = NULL; - - valid_ = false; - - if (expected_size != sizeof(exception_)) { - BPLOG(ERROR) << "MinidumpException size mismatch, " << expected_size << - " != " << sizeof(exception_); - return false; - } - - if (!minidump_->ReadBytes(&exception_, sizeof(exception_))) { - BPLOG(ERROR) << "MinidumpException cannot read exception"; - return false; - } - - if (minidump_->swap()) { - Swap(&exception_.thread_id); - // exception_.__align is for alignment only and does not need to be - // swapped. - Swap(&exception_.exception_record.exception_code); - Swap(&exception_.exception_record.exception_flags); - Swap(&exception_.exception_record.exception_record); - Swap(&exception_.exception_record.exception_address); - Swap(&exception_.exception_record.number_parameters); - // exception_.exception_record.__align is for alignment only and does not - // need to be swapped. - for (unsigned int parameter_index = 0; - parameter_index < MD_EXCEPTION_MAXIMUM_PARAMETERS; - ++parameter_index) { - Swap(&exception_.exception_record.exception_information[parameter_index]); - } - Swap(&exception_.thread_context); - } - - valid_ = true; - return true; -} - - -bool MinidumpException::GetThreadID(u_int32_t *thread_id) const { - BPLOG_IF(ERROR, !thread_id) << "MinidumpException::GetThreadID requires " - "|thread_id|"; - assert(thread_id); - *thread_id = 0; - - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpException for GetThreadID"; - return false; - } - - *thread_id = exception_.thread_id; - return true; -} - - -MinidumpContext* MinidumpException::GetContext() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpException for GetContext"; - return NULL; - } - - if (!context_) { - if (!minidump_->SeekSet(exception_.thread_context.rva)) { - BPLOG(ERROR) << "MinidumpException cannot seek to context"; - return NULL; - } - - scoped_ptr context(new MinidumpContext(minidump_)); - - if (!context->Read(exception_.thread_context.data_size)) { - BPLOG(ERROR) << "MinidumpException cannot read context"; - return NULL; - } - - context_ = context.release(); - } - - return context_; -} - - -void MinidumpException::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpException cannot print invalid data"; - return; - } - - printf("MDException\n"); - printf(" thread_id = 0x%x\n", - exception_.thread_id); - printf(" exception_record.exception_code = 0x%x\n", - exception_.exception_record.exception_code); - printf(" exception_record.exception_flags = 0x%x\n", - exception_.exception_record.exception_flags); - printf(" exception_record.exception_record = 0x%" PRIx64 "\n", - exception_.exception_record.exception_record); - printf(" exception_record.exception_address = 0x%" PRIx64 "\n", - exception_.exception_record.exception_address); - printf(" exception_record.number_parameters = %d\n", - exception_.exception_record.number_parameters); - for (unsigned int parameterIndex = 0; - parameterIndex < exception_.exception_record.number_parameters; - ++parameterIndex) { - printf(" exception_record.exception_information[%2d] = 0x%" PRIx64 "\n", - parameterIndex, - exception_.exception_record.exception_information[parameterIndex]); - } - printf(" thread_context.data_size = %d\n", - exception_.thread_context.data_size); - printf(" thread_context.rva = 0x%x\n", - exception_.thread_context.rva); - MinidumpContext* context = GetContext(); - if (context) { - printf("\n"); - context->Print(); - } else { - printf(" (no context)\n"); - printf("\n"); - } -} - - -// -// MinidumpSystemInfo -// - - -MinidumpSystemInfo::MinidumpSystemInfo(Minidump* minidump) - : MinidumpStream(minidump), - system_info_(), - csd_version_(NULL), - cpu_vendor_(NULL) { -} - - -MinidumpSystemInfo::~MinidumpSystemInfo() { - delete csd_version_; - delete cpu_vendor_; -} - - -bool MinidumpSystemInfo::Read(u_int32_t expected_size) { - // Invalidate cached data. - delete csd_version_; - csd_version_ = NULL; - delete cpu_vendor_; - cpu_vendor_ = NULL; - - valid_ = false; - - if (expected_size != sizeof(system_info_)) { - BPLOG(ERROR) << "MinidumpSystemInfo size mismatch, " << expected_size << - " != " << sizeof(system_info_); - return false; - } - - if (!minidump_->ReadBytes(&system_info_, sizeof(system_info_))) { - BPLOG(ERROR) << "MinidumpSystemInfo cannot read system info"; - return false; - } - - if (minidump_->swap()) { - Swap(&system_info_.processor_architecture); - Swap(&system_info_.processor_level); - Swap(&system_info_.processor_revision); - // number_of_processors and product_type are 8-bit quantities and need no - // swapping. - Swap(&system_info_.major_version); - Swap(&system_info_.minor_version); - Swap(&system_info_.build_number); - Swap(&system_info_.platform_id); - Swap(&system_info_.csd_version_rva); - Swap(&system_info_.suite_mask); - // Don't swap the reserved2 field because its contents are unknown. - - if (system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86 || - system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86_WIN64) { - for (unsigned int i = 0; i < 3; ++i) - Swap(&system_info_.cpu.x86_cpu_info.vendor_id[i]); - Swap(&system_info_.cpu.x86_cpu_info.version_information); - Swap(&system_info_.cpu.x86_cpu_info.feature_information); - Swap(&system_info_.cpu.x86_cpu_info.amd_extended_cpu_features); - } else { - for (unsigned int i = 0; i < 2; ++i) - Swap(&system_info_.cpu.other_cpu_info.processor_features[i]); - } - } - - valid_ = true; - return true; -} - - -string MinidumpSystemInfo::GetOS() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetOS"; - return NULL; - } - - string os; - - switch (system_info_.platform_id) { - case MD_OS_WIN32_NT: - case MD_OS_WIN32_WINDOWS: - os = "windows"; - break; - - case MD_OS_MAC_OS_X: - os = "mac"; - break; - - case MD_OS_LINUX: - os = "linux"; - break; - - case MD_OS_SOLARIS: - os = "solaris"; - break; - - default: - BPLOG(ERROR) << "MinidumpSystemInfo unknown OS for platform " << - HexString(system_info_.platform_id); - break; - } - - return os; -} - - -string MinidumpSystemInfo::GetCPU() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCPU"; - return ""; - } - - string cpu; - - switch (system_info_.processor_architecture) { - case MD_CPU_ARCHITECTURE_X86: - case MD_CPU_ARCHITECTURE_X86_WIN64: - cpu = "x86"; - break; - - case MD_CPU_ARCHITECTURE_PPC: - cpu = "ppc"; - break; - - case MD_CPU_ARCHITECTURE_SPARC: - cpu = "sparc"; - break; - - default: - BPLOG(ERROR) << "MinidumpSystemInfo unknown CPU for architecture " << - HexString(system_info_.processor_architecture); - break; - } - - return cpu; -} - - -const string* MinidumpSystemInfo::GetCSDVersion() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCSDVersion"; - return NULL; - } - - if (!csd_version_) - csd_version_ = minidump_->ReadString(system_info_.csd_version_rva); - - BPLOG_IF(ERROR, !csd_version_) << "MinidumpSystemInfo could not read " - "CSD version"; - - return csd_version_; -} - - -const string* MinidumpSystemInfo::GetCPUVendor() { - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpSystemInfo for GetCPUVendor"; - return NULL; - } - - // CPU vendor information can only be determined from x86 minidumps. - if (!cpu_vendor_ && - (system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86 || - system_info_.processor_architecture == MD_CPU_ARCHITECTURE_X86_WIN64)) { - char cpu_vendor_string[13]; - snprintf(cpu_vendor_string, sizeof(cpu_vendor_string), - "%c%c%c%c%c%c%c%c%c%c%c%c", - system_info_.cpu.x86_cpu_info.vendor_id[0] & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 8) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 16) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[0] >> 24) & 0xff, - system_info_.cpu.x86_cpu_info.vendor_id[1] & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 8) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 16) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[1] >> 24) & 0xff, - system_info_.cpu.x86_cpu_info.vendor_id[2] & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 8) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 16) & 0xff, - (system_info_.cpu.x86_cpu_info.vendor_id[2] >> 24) & 0xff); - cpu_vendor_ = new string(cpu_vendor_string); - } - - return cpu_vendor_; -} - - -void MinidumpSystemInfo::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpSystemInfo cannot print invalid data"; - return; - } - - printf("MDRawSystemInfo\n"); - printf(" processor_architecture = %d\n", - system_info_.processor_architecture); - printf(" processor_level = %d\n", - system_info_.processor_level); - printf(" processor_revision = 0x%x\n", - system_info_.processor_revision); - printf(" number_of_processors = %d\n", - system_info_.number_of_processors); - printf(" product_type = %d\n", - system_info_.product_type); - printf(" major_version = %d\n", - system_info_.major_version); - printf(" minor_version = %d\n", - system_info_.minor_version); - printf(" build_number = %d\n", - system_info_.build_number); - printf(" platform_id = %d\n", - system_info_.platform_id); - printf(" csd_version_rva = 0x%x\n", - system_info_.csd_version_rva); - printf(" suite_mask = 0x%x\n", - system_info_.suite_mask); - for (unsigned int i = 0; i < 3; ++i) { - printf(" cpu.x86_cpu_info.vendor_id[%d] = 0x%x\n", - i, system_info_.cpu.x86_cpu_info.vendor_id[i]); - } - printf(" cpu.x86_cpu_info.version_information = 0x%x\n", - system_info_.cpu.x86_cpu_info.version_information); - printf(" cpu.x86_cpu_info.feature_information = 0x%x\n", - system_info_.cpu.x86_cpu_info.feature_information); - printf(" cpu.x86_cpu_info.amd_extended_cpu_features = 0x%x\n", - system_info_.cpu.x86_cpu_info.amd_extended_cpu_features); - const string* csd_version = GetCSDVersion(); - if (csd_version) { - printf(" (csd_version) = \"%s\"\n", - csd_version->c_str()); - } else { - printf(" (csd_version) = (null)\n"); - } - const string* cpu_vendor = GetCPUVendor(); - if (cpu_vendor) { - printf(" (cpu_vendor) = \"%s\"\n", - cpu_vendor->c_str()); - } else { - printf(" (cpu_vendor) = (null)\n"); - } - printf("\n"); -} - - -// -// MinidumpMiscInfo -// - - -MinidumpMiscInfo::MinidumpMiscInfo(Minidump* minidump) - : MinidumpStream(minidump), - misc_info_() { -} - - -bool MinidumpMiscInfo::Read(u_int32_t expected_size) { - valid_ = false; - - if (expected_size != MD_MISCINFO_SIZE && - expected_size != MD_MISCINFO2_SIZE) { - BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size << - " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE << - ")"; - return false; - } - - if (!minidump_->ReadBytes(&misc_info_, expected_size)) { - BPLOG(ERROR) << "MinidumpMiscInfo cannot read miscellaneous info"; - return false; - } - - if (minidump_->swap()) { - Swap(&misc_info_.size_of_info); - Swap(&misc_info_.flags1); - Swap(&misc_info_.process_id); - Swap(&misc_info_.process_create_time); - Swap(&misc_info_.process_user_time); - Swap(&misc_info_.process_kernel_time); - if (misc_info_.size_of_info > MD_MISCINFO_SIZE) { - Swap(&misc_info_.processor_max_mhz); - Swap(&misc_info_.processor_current_mhz); - Swap(&misc_info_.processor_mhz_limit); - Swap(&misc_info_.processor_max_idle_state); - Swap(&misc_info_.processor_current_idle_state); - } - } - - if (expected_size != misc_info_.size_of_info) { - BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << - expected_size << " != " << misc_info_.size_of_info; - return false; - } - - valid_ = true; - return true; -} - - -void MinidumpMiscInfo::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpMiscInfo cannot print invalid data"; - return; - } - - printf("MDRawMiscInfo\n"); - printf(" size_of_info = %d\n", misc_info_.size_of_info); - printf(" flags1 = 0x%x\n", misc_info_.flags1); - printf(" process_id = 0x%x\n", misc_info_.process_id); - printf(" process_create_time = 0x%x\n", - misc_info_.process_create_time); - printf(" process_user_time = 0x%x\n", - misc_info_.process_user_time); - printf(" process_kernel_time = 0x%x\n", - misc_info_.process_kernel_time); - if (misc_info_.size_of_info > MD_MISCINFO_SIZE) { - printf(" processor_max_mhz = %d\n", - misc_info_.processor_max_mhz); - printf(" processor_current_mhz = %d\n", - misc_info_.processor_current_mhz); - printf(" processor_mhz_limit = %d\n", - misc_info_.processor_mhz_limit); - printf(" processor_max_idle_state = 0x%x\n", - misc_info_.processor_max_idle_state); - printf(" processor_current_idle_state = 0x%x\n", - misc_info_.processor_current_idle_state); - } - printf("\n"); -} - - -// -// MinidumpBreakpadInfo -// - - -MinidumpBreakpadInfo::MinidumpBreakpadInfo(Minidump* minidump) - : MinidumpStream(minidump), - breakpad_info_() { -} - - -bool MinidumpBreakpadInfo::Read(u_int32_t expected_size) { - valid_ = false; - - if (expected_size != sizeof(breakpad_info_)) { - BPLOG(ERROR) << "MinidumpBreakpadInfo size mismatch, " << expected_size << - " != " << sizeof(breakpad_info_); - return false; - } - - if (!minidump_->ReadBytes(&breakpad_info_, sizeof(breakpad_info_))) { - BPLOG(ERROR) << "MinidumpBreakpadInfo cannot read Breakpad info"; - return false; - } - - if (minidump_->swap()) { - Swap(&breakpad_info_.validity); - Swap(&breakpad_info_.dump_thread_id); - Swap(&breakpad_info_.requesting_thread_id); - } - - valid_ = true; - return true; -} - - -bool MinidumpBreakpadInfo::GetDumpThreadID(u_int32_t *thread_id) const { - BPLOG_IF(ERROR, !thread_id) << "MinidumpBreakpadInfo::GetDumpThreadID " - "requires |thread_id|"; - assert(thread_id); - *thread_id = 0; - - if (!valid_) { - BPLOG(ERROR) << "Invalid MinidumpBreakpadInfo for GetDumpThreadID"; - return false; - } - - if (!(breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID)) { - BPLOG(INFO) << "MinidumpBreakpadInfo has no dump thread"; - return false; - } - - *thread_id = breakpad_info_.dump_thread_id; - return true; -} - - -bool MinidumpBreakpadInfo::GetRequestingThreadID(u_int32_t *thread_id) - const { - BPLOG_IF(ERROR, !thread_id) << "MinidumpBreakpadInfo::GetRequestingThreadID " - "requires |thread_id|"; - assert(thread_id); - *thread_id = 0; - - if (!thread_id || !valid_) { - BPLOG(ERROR) << "Invalid MinidumpBreakpadInfo for GetRequestingThreadID"; - return false; - } - - if (!(breakpad_info_.validity & - MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID)) { - BPLOG(INFO) << "MinidumpBreakpadInfo has no requesting thread"; - return false; - } - - *thread_id = breakpad_info_.requesting_thread_id; - return true; -} - - -void MinidumpBreakpadInfo::Print() { - if (!valid_) { - BPLOG(ERROR) << "MinidumpBreakpadInfo cannot print invalid data"; - return; - } - - printf("MDRawBreakpadInfo\n"); - printf(" validity = 0x%x\n", breakpad_info_.validity); - - if (breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID) { - printf(" dump_thread_id = 0x%x\n", breakpad_info_.dump_thread_id); - } else { - printf(" dump_thread_id = (invalid)\n"); - } - - if (breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID) { - printf(" requesting_thread_id = 0x%x\n", - breakpad_info_.requesting_thread_id); - } else { - printf(" requesting_thread_id = (invalid)\n"); - } - - printf("\n"); -} - - -// -// Minidump -// - - -u_int32_t Minidump::max_streams_ = 128; -unsigned int Minidump::max_string_length_ = 1024; - - -Minidump::Minidump(const string& path) - : header_(), - directory_(NULL), - stream_map_(new MinidumpStreamMap()), - path_(path), - fd_(-1), - swap_(false), - valid_(false) { -} - - -Minidump::~Minidump() { - delete directory_; - delete stream_map_; - if (fd_ != -1) { - BPLOG(INFO) << "Minidump closing minidump on fd " << fd_; - close(fd_); - } -} - - -bool Minidump::Open() { - if (fd_ != -1) { - BPLOG(INFO) << "Minidump reopening minidump " << path_ << " on fd " << fd_; - - // The file is already open. Seek to the beginning, which is the position - // the file would be at if it were opened anew. - return SeekSet(0); - } - - // O_BINARY is useful (and defined) on Windows. On other platforms, it's - // useless, and because it's defined as 0 above, harmless. - fd_ = open(path_.c_str(), O_RDONLY | O_BINARY); - if (fd_ == -1) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "Minidump could not open minidump " << path_ << - ", error " << error_code << ": " << error_string; - return false; - } - - BPLOG(INFO) << "Minidump opened minidump " << path_ << " on fd " << fd_; - return true; -} - - -bool Minidump::Read() { - // Invalidate cached data. - delete directory_; - directory_ = NULL; - stream_map_->clear(); - - valid_ = false; - - if (!Open()) { - BPLOG(ERROR) << "Minidump cannot open minidump"; - return false; - } - - if (!ReadBytes(&header_, sizeof(MDRawHeader))) { - BPLOG(ERROR) << "Minidump cannot read header"; - return false; - } - - if (header_.signature != MD_HEADER_SIGNATURE) { - // The file may be byte-swapped. Under the present architecture, these - // classes don't know or need to know what CPU (or endianness) the - // minidump was produced on in order to parse it. Use the signature as - // a byte order marker. - u_int32_t signature_swapped = header_.signature; - Swap(&signature_swapped); - if (signature_swapped != MD_HEADER_SIGNATURE) { - // This isn't a minidump or a byte-swapped minidump. - BPLOG(ERROR) << "Minidump header signature mismatch: (" << - HexString(header_.signature) << ", " << - HexString(signature_swapped) << ") != " << - HexString(MD_HEADER_SIGNATURE); - return false; - } - swap_ = true; - } else { - // The file is not byte-swapped. Set swap_ false (it may have been true - // if the object is being reused?) - swap_ = false; - } - - BPLOG(INFO) << "Minidump " << (swap_ ? "" : "not ") << - "byte-swapping minidump"; - - if (swap_) { - Swap(&header_.signature); - Swap(&header_.version); - Swap(&header_.stream_count); - Swap(&header_.stream_directory_rva); - Swap(&header_.checksum); - Swap(&header_.time_date_stamp); - Swap(&header_.flags); - } - - // Version check. The high 16 bits of header_.version contain something - // else "implementation specific." - if ((header_.version & 0x0000ffff) != MD_HEADER_VERSION) { - BPLOG(ERROR) << "Minidump version mismatch: " << - HexString(header_.version & 0x0000ffff) << " != " << - HexString(MD_HEADER_VERSION); - return false; - } - - if (!SeekSet(header_.stream_directory_rva)) { - BPLOG(ERROR) << "Minidump cannot seek to stream directory"; - return false; - } - - if (header_.stream_count > max_streams_) { - BPLOG(ERROR) << "Minidump stream count " << header_.stream_count << - " exceeds maximum " << max_streams_; - return false; - } - - if (header_.stream_count != 0) { - scoped_ptr directory( - new MinidumpDirectoryEntries(header_.stream_count)); - - // Read the entire array in one fell swoop, instead of reading one entry - // at a time in the loop. - if (!ReadBytes(&(*directory)[0], - sizeof(MDRawDirectory) * header_.stream_count)) { - BPLOG(ERROR) << "Minidump cannot read stream directory"; - return false; - } - - for (unsigned int stream_index = 0; - stream_index < header_.stream_count; - ++stream_index) { - MDRawDirectory* directory_entry = &(*directory)[stream_index]; - - if (swap_) { - Swap(&directory_entry->stream_type); - Swap(&directory_entry->location); - } - - // Initialize the stream_map_ map, which speeds locating a stream by - // type. - unsigned int stream_type = directory_entry->stream_type; - switch (stream_type) { - case MD_THREAD_LIST_STREAM: - case MD_MODULE_LIST_STREAM: - case MD_MEMORY_LIST_STREAM: - case MD_EXCEPTION_STREAM: - case MD_SYSTEM_INFO_STREAM: - case MD_MISC_INFO_STREAM: - case MD_BREAKPAD_INFO_STREAM: { - if (stream_map_->find(stream_type) != stream_map_->end()) { - // Another stream with this type was already found. A minidump - // file should contain at most one of each of these stream types. - BPLOG(ERROR) << "Minidump found multiple streams of type " << - stream_type << ", but can only deal with one"; - return false; - } - // Fall through to default - } - - default: { - // Overwrites for stream types other than those above, but it's - // expected to be the user's burden in that case. - (*stream_map_)[stream_type].stream_index = stream_index; - } - } - } - - directory_ = directory.release(); - } - - valid_ = true; - return true; -} - - -MinidumpThreadList* Minidump::GetThreadList() { - MinidumpThreadList* thread_list; - return GetStream(&thread_list); -} - - -MinidumpModuleList* Minidump::GetModuleList() { - MinidumpModuleList* module_list; - return GetStream(&module_list); -} - - -MinidumpMemoryList* Minidump::GetMemoryList() { - MinidumpMemoryList* memory_list; - return GetStream(&memory_list); -} - - -MinidumpException* Minidump::GetException() { - MinidumpException* exception; - return GetStream(&exception); -} - - -MinidumpSystemInfo* Minidump::GetSystemInfo() { - MinidumpSystemInfo* system_info; - return GetStream(&system_info); -} - - -MinidumpMiscInfo* Minidump::GetMiscInfo() { - MinidumpMiscInfo* misc_info; - return GetStream(&misc_info); -} - - -MinidumpBreakpadInfo* Minidump::GetBreakpadInfo() { - MinidumpBreakpadInfo* breakpad_info; - return GetStream(&breakpad_info); -} - - -void Minidump::Print() { - if (!valid_) { - BPLOG(ERROR) << "Minidump cannot print invalid data"; - return; - } - - printf("MDRawHeader\n"); - printf(" signature = 0x%x\n", header_.signature); - printf(" version = 0x%x\n", header_.version); - printf(" stream_count = %d\n", header_.stream_count); - printf(" stream_directory_rva = 0x%x\n", header_.stream_directory_rva); - printf(" checksum = 0x%x\n", header_.checksum); - struct tm timestruct; - gmtime_r(reinterpret_cast(&header_.time_date_stamp), ×truct); - char timestr[20]; - strftime(timestr, 20, "%Y-%m-%d %H:%M:%S", ×truct); - printf(" time_date_stamp = 0x%x %s\n", header_.time_date_stamp, - timestr); - printf(" flags = 0x%" PRIx64 "\n", header_.flags); - printf("\n"); - - for (unsigned int stream_index = 0; - stream_index < header_.stream_count; - ++stream_index) { - MDRawDirectory* directory_entry = &(*directory_)[stream_index]; - - printf("mDirectory[%d]\n", stream_index); - printf("MDRawDirectory\n"); - printf(" stream_type = %d\n", directory_entry->stream_type); - printf(" location.data_size = %d\n", - directory_entry->location.data_size); - printf(" location.rva = 0x%x\n", directory_entry->location.rva); - printf("\n"); - } - - printf("Streams:\n"); - for (MinidumpStreamMap::const_iterator iterator = stream_map_->begin(); - iterator != stream_map_->end(); - ++iterator) { - u_int32_t stream_type = iterator->first; - MinidumpStreamInfo info = iterator->second; - printf(" stream type 0x%x at index %d\n", stream_type, info.stream_index); - } - printf("\n"); -} - - -const MDRawDirectory* Minidump::GetDirectoryEntryAtIndex(unsigned int index) - const { - if (!valid_) { - BPLOG(ERROR) << "Invalid Minidump for GetDirectoryEntryAtIndex"; - return NULL; - } - - if (index >= header_.stream_count) { - BPLOG(ERROR) << "Minidump stream directory index out of range: " << - index << "/" << header_.stream_count; - return NULL; - } - - return &(*directory_)[index]; -} - - -bool Minidump::ReadBytes(void* bytes, size_t count) { - // Can't check valid_ because Read needs to call this method before - // validity can be determined. The only member that this method - // depends on is mFD, and an unset or invalid fd may generate an - // error but should not cause a crash. - ssize_t bytes_read = read(fd_, bytes, count); - if (static_cast(bytes_read) != count) { - if (bytes_read == -1) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "ReadBytes: error " << error_code << ": " << error_string; - } else { - BPLOG(ERROR) << "ReadBytes: read " << bytes_read << "/" << count; - } - return false; - } - return true; -} - - -bool Minidump::SeekSet(off_t offset) { - // Can't check valid_ because Read needs to call this method before - // validity can be determined. The only member that this method - // depends on is mFD, and an unset or invalid fd may generate an - // error but should not cause a crash. - off_t sought = lseek(fd_, offset, SEEK_SET); - if (sought != offset) { - if (sought == -1) { - string error_string; - int error_code = ErrnoString(&error_string); - BPLOG(ERROR) << "SeekSet: error " << error_code << ": " << error_string; - } else { - BPLOG(ERROR) << "SeekSet: sought " << sought << "/" << offset; - } - return false; - } - return true; -} - - -string* Minidump::ReadString(off_t offset) { - if (!valid_) { - BPLOG(ERROR) << "Invalid Minidump for ReadString"; - return NULL; - } - if (!SeekSet(offset)) { - BPLOG(ERROR) << "ReadString could not seek to string at offset " << offset; - return NULL; - } - - u_int32_t bytes; - if (!ReadBytes(&bytes, sizeof(bytes))) { - BPLOG(ERROR) << "ReadString could not read string size at offset " << - offset; - return NULL; - } - if (swap_) - Swap(&bytes); - - if (bytes % 2 != 0) { - BPLOG(ERROR) << "ReadString found odd-sized " << bytes << - "-byte string at offset " << offset; - return NULL; - } - unsigned int utf16_words = bytes / 2; - - if (utf16_words > max_string_length_) { - BPLOG(ERROR) << "ReadString string length " << utf16_words << - " exceeds maximum " << max_string_length_ << - " at offset " << offset; - return NULL; - } - - vector string_utf16(utf16_words); - - if (utf16_words) { - if (!ReadBytes(&string_utf16[0], bytes)) { - BPLOG(ERROR) << "ReadString could not read " << bytes << - "-byte string at offset " << offset; - return NULL; - } - } - - return UTF16ToUTF8(string_utf16, swap_); -} - - -bool Minidump::SeekToStreamType(u_int32_t stream_type, - u_int32_t* stream_length) { - BPLOG_IF(ERROR, !stream_length) << "Minidump::SeekToStreamType requires " - "|stream_length|"; - assert(stream_length); - *stream_length = 0; - - if (!valid_) { - BPLOG(ERROR) << "Invalid Mindump for SeekToStreamType"; - return false; - } - - MinidumpStreamMap::const_iterator iterator = stream_map_->find(stream_type); - if (iterator == stream_map_->end()) { - // This stream type didn't exist in the directory. - BPLOG(INFO) << "SeekToStreamType: type " << stream_type << " not present"; - return false; - } - - MinidumpStreamInfo info = iterator->second; - if (info.stream_index >= header_.stream_count) { - BPLOG(ERROR) << "SeekToStreamType: type " << stream_type << - " out of range: " << - info.stream_index << "/" << header_.stream_count; - return false; - } - - MDRawDirectory* directory_entry = &(*directory_)[info.stream_index]; - if (!SeekSet(directory_entry->location.rva)) { - BPLOG(ERROR) << "SeekToStreamType could not seek to stream type " << - stream_type; - return false; - } - - *stream_length = directory_entry->location.data_size; - - return true; -} - - -template -T* Minidump::GetStream(T** stream) { - // stream is a garbage parameter that's present only to account for C++'s - // inability to overload a method based solely on its return type. - - const u_int32_t stream_type = T::kStreamType; - - BPLOG_IF(ERROR, !stream) << "Minidump::GetStream type " << stream_type << - " requires |stream|"; - assert(stream); - *stream = NULL; - - if (!valid_) { - BPLOG(ERROR) << "Invalid Minidump for GetStream type " << stream_type; - return NULL; - } - - MinidumpStreamMap::iterator iterator = stream_map_->find(stream_type); - if (iterator == stream_map_->end()) { - // This stream type didn't exist in the directory. - BPLOG(INFO) << "GetStream: type " << stream_type << " not present"; - return NULL; - } - - // Get a pointer so that the stored stream field can be altered. - MinidumpStreamInfo* info = &iterator->second; - - if (info->stream) { - // This cast is safe because info.stream is only populated by this - // method, and there is a direct correlation between T and stream_type. - *stream = static_cast(info->stream); - return *stream; - } - - u_int32_t stream_length; - if (!SeekToStreamType(stream_type, &stream_length)) { - BPLOG(ERROR) << "GetStream could not seek to stream type " << stream_type; - return NULL; - } - - scoped_ptr new_stream(new T(this)); - - if (!new_stream->Read(stream_length)) { - BPLOG(ERROR) << "GetStream could not read stream type " << stream_type; - return NULL; - } - - *stream = new_stream.release(); - info->stream = *stream; - return *stream; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_dump b/thirdparty/google-breakpad/r318/src/processor/minidump_dump deleted file mode 100644 index 579bf6bd4300044b4c29c818fca862a4d30ce04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246444 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 diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_dump.cc b/thirdparty/google-breakpad/r318/src/processor/minidump_dump.cc deleted file mode 100644 index 12a699de..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_dump.cc +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_dump.cc: Print the contents of a minidump file in somewhat -// readable text. -// -// Author: Mark Mentovai - -#include - -#include "google_breakpad/processor/minidump.h" -#include "processor/logging.h" - -namespace { - -using google_breakpad::Minidump; -using google_breakpad::MinidumpThreadList; -using google_breakpad::MinidumpModuleList; -using google_breakpad::MinidumpMemoryList; -using google_breakpad::MinidumpException; -using google_breakpad::MinidumpSystemInfo; -using google_breakpad::MinidumpMiscInfo; -using google_breakpad::MinidumpBreakpadInfo; - -static bool PrintMinidumpDump(const char *minidump_file) { - Minidump minidump(minidump_file); - if (!minidump.Read()) { - BPLOG(ERROR) << "minidump.Read() failed"; - return false; - } - minidump.Print(); - - int errors = 0; - - MinidumpThreadList *thread_list = minidump.GetThreadList(); - if (!thread_list) { - ++errors; - BPLOG(ERROR) << "minidump.GetThreadList() failed"; - } else { - thread_list->Print(); - } - - MinidumpModuleList *module_list = minidump.GetModuleList(); - if (!module_list) { - ++errors; - BPLOG(ERROR) << "minidump.GetModuleList() failed"; - } else { - module_list->Print(); - } - - MinidumpMemoryList *memory_list = minidump.GetMemoryList(); - if (!memory_list) { - ++errors; - BPLOG(ERROR) << "minidump.GetMemoryList() failed"; - } else { - memory_list->Print(); - } - - MinidumpException *exception = minidump.GetException(); - if (!exception) { - BPLOG(INFO) << "minidump.GetException() failed"; - } else { - exception->Print(); - } - - MinidumpSystemInfo *system_info = minidump.GetSystemInfo(); - if (!system_info) { - ++errors; - BPLOG(ERROR) << "minidump.GetSystemInfo() failed"; - } else { - system_info->Print(); - } - - MinidumpMiscInfo *misc_info = minidump.GetMiscInfo(); - if (!misc_info) { - ++errors; - BPLOG(ERROR) << "minidump.GetMiscInfo() failed"; - } else { - misc_info->Print(); - } - - MinidumpBreakpadInfo *breakpad_info = minidump.GetBreakpadInfo(); - if (!breakpad_info) { - // Breakpad info is optional, so don't treat this as an error. - BPLOG(INFO) << "minidump.GetBreakpadInfo() failed"; - } else { - breakpad_info->Print(); - } - - return errors == 0; -} - -} // namespace - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - if (argc != 2) { - fprintf(stderr, "usage: %s \n", argv[0]); - return 1; - } - - return PrintMinidumpDump(argv[1]) ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_dump_test b/thirdparty/google-breakpad/r318/src/processor/minidump_dump_test deleted file mode 100644 index fb62ace7..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_dump_test +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2006, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -testdata_dir=$srcdir/src/processor/testdata -./src/processor/minidump_dump $testdata_dir/minidump2.dmp | \ - tr -d '\015' | \ - diff -u $testdata_dir/minidump2.dump.out - -exit $? diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_processor.cc b/thirdparty/google-breakpad/r318/src/processor/minidump_processor.cc deleted file mode 100644 index 3c609170..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_processor.cc +++ /dev/null @@ -1,992 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include - -#include "google_breakpad/processor/minidump_processor.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/minidump.h" -#include "google_breakpad/processor/process_state.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" -#include "processor/stackwalker_x86.h" - -namespace google_breakpad { - -MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : supplier_(supplier), resolver_(resolver) { -} - -MinidumpProcessor::~MinidumpProcessor() { -} - -MinidumpProcessor::ProcessResult MinidumpProcessor::Process( - const string &minidump_file, ProcessState *process_state) { - BPLOG(INFO) << "Processing minidump in file " << minidump_file; - - Minidump dump(minidump_file); - if (!dump.Read()) { - BPLOG(ERROR) << "Minidump " << minidump_file << " could not be read"; - return PROCESS_ERROR; - } - - process_state->Clear(); - - const MDRawHeader *header = dump.header(); - BPLOG_IF(ERROR, !header) << "Minidump " << minidump_file << " has no header"; - assert(header); - process_state->time_date_stamp_ = header->time_date_stamp; - - bool has_cpu_info = GetCPUInfo(&dump, &process_state->system_info_); - bool has_os_info = GetOSInfo(&dump, &process_state->system_info_); - - u_int32_t dump_thread_id = 0; - bool has_dump_thread = false; - u_int32_t requesting_thread_id = 0; - bool has_requesting_thread = false; - - MinidumpBreakpadInfo *breakpad_info = dump.GetBreakpadInfo(); - if (breakpad_info) { - has_dump_thread = breakpad_info->GetDumpThreadID(&dump_thread_id); - has_requesting_thread = - breakpad_info->GetRequestingThreadID(&requesting_thread_id); - } - - MinidumpException *exception = dump.GetException(); - if (exception) { - process_state->crashed_ = true; - has_requesting_thread = exception->GetThreadID(&requesting_thread_id); - - process_state->crash_reason_ = GetCrashReason( - &dump, &process_state->crash_address_); - } - - MinidumpModuleList *module_list = dump.GetModuleList(); - - // Put a copy of the module list into ProcessState object. This is not - // necessarily a MinidumpModuleList, but it adheres to the CodeModules - // interface, which is all that ProcessState needs to expose. - if (module_list) - process_state->modules_ = module_list->Copy(); - - MinidumpThreadList *threads = dump.GetThreadList(); - if (!threads) { - BPLOG(ERROR) << "Minidump " << minidump_file << " has no thread list"; - return PROCESS_ERROR; - } - - BPLOG(INFO) << "Minidump " << minidump_file << " has " << - (has_cpu_info ? "" : "no ") << "CPU info, " << - (has_os_info ? "" : "no ") << "OS info, " << - (breakpad_info != NULL ? "" : "no ") << "Breakpad info, " << - (exception != NULL ? "" : "no ") << "exception, " << - (module_list != NULL ? "" : "no ") << "module list, " << - (threads != NULL ? "" : "no ") << "thread list, " << - (has_dump_thread ? "" : "no ") << "dump thread, and " << - (has_requesting_thread ? "" : "no ") << "requesting thread"; - - bool interrupted = false; - bool found_requesting_thread = false; - unsigned int thread_count = threads->thread_count(); - for (unsigned int thread_index = 0; - thread_index < thread_count; - ++thread_index) { - char thread_string_buffer[64]; - snprintf(thread_string_buffer, sizeof(thread_string_buffer), "%d/%d", - thread_index, thread_count); - string thread_string = minidump_file + ":" + thread_string_buffer; - - MinidumpThread *thread = threads->GetThreadAtIndex(thread_index); - if (!thread) { - BPLOG(ERROR) << "Could not get thread for " << thread_string; - return PROCESS_ERROR; - } - - u_int32_t thread_id; - if (!thread->GetThreadID(&thread_id)) { - BPLOG(ERROR) << "Could not get thread ID for " << thread_string; - return PROCESS_ERROR; - } - - thread_string += " id " + HexString(thread_id); - BPLOG(INFO) << "Looking at thread " << thread_string; - - // If this thread is the thread that produced the minidump, don't process - // it. Because of the problems associated with a thread producing a - // dump of itself (when both its context and its stack are in flux), - // processing that stack wouldn't provide much useful data. - if (has_dump_thread && thread_id == dump_thread_id) { - continue; - } - - MinidumpContext *context = thread->GetContext(); - - if (has_requesting_thread && thread_id == requesting_thread_id) { - if (found_requesting_thread) { - // There can't be more than one requesting thread. - BPLOG(ERROR) << "Duplicate requesting thread: " << thread_string; - return PROCESS_ERROR; - } - - // Use processed_state->threads_.size() instead of thread_index. - // thread_index points to the thread index in the minidump, which - // might be greater than the thread index in the threads vector if - // any of the minidump's threads are skipped and not placed into the - // processed threads vector. The thread vector's current size will - // be the index of the current thread when it's pushed into the - // vector. - process_state->requesting_thread_ = process_state->threads_.size(); - - found_requesting_thread = true; - - if (process_state->crashed_) { - // Use the exception record's context for the crashed thread, instead - // of the thread's own context. For the crashed thread, the thread's - // own context is the state inside the exception handler. Using it - // would not result in the expected stack trace from the time of the - // crash. - context = exception->GetContext(); - } - } - - MinidumpMemoryRegion *thread_memory = thread->GetMemory(); - if (!thread_memory) { - BPLOG(ERROR) << "No memory region for " << thread_string; - return PROCESS_ERROR; - } - - // Use process_state->modules_ instead of module_list, because the - // |modules| argument will be used to populate the |module| fields in - // the returned StackFrame objects, which will be placed into the - // returned ProcessState object. module_list's lifetime is only as - // long as the Minidump object: it will be deleted when this function - // returns. process_state->modules_ is owned by the ProcessState object - // (just like the StackFrame objects), and is much more suitable for this - // task. - scoped_ptr stackwalker( - Stackwalker::StackwalkerForCPU(process_state->system_info(), - context, - thread_memory, - process_state->modules_, - supplier_, - resolver_)); - if (!stackwalker.get()) { - BPLOG(ERROR) << "No stackwalker for " << thread_string; - return PROCESS_ERROR; - } - - scoped_ptr stack(new CallStack()); - if (!stackwalker->Walk(stack.get())) { - BPLOG(INFO) << "Stackwalker interrupt (missing symbols?) at " << - thread_string; - interrupted = true; - } - process_state->threads_.push_back(stack.release()); - } - - if (interrupted) { - BPLOG(INFO) << "Processing interrupted for " << minidump_file; - return PROCESS_INTERRUPTED; - } - - // If a requesting thread was indicated, it must be present. - if (has_requesting_thread && !found_requesting_thread) { - // Don't mark as an error, but invalidate the requesting thread - BPLOG(ERROR) << "Minidump indicated requesting thread " << - HexString(requesting_thread_id) << ", not found in " << - minidump_file; - process_state->requesting_thread_ = -1; - } - - BPLOG(INFO) << "Processed " << minidump_file; - return PROCESS_OK; -} - -// Returns the MDRawSystemInfo from a minidump, or NULL if system info is -// not available from the minidump. If system_info is non-NULL, it is used -// to pass back the MinidumpSystemInfo object. -static const MDRawSystemInfo* GetSystemInfo(Minidump *dump, - MinidumpSystemInfo **system_info) { - MinidumpSystemInfo *minidump_system_info = dump->GetSystemInfo(); - if (!minidump_system_info) - return NULL; - - if (system_info) - *system_info = minidump_system_info; - - return minidump_system_info->system_info(); -} - -// static -bool MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) { - assert(dump); - assert(info); - - info->cpu.clear(); - info->cpu_info.clear(); - - MinidumpSystemInfo *system_info; - const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info); - if (!raw_system_info) - return false; - - switch (raw_system_info->processor_architecture) { - case MD_CPU_ARCHITECTURE_X86: - case MD_CPU_ARCHITECTURE_AMD64: { - if (raw_system_info->processor_architecture == - MD_CPU_ARCHITECTURE_X86) - info->cpu = "x86"; - else - info->cpu = "amd64"; - - const string *cpu_vendor = system_info->GetCPUVendor(); - if (cpu_vendor) { - info->cpu_info = *cpu_vendor; - info->cpu_info.append(" "); - } - - char x86_info[36]; - snprintf(x86_info, sizeof(x86_info), "family %u model %u stepping %u", - raw_system_info->processor_level, - raw_system_info->processor_revision >> 8, - raw_system_info->processor_revision & 0xff); - info->cpu_info.append(x86_info); - break; - } - - case MD_CPU_ARCHITECTURE_PPC: { - info->cpu = "ppc"; - break; - } - - case MD_CPU_ARCHITECTURE_SPARC: { - info->cpu = "sparc"; - break; - } - - default: { - // Assign the numeric architecture ID into the CPU string. - char cpu_string[7]; - snprintf(cpu_string, sizeof(cpu_string), "0x%04x", - raw_system_info->processor_architecture); - info->cpu = cpu_string; - break; - } - } - - info->cpu_count = raw_system_info->number_of_processors; - - return true; -} - -// static -bool MinidumpProcessor::GetOSInfo(Minidump *dump, SystemInfo *info) { - assert(dump); - assert(info); - - info->os.clear(); - info->os_short.clear(); - info->os_version.clear(); - - MinidumpSystemInfo *system_info; - const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, &system_info); - if (!raw_system_info) - return false; - - info->os_short = system_info->GetOS(); - - switch (raw_system_info->platform_id) { - case MD_OS_WIN32_NT: { - info->os = "Windows NT"; - break; - } - - case MD_OS_WIN32_WINDOWS: { - info->os = "Windows"; - break; - } - - case MD_OS_MAC_OS_X: { - info->os = "Mac OS X"; - break; - } - - case MD_OS_LINUX: { - info->os = "Linux"; - break; - } - - case MD_OS_SOLARIS: { - info->os = "Solaris"; - break; - } - - default: { - // Assign the numeric platform ID into the OS string. - char os_string[11]; - snprintf(os_string, sizeof(os_string), "0x%08x", - raw_system_info->platform_id); - info->os = os_string; - break; - } - } - - char os_version_string[33]; - snprintf(os_version_string, sizeof(os_version_string), "%u.%u.%u", - raw_system_info->major_version, - raw_system_info->minor_version, - raw_system_info->build_number); - info->os_version = os_version_string; - - const string *csd_version = system_info->GetCSDVersion(); - if (csd_version) { - info->os_version.append(" "); - info->os_version.append(*csd_version); - } - - return true; -} - -// static -string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) { - MinidumpException *exception = dump->GetException(); - if (!exception) - return ""; - - const MDRawExceptionStream *raw_exception = exception->exception(); - if (!raw_exception) - return ""; - - if (address) - *address = raw_exception->exception_record.exception_address; - - // The reason value is OS-specific and possibly CPU-specific. Set up - // sensible numeric defaults for the reason string in case we can't - // map the codes to a string (because there's no system info, or because - // it's an unrecognized platform, or because it's an unrecognized code.) - char reason_string[24]; - u_int32_t exception_code = raw_exception->exception_record.exception_code; - u_int32_t exception_flags = raw_exception->exception_record.exception_flags; - snprintf(reason_string, sizeof(reason_string), "0x%08x / 0x%08x", - exception_code, exception_flags); - string reason = reason_string; - - const MDRawSystemInfo *raw_system_info = GetSystemInfo(dump, NULL); - if (!raw_system_info) - return reason; - - switch (raw_system_info->platform_id) { - case MD_OS_MAC_OS_X: { - char flags_string[11]; - snprintf(flags_string, sizeof(flags_string), "0x%08x", exception_flags); - switch (exception_code) { - case MD_EXCEPTION_MAC_BAD_ACCESS: - reason = "EXC_BAD_ACCESS / "; - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_INVALID_ADDRESS: - reason.append("KERN_INVALID_ADDRESS"); - break; - case MD_EXCEPTION_CODE_MAC_PROTECTION_FAILURE: - reason.append("KERN_PROTECTION_FAILURE"); - break; - case MD_EXCEPTION_CODE_MAC_NO_ACCESS: - reason.append("KERN_NO_ACCESS"); - break; - case MD_EXCEPTION_CODE_MAC_MEMORY_FAILURE: - reason.append("KERN_MEMORY_FAILURE"); - break; - case MD_EXCEPTION_CODE_MAC_MEMORY_ERROR: - reason.append("KERN_MEMORY_ERROR"); - break; - // These are ppc only but shouldn't be a problem as they're - // unused on x86 - case MD_EXCEPTION_CODE_MAC_PPC_VM_PROT_READ: - reason.append("EXC_PPC_VM_PROT_READ"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_BADSPACE: - reason.append("EXC_PPC_BADSPACE"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_UNALIGNED: - reason.append("EXC_PPC_UNALIGNED"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - case MD_EXCEPTION_MAC_BAD_INSTRUCTION: - reason = "EXC_BAD_INSTRUCTION / "; - switch (raw_system_info->processor_architecture) { - case MD_CPU_ARCHITECTURE_PPC: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_PPC_INVALID_SYSCALL: - reason.append("EXC_PPC_INVALID_SYSCALL"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_UNIMPLEMENTED_INSTRUCTION: - reason.append("EXC_PPC_UNIPL_INST"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_INSTRUCTION: - reason.append("EXC_PPC_PRIVINST"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_PRIVILEGED_REGISTER: - reason.append("EXC_PPC_PRIVREG"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_TRACE: - reason.append("EXC_PPC_TRACE"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_PERFORMANCE_MONITOR: - reason.append("EXC_PPC_PERFMON"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - case MD_CPU_ARCHITECTURE_X86: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION: - reason.append("EXC_I386_INVOP"); - break; - case MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT: - reason.append("EXC_INVTSSFLT"); - break; - case MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT: - reason.append("EXC_SEGNPFLT"); - break; - case MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT: - reason.append("EXC_STKFLT"); - break; - case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT: - reason.append("EXC_GPFLT"); - break; - case MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT: - reason.append("EXC_ALIGNFLT"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - case MD_EXCEPTION_MAC_ARITHMETIC: - reason = "EXC_ARITHMETIC / "; - switch (raw_system_info->processor_architecture) { - case MD_CPU_ARCHITECTURE_PPC: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_PPC_OVERFLOW: - reason.append("EXC_PPC_OVERFLOW"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_ZERO_DIVIDE: - reason.append("EXC_PPC_ZERO_DIVIDE"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_INEXACT: - reason.append("EXC_FLT_INEXACT"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_ZERO_DIVIDE: - reason.append("EXC_PPC_FLT_ZERO_DIVIDE"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_UNDERFLOW: - reason.append("EXC_PPC_FLT_UNDERFLOW"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_OVERFLOW: - reason.append("EXC_PPC_FLT_OVERFLOW"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_FLOAT_NOT_A_NUMBER: - reason.append("EXC_PPC_FLT_NOT_A_NUMBER"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_NO_EMULATION: - reason.append("EXC_PPC_NOEMULATION"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST: - reason.append("EXC_PPC_ALTIVECASSIST"); - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - case MD_CPU_ARCHITECTURE_X86: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_X86_DIV: - reason.append("EXC_I386_DIV"); - break; - case MD_EXCEPTION_CODE_MAC_X86_INTO: - reason.append("EXC_I386_INTO"); - break; - case MD_EXCEPTION_CODE_MAC_X86_NOEXT: - reason.append("EXC_I386_NOEXT"); - break; - case MD_EXCEPTION_CODE_MAC_X86_EXTOVR: - reason.append("EXC_I386_EXTOVR"); - break; - case MD_EXCEPTION_CODE_MAC_X86_EXTERR: - reason.append("EXC_I386_EXTERR"); - break; - case MD_EXCEPTION_CODE_MAC_X86_EMERR: - reason.append("EXC_I386_EMERR"); - break; - case MD_EXCEPTION_CODE_MAC_X86_BOUND: - reason.append("EXC_I386_BOUND"); - break; - case MD_EXCEPTION_CODE_MAC_X86_SSEEXTERR: - reason.append("EXC_I386_SSEEXTERR"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - case MD_EXCEPTION_MAC_EMULATION: - reason = "EXC_EMULATION / "; - reason.append(flags_string); - break; - case MD_EXCEPTION_MAC_SOFTWARE: - reason = "EXC_SOFTWARE / "; - switch (exception_flags) { - // These are ppc only but shouldn't be a problem as they're - // unused on x86 - case MD_EXCEPTION_CODE_MAC_PPC_TRAP: - reason.append("EXC_PPC_TRAP"); - break; - case MD_EXCEPTION_CODE_MAC_PPC_MIGRATE: - reason.append("EXC_PPC_MIGRATE"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - case MD_EXCEPTION_MAC_BREAKPOINT: - reason = "EXC_BREAKPOINT / "; - switch (raw_system_info->processor_architecture) { - case MD_CPU_ARCHITECTURE_PPC: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_PPC_BREAKPOINT: - reason.append("EXC_PPC_BREAKPOINT"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - case MD_CPU_ARCHITECTURE_X86: { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_X86_SGL: - reason.append("EXC_I386_SGL"); - break; - case MD_EXCEPTION_CODE_MAC_X86_BPT: - reason.append("EXC_I386_BPT"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - case MD_EXCEPTION_MAC_SYSCALL: - reason = "EXC_SYSCALL / "; - reason.append(flags_string); - break; - case MD_EXCEPTION_MAC_MACH_SYSCALL: - reason = "EXC_MACH_SYSCALL / "; - reason.append(flags_string); - break; - case MD_EXCEPTION_MAC_RPC_ALERT: - reason = "EXC_RPC_ALERT / "; - reason.append(flags_string); - break; - } - break; - } - - case MD_OS_WIN32_NT: - case MD_OS_WIN32_WINDOWS: { - switch (exception_code) { - case MD_EXCEPTION_CODE_WIN_CONTROL_C: - reason = "DBG_CONTROL_C"; - break; - case MD_EXCEPTION_CODE_WIN_GUARD_PAGE_VIOLATION: - reason = "EXCEPTION_GUARD_PAGE"; - break; - case MD_EXCEPTION_CODE_WIN_DATATYPE_MISALIGNMENT: - reason = "EXCEPTION_DATATYPE_MISALIGNMENT"; - break; - case MD_EXCEPTION_CODE_WIN_BREAKPOINT: - reason = "EXCEPTION_BREAKPOINT"; - break; - case MD_EXCEPTION_CODE_WIN_SINGLE_STEP: - reason = "EXCEPTION_SINGLE_STEP"; - break; - case MD_EXCEPTION_CODE_WIN_ACCESS_VIOLATION: - // For EXCEPTION_ACCESS_VIOLATION, Windows puts the address that - // caused the fault in exception_information[1]. - // exception_information[0] is 0 if the violation was caused by - // an attempt to read data and 1 if it was an attempt to write - // data. - // This information is useful in addition to the code address, which - // will be present in the crash thread's instruction field anyway. - reason = "EXCEPTION_ACCESS_VIOLATION"; - if (address && - raw_exception->exception_record.number_parameters >= 2) { - *address = - raw_exception->exception_record.exception_information[1]; - } - break; - case MD_EXCEPTION_CODE_WIN_IN_PAGE_ERROR: - reason = "EXCEPTION_IN_PAGE_ERROR"; - break; - case MD_EXCEPTION_CODE_WIN_INVALID_HANDLE: - reason = "EXCEPTION_INVALID_HANDLE"; - break; - case MD_EXCEPTION_CODE_WIN_ILLEGAL_INSTRUCTION: - reason = "EXCEPTION_ILLEGAL_INSTRUCTION"; - break; - case MD_EXCEPTION_CODE_WIN_NONCONTINUABLE_EXCEPTION: - reason = "EXCEPTION_NONCONTINUABLE_EXCEPTION"; - break; - case MD_EXCEPTION_CODE_WIN_INVALID_DISPOSITION: - reason = "EXCEPTION_INVALID_DISPOSITION"; - break; - case MD_EXCEPTION_CODE_WIN_ARRAY_BOUNDS_EXCEEDED: - reason = "EXCEPTION_BOUNDS_EXCEEDED"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_DENORMAL_OPERAND: - reason = "EXCEPTION_FLT_DENORMAL_OPERAND"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_DIVIDE_BY_ZERO: - reason = "EXCEPTION_FLT_DIVIDE_BY_ZERO"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_INEXACT_RESULT: - reason = "EXCEPTION_FLT_INEXACT_RESULT"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_INVALID_OPERATION: - reason = "EXCEPTION_FLT_INVALID_OPERATION"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_OVERFLOW: - reason = "EXCEPTION_FLT_OVERFLOW"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_STACK_CHECK: - reason = "EXCEPTION_FLT_STACK_CHECK"; - break; - case MD_EXCEPTION_CODE_WIN_FLOAT_UNDERFLOW: - reason = "EXCEPTION_FLT_UNDERFLOW"; - break; - case MD_EXCEPTION_CODE_WIN_INTEGER_DIVIDE_BY_ZERO: - reason = "EXCEPTION_INT_DIVIDE_BY_ZERO"; - break; - case MD_EXCEPTION_CODE_WIN_INTEGER_OVERFLOW: - reason = "EXCEPTION_INT_OVERFLOW"; - break; - case MD_EXCEPTION_CODE_WIN_PRIVILEGED_INSTRUCTION: - reason = "EXCEPTION_PRIV_INSTRUCTION"; - break; - case MD_EXCEPTION_CODE_WIN_STACK_OVERFLOW: - reason = "EXCEPTION_STACK_OVERFLOW"; - break; - case MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK: - reason = "EXCEPTION_POSSIBLE_DEADLOCK"; - break; - default: - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - - case MD_OS_LINUX: { - switch (exception_code) { - case MD_EXCEPTION_CODE_LIN_SIGHUP: - reason = "SIGHUP"; - break; - case MD_EXCEPTION_CODE_LIN_SIGINT: - reason = "SIGINT"; - break; - case MD_EXCEPTION_CODE_LIN_SIGQUIT: - reason = "SIGQUIT"; - break; - case MD_EXCEPTION_CODE_LIN_SIGILL: - reason = "SIGILL"; - break; - case MD_EXCEPTION_CODE_LIN_SIGTRAP: - reason = "SIGTRAP"; - break; - case MD_EXCEPTION_CODE_LIN_SIGABRT: - reason = "SIGABRT"; - break; - case MD_EXCEPTION_CODE_LIN_SIGBUS: - reason = "SIGBUS"; - break; - case MD_EXCEPTION_CODE_LIN_SIGFPE: - reason = "SIGFPE"; - break; - case MD_EXCEPTION_CODE_LIN_SIGKILL: - reason = "SIGKILL"; - break; - case MD_EXCEPTION_CODE_LIN_SIGUSR1: - reason = "SIGUSR1"; - break; - case MD_EXCEPTION_CODE_LIN_SIGSEGV: - reason = "SIGSEGV"; - break; - case MD_EXCEPTION_CODE_LIN_SIGUSR2: - reason = "SIGUSR2"; - break; - case MD_EXCEPTION_CODE_LIN_SIGPIPE: - reason = "SIGPIPE"; - break; - case MD_EXCEPTION_CODE_LIN_SIGALRM: - reason = "SIGALRM"; - break; - case MD_EXCEPTION_CODE_LIN_SIGTERM: - reason = "SIGTERM"; - break; - case MD_EXCEPTION_CODE_LIN_SIGSTKFLT: - reason = "SIGSTKFLT"; - break; - case MD_EXCEPTION_CODE_LIN_SIGCHLD: - reason = "SIGCHLD"; - break; - case MD_EXCEPTION_CODE_LIN_SIGCONT: - reason = "SIGCONT"; - break; - case MD_EXCEPTION_CODE_LIN_SIGSTOP: - reason = "SIGSTOP"; - break; - case MD_EXCEPTION_CODE_LIN_SIGTSTP: - reason = "SIGTSTP"; - break; - case MD_EXCEPTION_CODE_LIN_SIGTTIN: - reason = "SIGTTIN"; - break; - case MD_EXCEPTION_CODE_LIN_SIGTTOU: - reason = "SIGTTOU"; - break; - case MD_EXCEPTION_CODE_LIN_SIGURG: - reason = "SIGURG"; - break; - case MD_EXCEPTION_CODE_LIN_SIGXCPU: - reason = "SIGXCPU"; - break; - case MD_EXCEPTION_CODE_LIN_SIGXFSZ: - reason = "SIGXFSZ"; - break; - case MD_EXCEPTION_CODE_LIN_SIGVTALRM: - reason = "SIGVTALRM"; - break; - case MD_EXCEPTION_CODE_LIN_SIGPROF: - reason = "SIGPROF"; - break; - case MD_EXCEPTION_CODE_LIN_SIGWINCH: - reason = "SIGWINCH"; - break; - case MD_EXCEPTION_CODE_LIN_SIGIO: - reason = "SIGIO"; - break; - case MD_EXCEPTION_CODE_LIN_SIGPWR: - reason = "SIGPWR"; - break; - case MD_EXCEPTION_CODE_LIN_SIGSYS: - reason = "SIGSYS"; - break; - default: - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - - case MD_OS_SOLARIS: { - switch (exception_code) { - case MD_EXCEPTION_CODE_SOL_SIGHUP: - reason = "SIGHUP"; - break; - case MD_EXCEPTION_CODE_SOL_SIGINT: - reason = "SIGINT"; - break; - case MD_EXCEPTION_CODE_SOL_SIGQUIT: - reason = "SIGQUIT"; - break; - case MD_EXCEPTION_CODE_SOL_SIGILL: - reason = "SIGILL"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTRAP: - reason = "SIGTRAP"; - break; - case MD_EXCEPTION_CODE_SOL_SIGIOT: - reason = "SIGIOT | SIGABRT"; - break; - case MD_EXCEPTION_CODE_SOL_SIGEMT: - reason = "SIGEMT"; - break; - case MD_EXCEPTION_CODE_SOL_SIGFPE: - reason = "SIGFPE"; - break; - case MD_EXCEPTION_CODE_SOL_SIGKILL: - reason = "SIGKILL"; - break; - case MD_EXCEPTION_CODE_SOL_SIGBUS: - reason = "SIGBUS"; - break; - case MD_EXCEPTION_CODE_SOL_SIGSEGV: - reason = "SIGSEGV"; - break; - case MD_EXCEPTION_CODE_SOL_SIGSYS: - reason = "SIGSYS"; - break; - case MD_EXCEPTION_CODE_SOL_SIGPIPE: - reason = "SIGPIPE"; - break; - case MD_EXCEPTION_CODE_SOL_SIGALRM: - reason = "SIGALRM"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTERM: - reason = "SIGTERM"; - break; - case MD_EXCEPTION_CODE_SOL_SIGUSR1: - reason = "SIGUSR1"; - break; - case MD_EXCEPTION_CODE_SOL_SIGUSR2: - reason = "SIGUSR2"; - break; - case MD_EXCEPTION_CODE_SOL_SIGCLD: - reason = "SIGCLD | SIGCHLD"; - break; - case MD_EXCEPTION_CODE_SOL_SIGPWR: - reason = "SIGPWR"; - break; - case MD_EXCEPTION_CODE_SOL_SIGWINCH: - reason = "SIGWINCH"; - break; - case MD_EXCEPTION_CODE_SOL_SIGURG: - reason = "SIGURG"; - break; - case MD_EXCEPTION_CODE_SOL_SIGPOLL: - reason = "SIGPOLL | SIGIO"; - break; - case MD_EXCEPTION_CODE_SOL_SIGSTOP: - reason = "SIGSTOP"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTSTP: - reason = "SIGTSTP"; - break; - case MD_EXCEPTION_CODE_SOL_SIGCONT: - reason = "SIGCONT"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTTIN: - reason = "SIGTTIN"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTTOU: - reason = "SIGTTOU"; - break; - case MD_EXCEPTION_CODE_SOL_SIGVTALRM: - reason = "SIGVTALRM"; - break; - case MD_EXCEPTION_CODE_SOL_SIGPROF: - reason = "SIGPROF"; - break; - case MD_EXCEPTION_CODE_SOL_SIGXCPU: - reason = "SIGXCPU"; - break; - case MD_EXCEPTION_CODE_SOL_SIGXFSZ: - reason = "SIGXFSZ"; - break; - case MD_EXCEPTION_CODE_SOL_SIGWAITING: - reason = "SIGWAITING"; - break; - case MD_EXCEPTION_CODE_SOL_SIGLWP: - reason = "SIGLWP"; - break; - case MD_EXCEPTION_CODE_SOL_SIGFREEZE: - reason = "SIGFREEZE"; - break; - case MD_EXCEPTION_CODE_SOL_SIGTHAW: - reason = "SIGTHAW"; - break; - case MD_EXCEPTION_CODE_SOL_SIGCANCEL: - reason = "SIGCANCEL"; - break; - case MD_EXCEPTION_CODE_SOL_SIGLOST: - reason = "SIGLOST"; - break; - case MD_EXCEPTION_CODE_SOL_SIGXRES: - reason = "SIGXRES"; - break; - case MD_EXCEPTION_CODE_SOL_SIGJVM1: - reason = "SIGJVM1"; - break; - case MD_EXCEPTION_CODE_SOL_SIGJVM2: - reason = "SIGJVM2"; - break; - default: - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - break; - } - - default: { - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } - } - - return reason; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_processor_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/minidump_processor_unittest.cc deleted file mode 100644 index bf8a8989..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_processor_unittest.cc +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Unit test for MinidumpProcessor. Uses a pre-generated minidump and -// corresponding symbol file, and checks the stack frames for correctness. - -#include -#include -#include -#include -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/minidump_processor.h" -#include "google_breakpad/processor/process_state.h" -#include "google_breakpad/processor/stack_frame.h" -#include "google_breakpad/processor/symbol_supplier.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" - -namespace { - -using std::string; -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CallStack; -using google_breakpad::CodeModule; -using google_breakpad::MinidumpProcessor; -using google_breakpad::ProcessState; -using google_breakpad::scoped_ptr; -using google_breakpad::SymbolSupplier; -using google_breakpad::SystemInfo; - -static const char *kSystemInfoOS = "Windows NT"; -static const char *kSystemInfoOSShort = "windows"; -static const char *kSystemInfoOSVersion = "5.1.2600 Service Pack 2"; -static const char *kSystemInfoCPU = "x86"; -static const char *kSystemInfoCPUInfo = - "GenuineIntel family 6 model 13 stepping 8"; - -#define ASSERT_TRUE(cond) \ - if (!(cond)) { \ - fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \ - return false; \ - } - -#define ASSERT_FALSE(cond) ASSERT_TRUE(!(cond)) - -#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2)) - -// Use ASSERT_*_ABORT in functions that can't return a boolean. -#define ASSERT_TRUE_ABORT(cond) \ - if (!(cond)) { \ - fprintf(stderr, "FAILED: %s at %s:%d\n", #cond, __FILE__, __LINE__); \ - abort(); \ - } - -#define ASSERT_EQ_ABORT(e1, e2) ASSERT_TRUE_ABORT((e1) == (e2)) - -class TestSymbolSupplier : public SymbolSupplier { - public: - TestSymbolSupplier() : interrupt_(false) {} - - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file); - - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data); - - // When set to true, causes the SymbolSupplier to return INTERRUPT - void set_interrupt(bool interrupt) { interrupt_ = interrupt; } - - private: - bool interrupt_; -}; - -SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile( - const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file) { - ASSERT_TRUE_ABORT(module); - ASSERT_TRUE_ABORT(system_info); - ASSERT_EQ_ABORT(system_info->cpu, kSystemInfoCPU); - ASSERT_EQ_ABORT(system_info->cpu_info, kSystemInfoCPUInfo); - ASSERT_EQ_ABORT(system_info->os, kSystemInfoOS); - ASSERT_EQ_ABORT(system_info->os_short, kSystemInfoOSShort); - ASSERT_EQ_ABORT(system_info->os_version, kSystemInfoOSVersion); - - if (interrupt_) { - return INTERRUPT; - } - - if (module && module->code_file() == "c:\\test_app.exe") { - *symbol_file = string(getenv("srcdir") ? getenv("srcdir") : ".") + - "/src/processor/testdata/symbols/test_app.pdb/" + - module->debug_identifier() + - "/test_app.sym"; - return FOUND; - } - - return NOT_FOUND; -} - -SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile( - const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data) { - SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, - symbol_file); - if (s == FOUND) { - std::ifstream in(symbol_file->c_str()); - std::getline(in, *symbol_data, std::string::traits_type::to_char_type( - std::string::traits_type::eof())); - in.close(); - } - - return s; -} - -static bool RunTests() { - TestSymbolSupplier supplier; - BasicSourceLineResolver resolver; - MinidumpProcessor processor(&supplier, &resolver); - - string minidump_file = string(getenv("srcdir") ? getenv("srcdir") : ".") + - "/src/processor/testdata/minidump2.dmp"; - - ProcessState state; - ASSERT_EQ(processor.Process(minidump_file, &state), - MinidumpProcessor::PROCESS_OK); - ASSERT_EQ(state.system_info()->os, kSystemInfoOS); - ASSERT_EQ(state.system_info()->os_short, kSystemInfoOSShort); - ASSERT_EQ(state.system_info()->os_version, kSystemInfoOSVersion); - ASSERT_EQ(state.system_info()->cpu, kSystemInfoCPU); - ASSERT_EQ(state.system_info()->cpu_info, kSystemInfoCPUInfo); - ASSERT_TRUE(state.crashed()); - ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION"); - ASSERT_EQ(state.crash_address(), 0x45); - ASSERT_EQ(state.threads()->size(), 1); - ASSERT_EQ(state.requesting_thread(), 0); - - CallStack *stack = state.threads()->at(0); - ASSERT_TRUE(stack); - ASSERT_EQ(stack->frames()->size(), 4); - - ASSERT_TRUE(stack->frames()->at(0)->module); - ASSERT_EQ(stack->frames()->at(0)->module->base_address(), 0x400000); - ASSERT_EQ(stack->frames()->at(0)->module->code_file(), "c:\\test_app.exe"); - ASSERT_EQ(stack->frames()->at(0)->function_name, - "`anonymous namespace'::CrashFunction"); - ASSERT_EQ(stack->frames()->at(0)->source_file_name, "c:\\test_app.cc"); - ASSERT_EQ(stack->frames()->at(0)->source_line, 58); - - ASSERT_TRUE(stack->frames()->at(1)->module); - ASSERT_EQ(stack->frames()->at(1)->module->base_address(), 0x400000); - ASSERT_EQ(stack->frames()->at(1)->module->code_file(), "c:\\test_app.exe"); - ASSERT_EQ(stack->frames()->at(1)->function_name, "main"); - ASSERT_EQ(stack->frames()->at(1)->source_file_name, "c:\\test_app.cc"); - ASSERT_EQ(stack->frames()->at(1)->source_line, 65); - - // This comes from the CRT - ASSERT_TRUE(stack->frames()->at(2)->module); - ASSERT_EQ(stack->frames()->at(2)->module->base_address(), 0x400000); - ASSERT_EQ(stack->frames()->at(2)->module->code_file(), "c:\\test_app.exe"); - ASSERT_EQ(stack->frames()->at(2)->function_name, "__tmainCRTStartup"); - ASSERT_EQ(stack->frames()->at(2)->source_file_name, - "f:\\sp\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c"); - ASSERT_EQ(stack->frames()->at(2)->source_line, 327); - - // No debug info available for kernel32.dll - ASSERT_TRUE(stack->frames()->at(3)->module); - ASSERT_EQ(stack->frames()->at(3)->module->base_address(), 0x7c800000); - ASSERT_EQ(stack->frames()->at(3)->module->code_file(), - "C:\\WINDOWS\\system32\\kernel32.dll"); - ASSERT_TRUE(stack->frames()->at(3)->function_name.empty()); - ASSERT_TRUE(stack->frames()->at(3)->source_file_name.empty()); - ASSERT_EQ(stack->frames()->at(3)->source_line, 0); - - ASSERT_EQ(state.modules()->module_count(), 13); - ASSERT_TRUE(state.modules()->GetMainModule()); - ASSERT_EQ(state.modules()->GetMainModule()->code_file(), "c:\\test_app.exe"); - ASSERT_FALSE(state.modules()->GetModuleForAddress(0)); - ASSERT_EQ(state.modules()->GetMainModule(), - state.modules()->GetModuleForAddress(0x400000)); - ASSERT_EQ(state.modules()->GetModuleForAddress(0x7c801234)->debug_file(), - "kernel32.pdb"); - ASSERT_EQ(state.modules()->GetModuleForAddress(0x77d43210)->version(), - "5.1.2600.2622"); - - // Test that the symbol supplier can interrupt processing - state.Clear(); - supplier.set_interrupt(true); - ASSERT_EQ(processor.Process(minidump_file, &state), - MinidumpProcessor::PROCESS_INTERRUPTED); - - return true; -} - -} // namespace - -int main(int argc, char *argv[]) { - BPLOG_INIT(&argc, &argv); - - if (!RunTests()) { - return 1; - } - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk b/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk deleted file mode 100644 index 588778670b6911c99e68be41e6d2621760e76135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458288 zcmeFa3wRVo);FGn0Y->U(5#}eifdLuyb#1oHmD)efM^tz0bO+C6)%g5Fe9Lj1baqk zo0ceK)fGQ+WfhfOQBhGrlNghrtOi6t7ZntB#$go^0hKl1?{}(tre`MX>U;UW|L=KT zo`+0#^{G>*PMve=RMn}fx4!?!k6rWf@;c#v0sile|MR-!DWpX%yS#s#B1-RXQ;n$B-*K<@LHeFKG(X(e9DdXs>dTve zuQdUmv_%Tg^T75jM&+ujhYTJy*z=(`TA>#2Y*YNYa>QT$tFFG{($J;qS-t1xAIJ~L z@8w-Ohv1kx{)%);HVp$oLoa+D_%Cr>cf%Fc*Ptb;$Az!IJf|KbfulcgjLgEZSGri_ z$(F0ky3_#2TvVb4I4INZKeR>aUv>3WmtS6e<&?{>oDixGU3yt|U5XF)<=r<8yx#9$ z@k8kF;LN0>{!hNVo@kExdot-rWxzvq^<|SLc@nbeSpTRmuh8?|eWV@$raXSg+}2i+r4GH~=iyFh67 z)|)i-#D9K&2uzxJUgx}pPv+Ak<&9)I{;h%F@c$S9_XCU=0QD*7@2slMd8eU((6G*V zuX(=igJ;S$+u^wIq>0Ckzvi;zu28A~Gbl9d*zc1A-@c;zjJ#V8nSc4iO{cS7q=EFZ z34ZcFBJAKF%cg#^zS0&x)tV`KK+~kq6_@wxckGGBg0^ceQ}kx!5o+?&bpRB#VA8Rr zZWgJdH&3Vh8&G0qp7WC-5=4-xKeRwBc3ga&wo0n$|Danfu{i82$dz^(| z(7yOhpD)j@`3isAH>xzd<|BEl&G;8Yaa&HdE>;=G?r7*_g?CwNt;lZcZOhmk-p4VU z&*+qA`AXtP1HWx-wn8O-l;?BI75c+|_}~o7w=dpqhj-bL-78)jcWmI$sIUR}&zJJY znp=vI&F`4gm<ID7f#x-V6#g+*%jnV_sZs`6qe^_F_oF&rUh=dQIt6cceUaUfJ#xF%)_1G9s~}L>TDErb zDJ?@v*uCU|*M8K{XALTe&jte47TvMd0VZSx7Bt92UX52^A?f6HyUVw|$PupZ8 z+n^G1D83O%$u_GwxzbzT(dSR!au#Z#_!_IXViSNOG{S1M^X!TutGJ}St;Lwh>a-ZM z_yZVYZfIWx;1>YPm}v!P*>%in7uXdlm4Nq!yE#{Gmx_(6b&MretPfzE;CfW6#h6EY zR-KM!g2yCV*s|6a3Js z>+b<<6TtNv5W_iO?1S%i9XU)<03+j12-Fe{)fEJ`8}n>qUYT)UAbQ4+1lO$@oM%@Q zQx8;%YVc-C2ZgV_%`)cO##}47zz)ue)!W9*KwZP}#{A=h3-)RY%&kAHA@KYP%L$Q! zE_Ows$`hNycVoU)cPk%)3-TqUhrF8d+-}MXbJYp`6}>0{(5Ln`of0Dh%q_ln11N zwYxaMR=c9NRY#FXVRVcp$s>s|idB3W^8k8{9ciNO)KMx^8EknK651@0Y?lNdNeHhL zbd-2&Yy3u{iV4$%3()OBG#mKsFXm%NNrf$JLM2WH|L~zi1N71W1Igb}B}d!A8hkC5 z)LTo6AOU@BBZ@D*kzA-VDWf!`q^E7H1O!a$1DK7VDVYwt;RHXDdeqUtP<(!03uz3m zv|oM)a%6s4SoUKeT7^b%hKhv)l$fEq*)&6e*#p=iy_sX*+#IDkM{mh-i6_UG_>$NwH%I$jimH1gM};THGUm7?H^<*}j(sGDSOiVg zoy@Tlt(8@e2Xu}a$sziwb6mh2*W{LQjm|NhO|Q(8&T#~DT$@|QNjk?jl0%Gz&aoX| z5*u=Jbk;d;kQ~E3HE(2&3vzS3<0xKz$Q)v$*&ggqYMG-2$ySRk8s!9G+XfM5v4R*1 z2-~1-D}R=95{MlH^X{>413kb83NY=P3;Z(V-4+!W8+Wt^cnheazPrHTixq9kF1UKt zEKsy@3T3#Ez3#YK=vG^j+p`+%3nZh*{6L#Y&B!N#BDo?9^i>5q%Z>?6njbX)O@v8g zOX7O`WM#TjG6iNIg->=&YOXU5W5)e*b6lWvyh&>u6UOQszhI6fNJdfbtDi^Z#}?z| z1koD}AtlACA(jJ^ZLl}eyp4_kcou;PTeb9Y_+-Z9(LG+7fc?!5l z3ShtJ7BDflJ~MRzWAMq2Np@X;!2(1NAxbo*P7poxC{F=DAg^t(hyE7@9GOvoWY-03 z#uq7ohO9-IvhfOie7>MwnMNIJ5y7J+c7pIduJF(?Nr35lXptK4@jWi`0FDqq`W`O9 zzrxonmfr*~l;*K3KG`wJt_eP#1aB3VCvGI#mgFCj-(+P!NoSub*@aAk%!E7IMR+gg{t2W2*zv zhnT;>32$Ie4@W}$8r#@lPuY%+Jl2kK;d(idPej^acTTn_!W(S6b|yMhIInM6RZW4| zJH!*LcdFX#O44{9J7}L(HPb3AX=8$YpdB<6n|ejf_Rl2x)VQ3Xw9iB|C5BBvNTx_4~Klt39sA-X7{#r?fNCc`-jFNJs z;&rHzD;2NcIV}~jFCfcV<2iSvl9Eq0b{~6iiG8Ebp6a)POVCi3vDiMNw_~igj9Rm? zmsPbi-t;xAx*qOgzwqLNBTGOZ>RQaYhDv%uj(dSN<$sMTDZ;ZW#fmd%tzXhwRMk3> zk6m_mo52QKuUQg34Af@%R%Lf6A4@HT*Tll6%nb4Te7E~O zRbaGkh3c{@aU-y@6S$c+xoSS$E9zS*X&Z+$nEt8A7ij(Lm)%tJ5k4dxkvG_v?ilNJ2jt>AsE;B){$kJ*u-g3;{|j4aHHk&6|0 z51(w~J{R)@Vt$=+)M6X8?9qdBU5=2G+J7U`hjNjQ)kvd6S~b_@%E3fB0ci>P4~bzU zyd_bMgyhb|YW!F&j-gDhv5-}21Rhvj>4#}}1JMD1%BsPax2qZ)fKPUCq07&|B5$G- zaX)~Wqzc{NnOnwNu(rV_=}=Us*J7+h!(+Cl@7jhR3t~I0F!=ErQW8sH%To5lXxl@7 z=a|=?EY`vYrDKN^?=Je^G8;K6{LxUG6!(`wc5OcuXH4D})FGu1Mzj1ovo-y9&6SNUDE3g~W+5Cvnjd z(2`}H#@8qb+>2yt79EFNiCwTxuKYOWW5kb=;0lXyt6Z@o*<8W4(iQgYTpwKsfw&4u z3kw3#gMkqAJLY0!wZ{yKkNKj#-EH+Jp-t&lk97mA^6b>#-2Sl5zPpuj-r$&XfG^$+ z$jHM#P!KBvvA=-Y^n5MKCFH#<`Q8o47k@ti_oFTHFHQq%fP{9BR0TARfGMcj-3ifsJ%ZU%7a3QS`YcsYSZr4yxutR=mfZVwbi z428^H`Qx8KH4rbptEt-)fht&cmRO2=zR%Em@j$UrFA+oCLhQGsuQ5V?917L zRZGbO`ZhtpCeA@x7Wg=Y^G+A%F@)pjRy>qM6`wdwP^;u!#-CR6`DQbE3H%#7eG9FO zCG(omeG_8&uyD%V&3ZcClmH`0UInncgYS{4PH*q!F1gP`Hbk zz!oyP7#Usbyf={uJvCG5xcrl%+G^JOG5BL~?4E{^W_RrOpf3GwsI;f|dG%(%sIlL( z#dr?HFc+7qX`y|tj5yIlFuS%Fvw%Wzij)7bTfy`S_-UZPrS1ko2umEZ4LNOxKsCVc z%vrB%l&azmP1y-)v{Es%zNZyqi`wV*#I%998f8*iz&u2VBvRXVr!BKV@tb$xP1a9z zL*4A_H??O&djZDVvyTCFN-(tDcPlU`hEZEhXq-#>5~!79_86er_DQ^9ikuS=YPpNh z^ID8rid2g+mp@qUYEUa47?fkhqZYob&XZp2njeTA3leObOtz|)s7W+ErlWwJh-Oqu zTNYjth`mj*ka{_hO&s^phu>FVWGRX;?*Yc`hHD+OMe}iIN{~Ix6T6gsy@GngizV zVK;5xGrF<zM~*BR(0miCV;%)Sy1vFN_|we>M2nLsp+m5AH4<|R zZNhJ#%>U4721Gs=Sb=UmrPLvx1cvBrS$PDQgT-Doud3I!o}3TowF|x0$QpO)trO}{ z72Pkm$gF3Zz=vIEu5O3@>19{VLdA>h;3Cyl{iz_gV&>p1Ok!xe5TY%Ssb9`)Y2N-0 z>zj6XjS_rv7&BW-0?}hAVwrtnEUfy(eJK#y%^i;1GQF4ud!dFs-_s%XB5WlR#0zxH zBl;^H{xt+8t1mf7XMYnOh+EVLNK3qggsh^z3@NfWC*;CDP1yI4kcGEV!~W3&%W5U8 zT-ZNo*!>~sE?!nE(HRNjYO^q3t)UA&(ESMg13A#5n%SxP)N-z7^A{?Eu?e~KP+D8} zX;eZfN2Zo5>K`#B%7M`R-M9P+AfFl{*LjnrDmh`Tu4NK)gW2{pDV!ZR~=)M z6}y0#HSkCQR#Wu~I0@aRo^F{4yNDTn4&7x5K_;M!ODJyf10|c9Fqdr6?f}bTkuga% z6lcb5N3v^|q5##`6C@+!hTM!7 z=!|nE<3*mLf5D8A+#E;f949bGOqv@-k-MMZOX3hDC%F2OScfOt&?;p^9a%eob2t}Z zdeTb?Q*?Q*RM+3ASi)&OJLX+>h_DnpH^*H%$2iF$(yQq@lQ}r9OU4?s;1ra2T1%y$seu^>VAjJK6ypnp_*=@U3NulQWR<|k zj?fzHQ$2qEE^Dw~JzByZd$dnQhuB@p8UxYC=-4b5zBOCRsSL@kV$ZCtvG!0Q+lvK_ z2h+?JpV{mydrs`VfQH|<9cEEpkTn8jN;?aKoZvDYrGUQr$KfbOg|WaFsT28edXi9B z4mh47#E)NywFIRR5_Uqp7R2h<7PXYGpLi+6N-=)H1h!o?kasE@Mgdx6n3nyRCT ze@ChiabWjlTS_P6P?-X;cKT6L7@c19Nfh`u2rkN9_M8H%Ay{w`7FsOlXk@fND!XMT zxG-KIL~g(!*9k5Fk=x!QksFj3k(#^*$z&Xcx+D?v=^ahwp9kGkWOHpLUMXa6AiTu%33Fu0goQ5$D;C zL`90664n!X-5coP9oTh}AmKpqeWZ?DpixT`p^`$-t;YgQC_AnakOGV3}-2x+^h1RJD^q;$AG$SR5Y> zI$e+Sd+LPB7(!eNyr)_{W+1YFd2tFC#tcf%G1~kDjTx!!7nvmkh1*Up-JymF<d7y$1ZcY&6`wX5Zz@Cx%GV&uN1cn+ zhl-T;afHFxtM<0(O=94-N?e>m7(Wh+NXZ8sbNUgGE&65V2@rHA+=ON*YDCFw4iezf z_1AT1bTdMZflNIkcrfw+Al~C0%&6>;F*c?>JdFt~sa2=Ps7bmRVpGv2xNM$-4++kg zx>k%9Ct<=3am;ekhuS}bR*lE-C#%E!)9+R9PywUv`aD;T2fpKwkOg~_hP`rk8n%qE zqmYp0qm9t84IbFN3A;EK_7DyG8679>W^O`S;$0+U(Xj1WMeleIz0VPLED}-^h&5n* z_5{yTowK_q=Pk_nJxP=h4`oIuk6rExU5_{dD6swE&AS|{sP{S>{ z22(7Lx|pfTdVQAe$a|p1t7RcGtD<{pa;5v#Oj(IE@dy-BO3pe=kS2z(M5#f7Q#bl? zQ2Oz-)T3QTW9k`cjTAyWrYyPxl9WZvt*DAb$+)IcMZ~~h_K@uKHI-2b{hzF?gOL>z zPcz(x^|KB)fri9Pl%u($Tmb3m+3)9*&861?@UMW8^&-mf$w*P%X_+{_p)>85*}aGZ z+#4uu3I4DhKC{0hnh7Xhrx%dQo#ARzx_NZPR{*X|{M&F-JOSy{b`Ypjfpjq7PE8if6nl_-a&!{eFrD%!{ES};67+mY0T(wmlS8QZ5mX#H zfwt2JS!mPU1`uSkP=s3a)0RCtE0?~dS1HZ8(JTL?`4XMLp4&wmFB6n%z@e)A8OqOU z+bcCnI`3}#_94obkdSzaf9?SC#4c!9;(q+mGl8D@KzNVypsUJDG$a1}z+Lasphpnn zvFwmec`u^-&D(8H^I2G^|Iups=Fz3p?NGPC^F!MM&!5xYx0SBV1mr>PfQ&HNVBECj!e@YDfH7E7L1~Ee6zv(?wj!$O}04<1eCh?O z0Ivl`=G}3~tbzuf?S$t*jQvbIB2`<^LHPR__2ouW7z^E-1J6fZMMjjm6l-*Dm+}?z zIKh?HcZe#vVLMu9YkuJQdKwvHu}n8WKW}6idO=l{fqn=Y^NB*&Msn!ip)O&O@|CE9 ztU)|2uZyQQv3;cLOPSXwSp@HF30Mp!*26!@!%TPLKD0P%51b5x5hnQK?}3CwyL>9d zc;M5wIgP~OD+u$VN1NMSP# zPo2eApi-DHW7xu)a1j&$dBY!IpM^+X76<+TgfOY^F~4^Eo<{y;E5-N(e010Ur*D}_ z(R8=CU~3C#!!8$Rm>-jQgl4(Un4Zostc%ZW87BKF-4Ui5QgZqjfb$7BtPdaS(BB%9rK9kx1{Ap;5rh^f^84N*_gmvvxAt z^TpRtriS%&m9a$B7=bDuSQwTSD_6G;HMNKNWk%$YOKCs4(f9@1C`!j7!3l0c5yD~& zHIaC^s4mG3~S>92_CFPq#I$mP``@>Ad(7#BTD`W zO${pF&4na20{I21ERa40xf!#ugxrXd1*gx2yjwwL2I0J@!KBaTD*QXS`u*7@N)eWd zZIMtMnuAA?HL)NU`~?mEcY>z_UnUd01!;-v@P{ORQ=Q``-=gz!1mX!fDQ8~JCS(cd zSsMHY78P7fAthyn1pl0+us1-E4Z@D*xvklPJY-C&#+!2c@a>?Cs^5%H?18lKFG1GC zGwj9%FS{FQ9q@bsD>PoChLlO`gl^BGcb>+36|09l8t+BKD-lZP<| zNwHf?HN8cw?*ezw#qElB^yXaL(>3mD!JS$c9!%V4BF$yFXp9&*c6{;gkS(P;<XC~T=fd~|2gq%e%aJ>ADbi3oS43evzB4o6hz(Y7l%0UCJ9sPQ0j^RN|j&)A1|m{wM7AKjFgAZ*23~ zvFLx?-X{(3>3z-wTJ%2Hrx#)GgE_o#Vfdpx^gcISM4qYMM^9fJkNm3lc>!g4*SpV0 z{2BXOH{Kd+_x40z`9yyp`T`m_w!;~^8_ShYS5z^6BBw*pg58VEol5u8N< zs#<~t%h#nRNlr^Dz-91ISP zfT@7Q(Tyt$w*_L9aA~sEK=dOL`D5}OQgDOd1oxVVvmReuoSzZr0tgs2O%x~Bm^}6DE=e{vvr%}b$kxtIk_#lReW&Rr_tC6ZCCm2QUr=I z@Jl&+Xd8d~=t8rp_;*?Rrzw#|_K4yY?VHBcYX2O2GPx7_bWoHUkkx=0Y7DLROV6!B z;}Pm+w1*pyi2UZ3KH3LPxy0DEJsD%|&>7&{4y$YE0DCAmiqbg5n@~NOS2Z(%M15C{c$qpUg9ZCow4V3##xi#_*P zyW7XHYJuLJyI-iHg3DIE`Z2FSc@QOF{$(H71({;Dg3!CjMiMbb5#bjibT4#f1E-i* zDR5}}MzVh?cu0)eFQ77UB=XQQkQUisepOih@^wHPJ{mNawu9;z!^_c4aMuidzw|t~ zhwNb)`$jJY0`!Q>X%hyOluGbO{7|qX@eP#$lP}s{Nl9ne!S!WpF^^whtpaEKjMWjo z^uY86NuD$cG#X2j>x7C>B27W^1EiDujo59Nd^}4@*CHRtm`^g;Ujpurpe#8%`E+W% z68-U64yXxlY%w+n^YE12s51E18>EPd%@4H$X{{&%ZQRGM+6e9;a^j6}w?qVZ(7&O5 z3sn1>O=r37Yd%%zw%#r0v-LK!v~jxi*k6K7Q8wpQw%%!b3pk40%<{e;!`5TbG~n?U z$Qe{?(@SW*s*P+fP%zUDZiuZ8SzsuZD@OX##l!0%_%j3#Zp3J>E!4~Qm%SC*%W6&T zz}I9P{g*nc;GgHQC?fjOMU>pEM(W=AI;9ilmRr%=We$`b^ArQ*6<}F{!|3?Upxqhi zD{XJ7P~+eVS+Q-YP(nMh&>C3;V`vRVP)i|fc2ssT1u;kD3GHfxU6H-(T!;~9pLH%L zDF~Gg=2{%~yKz@720iCI#^V;Ee`ACY<6%@R53K2VCE#ZJYNx6mJ!=HIS8ri&2)2Nu z7`@${`vq2VUpg%z1IRF1!+s*D^#U;it!OYm<9^P+i{>t^SU6TLyG9|HD#tWH@T;OPqLAxJ_y(#23SSLJ!!f6*I-@fifG1)Z2<+UW1MT6Q z`)waES&ypI`e4+o!oa3@ctS`M&p_9=T&Hnn(S z_sIvA-B>iKnD$q8n}iOuRwX}G^XYJaTCrd7OYO$+IF&4W^WTks3>>l|aIg<#A^ry2 zyb7BZeO5DccXY8ew8)MWV}{KhQ)mtCX^rk>4=ak*TSI#XqW2<)^_|&J?A%sjy^-wf z+W!U!(Qhn_N&L=m7;)IOP(PXpJ6N<-q?cMP*4!VT0@0vJ+uA<3*la3d{mZI~LTxN` zjL+_BM~ceF6i=+5+_`*M(Zm-un$mhbXA1T8#|P%(aE6vxLrWwOJ9oW>rwh@U@mtLp zPeJCU(M*=wQ+>7NHx~@0A1zL@gR8x(Lquuc0gOzb;2MsxEVGIGB4oD$2}Zci>L``X$T?w%Z``5^s2+kXI+ zY$8m79mIavkYPu*XCfNk5u!$WOm9HH=61eBa*T^4{Ic29o9rST=byhg4Eb~pv?te}QU`z|o+iL<08oM*^Uru9k_if-bjSu^$<@fl#A7U;URfZz zKdYc!yu@C#>nA3-LR=Gh8#W)E7_hf423ZiC{us`|X$hCnnZPa{(DCHm)vn(zCdPav8stIniEo|H_HI zvr6kl@=JHP{s!QN#xI57m+iC~!(VsUez6J&ApBJ;vLSJnXbS7-yv#alC-uoaXv%}n zu)==_V6*Y2))aA8yO4U&wfipwn5DUg?PPc&*A{s+KI7#(5iN(9>aTH#l9-Wz{ zj87oCmMae~zzSK0Nb%yrVQ^o+VkXVj;Y{EnQcdJdXjix!wd#G2Z(2y(C7><21`_~`;u$jOc{$7?X(N+|^UuklspLH_a20@^f*&3# zgC9nPAuNGG8ESVOtF2q;b&@A7q%!C0hCRr3%Q$@gX_w6$Vg; z?X^IWlh0=3ig>Eoh#q{J1v})JJAZVW4e+EppDxd~p=nMh@$Afz*3&Js1}Q4|mo0$ct_NMX5iA7}f>aVF2QiLfOJJcpq~3zX}Wt0hH+LkUdudf0}n z(ckDwH8egSpB&>OVH<44{-^u$O6wD+Ayqe=I_9!mh1Z&lo|LaC^AM#pg947L%GwZZ zMs2>iS9xR}R5CE*HM~yTt2}&PUD>(ra zq34!tcR_Hp+E9!50(Dv=an_)BKqHhR=l5JNo14N1|Jeyg;bKRk=qwyTCd8u4s0Xpw ze8!pV1(e79vgSba4Lm6^7J8KbUNsl~WwoC03Z%zFdGybfZ{00%YVPuL$!Us9hvAc2 zs}d)AGm;Z~BP~N;u*R+2d35&Mu(p_eU1R(u6aS>iw%WyPt03X4I z$lSy-D5Uj9;uNH0HJ)>-BI_n#WViqg6co9NWL?Iz%qg+oY4CmmzR?9ggy09{f*+^B z|0tDKQ`Nx!6_OKo!AO&t8r2M0wZ2;Cd`~2NvzxOIbH0wW?EP{lYxoxgUd2J8+PjdPcm!!` zFC<-gvAI~^q}shjRe%zzH(TE7_1iFcTc+P6_DMF|(A_z15ENVOu7r9&{RrH(1q!iB zO*VVq*!i-AFxG+=%2Q}b7Ne#DAr==Nbj1`{PXX!4SzbH|PUL1JoQ(vUvxmyj_h%mZ zd!%5z?I;D0{b)k2dP{Jymyxg^5?onC*$v37LC?r8Q%rnjSudk_nj^+Ox#kF1ZUGjF zeaa$jmVi%-x)K4rDo+CtqUm=QdJ8h=l zj)~!b6k`&4H*H9gD`11*-2dH^^tQLT5zwlnG5Q2_C#$9>{YJF`B#H~PGvs}DAg(uYAQ6XSY&CkOIByk7Bm)0y7 z_b?FSEN0E}OOPuM@yqx@s7>1IiE`g&R>>2krt)`!1Z zVYMMvHg*1aYCheW-uYNqBd*7P0Y16oYj^$*@v?g4=M3|4a)ie?fjAj=U}zJ+3svHT zrgoj8cx8MFoOyh8%thPaF=JQ{LC_PGOQ>-;KGoQ$EVufL1!2tG8fV9L+*W}(zw$Bu z&?pFVXRL6H@nNT>g}*=M-?pCNRzM5~7&GG#5DvP0@k@Xc2n9*_WlXmXK(2lVl-4(V zUr-(_#L>}ixD?hC89>8+P?jO+k2j;Sk`DuO8YL)SOv;J86OhwS*%*34Q&!@o3{&1L z>nD|T5lRA%1SLGxU^T3U@Y~!{;TUmMKLq8&@+8077qV<93 z!+5uiI7ci+gaimd)dBWFm?~K!jAK?c2c$y0*;0W4YXO7BJsEk=fGpsgeWdBd<(rs* z#hcBs`r8J8QL>6UkcrJ$3FpiWcBXd0qysuh>$W0mG*%_B6uKEp6-nQ?+R`14u~XG- z3%Sa|P>1_Pdg5;6())Ndn<}iWGMkLpq7Jf*%gpi^Ug`h*eIVzZQ}XTdlj{kX<3~l& z@Du#~Cip6376oO$2o=N$Yo)7q?toMv_Nx;Dr3OHF#@eS@k+#hCv4p&d&^6vpb+W3#byi-F}(N(Gi5MF%A00e*iTr`S$I%_te` z@XpXL5trx0Bw5XYne|M@;`0csiv^;X6Q;&;o{T!dZMm>L{Z9Z}F$s_5PaO=_2PvQ) z`)_5$0$YqW2OEo+9%ewGJ+ufdQNiYoABg7QTn@+adeF4{cp|tDLoprz^>PhfC6Z;H zOgkWuCGfm4f2PqI9;5avz~c$41x@-|e^5lrGE1^cE$F96>762s*^^?=IEiH}apmbw zyfQFE?T*ay5r=>PI8FC3f(;~7i2R^BIX%mk_Y%0kY_4~@J_leoAX%LEEbxB}P^O<} z60rvvSRynFc?*#TlqXK7olkG&Sjvweo9vu%Vnz*G@yhntT?)!pCf|SxK1x#$oI-=WCsb^hAWvswB3sr-M?mE~X!`L`fdOZv5;TkT&H5bERI-`62tFRQTW--39wm%}H1}G;5c-AW+TEkK*A;%!kRRa^R zX46Gl4YFG46re#Xz2J&Age{-K_Nban9ww;N;a^f>{|-xR6PZkv*aNvJw#IQeBa6Qw z3FW=$mIqb38zdwb;&9Rh$?x&EHo2Yahts#P%|#xTVV4Z=e~Iii8@sr&A*K%-yZ{8j zXyOmsfPzuTX9&iLJ81|*6FD1VpYlaP9&V3$QKSY3>J;G;5_w+R;l91lSu`-4)&6(3 zlk4JqN<}c1xy(HRHMh2UHqNN{0i2Ll6-_R4{V7aUAgr<@X?h&_&0RjLFQXQ-Av(84y*F1(- z1m`$}JF;K$kwC9BAL*rPA@JcJZ(iy(JY!!|z zvVw@7Y9?)%yuuFMVs4X!sh~HEg!Rs-yN6S0DXC{14NO%l5&brnQ(2*DDR&^s3aR-u zHJ=q(raF{JG;tBeWWt`KJ7Ui$RMMFfJ)sjCYM~q_gOfAh-yCTV?ah&3WO4Xvw|k0L zLkDS_%r$%u)NHU}CDLkS?qdUlM*Kd*)}dGPm{< zBQV_^V!>3*Vy^4hBIsI_y&+e_us55@FlwN5lX8mSC9oo(&sD;Q@k)F1?om1R=3-Tp z*WMh4qLjU{5zO6!5qaMZM&vV+A0+>-j9?|u%K^&CH-v?OsBA_88_@^DWCs_8_oj#) zL^vLBkX7CHKo)G?2D@sJTVqTE{SlNUTjfZ~RJ;WCV?aWhTpQQKwl^EQwivB^a?b_^ zJJ8@h%=(I%I|t{Zv-jhO8S_yc_kL%RMKm2vVmdmsMMnw@lzM}TX2X3w!KUuWG{PUQ zO0@%b2eB#Qe?Nwe(Bw8kFEkf+7wG8HlmOR&Du`B7X?t=R275}Lp`HvPKt)`S^A+$2 z>Pc%B-vGoMSIA&O`JddDY|M}U2~f5%pV9ZK|HO{N(NI|EU~OOOU>i@3hvN$QUWdLp z5WAJ7BjO2L0k9s(UDGfLJkb&TnGx2F|_Rre?gLqOqAHWBnB$hxPErr?!|vgpVhMH#4y@+!(M zB)N*R=BFsifmC9iG)_eUzqF#Hc&7Da8zf(j;LNJ+)1ZoalB%t2Dw#+sT4n#1H{Q^D zKU{kAtog)&s9{$~QZXgz9+U*{3yi1+Zfmm7(@}GLYu<4L7=cL2t~wNE4&FJ&L(85; z{ro`51N@N{i5aMv8=sFeW)b1!z26NXnU2|)r5D(h7;j>Ph&VBS-|sOskPO(q02WNp z^09L;Gd#3x+vI=nsM&hNl0e<8;6`?2IBA9P#GGxwuF^;GX0@0t!$ZBT=IPB?l*&u) ztJTW}ngT-Wxa)gOCOl%0NifxEu2)8&GB*`zMg_teiID+ABVlpaoD=s=A9K$fLPV*&TC^yqkL!fZX7jMR?w=yFoK z2R-`I)v=$VM;AgYlpY-=1mx(^PSTy$BOjnVdh{*IO6gG?FBlL%;KtKV-?CB!$GsmZ z_r@c{FzGQ+Ukq$;oW$Y-*E!*ZPH<7@`;e6f)u;mpvHdUvyX%O3;iMmQcuH?>APPi3 z^ufAE7V5h?8E?$4$Q?VKMxwB!-@v=A;GH(~Zb3W&{Zx zFJ?bSZYtlBv!3yuk~JW2m0E6FvYno_GzBmLe zi_j5lo5E%$t|Z{zsc>N@qjf)ww1yU2qkE$Il&Iyz+%ehHN}&d?57RSXD+T2Iw&OV^em>Z(E)Yw)Z!>3jptgy-R$d=ip-8Cu*JB6C1)X9ib&EgCK5Tv47mwrY=QuBJcfld5;eQ|@XvfAQp>(ya@J;bq zt^Jl0HBL<2xl(;s! z9@dp-RTd`xj&eBf0o(j4G%Hb$cgNg1yIj!0X8a`n$Y)e`B6Uug z(@o5hVNNeadt{i?n(*nY_@T&@ct&Akgj*I3>kd#fEF!}6&dhs3nuNz>fiD#BX^(1h zah^V9;Tk|E??IgdQN;18a~E`DNrZhClFN0Oy`;=k_}Jkr(~q>o%n-*DyCt7a%CFM z9#bMO_g=7+X($DIFRP?Lk`ff-Hs2^mq~V9PfS^T+-b&Ued6{#f|N zKH(`ouD4G1JHzt(P39!2? z{RZ4k{)w!ArI?W|HK?2Wqt@3EbgW!z9=OI+6*O=4y1IQbt;u#y>BtmPg;*)v=n;s% z3y)VEXv|JB&=p{YW}ehv?i7YU$`j&1(uW_Z316Nk&IKy0vfD-tdL-76 z!WutYlR7^TZGcT_H|~28uvBaKU%NYA@Ol7WojLPC&x?rp$6DFC4&eeZ90mX(@e)+E zSqO^V0C9E9BY^@`;N0QE!FV2D0WW(X$Y2kJA6iPG^2BN2k@=Vc2U}$0^dpdcXU>y{ zqifURdN)$oiQ{Gq$JY(ZUhZC_o2347<{a1>KLMpt?W%7EeTv7oA*;T4B|)-N^319> zu&QLso~yb%r>f^|f(_>W{IaT9f#{iZWAn=lJmOj>Hkr~F@i~lH;hl8eXYm%lWljW3 zf*4)x0vuO_u;z=15p2_=(wGhIIRNno_l40o0v5*G{-^^Phk~WpeWh588;n^YY*(yM z>qELcW3F;eWy_Sb=|)zx>%Xk%W)JqT2YWzKky#%*0%=vDC*XugG=2T}iJvPmxEdxe zR}3~%3`TSy2FFDx2Jw^_Y$UFEQ0PoCxDzQIia{4Bqa8_!!LelEc97s%e`>C1$LbQ? z2;oQP)&Gtk(LWQG3rvA%2^$PY2tgXrZZywlzt6+C5la(&NE#DuyA;PoIisOfGH_y~;Q>5_VQn8!3mg=e`XNA07WwfET$I_@5g z_63p?Jl#?DhX@uPu-H;Hx3 z^K^Fl1na2vFdaHxpcStajaMciXVpBKk`IuS_!_dG)dr6isx~-4+CW99p$*2NkVGeG zgBog&+uwLv`Y3{YyDJCdD2;K2?A6fAi3?c69?bC!k}GA0&)2M%8dE51@iY^H^<|iX ziC)iVj!@9^>?K1l>2-P__?#6U)g3iNKn3N0BG#)~lV3BYLeHkn1__DZf;67VY1AUf zy^r9^2y#c@L0XwEW{yYE8EXArN|EJ+LGpe@tW1b{iJc|dSW7F@(v5SeMr~*WOee>6 zQk^JId(7hY$sn6UB<^hRc#yl0oZyrakR*8N4$dV4zs{wGqmn3M`;D+*yZ{aF$@^uY zSa#(TY&eQfzMfUmTS#O{7fMN~LCIY#$zVyy_%%cq-apFx6;iZSe*lGK8pXBXjmN5o z&n4IIrP$v9*sO9#>v9JYO*-Onf0o;u^rPIV%-h4QE`%%#$G(DN+I=3Iu$Fb4Axy6D z$V|Aqo-i1)SI(ekC6eH&f9PTX(Y3_#H<{R<3| zW4@azRvhtzGK(#eV!!qj`yGUb#eQ`?D&i|)+r$qeDF$MPWLlU}RmF%MMWyk`IQ}}$ z4l->`SELzpUxX8b1$f-u$XSlmY5`N-1qDFaGCyM0_rk20g>B!)T+Xt~oZgx~e zytc3lAh}EB7eZ&;&#Be&`#o^;hlW;0kY<*+8JSh#idIFXU4bHhVxNc`mFc0Ne-avjV_B?@Zzt0M4UT;TaiA zRmk@;TGG#?y0>cSSTAoh^qzZ31~XBg0X6{)40ltTD|u^5)^xyCC<{jBBMwd|qQ@eu z-ie967Mo64U5aW)u|d|cmDC)A?iVx0shpE)%Z{LLsF zC(G$iqNraucFW`O$B%{ybyeUntkGrkwvbtfYg1^Pe*yA3RJ4k0PjQUp77oaDoJb>_T67~RX=iIfgU1G6y*7dZhfrIZJF;l({Me?&$j?ObBc z*qlFvs0NnAPXOg<%ibrbvCpwklQ3S7YpP;R6!pJC-94hdfL383PHT)8zU>)l&*Vu;}X zLe1k#0iRaLdJ1ZY69h87I4q9JJ--X{#4?(r#s#9)K%T{*YyYVjG(>1kjj@g*E&Y+k z^S3mA{t3{;*{H4x^#1h~X;~iy{)d07uF9p>m?Q>X!;QPqzH-pg&dbx#Y^~77EJ8K` z6rI=#Pb>Wy1#TXITXfkpcs=`{0v`?G{hT$3odhg2tCo;9kUgM=}ca%HTUMo6W+w4U|wY zTScf+e18T7C6*vfLM{_00b#2D<(T2$j^_fe{hRUJ1fcvk<2i!J!c~XkIetYOv%`qL z0uA_g97+q{%0VsmBi7paAfZqucKQn4G7$Uiw*r&=l+1_i zdjBF?cKLJ~KY^DA5)FQP;8%^&L_U$y4&gvP33uQxd((^qFXE^`Uh4ekhqj|puxUe| z|BTF7&&O%A#p$jDCOp&yw^oc@@fxljcuEW*hD`T=uS}w2HY1JJ+KrgH4p=hg8-WW( zdJp%_p}ha>_t6Y$!*R4he{6@1BiBn;c-AWiTLmzuWp9Od{LX5_nbxxZgbL=y&*Q$1 zpPhdt8ZMn5^#4D7J~kMqS%B4uwRT>3?_@E2P-XwERaSv>uCHuu_*>pvLjL`1`2S}9 z{QUMSfZnIu@8{=V4n0ighj2p#{)K%1C%=zD0ie;}cN;c9#a7?em%@H>vb&ByM#=$J z+p1ko;T>gVlfLTP=$zLcTkYKFo0d@Le`re8umbJJ^RGD)P)EAs5DpxRI~?=Oc7JZP zGPY-oKYs4{?&ZdIggiqb&-Rt$K=A!1cb!;RKC)eW0+dgaq#rYKf<$QcJ8ID!iFF7FP{%igJ(H^Q+Ak@&Y{cCiK zx5+Wo;cwtNwDbN>In_P`UvGWB`V97$8Rx5CLj*tdeD!@%1SAq&(BPc&)q8h@sL>wQ zn?2)u+t3ffb6JI7K@fgbpRJCak2UNA^^evE&|3`Gyca&iA7kD|s~J(|p&oWu?v}t& zO_e@SjcdP@wnM>&`$7Xa1=7)>|0ZcO{OuJu^1rvzLR}uu{$GJp|HokNek+$mg4@eS z7EgSBG7xX2qAb!lGj9MGkc%*b-&o1{|Lb}G?O%Zxay`J$I`97hWXn3hpKDvh zg#^g}?&~k%CaI(OaUL)7K%`*ZChj}=eKgsmcRl`weRd&7I*$+t2(YKcM#M4jfN;*h z#9srh>d4vkYJi^EF0V@ZY zh4F}oq6~SaNa?Vm@-$4^A1fPO6fh5iSD4^LHlaaS3bo`cj30`ea-5ppFU9*LVA6yB z@^F#0)w$Uh?v^}8$)B~=tmnEO;wJqv7X;;N`3JZOt`-9g4tKYj!|%B^Ld{or?&J6k zrQ^TqJ`PBk;g7XbHTQTQM;yd4`s_b*AIE}R9RKg$$5FlIKct_JCV!TGPR<2S>*r6r z-{PhOiu|9u-y&Fq7#oOp1Pn{|(Dod&*s1#oHdx=|gymShm5=)^dSNCz=Y9g*Z-J{a z_D*~SJ=Xfe{1UeaEs*;O!UzyA#=TUCY0bQ!K;LhHGrtf4-lbnYAb3YX*uA5mi;UZG zeB7SyxA^LFOf|gx&U`MVZHCSl?dg7t&(Gtm*Eayny5C|XTM?Q)^lSq3de|KeUh{|= z15TiQ;*2oZbR}TD_gko~?G;E>p)n`Qt-aoREwjrDR8o@>|-`$E3;3m2N7?e2?( zcLNtR$`vfGeTIKvZW)eFKYhP=c$d2L6lWy_W~kl(_nIPvtHR%R7j}A;HBLUzb2>t% zzhU3#>-(d{4PhFIfgOP+*d}+T$|~TIAc{vlvd7T8j37zPXTwe4t+1RERnqtnl!E)w z^5G;&eLrLZLU3S@dD(^IyAxUHz8Gt;v5p>0`fhT^d>@U>)|wdaloua?Ke_%9>knk^ z$x+~{RP+SMKHoT7DjM4a?fb`Aa-PUj{fMclQexnjh~*uZ2T_3j1<} z5+05({shTHTlM#lBk_Fg)qjeF_r0Cnl?!TQqK!{hfuqBHsX5_+}MJpFN+ zt!=0rnHR>wVw+viw^EceQyP*HTpWlV?aI#3@OO}(G{I9 zh>qtGea>p{#V(M(0x`V_s#sF$BH1$ui$cMieCtNE1a{o5u?A_|{Q$J%RC9oxMM<>`H5V4f}fEe`a*6>|HUtI5MRc#E+ z=z`@~2X_U&?HEPab%K*TeLcz=0(X3fOp>EvV*%HsAsA#a+g7nH-@`Vw8UAA$72~r` z;Wn@UK0>jyG@Dy+n?0Ib@oP z*Z#hZlo=kLRE%S41s8NyaIv(N_}&Jx&5gT-HC5c2>g&reA)#`du!56cpbzay;s6Mq z6jBa*WEL%2af;~29o)(lAG;Y%XHNJ(O714$P5iz8ukGDQAT!I}IY`=ry?X*=vSspJ zd-o+1ezLv$;sI6L+dqN5`z`+D+B-E~V1H6rHlfhki4CRdk_I@xnB6E>9k<*6!)5+4 zeiRT<;IXu~oedC=FafQ9t`O&MA5mN$DGIOFoeNAOE`0zp+^qEoEk$~1w)T=kiSN_NCfrXlp|9i3rtMUC`*@OL9!GC8D96{2dJ@~WEpKgEQnCkET z+w4KjCPnqXvj=NP%)hh;6N%|3*@Kya>*v^m(ZY&7+Jl`NGm6f!2WR5DV_xz{r6HH# z?SI4`90?9(*@Fm@_Fxa{SShbP_>c)d*&e)qud40DkLds4Pp&=S`B;(N+%br2v;#Ce zyg@sC-)4qAz{HLN(>>AOZ=$afR$Z*Yy^o~V-Mb?Ds&E6Ql$?Qe9MEGPNEriZ56l7$ z=FL#S&9nlQzJA7L_E-&*X5$QK+cyAbPD%OeB%VQ!&(-*e{)zI;FaWl2S3xLj8$K)Ga3Ki3vPByi z(&g)d)ALl!I!@@@$ii)--epxUl#JGMeES0y2fQK-B8toOkhV;pO==HN3|D{cNK?b- z1$N=77&{$9|8cMn2T_OX(dqk6rSk{hpbhlrcfvVQ*h07rdu<6EUfT{ejWm@-mQH?| z;(~KVdtlcXykwkxXP@J?<3nT zN0Q569w*s9xiG$C1L}@%=6hT-(D54Pmhq4$cnG?^FdK-IbVs1omO_B~u7a;t)_@nb z*Lc}}C|Bjl$+OZ4U zaRA#f-zJjqE9rJbSBh&@mmvo80J`{)pP$f-IGV+6##-Hs^N{57T}nzm9zX8ysu`E9 zgH`m5FZBFz1=YnGhT@*AohkE#&01C z*_OUJ{50mc3(-39*I1nv%yGB)TJWBi7vlY$bjLY1i>+s);*cQGf~xh_K0JypFCT6+ zoJ?@PuzfH#$z!4dHWBrJqP8^;_H(+z%BQo0!`Q1=G$K?FgYNKVIy3#PDZXZ$Yvlb( zwK#)>K%4sDH-4s26+ewXmN3I>wpFrB(KF zK6ZS6-q9HOl*{+P9YuJi_XS5?v#pU8N2PFroE(IqZ_$fCf%I}ou@K3N(OjM_Z}x$!a$x3VCz7AM?~>cThoqCH2xxfku_<1M4V zPVe&3$tL%ErpMpvzP*b;0B+d3SpED?{Z#Wu-?!HX&r&Tt=@cB~wr8^(B;>houY{nU zCOb+%)qQ&`pu_w2Is>S~cE$a9BqyKKd4NgB%~2x2$zG?id0$91FW{>Q&(^sew#;pd zTk!16k@nSXcLh@HI-yp#-57!S8*yov3c@&2dEJ7?BZcLb{08MlJ{RQ*9 z!D_R_cr=eI6<6XpQ|r%0id`p!X{i`Ym<+8yiZJSOK`j-(M2d^EP%sFSG=}yyN@lj6 zgzE8rJ~pdX?Jcy?sr&i%q2)E|wW4F7g12SrEjj@4YFSe7M4OU=1Mtbc5DS8E?JCSc zcS4%XH}2_vzDl}8=mGyL@8{!W=FhyJZy+RD-_Iw9#mfDB^oW(cVibMZ&$yp&AINzY zm!fYgE`80d=jzNUs>={CFYy7=GVGP|6x>4C(T!PgpN4(d1KW$R_cews*07JV%ETLdtqER+G+#T9(BS=f z#xC&&-zFr-&P1BFJ3iv0|5nZYT{L)$SOUmq7E67HH2?d1i!}Utfmf&90Y8fH%aCTx zW8ZQf-%_vOg$mSjXcXa>A3@uaV5)foI7Zbk#2Bh~_;A&b`v%{uDB){rHz8uo%Z@U^ zXzxN&e2NdQm4d@nL+a^FjuV7?PSYoJ$YtJENmyM*i7V!N%1QS+Ywn8gu;RfW6q0yaX(bKD4!0Vl`gzhYt$GOu2VP5)YRdH^_$%|%By})}XFK+_O*X&0^{MCKmeKPRDu6!Ku8s>x!FJE#s zzu=j5e8djqp9!9ZKu1g9(8{Vm0eULt%_*Ax407 z^Bk*qyVWAS7_Rvp*t9IkYQXV%EEP+(StZ-dP}B-Wlb67{A|kjEm2gNs51-Lt{81mh zf*;Va+w18U^1rt>l3NVrHA-b?OD74c9?v;%YkTVZ&1jjhy)&6!xE&!CUW zhG!tZcsX9h1G@a*17U+`d*@>JwML(S?+2D!0 z$9@S1kP4?WqRk*74{NU=q zLnlfh`fs|GEbbOu)M9Ce;a=+4$0Vh=77Xt#4j5==^igyU zcnsN3no}jvhkBwqvo0P>#9w2-lAigHgea8#sr*9(?E_Fmui68$@@o(fRwr}inoL%l>N+G=zBzb zN!gz`sEq!Xb|vn&6p;qPt=QKJVarNShjycwOf#+^?xjda2h3lJ8$+;3zEr}0x|+DH z^8$%QNzY$@Zy>MQBd}qU0%M;7e%gAt%jo&jk41a{T6kW~l-!T3`!kLD%>1%!x=$rE zvrh)LUT~Xn_%}d^Ce@X;95zY5Z3nH*5HHdku#sxBNg$j~s2m`MX5kKD#HLzdUpFqvB z7flfyaWWV9TTw#2Lquzj=^l7LRtx9B&V)Gl0dWD~T+eKUJ@aYd1CNvozo!5kVFt=s zy*d!)Xlv9U#Wmcj4 z!oQIke+#3Nxf}PzOQ89N<0&y(@#xvrs0-wuj?bj{!Cu&q)~bV>`zDe4q`38!kgqkQ zgN1&#bDDH_x^Bl`B1$zB$rpcu0}L>6Jf*i?<+PO zso5|Dn22$JU<|$Pyba;wLNl}kTv(}lu;xNNQsWEQ(*8i(cz%!#OWP5RjP9Yy@W;>g z&Wu#^V*ju__F0U9s)JFJWv+}jrM_Zo3Ho=I8Nj3f3JR-^2LElm>>@TC^PK;ic-hj% zI3NhKutSUsh*alOvT0EUW@3W^`<CfHCKm@?gPS6}Cf_u_b?5{l^ikA#r~)^9 z198IZ4%#rm!oD3WGA4XYptyXp$pTQ4^DW@?SNgj!Uh_fS)68OQB!47xSWNRl$A8|V zvTkr6A-hP~XYr5WV6SM7zRh)={NOd8ToCK)-$-HTBGNqt{8yH1FtS-&XalYtS{Yy9 z^UxHc2tCcbQrvM6pnS6>;%q($slE<>kQ5m6lxN8P3`ucQT{#dx8ZFlcX@#7VIo1Z> zMZ>WF%s2M>Hgod`Ans8QRmeeAq2c$m( z{fR#uf5V6BYK7`c*HCeAh#o;~E8<~ieB=5puVDxx60X8{;c6(CA~DJoLpY`f^b|}3 zzPwL*7G?#)bZipYDlm-?b>(8#woyC+y#d}04AC+^9}aNt()31+{&9MQ^v4%a!aq)LB1<5YbsfpPTHCnb zUg?Dxs-FTl5%mE=a8H=J9pK1Uew1#rX8jpJlzS<4@|<7Jf>E;tsS$c8Ul$Z?qQ8(eQ- ztpJN7Q9-J?n6B2V*L%37UX(#f>WebvLp|Wbh#N@Do_EOcFqX#4$3Y!}8*c=Jvolgh z4GFG;tJ#gZ!OCo%Hr&zcK?|I9I`9UDQ}jyZ)9M0wG#@aDc6#QPCLV$3G%J&5*(mqs zY!v&n)g1aS)^jF)k+~Zdz)tJ=>i@ocdjWeY`DS?Kdk6{p-cDjJX8-)zN-od&b4NXYPJSEid;(%VpeEHffK;w6j)XE$VbgUJ zerH#02tD~Xlj=86tnsA!9*8);ppRLHAyjJM;+{3AaqsJSsH-l%!)Fz4Qn;LPkE8Jk zL?jW|kI-1v#phyfrskj0Up(jAt^h!z`FU9m&XQV}!tH^#$~(aS7QuAAqk4DN{N1R* zguN4{8V6v1GHJdJ?+(tl$B^;&ckACCY3o^KliVf{atuYU!x{}1Nt za~p$u=Ia&P{$!7m05Lr$Qt?YeVe758_}7#h6LtL3jY#mvFU>H^W(L9?;Lq*3g!zH7 zY4q)44MB4bcUn%TXnRs2*H_xX8Imr+Owqki?VjpdOE-Rrx0U$gmu8zPm?LHUQpF)y zG~nG_3EJ>QFWiK@r0502CduZkC(xz0z`v# zY%!-!I3Jc+o9GyZo*lT9X?weXV{NjSW?~ljU{winJu!M3DfYZp1S?f*mM~!yk$_>? z+epGx4kwIW#S9fZ-WZsRk>X(JBN)8VFQ+pX2I9Db!Hx*)_uS+8;apT0S|o3r{)O*& zK8=w|4xgeYqoFDyhD|t9ere>`kCrG|TqbXEQ^b#&(^oOL}A)qRHiPa%`X@e*+1{x|L zIGGtO0+1`!x(Mk>x65WBAMt6FFNKR(lt#k6=1>ZE7dA2KA|yXubUHYT461!IA&DjU zZdZzQwd7tzN^+dalLFJ)Bi)AxlN6^CLJH+K>>$)z_KgS{KikfsE207% zzI7&OKfDewxpc7SJSE@;#H+}L;TGWqP}K>{YPly#V8VAa_Kf}V8i%jIBi#0tB{l}_ zw@?t#O9e>s&cAz#@zC*04e+M>{2drD=pu#7j#n#M_jl-7Hq*K%H!yA*eqz@pG$Sys zk~w{{`8M9*98-n#rL+KJ$QDdvB{I)v0d7EEk_ABg5T-FL*k)_d-NJ+K;4-rNYsVzW=Fi95R z8o}d@gdBtv#{v`xh5|NIW9Y_Q$hlKHDu|A9iVlWAbxqja>dRj$x)L_~4E~B}9MR7B z1ux(B#Oa_{$3RGei?Pu&)z#ITC!Z?`znbJ$N4?><}dQXsFb% z8$qQdmn}OMY#>W~piGRK&-#j9ri=c`qE!Q__%OJZJQ&H1+W--K#nwyMtL}ji5HVX$ zm`St`e>uU+(eC_JB|QL;$4TB*L=A)&&I02FSNvoBxlVs#CPFB_`nNt1K8KSbzNeA& z28LB7h=8`Ki^y`~iKFkLHI^;IJF0q(za(ITQ>p3rC7v8zi_9kUXpSaF{{lWlOS^`= zbe4}*Cj$U$kVhTK?ZEH2p|H_HGzlO8;tQ~O^>~o_{wl!1s&UokyAfIC~rn3 zz528Oji>iSj6*-&mcKwllEwK+Tbyg4zp*gz^-;J3;YARdCl-2{DmffCB`Q|70kDsi z+g|{ZD@b}R{#Ydw6fSsw4{q%JjWIe9uWr(`$+f~s)b9pkT+?=$rv6+-L&CHTM@HyS znzd-l8#HF8GYF%|8JJx?b60wWjuk){vi{sD2hy#JEC zcPO|}Q_$N_!J@`S@-9umGsx2Mk$PYIBvLT8afx2K#4hTRx-nj_QGQ2GY;!^-O8a=! zVLmdG*wKK{Rv$aQejW(=Qzmcm&s_XrOWUHQ{A|Hb#g2)TnS6~ut&mR<>Mrug51LbB)1g}WI$_yFL% z*)~qTR&5XrM}tMCfL%q^4{e~SI1IfZc^33T@)w_lk(oEFQT($22OcS6+w}9e7*$3AI@S$oUT2 zmhYy^O{%q}x9hG*dJ*P~$A>W&s7Ee0GfFmcrZJuR(|D$V&?OkRsQ~pgpp$BV_eIqx zlGKZ;1K7tvz>TVkcscHKtt}nFH)7MpM3Ruwh!5o&Kyv`(^uV*V_bAXxjJ=jH=LyLY zj)M^%39Hw2XVbd$0xStxf*-!xZjjpex~>FjaF{-x4Ok|$4)$;?5N0%*uXra-?4!tX zP(Y`)AURfsG&ES=^o#AlkJx{i0y<6y9mt74>vqs`@SX8OI1lLCUG&*6tAuZW%1$2d z=fifGGHB=(nbC%64D=~ISURWEGd=b~+rAu7XD-dF?l~l@^fT%}H*gNd5cZ+KF>G`E zhRulw+7Ej+`XB7s?ESZAKT;pXo(s7lzcmFyUQpoQ9g4P#?H_Uj=kozH$%Ls1g;i}<|uYZNi| zXR(#B8N{aS*RA;KQ~zV9rm|mKk($DO?S5KyY@hvF1n9>0t6KcOV!w_>Iq8j#{UW`t z{c4Wf{j^^jpK8?oZxou6UWD#U>g7e~iR>rnt}{`N-L;YZA|Z|JS6kgopZ!{c$`U^jN5_lf8VY2GAUpJ#BpZyYzNoBuol;VL$eD@k~?;(l)hp!30s%oVY_p*EO_mZLvA^DgACh^;3+b6%u6;bQAKt@TpQkbgG)VheIqe%-qUwtN3Lg2| zcWmm4ZbL;$?Zf!4#BOYRkdgYhDXeUR9h!n$>cJ)22w92a`(Rd5jG&l5EIHB% zoI(6%@gz>j?jwxRiFEO~4J;Q*+Z$!s>2_snq}fJ0{0;O)nEYgQmZ2w=)wCYP{15S0)y|lu-|u2z%bYUll4O&yA;$0B&#GYfe#*it z8keZ}vHV@3qp@d{ygu_(Z~-caKjX8NBY_3B(wS}3zVsxVKkV%y1y|*n(6u96*s@3n zg6)eZkPK|GmrV%uC!UJQOh^2&0%5qvDnONP@R6_sa3G<^K@CAK0?PPYY_uaH6bMvV)wwnplU->f)nI`nrm-X#KvK1?%J~&TA)y#iHc#D@L)#pC=GqHd#Yg*BLMFVg5(bjDUzh_?z#s3r zB3AFQf4KLVH|&?+pP7bNQ2XHSw`$zj?d|`#zCDLQpJ3_7D0p^SS~gxi7;!qjq-B@3 z;YY{NftoBnB?&EA0X42K?>yI8ZtMu}1b%g8Nm-zv}DdqchV&*W1Ru7o(TR zzToeVvggS?rGLS`&`x7|%P~nRq+icAYz2;e-z{vW^cmFrA{^uiLkbbO{s!Av#3Fz# z0(CmZ1<^V>v9l!dLSqaMKkLMHl9;0s522|+@x9P?3-KEQ*;^;ZB(Z}^yj3Tzlf;fH z@ll=lJ`#=5S-B&R0B>8OUC}oQ<{E!Tt*k<6u5G-n3yu|RofWpPb>iKU*hM9_psfRi zS4m=5m6)d!izKnTO1xYro`yt+jFa$P`MpJkSM7#eA;a29lwm=dtKW9T!Q&uaj)!}o z<<59$WkO>vHCLLeYJSM9_$I9ZH=BN)S@YlA7VFKG_>F`X>ubKwZm|j{+lJs$7=V79 z1o~5Mi%(t9PYL?5*_A=qPCSK*zf)?HG!d$XTMYV)-f+2X^cv(S($Ys9~7J0D0vUq?kBIw|OzI?$o- z=mdRFr=af&q3@Jr`s%@Q(zj&ie$Y1sK%_6trH_5rxzAPizfrI^NAn&VM+F%^iJ6mY z-jsh2*8*SU5PlyfM7oFK!QDoTeU_*9jW-4hxYI-1Xu>lT;fr9v;JV)Zj(p18RMhS} zJRe1pi&2H&Uh;m*)bt;iM1MghbjCKix%9qmyY#k8LGRDpRWlAxruQ1yF0o}G2&_pc zf)f4Nn$8!1+M}Ng$MNwO_MG;ua)86VLlV@S)S@x>ZV+l-R$A`9ueA97uBV%9I5wNR9t{dGcOewX6>oMVr_Rg*`=Y21neTH1GFAn|vjc`y{V zaY8b^9W}k}6}?U;O0vh7u?Wo7LcqHA_)eWT1&KQgv(ih8IFO00wRKjRlT~09YTLX< zXI+mh$DUnDw2n@5A@G_8D$?ac)v)wBtsByCTu&Hv{jZ8qD=pvrbf5ay%TpKarESc+ z(2;mPFli1hN}+#u!;IL*cgij}65oVAONp=h#V2t^*k z@gDZ4gG<(P54&WINnw9JM^Ckl5y@l~X|m4tla++o{GT&sa?&;0CTTPpfS0f-51I9M{ZB7Yb0AKy#J@FLOBC zI8&z|?ZE3Ucdbru>A>s$HcqGi0#hbiK6*MdN2hQU_j7iW+qKD-OJ# z^Bk|cUN#=m{V%9n^mc^MmnXYxLNP&tgD<-Q{Aj@byjbu)C@PPm7eS# z=aic1W_8n9t(;P`+^j2g)^^w*Y1eEw%g|Z>VHUYD*UfrWXT9T;n(t<<)mhV>QrtXO zJp4mvg`HB1-K=BuJor|pRJEJcUuO+)O4Yhq_v)-}PO0T?*3&vG7g@Hk48LSpg>)&! zCM*!bHH`&0`9Ag|lu|08_L8>1UR@O0idV=rk}r`EYwk?`0^u_d_K7Z@)-e$I8IwD7 za~ymA7PBSXT4@_GUFs#2692Pqy-ps>Wb6((ef&s0hrdgMJAM2-oj!!=q1Co^GZPTv zSD3|ff>^p10WrKC)of8$Kp71kLtmrDVR)$9qo0;W)LK_uk@9)C^Z5=jyDn%tCvN8<-GWWIax8w8m0hjXF6B zSp+u=EgIaCi@0@jF^aHpxUUj~%)%;CvDDHiyE%k>1ly~!=IE?kWH~d5w)h?^pqOB{ zOF28JvyD$Q;P2x>mOR=aoq7wC5&Fu;tYcPTCT;*wxc7SU7D-;VHAGv~+)ESXrb=Ee zPA#i)r+MakOx)X4o_YU^Tw7_aUT!kuYzcE zd7>rL1%d;J^>|{e=+wXt>*ImAQXtsztj805>?#jLzCg?nh=jc#;ej|< zAf$^up0MqcJP^M{*cKXh>+ysgf5ii_Rv>7|t;Z8KyVe8ohCoycM8ZCA@<2Qy5H!%% z<21O6W4k>NcM8O6fmr849Ed$cM?3lp#0G)b=t6YyK%5{Dn+0Nv3sLBSXf6;@f!O9k z4D~>K7bZWp3&ai=;(iarGJ)7F5P!N5lRXg60>UvnPvN^~#)zR}%6~ajth0^RSp*&U zK_bL;yb=^*8`V1bN+yQ@_Z1UxAaY0+>`-GPDK{&e!fIe7KL;X?02TDMS&#CK5yk7K zj4RRoEL~Svku5+uF3>R^ppAy2sv=i_c*V5Bbe;!jp##)WfI7KAH+X;^bAUPvP!|`- z@BrQE0Cg3h?k>>t9-w{%B1@Jr5m$6S-iy#(O4E z2#BHo-h({;kZy2+0QGf&nqQS*T^)d8dt~(B0_D#wYCO5IO!?R7J%fX{BbFbwI@-fq zhU$1Vb9B=f9_+{c2B*TE%!lU==M7FJ+v|hWGZLgOCkN;ffLikUpj=;2k`-U)`n$1z zgz{J-(u?A`a^({^)6~iPdQgryQ@VtXvv|@j9xN^u5fY;CCGavRNyK?BGti@E5gbQrcZaJ(I43S=q-!2f zX`r?cSmIIFKmNbU&u5`rs)fg+Le0+zT*Usy_WqttnWG#^4nJRq;K|RK-~1gviJ$x& z1C(BVvNnGeo3^rw2T+BdpM|=fUZ}@5x@fN!%U1xe%g?)*0e)Uaa34SKzTf5N&ad~I zpI<;Tz52Pc0N$bd;P`8-rON*@sHelv_4kpVo7s47h4>r$^LK2@dgbr}KR1)`Yep-6 zUIGfy3ljc6S3eW@zZd+nW6@vZXFq~Cs9e!U1%In#dF@5Nk5BXVC*mWC1wg@#NKsAr z-$=cm3a(KG@*QQ{!Tt`@#B|*)Lyz;4JYayRpf-Cu~L$Cn{-ImXFFy3*BTJ?J;^O(=v60 zYg+C=SgD`xts+`-pw zs%`6Mk(t+0tsD3*A0S7)?8Sh(k`VC0u_Bh&aROgU= zoseQ1Z=Mdy5G7#CTV?XGfO6!#pBh?LH(sTLzAsO9h-Kg z4*@5?iWp_F9mdHDhRN&y@@q5l$to!)$?KS)1Cvxt#!^WUXQUMz&q8yN;?Vpub4xOf z;N+~H_h;T?+lIr!$;?S&VIcB0e4{a*5sB_*zf$h z5t{&!SMAMCzQ2p}FK7RX&uBSU7IMB72)_&3tWllwca4CabizxKo10l;q>bVXhn21Nl&oM zt~`{kZXK#}HFLomO6hRqYSYvA^S`sV$@FM@&Q};*lJt03A*OGsON@-SKfy3jVp~4* z;b*{sOv6?phq62ktyR)pq*FQ~MdbO<{LK~q7UbADJ8QnlaQAGQX0I?;C%unu8`<3) z{yu)U;_oHi?YboXzWyco`%}Lp{vO6AY5slz679-&2%!1k^J6Nl*I2>+3hvIZ->b2 z$_ogf`E4^->vJ)3HNQ*O`}9qd<)=sUyQ!BX&F?p0WNhO_ml)yq5v&gU&hg`SxxMF8 z#qI0=<#0QyQwAbspZc8V+KWtOFFFc;xm;5#wWcZfThP_vZ{1yrzt4JS07?AagkEkN zpB5(Zw?B-i!{1gAkzM&iFu~uGnXCExBO0Ljn}aritQ7O-WO_7zr+P`!{2e63yyy}m z{C$sB0Q{Z*A0K{~zfU2D+S~-KRrX@MPT78^=C2cPiWm=hj{THW;juw>&Sp+H?I>OE zaD3JmaT)=?f{Lzf9IudTUcDP(jA}AwhG55K>?7SD(asqsffA!S(}bzVMYibc*vkzQ zC*{8)wh+UcH$HYB_#Om4+~;{6+S&{QCqE0bbjVkIp`tTUhs1ZSh`r>)@4R>C-9;Xm zV;l2_a`Is|$ASXi%%ZGPa7x`O`N4|V6TbH6 zYMr@yw^AW%NH5zc1$Nw^#EZanthhC#z#BSl8QX62sg+eJNr*^nFH<$-L(|Ghj{Xq- zkK3R6cU<$2_21#C-wa{m_~(k)xwHwDlH-tZ3&4{2yAS=I3Oj=Lj8HfA`+I)khUdbZ zIz%TH$)i+M2lUXh zLaxtG^uLO2ET$vRzZb+u8DHLz6ZZ#AB#XeP9wVq7SvUIqknWYmn)dg{NloN3M}}b;%g1l z(cGN8N&4d`0K|9F|3=wo<9_?H>Op z;>YO!bb|-A{4oCxjj@gGogD#vwf0u$G#YeCa+Y`!xFn>=xlvQ3%L1-2Dlf);(s<@vI5cx}FCxb$A?^t|#xcfffXo&%pW48Kcooh2{GChjVjLu(;B3l^NGUvG4koG~9{a46&eu~>ii4iLWZ z?|Ohh-5==>71ytU=ov>CEQxie=2r?%Ser|;tV+R&?+24@Kivej`NwOFx6rRdf0y%y zy>JDvQWHya^7t#z+~$#;ws9%Hc{q6k;4E_PPUVB`{Lx> zq;k?fQ0@z+8aIOshm-%(-(_f9jO@R;IByi-$j-t>>^vQej-4v(6vUdHg4ki_^cz!+ zC!X^h7ovxE22-Nvk-`x6qOvegGfqZ1Qrg@y^4+g+H1x@WCk2dXSdG_M%}cSLuhMvj zEYq^gOZkuh;Ra^gMLBv_+VBYyc|?QhId)NQs`OmDs6(ps4t7z;ROub9ZBEIi4o4?_Y^-tK)+v+yGGmps1rYuLatMu9p9cS+YD3kvkTPI_QLtLL;oAT>WEp zsL(3P(LdIeKI_x@wZMr35)bPG5?bFU1AFXV3P>tKrSTcQf=@}oz(l%t6jb~PAIL}n z8GW|Oj`0Ms528dNd4%`1I4@bKJ7Nzc1t&o(huOxV$2f+42Ij@M zsEmgF&=f1@@Ba;2jDcr4hJ6EV#U|izV zgVh{3viK=>GpAEDa=m(N;1Q%*!D<{z<<-8pC|I3spoxvPTS*#7GE@x(VGielYNG6@ zNfwlPr06arhh36ovhXYokzR{E#qS{BS`Jp~3%Mr)Vdw-jC9y0+49ma{)F_1)T`AE} z-<3lbqBPX7TB{+EXQN@by-F?s635%&sEs`$!ufeUzdaz|oExr5L21;dVZU-(Up;1x z2k}C{#jDlwZ3T|Y#NSKU=lz%eQLg+kch>UHNwJdu{zLM9w(^$4O{U}z?H2i?`hCeC zk6Qnu{Lw%@HnC6ngL9BSNKVKfREx@Ll9S{wBu8D6mHg3zT>0}mM?kNOI->8)CZzjkiJ~PBho(-by4QyI87Jnm&rF*`oPgh`o96h zC;hhp=Scs<4@CNI|L1wBw==;CZkyw_@XSBWU0iB)BzG{}O$Yl}RLnb~p<#p@4Gv0n9zcMs|r?f8=EW^hKd7-X2ixw!N2 zY7P){&EQO)pK4+i&%kELN$G2LM?MLJ^D)(=rLb_v;1-L(*f3J@9h36F*bVyokq9Sl&nqTT6Xxaz8q2qj555LO!*^h8 zDeQSq#>nP)DkZXFG+z6eD}x&*b){0@T&qc7LGf!%3wDgpw5&mjUZ%A*hwrE_VAx99 z_?)gd@>MdoCW=#P=Z+7)US9lqxextd+*g}~{vZ$f*Y^{BGeJM6ym*cueIx1@Bq%MO zlLEaa9gP6>pxyZXTw|3VYa^nEI#_|x{N2xyWSqq_jNtqx*4-KTq4|OEM)1iB&JQfi zHdha;sm?4fo1PXxnCC-joglum@z~nf4VN76L9A_CJP29nmLdwu6?HHYSm1v;V#A#6pByLqw z(7HK+1qW&_CABDW3bZV-o`sS+^B`HpXkBY&EUz9PeC3~%A=9A(y7r1!TIeL%fd%RH zeMHgBdv=V^I4xGpS%A{zEMxiR@xfPp_#0`%EUa-*LUj36FMgGlQkRvo%`PvV{f}yK zz6bqmppQ)i^Rc@aSh!S%df3E`HIO48XvvpCJMfvbs=N&b&NiMr z!&0N^oIn}i7t9c4IG&2yHMV$%F;$CAWiT6_9A;he(!2s-}JZE}K@Z zWz`=yd^@D%H6~@zC5mtC5KdnQDWiyzuO&(=c|jk(yy9!dgHm=3ZW3^Bqbxu>%;*~n*MgesIChgil*ePxYAtCNxXwC z2yF4WKE=FeFtupRDo2@t>I}f;t%%VP!JS3kgqj~(hv*Gx*Q`OPuD;R35nU7(_u&X& z*^VSU93hLNCLj(E-2quOx%cZLU7H$k8|FHKnr5y5Re?4q>@~ESOynl|i`f z7zB9@wT<%+bW~^6K*(HqIa=U0Sq=cAewzL1Fj_c9bCRPsvdX;+8V}ax?TlUzf++m$ zTKIGXLp9YR$$~QsM4v6Pzz==L_%EEwB7O-kx0Tdd!|}9iX8v|~V*=x9SypJnWo@v6 zaAyd4C8F8wz2s4|)xn)>VR~$1yi1{I_D9fAksj)w0A|^huMt3N_3O;lW6)ia`|I(E z+)31K>?deFDFy)U@MTL%7ed*0V$XnlJpkqt>g4RJCActbl65Kf*zN8SGNb8fh^Hr8 z`2)hEb&r1jM?(V^_u;WfgVS7IcjN6~O?Z_Z+_KW_cPS;@*28Yy6pcrNBp6xbqbDfW z!SG?|M&lrFecz*sfFakRP1OqsaIsu-!Ab!y_5bg<)SjH8_Kpd;?jC!+*>R+-ku&~;Ml2MGP@N-ls)5y(jq^CjihXI@Jm=~wm_`3y`0f#%(Hk9Lj z`VVzAp}HU9Cxx(hK2031P2G&s3^J#xExpob&Yov=C7UClYVnwJJkyEmz%ErXe!TWy zQh%^)fX)od5ONVcM%2`$fdIGghOpj^yOuvgn^mQO$ag3OcYy0Kl6@`U@i$v^{+txe zz8eO|HpaTm7G2+@m2KTTWU388jCDKT1bm z+X$m+(osk<@t{$V)Nr7R9frQ|*^jf0votWdqV7OVo~;HiR8x*L6m%w55X=EY#!D5I zKIVXalKWtPkV|{RPjQLeroN%b_BW~58)ayz4V`HPH>ZCQ}+Sm5VVagh3haa#>D~}uf}&L)i#;~22AtxkAbL6-J)r<(+CjOnHK-d$L?>xU+wM_kWO=@FNyZ)o+VIs4fos!_z(Bf_XIWsjJw zV7)!!GQ#Q}k<35oAERV*NkRrZPyTURDG=@teYcFWia>mDzM2(RjP9}|-EPIE=L;QXRU*T2PKO9MQ{!ltZ(*=Oc5WAt(>lXCDQLPy_&?*vb6peo|Ya67jXhq z*uxso9mHhNg&tVQC=uYy2`sEZb-6V${>rvXs%>KsH`e$hJSaCyX3>`ZO4@?6DA+$q z7jmqUStLtS+Z1HUMo}`qHEV<^gqI3HD5ry%a`6Tm$q>V>jsf9oUH71b_g(G z=4)gE*V~zRGgF_rp}I|{q>_7#Pkl=ZmHK`v>g(=qbVtG1QdfP?Lj}b5Y7qF`6~TPm zp^wDJkyu_fk8_XjNKJbH$G`Ad<}9fvX_c`WN%8mCj!Oh>{7vXz#kS>WwHvbHix)qP z`d6G)eqUQC<0b+c@AL)li?KeNq4d#ulzkhaVI9?G%HbNQDapO$Rgz0(@YaoMo^tR;Ns79y1I?0| z6=w;jBO@rI&`c{h(<+{6jmR-WlLHG1+L<4Z501lyBJgw%Ixw){{I=tRPvK`Eu;7!x zf)(R~Pvb|M@xiJ1Xgxmo3_h~P2dA0a0}DsA3@jX_&xqj2!eo%uBd{Pi4jr>AI${_6 zMj%)4DSURu=hOH^&{l9NK0D&`8GLrY=QOO8aM|S?$VTo9Jwb^%7qc+M1-WFfvt~he zezN`O#CnBw4zwY*3=?zfz>2e|N}Al*+b^9mJ_`W{9q3Hw0h5 z!e{(tI1N;VvIzPS!coeHf^eO;VIE}B4zRwyy1b9-t7}1nXIvkD9_V_XX~qB#;{O0~ z`~@{3GjMG#yK1~Q2yy%Gj8I1=ekzIa9o(%!AO4z@4n~3a`nZ3yx=<(>v%*t*OVl1; z6n{^jm(%fr965BJ8vGf#M)B;dR7`sv&`Zd2qLncaQp7K@!+QJ zyE_wow*&hL0Poom*%|6;jgxSp>eAz^u4;gKh-iy$F``+s(y`$f2%|snaV9n1qo?9= z298a*oUFV_lQir7a-{|6?9IRiY-g~)FG3#ya{sRxCxU4I`OJ@@N3aYqh&wo z<~VdDeR2_C$$!61P>nuWeK>XipqGoVbdUbuUnjEbU)~XK< zH<-H_L`7?EqJLOgMLDOu9Fq$j8HdP#p+&-_C@-gExq(bmw4Gx zWV7Or`PzE80$t$g&|f2o_BeJs8mi3lw&#^uz65n)g*raIC;k-x?g2o2SNun1kOSfC zSpcnB0`ORgluq=Qa9P%KE*xX{5SU@2EwPXBaY7P zS(X(T_ZSu0SgWOB8JG8@vD{2!d3K7JvPv2Z3Cn#?~;nLt=J_OYO;=+0QEd$vF$EwN2h@7yo%L7-Ti4b6z!{e)~kM`99xq|>WmU?#=V{b$01GdrP57k92V|qR$sv^jrfiT!d zDH`-9nvCe^7s%08YR48s%w}>l4xLQ31JYMUha9Xf&^GChGoT0zf9=9zM>|w>#)#T; zo`IS}M>=7??s)IuC?7Zt%zL;gPiy+^18z#FS0cdUP``Ud+GAu)6{za^sbFL?P&d#v^l4x339KiJ;sce2Ydo|4lOlnQ*eE1x8Q?sT^?*LOR6 z=B&&>Sk}%Qq9KH~Xp!DK=rJ89NKhjs>quBnL;j5m0F2r@xP=l}P`wQM2jC;_k6+pu z9%8F^XQvni_!6td{&XgqYYy)c2v-B2YOklUN|_dV8>^Km54O-Y>fDx!GEGB&^tg>D z(?}&XwhSpL8+$zmXWiIN6g0#*V45^X&Oghx&?E=qF9<^1oxbtPs$5GEVUrN!+G?&x zu}z2J9z$GPAaew&8u%4K)q?*`-9Qk*PAI))APk>vJnuG848#&BsHcJR@YAlm8}nmF znp2UIvVk<*ST+{7`MECEq|3 z`7ZN~I47SWo#`u2XZjgQdDZccJ^p2fe@l=RdlLP?p=dS}ZiV5a^BvW$o$9T&w^h8D zJUsby5Cs6p=1l=uOiemirN&pqf3}JjF(06hCGvN5Z#0mPK@oI)cxYUQ$9bS2{zUwB z-80oF;+2n z?)C!j4lzYgyqaWR32R{+7qxTxuW0ph>LYa%jWs|ycDCtdg_xM~3UhVuz74s&?F7k> zKFz>gqxM3*p;-=E;4SG&5=u5;_a1tw943_hy?~b8>||P%cFywIzp$dy@(m_rq)~5He&j4xh zw{Qg{24V2-c>JVFJ_2No&le`v!w8`$gIh3LoyAhaGgc&K$!yuoz5zQuzdD+-Jr811 zo7wA9aKAf@iEZSxb<{-6{Ik$ta1NW^D-E6iu${h^zuh@`W%7w$a_KTtwdqmBZy}70=d!l-0pkV2PZnaOOur?gwOY><|jTwI{I- z;RbRBY+w19u4&3shn2GV3$BB3Z`I$LiF0=?R-3<6d?UB&uddme-J;G6t=m;cqZx?Y zi*^2*pUlvFYu=7$o1`%ub?m{&YSgf@w}AF6Oz}%={wo^9s?2@Qmlik?Tltv(!x?= zHM~XShE?zuhz}NUKJ=f0j9!f%gUup4qdiI>oom$RfShM5$S2`&W_0!*5q5+YQZ>{n zqmu-48>R8$p4gS5t$kpiY$IJodpPciIjGe!egEo8*1zFl{i8yYpY<04j!nG#afU#| z+XNO|+SLv&j^?d_AnM$8cQu=Z=qswgIYbm(%r?CUZDrEUNQzN)8;Pq-97tQeP0;E! z26h4gi>|oDOmCwF(zbo}ss1K>jNHb;GyxY|0%5|zm6Bka#YnJP+`hw~#WOj+#80MR zXOaQKt6;^d*_clgiB}>~gI4QQ^wD4<^_2wdsZ7Od>o9?nk?O7|FY_KwQf5vL3m=Wk zP07QLs27EO^BO?k&G_P3)!-s=JS?mfq6Kj373MW5_7C%5<80&f){Y5O^FQ`0v~BWa zkmg-9`VrFv+~mayX;Z7!*!iC+#C;QRdoHq4>pxVW2iUHtL*9DEqa`$IXq6Z>M8S}$ z=}>jEu&?+=I0fXbVy$%1-zq_#@&aAag#wYQ$i7OX_C>1Zr>qY+|InP|vE9pTBmYN- zPw$@uKB<>uCVE?>wXTJ=zVP8EsU?`#R$@H-npHDDkV#sMZ+^`W&b-PNLX=>LoX$oyxdYXG~NXR-YV| zUa8YbI2RRtc$OPA)a&$XoOFF<)gL;&&`Iy8;7?^#3MxLuNf+~lxG!Vs_J%cpH5!`odTCJFLm_GvP&LmdBBu9J>F4S6 zsZM%_(n{;XS$neO7%i+7^ zqtLITPbXXsN1vj4>!J9xMs}(%>c~FiaXGA^YNI>xP7l?;3bXaK9(6@|qQUQMm-)*O z+j#s3r$=-EnL66+gA@y^UFf*Dwul-6HtK$OBkdZRc*P`6o1H@*?AIhp1{w61ZNI9? zN+~85*1;8fiu)E141`A@SjJp!ep(aFJXW3n`X;jm@A}l4tB;krN?px2*)2Y;*sGw& zb5a6pY!AnB2Nh&6nYMX4s>x~k^nA3gsB1bWowjia0PT4laa&NJ z?{>@RLKU)D8Tq*d_)YbqJ3AhxJ=p%IZcty%$Uxn=X^*kWjqWi4P8y@FP^BZuh7-x+ zD?RM{5h+%cAVBZ^(#D(3oC8OA>F=9X4n~kCrQaS+!39P!wl>XSf+VV z#{R%%nHOd54_vl+QP%#z<(L=Y+}uAk!@P)x{G%1n@7QOY(O;TSMU46Am(k#AnyJ#0 zt&y2lWv3^x8v4|%8bu`;$LlU|L@II+lt3I7Fr?|RtUrK9RKX6(p{75mGotay3X?(2 zkG{pOZA^AmrIxC4G`e=|ZOnRn@@&^h$@6s1mSz7^_5jx+8O!p=P#_^sO@msZrC|>3 zqe0DSgoZq!VTntFEY_wSpXhAYpaQ!x&>~^0%8_dc9~@;q3ox7q-S{xAe(V4cgHaM~ zPm4Z6RKaqvupU3LOe#j9jI9K(vI_;4;W2W}l3v zDixO}7MEjwSs$DtxPnvF#|(a0ZP^p;AWxvF=TXtOx1bkTsJ^(|%C-avwjp~n#9SsWJ1dTUD1!tVqO(=M%?E4k;Kq8n z`jf4$4~F?+MlJ-~*wT`4(`>WqGW=3*fYs1Y>om(|in-nV#qHd11^kfPVyU@Zjjl`S z3Ha0+l!50e_tkl<2r(&3fQbEm`|9F^s)5B2a?A_hqYjv%je+n?P^|aD3jZ>8X9UL5 zt%|veCCyMqH6wb!F<@B@W-j?Pr7f-A+2+dp;KqBgDYH>uHd-H?B#jSFu!9ps?0RSX zKSxt{CYyDLUuuc-p12nk48gb+T)VOB=&8f6 z9of~6sy^eDymuMIAhY+Pw1W}6?czYtw9o=6&LLB1@URV5?`P) z_^4lVcmXptoh7EK3U#@Ou^T{YJZ{-CiBP1X+dUR>2#@t)TO>o3L|~Sp_C%{nS_X5o z_Hb{@N?6#ysLQh};& zA%P%b3a~Pc!o$!ICx&D#4v7NFN5&!`it)qxXki@c)lfxEe0aab=#n(*yTu0AUOm`{>Dtsg_0$i$)k>9gUe}U+v98O z4wszxVl6S1yPG9lfgINXu*Z=YSPBs=tc8`Z7BQNN#CeZ?66v0}GA7ENc%{*hRfk1Y zAUqzwa1Gc-%==|RIN~s9vvN9~h>_4Y{zu;)2VNV~($Uv3Yt);#$ALb_7;FV~c4ZWA zgE__^6S+W>!Eu#stpx--*G~_j30^PFBm|eRJ^>_ld&SrgILVOvR)BAFq!{TfgtnO>N^;icDlG9{s`WMTuyQ0M(-Ms0N_aHa-skvfERz z!|K~4YgR!>wvBJWl!(%195s9Or=XvEKJ(TJHL}^b6Fn+L(PCY+i!S=KE_%~RiZY^m zmqnpGZrw`L82inU}lElzI8=AdK7FlHyS+wsl~iNci)z-4LQp z$^N`=VOJ9Vyus|Q=$aSc6ITn@7fE22Th@0i;=4&@+v~DzShgrjUoy-#e+&Zai)c;K z>WakJH4Tib#4i}oPaOkyA%Jkj1DW}BieRe@*izf*sG`>}Xvt#nZW53%aHq7Vkk2QK zHgE$0Kn`Z0GE$NS2)6GGjIRl&l-D0>72(=QE}+#Gr^d73D`kKtlB;k+RCUJqTz)_9 zvyQwA)K;jr0#?5v5E%C(Yr-Y?8MwYFAEZ^$Zx#rDfPy$glON0qgdfBA#x0-CmcN~% zdgPYc=; za6FIxk9Nc?u1z#{Y&#Td)RMB9Y{|>smgtR)f-wXi@5*o{Tk;x|+VQU4nZstx_6YD1 z=3)qq+>fF+;odhL3*q*UM%9OAu=*L^>h%~|Gn&;8bgQ4i>Q7;xilOV>U^n+G|6g52A|6i5v|$mGnUP^ zIC>I25EYMyo;ZG#B7&6ER$%?#5Kul$Q&!@s+$w=_x8RJO_1295uGuPnqUKVCI04e( z07>6&_Qsivuj+&4;G5$`s1I@$i(eD?;W$*vxw5t*M249Ir#8{Ypd)Hk4<|-O8+d3C z7R)}0**v-(3viN=u~B+#Iun&`XxE zA-FNQK&^za1j1ElRtxacb*4N*62S;1w@3ZOd*CPO>*C|nPKN- zTHL8&tlWtr<z^b|gzv?4B@R$EikZ<*oUg~GV zAyxcl$=~`&2ELO4`BnU8+G+S3cxVj=3Y!@6RmxcILt9m>$Hol~kxT;XJ(+$Zfi5@+ z&VDQhWjmk?bF)O@MHCB0V5*GlP_5EstE?J|4&OgVP3rQuUR{PF@yt^sSJe?+ejk-O z>?*Zvq@0d!Zdbm=L~RO=L5edY`nC;ohi^;d9>82}Mm~_-fw(@vDf@j}=t`B4tsC_@ zQtZkB9++i>v7Lr<@x6d4E}755%V62WL5B(5X^|Y=f&x@1+Ykk4uikX}i*`o%XqPCD zOjUP+qw}{VxU)kMd5(ah?Yt1$-&uEN1Gb9#YBh13pZ$d{(P1e1+4vR9_>&^1a4}F= zw#d3!rgizzcry_cm?X#NlGz6pFpNARk9Wg1B^i7_L*nYH;s}81Whurb-;4oHG+|f$(U*0REhZKbEMljVQdTPKpaM=>G_w z+QHS(EAA{sIu7k^fhwn|lfjE*by~n&?R*>|xn6ae!WJpwv^rTxNmi#)!r0PSJ;S+~DG?zG^$*4w z49jK%85SbyL|+m~`?(bWL#wTKJ?hkr{WC&zc8R*BpsFju!JMT8$8+|wy%~N3W3tbS z^-D|T#d;iBRz!;F@njB)#>OyNncGNT;7p7P-%wG-MGgN?fgaYBdw#PcByqtL&NrgG z$TW9EnIf2oofOx#0C!bgO0`qC{QqiAoI{i787%cMjkWg0uh`WD5F{EQdPyL1E>guU z>GRJHz4&k)v^73hLrmk2DqSthn6FF&)|Ds%je)?VL>f@-UC>{R!G`*)ocP$BPja7yBIw z5)-d~mDp@m9Ec?dcO*hmHueICo&?U;M+GXE5yvY_2ZqYit*?}s2?dk>M z)YZpQA5KlE&xx^`#=rpp!JH5<*2{SKq&BW^mNs7U8w)@en=u`WS{EYsY^t$(_q;-BuT5@i7c@O z$+0LZlE>E+wItvq5^w?4Ls5vNTqIex^d(S#e>1dnmCnUdWY3-6+^dkA$lJs`x1|Nh zgTK$%rtV|NWZ1Brs#X5m^3mC8cp7&iXS|UWrK2&aJiscv1-Ht}>mHW(#TBgC!klGb zF59(UjSZHu-~iY}btluy&BayV2@J@HuDP35`5G0D=S0bz1LbG4yOUC{=aw~NE2LyG zW@(?4hK;httw!G8xHgH_n3tlq8>F^}-P&Z5u^M`ap~LkXPXI^k%H;&olaAM^skqKY zoB7)T5W5PpvkLFvV8fgR9DLdXU)hW|cT5Pe@4+^PnBbq$1b+OY{otaqT?D8Qu- z4(iWM$B4d&OCJc0D;BCY?NZ>C^$PmI4g81W^bnSg4kAc*~W4eNBBD_p~6WPU@NZSV!`G7K! zLun$Jr)D0e|{ zep7s-OMlf?Q-!s4w zi$+!49w&<1qm#K3Z&ta7Wxm#jWmdX}Wxhr{OU3W%CWYNlGNWwj!GW>usBXCV`#wIc z_!1acejok0^mCA&tw%@ zzyjzYu8M4Bg1T|)3w)*Z4Ezb3Ax60hF(JHcm8QtVcjo^5M-v$6ir>}c7%MnuE}I$% zj6Kt<10T9NQ1kz$4*Wy(RSO-jNy#H{4$8If&3i|=%zjzckfFSrqhu<4swfzo`Zn7O z9V&k?n|iWF21CC!m3^a$Da88`JFW4nD_+?*%5Q+QcrA5fh2z#w_5&#p8G>k;i>Q{S zVf$XW$0CEyI=w~;vVW)E1nlNI8po7ZP>pEoWhoE>q#WpS@AZY)d zl*)7B)*yX0<7PGW&1Cj_(h!__(C0HMb+H$nVjWo9`g5Fz zMs^Xr>$n4VD>5+Ck;5^EBAK=u7+_zef|1*$0)$S2B+MFBE2nEbThJ#tN0Fw>Bm&4+ zArTjtWvbL&8uV?Xs#~hI0J{!S!JWsn3MljxF}du`wPlyuVa#%uF)wNG+X)_0FAIP% zPcXX0E#1ME38_>1Be(QgUHW7x{gK1gg-NA5!s!c&oYJe^(ha)wfA_F%_4Een#%XSs zfuAAEF%dYg(O;LSM{?{4Ox*0szL;X??ZmO?VUq$2GR`a%S>oI-6Go6m`|Z;w#Xl|csA{8U_swAvlN5W z&ix2>rM;PMmG=`W@bT`uBYA=8|S+hoR`sdl@~ zFclF(=n^-TM8%ZR6j4ZZ2_c+gLJ<<0-}k$oXYaGmKIhDw?(coyKA+R<{p|IuwVw5? zwVw6-7jQLK17>OnJ|!M}o(AVoqKdbLnd=CC4AYD|^{NrJd_&O!;shJjI6^m0)$Poz zUm!u_C=cYhfNYT7)YCsO&ca{{21wzPLan9$i^PV{e8Z5r!pohXdSti_Ne%BXJ5N5w z!8NFY(pP=?wgVZ4OP}_fvd3aI%woQ^ifpOr%k->d3fzN{2d`LfLdM7yNK@h99ha+c z@bleB?kvfX-uTn-3vqMETrP4t6-hq)7is*5;ghq98THVH`1ip&c^4{7?Sj4T z5KmO2*ESq<6>Gkjo7oMhhDb3yJYrLK9<-m6pD@qMkbf znBL=Oa1+ezIVN}fMvNgiT&dH9mJdhuLFy->xYZKx89Ni6-<6$4`5gX&BcIvdLq00% z3t$J9KkEBp1m!dPb4NbXbsYkmA+bUbjTy~w$CItXj>H7cm0VR{z2!=2FejHIIZzqF z|LC=IX&la7Y;P6bh(F_Sdv)9b+ELZ??f@669lj%$(1!R@YzJ6&hXkc)FQxd_EyZ@q za~c)&EGRA3-+1xQ4HJK$iifSm)7U{8CnuosGHeNcB36@5CXIKg(QzV|t|RZI1Hw!+ z9B!aJMi8xYnU${N$20>jpHbGjzF1jn_wU$wYxqX&;l`x<>j&js1bO&EC8lm+YC$3pTa0gzf&^G*(L=fQw zlx`483tUPfh)wWM4Ku7ES>#Jp0zs}G3mP?Bjh5L+C&ij|SHYAfWO68fOJMSANRB5j z!#_VHARmVH+eQnw9%T5Z804J^<|80{yJpVYkc1Aj&%syEDNK7H$;g*d`~E_Us(zb* zYKc&N+by)H>Zh>k$Q&SY#@$+zje3?bAHhUjJ$ja?sUoqFdMt*-KdSf_$Y-{~t-%K& zm@dL-+gEFXUrRNsmIs5eb>!V@Md$@^1)K^v3PWv0kf|VN$slPh;f$ALv@O$|loNSQ z8clz}WB~H_1O=N7XJH%dU2#g2*^&%GZ+^cRANBaK3fvS+TgXx?XZWi%q2ZTX;4j9$ zx`F{7MuPk+lH|WXCjXmwWB%1lRhJ$7_zjYRD;hAYK{ zY7tWv>;j}VgroZvRr@5P6Krw zQ=?4^Mm99~srb+^2j@*2@1R9Ra30(!RB%uzLiBDr0u{^H1Ezqv*O<(b&l;Xmt8oDFO=`(p2v=hpUwj-RnWeBemVLnx z#20l}>SdkzF#Bv>qTyuI(_Wvb)6YV>BaY65aoX!;c1;h!bOo`#ge_ig*9_+a0xsiU zl2T{aJR~Wb%;Jp=-O!%c#&RY=;9rv?h~OJ2tHxgxejABw$|vLoCZib8txR)2)-_rM z*;u%S9-3alGM8|;J}U=Xy!hDC8YaCOPU3N~4e*ySy%2^hU0*`pBq`FT(Z`BhE@(0Z zD*y(M7sXf;s3L9K_%CG$RJ{Qff%|Dxm3QM{Re2k~ZlUIzbFE+wkEvo@g@ZJm)jp~- z{1c$$aKGsOq9)Age-u* z69bBa7&g10n+f`km1&O2Obus-IUyqzlx7#XD_8tMlk#}&E1&#)_F)a_9lP}tI#XZJ zn_h+EE<^KuUxS(T`T6|12Fo}J0ev2tfrH)XVY(ol@h;V+tDgLx4WBKBAEwaFoW1qY4qpDmm>z0(DJYs9%`zotQ>h;s!ox4blS_J%dI zLzBElsppwvI+*?10dXo=JH}w;kprtfM@BWNy()^eli3f5JMt9FU@dkpue!b#Q#5Ke zoKxYoNQh2_*GfIsT0^^-eNx#aLm77wQFM>t2gi`aoPrSLr-#|EyZNrU5#Jp)z_@#0 z0wv7t&qUk<+@WFa2>e|em%(c^zQX@-C+TT@@{S$a5fRs2KS9s1wRkeOFCZ@B@=^4T z%NWQp>&$aQD3M&HY)BZPxPlK~XOZ zP2(7!y73ODk*q?AqFX(xS%?ce;U>b!SBTQkU(q*i|6TBBVqr2S=QW$vAt^L356m-f zlhb}k^LF&lQ4uiLbPSVucMA1o*y@*p#96ZvNTKT>O5t@^3KC~M0`Ed1GcLqOcf*6P z2Y%P*YCuI+D@J!t7knYn7MH>K#&?G53=-n%TRlOfEiy=_NA*=YfF|4Ish>gC@Iv{W z%wTQgRkVjV6&3OYRPhQW*NDI?F!Wg{V1bt>I;V?-Z2NRDD@vX z`U)~*lw^Ttlw=Y(ZFmSLIzEo5*$})4`lcaap-%{9k~we>mPR8Yb+?b72LzG7BTYpy zDt@Whxs!_R?1!?8vh)J^)eOsX^5|m2=R+Fy;B3?8Xo@*F*V(}|xSd-6UZ0->Bs?p? z-4L}Sb~DwJJ0OgfP7r)BMFuJVfzc~IQT~O=*;WCNG9K-3oorbdnu0Ojw zmMyzMrq;;)7g1$Ow>XBggobkysp9$+HQXES2)WobJ?o>k)1M5WgwR0=A6f!}jCH}a zIZ@M4^1}G1UCf?V?Ea@`RDbPmnih^$k(KQ->8$rZZIt6Q4p#f0O;G4Vq|hC=I)#>*w{fT}&jzS7DYu&E--s5vm;h=^y%tOWFp&&b zGgNuie0eXV@-)zI_Yvox*mtxFy$uA@M&NP?r*+C3) zp^SU5r`o*05&c)@OHUH}pU|V={-+^o|I?+AS=|1oj12{AV&(0iKgPMcG=x>Ym?mICz&i$3+T`GQk{q@%mGUXhldYZZK#F@a9 zM;W=vZYE2Pf?Bn`rQN-nruYSPQ!nAq=^~qQzLfPhX#TJ>M@XZojXk63K4^CLKOSp2mMR?$uTM1tA2obk|5_ z^S99E(bLf~Zi8eFx?wLks6*h5be`7Cd_F-u5s0s+?3FQbbPBeJ=V$i}t{>YGDDX)KQ^DETI z2~}RkSE<214s&+#*KxZ{EacFvy9+?RWSV>C&=$O5sN|M?NlGDM#BB*m@eN&rQSFvO z!ieF-9aD<7aiusDFit6c{18fi7Uhe54g44+PTFeJ!A9zo-B{_=vRYTw?*B3()Gy0!l`)7;wsFW=<6AKFkW7k9%mDxanVEBTM)6ORCg_6HUV zM)Pgh;^k>5d6GET5eUYs{gXN8fD|VR0qYgWFG!A@hBQUE;iU)&IWOfZQ6inY=vI#f zPZ0#m8i2L2>3k4Z;sL&mBeF#q1Xg>K_1z zj#T^)-SgBq?jaoaZnAt)j`Piay_@Lwy9@8o@6Q*+eN#l-&+OMUXjBya1o40r5f3r@ zH4Pd?JVX#*nj+%M%zjOSMiE~oh_8%6?62ymjITEP#e({WVWNny7R1-ZAofE?5#MO` zYZ^3)_(nlIy2+|`5S#r*W6lG^it$4{D^BZ^bL`Mu4)L@=z{Vk-eef>;=MpRq@o=7) zO>cPhx$xL9o<2EP|K}UxIUC<(i09Y)(NN0}&zbZ;^Ensn1$!S0)}`VL5ZUM zSUr*H%x9u0xVRnMSmeKG-f^D|2X3-s2X4Ic9k$^wqD(t}mLS5p4dVp1QREg;CRaY$ zq`2O64n8IuzgfLeHM;13qtSJTF7A3)LclYT3YJu(;~Vsts&oG7SLSpNqU(p8k^Os- z7Q3$Jat*!_W%qP2M9Mh=>EQ{+fMikT=fMq9#mhTPPW1BE}Y+mlWk0>BRV4YIF`~I9NFqv zlBY1?%Qha&P`4$t{tIji$C9wq&yG}ZE?K*ugrj3Rmx5D_>AV;?8CU;Dy8z5*c zS0ady+Jd^jsQ^Pd9F&L|()r>66nQNWWE@Wx{4Sn zcqZFe;MUxHmgQrpt~1>5@Y^iN98a~q#;?%Q7h&X4_Ygat6H7ickD`3mOI|C^Zn_v_ zqDy`r$&Unq$d4R0334FF9nT@rU9(u_rQJ|s*S}cH2b_-%`~LCQa~< zFQb}97OF8AA6E;=)oTg38X;V5bh+YQxbRwNXXGlnm}0DWrfFc1)4Djt<~J@!pRe;if4bI5`;bhHm4@GnRb}`##F;c z398{vI2YUK=T?I>>N~-_BjN>bvI4GtGFk!euxK*{y^b@c0*0PyQ5Tdb+8~$;SB>OZLxR)ca-&l+RBRdWh_SgX&k|IEz&A$1C^sGw&1e-Ug)g^ zmj#TMQE<&g_gYNst1+cfTSZ8%)mrbpSn`V*easYe&%;T+I6tF!2H$z7Am1Orks2rB zQtRS5`2lrGYfF1zEe5_!dn@J2!N)8>qKAYa$_g#B%W#;_E`0JkPU`<3UcqZm(-QrC z+o*E|FGJvCq0f$|ITOW;6?`$iS~E!m!jb?lATaq;qm|Q@Fp5WQL3zXpS8)W!+Au+g za0_DxFw8)uY^#cmE`F<5Va(YqiL42dfy3o%VP_{GP4<@*ueES4_RLLq=RO#AY-J>q z2{gHnKnY{d&Iu)qRANpjVFJ6ti^)+-2B8>&r)byngCknXwM;8C1RSf%8Q$fjV1S`- z)mmn!J#?dJe|JSI!)Li~MMb+6rHmErK5DQN#`5c85h{5B!fp6!%@ppm;5QIne|?o- zZ7Gx%`3p#~YtHvn%Y%YJ1f((8l1o^I$R?c5%E9p^tQj2kT+RpjB|Hq z!RPs6uKYEs>i&gK&Jn<{$uyKEas$$$?E?;)DBDVrR_%nu5-IHN1PWW+m9V9*RAn{l zYAB#1hr7T)tW@XWt2L8E9EBYT7%Jn`PKfll?<;&cRLiX5)yc}K!GZHA^UtYLqFRv7 zvBV>OCF(iuV4CYWMhhjmfEkMQU>)hwOKZ&TfL~w1Byhl60yqUhp7vmH4D;#;ejNkB z)=|HdKSUM|t_{W~kAXb+2BgdoMWMssT1WTAa@(R4MuLKrm0GpubuaaCpdR_v6@z9A zg}E03YFMt{QK16~DB7klA?aLl?&6&Tyd0U6QsQenezl!4Pl}7&OeqwLeJI{u&GO$l$LS7%hkJpw!BV&yYUR@CNPDoPQ|@#2RseJqKo#}~m+xb2 zRP_&?^?3u({)HJEjKJo3t9l8eg!f9Z%?rM>aR_gjuV|c)#QMAViT~E1!xE_Eh$I%4 z-GxR$n*YD8f?cYW8&`VQ^68kf46X+=Y%2uZS-J5I^x5%;&!Cic&AU%U8=3X^igqo7 z)Ttp;0U_-_ls?El-c3@ufjUq*0Pkuvw18il zSpXFsW5MD$#0(rcZSLL?E~Cj2=%$BIqqwnz47l3?ck)qLfH1>mYe>^;o1$3TnI#Oi7Zq(W`*$+xJJbg^p{~&R>g$|WYYk6jBzkx* zj>>Fa?zkw$sLyP~HK%2p0-wk>}GI}r4>mFC(MVUROW^pWU4mRv%japT7 z7!D>V%EltTX3ZLEI5=n2sx_IT%<);Nz_-J)pj6;Gn1gBhQMckBY*v;xJkK250nBzx zf!R^$pU+r5%GlpJFrzkewK+I1P_W{YJrQwLk~m{ zs`>+vO|PiHXOP6&63OWEtM6S7UeAe-&L7t~3MGe(4|4?uEaz{`aR!o=8@c6pbwcknlM{9CPOHm}-?h2UW-$_O*`JFY>LFbF1?HGnc4{~YqStS{uiM_PShHvd@2 z6Z(A}ZXPb@tNsIg>mpAx0#T#pfL;Twqo zJ9L~it>L3lx+ zJX)^rJH2p%Q_mZgqMp@G&u6^F(}NvHOYyd-jiHD!rFfH}_-rsIf|PUhrHn5a2XUMj zoSp&!NK~jdi3fE0!AzHVEmiI!o&GH_3cTJAdZ$kRfa!#9XJO5`i0UPNViyx+mO7ug z5?X!!-t+l>2Wuzw?G)A$vfb%q>x5-l|0LbJB$5&QH5%v&4OBtZRr%}nrwjN=ZQw9r z{@5@g`qp(ric zl#-Jd{t$i#MelWcr;;tQzXSs#n*KU`a>y;ib7VXeOKm@iw8Imq4}B4_Of&wVFdwU9 zORd6uk0(%$#PtV%9S44;FS2fl>kn3EC|gE@$C6Su;oUHK+c=oQ$E%)V97#_IW-bL& zvHqa2M*?T?F$R2L(fN)u7{TmbXTW>)=nS|e5rV@lgxPc7`5bcJQVn?)#NbF=J5J~xujd26ExPhKylxT4cx4U2d z!%(an5CqB%WD|#S1EIx0o6rr6P+v%M`!RF_aqWe^@5YH|WoI4lKQ49Z`L#u^KiKIl zr}hVjNI7p+8=)P4Fpk~_{$Mm{;=T^g{;>xL2#Y%klE6I_)D7EsS|{#BHtc; z*hTTOTqh2f#O^Bb3!PXXi9J+e8&)`YIUR|Vz%<7l3~=l-mtR;Pr>N*)FB(p97}(R> zRpo+>M7##0G0g~WQ4mSfhfurF=L{;UKj{YO@H?$}w{!UijoX49g z?=LKeySQOEcw~78$MH&KwTubqB2WWS-igj5P475LElIf#io^9Gswy!q-OyyQCnDu` z>vPy8suqo%+32`%L#qw|hFm~hd-XBoXo+~1f1z%AL)X119q!<1Liimv%k>S4j@agAc0Bv4Bvu$I? zTvcD#1kJ(}WtAS~xl26@vSSTB$NCsAYgQ7e@v;2uR%wfv-qiWyAQ<%5wW>b_U(uYZXX##jeIYx&aJi!Kj?1-bp8dB{ zd8qk+oJUsQM7$_VbnUTOeP4h)&Fgy>?%8=n`zNoOp9E`RwXQ++TI1#7GBsr)M_aJ% z7jOL+es-&Mw$_DvB~wz{I3y<1bvo0POf|O7SGs`u-{w9hsdpisIES)|Cd5M znuJi->*c(kb&;=Q^xqdBTjL>_GagPLnKm#iN@f8h)P!WR`Pr4som!mZB~wz#d=K2w zO#OAH0%kInKkZ89HRq9*k%zBNyolmOv$si_O`F2WKob?uK9-B(an3_(O8;g3*g12M zqouxUbUyVNdO^LWv|EFEy$m-o#ZmF7zgZW#ziEH{^;16m&DCROPLyWN;$W6-%zFs6 z^q$$$GtXw^BD0Rv+PRN9QnPC0D_RzqnSA9Vc|HQ5QUBIOw{82|lQXYSValuTSn8FAQ>S#~O3a>ebUg@<5Tco{w7$oz% z*|KZxkI&W@_GJy!7xv>Hj}NVm=^r#(AEUsP$Der43(sP&f>$ayXOm3goaT+37?{)+ zPn|h2poaaPK%Hayxe`+mm^C06=MT))IF&w7xs-6m@Ojk3d7O8IHeZ}mu`j&>ffujf z!JXkP@xNVwW2@5xlRNVnBeKD{=>27|0xJ(iKa`u`Kfd1S&|C|2dMf3n1S_PwWm9IK za;B6{O--dd3cq3D)LgypVZi}Y?#2j9qC`LTdB_eLuaqcP5W zZG3@cy>#yc1@04IfqS_Hmi5xl!xONC^IGF$kavdrXg|tIiKXprkK*aeQNRNd&|ig# zbDa0?(wE(#oi+VDq0ftdeDsftr*GfYScck$B24*(6Ai_iY~v%K<@gfnMCucZ!8mdC zHhLVg7{V%Shl^V6&`b1GZ3!enEP|YSE1&^-94G~i%@QojYoL~XjImX$a?;BF}O&WBLyJK{@ys!J($RYoRy6eur76N={q?wQ2W zM|aV!=0{;R!bKixisG$I_J`&2q|m(31!w@cU>uKGY(m;I&aH2V_|{51hGb~##~y9H z9>^Qk``~U@aL;&{IFE3%fpad-Hj=s43&8zxC>qj9=cU z#w*;;BV7!xr$ElDI2>4unK#t43~c|+Hq2`ri$4x{wZ*>;0O|v6N>z16I6sS35#YpV z)Z(9`exWL!XvKAmQ5)0!*}zNvvMS0jFO!`XcxgB0YvHNJ^_P^i>_FvjcvUYQ0+k=) z1>?MXD{I#T-$+{%T!UYITIm3DUtsC#ILxZlk~uvsR4>zu&g^2KG7q>gRe%#S|Dyo4 zpWv16#kHcEQ19o#G#UmvzR)HRO?QeKg3QGoQaIow9ft~_(CBsqAR`DSd$$%4X;2*4 zqCtac2Tx}k10f^up04C1j-m=0=`0?bglD_vTF(sg4M_2v=XMoe)q!6ZwWRB$TkN&? zAkYp}Z39IsxLuZRNlN8MFe#sAF~a6*rCM5Bbc@EP47@4M$O3%8c={;g*FyqTlkpVq2_WnwhKWlf-TP@t-vODP9Wqbhz) zFAr3;auXYAk+CLQ%pe;jfvJ0q^$3(CBG+Qo(>P`z;56&Y%ic&U-Q^Wd>E}Mdv=nrA zzU2|hn@DPSgs+e*x(OMLm>VMJSd=ffUTy^r~(DR_@ z;!}CqnzTUWRVV^%8+Q050zfBTLj0^OwPNQSsalL#W$`d20!~D+EB0?ha2Tj8hpx$Z z9ri=arExN3bQgiPm2(k1kgM0CWv+Qx0RI?W~;K-QmwdVm-wmEQa zpz@!{$v4>O94yAbV>;N`iBul31LenxD^|hbRs?eW6+ufcNGhRyaQQG=260A;* zBY&HapFP*nU0Ia>2@M1!H?@e_htk=J7c3(L2JGdeVynFkCj&P)mXUfE5rPsFZ3X|w zk2?70v3Qd-{!-va|CbdTeu`CDS_{AI;T_3y_gRh!ONt9Ux_NW`@LdR65XE7nux z{lJh~STgSfdEm=SSBDVrv0U>+2unU2~6*Ev`-k0fuk<%>eP$`+{N4TKf@`++WQO29O}(k4%J zmPvTl2>>n+dVu|LQNDGLIpP+t8z2vQ>GB4I_jb(|6|P8YxEsbwX_Fo+=Q%(`9z?mK z@x79s^mr@wuNS_aK=>2S7k8^jj!bS(z~uGtQJ7|Tg;z(i@1f!yChwc=7v2(l zrSM3P&|?6hZd=qEBm0g{OQJD*VA44D+Lg+DqPPYqBkQ07#7h-q9E0>zeo>0v8=W&N zG`(wM#Twi=f+FXqb$!p=Rb;Hm4lf2mqw$!~cV0`_cBo?s@8OAc$+a;}t)ZE&*U)4% zzXFIl-P$Zc*JnD8oJ|pLD$BHhw|}Ntg5{k+oGQa9EdvGOY#dM`h`A6f6-lJB5R4q> znkDT7F&BfTf|zSSqbtl3FWMsF4rWQ7AnuqV;!aKOI#x^9h`6I!(n%0^Pl=OJs|tEx zXj*U~O%8LDM%SG-m(40^QHtjN|XVi#h&ojdOC}8h~g`9FQW`er5?4 ztw3Xjq$s9KV-VvUKF|4k?mm2oX^2^JsUW^AMZ{OeAWmMfmzgCvmK7Xdog(7vVh|@@ zlgNs_+AO(F5Z{<0;?XgPlXHBdSu$D>k4X`6X^N^i#w;ln#1m3PJTXO%CzvG@iMX1L zL=0|d9x6P6##L7;&=hQQnqZZqN`%N%KM{x$$Dbx5GCg%7f^`uy2$5<(5mNA+dKtBy z>KUmM5v+@tL5MuyCz8A*4BAtxjcI~)k&5zBCv%xIB`;7tFLfe8Vg?~nn>vv?Kar%4 zW13)H#0)}YZR$kU6EyijsUAl?O|ULv1|hOBbt0P-Xet&jSQjya5ZUS{lH9FqOPz>d zUBnDRWV@e8a%0?)IuXIT#azTJAX8Bv=0i3A_c_W~_oCWmv@?q&!|mp_lneAmx8t_ zWJ&5o1nVMZ5F*P`C$hp%qzOMq&_&E3L~2tfQs*bqgr5^4%pgR#el*6Gl2`nCf+qKK z9u=G>SQjw^x?olTE?3Mn3)ovS3$ih$0>w-V_q&@TsIm`A4MBGO4xV6v4tGAVBp6l!ZI~bt3Ij zCn8uEF@q54kU9}gS;Yj#NqjlPC0G|RgAnPMI+0F(B1wEXhzQn2%pgR%q)wzeK~wPM zGt4dKG~%tO7wn6eu|7DJO0E6o{}p|nYLrcN^tlJkz3BlfN1uBu&{XtUur6W-kzIc3 zMCj*Zv>aMmn7qz2_K3qjE(i#NhE`9Y9n0u_N)s zn`W9H2ppDa4oV3w%N#@x*jyzI%f=?sRN!*VK^%f@7GJJ8D3u}DVeQO89C>XPUk7tg zDkHDM^2|XUQo+~J9F&&|Tqko7$61@@uZuaTlfWguz{Ba64(o0X>XHJ!Su}ccP%0y_ zv!)aDZpqL*qqC|7TJod-Jwu=+PqWbG-GsJgJ-|H8LR+)u2<|xO#BP4pT!EH6Dd3(b z(2^$w==lOIc~XF0AkdPB&`nqPtc3zCc~Zc=M4%;43ed|0TJod-y+WWRPYTer0xfw` zfUXm0$&&)~T7i~4Ug(51Z{AI4y6G{lJHMj>9<~!atQD%}?AHSLWEJ(9yI!GxmMO4> zIHt^K>=0`3I@@h%Pn5HLPgUoDnn;xT2o_*9Xh-Kf%Dn#k*66vIRWj@8$q@cjGq_)rIq4^-yM>Ga!WfznH!VTj#G!YV=+SL3Ik>e9I;N(cDA;5UpffPt(SQs)v3 zsoh-g2rg6bl;z(sSlhT@dd^U|B6kKTM96w3vu;&oi~JR!${))5$AtTF`r5|&(GU^$&*kdVXwt|{@y1X; zO85veI=&wctBL)*DRe16|NJj}Haa4Q-bU8ReT?q1@YTs|fMC(sV|vjTPS~O(uYiae zY#-hq@1mHhnG9h65d$ZL7Da~?U$v6f$x%B2FJkjv~?xfDPI4OKq53{#+XtXz%) zs5(3uqDjaDL{pB^h(5&b$B^~*GQtBs*UKWUEm-09avQkM-_2G=eHIu0bKgZ7jt@z+ zfAMLkTXa8$vD3F-?(d-MS?}NEey9OL|5niVpI@SPIwjiw(G2}Gp;e!m?`!^XON!rjw^<<^!qSlXATzqViSl_E1Tx2%`K?;yNtS=k?XKKAjY1&@Uowt z@b7`66yV#5o&o;x)ZjZf@Fl6iORt>#6eNegM9S-&t_Qm-ZHaP@SogYZ+;+NJD~Yvx z6V$pn+xV?p?12i0!qj5q(FDHZU3`)84!&g?-(^rldcT!0=v48&i_s@Y1RKg`yZB0c z{M~#2_$pj{7rOXP_wm>M0PuBn@%^e!{lEsAue-*|?`>#Ss^$F*%jHyg|Lx*?+=s91 z0Px-G;=A0%ca;y{=?8$XkBjdR7hkRq-^b9zRLi^jFHU)1#xWk$ecN~+LxBvd9DT75 z0N-OSzJIv*Y#+Y!V(=;dG8u<}y75C3`rXIHe~63!93TFV;UiNn|EX^IOP%uXKEqf3 z1Hku~i|-#UzGb?89C@C10QiQw_>Ok*mH6uW+mh7Fo9^OUH`Xcd={|f99{|1=Fh;HH z<#rceSl7o@+TRR30DRZD_)c~4J>kRm$8D*Xx2=osza>t2NBZzRcL4ZSo#K?&bnzYS z!*|sI;JeMm*VDzfN$Z~@zeD}_*uEBL_1svRiTxw_JvWAa^R(A!Z-=A7l#>q1vU=_> zZRbvamZL(jM;EP?v8HchcF$izKNxk{a%**ry}0;W1HVz*qUY++uWl+QJNGt&6M!QBQf1fA}!mV~%;_s&%F3qwcJ3)*Ts& ztDd*#l(ZRtbkEze$L4T7wKX&g=k6YDzT5DnI*)N^rn$E2z0h}B%&ab7d4^%TiWSU8 zP=-BNFQt_p)pcF8KKqO^TNtZb^n54u(@1mUy4O+ub&>R2T&XB|kUe`0**lr+wP-lp z;ok!NcfiqM=DR)nWRKk?{Dponcj2H5@*AzsEZi}0ctbZ=9aQ{i?zakMX9lFe=wk}H zfYv0QgdaW$TvRoNKGquI`hSV{LfEZOD7H!Ai;)Sl!#tg%Fq2vwJ$geT#@D0eRqaX3 z51sZzy)Sj&!7us)nwbl*acdp6>&E3DeKUNF$Y07w4S;}f5&T|==tKsuUCg}=hw(f# zRX-vh)S)Avo_o#JrP;WF#Y*p0kX_OevPZ?4`_$jq{^D?)xQsf?#u<61qY_bj9({%A zvthF>xC4nSHS5xaWq@4(bBmrs>-E&}e>3S=e1BBZfRa7LaYoj$Ikj80DPIHG=qB* zVFWRh+M9(~!tdP}&DK!w(O3F^lrNNJ7iIL^ReDjc@!6$??(nT35o4d$;2fC1(bjM%cQy*vE4`$XS6|_X6poB= zo+qz6KB8&h%rjR2q|+)2OJACxuwUMQ!HI?JPkQX-%tZEbq~BiXfeNxdQRvmL_hG%rg<1c#k$t{`E@DQp*`CrQzd>x$U@-y3WzuXQ8 zJ^NP0yd07&O2^7ZK|b5SLD)+Gh(hYEvpeXs`$IMa$bX9f69J%NzRBmPNO_DS4Z!{l zu;pc2xc^d|d=~Oh#Y?Ys<*VZp)n4>zroGq*=~}~b(PY3-Go9n;$<0?#2s9t>X!Rtc z0T78FFCsnIdk*|f9ykrZgp9Z+cn$QSv^@?bg{vtN=UPPP$|L`vQeF0N9J z=xlL6#o1Cljt_zwho_7Jhr!Iod^n*F$^&@ngZ}6Zs}-jOf*5S4Bj`0Gr)1H1D8Vim zV99)q7vnH$KN?IsGu$m6sn5P;kOhTULl1T*Tbi!c?HSd*?#K}iOO71h9WHF_89w<| z*5X>_6L1V^%z?_FyNf$M$5>3u?{XKoA~$4deF*>trjbcMK)6c zQiYaSJvpF5-b~@X@!($nj`%mVc*KOt=y+r%R4q|FqV!etryccYJPls!PuqC?fzIH* z1ZljwiBo5-vub%pLly&?%I)L`;*K4BLQft2!fzSc9U$a2se{H`CJ$c>sB1!wzISQMk z{mKFa+OKH;1qOWYi6g-t4$sN<_OB#9^~TJ(xYS0%RGe?5;@Nj02c;FU_+G!tk59qR z+8rAYN8d%CFyeyikM#N8C?OB5t%9n{+2liEuEFhg&C__Wi*j^OXcliXgIlZ7(2k+|FGP8YGN-a_ z-j36iaGFkG7E-dO7NT2M)OKoNTdR1hT^PM#S?>XV2Ygsl%0bMW%>S(^Yx4fCr`jVbQk*cd9 zVzI$pH~|cgW^gC!D^K+u0!s^{^%dO7My^omtC01D=qMM_(MF>#Q=f&)5~Q(zC-m?C zo1!19ZzD$d^)2@MInHOrp?I<-vpisP}IR%ybjN} zm80hmawEr+D5X`@PA9AnjkAh!^~=Ukp;eTlUpAFK=9{Bi1U#6|n-)7qHx?3)jO8?t z5CYMLxxS3IOU8g&M~Vwc-GM7&>++npF(wks&92I>DO|3 z&2_%cmDe2g8am%Hrn&f%PR8y52x{*k=RRJJq=k*HiS#C{Eo^@9LJhtbGI#Em0``^!m%B9AP*_lE zsC)4yeOivvYNp`knFqAUG|c+Ym0Gv?eIvTqQK6CVbBDuV)-*)$+k)R4`2ELMghc>> z1lPFwFVp;E!D+)HALtYXis@{9k%nkwKY+?~wh#Jpfezd=Fe*x|+D9@6t_=2z=M4}!`+RU&0vEW4r|@`gvs;hk z$c6Ee{1}|_+@bRX+||p62~MBl!~VPm-xaHuw-8*eoclkZmr>zCFCV|OS-m_)c=GGz zM@Ws+%kO~=!uILqLVzaH%T)rMNG~TbM*_XPN9Tyw%K^+Gddc`g`OCAhqsOD47%!C} zZgJt6?4Z)`--e)4jh=e?yDEP#ScjV*?Rmw{ZB#@IEf36=2w{ZP!n!!atYULwy~zK~ znWOofj$uG+B_Gq*nD4gTVytO2wlv~koX`Vi*_=S-@8~}ElJ9}Z+wm+o$r7(f4IhWv zHsuOcb%QHf9AUK;(tAm|xjIlemCM#gauX zyai>J9{Jei82kt>G^;KJ2#;4{mu{kx#Bh8=$rweGe|z8((;fma)!kG1&lDJS)Y&ot zgL9*M5bQ_bDOF!qi+%B$Oa3btGYImJx3ln#c$bMT&zVUocQe z{E95$Gx-&+Bo7zi;+9Wq`M2mU;Gn3U`vX-6ad$y*34PHoxNrD z9^aI{c>H6<4U?Pl@`&P$#YQRi3L^bse6)HS{9c zlNwT)({)8{G;Q4A5mQmq1e6t}2&Chfskr*O9zY4}YrbM99o3cH+goj{X~=2f3Rc_K ztQDkKLBNymbjtp7dK6t(AK}@qk=oNWQ->65rf{oe|B}G`L0lSUE@5mbyso_(q>ygq zORS%Ha)cMFC{VRkmLqRO4fI;9Qu1gQa@3+usk{Zw)aPdl(XXIezC`@&r=r1Z|IxX^ zZn_JQswz^CXY>-|4j7mIjunLb>Kku@fnr{)=f*(gN3`ZU+Vv`%1CtC)S&!F%v66`e z*}M*!<~cys)v3GU%ySdUX9saDazB8eX1tZZjAi$l=UUV5>#Ow{0;9}xYg~1Y!`Fn> zy@~Za!duVUJZHSZdcN5;PYD6iVbV?o??WZTn&%ftv1STmx`H5I_9|u zDGtuZ1cL}kW0=9OsQ#)KS^ZmM%yTzoiKaXGt*szuM$yw;)r4ok|WPCEtZ*sHTdV)PGASOJK%2+ z{2iqEin@7#D(VIS=K;4eSU-#4%j3bH*5EWX9pf^HzJcJUF)fyv2^xHlNJhd{g7+Z! zcBEDNxap_i-xGN0)Db?D@UJ4xthy4qX^BIz;NIm{-Ky8{L5uivy7HWT>;E~kPpqpf+lcJ9zLlyN5S>+dS2qk_olRNBVqCIuD;52Y{mQM{*=P9z3AI`wF;R zNl3-nK=3Z{;M*@$TK}eiDi>0d{E%sOPa?3Ud!`Xe2G*6-dB!s zLTOT04VD>S`X>joz5o zS7>3HHT-Z9d>f9lHH=22$-%{s7OIn2|D&S?aNut19R-JhYq8Uus8FU|--lLV@j#lD zzsKs^B5QtrD06;hpz;Kkh;z?5h$cy9wQanv=42&pPU37^#Gp4J7b`1Vz?_iFXjB0T zps&y!Ro(SxH$W>#jx;#z!f;nqYtLUWEx0>IW&ydrJn}AT4wa$Ci!FoYw3oBo`X2CS zi3aDhvIirD)=k)LFR;+ZqR^-;J>R^Y%K9P5k++RFBiT0AYYE!MIBd8l5)SQ)1OWRz z^%iG_>tc-p@d(|tBcWm@{1+USm%WeS<4|ixLtpm=0Xf_IW{_yu8M_`QZvJH}oI>pU z%P>%l>R;E!VVFU|F>mZ7D&;rE-Wm{#=LE> zvO244VDcb_{1jhJ^V7hN$@)3V9_reqJ0bmV5_5C&qUYDtr;D>Zh^P3jY;P^>L|l$ePKaP zpm`pi?Zxf(qaJjB23Aa|F-UKpt8v zJhxq}d7vFz82C1?s;uWYx<7vU# zV~gvIeQANoZ7FQj6JBdGxU`~p2~IN&E<^>S?`pfRXYrDfKw!$v(4C&ag@Gy8;Xw~4 zj7R?%3qn?x-mB`x8d!T8Cc<*8tkxzbkfMh__XG*G`4fve)0#X3n8*KaJY+5OL@)7( zoC$WTZNpb@Z|D1G@~(BIhFsu`c2sdTr|!+-d8oxWlYRuMY8(4dY&p%GDyTP7wbXq4 zKA#Z16_eOk@G)SiekTK|HE^Dz0=WQJ(f{dS!`C{#j%sHYlwpR`grSH=0ZjdOu30`87Go<#6!q?y4L)?#WT_YbPj={~V*Ib~*gKIDy) zE^no;`Y1ObFQQdvw;FN$2h1o04b|!|kTKOckk?zB83wCtep;nI6Kw%&#L@q!Yk?h4?rYjp3yObii_~646)OgMk zJSvg{o`Z?!c%;R)A8I`Cso~!Cx;cM2U-`>XbeOKYRQ=OfcR82`OW!Fy36_SQ?@batQdEB#9yQS?Jzvsi+Apgy31dnO>~ziskqC< z7tmcEc4X9DegFuMyL=0;j=Ow?pQ7$^AwQu89(xjnqPzSA>}q$}HpX3ci*c80Aib!& zbgIp0jpT&>GF_@e`O6kb{pDyFrTEKh@xbmqdVEELwZE+P_{+dc8LcrWfc42t9GX#n zN7uAKB^Jb|mEX|?PY7usfSggQYBK?&oB{Co^vgDU)s);nrqcx)e{!oy{NpW9TiVWb z^YAg5e|!LD9|@y8^pCi{hjDfUqu+Sf%27iun)i>B#QVL8V|M)h@heyr`PlXZnaom5 z!av@Drv(0SFTj;ZdV>w0g+9?+`N!k%$+2{xzVa4P=sE#&q2$9uqxLO}mW zL_qHGkAIx&@sH&ssQlxXNcWZNX2BlkA5RB`c>ky=CGw9aX*@pv_$88)`p2agABcav zQTa#MFP2A?%av7Mifv-kCH5iAwfbfB8dzs#>v*zwu03#@UACQ9kiu)o610r);ZQVW z#~Khfq%4~cH{ynrcS-dm4k<_BoA}7Sxb6b2JbdJvJ)88Am2ghB(HVPXR8SxxWPLbVpc_uyP(O}c@V zuVqVciB4#tH6}BCbK4C)%Os2(2f&^ogprIVv0ReObm_0%;=^36jUnz(4%VHXmKj)@ z(Ryl2G4F;-$1m&tm2LP$p4{KHrAsq@K;)@JF8*#3)R}&!6r3mYcg2VYc?E!|HvOAa zYz?V4@82E~@AV8w`u$r=P51Xl$ka~76#QFA@1F9KL>A125KMBA~B&gWeDo^2NizTqc2IKLxE|8Wu%ipC;^H#Avd# z`UU1t?(9h9@D=D0Br!<7L&7vQQi}qNL^&g)kmduwRlx7GoH1j7o(WJzJ91ilhVwOk z+@s<~)yT9T$&v3M#0Z!6IO`Q#4muG3wpaN#)nBgfgPs9RQg@q2NDLDj2M(vr`s2WE ztg2?>z(**;Byr$f_@?5(pB*3fP4^~!+*~*p#DQv$E;>Hq;|^s#>wa!aD$U}Z-$i}g z_s}o;I8N&k#7|KlH=mzS1+yPQp(G9jyV}QHE>d%R z+#T}fbej*uo7cycQ{K*aPQd67;UE!*Fk5U=j6O=;*_Th6-fOC{zjp{ zeO+vIC-<)}h%5V(TixPc{|uv{Ip<&`I-!4Me|rf1D?&kuCtC$3=kpz-VJe=alGTul z=KXDFVc|{eiuU{4S+GO$F?}|5GD|TDf4dM*3F68509Rt*OpwnvT!MZBUC9=F@_63E z&xEPJ&a_z1o2S923%KifcOW@3As+irT^0751l;w!FA{t>(%|zD*+D1?f&O|J;O zf9wGoGvi50Q1#54>~H@|D97}-F921AK;lUt0&-70`CJ!IJlTZ=l>?rMbf47P>vH+} z+aDu2K|HA_C5k6M0BTC#7f;S4o@D*)aad2~j!zmpZ&Z7iqN^UU-Vs}x8ta1_F*AqZ z*VoYBT8*drRvHn0?WYSkPBi|!nw+f zCl><~)aVD|HnzH4Y$q25J}&lm2F+7J6HBx^p$Ort0Dz^tfMpXEE}sOCACw{R+4zh{ z3tOtl9?C_i#)~r%%>0Qjt$6z)Hn_Hmd`>?Qr+YH$d1(SpPZLfvaEO7zD_-~k=#5ui zmx5E)*Q6P=*g9t$85XRR3bmczpaSHalO=k1z%~v=R|GgRoqhOK)J5D;i1L)S@gSk= znbnEkNTD4lG<>L@v-!NeyzDi6E8W_#vmq?!;WTNF40e*)<0z~>CYP46^EA|da(g@q zj>$H%)nPD@^$ylvCA63_AqBqYpRQ!`&zjWj@jS}$0PRtDT~6McvBzufC)Xc!inGTz zq3vGICqvqH%})Syw0}MzDE&w7BZ^E_aM|2p;<_OuUu{c z7mhv3PPMmLT`(>kepZ(;0;}V8-vhQsKc`9U@u8Wlf>M`LvByjwr*(f(_4QqKVtc&u zYsVh*a5@kT+cu_tA8U_4QGb)zW6M+ZH!Au{0>VglcVr^fWIV{C<0a2G@%b%nq_5LR zWA@vr@$1QuoN7<~@3NnuiS`vsAd}kjtcYXJ?Z8?S_FM!m&6x3oPYD$7nH%cS=Fo4APU6-uXlz0t=}o^bSSizr8hfbiS1 zNFH4F`@pg1C>N?mw}aV)_8bx}Cb(RPJ%5hc@XFA?t6-kXsn~N5AE$dxR`vB~JFz`a#~6ufUoY+K*z@ZRvG#lt3s-Lqti$;N z{`U3kljNHO4dHL8=&XTGab^DtEwpqKRKzpqv`(XYXD|LHaNjV>&y$Y|($$K;Q`WYODZHxfdK6~vCYw&X3 z5}eyLAr?>DYezt^EPqB>;Hg!?VXvJ}jymN$vF_;p#0_PPwU z93BV&Pdr?UMTZhU{tx!*=QOFk9xI&gaXA%xoeI72%BwFpWqsXZCbrjYpE~wB4`U0e z{rxjmwg8744~M9WN!s7Z$MYL0WPySc52x|@0OMhHNR!3G!#;QHaa)Hb?XeZyl5M16 zbt912f{yWNkEv&UDU?Ox8u zLE3iBmjHCM{{cWy`gczuioN_Iy_@+E0qf8k4?joSF`}~EDY8szkITixPjY1`_Sn(K z(GKFMd5)7q+8$d1!f%fvd2pHej$@BeE>w+f2eS$7@hst@hs%Z7XJr8`lq$G|L^wb=QOE3TGLns*SVaEJ?@3Bc{yEjoT{%+suJ7d0BoO9HJF15 za%GRRcf{J`m(<@R_V{yqexpWA1O>+)$MD%_k7|A8<_S)`+gy7YXu>|1e&X0?Z_sZd zzP$mC!8We`bBuj%f>u*Tq(J+u{9S$u6^z0 zF+R>Wv-CAV7EfElUT7w3<2!>WE>i_ZdwKDR@%DKrt=ovoa)8J(seK+RTvfTU6#JYC zdR|%f6^;(&f)vfsDB6mzy%foV%NyTx>@&)Rs?qI0n$SLHisN~}<&$U+3SI*gh9*b?mbgHK^<} zB~{RYdJ`BcFZt*_=J5r`=GLti3$>BgY;W9NnZnZh>R4jg442 z$)f1?vM=n9G9d-pW7@GwCVv5!F(+NAjbtJYKkd2weN@ zaT>JU%XuNBZP&cW;%V)_5fGIA$Z{5ZttvR|as6@e_E<*SF`}|uA+k(rj~3jOZT#fQ zQtWXr^vTQ765^;S+Y`0N&9n`lJ&NSP<<>QhJw~}uHM$*06WZg!!bK*R<4TQ+J(l>m z=nO8L_A;0DXjAQ@{mrx|V2|vd{SWc0pVOrFI6_=vcb8MK$FUARee1_DX~4a z`@pfs9jHNNk9U3?YmYBd7wcs_EUv$~=16{{MhpN2r@hSQv(Fx7xwk&w-L5z&3;A#e zX%X`4^GGjp9@Tl7vGDJ=QSe7OKvu=E&ZC@Pnhqvo#-n2MKdbX^Il`s)k@M)M$Mc4s z=0~14WZnC$^N6E|JpbTdxTPA~rg5NXwmAfcxW~}P_jQpinA+E=d zfKHe3H*E95QHpJFXlK`2IY5*L-L)`Vaz%V;1j#sz6X_m&Zh7sB2Uu7h9&-n3-Jg zA-oPG96d&*fN?SDr>-VfTw*tevN@a4RFHPe}sy9H>pdp{hDSTVEF zN%;pUSTVmAFR_hoV366suox4!o}5Y!UMk8!2?9$u2A0;rm-00KY$UdzSn~)h6NGT2 z=O}y548NrITUrgvLVLi{c`(iMZUqWxEJj&rY63PzrPrt?Nc8%NRepXPzw2grs^ zUVa^YoapK!HX~6b%ba5Iz8%h7)nVF4l_WD&@;$ z7FHaF{+8milDai;u8p;J+`E-!U8qkC&asWwBz9?DHcwZiSSjV>fg#*qQyk_{6a}2a z`n?)h^@QtLU(g!NHKm=fPuVse*F2y&t^sr;^uRg7HP$%)8Lwi8SoI-xsQANr;nE^w zZ;L?H9?`S^YD}#iOejsbE!2>^JrF18&#so@^E!Uck< z*tq~wgndyZ#@@)bB~bYr>`QI1ssQ8k^;JAgBv6S1*0Ej|XTz1|ST>VzL>*6F#i6&d z-bldgP=%!qBFWD*<(LWUV(Jgn_mv}}>dWZJloLcm$56N*X<`HCspWH-q7*hbk`2%8 zP#o+m+8h3UudI7o6R4a?#`Bf=1S+?HwZP$Ip| zIcN@11J1z_{|4>S3w_Id&O##UubWeU!1^na8jcq)4oqsv5KiKISrtOiW)f{Mv!aew zNPEGpFFb#y9~an9X#*ZAWK;O`v@}#|5d}15?w@d%nWVxzkh<}3rnbiaDwQ=KsN8cj zQ&;6UsRyT}=LafR9_zdV6`+3jb0V>Br&zxM9=}-Mm=G&giJ!Yc+pU>W%X(AWNl2ks zk1XA<7Ialxb}7nY8~;Yx?XuaBYSjPHH9>QiA(J7+IwUZK+hDDk+zxM5)_e<2(ziBl zhaW5k+apllXQQq77QaU@nEe@k^B{^xp)Diu{5k%rBe^`nW+(@{e&A48CI-zKl^)ne z2^uw)64FvG4Lx#&;}v}wYvg4V-d`hUj*qR8WyCR;S`||xHArEN zRF2jK;-{_YZ-L4LQFCZjYy#KZM>7k5|%WM#aodzUWOZ4^;aa2 z;hSS)t6o+$p98Jen01Tt7o<>z$KDDVF8wtsfD^O~v3ARKG(Tr50ldphaRPV;Un66I z!Zv~odR$;i4ai%za;)%)%CU~BegjV( z55W~}ho+@X!tV_HxPMC@Vg(s75III zUrPjcr{OmQzYu;8;`bVUJMcRMcsk>E34Rmsi?4|JtcW2An)W_$VO|@QgB_lSzQro@ zW7JPn#C_N(5jhytx(RlqoEKTmn$m zg&T(E;B*`Uy-Fah_#^y4Q2hNZ0W=#xwsCD7Il%^={!5@z54oHCm_Tj`fd+fXjr9Y8 z+&u*Pi;(+QQgZ(!(7_&ZhQ=f^(&iQ<(Dt9BrJI(3Tn7Rz2as*tmz3OZ2LospF^SS* zjheHp z0fbpVppSoI=~l;)bM&b_ftCTtDP3znCXm~k0iYTJX;o>ffn0q8x%UZli;z1yj+~<^ z&lBiE54q$0m_W`XP@ad}seT}kyN*DOdsw=zNy%M6pbr7$l&+^A6UZGypce_GOV`H_ z1adze1fXgmw==16ZY0o69&$ed)Ngms5~$Ea?l(UW$W12D@j~vPxY9XwcMXAl|1ny+ zk2NM&3sAb=1lmF%UAi3!$Q?zXMF7J79|>$b2By5^^}lbxvof$9Rs9b%3+wUQfX1x~ zzi05%zcln6PQtH0ez)Qm@1qycN57lE zM?Z}1&t4zRGcCfcVH8SZ@Wv^J@E_0-`snX&fR8qDGjUTsdR;oCc^!ZptxKc^^9XbS zfpopB(^?1lxXtdJ1Ug2@eV9}Yt{~7)yQAb1nebTz+DM=#)F7Kc&jJX8IM9;VcHGgr zhBN?8_K-`Yb!!N8jfY$!kMS6RdJDPaNFDric&;VDrn(X6 zZ2&dpF%Bird}7kxK9R==H>RgW3=g?P9^-WajTCap{ox}7>ggdD=jvd>w-YGGL+-N# zs&XlTzW<)3V`GrG?#>|4n*ef3$99NvlGaDJWvvPHB!RT5#I>&w=9l{cR4(Lxh$9E{ zmpG)BKqEZluGQq+b_1n*h(Kq1$i+nuAUBRcZG{}el-SZajmuC1?ffoUy0{PnE3^ZbVG|06g(BlA7t$i#xC(8Q#4*->U$i=n!Ah(i0mwCt~ibEbC(3wImc^op9 zK!#xN06!<2FMK}P~_Wa=?>LEUPCyQKy?7JjU0SVT)GSbJxWa45dN$&dF$@e z-vM-ohup~;$c>F4%vT6hEabYxk#p*9CV{$m$n{7-ZVZ9ic*y1Zfk5se0)4fUrR$fJ z+{px51)yp*5_O-9PfbGqKQQG@$Wx`>BdKSA$H0_r_@+{ANxcpxqu%f4d)3t*-WTYh z8m{T5bU7@y(zCJbK!Q$7#|rmS?!S0kyffvVzShTxy&!GEz17Q7|-W*_iZIrtq;>NF=9 zdvVKL3rGyta{jp(@M;v-xV-~T9TJeq}76Sl#BFUK~hQ1v>6o3l-hDbWQNKO(?Zg!EJ zES&7acZZWpk5Tpy-Ek#8h)5z4cB4xn$jtFQ)Oe;=kbILM1Lr7tSHGL!^tW!_|+xSb|NEG_-BCD&wLZk(N99dkKV8o>dfj$lcNPGHH z4TNY_2@KxiZ~`p@5KjKX=U62XKydrrF950`CanbbX-tSoUD2;2&@CQv!35;y5$Hl8 zcWE3sr`f!dK)9F7C3lX-gdp4{cLjkOzmD@K?if=yD6x9M81H_(utwWb?jjCvjUEPE z@ii(dKE@}g(SKYMTcfh#V>2{QW7Y#q>yW}4edS8jXfZfd+_W8krK^+eVTO9V{CYfo zg&+Sm^?MZa0&Vc?f?qLyUf4VE&QhKRqmCb?>iBb_Qr1#$d9pHN0La(XTjT23Qr1#$ zckT7-?H5R4DK}xeeB{=zs7P&(N~TCp{)9^F4p_1hUI!Q3~io+z0 zJs255pfqCADp{y8xh*gJ(%A(1=*uX%AqmK}CD2j=X-pk7kXPGw?g7xf0K)vpjpCti z_4`3^zL8KjdFZXvF3N2_0Q4+@3O)30KU&G)IFEKuCeZO7Oxb>C2Ta!x==UA;-E?-G zjtf*i32z&ias~cZ>ef0?)f2ksu-!?|BA}<~`hWoOECC)z0=XK9T}!9^{^myj-2))o zSQBTtj$e9%K>ze$dS6?vn6_@8=MpGLAT7$-S^(&|x;#}8sDqHRQS?~9glQRZgI5#i zw=c-kxu}jP4W<0`w^eB?dZ@KraYT*En(~XiU3*0MK**IdXbT>j0Vy#W-|s zJ%Mf@kS^UYT{>5tP;*Zcs6fa?;>d{}K*jGOPZ8s77zTfx%quJeO=FFKhXU;iuX6DR1j!C;6y-NN5 zHZ)nG_gb-WfX}vKas%Sb99HaCFiYN<|90wk0hB?t&WuYvkwX36e;M?9(d&j9?ELk{ zIIrGHft|m9pigMY7Qb~$C^Y69Sckx0&wf~|#$O5kn(+5Wq`iW_R=}u69Wnb12gN`% zT&=N0@v8-YH$||MkM9C}pM}5g;7{65DzmKkI9Rdl_OGRVdnt!~`xOk9xBY9S{ZNHK z`;j8;pUU>X=JxBawUUUOY18$medx095lGvTZ5qf~)PRI6Cs5Rb=?x9!C-RgR1)8$}7b%g|a2|#w@sVqz~fCE!60{vcq^0So0X!lzP zqsiO~AZ2e36MOSAKGkziKBu-qM2zTH>4tfY%`b^$tkiTt7CB-8K+Ze@eO-X6vdA$& z(+Kp*t8R7go}dh=w@1z-&`tvB9yvj)qch@wMPDG$BOXkTYsJQRsuUYN^8Pyj`jH1y zZ*AMefz`Hc6M!h84?q{QCGX^!y)KR*2@fPUoxnyfq0E5xg{ug3 z1%Om=>hJIp4s$g=V>8t4#z*b#5$bp)5M{FniHOp8)f1&L8OS=GGs4xNW!<3(eH3MN zZ~wisvtv<*Z71df#IHFrqCvp=5^w_m)2*4gow&^ADt=tXk4gL};m0_BT!ar(dzUh-1;g-Y$M3fjCHtT;sTC}UAS5gC?~Kw(!b3>e8|?#84Gvu%P`ZUz z%CL?fLogW}su!GZr6NJ7=Ybl$E7(qrMnCYf<#Y;nMF>@2$8j@jnLI&e`>kh;c{p_! zDxyN2i*HK^vEy9*_T2vhvi7L-aBtQU!@GXeV;pnTv_4C)o(X3E7Dvc_Xc(C&@RY9bc z-1MH<*e|{8F18mHTehG_;WaOIb}me{A>B$zF1YGee(FmUA;K<9y@1cw=n7Wc8ePsW zR(_ya!n#u1k=v5mhEKed=tX|T&bFf~l*%xZZ9S&`Qy?Oc9bGP2%OndtUyQBug;LO^ z?XF^ldnXFSX5y0jmXUcqoRUoCYS46SJLrd~zVL4J!J3@u5#R_;4eFVMK*+yRCEv*j!?mt)2xC_*T zliU%XzfPKOKaqj_V)dVW{ZV-I=Jdz&*9m{p_8O9ov^E6CBIDDv4T%GzrAf=yGWX-u z7J*1F+r%v4Q)*lKW5CZ}$F2ya?alZClKJb{eTd21iZ9A*4f@8isW{=$`vQ8SLPGOw zTpN|T9}wijo=JYe75C-R4xbW@#iPAspGR;zMYr>1opB#Xm4w(9qCl9mK1_;sYoZMI>cZY$S@&sFP=qx;??xerS1K|5>B0q6#<80m>9B!xOX&4 zv~g-Lp_0GH*1R3POKgM9BsO6fb_!{akLs!H@ej~QV~@F3)`dMjwv=L>X7`ZBsH~P< z-_BkXa&<4(A%%^<=G$HaT!>fmkrB8iaO@=#?N0h$ zVWuA8mUhk2Cnk`-GKapUq;CKTV)zk$pMu}^lJ64$>dcg*NxeH3hcxx?j)!W*7n8f% z^lr!UEC#gJ;@;q{T5l(1dpwlg>F1et3CO+nQ-m_hq3ll9{UZvaTXzzVrqr4gOCFfJmI2smb?K@##OvqKzI?`4&=0 z*Wbqx#S6^Qf$Afjy4grLq0B?WK0pa8dY2tyI1Ba!Hdn-lgF@J7eD0ZTil3^8WyY-u}C#^cuS|$~s-%psL z&O3yY+t|>O{6q^6fm!48(smM>%8T0yta0aADLz543xvCBB<(G1RgM*K{jncx#QJnA zURA?cSe_hQX)i{TTY($>($YE-Tt(JM#YK?ym*}UR>DBv)n^qS+)^k881cR5H2~na> zq?jqi;|miT@MihE5yc2Fz7tj8*wW$YAxOb3f$8Ero~|K^&bFt-ES!TlR7&w`lvb{) zz4`{|mvRrNPp&xUVNmJSz5|kECw7@$Oc9zgSNuk>BZna+vk}IS70h=lh;Ql|`&_}^ zV6e-1=k_-#i#{2787Y|=8g(^MYvaU_Xb;I=4g8v*cHM6YinfT_H319oXfN66QNHi7 zrW+6)#6~>t)>M{cO?Vb%RJL2}^s<%gD0KBhFe8{AJ0>SdE`5ddDJ9d6#21*7l0wM; zX!NHr(;OLkWWJ71*1CnY$~3}`&+nRb7f5~YIjoz{`hNRbkaa&t3e{^7YRa6BQGr$b z)NPpD>DmPg|0WjbNv8_gjTo0z#Ry%+>8PU6GilM9mDzXz0tS^S?Q2IDf@ypY0>^{) z=2yV%D?Y)f>VJ#+JJ=CM-1(vf=m*cM+#dQn!0V6}0Dnq@Kgj6DsPkIDn+Premi{|g z7i;j5Aj@3w3jODB1N;<%zXOpBfDhH+8<6FB9pigQ&OFF8 zKQTQu_;KhNJLYcKHPd0m!OT2B}U4)3zvNa;~8 z#QZe2AlQD?%D$UULfy`I56QCrp)e`j9e-5cnIZsZj>Cs~W^-RHhPLO6d>ZkzbYbLLzZWir;bGY8EGANbff}BuGdArfqLxdZqv=fStRU`;hP>N zZ_cjyOpOLED$qD@A$%Xn8LUusW{w7~%s25%H^rHCy)zOG9^zz>2Y+MISA9vFk!0D@ z#pt$Eu|%4YDTpH`za~I*F=a$~QpsJ}3TC4mJ81*5JW^LeDj!6eqOIex%vB_r7ZqnP zCp09hH!+F?#>eY-PAYj!UYT9jDY`CR?CjB>*GT&5p1K14@%B!Vc++x^4n2e-9gET* zCATR0!pR<_j4ngRA2ZwFC1h4I;TZ>OW&nO#%0w#;LGn`mC@BXP5oM`T{JH zI_L$yQi-i2pfIv7unu|mryW3>V-mTcu_O5JO-r`$(eFe^(9b&bLBV>i+7{p z)vx+=wuJ`9j=)LpE4MstC$76)jV*Sf=n7ZmkpzSL2z0R_*~~h$S({h z-#}HV^^en~hz+%Shl(~fePsb`VCRLizR~_NdeaHmnGcZA<5G%|HR``m^3`v}y0Mijr0oHVw>3oX`s1(fUk-iSo#3uFqI6#Q&9FCwjAK#7&;X`(Ahu7~P zW^X~&P_frM7V_Ib1S{Lxu~o@yV($R=rfkR$&X>jyP$JP)^d$1mK)(_FM&R3F3v8W|{$NKz@@sW0MkHT%mVKDc|5vBWQpG8TqvoY9m%Z#IO#GOg?uE|_n|~Y_gSO*;0QpvZ2ySjzKAD- zsDpX=N`BJ^tRXmJ%U)_10^A>fF7-ACVp}{Qv2lQNN?tVwz16-v2k7aEji=`TjpqOzlGr#T z2k6B)K!+tZ4$A?0GC*6$aFamTUV0vk53~%*-HBH?qP?TeV_srY1m|C$wo3L}$7OcI zuq#fgPjjEZdFVK;PY{nU0g4)%c;p4J122zh8U`bgXzj<>J+#Dcvc~ojJ!lK3rf~i= zHs3tHMPhJk1GNOXM>6+F^Yk-j0_~{2*2R77vNuH<>HEP*^bzetULRv6s!fVU9zQ3s z={!059`N^$-=;=hMBKa&l9h6cY)z#V`5Ur5f(LmJqc z#=8k9*~6?Q>^8_ZUsA9GhA^Bu8#7gFOfM$P!{Y&V%b0xg_%{0mL$=Oc$wy=8F7B$s zW>8SsnNEkTVhZ%XF<;i4NJRWhUdRrK+Wvf&sl2L9`r#fAZzCwu@uNWZ4pVTCdiv`C zk~;21gEQA;cSN4RhZoTSHf9*sbQ6*@{j&x4P;%LHBm;( zvg+y?s0${t6-lTohhV*gYT10ggviV-z^xy%rk9ZxXveQL`0oT<=^DUi5d3FI6DAnJ zN^MqX`t z^v2#0^6f<1FEOsm6&TF5oZQop3nhpzw?_7%>w*!!vyJPncyotZDFZv%j^E=zA=ArV zmo+_gT?WuUvK0tWJhA*)*c=X6>F83-u+`ct=tetIxMq&El-+OPm3C!GsR-j{n-xvU z8t)4FwV(^ZTdJ1C{kuRfyc{dB5_r`vb-{Hom2}a7jnf$^@zL2_w2J5nhZU7Q>gnhc zsRV?VZx4w>(e}** zh~6*bD*$H0Il-n%yp649iSwn++f9Ba^0C96KA9;W*J+svs+1KeA*mp2YaW%<+YIcT;YepBiqDZ&PHmA$xb1pK6Q1Dqt?oS-Zn{_c} zNktp+Mr2TL99J7JI^&c{Nr2|`P!yBu6qdsU%UaXgGlgB7t)_#i59WNqippZ%s%KDB z*=FnFgXtZqEl5^H@7BqfxxLi02@>KINT?h;aVz8o%08F0RkH@5# z8+dp>6hK{JT}wvCH-V1@%e1hP4kN6W45P6A&0toG#ebv*DO&Uf-b$oUK<_?-%aK-m zv!U#4E|$f&>c`}K4h#O(xcFveZmVU)a2A2i0_mAck>aiGH7utR5e&X$gTAgmbH=;zpq#0+hz7N+Fcio(x#8|6jZ41311lgZG8M(xkL`a!PNo-<{qhy4dFP)L zoo@orxMryLP8QzAG=FsuXz=?5+?i?A5PWGi`1KlmEV8sfx1Uegv$J6*XxQJ$f|s+% z`2~XijA?#KPS)T*2XhSS*O8X7kr04=f0JtDTlqlmBiC&tl=9vt7|!^}00&oDb1OhypMI|3i6{9Z=@}MjqQ#ZhV~e2uEnVz?~D1 z58*9EWi$SPr=eQWTRR>LP;$CZa?{JEpP+90kkqj`0GFrW@S1a{gEkXxaR6=?>VchJ zbR`VCXIc3!z-GoGEdc(Y1|K2djvcEb__wmbZ`9!Lh)g?7zkuL>MH<=tlz42nX5Qy> z^j4Xi^Lq=PJKm&Y1CC%gO_wdCI{pUpy>5vb{z4T|LP)S;;Js=yzzva=M`9qTgR$!_ay zQt+l<81gPh32gQ#+G+-Xy*1=y1SK=a^JAqV)QTE!CD{TU50EoLlk;0K36ARh2g#W` zkf!k;Mf|tmIkN^dW;XDbM8!UaU&^0P?7akUq%_WaeoJ%*x+XRUuRkyRfF2g~GGttO zxEe49+Ld36y6lO0>5{gN!D@Xl?+;uJF5^|4SSIHMV_3e!G7XzZ5;IWaOggdmF5`qR-VQ&?F>W> z5Iyb^1?@ekJ10Pq*z?DHivXiv5C9B%rvQ|L-USMw40@*mcK$rPI=NN7*>(rSm812A zpdx$zvtaK|4BN7-+{eFAo6n0jEezrg&yG;8o#L5zrTOg(*F)sWdRs?=DZRL$OurTT zziJfJ=7alpbD84_w7fS}|16=Z5tltO7{Su}8&Sr^yBb?}u ze-B!ZP~&MnR&7Pa#)!(?jpkrA%dEw|%*VvGCzOO7LFs5=k}JUJ=yvN!1O6L7IEHw3 zLK}+19;yACT=aaeYkH3L(=%Qw7-i_`ijJ=bz!V+hP|U2S2pRf*ZEHbTBg9r0?mdRN zK_D{jZSI}MWzNw)Y245p?Th=6!CB*vqCHsuVNWTq+QDZpxR|Zsdd#WlO%Hrx@8!}B zz1&`zhbd|}SqjTS&W?jgJ0HiWPJ_zLwblmRur-^tC245HP8npIvA$|a{_2~m@9TeD3^^y6#&x`HZQv_Q( z23YEco#+IUq$!C@uxqO4SY|2=j*;aQ{PyDh97+2AS-{cvGPinY9Xb(It-#m~-r_|B z*lwJ6aLdz7EcZ41DS&>ihL7wgq@E8_=>+2f<+816;LU5_eu@MeqLVO02HQ}!8@8?B zab(fPNgL3BG?r6(_iMktADb~1%>e66TXs|bUWaM2P=%hppPCAR@h z1KWG1&@UGVR6Oh`mt)tDipL|(i=TxkCt_8E8_R20%o$ln)2F7jB z{bK}-a91$83P3oTu||EdNXY78;V$1^SUcpE+R+s(+6IRJ>$vv3O|8-O1WM1_WHrh? z-Sy}c3p>&)tZ}&VJ%&C+C6kMuJ|bniA=p`umg$m{*D71Xmmid^0coV`U+gSJSAntr9{R9BtAvA*=a3IX zDD<+UtH3f0Ir-8~^xU@8`qt=jR2+)+q<|51tVyFiYOx1jbUFGmbv<3Lc`Gm?bb>^% z44upk*3LGy+XCEcXzmboMg3U_MZ-@saKDR3E(q-tKV3-)E+!<-_J@N^D)u;vWhf{D6;4L@6Og6*M~F`ZQ@r9c}tei=G0cXJ~~2ynz{Cl13e;<}iHwBh_4O4t}4q@yU_Vm$x7iq=&m zC)Gkj8C_2Z_Na!~0tm%RNOW;;9(aN(CAG~EDK1-q@Nd34qQIIY6Dm;FxlO6GzP1@k z4TUm_U6!=s+qLo}S7E{zu+Ja`_9Vv#s5SW&e$`!8Mx! z8opiX+QV*S-?bxI3{daPcI1fXqpA(i+76!#TC#}q7F@1xCi#dzxEClgS0mZ)-vr9v zugf0^Koil3foCQQzmGO7#x*caMt0uA_&^E~P6J`36kQEwQtN)QI%}P6g2sG;P`1=; zii5Iai2PF^r#};*r;jehFi6k-_)a97zI%pUfXRE3JsB*&^I^r0JSp$+|4x+8>;ok# zFfaynRx{_jPlS@B_{?T>{tl`mPfBh^(1QOSwZJqM?SQY!pNFMi5W~Dd8)lqCz!*vM zxq<_iGUhpL(_Tn{$2OHw!JJ*bgj09NZ5>&#C{NQGT@F_r3lb%}L5)3iU%G6QedB@C%6e`1 zxF^nSm#w&QPHU9QBp&%l)NRU7{3{<`d#sdkiL>(%Dw}+lFro#5e;@dL1aZR&2SG=M zlbbnm;jv^Bs4_GigLrI1PkLzj3!PZ&Q+ zk+(gjKFp!Y@DedjE!F}MuRI!2wmWu$72S<8N`9q2oW=VvJrvpLFIgqKi%OP<`GPvk zEsCP}$!SUs_@m7WyVA4sGM7T_xjdJSuEcbY46<(EGFGQ z0+Z zQ~GRQV!Q*f9GJtMr6RoXTbOwVgf#sU(@F|hq1%OOeyH)2zOwZql9<)zW7dm>g&J!f zqEfadT4D6t;HR7_bdEh3JI6!kaejUq`DQWD+m??ptLVL0AK<}poC~q$;!TgY)A%(} z5iHD+_i&aV?mRg60#wpx8ovu|wGgF*2_be}+VH|WFcc6yak;>#eAC5RJEFTY|DaDF z-^H2KL3)yUy2ftC&0^#W+@52A)D%rWlX(GvFp}vp3>pSunJb6{bK-Lu#Wj^^v`tjf zvMQWf2mRoR%LdS!8Ab>URgHP#K+9=_lfysQi{$pPs8}h0`h=s1F5^MUQF)o~L&gF& zb?kl0Pq~gXMgKwf8QXWXrg^_cRo_9fLZtNxu`3lI1^FS=WR>ksw-l8@DHc$H>3T+& z$Bs(V_Y@^Mj?Eu;Zc4c{8)1C7Lc2%M|Ab^95EklD_(Y_)1r%;|F;@g3G&Dyq4)Ol(G*JAmQA`qn#(8+xNAjDTy

      BL_!;qUs~#`nhmxeuKl`f%BExf?g! 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 z zG|#`EJih2@#}|`nTV%+3WcXz|yAj{GYGuY3{RqfWSp`{Rqs863n^$Kn^h|i)?eFc= z-kL1@YUq`Y%PaBwZnvMOk%VD(_o4N8?_9!taSFM;3JXd~izo7qW^sjNo`XM5rrX0d zgM0Q!QZuH}eA!Ih>#H}G%7$&e4ck84r-_oD>CM6Iq7-549gPRAT-a33d=oJ~Dm{W> z)4sV?zMm#68rux8`NB7ljmfb-WWySyk&dl%X-qneF9i6*Z6Zbl}d)0k;dbYj0w?pDyJ9lrF#J#qHNA)XSMAzN^7O_ZNB?5>6}|QydXDPJd}(!bv`^l{rVQn&y1SJdov!_ zuXBPGlaS-~1un31g5!V1XJtw`C=i`HR>*&+U#M@A zN%sGRl>YafSdb(A$Ny&M*6TnbE>70u5Ls`hlx5C0&XTmF3Uj0Rgs~#|*%wQW1Hsy&YIvPpHoLMio%`^m9si!)UKn#Y-wA!=>L+DIy^5#-$0W;Yl2X>Nam9tF`Vr!p%E*}=BBxbK zIY;qj)o8I3R1rBYf4;DClG}w&Ddh~JzaLzXKc!-EaWaN5=9Wp8k&#k{Vo`A!u3WDO zk#S@S8RN1hMTbRMCCn;~4#_GePE1-iWqOVp z=oD#|o6`S5h5d7*1*N^lWfk`t7u6SbDBbK;mW{(P9mT#J0!p2mdg zGu^s&sTHy#&uGA=%lmP&+kvM2>aAMWy}Q95rn$m*HP5!!o)4z2E8iLQeV2Av;wjw9!*|Qb%E^yr z6%Ta+D#_LbAfrakiCZyCt&@rF8tEj4a~SzobWTaTYyM#qupIZkt2m_G=k=d2wMC$+P6R zxjY+f6_n(3tbI_hp68VeDje3QqVWoowbsf?PRH~zvP?P}aTSSISQ>UUT2=Y-(WHzl z%12%SMWkZ+l^icu&u+D{lH;{k8CfP?PF#h`V{+V_yj|_UH961rFC#CnghiD~mB+C7 z&9?HAJE`D1=;&*5nd3hxxdhsULuyGR$DloQ4)lRy8IiI>LlN`Sz z%E&YE3ySc88T$nH2A7dpSQIt$8i$sXmFR=a;}z6e=j3Z-* zrzYO5xc7`N`5UX^7b}T{r6k<H6JLo>h8koZ;d;aA#k5a6B`VFl-5=_aJmvJEqaka%t}SVE#8%Pi1Nl zegxy}v-JOWYz@z&kUS=c?HqQrAFLVa{}-rp>vCf8FJUh9o1SHU>CIYcw2@`GI_ombm%2rAbq=I`)ddp{gGXajz< z-7o&090qPV6Hn(i@WZ9E%jY6o<&5+5+0`q}8OykMDBa)V*?!6L^P>f0OUG?Rb|gNw z+Zd3oGUd{IVG3FA<91-OEC%xfdGS=Lkir%o-*B0(Ty>O^f(gzQe}K#(DP#^UE!LFe zR^*v1GI<<~V?2FH#O#S<_WLNP`0db<36W>j_7ZlpXv~yqzw*+=fGK znhHt_Y%iX_)(?jf?GLK`;+}M4D`}7j&tWOTb2;IWc7Qk&9#@~S zE;lNY7kvWZP#U;-r(3N|tI`-9@d(^L6(TcO4YndTUhk6Sw)YyCkye^5{Pq1Pn|a+R za@YHECl=&pvJjz?y0x;F(47xRQ`^ELxL5p~ocUHx#L8&~$0FzbGI9!XiWu>S$H(QT zuaj$SA-AN|)H%uJ-RfekYq&bbl#J)B zL2h0#N8f7_&4iC=r!Wzd?~>)p^kyroBd#T@Jyx=gPc6$$)K*A_o9CFbhaVKYHAX|v z@ucmAe%iXuGQt@cTS;5jKPS>IIPa2&f0>y&!#_(yDYJK8(;g&unfVyM?D>10YOwY! zGXkq|=}_#A1oC=6T&6h*n}2a_F^|OSQc#z0?Yn8)a$TACC>dF^l4K3<-D@jyT=^U zIwIf8&i!hRVtyGpMu(B83dstV8I?^p2ALl*qD;E!my6TQWn|@*4DUV6YG)Obmz;(! zZjGAz^3?uO7PRNtq~WqM@?4KrURJ7d8I+}Y&=-8ayb)wnFs=)&?5@aEW_Q6ZC&KTR zksa*W{+#?D1M(G~1|9sk9&5wn(jvD70l-|0)jZn;*hdM^F2;Q|+b$3uJNQd3yJ~l= zNm+JXKcs%jjs09(#oyJmM{r*S#|AOs`=N^dm#`r9jo^34D6FTdEVP8<(JpH17#`RpQe%> zY~x&iw%*ECQ@0&fT~ABW=cJA%uY-Db;x}%R^N^&sCKAuXJ@LosM@nxebEGN@<_N50 z_Qvju+iB%xxgF`B>uBp`lgciIexhGb#c`=N~1#7^aQA&B&adN@hqqVILLZ zWh^Mqr9rTrP~8ZofeX(X8=eN%Q;pj@lmGYH@B|7#yb(_>fA&$3h<_*iaCs6e^M|zZ zT?gfL!R^ZO^2#LoUy-@a%Cy5t_N%eK5t-{!%Cw1&n{b(lbPvX}BI)k*vvIBcbm-v2 zobS?)Fn#HV$s~JFM@{q^6$@8TKdVT%T%G8rNh(YUR_#F{wlU#~bXFZLt3w17igIa{ zXp0kN;@^~WS0<#($c@Tq;l$FSiKY6R|BkEbZm!kqbx%48fA;9(21;?x&HW8JMmzfBbk}>d zYM;#5oqcclgiCt?CEx8k=(-;cFv0RKy=j$^Uv}?_$#XW(jg7Lia1!hF?BUU~;pNgF ziw4`=rB0ZkDpUBHZx&Nbn)s2Zd?vFssIIPlJZU0lq zAHZOZHa|&z`957?wkF=zrIH=gmz?YsR`$(!AlWx!UqSZ0Wn||T4$(vye@jl+RDDe< z*<0&toUYNe4FWJ~ZWWfjuuBNbNCvNobTG+LE*uq2gChLQ!7Bfq+{IR|`Ww|}^*6U8 z_l#{Q*Tg?b?l4s>%sQ;(K8U>yxpy16ZY-QSzJHYNuI;!5{|fx+zqsD6G|*@3@(N7V zi}(Mj!uY8TV;;}omC@%H@Z-#GrmeGOGZDs?xN#;BMr9`xR^8L}j(THKKh>TC)gk4% z-sM+&toQKqX?HY^59ZfgWf10atlF?y*lP*Xry*f#&EK8*GhtG^-T49^5T>?Vj~SXb zwji1t59fqHI9=VUrv?Sf1nUN`=aFS-sEiAA)0bH)fe*WoIK( z>6(ev`rM+_vQz3Qdd`}ywkttB#mTRyM8cepm7*~lt2V9v!71bZm*l5v*JfM!nu4o~ zZGwFo`B$ct|L5CO)urS$oEmoEs%}N~x)pW}vhUx^tXJ*=o;gVi#i7cfM<6 zmmQnXcWMQiHJ0*yXCUwKA#O}LP#?a9dhiuoDvEk5sgDO8mHWQAs z4l(UUU|3}KyeHPB|8N`;F=3D_SIo#?avdL0jzaaYHRIuKFJ$yn8~u~?PygHy}?OLZ(*&Yk>kto(c{Uwwqi z`AvU={9svk<5bN7$ZW*c$G(GASx-MKWf|*HJa!^)RFn?PW1&Ff7@F+33G@r5e5wC* z=c)KB4U(}#`WLp`XBCe%<=utl7aNwr_*e^j6t*S;zD*sL5sbTe8K)?|rVy-eiLs1d z*4>y{<*#HSTPkcF3HFJls$iHFSk?Oowh;LlhnuuW6hQ7P?m>Cnvc{LEcq%(90(Hs=D@tmED6zO?}$ouo~%IJtJjZi@&>sQ&ZmTQkX8y zI;;6%=VnybRNmTR-MGrtKk2@_v_B?qvfsZr9ef>QWSR9?)wji1)%{*QQii7wEXZp$bBVD;>`W60fy<22@HQk$-xTj!KM{1@|i{JC#Bbph%?qdFaUi`YV z8H>9M;RzTu4CDdT4LJlZDSe!EY~unvq)W~*I( zU%l|LmGb6?H7KVMV>6lHyt3rf?<+aw=6HJ3UFK)yMAd&AIsVhh|0m{lT=|_AA}5ks zj>f~}WR%vX{9H#uT6sAihRA83TFwy@vx;;57diTEBfMhjalOUgGlu1{k;BeMWo3wtfL5%MoRB4zpTCyL{5m;P~^ zqdGmq)o(Bf#x#C#kC!#d4|bqH=XCK`lQ8SB_Dby$r? zALzNl$4Q961Z6Fx50=sSAky=1fs!>VwJi6llzAPRD48<7&iLT}7Z{Jm=T3_Fljcqu zd+F)p_$~dbu@{|O#G(^knERV;oo~!cFq5GrC0RF#Q@7k1==~CPGJ0Y{EbOO(6{WN2MsmEsiIhalZGjM=;1G@wEHLND84?i+xp7^gn zsFk;ERdSz_Xx}4SEyF5TYU4>J&%9LuHO_P8Cp)*)lD-_abL%9->Xh5L1TohUJWJ(OOgGQ(V*DKRPoZBc>lRQYyt1UZbw3YXxx{J+hDti+zgSF{|j*MjMC9Je*W)9Sy$uT7TZ|8xl0+Y z_u+3EzqF;$H1>+d923pTb$@mVS7M$^Pag*T`o(#nc5o)YbL01&O6C7?PyQBo#=Z%e z@KyC^RQ%aQ{rS7^tL`V{7MPh}l{1$YqZxz93?-vfKh&RSTt9SZ%KGS%E1nnY%+vmV zf%0YQqSC~qH-9EC{NzqdJF`ZWp1y%{(*}8sz5GH35+s-@x+bp*dCulzSXLQ75_wW; z(>;+VsyhMykJn#(2`YQ(=?lurckzpdLuuu7jts^?GM|%1yTi9_THQ>>C$IZ4w`OF? zy~=D?{jesGPVu(g)x$lhWBR+|J!W`OF0a$}%E}oR%~ilDoT{g;PEPfsN!smT(oyBL zBK30p@YMD4RvW($k-anaeXQD?xg%1>k2gw-{BYq;aa3A6lc<+8tC(Oq)?=(9qp`4z zbQ{SjJ=TOPxoz#!Yv^zjQ^_z7l>4vzcx<7Sp$4c4?til~W*Qmg+8D`*_cDJJ7v+KL zH-=cp51= zCHSv#+FUE=>C|$1W|c&9Z5M0uG9;mm9F;d0|7<;|bzJ;cJl#0a>(32LPda(3x0eAm zPCWtTC%LZVaClx}Nz|0!J+Mp5@=W(XrJk4K zzGTXT{%q_sJ&@|!67H+sXdXLxB3#e8znAJYEt^1+z1BWADLc=o3qiNV(b9><1-@h5 zUvAxI<(@pTq|~S|CQR$?ed(4i?d9IhF-~G(T#Ap39}}-4lCZSjJqC8;c{hxw2c?mRBnU!O4N8DC)h5G zV$3LWKH+W#&$i*eYfQ@UoAyWURaWNfhc$_^g7+BpGiSoKSo)zs(P(bZ;;fwUQ3{0q zrgG-@^#y8Vi_kMojZ@g%c&s(!Q<)xATFrwT4ppAJG3lKmZQbD|<@Sy%49+BnQ)wA5 z(}8(jrJGCRF??20%Pn%NGOchYmp7M3!EzNWC-VpTA^5O{Kel`y)*&uaNr)72QBzhf z9>ZKDU}fT=c0~o+&AljYh&J^&XHufhs4pp%4a~bJ&P3U)zh(#KX*3_BafH$$Y(7TM zx_ULC#7rOQXeIJL(VqtH)2x^6YgIA`j_H4$zLV-+uFW5%w`+_0F|L&vNMEG3c!0(a zMEayt%BQy*RYtVmBC=n(I%zyI|M~5p*3pyq47vQDSm3YA2g{GEw;G=xUo81v{Okl5 z-nLSdF^&0SP1p!FAiTF5_vQLdUq`bInCfDn-3ZJv_;pcXab-N1-zpc$`j9Idro5DL z3I{t-f^iAf1y?`v3JT)uBSE*EIi}ZaO?%_wx!lH6V>ub^dE1G2t|&3-k~|I>QkYl3 zwh2F?Tj`6n6lZixrGw&>Gs!PEF5a%(1ncC$!Fnq3UYrZdTYnf9{}t(N9i9y#;rTIj zcsLFrS{yCNiP~ad%B>%xo!?8g;bq&y7Ii#!Io2$gA{HQ-?A$U18_G z(n5cCMrCUxJ%07TcPd8FUNq*u=I!q@e(2mW|Gcj|;@90MZ#B~s*Z#R=dM0tNi*a*9 z{F!!bC0Ff=;+NRFm)JAu>VVc+Tv?ENg%fYIhtGG+PCmWk>FU7@%2M#$JGGHBb(i7qIp&8)dV|74QuznY*{)x0V?KY|qfzj0eqC|tzvUSD;_nZ0=|36w zOH910#nZpftxDYM;O?zW+-vXdy_&e!PWMzsUHcha1J@XyqWgOU zH@t{$7KJjI%{c*M5!yxZ2#`Qgh+d zAD3(_+_J;f!~3o6b2??Whr(I@{Oz#w$-~aa4m-Cz?A+|IbFjZK;oSJ+`c>V&9((DH zHH#iw|I5|i|MSk1`dc zG6lG+3kxCBa2{%BOk+(3hOxaN>WT4ZKELgm#Ac7Y{E@pkSeY|xc`=c|#ncy1hnl-x z05v9@0X5e;6YgX0w}NMLy+6DF9t1Cf-5}qdGv6J)6b|J2e5hgmRWK9&3uZ(4{~hed zxW=AgY`*8F@R2s&A>5Z~R@V9I*@GweT`{9lQ#*g9~71cq{A@i zJ^*ipkHEX&Q}90cGQ1zY4j+J8+jtPZ50}AD;L}j;%v$&@d=CByXTbl!nNXtu$=was z*`Du6!}quz4Bv-C;Ro5*TP@m z0{9bL3b(*z@O!ux*1-Mq@I0;coB% zxCcA}?g_JDGdLEufYae#@M_o+UJqNrhhb~@EZi492iw5)@BsKKYzsHScJO`J5q<$X z!LMLfxCM5D|AvRa8uW9A!dfr`rojPl7kDJx6CMTkhJ&Hb0v`!gpCVX$R<&7+SAF7N zyuG?HE#c0dHErfTlie*0xLeuA=?LV1l7BY^+}Sgq(Iv{eyE)*_p4Xhx-7Nuk_N?WU z?rsgZvu7k5Jt;YScL&_rbBaR=o>83A-8}(!_Ke|_?(Pk^vu6aS%#Q~H?(8|g zDcvm%xU*;VrgZmEz@0r~H)Z&i1>D)Qa#Q;EaKN2C=QgE(%dNW%^4^|RYu4zLAHjZW z1@3U-Jpt8!JqgvGuYv0So`EXIE3ozqTJtVYgfgyvatT)EY`QF}vv)33zjZ#;-{(Nh z{apgpKg@$IAZ>kYKX@f<2Wj(T9pH6vFkA?SLfZZqeY$rW)EfKk@FaK#%z}5rJoo?{ z59uS!H|!X@#7enlco~}xABBoXSFAms*3`2I@!((ldm=C4PVsmdDxEe!#piA4p10@D zn(`e>Kh~Tp8{v8RpO2N8Jm15M?aTdI zQ2l6a*b9=6CVlu$UX0~dZ+jSpJ3z^(2WP__A!+Q<_Zj&Se%o_oY2s<0kWZ0_w@2>< z+}Sf=O?gRnN1qk<&z{|C^vPs*9|qjnb5~Q!{V3qho|$UisY>?m^ME^h)@e%rHU-?- zb4pXXqpyv}!=5pkQtp=lclLbHl>U7caA(i=~FT{rfK9&YoSF(!cMmyK$5ad)}mXnk_FXH>!&=h1+>Cx=F7Hs=gP)Hn0S0{86+-W|eH&%u|J0{kI z@~1Xz1hF`@mVyh1Z^&$oxe_z@0s3FJ3-^?!FATv*+KXl>2qSojtQIWx4pyy6Z}u z>=|>WUsm||7w=!TtLdjpEvWRW4W)nX0F@4U-ku%jMfjckd;|M@8dSRP1XYfAw$H1+ z+B4tc@ebD4UG4Ktpz6zRQ1xRkD0fYv@`l+9?Nd|OAGU&OTUtZKPrvQCW?mM*B`4UHEFq+K+bv?(CUkX1tZ09`6R++4I6oU!Lsl+mc%bNLvU!cmB zuA9T(U`yy#Pvo;bN6XX=g(H~HHE^f&uL=2+R~yRzI&de*w-rr0x;<1q(S5a_^gyYtqa2h-Y&VcCtX54oy zynyTDpyHQ-wdZG<_kf>W4S@1T?aSL#bmi%Eto#YK zFAH#|{6Hr+{n%}=CD-@B0q{PkI<*999DfsJ?##Oxo(7k}GvIP4c@eBV`-(MZU!G*E zjgmokH}2%8J+I1~W2JBf>*=?+Q~bVz%D2t16Z{!!oPw@z>g{i^H`ktR&)f3To1dq$Dz zcjPV@{vU9M6Mg^Dg#Tx#@c#;xr@upme=;^gg;khKu&Xh+zs}~KJ#)vK!f&OU=7-dV$TXw;bIXgs z-C;|pc(sCu!+oLp%l+X%*aoW4JqV6~ZK2w=_E6=LH8InUHHS*yZg3Jj7%JRqPwW{y z=C{HVY){U@o$A-waA$Z9RQq%h>;o@`N5V^>>cwSH@-K(k@G2OE%oQ4WF@D=~cf6bV zEqN*zrC6C&xRbocVRN_|wt`PUnmzAHsC<0}_Jgm(@$gM}3VaKyUETndrZ2)P;Ct{! z_yJVB^{hQ}$J>YB3P&w?2v+7R&kx6DsQX)>!ubnq1b>AQ_&bz;U9t8oop^m#KB|n$ zw5jIB#I8`~xf|Rc9t`#TQmlU_j(=88goh<(5mttGkxl>CAL>49h^8J4g7Rks>==}x6&zCUKijljr&VrXZQeA`Ft3j0GGqj@KKl#SHNPp5>A4v;Vk$Bl)RBxdzOuP zCtdRDa8Gql=0@6)YH%S``M3o(hPT4z@HV&?ydAcNcR}UXVkrM-W9@l0p6ZMI54Hy% z;I2CN)!wB;wRbHcbNMFSK7kr1dpxVFQ@GE!}{2C61-@s8&?O-O{ z0u`PGSbKhrIoC$vk=#qMGQZ$X;rSKTgTF!L>+ewdvPbxIHX@J3{r@^`Y9SG&mWi!?R!$sI=N0Dx6)h_M989DZdp?{>AItVB9HRMnL7q zNZ14(A9&uLRpaf){p9CQ!X3B0C~OJypxUAF_W2e3_RpJP?8I-i_ezH)Sed%?3pL^P zuo0{WBXB3UH{1iNJ#Pt>{s+S>cnHjaU0@V;g=1j{mv8#zSgX&LLz#RA_ zR5@4!oqT%+jggrwpEW^KPoIOzujirW-ClqZxDKlQeF^Rh*F&`_0OOoulcQVqjJ6oD^sJM-(S^&Dj#)WPq-uO2kXOuumM!Qr9rhvJHu?a z3sjkD3RTYcglZ>Rz%$|Aa5`)QRj%8?#jrhm2zG|+;34oW*ayA?kAMpQXsmy34RwRx z$>siR%55#~p96P-v!TlOxv(8P4|a!hU~hN<8~`tbN5PArQgsPW~4{`Ckm>e+iWTrBME}_HF#10_Fc{Q2wvMR?qO$ss|n^ zfAsuvtjrMhOVozPz+K=lsCM;OD1Sym<j)f{W;~{zC zWy5FSDex6o3}1t#a08qOzlKrxAD9P!xA$2S@=oPi=f|7|6`%RoUOoKytmn7llLqHt zWu9TZTIKC|7=bUr_V88M1-=Hm!MC9L^$josz7PAr58x5-6F3Zh3)PSQ1QpNU;B{~l zyb)HX{a1adVf%q1e(yp;5iD;tR^i(L=3-^u!rgXo1Kb^c3|qoYQ0e^zRJgW4)r0R~ z4E_MmhwnnQ4e!HMkjB!a%MgCPW#yj1Z^>1@_QuK##GT|G1=WrXf~t>$VMlm0914fR zX>d4HdauJC*UOL3-uNkhRZdo8WjfaP)4LmtaD6a51P+IN;RvYqX(T)r9uKqN32+8H z398(ThDy&ocpDrK?|>7a;#mqe!ol!kcr^SJ_Jf;Xf4Bu63I7cbhsuN=khxRuRJa$M z3|+kZGgbVvR+8g&3H`3pYaUd8a~W(3uYeIaAGUy3!F}MrpxXUq@Hn^}YMgv6919mf zm5uA+>F_3aFT4#t0&j;a;T@1R%3B1Vg?GZA;61Pg;lCHM7V6yxo52U+zHlj2ydqft z{1tybMDgNZyq$b3;Le_(V&+$p-K`6_i;$7>qailg-HQQt_WY8R?q0I)HsVKb>)#MO zm48jRr@AaNi1uFPb}(!NkAdnZhQSlz2$&B?!m03hsD5k|oC{BaO3!Slwl4?10LQ|2 z;W+pil>5yvAF916fNF0Fq4rgs0-0O)CPS5*DNyM=4ek$5haKS=@JNWV6hnvfWx+QZ9>khTxtx)yx4%h)MhH9VggQ~j^K=rFjVK!U_)qg(%)h;~> zr@+Uc%GDE4?bIT8EqoFxJZc~OvrPQo3Qw?o=tcWl6F0qK8temA-uuEmVL#Xd9tkzh z7zpL>eEgZ!&o3W3&qV&V<^CKfGrYE6e@4NUT%QO>!09j(&VVPwS@1k~KD-*vfw#kp z;hk_ETmmnH%i!hkQ8*v2fLB7bN!P-!U_MlPPyl~}g|Go(Du&u8mkT?=?;vvr-VLxP zRQSfhCm}kz_Y^!6u7MZ9yP)E{7%qhO!F%ETa20$Iu7P|LJ@!0Y4qt?iK-LVr$6yW8 z=|xx{z6^JTuR-S4z1LwUxB>Qs@51BYM#xyg`v^{gA43gHKZlIHy)WScI0d3Rdp|>y zKg8WXFU3DcMfs!rb^T=)^-}FzE>wLR2b;lssCqX6()@dcQ2oP1s4>eFsB(BFJPpR+ zIdBHN1kQr$tIviHK)x$$@@Ecwjq3}c!WY5Xb5cwjrSS1D-d??8-DPmoKhK1;<+t2v zoT54?^EKsB;r|v!;CHYU`~e;fe}?LR{teYG{|Bl)`2~)L)krVZr&@3_tOHfA>Oqyu z2Jj--5MB;Sw?hn;p9RS(;;vEFl z{3<0cXIT@O;=8UJs9kN^g}B|Lhd9zh9^O-Yo8+8_GJOQit8KT9dIFB40CaJ9~=W8hGXFdmU^=W-gK`aK*H+%M!Z|Y z_FQ*>m%^^_M(!UBSHMB=8t#vP*Fu#O_1*rtGLZaIISuM93#qp__ilwP;k~dsTmn_k zAAwWhN~peg6}%9xh6~`6@CNu4Tne9otKqXysC^q}T5 zs>9=T35#GYcs8sJ)gIM_3t<}6II}D-7=bNe3#c}=B~*K} zH|zyl!9K7x91Qn`nXnDaf(O6?cpy}LYX`4_9pMsqFk~*+I|Qm&Sfx(`I14Lt3;LGEE4M<8$M1yu!FynDcrR3c^Z-=5{UDqUm%_8)LvR6H2Gwpo z4DW@@p~e-Dz<1$F_&$6bDqIn)J!{5u}OAH#uA<$4-ae1~9Xj`ZW$m*0wq(p_mR^ETy@=EZvlYChs!xD(t6 zo57D@C-@oEGn=6NjbZ)sWXv8~(#q^P&8_8cv4`pwjIIsBo~(WzUuI&zn*F)ZedFq%gnM_QUZTY{d2NP~l;* z!i1+LJdn#;@K9JA_R*iA^0O|?hTFqpxI6p-Hizo>T0r*jczeOluq8D046+vG?FUO? z8+Z#m5H5yoq57}(@I%-MvRBgU0yVDe23u99p26YpaCkiI37Mnvdco1KH`F+?4;%yg z!aUd?UIdSX*TbXWGB^mn3u!-Z*$A%!BIBCd0enG`I|&4xfi-z)#_s@N*c0w2|J~@Za!UNE_*$4_m;f-=j0wDXa4ftE&VpCNtKc>8Yj`cB&-AW?ZQufUAiN%`zq%0)hquF-@Gf{6 zyc=E*?}K;3C2$qIAFhTEz?b2}@Jsjz+yWnk|ACJ~j|%Vv+yOoVTft{xceoa!gL%)v z0q}XqT%7j;yaKL+H^LX;J@6&?D|{K&rUI{r$G}(Maqv~R5WWV{VZ7JjD!2in>v$i* zed|z<;bCwS%z$6Qk#I9S3;qbNfLkD8@_vTj!v8?t9rAvG&%)|;Y4727u+jGPUyyfU zyqa(XtOc`RZFn)P1DC)C@N<|3>+C?A3e#X?cpz*7GvMw}^?NpT;hJ2({Ys~ts(!1! zvi@q!iL^&VPw%~(ek2#F-O{?$e(+@29_GVdkg{s@9_!%=l>by1Z3-~Pj1-=Z~>*lS89_jrmYyfFzO@55yZ~mD~)J>ZoO6O7BmwATqp8A1j zVN>`b><-ZKY%a8JsEd>0Gq*2VH2qI+6_kF z?r?ATG44CS&!O7kP4Ia56;#;2h8ov=2c>6x4_QO^HpA=S_V{xbtOwV?`tW7g0B(Q{ z;XCl(xM%OZ*MjS>;a)I}^iX`+bLZ{LHGAT`&aemU0(-$Wa1cBIs$D-29t#hGGvJ}{ zY;o@=nzy|OGA#2h zhNIv-m;*0^Mer(k4!j1cpS>2&gEzqW@J4tGycOOFZ-Xn~o$y(BH~b9V1HXm$!rch# zeNg$e1S)?XfSR9q5cY+S!V&N>D82V7sD5(|oDQFc_rPc1eQ+gI8Z3j)!sYNi_$=HE zUx3v}#~0yV@J+Zkd<#ksd>8hH8(}{D2uk1k7_#Q+eFj&<$VpS z{Xh232SBGP|NnOwnki~Vv=sHws3D`FQCMn*8JQXkMosN#X3RX8nt$exM$wL9qi89L zq9{rm8%0sH6sO$82&lj0iFoQ!1ut3@MKuVcK521HTJP`R#yH z;hnI|-*>~Tm05e?O8C$4z3^Y*>F|E|Irt;^MfhX*9rz&3+OPEq{1N;&_%M6~mhwFY zpAG*LJ|F%U+zvhtN5c)ypV3a0O|+Qak# z)}=6Qy%i19CR?3g+HfldW{hrifxm#Sg3qVkbcI{PSHLn(ii11AJ>hQfPvI2!YB&{+ zhi`!Uz;b@VYv}KV2ja$NV-11tgNMN{!b9OV;B@%+@J%o_7VBs5U*X}f)E{YU&6#G* zLHJwRsVMwA!E*hxfvL~`g6aP4{W3BRZ$Q7&4i1H-Uq1tub}I}X0+Z)jbjz zr5vUVY)yjKt%l^QJValR%5!?ZO8cv0mz#ZY&;TU)uj4j4q_wE9Jj9c~tO1~Tj zH$Z2`yp=MSmwka3z`bDUXL`f!V9MB@U-M4e>j?3%*r6$NyZ`PB$Kvh-i(R@Od=*Sx zu(Y*@xM5%AC9^I&PuTf)DFTf;JLxd?s(ZVSu$N;`NL90l)(FM$ukm%=h`=>RuE z#~8Rd91BZ2JYYQoD7>r-fTTnI7Mv>r8S`Ld|t6OZGvSy^*dPflKm~B7k!tlm+V^+y=d!|IOX z{_yj#%*&USj--^*Zi{;WuEJzrPJHg}1;mPJ9`b@yHr@6+8!C z4WC0l|2sGmmht1c@cVFcSo*b=@YirFxFLCd0UQQDM*ODmJFtwqx5KUBcVV$-KLpEo zW)>{tnfKsm_^boo7Y`JDdn0$N$ZjXBoEdB3%_!jsHcm%u< z7W)t1D_CV`gs_eqVl4ox!4|L|90$!2&lHwT%$oE$O7ZRJg^q*0!Kkh44H8t9aMlhU^UnW!Wfi9 zgA`B(=76l6xQ(NZEo6 zAPYWA!46=t8K)CS1CzjVumgnA>2wFVUq zN!Ac6M7mL{U(bx8sTpH)%8H8eOEYpx$}&gf=VlB|O6ixG-u+7P$l#|0N0jH`YyOo3 zo%1sa$})>a+?r7~u2@dv?abfIovrgCLp;o_>>Xa0Vv=B-^X7oOoRXr_qLF2u=ph|E zgNn=Y3i9sYX9GO^2wZVqzE?&W%$uwxk#e@L^uG}Xz^tbZ%Xp_>;e!gXS z;LSX%DSaL1xAT~>MYnk~Z_h3(Eh@~+8=2`XDd7lCzEO4k{fsctNzPK0KV+PenN&eu zmC70ENhY?e)tfU|FCuL|_icZ?EZg5X`5w1(Zn5zvd(=EB z!wK^Ic-u>Umt1~};XGV&ZY}#2$VWL3y88DXAFlT6Dv>0dkDr)h{rzGcziHKRW!h%v zi{$eL^v_J=fP3|m^JVYAuXvz2yw>-;*5i!7Ab(%ubbmHrOL0X3|Z}P)qY(xosA+nGthaShBI~SHJ`LQ zzj-5R&&({YN{e|5O#P6&X~?@!oK{dgtkC{79J_uvzt0d#KFH-?KR8>^KYwc04{C}z zMmBI>#ePR#HDnUvUr*SB=J-|B6Cb~-dg9|(RZrOG=ESXYJ#l^`cC+R~7xF@?%;n&B zbLL0m66KUwN(F?nB9URGRQ_QTIHmuI1h)fV`lf$e(^@L}>n zuD=1P>$`!}^=>8&RrP~+y{fMJ6l1_TpZXo;co7Nouk$~t_N%J%&8z&X>wL9eb)7$} zDqNS-Qs

      zYmfhat#HNPl@1d^2uY%r>t}Gz1f96U5j*YrPVp*f0nbfi^YEVv`gDX zIrF}xDqZGW_FJpm=FD|zD}4OocpQD0uU~h&oye_@C)Jex($q1#?ekH$x+gS!!4bmB zzO&mXtcZ{&x5YJ1diThSyPe^CX#;uA`hOHn>A3yz4j+%%TUvPY@CnrY1o5wZ zM(`m!UF-L~zxVkM+q}|bc+MwZuRLQk`!xDX_}}0C^WO6={`Fb?mQUFF&A*4S;5vmD zJR;2TIHSLO?*)Xf~>*1`MkgpLT%@$sm+@t5vSFW4>%FMw}kH}y?Z9hM*WmcOzCeJ@n z@Wi-Z_VhmXj=i2q_+EFvbkB^BUp}Ms>UqmT@19Eq#IB0}HHVih9RBa_dq&-Ij}`f8 z#Jki-J3n)eW<4|FsTW6W{^x-1;}73^3HB7;^N5h#!GAq8bIPMjZanz+FP=}ijh63f zQ;r{W8#ZBBT#ty(n+G&bcy2KELfijmyNX&r_xxK!(h3^ia=2^w&se{;_22dOgaK=h zKeoL4cI$zmoiaC5ulmaKYo96nvK@Z^>$w-MJ9^&*EAGAXtR;KiOSA2%gg^88i3hH} z{~rr>-*R1tC2b?#z+P?V=i^_GdUp0X9j|}zrymwRc=bCNjPA3`>p3=b(T5@w}-qF&{tt_cxFIw)1obKG#Y3m+qW?!s_*E!Mf#N z{Q8BBzrb*I)YktuH#WcZ?SXNJFJAiSl7in~js6?^Nch@kVY7aZ|7T~sGV-+#KYg-Q zTD#TTuHW4XyQ!T&F-LZuzjp68_w2rU!!?iYC|ru2#(w@+W!({g_`|v2y4&XFrSm*w$y_xxXm-`!_Q_dZ6WXAEx|a z?sJT#?Q|UoS@g}}Z<{Qe-DO?w6Ei`1~y}3(NE-W z0dlckW9v5tJ|FjZ7@aMeVS7)+B$y_|nhc9PagTtfz{Is4fEgy)XMz$}&Q++agy+LE z;m6?>@DuP$FxAZdR^Vy)b==Ru8{uW}+we+w2fPa22d{-cgxA5Js6Rz#pBXCYll(Vh z*ueR}iFlI#Z^DxQzlA0Jn_*e}^SM z(811ss<)m0@*K(kf54(&JTPNR^KF{seV#L z<2y6%^Djrt!ge|_x!UE38Pxv95p$<~1`MV`TW?H)_L`Wu(|JDTJzM{aVd{+45tj12 z3?2)2h3|#0fS-Zm;H7X+m@=}@AXyFf!u<-|2i^cD!@q;CgUL&4Ff8NLA@E<+|F7`% zxFw$|fEkyW@tUMh$}Jzrbu;0_{WDm~F$0!z%z`h3N5E2^xo~^f3wMG?!jji=zdJk% zmhxnbWbZN0gUfKwAp^vIzZUklrL%wEwx>s-z-s;$o4R997hAexM`u4&EgSkio);E{ zeHWyIX<#YX1M08(95~%MK$Q-n{Z9;V!L$EGqnn%k&)>G^%->V>wK+#KPTGVuGzj0| z&;LGiUzyB(|NLEkAMi!uH?x09QNo`UDS75*Yw@)?ZB$*v_9<6Wu!3hbZs4!WT~&HX zICndv+?6?Dfm1nv9)x_ltQSQP-hl+%SIRFo>cnlS|&p@ zf7rupUtxx@Pn$BirnYWXWs)g&&{|s7&Le$f6$Q#8#|C{^^|(MoOJDU83fFvRlcsOGcO4Ha|y)GA&f8D{@I)5gkUj>d-c5I`q`?IHEc*WVbKT z{ zNdW}18M)b{+-y(5vN5^YR@`h%ZZ?i!*_cMyHice8wsqRM@yvDJmr8zfZb;YH|8usd zVA+i7YO8Xy{khp7+-wcOvOT%knA~hV|0&y3uxv(dHl4cKlH6=wZZ;q{n@$N08NXw8 z+b=e(eSi6eOK;rTYfaPw8XGrTkK6B(x!Hi22lD*dwsM)1#sVEz+WTa?6IS|U>Oh5$ydeG@rb=|*gxJ)8t-OU#xK}`s^aMw!XAhE#~Y#Xa$p&AlCpZ?*0PB@8wFHD+jdqG5WO?$y2>Z{lW-0T9fuP%-_X`liu2m3(l4k1=N$OV(Y z60il-U-da~DmftUOOW>ej4mp=t<=o^Pi_B?|J>gB4Q*_C_SJ)br9BmUY_|x;>(gcI z8qPL^g1o})GOq**v^KlCue{&!a@&$UE52*9f3}|?dsfWvVehSSSFg>!U+qWJY}RJ0 z{jQ`f?-BV&6UNHINGs!hM|Z~-aIQq;5*FRRw8Mv$7kVp-y*Xv}zMb!%|M!Ue)=!RO z|8TxN5F54Rk+8^V{D7TD%wltj3QO}!`K9Naaoh`(PrJS&pE}#msm`aEDtC20b*%Q2 zBC^-8tNlzqU1Gvi<&&fT5otiV#KtWbs#^prTu5I5x7n40yQpaWQ zi?^^mpT58@7nzTw;#b!-Gq>?-u*OAh;}*B^iQ9PCZT{jmo_X4yU*s&>_UlPMEsL4f zc}~%lm-QL)pPR3>qYegId#>wV0k`?u`gnPM?KNGuHP_b@Bz*0)|GLgQ{!@DezO>W3 z%yah@w{`gQb(c4Kx$^xNBCc^?`*+(b@G|dBpx+I?%+8+)(=#@|kT&eY8yc_aef{}e zShSjry&)o`_L_09=3j2}1-E&D+xXvYzUDT6cbiYi_@42p_DOu3!{1@_Te5bS0pz-c z@u9TMvNnt9#VUej{9Fdh*s}tbH7nZZN)LPod?_sB%g(TjFQs9f0*kzOVEPf$uZTQ` zm{n_tvk8aOUSpN<>{GZ!{xk5|@G^Z)7Jr+5!t@*R99h#&19H8p@ixMu?d6AZSI8F&`JI!}ldPPATq`EW6H{1}Uo@)76LWJu zDDLiwx$z2+?uog!9~kF}NxU(6VB!^Bxtr7T_MFk#C7ET$^NOySDM<+fGZO|TW)9#F zd@~7)H~$Vy>m6GW8y6c}!#8ozjYIJ_-Z6;-2MtXcazk?8BndR2Pv4=2GY2H3W+o;N zN$Q&>9({+T^+`#Tzxoa2(TNfo3H_52QpIyfT3?|7gzcAm5?^chmsWn>h@675&c(SS zU0CSN?L68OGpGxhlt=CrUl}LQ z;`@+HPfYU3>4f%0Cl@kMU8AVTygp+=my@XjT{`FHQ{a6nPAYIkg$D0>62bd+HGxfD z_U)h4_j;e4lwy(`@vo&!!2;jV>RWZ6k8y73n>J`r%FvAb?7~sm#d#Ur%P-IM29949 z(O+VAS$@IDoSKn&cyalN{Jflu(%jqRmU(6^?~GAoo)&D)2pOYt^NRD!OZ{&<9|VZ< z_LoF8l&%&~9d0O}{}dGQ($>~utgW`c2;-Y!(p7cS$*e+VxTEum&Ew>iNw=iU&_*i9 zqW+&`J5!_nRlhy7ndkA1(pCm^8PRoCp_ar1Rl+w{>;5c`9cqBKPF?e!JOG-1e5cearBeEw}cb_K%rp zMugPfL*CLZ$J%?vci8^5zfEx4FRy`3_n_J@r02e`Bb*6}LRMJJ7z9cAj&} z&^HwB1mr3tUD6+kol5d;3@rIl0!#dKp#7oUpGbUZ?o)tV^9d*XI4pWS0gGM>VT##W z0yl*h!(vx@8kT-m{N?%mf%bt`NB)-QOF8uda*16^^jinFhTniizYXvu@awRYllVLO zYCjiHU)uaig4=uiMc?;ui@svN5`Fi*q|t|*5G9AUt3Uq2M_kOeaZOJ*@wT)NA% zK^d3`)K#;Upuo zOjYB%>@;>v=i30WLFE8nd);OkRC96UoGphV>#QBvXdbm?gg7!X^9dvNCmH)Xm!p^C z7CGYQ$Z^g-Do5vH&T^73#U!lwALNXT8Te<)8BgWKxw3^z{Ey?m6Zv_CBg#jPG>1cp z|55elJe8^&k`5=YI!WemU24dZF}38?3O+6+NlsS%pu9T5vt-|pn;pZ=ZsRt8ciWHS zX2)=|^SIeJrZMr02(GD5trm#^6E0?vecP~kj{_wsCe~-Hov&>)0jt}8vNeP?)JAs6aaR)T4!{)+0)$Y zV{Y~zH+x;zRwB3d{v9_vPhIU%{6+!KKlw8~-0VLdyIgA9bDm%iTtrA=+50^+_U&!A zeAP#*jaZe(u?2z1{6RZuT5Edud(mGj8_S zqs;LmLTaCt5iGmb7P}sv`WYH^wWGS(Z^dp93$#7A+uy^uSzfZDfLz?K6z&2`6W0}% zcuRn3qfOf_@tT2oK(2m-leYLeSk__&z!$-T;8Ymczqd66F2#KVjIBoOI+Y9IpTWO| zGvMX$Eig70D;wSfi+$)*xEMYR)8^afz?Z|=Ff6gJNncU{i@yDVw#9ZEEpd2#s_Z$x zBpgm_CMb~s155u`r1n5+*`4e!~xkOG>>P9&15uokxDQR)L->E@ZXjLygEUg|MLNPS7*&iff<=o}M;<6HnBz`!p zat4#$!d%-|{19u;>+|%GT=A3f8RI@{WPbK28AFQSVdm)<^LJr+!3deXi|ow-=K5kQ z!28=`!ir5o;)+c`;ud6Au$@G{Au{uR(NDtp+AUIazAtNLGG3N>|8A5_<^xUs%d|5m z@5(s5zjw|rvL%1~^TEzXWc%g=&KmjPtJ6`{=>ieTCF_HKLZ=d2C#y;)F{b$M<*_69 z{3AL^KkcuR=qVpa`RXKkN;x=XBY7@*`j@w_uG8!Xu`WzF$-ii@2VJN8=3lwVz?0E6 z82Q&-2L4>W`L`FHUiQsD(TNN^8J$i?{vAQT?mXCS4~*Mf&&{S0EZdQrEv2q|Ee0^9 z33OIRylo45^v2(2whc?`F<|)W>u$Pqj!b{Zi@Mm9>S{Z3vt_y2l-z7AZhN%qYV&ck zHM!Z8+-yW{HUzglRJZby20EY9W9NTu+mV~C@=J;=BBb`YuWq(PH=B=}EzZq`87v!- zn=Q!A#^tv6$<4;)wkOKXHdR-flGsAF@!ps|-1O~-@w*B*-wUT=n)hysk7dOWlXjOmU4{;X8d9H@gByF>8a|Qygv|5`q~}vS@0j>3*q#;e_|YGR8Qd@#6X0^xvjm_m_W&aPpkb;4|TWz#{)kI2!&6 zcI0cH8&LiU!V%p1H!SkMg(=g3Hn}Xur-AHpVv{==dt9J%G<|JyVvmcW)9nS)KrxsG z>aY47sLz4GIS`6>@b>@MGp+o3`=8I(f%W#k`u#uhDQdm_&;NtN{~`Nde&^F||C^-t zKN-8qe4qpT=jMDTc7>1qFW=ab@UFU=RQ+ZC_%ZE&vVW%?Vtws@hw$^?>*Kq3$N9Fe z1My^hDr4clkf2UJc21IcQZ^sSCx4rnogWc3ZDu%Y*vx!wW9!f0CYP@rY9IOxv-MFs zUcOlIPEIH3Z~b)=Jx|4s=j?k*wI5W|j`sn&7W?E~Ihvk~y(}1ccU<-H&AY#%&!fJ1 zS8g)zWOOX-iBBA-)^e6 z;hph=e!J;^!G?Db6NBl8`CSzHWwEvN1bfu zR(Bj8kGmndPJ|o5(_pdTJpl8KqHUYw8%1jdZho%B{w*K*9PLruSHX|L*TD1Oe(-$w zCU^mS3%m&C_f@Rt-~xCBJO)Ph%G=@B;Ge@A;K}eC@Dz9>JPm#megGC5;G^&wcs@*8 zE1!VH1}8SaEwI=Cx57K%ci{Ko-@~86*fVWgAbC^yCGOquF_=86JPz-L&!+q^Q&qNr zOW~iuWw1Tog2g5l56pNZux(Fla58rJ2o~GkL0D{ShhQ1c{2g{|YdVeyXj}W5a0Iu$ zfzOAJYP@*s_P=`jU%ma0 zW6-J({?Y@-{x|G@PLmfT1EBx+f6m!ZWorL>iS}AdQY*oJY$@;R9xYYFHbjXnr6u>B zOWJtf%m3Rv*$~#~Hm$Km(ok6s$c)GM@~zmq_NNfzFGr>)s%@yZiR|!F+?H0RCGg$007r|ne zk#w%pI zBZ+e+k=u868E5WF0qnG5Rt|8^e(K>hcB_22*1pZ}vr(bw<)`QP0C zlUJ%uUT_QmZu9?iohLIEw8wIl@WJMc?d&scLYOBTHJtCsxaE2|^M89@PAF&oFYfP~ z|4Uri*CSzbfz18CZ%@xY)xD7L(%Ki|DP88Z0h zYGlY}(POi%hm}{FY4T8Rf8Tx-kt4eL<{?vT+wJ6`V{h;f@O0Z7>N+nBmc1dxwl}O9 zQBnBTlYJt`eLJY*A1jKw@m&h*rV%069A2_;_`kdF8FkA&R^+D<@A8{{jP(PZKjZcd zj^rKRIvve=X2er3j@tas0o}(RzV{O5ERo`W>gVCq)o$VT?b83M9m36SIgOHT%L7H)nlV^5I*TKlgKfm&*2^cxrP4NVo^!~e zZw`OkWZCR4>vEr%`OzWw^P=7C5N>t_H#>ow{i&{Y0yn#qG<0>fA5_qOnD*SB^V{?G zCiqEvDOVrMs+6WQ2|gR{2TMDDEiChP=KYm%a58))d_9~14}(X-H^5>)xDmz%Vedn! zgm14Gvj`_V8=eQtc|WTkseR^;*dzjdW8{2a z)EuRKe;+K+nLqtwIr|tTAOPAr2^>UfV%b3ppoEY(!b9@4Qv*YYdSfIMem{cxV z^OEy+Z?Sb_UhSxczx%w}!(DUEkMv27UcU2pkIvuEvqM@|3-}OukZA*rMG3BR z4Pl!xX?&v`~PGfG~sJyb%mBv^()FD6`4_2ko7Jo`2%ti<0{|3zQ$Ii(-wb9X&f(&KbL zKaKOM(rAl6r8GvL6Sy3gRi|-ONp|t*)0M_)D&IeiZ&anx7Jo`^m+-^Y)u(rAnSL1}c_wH+!$UwuoOIT>qwRV5?4G$$|b2gz{yh%_yv zOH7rq+QTwt3`w^82z%YEbe#Rl*ICYYwcU>VwJKlwHMu-M(s-%LcNCC&buCBVKB|`t z6uJD<*}rBwM+WsfB=m2T@?-<&V{{C3XFKkR&}@lQT`d%`dO)$Gg5c)#s(sl8tLrLBMM zvliX9)_;Z9U6vz0z%ewA+5?V6D3a^X$a#ZYgU{_IerN zDy11_tEs&{))SU>r&ypi3VSXn@f(6DAlEg76OM;v=$7CUPi+qNSkgb9tj7`DUXK$S zg{;Rp^3+yf&sqHA4b*sp;0WTS`oz=uzdb(pk9UK{yAhUVINc|n&f5c~kG;i}1h>zS zl=Nl##M8NWKzXvxC-G>@ZF#cZ=cG^P&;jM;YrFzjm`t7J0w&iKla@ zfcd#x=RGt76IkGqw#(Zi@a?<@pMiQP~J|B_eWUdz2_58$N2%vZ?DGtGc4uz7oT`K zJ`Y%a`!(JHSjz7spLjavwqz`R82Gk>f75t}U>T!-rt#wWTgTD%xKrXa0&zet`n*bE z#%}iSW`6~@Q+In<++V=)K*z)O{we?G{8OLvFIe^j9EaP$;`XT9d5(^E1L`B^AQ0T* ztP5M8P+0U4x9B5o=Q%oV4X95z;RtSVMux4=S+M9MZVxQ(gRuYa68V2G;p|KJzC8(Y z?y2lckUa^$-$?}8i!kMi5Ni=w5B7i~AR>-)6F?%!02N>cSPC|Rec&i)&bdr-u0?;4 z1;&F}U^&n#3pWXlbK3V;leI68 z?G=o*f5(P9NA<$=VP75jSJwVNvh`x^-&X77ZGL6M&jG%+%~)M`XI^ZleE=+Jk9^Zf zd)1QokDB&bs#gc}kt-TV+OurENV{1oKWTesptN@ivmY(L)mbC$Q>)TmwN(D2rhSI$ z<)8LlPTI{9`YEM7Iy`XNLztkMI`6D5oBH)*)%j_vmw(z*ZM`UWv$TFnX^+yi^)xMa z=Y1bnmG-Ko^&hp|r>I{3@B3CK?YiWCvNrxeb>1VBOfLUAf3zy?Rm<%^YT75MUjF5N z?PjTul)G7mKc#YSEfeqnX)m^ANIPG(4F991-QMtzUjAwSjgxk>Jby}QZz)CzF8?}z zuqy3U%kw{K+Q+M2{&l|BTUzdB+5VK$-dq=2{nI|mmSLB>vuyvProBS-@=yD#PTI|K z{wbwB;+(+c{!vxhtCsVB)U=nWUjAwC`8zFlv&?@=X?NE7{o6XPEknw^YMK8>O}n%H z-@z13)!1gGlXkQGe@bcJr5(1uUbgK~#!q{Vj7%BS+8Y4S;Z*vQcwK`J)3lrci=0m# zIb}sbk+WXqT%>X^+u7sPFH{a?$yNh<3BJzhIhnl%(anrtmL~1175_>)Bj2{`tK_Gx zfZRNl{9K}P{L^`v$}wVOr$OE2d{;W1IY$%S6eG4^xh?>b&g*KX^9QBz2+!Ju@%vml z^oWpC|6b8;e}LOMZm{+ZSQz$B=l+1_Q{?%JGDkez_U$IS&UoX^-M=0^aVdLi?0j3l z@BO{cf7s@gCc|?+`FiCUqwD_NFKZ(_|J2Vz3)XtS$Ij2%>-xdk-%!{60dDL4Zu?Y% zwGSXz>-TQ^c!IUh!0kKaFQ`|tZ@}11%vjSyofSKHCm@&X6KD*}J^^Xcd%-gQ>J3Z$ z{y^;;mW&M~zJw>7ef1%n{LvQfc zz>_t;l$XxU1L|`h;Rs^?CZ*^z9k=Ks>+zz`Ojz_0x1*1lhX<}da|tKu^i{ya7x8Y=9+y#O>%~=Bt7Ad5dtO&+lN-XA3O) zY}NRpkIpLt>hmt)2x9#K7JcX|Y<>O&i$1$y(MQ~lK4uOXxV%0foapmcSoGNs4}lM8 ze9=eedI8JpQ^FC%`Wr0zde$%1GI<>4{i$1bW?dbE-cjzPM|BF6y{=ewc92R|AXnfH} z=R^VZ;kP3y31VFUi#}~&$)Ag1sn2a;(MQ~lK4$(Cxc+n?oaoaL7JWLwQh#DJzUZU# zlz{c8E8z%Yu{3V$!;-dLe|`!}{o&|YyZ(q<^oa#JC$XCHx0F{yI10!WPdMQOxCz|H zC!WqR?BDG2kH=>+c09H_+vh^ERo0dl&ogw+V96L;;x&TffLwz#UMei_;b2(w7Prhf z#4UQq10DNY63+iQ!w84BbpzZ2z7al8-L2H^JV(d&0reTK&*8T|Y<)6e(MQ~(kGP%Z z=osCS^7q##mvDGnUic^QNVuiC<$2=X2m9}>KS6S1aTk*j0Tlp9#{#sfrB8F%G4Tk2dN+*Oak-3O0W$a1XeHbBVM7% zy3Pub*T^!9bYpYMii+|}GjdAGGDqa+W(-YA>6e)+XDJm@*S>}lz(!n#RxGb+A?~c5} zQJ%g<1;u&!-V!V4_S}<{Z{_4m$Psyk*(G`2(#{p#uPpJFWsJ=kQS*cA{LV?~Nmfol zt`(Exi770~FB(oS4~nNLps!{z-kW&m532Fu7mS&@@lX z03bQyUrX}}sf&SbX!WhS&uRHL^i3NyC}n6yesYnWu?yw;Qr#&*i(fKvE-aNw1_wQX^>*-9(Q-X+fl|x04px2jJNK z62)-K)gFkB7lR{2__OMmUq>CA5kJ^E9#kD=+#;8ZW4=bmhAEPdR%W>>c{2GZbw=ui zqodR@-+YvOb<0Pm{A=c;skd9?L0n%0d4`P5j-ulQwvHhcSH_u)6dmQhb7?ej)+lQ! z2cu)-NYSsQPrd!VvKIXv9i=WyzLf!|-ikd~{N%YK^GZs~SX;+w*ZV;A+1W2sCKC;= zD}dCMF5sV}F_Ht`_%AchNhJRMWg+>lSB-R@i>Ff-k}lt};L)yS;iSn)r|;gD)@K?? zG7l2DGR{5D!xB}`avw!cR?q74Fz?!_=y?Qv$Qw1|6nNKP!DPHUQf{=E%pm5@yZ8Q z(5AZCY2EC`ZuZrdRN{z`xRzOM?wCCPM8Ol|e%aIe*gNd~PZ9qf9bcO8KvtpbHoJVE z+!oh3>D?nQj&IlC$mVxfWLj2T?b~kOL%P|Y(`g7JLN;#L((mgNZ#}mw{=*%+-+LK9 zw{s`m)^Xg z4qf$T!b{y>7)aY>``12a^RQix+fED_|KOQ#Uh?6-V;cvpoid*Av`c*d`H!M09k)N; z;o~uTOABuvKEbkHw%dXIujgL4?&y6Ntho2ivzF|6FU_{W5x(|%jr1*tff*B-vCjX;)CwG*@bnRNKY`z_({w!e3h@yc5oZx?@? zF@YH?NIZ$Z1;{0KvoqkU;ZE>1u=KNH2fGdyJJ>K->|E(EZGUA2EOx3p;Vf9nCmojZ zxe1o?xfy;67Q4|BSi-#u=fLY>u@Aigi#_O%a6bG#Tnv8*m%tyvrSQja8T@yc-6+pb&-BmOGV%A1H-m7Y_|Jr;o<9g@z+$%&8&xrw z1ZDyG252?d0xGfn?12vfUz=1XDvkUu$_(x=0qemoa2SO34zWC-{;JP`ACd!7Pfy+c zmt9s=VGjMQxBvYg{mqYh`(M5NPt1&E-jc%Xd@)|ys|YoWmemHv>Tp9@0w^dd6a%Hd z6>_X?whZi>VeFb!HyvYXVNqe}=)7X{xN7^K-9QD&{AYEvA|j=&mHt~U+X2fM?gRt4 z=IiaXU1a9hvMmtAxoq2l*gT{Sjv;bkaaoDn^tE|4r{9;Wg&|AEhu`u~`}Jl|p9uNx zGkuJ$CXk%(+H2>eu|nl*Qtfp}QKqMnkNEF8pUGXeZyJvVkP(86YpTKi^rFj!kO6%JD7BhB$`Rkn?@}Cf)P&yUOzjdU~j6 zZgz^g+8x~X)w$VaEM(VZ{_nPLvaWWDy4qjd>;k=PyT-#?+w}P|v-#7n6uvj$;`{b6 z*>szq*L5CV*K?KXIuCcVYq;4j-0T!?c0e~ff}0)6&3;r@d!m~i#Ldp=WU$8-dLA55mq||0sV4n(xbR zi)s-K559nq?9Y{jScebj@EgRGGq}Om|S7t z(l=}Fxi{pMl$B@a_bc(97I_<0UM~!wcAl!d zg#7#>+Qy)zudAjn-X6^|-gV>+D;%9&n49m-O{&Q8vU#hhkOF0*7ev`k-Y!?!uQ_>} zmR~y5TXsWse)(z1TaQ-m7kuPhdm7|9@5eNix6wylu!`|F?ISDLb*7{9-b+Km z)y%0gY2K0ow&<04Q%j0+yrrew3)Xvhp~~E$GDkWxhvs{|#le$vrSrZwvXf>Faq^K0 z`5muB(9-F=6B||jHXr#Z*`;MkB_&0t;~jL)8hO-5UVpm*=v!1?SQfPOIql7Io&SGY zRgT`Wq{6XzB}Ih=-a_8}lDzB@`Q8L6g<#borw@tNIeC8{*?qAg73F*Ta=f-lHklkO zxz4-koE^oa z4_Z2%{GFn*XE^Ds>Y3AuZq)8tbPHDgI`7O;m3y-zH>D^$HzjXGNp{INsYt<+=cKb( z_ZxMrlIP7H>+Q?nCod;Ef2cP{dd(opb<(*{ZEVI%6r$5mt4wNATKwih-_s<5Ug@^`mwmP$TY6I{N(j5%JrsZj|%D-#F4o~ zWkyxYO!ST@A2rHbl3L;|r3nmPI-UCJX=2j(JEu)Z7Rx>3$=kfS$%Q#3UTJv=60H1n zhmdogpab|Gy*pVC2)TDP$fb=GMgP&ff?VYA_v#QfelRyo=qjuvEth{#m zn4>EDK1X(cFHHlIgIKQ4dpi1TlfQj@WexE7@o{}~lNCzt)owOyM zW72leS5~68w5+6PoZJbPJST0-Ro>ry<@GJ`GMEm!tkz=i;)?f`rKJ|EbUFDrO=b0T zWXVL!TT)8Tm{dXM5iEI5yXq|Hyy?_Q6@GwG?`92Q=yAUyL@D( z2&0!H#7A{Hf7m13Gy~AFXuKh zLkM13I_>BVmDj{a-q3NSW!?hG-GoxHFv(w{Rj~6m@m!PEmAo z{W_q$;Fo2T7_YgCecsEVWw~bVgMYB{(|IrFsJy3Z$jiotRxGbbQ0IA0eGSt^*M2@S z)iNPHN6^yf$g5C!>3;GOa&sBdl?F|o(`W2gc@;i&W>C_AzNx37{L*D}D%UMOX&X?K zTb}PVRVJA80H@AuQJG_F$&@#LU^Z<)(DKwN!(Klz>73`2r)J(E)in6;{Zf_pa6oy% zPhabnCVeSBd3rkSO4C%{0v~yHyG<)9ngpwzar)xWRwjM3eB}AqmCPi$G*qlZigTu16`diJPmjPrhn8wF@DkT)~p-q;k(Y>>8{<1?4^KVLC zVQ_7*PT#daW#;>)GgaEy;HA%5GYDg?U9J)zSqb!#!74lFU93e?>`sI1V)iM>HU7J0pO$gmK9wC?mCxB_+4%{@#Yq);OnZWs&rZ3f zUS!gm>!elWR4;J_O`g*RY*cw$ob)B}1GQ%2V}>H7!5bGi{Z}uKN#m8(GO-PwK3ldU zccsc*>f~*rH{V-!`s`#*nMSoW>D}+7S576#F7Y~6^kBWKj=Wha@6Q3{)vY|wu+FsJ zI4AI)jFa8-aJrvia<~59{~vQeme8B&{-2H>y7=3?C7zCT+xyeZ>V);Fk-Zmhd5G+p z4&j-`PnK`u{rtqdx!%uDOalIXGMvrw3n$He7VwpEG48{De$lu+esN>)g{*m;XI&NP_~9hHxg&8JNSu8k*60067yoxI$)&@QGdiw{ z4CUG4M-;1p)tPf)qSE^&)VwEQs_xxf^IjNxUz~f%8c+7a$}^j=m!s-l-M&pS~NfuD*A(UphBmQ*|%RKi(FUlC<#5G$&qL@=SEyh79i6ibPeIbXZ(+PwEZ# zyr$O3y(=RdN}Y;rU>#-*N0{}U^`_KAd5gr);%aD_JL12bD3$ofb07Z^vcX246)Mk4 zZD6I7*YWbKyz2TX@0j>OR;Xp}M0GX#IroIC?p8}S zn8}azsgz;Wy(>j}{Z*d>^*QkWLk>87p7eM22W;DveU$S^->9v&v|rNySz=fg_POF| zUYxc|+A?X=ERQneT=72blC)FOUfHsReXe+It9-ob|E$k}`Wy&i4s4>smp)&wu!mVk z(k*4;6*h%+7e*A$74|ROzW1AB)Azl9D{kNWa)9d;jV*8YEez^?@83x~;VdO{J1m_+ zhRjLy3VZ3Yn&EF`Ea@vR$IpE;;|t&CTZ}93*M~`K_1vVI_Xkd{>As!7zVY9mUsIos zkJohPKVi;var9lYpk{tfSjg`J>rE)^bQg~au_z+@s@c0$EA^lJiz6YwJwN>N&(qt|*^<%QACdVkzwPtIrUP)C7l&w-#_*fnUQmLQB%VQ9ya%94>J4}g(~-FKV-PaqlSmK zGdzrWk{w^!+uA%Q#-6`&M)*K;f9qVslQ{%j!WZ0N+~LKBdvr4XGk;^;n_|t`**C=+ z|IcR|{{q?_nmTK^rlW_)-2dQ0bN{O=jCsDhMTrE?Ln7cnRuHnGW@J^k2OZ$3C|n<9-0s3%%$Y{JD)bZ3d4Z7 zL$G29&+l&hyW|^Q$4gDqX{{(Q?ys~QZ(`gg;gfDN{5jthihG!*XR1DD@#oc{{w! zRek54W1hP~%l}#0YYBhicEg`*`dZKrh=2JRCVcyO#=ZC!lb*ppGwx4bHGJ$$^PW7r z+PJ&4HSt!d9$l!9@}9L=XYPmd9C`i(E$68nHN5KY9csd_(|XlG^R3GwjmNxR;_ub) z1zJz04>$eA!VGhNU4(gV5_5eCKX{?xHI2;K`)##;hd zp4+Xb=8Ni?+{3sN+M94+X+4e9_c8n?n8G%SIc_#dgDJ`>rLJ`;~t>p)J@+{ zueLj5v>tw->1%qWdGABC9e9iU5IuMP+VBS|f1KXmz}a1L{{!@lgx6?2TKA#}KVNzH zNaOZ)G5k62r}S@oF@8z>sh1o7y-xmVx+Arn+OF;9XOw3q;d}Qq;gi=W^IUmemlehx zjz2-Ikd?;0LjAp@N5aLZ+`XEw?Rih7-iByBcq`q+o2u_mH|-ZDYx@zS?|V7nB;IGL z-vNCuCTf0tru8Lhj0xw}`Y>4YZ#({y{xK`+llzEA`Lv%dXMZ-_kc5rJ4qem;v=ZQ;9_%)he zZS;OYW8*(p+mRC`#+|3-8lv@Rr`Ds-wI1))_M=?uWWTZ`b#* zz4jktv>rBPTp{^(K=U))$v@f+@lSHzTYcX@*LG#Nwp$76pVZFi-To%SF`B=d&NB1Y z9EG! zFVOPXt9tIGUWD@8F0rPcZ}EZ&H{llJKa+l6`nx23&SzwT=rLTwb!%wcjc(L1#u|OMert<@)SU^Iqg>yRb&b5ySNPpD#1ZQ0d)HR$%PM`}4-7Ej zc1|!nd4b_$+8@nFt_L~WwY_N6)ZA}B(#UTgVcaoVK3lb2IH2XTSjW$AX?kKbz1#J@ ziPZ5!dmVrGQ2i!4>Co{}f`(hH@A+JvS43*RHJExR<@EW}s*kpFCmu5HJblkvXnmha zK1%qVuNZzy>)}??E%~}m!%e)^+@Ide)PoQweMQDUVXUcFt+YNTU2puCX?s6F(_e78 z@!zTSYo?Y<%tGVeO7m-l>a$bzpRVCoD6?2*>z#CmK2P-=tmEW1oQ)#s`b5Y5z2}&4 z+n+bwR^@%Qz_=%9J@o24W&`h!ydQ&A-^o-uULC7m$Px;N}dBc>m zb)3{9-}tvb-{`d>+Hex@o4lu6sb8Y+T;>PD$=Y9!(fTlKlqrvAwY_``w}dO#_ioi| z#vP*lX^iH_GTsjf*ZT>rr?|;FYx2*Gf5NMVkLh#QIC8YT*{S7M(A|VvHsA0tZ3m`m z`#4iabD922hKV#5=7KPBEmZ3o(@9<9=ie>W}PRa#EjT5mV#xM_u!Ya@N$0Bx7s zsGM;cez>;VA$J)&-~sKQ^0Yj*YknQm=T6mp-lX~dd7P;SJ2ihpv|KlxZS)+s%V0%e21FReQuL%3sQToxaD}cNllFmeWjacc#-WOSlz9hFd&sc$xMuD`+>Q zon1z{gjcEja;ph$Fwy(;2gv2bey<}e7%%#V^r@(yl)Y>*J%ALQ0}1Z^R_?PSZdra%m=UP8@YW+yo_htTLCj9LAh8w+Nc<@ind(bq^ zxRa6J5c#dhA1Mc~woiNYeH^UyyM_9X(Q(XHeGi5YGVvxpY`7Kexuj=>wl`a~UboWp zmfvN<&DZ)m9N{8&Q<32|^mpQ(p!!YLamibYjDHOEC7%1^v>$FW*3^q0+8_1MeDYFn z7h;#28Mq2Q5tbFV=Rho4Rk(_cl-Sb7z5xAFl1>0WJTT z2oZfg(EMMl^Sl%KJ~ZlT;(em^tXsMX-&EWGnL0k{w$6l0qJ5R;#c2CFSnKJr%T2kA zS!lu~k2CzawwrtP{wIaT|Erq~pU`&kCQbK*b4+?eip>3Ib=*GY660Rh-f%WAvDB9} zj~IQjR~zT@}_81*U=zCE>JgSKG z>>cL*vL1%N>Sof}L-VhJWXuGvo(>+`3 z;TUzd(DrYl=35&QPm^p7)BIc5);xde1T!8RtmTxHWc*v{ICbh%#vSS8V`Jmq`l{h@ zk14n9I-)g?$ne7cHX+0a<#{7oLWZFfk|2(h7MZw-tpf zJW=(SSYq4-S}w_Ljr%R_H^Wu#TaOz51IrE1)%^He%VmYOLoKwv&80qxoK>1X&(a=< zd#?7k<-D)r?xO8$hr5ishnD|N;?tyCdlwl06Ivg~X}(O=^4vtZ%X2n4^J0~sH_Q0n zr2X+$Ew6R`59lf-M3WO%36qsdyY+i3bfAfKeYZu-0l7xRkY@Hs}m_M?qEPuu0s zDvWz!6H{;2d9>Z2eC+gVJulaKx=PdALG$y3zW1%P9sES=dxGlUNarc#s$ZnXyjOcE zUtUdXqUPsz-Z#m=ke?g5^R*qDtnr5vK9l=@4dCXTgG#w{pvw|mv&~MKEJKzbArd{yG+Zuy}oDbRKE?xlk#b*{X!cpm%;kp zw$b)%uGWLa)HgdnE;soyLEDQ1TF&it{N6};w=+-B`a3|=+u<1_ckV#LA&XTH+94^= zJkmu`SrfG#na+KA&%^0oMBj4NzXjpWl<=Cag?fMCD19#NvxIN2a@T45(3|`6ybjt9 z?N&Qmvi8$^HQmqZd)`RL9SQn=Pu2IUg|^pIb-q%dJXpD#ax3L*Ezcz7Z0%o@lshON zBa=n%5PiRPcQ)nQNc+WQ!_EC^O}d7T>9L^AziWM*SA9joGf(`K4iS<3pnG`RMU}7L7uM8j5Yd*Cl&J-=GaE!Ti0gChg<%n0n};>A!b19l z#amPF4t;${M9WDH*GDH>L#FYAO(Q$BOr^5CAHQ&gm7I_=l|400D)S>7BsXZ)(OPi0 zvO#!*c*`0c8rHDIqSvFNEhWJqn`?GFs5-rgJzZ|*RtZ1?qg@sBa^Jk_{!!9Y%b})z#?3euqNkLhK5BnipaV( za$j~-%DMMVY-07fzZE&quv1v%#0R&BTk-wQY&0ak%cMuAMfA5&rn2pv%E$#)+o%~4 zZ?u~fQ4$hy-rW&vF7;6Lr#3#zn$oUSYP%+(yqEp^PCnIV@CNDat-&+;cZu$9-Q7KO(oe%)@59rs zzk9!RW<;nJ@kIC@t8IfbJ(c_nSW;F5MQE-lC>Hbr{XrJU2Xr6yzNUFFO`Ww8>;n72 zVQ?JKC0M*RmIu%cSlvM)NCg>SG^hmAz#^~~Yz8~PK5z(x^3t~k(I6hAfLuTow8n!e zU=~;amV(t_BiIJ^fP>%&kVa5`lQ0Uzg8m>4WPyB80VaVNU>;ZkR)Y0l3)l}1gX6$M zUZ;W#Fd9^XXgvl$SjMvVuAeDR)3HNvOqql0F%Hxumr3G>%kVV3+xAn!EqqpJv0X%Am7m> zf>baXl!0kr4p;=1gSB8Y*a7x|L*OXj#j;w1Xb=bDK{_Y~U=~;kR)cL|4>$;pfF`tbEkTsD zc%T>P57Iyu$Ojc*5|{zzfhAxiSP!;;n72VQ?IT(fTw89?%JN2ZfBwK@<9cd1ZIGFUDdA4uj($ ztTkx^9?%JN2ZW~o z=DbZnOArNOK`+oBq=76@0VaVNU>;Zr)`Klz7uXLDgX5q%162>`1iFJnAma0na)p&rr!T7zg12jW34CCjR$I~q_eFbT{6^S~0Y608SX{vUhqA0Op$-TSYwaD)S?XaQIDr&5kP9hp@C~H+1~>R#oC__!g%&5!LW_HGf>Yc= zf*qVf0xeFVg#_Px-{(1Jo_$sbH|c$S|M-4iCHZ(XGiT16IdkUcGcyY=gBze|5@iHa z!7LC3Nw5U01X(ZuHh`^Q4>$mhg0tWvxCRP8OxeIVFd3ACFi3z!pcQn3bzn2t4t9h6 z;4nA=PJ{E{3XqQ&W57gE24;gA&;*)6JLm^%!A7tR>;ikiA#fa=0_VVGa03)grmUb8 zOa-$*6f6NNK^6>v4PYnO0}gIa0=xGi>rMuIV5A}9m1K{IFv{a`KF2)2P;U@tfXj)PO+9JmZ_fTDXT6DS2!!7LC3Nw5-R z!2s9*wt}5t4>$mhf|KAZxCpL+!l{%Cj02NFIS7LUSOi)@H&_kUfz4n$*bNSY6W}yB z53Ycb(J``gGGH;kjjza4ZrYG6CiI7->Y;hYCd3l&N|M%7u|w zGO{Qh{-ku9gXm-LPVefi)c8*ynq2BFe!uY!D{XHko9f7PEX(u^B|VkBs0NAn=kjRQ zbjxo=P99-LyHROZ3`I+EYlK$xDZ1ICv@3_AT@Xn|qLGS+r_TtBFrU2J(!5AQ(dT{P z#gRoQkI0@o+3^;6WzVS~g@)0jg_LvGngG~CNhuVaGf~AwarXgr5A9|<~8&Tfj z;kTms?MmVGF{6`xr=fY})E>+`ar>?4m;3Uayd}*FpC<91Tk%;L`h>}bx@u!g_!IrSeorS382 zpOSvc7Nh%ty6b;S-Gi^FJG@-o3%k{Q<2&ZQq3&CMrS6Uab?g6D-IwVHg#T+r>ONni za+I)Mm+-}ZukMjAtD9M@?wU%ad)wq0Zu)pIV&(Xj(mlndtMC~$SN%I4Q2%RRSN}fd zWfK21)+X*X5Bh-CnpSlI+e}i?P&>b;%jpfsp((qTODgR5XH-+xCpQ`)LLUjx7 z)A*7%)n8)uw8i9zJ)+@r4ygOaL3QIB)g4Y_622Eq-i5o=A2Yo?|1gNe$g2OXUUi3Cy^po}PMf?>pVat$ZXYuRNvxlJBW|)xP~)_=);=m^{yzoxZ$I!`B=A%m1MMx2n`#^Ly$({nzTADOUHj z2h>fUP*jyj%0KN%4Zj{!x=UU==Zu?`r{lQBr>&l!GW(A$(eOUg|Gu>O&#SxYN9sP?r|wLv zhi8q?4wLsKvy zSex6S&cQGcfX*FU1}t7h*JOMk@V8}a8F|8`jUJ@!%cANjEQ_uZ}j z5g$?is8`khlF3zK_P*vT8veSK@3}9lf1%aeB$M}urJqu(@$Y<9-43&#Gpp6V^e%N@ zoT=_i%m2*R)Ia54)qT21-Dj7nTmO3&Zs|u^xi-z#@HyMnT~)2+nOUy>=RT|MKGWX| z#p+*g_Wxp5{cV@jeaz~AjoE9*84Z7KoVu@Ad)oII^%wk&x)1(L-Fs5%j`)JQ^GyB= zrtk5e((ogupO-$O{s$+h+;dEyB^ZI&0oCuh9oFwmpQrxutrovS-8IjsJJ#CaF$<4u z(eO(h>K0f#nquw#*lQZTv_{=CChwWE>fd4cJbz66&s)F#in;S1*6<_NUSiLxe~sD4 zKC8Dg?Hc~JwVN0JxBBCo)Gaxr?zEHYb{L;c(^W4W&aPh6__URC%X`$n#q9eXqg%CB z!|yVEby$5oQ?238e@@+LR8-=s(d#C6+~y+%W(PaWzF%$DbkEpXh3CptACa*dUSjq5jM-i6 zw={f|+1J4<>R)4a+hODO(-{qa`HSjizNYR$i;sOw{nw{i_ylz?J*4iO52^c>)z>S3 zt^OURw_~T(|I#DsPO1Wi_ zO1I+&>h81o!#vCHh?QfZ^}`E4pma~0e~!&>p897E-;!2$#OKvL_>Q`F-J|X*%jaN) z`j?tM-?4sRi;d6I`4&(R;!L^K&sZBz+FsT0*KSvLx}AAxvol98+c_=rw*(-uF%<{{UoYWQnbkI&So|E~G!&N-{@J63;fXi4<6&+6-y-`DsN z*6%%dhx#x4rMfenYwdZ?=QKS1in^oTr|ub(=V{a16zfl3vUZ#{yLj5_chc*cuKpj@ zoq1H<4rCMgUNrqqzgPY57{3cYQvar;y7e>FJ@OY8UTfjjpLBdy{TZwGwDlX)HfZ=W zA5k~<2kO3K?QP8-^~Y^KQ?N$;$BtOIZjvQ z^}lBJbHVzJh}qj!OaJO|rF&+px_4Q*`YfN}){ne6TI26={fd=y{oiZ&q$%n?Z~1Mq zdVXuRhDWS_ikN(BOs@y+Y}PyGo-uc^$@7e(yG!}JZhC$G*VKQ>@tlS~Yxe#^mHJ<>ertr; z)l=Ws@JW{Lh>c5=to}EdJh3k*-5RsA#g;x|_VbwaU&DW_bgyqycfIUuaeLuBf`tR;n8_ z|MU~;Z+lbSS1kT5bDy89;rq=0oYm_)<}b1N(bBBaO*6jp{#E_=m|ZWn{`_sb^Yxg? z`OLp5-FhoW+{)EgsNqkWUY`6@_1Aw|-4e5hj!&rnpy_Ru>0!rW4Zq%^Zby~2|Ctxm zzv_3@z3V{@KVx+BZ2X*L_CC|>YRjJ~ea!kBu|dHqlV^?D_v==!r>$L|vHH6XvCy|! z`gCNd4pM)LnW~ z-A!lIed|$mAG7gcjm@*trpLR?o>zTF>0;I|J!kYYP0p8ZQ~kYcUs>>p^D+ zA62@yu50`~cdL8XX?0iGc=GD~N_UUdYsY}bU-&(Bj~!Ka$G@l>v3i(d?e)@L4X+O? zpGj69502LGSAVANi&ozcn%ylOru0iqj?530?pU9?uh_UV$J%?rUuyWg^Xj&lUA?kf z{gd9O?z0u@Myx+w^C#->u=&*))7PX;8a}>L-K*9g?)z`*$Lu`&nPmOzrYiNnmR9%e z@#>CRrEZDY(~*VhA8YfgtN+XV53Boz*~1Hm)PHc8x_$H2U1RNN%6j!r`vY}X#nrv^ zWpxXzpImxO{hO@4z4)g37h8E=H@W&+HT=o1t9v!3?#q_%9J9N&r5Zl{o9do%{kZAv z`H32S%*KNUt=|~`eM@KUd*Qd#-)43mvGMDfvl{-K)&G;$UfX&!yuiZa~fV??qfew|Md5$ zJa=`N-|}7cPwGd_o_#*+_?o*Vtl|6Cs$1grr@p5CIlby0{E51KR?fJMi;JJq@ZtYc z-4}0H_Z1t5Ui@eE?=yRQ<{RpN+2;9geOLX9tzNEL`l0KTufE69TR#|&sDGyAbH>Jn7t9{-F*|$BF+WA8MCj<-5UP7 z^;=t9KbFz(3#QL!(K@OR9kc%6lG)+&e`9i(-WHpEO>^t20~){B?Bpr4^Q)sY{26!( z-xqD(+fl6kx2;}FOpa&G&f_NEDwCt$%KM^?n`dm?*kX45mi4od? z>Mkr-cdU&+t7_DL#`HUVjrvFYiqU;c-Njb!>sH?BAJy zb+22ye#6>d$r25ZUr~3gmE)?lm-xLJ{$R7ZuiE&N-mCsOX0HX`Q2*lps&0wxcTE3t z^}k^CRkBR|V@;2XUsr#`+F6^$Z?XQg;Ah5fi@GrzN5@(_8*cr;G_&KGt{*ZxIrBqJ zx7ga(^VZ+>eM!SR&Z=8r{p|B5|Af z%nl|!qW-aOt2?4X?W3L!K-&KrEB6HpKVs#2-P-+dv)jkImHwdhANQC(E^O5BXJID% zV%Dz4|D*a}PO3Zp1M0qR{^8cH&s@~-gVr7%vvRMpe&HqK*LGUzI?Qe^O;GaMc-KVo{lzDmPiGxwF>RsX&R)E)nnrE~r3eD!ZyukHwwXX#t&A3mV& zlV<-1FROpjSJb^~axXos{)mukJei`)BmD$S6@|kjr9|6zo!0uPaB^b z>Q1wMY<;KtM;ZMyCSRNN!|AlfZ?g8k=A8PUHT^vIY4y`AJ$ruVZ`Cd7Q}?y+Te$Im z(CT}N^>YQ*kH0fd>DE-J`-1hOPrsu6@xQF@J=V{@bVB{tzou@?%JH_@#j|5I{EU_J zMH}Z|H9f6*S>vC!?{w3CL;cS`rtT$cHe)sr5tS ztsi>Z@~O9e^o*?w$69~!*iV(uJ64Y~XR3dP(REmRSlq1PF-LFnn&IO#eEb9IUbw1m zU$wfE{5%-VW=(AGG>AcAwI}X6x3m zCjV8lujj2@mRNtX<&@H2{a4H1?Bh(8_8W`0X!!bJ>Xz8JTHmhzwAtBRR-f}es^PEg zQ+Lfqb>EJt`=Ip`PwiEIiP`ncht+?N>1F*I^~bCqJ@}XEf7#@FutWW$%pS(tydu)4 z;YS`-cc01m+&`-SC6n)!J?ekm^qjW#aozMe$@-tGX{B4ZTiv&8e!0c^gEw4%WPI0K zen-Npzg4E!gVrurnf*<=s{A$?-)A?ef0B(W$7ZTOZvE4$_o@GF)Bim`QvV3!dsnae zuiHGCo0DGu^S1Gw_ht1zX7%6qRZIUBqceMX+QMHpeZ;#o{+Q7nT&Dha%+8;)dVKIt zHGHg%Bb%(f9a*p8)Ba7}t2SSK`l9+@AFg^DenI^^tUPa6JroT4)zUW(6>e-U$Q&97 zl@=sl-Z`;oQCs*phji~;J?y31KJ&{(t+!7b^WoO<#myg?GNz4R7>gA?RkUzX*~;dD z5hW$zO?QS$hZU?1Mb;l$u<(g>!#_8xaO;}k4HJv+EGXXaol?pPumkVa3BjHO0jRrL+I# z;)KxpapNZrghrNd;_%Ii(6NEfhSqO9K4E3@Gut;$_;lHC-249DIy8LZz(8pHi18C9 z6%%h9gwaW?%KD%gOZHP{)Y+*FRAfTvj@u%o@o#=B6u-N4eCU^V*VJ^}_SKp_J9h0_TU0c8M&ZVa53daU z?wzGGKT}xzh0?;%$(`$>Uzwf$+PcEq-@GeS8?O55K)CelMR!bjIUFu6J-;zDX8eB} zp8U;?pBa`Izy7vR$&!Nb-n(!AR%l&lb9C39fx$8fW;EIMpzeJEVm9I7Y| zuL(~m3~k-{p*5vzx?`nZeEIi&DLFGezO;NssCZpr^QKRSZXXujIAWlxVo%|)@TTFz zrzAdBGzpQSksd3QEhz!`9m1p`3t&29xd!5(lF1n@DApheSECDNl z+@T!+|F`#OTZ^bC@Qd7|l{>V-`?GR)wjT_>Kf9MOcZc>Af1d;HF72)E(Jo<}kh`>5 zAZMB7PVH8(2mCyDYRlh?Edseuy9fmD)ULz78Mu43hxz*iaCd7%G`7KaYlHV{`-%Ve z?$n-x=2rJ=jLC1ZSWrLP^>evAqn6m~YG7+MnlM?M~?SfWh}`FA^qq zY>R(|z8{o>q3+kNCj1w^-o&fT+}&EM{h?XB+Dy1TXScCR+cJZ=eC35L33EB9-U z0=Z-R@7=FWus7oF*vkFdbs%`hc0c~X_iRJV_lLS?TSIv8p6$EcvHg$Suie1>bSu~i z4uGNV+ZNtK9fHXq3>JY_;O^jV=I`ym-N8M~-*OLks5`iF|2BB{wjKZA`?tFYyVd>M zq7P!1V5mE|O9&r)2UqUj%H7+OVDSCh$)(sN2!jMz1XhD}U^Cbb_JhOV1UL__fY5mC z4@?BJf!w=o2JN69Yy{iDE+F@AkAutL1}K_<{Gb#}1^+kqZJAX6yLWEgecRO^qFi98 zJGbt>?G@tXzU>$gymMQF{};J;dk*^l$lY7Hcl(Rnxt062tHCdF-*)6jC?B}ho!i0p zZGYZ-w$aJ-9l+hK-OArX-L1XVz1r{;Y!EC0-N4I`Y1LD z{v-Eohq`OKA4 z-mBd}xVu}shrbU1xnp}0Tm;uZ@yCC@JGYymlY6(j!G7TG-=61hcL#T58FmQVJzRGO zx0$eZuoi3t+rTbx2pk9Qe(q)dz5(Qp?r2a7rh-{O?&=P8Pj@TfgYW8|CF~-&1`20T zMlcRc2CP5jl36GL7J*jK4OWA7U^Cbbc7y%kFgO8DgY)1D2(iyL5{v;8K^d40YCscc z2mN3z*a&ukz2Fcy4o-n{;4-)YipnW3C17IuI3HE>k;3zl=&Vq~J z8YrAedBHd^8I*%CNPtD46?B8uU>(>Dwu9YZKR66dfYabSxB^1=Q&un$)PN??4BA0I zSPM3SZD1GJ3yy<0V6VQ?B;0ig$}KQIPN1hYX6Xadck9rS~>U?bQD zc7eU%I5-8)fy>|qD0+ypfl@FP%mPuc1Z2Sg*Z{VIonQ|*3QmHv;3BvN3V)4qfytm8 zgh2wdg4JLh*bKIV-C#dB4bForKpqnt3C4hlpbX3gHJ}MJgMP3UYy|ReG&o*B{-A6a zG6Q-0Ya9M{Fp_U82?2Ye6G0Xn21Oq!2$h3oun`;p=foxLl_Y%U!4D)rJ2*cdov_B9 zHK8EX4fca;V9bXKLMws1Ikg%b{tILy{lHXoS4~>#d}0l{082nW*b4T7b(67G+{<8O z9KC_#;4HWXifeJ{H^qJqR6vJYL)Zr7x%LQkK-(LGeXj(&2)hA}??HBCT}1j_@Ru=b z8@LS07<-bS8|(+CKpEr532=HWbjU3IxV)3F8XN}W4p5iyTZ_9LY%YX1$bzB;@TjGX zMabGm89_H_dLO)SkAlZIbD;Qpln=~4OB%2hY6@szE9nsqm6)bVB%ZUJ6H#HgVUh! z2edPg1pQz;I1Da>(tm^p7yvuLDNuMGTtF_c5^M&C!8OqOL&^nCgKxoY!@r?Ba2jm9MjEi|I_Z8weSnich2IVA3rr2sw!k)U z4y-FE2%QGwh857x3qm`=c~HoHeJR*;dqL<5D0@#qX!D;TFSz&t%F#~V@1u?vW1DKOOFCpb{RDaQ_YH9P{!pm24w|nc3n=`b)E$@{q3$M7 z2HMd!`hwCgk{4(`h#$y1c=BG#7-Ts7C^ku0(Vx?vz?HGcdN=X7A+S4x9q&RHpu8Nq zufZQgK`R&l+ra^F8e9Woc0&uAKsVS3c7x;KJdp9Z@CE7{guxO}itcBpkrC{lij4Qd z3wJd#6fc7}xCX|wKnI$^YOooc2HRUHGqN5B7eW6x?Cr~x4_pMJx04PugC$w)Xd>Yq z_&aHD;OL9!6zoK2vpFl#1Xh9puoYZ^z6iQfP>$ZF#wa`ADz|~X-~>1i3i-Y?4vbud z4d6C`cCZd?2M54Oa2XWw4QnEp4HkiJumS7@hrnrY4UFbcVHuD&zXrg{rRWa+hpD&X zE!5fnqD^4G8zfK4ehOLTuKYC+{R8R=Y(}s02=ZRs8r+k(TX8RfJ)}Dcu3;C~a7#Z0 zpJw98YcDtsSz`?jBe#UuNz?WJ?O9(x(`7^9mx7`Hh;_7Hu>AceFd4pc5oCV zzl^&BTF}nlMTE)PbQkBQ4}sI*3fMahoq~&?2!A>52EN(LKF8XH$ocEk!EYdYA^ifF zbq96}7J-fLL!S2_1DH&G_7k?5zfXW7{HO3=21V~hHp+8yJboZ=o$chi>mhI&Tmi*= zx19{4U^B}}of-#^RBtbjaT8doY@+NGX zZ@Xon2DE~9%6S;b+mw^3=P+0V#-WQ=` z_-pX*#9vy4PH;C9evPoH;eya9iGyYd-#}|fzZOgeD?t%?jD)70bc^_VBW@x2O#}zv zahSNv{Jod(Vt8yP&1wF=LEO1WL1-2@L4M`%K26wBc=VHI5n*NgJ%;!J+{2`sNLUyY zA4>$}igIN{un9Sc`;uO+?F&~2- z^n=}kL&SqwFB1k1gU~nVufbMu4wQY9eis}D#T0M}*afbD=n?uLa1@08l712lfCJz> z82wk28EggTK>1PP!BJ3r3|?RtxB|j|4KHvUg#HHJpdai4r$O;?`Wes;wt*8sez(0G zG=mM`0JsRo{Vinx{a`0J4sL*n|C_!C41hi0G$=Yj89_7H0QQ5kVC1Xh2Udd3;4ruX zCVmSZU;yj^*;eRri@(jhlD}u;c7yHUIJg0(o}{c`1K1DFf!6OK?^*c2N&EahH0P1y zhm`jc`TP@ga+!E=5sY~oeSmIo3KagBd_WeQ1>66He6FDLtMnWHiq63Sa0N{Lw@|2* zc~k-vT}NM_9h?ILKYvV*-K^fTlI z-C!3u0d9b)1+-JJ2ejTs+XsihMKG?Ab_cRxJ2(z*fXTxdL%{&p4Nif=+iB}y5m*aO zx07E7^8Oa>2`t)*je%2O^fQzd41jSdWCZ&`Q8W4iJHfa#b=Sg}0!pc~8c>{}jzIAe z%Gr%heuMJhHi6m2=nU)zr-6LmnhKVH4M5(2mA79<--#UqdE<2}I1H|U(qASI&<*6h z)iyq@xdjo>f{eGWb# z3wD9CV9f6!D;NNK!Fe!s1H8d@a0-lk8s1J`l9zic)KR5+u@4-Glf((k6C(dT-R1Q7v60m0`x@CTJg*nT~dFX#Wbq2P9LtqK@wI@qH)O9nEhxyNj z(OHBr($;LFoM0C?S%hwI7m?op*apuL>t;u0v~Y5(2Uz$Oc_Bbe{TdK{w@gp>}UM-pa1?-1OKUk{|{*3)UVMWjrN*; zXgKl~gnG?o>dL>nM|}Kk`4-&#%e+H&UeD{k#W-64Z5#cYxN{hn#GOQ6DDLUD} zH`Tv}y&wrsuTlTZi|Ri2V|6q1XA*yqzFOR8PpkX-XVopJQFl7)Rf&I!^{luLR%rOx zKQ(u+x<@XkJ0hlZ&rVhUODD}eqwbDJ)P39d*MGzOr_^2Zm+G$nvbwK)Tixj<*HXq$ zkz=^&Wz+lBzu3wb3#V6Eyoc1?XZHBK zmAl01>y^7T{>&4WF0F3H%Db4kiB~SxY~o(}jQZn@zv6%Lpt^5Apza%H50~Ci|Ig~UfN-#E%W3} zr8503neJ?AWxBJqJ=0U}r`;Mz+uhTZmv$z5g2HzN57&BG%WJ>zl=pju_ZEvEBo~hY zx1sG&5`QOzL<67Z*&PUsfIKN(9k zsbBKR^z?LgrLta{58?OtSR&z#nTPt?Ij4W2kBR<&b{?~?E_i|slMKf z5_Y7sE0?!)_J&pq4J<<6eqC+Pt0xz&Y*vf?3e7({8tiDng4m2yrqi=uSO22}^*_Pt z-{pOC*17kCMF-f(5LxH+P=p?YW>D6C`?%)yF75|@I*ah?M)gq~NSAHv$b71+GefkW_M%Ihi_Ew-H)^=*yRGx_ zu17PeC(_y8uFh23@)U;L)uVle=v>b6iEMdvq0sX8Tb=Yy()hm4_O6ykLr=Ij%10ma z!qeHVc3+-XzvP9{Gj+CfuS)g8zRSHyegpj$NI|1d=VX-M#Gnl1tJyl;zV}&`y(8U@ z@Tr!bY$)T>gy=UlO?!sraf>Tg5$i6(m-l2cKL3FtN88fT4XxAhm+Jj~FVp#WYGtOq zJJXZuq;o`5Eb-j?<)M#D8{&=e%5bV|MrEQZSy5G$3^#pp?!-tWEI)&y_5GSRhR}bf z+L5-aHPfA5kx4D@>ud={T$#QT=xbZeWL*3CN-!>Gqx?*^^1s9EMf&NS$?)@)7XM@4 zo<7x??#Pv&0(&-MJ`yhX3#3oh&|E#q_YQQMN@YLg^+GP+ zM=aceeZ7C)!rOY=Iw>pRBTKsJ^UizyO?$dG+w@7vPr{`!%5MSP7Rr7q-Q7la(CUSM zm_Ap&4NABTOJ4Y7!mo{#a5(p7)7XX|Ug*hBc&4*e_}@uiGX;7pmshO!TbSvC2GE$4NcE^gfIxj5JRxwv(? zINwz7wlPhB*_3M5`fHww(RR^lae?u}>yISeN*8B}aBWHM@JL(A zYLg^?<#p&|IxeSLrK$G%;ip`9hlabpW$Q$3!}Rm%_O{kkce;mk*$hJgPmE~)@Gq;C z#+&P49yvm^!@h7~xJIrVigOo3YE`I`8pibhdXg5I5K^lh~f6 z^ULhg9S+1_P5r>Sw`~v6hw#CO$v-P zvuZ0V>nkhciEvHL-1|B@=HA!at7A^=6Gp!|NM8{PSJqY6R#he|!>#bg zV{wLo41?{(mzm(yp^$rXt>cmZLD~l^YHDJUL|rtzfCW{Md8^}n zK1hFmqN1XvDjKa0NBUOu^=6fI#L-?3(w5i9W68!ibBNl$cB>KEv7?pW6!XhiUfGbS zudb-Bhqg20^x@O8NXyaAjMmpi8xpbFaHPAZt=))y+M+z#nq*~NV^u?CxIW#}veMBy zT@(jtXH_@UR>zW64dJTHvYx(lk1w;Y3;FFcU*-oYt80^0)wPjuZMri@?rdXXkoLa% zx=2MsV`a6}xk};aCg;)BCTkHl?$vcZ-PAm~iuy=nT}8yJ<9xcZJi6-YN`3>Swo>Xh zpRPQQE?!kz6^mC#q+avsX64Z(DykzD)pd1Jr}=cV^XTHys_L3pWnAhrpDvt7SJ_Y> ztxHflzOtQOqIq74B}1?gtR8<=40-d~%D(alxYgzLLHbCNjPjd`?O_62xrn3NmPZ$l#v5Y^+B15~uea^_bd6Q%L!>$uZ-}uT>a*_2$tS;Yn6s;7G*Vp`_0*&6{POO}qpNF- z)l}CbAIed}D$~na=6LW+_H?ymdV8apY`SG-xPkTLlbY{I( zrjWF?_kJQAE{j)$8Xcc?d3++-|0o~1Q;s}MEBPg_)?b)SP98an?(_MDixq0Db#sBd zay^{sXG=gT#2Dn}x=H58GH;cotju3hEul79hsqqK$mX=UxV|3dp$#%8kv)k~ zJ7gZpZ=IzQT`lSM%tF?e>=1arbC!%OWEo1JEaqg%&n9Tt`w1%LFX`L1>pV8q=OxT` zENk(Weoi(yXY9$=?MHdCN!o?~JwGj(d1>8VSJahjMSIsWZ(jjfSU+a_bWaBs-tTD} zf0w-7&9U!izf#t~tiijP>UN5)OTM*y*Of9)AEM0sCRe-Ip3uqnU+CBsQQb6!Z%#0@ zj^M&F(aq_X|BcE)XZ~nJwnx$nm|JQda-L0OlueK{dpIsl?GH7a%;}(dQ|&NxX=;9y z7w4^qL|%P=Je49%M^|TdrKEEF8ZY{3G!A+fC+GY{2GV7{l?>@zUS+$yIDR9I{T{Yv zU78pEc~Bbox&Cu+ULO&wh$QRdb&cWl-03!W^GU|-lbmq-6zSfUwl*=cHre<|J6`*P zyk^!$>SM`hydj+KfLVujIXr$d|Fx<*AMJlj{2FZ)sUPQ{uU5u?NHs z9Y%Sw9`*LiP(l-JsLI>@iiBsBhx|VL=pec%EhR|j>~@y3+ulq|Ur$?h6&p-lkG5sV z%KvS+A0H4|!m?56XjW!g9yLmD%gry>Azbp+H4*3ff?QW1`^LJ4b!~l!rj9KZl}P&Ttk-+HF2>sznSgMKN^e`=+iOWdm+H>8 zwbG5zo;;ciVTsC=N927!5E^NQ{Ia90pJhK~HDT?oZI4TU*hzuRdOi(*IG7gA z(ItB6{|n*O3snwDFS;;!eMPvn=Jw&C(Cr~zZ1(YdB6 zXH6T7qey<7ycMHye$)2j%30S2<20TAR-oL!BCeOOUVLZBGGqu(jT=p$?#FfZ$*(8+ zaoY#Q1=F=N=8-Pb-^~{4b;f1Lm%AVwl#0}n)l(4~jlCFQ8yhPh9 zId`_TbhWo5vD+Uy|Le9l%Px6kR|nfe8Op_{#)$lsyY^L|j|bDUk>4I#;NnV`2IJt( z7Nm>&o!VfWY@vr1xVgYdzOU;%L2aMUWt}V7yLI39T)Z_67wy}N*lm%w_wN_Uk88(1 zgK=8#T9!YYr!w*VqU#BE?UA?B@BbHQT*~kN;f>g?ZY9qVE>BMlxjI}zo`E>hXnw=J z@5XekI+#d){B)znoyw1+?AnGTpF5}^P=w8!!NQ$rP zmGa}VpUU)f5vP6UR_J~uw4CoL5}b-_IxTN$fyCt{^UK`)=U$m%=Y7ukR8WR7As3vJ zLGHoIoWW%9CU1Uu4mn;OY{i9I?q*+D#?f`(knjX^r)bv`oeyVP2y^)`4df~y`FKer zA59~7L<&L+JL$4p7k0Ze8h69XNBC)sOEd6INz>HBde6_u#hvr`d2x=NpVw$Fo#y2d zx-u;sBJ3W3w*V#!=zWh3q zb|Uf|zRMerR&-aj_j>Ch!rWMOG!Vx`>EU#HUxw%|7ccKzF_w907X;!R?-POeD*3={ zYZu(m3H0fWgUj3HYiFk4o8PKT^6sG*w<43}>rEePUm@sndse1D(hfmpJxo;{Vi z@Z9o_wtj|l+bz-aIFi?C_yyM%^bv}t*t$5zQ}VCp&6!gndkcQH-;M$(Yi>y zt|1)r_$HODmZHU_*$_w7l==0v)TPIEq_R943Djeciv!?;m6mwN zf~>oo?#2z0!Pz$z>DfQgp+9zfL=JeV9JBoK;+q!Vk;P0pLRnY-U!A1o@5p-R+cM1c z9+kr*uKcBg@|Lzk@qE5?M4p|>!7$lWaeUv{ZF)_&w(9(`C$k*BZXG`{$Tu#wD>-Lc zv)zse6a<)^Hgzy0N~_&b_dhq(I)e zmmZgw^fN&|xxC8!^lyw%y`?*PSFkb?S^cw24Yq$JdqY&SRD)lSJG}mwJwJ)et+oCB zG09rX>&Hxo2ni;;PNw6*G_&d&YN{$4c#v zqFzRMb3Hc(Vplc(K5;sx=MCvz+z*J;G2M%! zHg!msbQg%z@jQPxm-7ZcB2LG0FHV&2$tm}5oQ)4Maq=rF`LV>u>-pZ1YG_LFbvVjV zSI)i38KEo0X;d`Q6iG$n^JA4wjq?{v-y?fBqQ5~~P2L`loFPrvAyUah%A2f8EJ#HX ziN?xQ)xw5K@1)T!^M}9W|C5|-3&>dx;HrScOIj(j$G2*JES6*I$?$)OtEq2{E=WZ>;oq%Ui2jw#KAzjwFmXWtY7#FMYgWK~tomGDdzfPnL4kL>i*7^ms^p zc=<1gH9Z_jEF3JuaPmwgYe+EPllO+7XH`5A%aujSD)sL1s=k?*#GiHXl_;?yQdt)$ zujt|~^0Io2HZI8Vo?!E4SsULI@=n7Jni@%2bX|2yX>N*ldki~Szr#c0Z5razhS)zN zZqO7&>PdOac@pA-(+NM{MeLzT9Bs^>Dxh*d{-VXx&Vo|~KVJ4rB|XD?-c-TKcGTj9 zzncOGf4639Wegy_O#yP@^7aMc(rl!w_VX(q>4hUs-q7juI}nTy_7z5XXDf}rV^6-LO4x95@;Gt)J#xo)D7J17&y{y@aiyJiQ>IkY z0`FL%vk}>2`BnBhsHY`ua?Dujr8Cr<}gzt!62og?GC&o4;yfYH!Cf?n0zd zvX@5Y8 z-8T?buFRynefw$;$`+IL%gt&N`;xKLcsLf+?Z}dcu;;TL@Aj7V7BtRxzbt*_o!rNn zO&r$uXoGxnWCi?w3*&{HN0Xdakd=i{2p{P)&g%L{)NEakwBe$XC~@>vK*m~0KU7+Y^U@9x>Ef{Qn{t);Mh!d@@dZt(SVNP{uqF^zaVt4e z(OAX8YHv;==dvG9r`p>%i|*P@J8h#>#xv=6bvjSEbR0hH;_{cZe%lGtc1UYiD{^gd zzlP_Ttm7%))$;Q5%uMP`^OSd`h?lgX`)w@Qi;esHE6H#*$7t$evFdOSjgT*1b7y*Y zLgvnNlY7_B4hPfCNLI#cs~V!QFk}sL?^og;m&ef{ZDY8;wjrLZZmbD6B^nnja5)4L zx^yz``?58JD;gUblF^!~@Pc?l^$^MYGMx{mONQ$!q7hCxg`f(ub zEb8%_p5vD%U2ZOdwBgWvlWi(XUi+jAva=a?%H_e^t37BIfN56b) z;o5?eFA?NfSrx9UjYi^;L{fOpn3dznt~JB9Dlf;CD#?U>-DQKkqE+GQ2-|K^PR9zb z2Xegr9o>apUF;sjFJ6&oXo$qCJ$_>NQXp#fmi&5AUMLiHWjz<<$3fM2V@+Lk70YCi zPg+b8Jq|EoSed%_pm5V=We=WJP%DW?eT~OBAcx`P}ZM4$kW%m27vZcB_*<4wp zL4K9BVU9!B)>PHUgx~ZBbFu~Np{qMXqiE^s?Cp}O$>Z0Z$FCw>-B8mIk0ok6etGrE zCwGP$&IVGK>F&HH8_wxYepAFRZzTta8`&Lh@Ty{ZplUhV?6d2TJ7v07_Jo`3%6d4D z7Y9@$H5`qsY4l|KdFnO0GOu1Q2l>@jhZ7Zb_0@HWsP&LdE8FNcZth5WGLLZ@l#;{D zx4Cu90dnO;wnQa8D5rs`hq6FD+|uSUoq6>jznhZdR~N3Uudi*4B)v9K7O00?@=N#R zmGx{MzlLxkR#z9Vtnm7$vOxc|yuFJ~vvbAVncn9B`l!C{?k+w;U?y%4Qod99^S4Ks zcVuKv9G+3eHDpI~K1jpP%z|vIexR^DS*AXrKYAuNcdO^40=MNVy80u2zfjD&C8q=W zg~sZJiiSvCxW28Wr>nPXIZ{2`*6TI4%DEFO`Cb5K&UeFNqHUR{gO6H2D8Du1^P7>Z zsjrT)KM)P$pazNx9J zs>hC^^_;9)!Bri48`caAAf1nP@*$L%MjB^C#aJdvmS{%()Ut{h%ppmv2!<=5^k! zY1tQBOu9s}kxSzVtUD&`{kd6^`PcYRaLS#Fo5&oCxI8i4oNlYe}aZFE&hAqe$~{fjP6y7b&fW)-+Bv!bn&;IwNy^7}Mi+tGNr zLE7o!n&2RDeI4oENBKBLIzLW+cS_>Adb``xS-IyN>U6dx@Aqlk<8oiG%Y}aza2OK|tXDC;u zwJse3T0%cBd5_SO-F7NmUP+iscv`fZ>dB&9Uv_!dO5!AHd3$<=$l=C|%@$XgYU0~s zTc0$gb?_5dyarkapixwg%S@tU2O*bB;Gw zhV$vQTXt#WjW~bIsArwhn5<~1s0(-Wws49uGq=38-QBbD$H%k5u`eJAL!W;ZJ8bfL zi$sK_2!34L;&fpt+RDZKro~B((9w3JGP!SGpR+jG`wiG(uhfm`=;ge4wM7^AP9V2&2Av}?yYup0tgXDQW5a%|vT-*O3YaFRFz9NbOx?OnB=e=-FLVJqoc5-}g zjMC3<%2^3xTd#cElf2eyI^Bd$b+q;J?R0s2mdnH`_B29sWo#F^vW?0o-rLaC`2_P9 zS)#-{?UQW0gLw$+ai#q)%>9wklf=olQ^VX|lz$FzpM|%m+r-5aWOHa&*1QuL$oUU{gReu~uN*_xE)M^=`6n%*{PT#nE8w%o+0hr=S? z0}qa-+V=Ybd}KKziy5EKCqHx(AGwa)6U=Mg&3uHV>`wW7%52`JdCBU*y;mdSyUsJL ztyiXE*nl>5<{6_(meB`T-)>#IjyWxa4>dMQ_)ue`^s(}9@YpEfLye6RKGfJK;X{p$ z5}`WjoX05<-7SoZiQl4tH%hqQ6sH{7prLkxep?_hGane;*|Dw zO$@cVV?zGk?pelxi6I>v+L<|FnD{TMv{lDD+3(^KP{o-=%Kv${JF4>tpU7+2J4!@;#j4g_*9-Sic+ysPy!0@le9Gk7yXJR1NCPkH zD1=(hsjYCjzl}Zz-FBq;AUMBifjq(^XX?3ju4Vem38r8FKALBu?&2Cc({U!McIC_s zd(*z&*;`2uzqohCq|bHl%*pqn--bR}+1St&Tht_}q_34R zFBw}@8S_rGq&Tgk@3u+YXNemk%1bBXK~}`Aw zf8zps4^N&Af=>90{B~9-c>KhR`+efr4;hpy*LT*S^GW)hH_*&-eW#2Ae*B=mQ}#?O z?xwy|eos6Xr_Iduk8)lm5a%^9cQ(D-i<7$t)+=cD#y2z_AI^F4E#5su8VpnG))ae3 ze!Tpi8N5^3L007YwlezWNufcJ)S+u{-S&o8%gRT4v#kHcHl>cgGt~XYSs{K_R{PQo z(0rJ&)Vn&HyZ(q=n%?mZ5|D)R9l7)$p)b~KMgN-a&>Wppvh;09wWZUf@!t9u|D@o4%PUE5i_dRMB5(>790pF;YeDv(#>M$<14m#WNHm8Wa5k8f`>U9Mn4 z!E!deOkQ}Cdqrv=XI=bqzCy_kcHkWI1sB&Xa>)^8W-+~bHcNQ_SmWW!l^WZhlJMJ~ zv^-n8dKq&%yWsgTYuEh{6e6#8pPNZkrG7oDor*XZ%ilb~;v@8g?2Uff6Wh9=Gr zzuP(2k=~jj>)oYnfhC)@-ls#cJ&o)4yN-odt_+YppN zZ6$#{+#8beWgcge#jb5PFT%)KB#oD`}_l5_V35^v#0F#5U1bQ(3nV6MjE}Zj1k#vbO?(+U7j*u_U$b%&qu;s)1T}1 zZQirU?i=bHHYeI6p|Gq!$1@j7B=w@%hfU90sjI2z?4~5#S4`8&+?sL&dLNPwIo)@% zT|qhh*Fc-P+!LYl*nun4?jS8?N_ba>i(d)0#E z*jd>pK$EC!T1*%3t;HWxU3d>OI@=OmObexg&uCze+DDDSUWt=4sA*VH4z<$(4LAJ- zvK^$qG1wsKZ>EEn>&NbU$kkt$d<4j1HtlY%zHyKqDwCosub=Vi_OEF7gfX!c`zcD{BHhd<eu7L zK`CCe;m}&b^~p z(K2ZZ5HRo7_^n>P*andt&&sUmq6Rpq==!rQUo#!ZPJ+)sAJLV1l6LeeYA~ zry9Md0d1@MW5r{36->$^WyahV}iYJaH9LQ|3k~7YV^#|*U{a3 z@^qw;q;-1upvB9Sjxx&qH+wQANAp$3V+bPG=5{+8uU}~G>*!eJ=}P4L9~LJU>v=QV zZ>N`B8f=OE6- zayi<|cLn;@=?$^^#yYksgto!h=4}1P|5MALkEWO-f-snQ8qcV0QFt7zzYkXCG5enQjM9 zOd_F(-=_w7&8XnSAukwLTRC%j@y}*|?tdvyZWqcB=n6a6wfhlY(Rg|ru0V9VhlTz4 zC;!ZsDac^1vxiS>ymVH+y}SPURG=-{trOajuIF5P4>WgdbyUfB=tW&WAL!<3V71oSAZcuj_h+R~O;dZ(6shdHe&i+q}i5Ejl;+9^u%M_o9>R z-N{`*zo+(Yx$1oCyFyo)Vh+g$AYW&M_6?WT57qED2~TyaX-KCd?>f1;_3Ggvo|UH` z4pxMXSuA5Ug&1&zJlhY^bYV*NgylVz{c4I<2~KQ>~^US2m1o4L6-kKsVm zyQ-7!II|+%vMR*~={EVG&r5ZWiv4K0TRl2YEq*89;*!{$lsP!2xq3RRaYKwoIXQRn zT}RRnMdb1*;+u}p1coeZM`g=uoEx%ynG5-@BWbXCH)Q#7n{#n)7{a!6eKHl>C7s_V zd4jQ)ry2R_$6%Y#UMK>SjHG5 zWgAT3bRxewO1=8ss`M?xk;}~=r5|w9N7onMV|$9McRH7O4`hYXZrnJ>faR~J7vz2H zdDsj_ZUp(`#&@69e!nNfOk4U<#w3d0;r4f`_5Gd{dC3Dl>zXVGTMLd)fPvv<%c zxKCCV^4?)_pV|Gom_?f`^K{|1I;H>6G4{e1PY!op!~3lXsfX3U@>J2-IqcfQYKE^p zVK*lj2+{=Z+VkCyK6^z*R+4Tk-@jVRD>m%yebE|tz{uMOBfHG~$Rqi#<1GY#ZctGf zW=;}oXsD|RFIdHq=#DBo^ImqJ9jTSEUDB-$%97|x^X1HwS3Xa<_1Cr_?}l(~Z8BEJ z;x-(KJ{(EL^WFquy)m++7<*Xfjj=0I-OD@YXWOeYo%8uB*VW;z_a~6A_d7qhvOX62 zWOb}zKKGIv>vQdQ5p^~_Z|};fTk1jE=y8uG7w&BC@Bdu&CWmFjQpl>#)!l2~^y0it zIl}!l&e6k~Mw*rG*e%PfOh4YnX}*Y?J8X7yhwh}~oN;wk_!qhKF5lbV#s*r5uGg3F;AH@d*w5_d^ReN%xN8;ym+6Dlu2#%zxZQHZb)%`#Sg4c z=#bxqVcO`@yvOW2r3b&H$o|-Hzr|@(sLg%<9(kMCgZ|E%^n3E#YnI-7o79crvgdcd zALIY-5%Q{i%I|0pAI#eC52s?gep+cc4ouZMPlL+ji7@hZulfMUX;wN6epyn#uE!?%0^^4S%%V+3pr2UR6nJ9FYPad5; z7UjxcPWc}Q1+$U#+8$3azwzYkj_WV7M0!@(hahiEl`=OC3(PtEub_6Cg2C6dLwVoL zpPN+sZv#2PGFU}ipZJK4H%v#+-m<mdeNWo z|GY;(S7>v;l@<;!jx1tppsXw&4}a2=TWAj$@0E?64xig5j z*wkcf%GtyaCV|})mD~$WvZ*ndO2i(HB{=5iPM@$D&xcp+Mrji7MnoB8Y?iZ`IR^fx zTQ47x<=qtL#^CMP_pH2mk7&g^&g-uSN7K$dnt*B%0Uc={v6J>ryo~iXt5kOedV=&5 zSwBMm?^JDW4Be>oc~vX?Tp5~KL#llFRU|YYHW{O=BZs14LF!exl~8dh^|^WC;$e44))il$wu z+tS{mpe_6{>LgjsKy`4?1llj)wCMY71gVbDUmn=H%>D-WQO#o5juPW(@6e zFpY`px1Dv4#uGRAbA>rR=ksXXhMkJ**As2j%WF_^+`4WZ72%IBah+>2%encn3+k)F z#@F4!wP0m+I9XQ_P1MI4!?#RtPm_dm?^2!&@@NRxM{8?qYw9b)JS5VYX_xh+e|cwt zoQJ5O-`r~JF4mKhlgP-T!g$-69Oi&s6X(Mv8T1Y5|{LQguQudU?P4I8Ncn`!f9baf+kG}pHy_eoLD z2BYp!G*~zD`Z7JMl9?X4zLxH6$#~`E7ex5I0E~)(gMnAX?oy*<8Ro#5Ipdre7|aySTU2PMWN6%?n|aB&g+;|RZ(>?e7q669R+ikNqNJi58L4%D z@3r?{`?EjiVer0Q=da)E`zidK`K-0}UVH7e*M3@iZRD=+buc#Upo+0gi?VbSyK7~! zA7PGR>aZSl3H0`ZsF|s9JR5Guc^SF@8m_;K;Si(Z-P2kL`KAsqjvqI9WXDGtgVLb! z#O^sXZ?MzQ@lJ7?mvCqStXrnR!@XraMLpu9x@3Ldi*k8Uu5xyrwz=mr%1hs=n(~AY za3qwB1wCUB0b&X)lpYKEvO8XT+HcdOJxRnF3B~+gL$eyaBG!I*p9*b6>Fhz94r^AC z2)5zl;gE;A0<0_`gaOV}BU}mYgzH&ZVES9wejT&v6A1s{4I*5L-%~7%jSjRfTwTE4 zk|ye98oHm>ln-GK5JLeGJldG1rys5in#j;hwP_NbR2n73{ePOKsbW4C+B9V2f+<|o z7G)Y&KHP?8+cfh-F>l)67Wa9I`NEo>)v6$UT#iN?H{rouRNiFD8}|&uR3ISALKK4q z*30t`k4@8zFfwg11PAfpda{Lm1322LWo7pC;x7EQ2o~r3xc>|IO)h-uXGzbN+xQJ_ zxCAidi^n}fH>-qunD^TSh=GKqLasOFeZZz!7>!2LX<1PrNV`+p#NP8;syTgT>h(yyq#96@II^?^fYo6MWPNiY0KZeK?%7NV6mQy0{$kS!dJue4a=m5>JN_NXf|$x70d}GF_uh zhjZBeG$O*l;ld(AunZ#?%w1Gn1Z+Ck@n|F!343unsv*Q>5-LaCtetvXZquecu{hn7 zNtMo`p)eRDy78e~W?lzuI@CX|F-?bk{)9z{rLI1{0@2WoyXbtLbRg)D;6_o04kjft zHiF1h(x7k|H@fH$4?T`ZB4Jn{!zkp5jTRU$Q%0uU=AsRH5}{No)&|RKXtM}QRP4#G z>B%7El+2gQxywcC^@RLzAW4TT-NBtw4%ti|r$6nYi+j?ztTdWPrJOv`Bcqok2{mCr zFxHE(T$*#{`=Be00NNNr7bhZCnfu^p(*t^ALW~X`bJ0T1F~2Y7Pg`=vL<}bka#~!h z?~|{v^d0fe{Jv;gIBAm&VD#yh(F~i0bRkF=gCahQk#BDypIgIO85=UoMd$Yf6L1Sk zTl$VQ7c82Yo{{CU$VC_O;5yn+Jc!$IX%q+pfTgz9h1f;AIhW6|0y1rfixy)ZUpz=* zusnzvu@*rufWL5P9sVe?b#&UwfQy#eHT;eO{+LbMTUZSpRPy1z^A?+Kq0bu%rPI)O zCr9N#G{|+Z!NyOacoYdM6!xGSlm%L7S!AZ!;->K@Q;9VCg4~F-snjjf50w$qY`1A} zEkPjS3*(+-50*|b&B0jHGW;yR-8K#Fb9()WNYa-!MES9CTnbzm8_^>Ij7ykypNlpK z*@qM15CZmbhG+r<2*iO6Q||7Kt{imHqQ8m7d{H0nfo0mBF>KJ7>NaDGqc&aAgS%~m z=^(lrtO*UF_qWUF; zOnit3muO3blZXm$m{qfkCVM20=@plCqfHMV=vXugSKfd_&ZA<)?&JE~V$;BmrEvR3 zn;$XWOrERI{Tf@_%6V3O*=?6PT~V{y0{C!!%sM(D9~ zy}emBVCZ`}zr8js=0kC~Wg-%nlb`8!MJt!>fK8M3q%a|h_!4P{23m%-C(Wjl*CCrO z0srX;dOw6)G$KK}(?q6^KWfup{F6u~d@=Y@TSRKutA`a_u2ZhE>Ku2BL<2C)sE5qh zC^c1AJ776Zw`qL1blHb%vwew(9I?xe0P&MD*v2j3K#OA3j0ZpDvn$@-$gFkfG32zUC+uXlktXKcnHiHMKRitrtU1b4;!`d znp56rx-Ae!f^Lf@3e4+z8-GCr*TukHw$0`u?ZFcNdoF@KNSbj{JWcq)dY0}hpH z+Ri<|dnG>Bp+{DBVG4wSDI7iRSXx(;o-24CMT~~4Kd&QhkZVm6Mx?n+vM?IR_V>{J zSuERqC2NCAa4JvZ(Dj_O$>`zw-73@5>q+yHA)MO?5uD1%3P&cnO}XyU6ev3ETPxuCF_lT9F0gJ2pMc5J3ba<4LZ}fO zVex@jo(sb}?oEd2c2U|-yvg7os`8QqMIZ43#kEHip!?N^igYR^2~|Q}s#aDAgyiV&y;c^pgDJjzTk!uS*;Pl&8bx+Dfc5ES3?8OT`zT=Cjz?%c%H53N6QbJ3r=FGjU47E)MTn*R{rZ$_ zH(*WrN}BHn?C)q$7wB|$q*Xh^&5a<0@&KN+`f__zaT|aG9%$+8-uejziZeuVL*T#xi>C$67`jpf^a3f9|B8FkBsV zpkT{LZj5yHW6(?Xd$aw{=v=`41gn$%l5t4m^8%U|W<|D*kCTpHqWZB?KQ)3?@>3(5 z`wlRpGLSA;rf$fmDB_ft_kEF6MFs2&5Hln9{$Z&63ZVm3p8y+)vvd`qP%xo7e=Cw&|Z}=k!FrC$OignGinFB1c z=@K44=ED?e++)QH)+ElHC}Pu~w+#f*&0(E=Nqcay%ZnKEDB8<=5cNo~l&=k!8-y@& zXqSEDR(y{vlNTGwzqiT1ljt#3A9^+X>Tuq+gANpP+oQG_Mg2nQEf&ens{Z=;DN5h% zz=Wi;UqIR#W`o2T;E#NC(}v&$ae*bW?Y zupHBO#@k&5Z<)qp|9s*tLHFwp_2C8+%17}`J~9c#vz?3P*s-0D!`4^8GwD$JNmF(; zVxt!2Eh&2=%3cuOCJx%0~UP`dk~otOJUbE?rHuJ?mg@np>-Uag~( z=_>V}Ry?_LDXA}tGf@!_JhScIjNjKIt@dD~D?6Oa7gjbJ*nSH(Jc1=@z_>k=AHZVJ z89x9OF3C6oa9QEjD^3MoSFxu*3v70sRHHIcV7#4+^t`JSPu=Wd?gX8Djlx67_YBgY zQ&x28Sq9nkl0WTtV3Rnl%1KfCnKG>o1k770o*Xa&PB!PeNKfZkmZkKafNe}$&J#TD z``cVK?n}nQU6>~3`qw%B(KGbD*aY*d^B2Z<`p!N{hjSt7u3!o>!Q+cl{zHu)@-(4C zXhTG{$-tmwNQO`;@e>U%A}nhjs}!qnPrSxLlTflIyjLWirz;p~l=-U|b94+w&eLR_ z5Z)B&x2y2vEUG^{(oxVJ!$7667vWuI;f3??M_}F?MV4_q7LK$qPVutTUpxyrcP&nu zao9shw?nABOVTttc*w#bIhK?|_Cx9+ag?`P=u^2PG^_vv@L(+7HBS32Y!HnwQ# zKKsejo|m|eZxqEf0&WE{JLB?03P*{bl^&JAeNr6+$K@-LhbdpTg;PoX#M^Vk8}16? z{&T9OTY(%ld9Xa!Ae?)BE5RW~5BK#KSoDjt2z4_=cSS1uMrRIb+)H{Jz^qqCyf)(m zq$AsUR=V@3JBwI%57n#ofH*nO53QD9jNwt;UTob47_v}0_Kb%2^kQp<&P7mYAZ7q~ z-0qH+wY#~-o^1l&62#^=O>!=!ug0*XOMqe6Q8|5{E6+l`5}vzaoxXO9hL@Iu$6DmK zPW0t+m@@6hsLSdyR(yJ(6Rt9VZ=So2J1}WhcwJ~Y#+GuvLX}1*dX2x88a*Qk#Eitf zrO0374p&3H3^Ck(13b(U*=dVBvvNaY+2A;~TWJVR&`UJlq;kCWY|lvF0C4Es(#uq4 zGDPkERGQX$aB(IFHl#J4KT7y=_BuCFoMfC@q~S}Y;z4f`bv$|6pWL|GL!ER(k4GKn za~%~*jfv@wEnH3KU95Tf3#9|+_Cz#^n2B^Nsk{`Fz>xLiY2sYeL5U;XmH2)VzRR*W z`7FjT9z$)F43~@2IE8VYa?A009r94O=Bd2iM0n1{Ve?@^ptF;wohIoWxm3&NEH^!F zKUH%78_HNk>@xk+L3e^;$oeB)aPR`rcEo|it!t?y@}d3_V3EXZ!`rc>9Y3KLYHV`= zzn2O=iY6_fUpf&Mowk%gTUkoyeaSn}vY~7<=5{EX;+&oB!m%7@Y_knxlx2wZX^z$c z%;O$f+jGGrow7A|b(?f?PFAJKZH&@fF4I&X{!VAu&3By^@$xvIi5%=5!zG6Dum-Iq z5zK?}G_^~8k0p3h-y;~e>F)>Q0S2#${o*rfT(VNdqcGnuMklV%&`_KT=);-v zT-Q_#y!fma#ey4!EOtxY`qhdx&hwCb2sQ`>iepWR#R z++`(QGpf$S&>WQ#Vwu@Op|KsoSY~dKQQK2+mYEhAc$zY8%~Ypet!kAtYXQ^s%GD}q z#_?U(E54g*HS5|-+9RpO9nQRi=5{xTF4-`$ONQwvX-mtkuD?y+MZVQ#xTr@(+yTB+ zn>z*ib_1esjTUGtg374A=jC@S?6v#+)JXY^#R2F0lHqt^EkMv2)ejwjjv`NvgMczA zsq?()0P3ZTCpY^hpA6QYZ=f|wRr~(5mCt0X2Ou3Vhb&B}6XIR*aa6%s_00E9j8z;u zhi|%Pjrb@cgwhIK`CJ<0?07cmQ`zLj0z@zbb<}w6EDPTc!vgFCd#Trd`uLz^#yi#(4HZ?j=^H!oObS^TRF!`5^z z?=H{dWpF3mXKmPO?7V`M^SorcB?p2*NZiJ#KUpEhyQIF6b(8!k-KMiuE3jtfRz;_O zJ6r~L^gMlVe!qq%{eg1yT7gO8( z<8pJcx&PN?<|3ninLMo#_!!YH?pPwjR(eS`G}bNoE^+4rH=cH5%ef2Y9EbvT1MXy& zv@{k$e}SOCYVU>nH(Hy2H*5gJilc~5zc-4uFTcwolD;T=?$Plx;FOThtU>AFL&a%r z#2=lAAI=~iza3;2$k{nf=+yMOd$av%QnetY3bzF}lv9}~I;$vCq@BA5dRi#7w zLtO$lc#iap7DnpS&BREL>wc?DueEDJ!pLfUVY|34c`MhszIUaQ5#X71Ad*ct?~4q$t`#!!I|X$OoRXqD_IkJqoY$IO zRPeH55g%OFi_jk+4^tGb8;X4@+jg;c0E4DXm`?J--2qo`co`>c<4`OJ)FK?y<8)^= zzRD0 zU8##LGQIz}nlA&upc-`*h+ZB(J2kA^98`cQixoM$jkZt>Lg|xgB z-Gvswt$t$E#zW-}FU}e?&hry@RLoNzLg%!QjQI5XEj(x&G*_2UnETt-f55^a8Dh~9 zqpl`I_@W}F{s97{$@(CBh`p2|9_nxUhzJjZ1{ zv(=3EOu1c^NaDV1oh1!q@NBZI~Ly%l$+ty2gm7K7)y$naMIsI z>x*_Q4f@sJ%Lz^^cv#IMc+#Yy;KVZy3wQ%KNz1mD`s*GQOMzIls@oaU(S9p%Tuq+G zbdzDLHND}V`_XX)D{0P7Kk&K*x0lt3&RGmJn6XW=D zJk`8d4m6%;9Cy=l~Ry^+cx$^PC zNk%d>Vt~g`fBU{_vm8ecYJq-Tjb*5Qdj*p?{pU8wzE|M*F!i8FjBVsYrS_^FRz}@} zbOWbJJ_~(VQ>3`&Bu22E+u#FpdyS8yuNf3D+9yb7waT%LS%P2Pw3KZ9GfN>U;;`r$Rsg#6~ z`$cssADN9B*Bbw_do+ytS_xM%C``G?za$IYwprvd)7fsoBuEdV4P6Jy%rHHaHtpqz zf|X{8@w$>F)my)ymgJ0$cj<8hVqvfC!HAu8>L*)e+2~tWPggIE<%f9Ov(c7Kdp?^T zrm2y$_w|~hmCCMaNBXBB3*4G(<#GFeDfuZCq-#I&rXQa3NrHJ0qnm11($fVa1G$>%hY)*ZT2U;`!0qGX#!el)K9jA$I&I2*PRI1Y6M99jo) z=kFjf|0JIQla8!P(@r;|Yy(1Nfnve0N{uz{N4k?lD=w%RAFmn@%X34xE$v-mMRMXm zOdbzrL)_*cyGy1;O@ek=vod@XCO@=iM|beVD_z0^UU>Z%OaCH=_Ba76n5U_B6u=l) z(Jej!z$a0&(y&6c2e?o5&p|57*q*CbhHK+7ySc1SXxW&D!HGr01~5 zTxlQ(LC_xy_)~3^NWKSWs+%G?%vZ5diBnLpXNY_{rqQ`;%Kn&-ojNW&r;=)lCwbx91u`W)>9+xSjFYfWj zqvNkwS@%e~%C2gkh;%-U6RLj>xOX%a&EAE3GijH{XSBQW(Zdpgp$zJe4&U)Hmv!B zT#v_G>7gEzsZ_Epq?DpOz0!0{9EPcwR~UUr`Gnc0h_id z22&Hk>LE#MaYu)?l8ifS)7(`p4&6Mbrk?}S=9e>1=O0^;4KjKwTI(9oWZQ9sT zsqqjpyknHU?{%ex7#;p#3TNz8ec5T1H9@=Q6N6m;hh6FUJZ-6@KY{Q@WxSO&L)9gN zHxJ9}%;|Rh!vQ`T4@Dwry1@f>Uac)biQ&=av`ctKu-uzDomqA|q?0jUG8jPvpk#E9 zQ$9(k94VkPw*jTCII;KyU zwD!5uN_ud9Asxq&Mpqe6z!#6Hj=0hacwh%&fwWiI0$q8Q=(%78KC3Jc=hoPg=9JIt z3#HuS6?MW&I8F{8KcDmWdU+9bbBEB|_->WPwi$gTAJOVD7 zXeb?zq!CF>W}?kA6E(4&OxrXKiAXSAUhUW$t#-L}MYpKOLen2dDs6 zA*{N{*fb5HVA6|tGNd>D5NMLRDLQu*47l;z5E~0&mOQO<9c&NFGw;TYB?58W$n0rd zXyLMahTXWSU@8#_ktOt_8@Bjh{82YP!pBo=BEpYV#2H^M%IC?QnYN$1 zUAS#2Zz7KP9+D4N{*T*uxPuE}%_x2#_yxy0O|IuXE?ivC7>@X(vOOVxhX+#^Puuu& zlfGcm??dbdM+z9{aM||SxD64wFQ=l^_O#q2&&CCsOlNW6K zhHx4Yn}RXo+ckW5>hMJuK9mAS38S)3e5ggo-Z4K1UHHLpDue)3(hdXH!soIcvhn8z z{P8v!g${B-`by@8_ro@BLnwui8-bL(BaQ64qtndG5f?t$-E@dnI#gRMZ(ql3`~{)3 zKY&1nv`WL1JIxRC{<@9dn2bh(6hKW+hcqttPp6z`wHd_w2}PrAAxtXhlmJ3xtQ^8} zhc2(__ov!4i1!nXW7dzrQxt)e1}S}`iiG*O(8gcTmP#aiKG-N6LLMENuP^Ik+03+Y z7e=CO!LUD_0B&C%7Yt%hp_yTPy4T3G`8dM)#3G2;7y|(>{VEE^U*yJ5rXv{8N@hj} zax@0jIWT_2#$Ol>AqEfb#zFGM(TsylYlmu{(qZE_ha-tJ)*VpN9!guWVr)gXjk^G` zKM-9N_YI<~xTm3nj{zIEIT%6Uu23=pTv|Rt74eE1&!q#(FJ&0lB+!1SXUR~2;?vUP z#p9_@dzUWGB8rS$U-WpqVua_75ly#(B2K&!N+DW#>>Jm#9a*eoV*Th1=Ivp7m{#;F zDeF>(5foIe-&0@Oq42O!RS`{a-7Qymh#EUQrjNyzChHAYcO7;re607k%b_;nS>R%l z5|W75q~ERZF|i|0+)%z}Ww8V~CjG0pPBJ?Eu3<9?#~+-ymcDJ;QFVI(|BnQO-36?;Lt(7Qcf)2 zm&<85;z=bk*)FIoe`C51m{byRMb1>rPr`rm)mpaRzP@a+*p92^DZbT6WioYMo9NDG zx{iU7!rH1CwR4?Z&iDyL63mWNC1Cs}#wUZ68p^M$SZaqK593qH6W~+3CjMgzA6JoO zxosM&P^Ih$fv0Gfa$do{;#g(A3S5sF#!VKYxF&DZk2_5Ls>mRlI@|s zl62=~g_|pup!$Mj>6G6w;r+#=87<0vJS$Pkp40m~r{_k}$vJ+5r(GlEo+~B`9YK?p zLgTciDIEB>&{b;|nl3TpozH2db3-UbNos0LMP+!Wm0k&|ks+sf6{m^q)JjERSvOf} zmZ7RtO}$*lX)g6+eAqECHnh5w*B;ipu$68Fbmmu%d8lkDh2N?aNcO9!>v|9C9`pM> z<{<jiq(ygj5#SpoI$hjNI|I~V^&qKJLK|-wrAy`-p+3eIDnD9?m_^mhC zh_Zdwdw?zN1g^oV*uJ$<;w3v9jDRG-YXYBcKe7Gs7iQ z2Mu8kOg{A{op}y|1;>C<%dEi#r*=hr#tqz&sg20(FQUqrM=tmht);BbafJt) zPmzrLz;h!9V4Jv2r46ncm%A}BTE_oLqnU@*E*^%$YtMUc(J=ol>;F%&vBQG%F-l3 z8UO3OCQW58Y_5SPZ7uQmg27XEqZE(yg76L*JV#z-95k!Dj>#rG<!S6${FV@Z_windECCV z+ZAKn=COfBbH`jUI5<4It{jhfyp!>k1mI+($BxQ2t>Cn_C>%L{vC(wrZSs8BNvosM zsDSf)OyOyp=+2bw;Y$jqOeY{kgrKD%ozrK%bsp=2wuerVjxmJaFQ>g-;kR}*F{19U zc#vU@#eb%8OUEM>>PYrKRPQ%7N`6}FUE>WkfMA`!MdRF1g2RIy%^9@G>1&@-G;l8% z%Gw<`I#KSJr41k+&S=s+SmvHOTTDAhMNMD1$k-_hkqi%xxU)?a*K%LjSc+tD@-F*i zp}{h7-#*=>GtWYB;4=-p!3AdZo&NvS@bH0hiEy@WtAWafbT4L8fwU>Te|2=EI&D91{ZwUyOhFrPj$KY(MMfYyEO9q)H9L_ybC2 z*6m`X!#!-b?^ATB7qv)3O9Ry{FVwn0PL5YF{WlGLJC<(YeTWq{++;(cYN{s#bHVle zea*KTuR8OK3hlX-?O)phRn}4)z_y(2%9j*grjVu~7F$y<%%pC0@Uy43K>Dy89Wm^) zYrakcVYZRCR)8ZFlBJLN`eFqfuNPPnO|0OwZo~YbG_NjMEe;ONG0JeT>IznkPTtz0 za3X9rX{wJQ{zS6dp=nCx&8C*iau(V)8pz%uUf{M&(eWePHmY=+rjq2bf zg$G@vc`TMZ-=HqBF8$ zU4YB>xXQD&v<^z;Ipw;_byX_QYc*b}+--S&wh9i*lh^O2y^G~heM!A^JjSy8lc8No zj$w(O;fW=Q@=D9VW7OrgEOGak4_*Qh>8B7^Ub@PF$-QQ(drzyD55{rM2rp@tkVxOZb`ec>)=2Y99;)1xDHP8a2=Sn|LS(JD@hH!p-qqT z>25_ipQC;NesWP?Jdp@_l}pkP;`uHdg|)_i^?p|C!eQRD;r_w&MHIaq?HO%@VvtW< zmuMB{?(p?C4-11nUoaNKTIU#cG34H>?uq1B4%H|&+W1ZWwrIi|O@=)bGLd^NFOMHK z+qjK!ZzL9h8?*;U^%>Q<=X0x#J0JUt32z+x?>NOgVz4>ghiu#?KkY9gys(^=n}oT3 z-s)qya2p}nl&mC|G!o8dhn-JjIM#*>D{*DinnKR(NlW>YTz1*GaSuHBaQRnEI;Z=X%q7z`#u5!_frWR3EFdi*exf%>Rov{|(_3?%PRAPh|3EBL5CG)=ILheir2X z;_|Mye2BJ6t2b-3Cu0xJ3NbB3kYs<`iD}vP)frmqA2G+yj!#I){5BZ6Fr6wJQeyRKo!A^^xv24VwOvoAZ_tZs zu<@)1jS-WEG)`~8;?e-Xl=V(S&)Z#cySQhl#66*;B}jTI>mj?WxRWOcPn)*5^lpNe zYE>gG=k-K?+@_x!26;&Ol4=K1v!3+2jn^27`obYNttXenwW_jATVpH_wFyJ5>$Ljx|l! zBadtuD#t&i&ZcX^1wr0eIuTbkRjbT8uJ0LfF5lAL|ATHuSU$52J=Zt)0p+d-C3WuM zG!7-0hm?-NBG+tOvoM>sE18D*lH+(eZzUPevdi3%ilB1~rqDGsvxhQtobn^w**2~( z>}kWX8gBv~NaS(cgF(T%!2)ikY8rw?LWJ5rbCSktC++RbGne~BJS%?L4n5q#^wJBb zx+PHsHRTN0yw6R>lX3WhlCNY~Uo3!dmaIP!8y9zCMZ&o0HbU3!4bjc9JoI7PZ2U=< z+jMAyZQfwYAHn^PmD-l}X(^WrJH*4;%*0Yra|fCSP`%{sd>ay}cv}>=#ZePc zEVArImvJ6JfBTXX=3x4b_q*s$+>(hqDi`rKZ1aZO9pG>oX!9%QdF&Mq71q)XP}rw; z^v$euueWLECsObV_QCxQ*K%Y0sT(BsqZ@481p#t=PT~YiQJy_yWSpns@zW+7e}23T zhY8TwVIt%iQ6)FV-D2Z5#oNLOe+WK|Sqx@P%FM?$8@Cz$$+)5#rzQFdu9QWQ)*whe zJ8XO$uYjov#gbkSU?`d$>8Dntiz?5N(R}6o%efxg*Wud7{0VCkG^_*PHMDe$H8ZhE zMn$p=9=G{yh{5+7hj_?G6yp@;kL}XCZ;<@;;m~fOn1yd04zEbBn(D2UM@FVC?XmMq zcyRF=JjfHcI}f8aT#bt?{eD0FhjYg{1eWPOo3Aw*{~&n+$%ExWPRrv;%jb#4gQ1ikm&}ue zJyBYHSg^CwLSQ#%?&-cE7vBW_F{{jRvcHoz?S1k zpk%8jvudnJN8n~gc%VJXeZWI*I%qqtvQ+)W8j#SsgheI{-AS-N`>Gu>3z3Oe=NCKc|x&O2hy>cvamC_!ADlX)hPH=zmib)5KU0J#$_>Ii;>M4;G z7ie9gpwE*8VpWa}$(1vxWCz1`mB51IqJ#5ZHpVhQf0*k#@!*D)4|#K)9k%PN83!71 zIwRt!f}Fy$-W;=W7Y0K(^M$TxLkkU!DIN;cS8+QS& zmQH%xBDgi(wOR(BV&;3QjX&R)Z1a0@g}5hEK&Pi~Up3?B88&WXAP{Q{qlfhL77E%K zA7gw@x6a00;E#vHQEwvTSxY-1T_xuqX1Q>a7%pLw?)NN7#*(RJddZt*S8wAshrN+h zJQAd{5*RAYZQ!GhPWcwu_zMt91XqCLhB1kcySJqDnCE~CH;%|7kOtO1DQ!N7!MJf3 zZqy%&pi2p9KIXgA?XYp@WBBV&<8UW%*CJJIBskqp7jDpp!)h^{+Lb(T=@>U-<2Kk4cOz`1v@u$F#aQ^NqJiGheyzW=`Y8 z#MlFodk1U}o-wqvJ~)DNJ||9tO~QG&8{>wl5aLt}lH|Dn3JOMXV9%U(_qjsUzm@#^ zC|niAQ95nfCVYdLO2yPcl{h{FSACx(zstie2KOZSO&ymZN>1Zs`CT8nvA&-ozw_B0 z2me(0ozDO{-`^y^W2%A`K1!c?IZb}YQVVXW;5;YGZ+xc7N#k_+-JFjS6zl(9lym$% zvSXv<<1Cj;DE;#QyAQD45;lZY0|lb*oALc2`F&(`G^f53Kle+S1(IEBZ~_bC72=1! zO%nK)8`58$?wny@XZcwOmJTAPFGd*MrRE#fmhR20#pXb5e<&7`ap6@tk3)CdD;jn7 z#!VBhd=5wQ{vhf{oe^@;47$$?srZd|0M{$Sp^XZP@A!WFP4P=90yD*oBzX?^soscW zOtGISedKS>7!WSel5C~>2R?8-#Zx8;u}WC3UM(%MwdeWu5h>%~fV z&RHJlwT}OFYK8PLRHe&qI7Zk*m2h}EpwI45c^IGW&nV+jR9VthWcW6E}< z5mAK5sR)YUF%E^m5tNfSP7RFgXnyXg?F?P z9;txFWBuwtoVk*`E1$nX+FZv^m(yelbnXT?TxT;8Gqfb#Ori9=jm7V#O89)v#>)Fx zIi5OSW2KcrywQ@jg*Kzk(f|$plhW0xXA+*AI<&Ot83e<|Cx9KD05&kiN|RP$#)?L6 z2W*&i0)}|vSgCY>fZ+)qmui;hz<1hkKJ8-BUwF2gUY~L?>2I{*Iduev^5=3Ncf;wp zilNQGhT6QT(<}~e`)xRQlc!jaHtWqItbV%b4T{NQhmDgf@=+9%#)apUreRPF&PE$2 zS9F|nzzesd*KHi>+3G?w{7{T3!!w`Ohd&IL>4=0oPMj?*xgs4&A(?Vsozp1|8;28m z_j?GB(>f^eq#}}^pVmqG>ENW_V)#)wd{VG2OQ1}<| z!@9V)1V=eKI=nPuY-^{1M#j#KCZFx)IBLVy%BLCoi>p+RtC-OlvHZ3xxFs0Jb&~jH zn^TXqQ(bPy=}}A3`QX$Gtv6S|=VBWB+=%&m1w6aBXg})yr5zG?4Dr{o4S|%1KZZ@m zoM@HMu%W(TveyjT>V^#tTjiQ{A<>nN0ceh5ubnyN+FTKzJ2b1UOFUMNIz)$aV4E&7 zWiGRglP@lZvCgcwVQ715#O~ zRbJ@Ewr#cHx|X@^&3K1J>#A8N{p}?3- z?S%82WW;zcl;Lq^XyAC5pU#fjhF; zbOQL)`U>=xtTtAGbKOmzOZ1isNWCfZ6E=0dsUp5Jrl6rW)diRTb%|eE*A9HVp#uM? zKc+uc5$?!mbY3O;>r9_^Ou|dcXZxc#I=>!sw{lt7e!4WDR`y#o5w58)^L@O^_oF4> zxqJijEAj7?|4em3THDTE^ZSt%%1ytBwo~G*?QGJv;7F2GVZL1Yx@m4`OknKdbv&*KS7iK`igj# zUm#?`_WE!|T+0s-xZFMm(3Z>dS9aZ5<#6z)!@s-&zT0olN`HMtd|u6yOFHn=bJE`q z|LpSg)$EN|laahBYuZx@-|{O1F3-{TSHxvrSO?|uqDg;;w^I5k%V*5tr5R(aa^5+8 zT3m3(44FVBT)7%*@(u(m;W$1{D4J=1J1XL`uad*#)KH}~3D1!(>(Ta#xQ^e9o&VHu zrF4y-jM2AE<#^@3E=ZVpI3-#sUDqDFnIk=25m(B~=sle8*O?lm6?AE2Zz+H#WSl@2G@ZvZsZ#xsR$}QVHMDXO_v+ z74b^v7-$g=c1bp>*a91MY*qeAqybssIeqz_0D)-R3sQ$38(qHJx zzJ0lP&|Mht zMJdUjc4OtHoI6#Ak;28=AAs&ew*3Jj**xr>$R#zrNy1yZ44+k!J`uyTH;rX^QHM2F znIEm?4cSG5Ac`h&wDU9N{zC*bxT_A;pl*uX4(?$o$kYH_25HQ(pK zSxv^l6v~S8Vxd{*qqmuK=2-~N`RJVn-r$1sp8IYCcg{z<5QSKGnJ(9KU9PUMg@J-m zOarv;<}$osWjt##({#J$Co5jh(Qmu+0ZEYV%IqiQ|_#-`Q zrFhE40cS9l_op=<^%l=KL0lI9XotqLH4b@CIVRzd95EwMOXiyuXOG0f#ioBOvo%Hm49q85>Vxw2J<%kT{^ z6}1FenQ{!DT#^@$aISOK#*bCQd51H<9)~S-@vOALO2ZVx;rDPU zj^UTaDB9m1YwU<2g{Z1g#BRh%$s$g<^{w;ByLS=P%!_-2*`EFRE@{ukux)^_f^d)E z%b+lPU>$tZ-4X|_z?Iq!UKO7WG3TaC>xShUmid-uOSXTqgu4^y>ZdEV>88*NG~8jL z9EL7mT~_6Q%sB2L$PiaSGlp5;>W2OeVtt*9M)hv=Tf*EN+3*d}sX@NGH#^WZP$;Y} z0)hPr&wn4uq^m1aDB`LLIFZ2jjbRHk3`^3~2M-l2*kTRC;Ml-;ymE_0hjcZm@G|`4 z7Of2@UzukxR@eYNJz0Qkln%-fuV<1=q&N!QJ6QyYlVkzgo>WePU4r*92@A;F3fTK0 zFt_my(6u3T-=*ZGtAC_0*d;?K?;4rU9SGCCw^_}EX2HT-v0I}$tb;lVPlOa7z zbPnuJ1+zrwz>Yd}CQIg}8{;xv4g)(+_X+o2KS|c(Xdz!%i@_n+;SZYCcf>rFtuQY{ zfoUFHEMZL2#cN&LAg_Yx;_pTlbjP#vy$eY>>tp*Q%#fJ;qdI@s$I(KLyd^{*^EOff zLy87=mkk?}ga-DtQWyx&)B9A!`>>F?jo)PP_c-_)Mtv|FEK~A*u)fPeG3<2cRh8gn>uqxuip^+d%)8)|g6sVNtmtvPJ5aO8$@(k{Y`os z=6{!#+tGrT&H{FTWEFtG`2YglUxe8=Ca#x=d?XlO3A<5{BfI`Wu=?*g7eP zwMPAoP2DA7pwa5j@}c{r6^&7SL$g)FK%-RO*z>KmHO z6iN>?O7#uRUiqEmW>nwMM9$JQO7#uR4*8vEjOrVj*=K7SrTT_ull)FJM)eKNRP-T| zH>LXK`zU``s&CSwdsdY^jp`d3x-S$knGvZz*TEk3o$|+LsrCluImbmqY7dy|hwlBB z8Y|--0BycWM-=SW3Z_A#i)p5Pn`vzQRW#iSmMbd#H8dYGG`9ZgzL05@{u-J|-{E{5 z{be538JMl7D!peEELSvos=gmLG`5~9Sa`3@D_2x{YIqn{-yv^XPZiA*Or!MF&>S{2 zww@}QMc>u=C_ObaE7f<(hfTDphp#h@(o;k8YeQq}smiD2dpaMbr-ml0z9S!7PZiBB zrcruoXnv+?K%_O*(VyQjY_w1Y`yVGSOD9!c)BaP{EipnsTPLs5Fa;tD?&xHjo6hJs z+3zv3-;NraHq-njg0UJC@5**>mES?*sIj4GJWbJPGi+$K$nT(W)Y#C}PgXSA3>%uw z@;hi8H8wPKZ#D6z&9I@_B)@~kQEx*t>kLJs)!Wc)l;1()sJEe+2|G;rXfteRHpuUw zan#$;)WO~ojW)xE=1%z?G>&>3nhRlXm8>y1k#uCie2BcbZTC-t;4GmP9ztg?CDsRGf^!(>BHU7yX^DYeJ*(RSHSKr4pfbHS5 zgdQ)=Z&Vagj;gH%G>qnS43uXlfYafRco*Z%^RGsY{_b3~Ji-F`=^Bmo8 zwW#m-oI}0}x7ESTkwxL}0qZ->oS!E!@wL;>{Njmeqs#og3vJu?49Ks=I4}!S! zx}(5z3UoZ0NT(KebOnO#{>9OBM{03bEVwusjL&NjCWi3cI-Oi5>&I4dM;<5dFs;!F8L%FT!ocx z>^3mPV?AKJ278X;v4a;d(<24C=Y=xQvkvtuoc4S+I}D~}d^}p`Sgg_o!xI%z#knW^ z{RW?0v#}rLJ}8bKf>0EO=%%ElJtH|arKP$%3?Dqo{f9ff6D%{&b#Ya^F+g~E#$dNT1`??}(c zIxop$fY-gR)bK1Wpz%ZDaUEE`9gE}?Th>lzyTOBvkjg8x9l zqsluvPG>Jk^F~=eZgs)^*!oRlmzY>kahs{kGZ`n4?HyaWGCPvSxlB}zr{1~iE$8E5i(}M`%|9x`> zVVZXGVTDTv>*(MtHTE3K(dWPxXH8QVJ>13`6+cAFhGH($9(G{zTwP(ElwS|S|KPy= zBUzjim1f3C+vC7>&J9?*Q*FCN!N@4!QYL6eaGVsWhwJa#if_P|U@<(9m6tEa{m}p_ zhh_eP!Rf#qT`S<19mV<|lw4~Yr}dZ%FC;OfHd%H`SU7#FRSPD2!}W2dfw!;2*3cm3 z=q-{pr(aSo#y0J8aHVEm+Jbj@84tPSAPTdU~8MTjQlntPa>N$;vEqKq! z=oq%H`U|o-I%$Lqj<%3g(~u$8!*Ungo5`RFkQHV97&m;Tf(d^bl%mM_-)LxY?bld7 zt5}o_TWh#o6Sp(;He+3+*1Cu8jxIA%_pJS`R^L&PH zGjLgVs2N#zX5VhJfm^m(8K~kiOZV=W0FQ*kJnu0)!zU^0(mf-`ADXoMVe& zkj>++#&Sf{CJw3ea5xV!g0ogHiLE)V%b!=k(Y9@f@WCm# zNLRqy;g$Ro-gNwPaGo zI0~P|Ko{Q+k#nnl&ck~t5GM&N0O*H)bmQMD{Hqgb`Y9GIfADg8<7P@hd!6)b2O{Ba zc+Ud)rnLH6I(uRKR}c4OIw}0d>dxXwU*{;o1r=#ypq1oDfHr4X)O~YjupSZx^|LC<9FTEsoli?Nqau=Fu{bFA~w;$8qY!aRa}Ah z_T_!@Z~D)iIi0;@xqPM*%SqXM=iq1;nC$Eu9_ym8aLh5xFBXpm>!^P&b|!LtBZXq2 zf3$8X)&qO;b?u{LnOvc+xpS$%GamKPKYyZQPCnNw^C5no`?0cR#2>M9_ocgjDS?Pg zF-{10n7{f@-lRU@zm@sJaB`r(Z>U&1{*GTaiMCm!{2(Ur@ymMNshBuh93TLm-B>f6 zi}&`UEn+F&H{xFf;f>x5uaDYrrt0=z7EKb=@saG{<|3{ZS7IfMo~hymt+%x2KO0|W zoVrPD#k(4B7#P=#JF2#}-wE*#yoom~s`;_Gk!?Q?kHIaf@k4|vkx@fy50{PQZY8}BN-Suz~T^%e3p zlOgf>QS1pH#hdsfwfpGcT?g>OGhG~p{?SthK1mPj-_s|a!ut*JIanh@gZzlk{lQ6e zTu<_eB~fwbf~Rl53(s3bvz8|*EActr*(d%B?-TQx>#G%;#N+orA;g#QCRxI)h(|y7 zdIw&3&J#zpKJGzdzY<^8zc3aj#In&3or@Qq zw~7OrzX8qP@nwDD5Fpk0t0{Z3j=Ld0>LrLjGS5r@w1m_R&kV!gCe2^^qkZC!fK0$& z&uHz$C;9vCl1Z4aEB>&ZBX-|-*3Ed~IbZD3@;i*bNF8^7exZ03@9O;FJb8`z+jh+) z;X$4>7Q)t%^;{s}UMC;8n+TXhF}wtaN%d2qzk~h__l~Ttjj5rm_rrIq2XEpHTU6Hb zHZxY(1VkD~?D--NjOwQXZ{%wSLpWF)=8zBZ_xzkm;v0CA?ok(a@az>Y;f3cyaZuOo z1|U-1Zur$gaVmaSuiK%T+7)rR5FbIlBs+Aw)^m{{Uw3-;;7zjI^aKu8=%<40AUfz> zjU-1|U)Sx7QE344;Fo`OmCF8Nu}#Y@f;LNIRL{#T;w>PmF1O5Bt$Gb9me&wh4f&GX zw4qb1iMN~fupEfg9tQRdYgoncALQ0o9Ilbzh`06VY&YOdywQ4q^WY01;F*jHr8?d6 z(un+<{!_V5Yo>03vhMDgB>PX|?JXu}`tc6M5Pr>q&}3WvU$WThslwa9NDcMvZ4Hye zGGs^Xl;&~gZG6w)RPL9EBU)|)_yCm?5zP1asleNCBTnWF)@_|6^2z3f1I~+N% zo_7keZ}hx?H_1*coRGhoGDlet??L~MdL!OuQ2yqbDaUy9=Rp`aY7g5d);aJtSXfh| z;XLv7%abNyk66{~`FP)O^ZWbo!gHzEfVM&p*K7C9&FTaGTcKXTTW#Az4g<9hA}`Xp z3-I2s>NZ_*mkElENDuRN@Si7a4@&1SbgEI45G1?$?M}VEO>)Ekx!lz2UeqhGy6IFc zR{X9ayP7dayq%27%;Qb6yAbd1{(L_*4?MF3`T5ba2ZOzNc<;sK%@>2HO8+pL%gDnc zwGy3_9r>&L6nPVW7vVksM|WoN!gGb#sQa&GyyxJ{`k_8?MRoqLM3fy`Q=<-yWcMjF z2%1L_Zx`b|dB&6v;f3c)Gw0cfdacKo7n<%7^Csl2XJqA?+K7&Ldw!-6QM`#agt`)! ze{3f$QQ)~sY}4&^7I>SBFOlOd0!uN~>UEIzduzj)vcYf1;CCDHBi`zefA+4O&*6n< zwxBb)^w5}&nyxuhjx;R;b}DU z)@|UA)|~41AZh}Ls`RgGM+<|!=)r2k9P%UnW=vIY;_nLlea3x*RE>C=#5VK~^lXDo zrv9})-zRRHfWO?(cz=GhR8`+P;@BFu2c;UGY`%&uGer=nF|9heM&+5DlkBwyMUbR{^3qkzt z{HR)&tDBncCf!OeIksDI^)7LWuGgL5Zzet-#@^2lC*Th|khSX8PO!JvYR1V2PgeYk zU$%&ss`ECKFVfz9L(OD2@i^Y&@CUh(30%K?f%x4C`I}oa{-|z~cMCy-W70hu4}a;d zjnCtS$18?)-5y7~pf=hcQb4nt#1A~)Nqpgk7;#YBl{$O9hbw5I#= zB*V}_HP0db7UFN;$2U?{;t7f~weIZ(pQL-uC-sR7Cgu;WfVELR;_dcdIJ~vsZ-=*# zpu08b@qkB?-Er_nQXf3| z8wzCTk-&1pMJxMNRn&|4yx~lln{UdqF6P)rc)NSJh@JF_9 z)4Th`it7BWEOybU(n8HfETn%2vA<1s8xemV{Qb(Rbeo`c-YW`A5!yo%g?VPen+%^G! zd39e*P1{EZ`?cNRk?Plv_aA=xk4N#slM++UQojzP4<_5(Jk%^cJOO{%(VJ>EizMCq z1lFi-$D4Qy;C<}#hyIKgp0r#apkL$K_8kXrnXWrdz{I#|~ZZvn?-n2kGTAeo;!>Bf#slN6z z4+!xekPFpm1o_XHv{c)=4$(=%!b4|l$rg9dUm*T{0^UYOaSQu+ZMdU4y%Y0B+Vdga zqIlnU&ay}F!n4Hqd^AID)X(nC!Dny+-Ue|{yk-mW$dCAY{wX1-aT0%Rc;C12-J^Kn zSt@AUNe{)3BRev_3ciBX`RnPeT^A;KyXl9RZ|QoCA^#_5y!0ILgO(zFLg*LWAt%=| z>hBRhtj-(HFK|A-wrhGLKcI8qN`7&?GY`MK2QNI!#p|c5Uo=K09`}RCpT7|v5l*i* z8mQ{{^k=Y&qUD$XA3wQr#!AK64T9oO(6b$NOg!%X>%HRFZ-mF1^%#oBSEpl@Tl1I% zAH^Tv-AjC7lrILf9*%20Tz~vt@rUX>_H@;*%aD2)gyR#}aS9wcb^LB|r>^7ex{jxg zH;Y%Q^XBMb?c6RTk6Y^C2Lj&eM16M}Z|CV0XF{&@)ZrifTz`aSbLy$EZ&l0=438A@ zD;sO6ga7lm5N9JxvNPA?-S_tUA5$E>M^LP2dT2a#Dc+uESBrmCmmyZquys`<<|ZEN z-6%YoHy(@bfzRL+@L6R{fGe9bef>3Bz@WN1N>|ZWw5t6)Qdw8wGyM`^RDhmf*LCExeV`z zpWgOOyzumir!}9;HJ_2+v`AmaDs98!v#+Lpj%}Z$`+XIU%klo@w%7&4AuP3+tmi_z z&s4q+li}+y_l?N1hNDz!D?j|K5M=jAj%24Fdil8r@xqf8Tc)aC-RMhbjM}`qPh5Lq z9&^RPUW%|;)B3*VJlJ2f58`tLc!|Xyq3sSl{o(~(-;>eTQM;LXxJ87j^O?g%AT?VR zA{ly~z?vG~b?|+7H{Q;(QcNcVJQ45?mc&l@o%2(nP2(od%$kuJu9Y4HZ;i;1c+(5a zI{N{!Pyd<<9*MWT6Z4kO502Grv1;P}EmyXd(F~u=RP{RT!ex@RoAg2!RBbd@q&|Xl zj%>#lKKt~gc;Q(kUMB#aK|~{NxSg3vrf8N>_$7F zhvt?vKiZG>Kt97&?4RyNYQr4y_9WtnzXNZQTQ}aR_kL>(FFbicaVhDcUXN_b`sYW) zP1SiT_6{HhM{QV>b^7yXg?O8`BR$Cf`^V_ETY3hKKPK6cYw)G{ha=+V>b&9TF?mwe zhB=bkub&p;GkBBSdhy;QrX9cw&yWac8%JwEBscM+5pidA-Uf>ZZc`i1R9l$)URuFZ zy!GMz$6Yt*wX=e#)A~kn!ANf1J$+*11iaNyY_d)Vu#iD^m*keg`@BWZ-HjKXVG*&~ z0<8hf>g|*JAJy6dw5^7{gOc53^q<5K@kh!we)7+LjTfGq#3Eg<$Mu-+Ao$x>U3UG5 z^--&8m9qN@)*ZR6_JgD3+Hd$JYl!$=e}?+i3?47V&w;OFZLd0S@UyL5W2N?R`+wm+ z1^ghnt;FBQz8)e|ho>lJ>U!M^8#f1EChs2+k50f_t#$5x)G6&x5pM%{U;X7LcHxC* zRG#CaUsR{m9`=Gaek%JEj;Zi*nc7q>$?hYUJL{r3{GIyke`z~6CL(%7Ux&pj>K`_J z|HS-d=zf;kuqX9y3hM0=)Xzlsj~dA3t40S z=pLuDkvH+T8t-Ypd&^q9@T@iKKIB6%4_}VLcZHv-{N)hzr-t%->@Mv)>+cnd&@Skifp$XecMo`c=EOW=g?Y4aQ*Brj#N#9! zR=G;^IE=r)d{1r-UU*RXnn&_^ARf1UzD4}-4f0s4Ne1yq_pE#sZ<6Cpc>5OaCzFEb zebNVre%0%`?%n|(v=j4)-4434r8a^j9_b#9JMbnR$r7LQQrGwJ!gH(W*0wMW9%?6zGu@`@e zNus}{4hc^;u+H4`uN;;A$0VF`^#FFBfn`?Tv281554voBH((bVSYPLq*+a>v&GjM_DxeFBx{z-sU z8fW3N^vgU;rm4nYr$vWmFdf||Nr{l2uEzUQi!b~l!|DO6mL}cv$bCQ2wGRDg57W{8 zjc>yroaX*7MIU1r-PdU6SNKupcMQ7~Fib%W-S}5$Y-SkwX^=W_n&)nM=^=)F8Zek5 z1N-BxHfd<1_A%I{3rU9SauD1HNpUcwT9eHBPdx1=Dx#;}ti6g$7G4yz_a zX;zz45RC2`rZEboxeD*sK7Yy+c**?eKH0dw^k^VQ{L^k$?SMi|+E?C!c3J zy8HKK3wC^PaW}*2pn&ZbY~$^Fs7TK3z~WcJ)vhs;wgstlE5(V9#MJ z#_ec;aR1{<>RM#ktDVOrx>Lc`Wq6a!-ii0Q7tNoCm!!K2u(w#Se|hae5|e~^0Hfg_ z(;dF+&whqQCx9&mj2bx8U2)#ABTTmnusRF&1Ui!4~r zqgPP(Ca8RWp8&QH4YL~E*aWag0jtIf`Mp(xz5Ps#T`WFZ{`?6t!@dF-+eo5&t@tt7jgefQE`e=st^Xy{JqK7E zf3U1Cee0^d46Al#o6>v&nbm1JdWXM|TZ@NoF}>q-Qx7E6F&)z0$EG|$0$ zJAP1p)PMf&hmZapFIhe>YUJPXn_=JRy(Pi0YW^jZX0<&pf)&tExE^Rf?6#qM?P2#O}-p|^I6zQVx-R<=ONw6aUNuTsF5MyQyHjnJ@M{+q&~8IKLhM^3-+G- z&)dYXUzgC$`prjZC@bkYE^yP$+136LhP?+cwl9?5yI-yMGHe7eH4ap~u+JayISv@> z1kugg@C_o9`8@&{*fC}J&b}0xeF=LCFka6ix(}Rxev)CNEYw+W*{?bOtBV-+1Yo4d z4140X<0M|0=6oc?_Kec}r}yqV#IPhjyaNm~-Ie#g_6)-c7a_1Y{$N>GI;O5=!p+7-9>e@+UdY9 z`|{RzG3*||m`|d!>u3vLH{cujj->JChw`HVEeWvHKZ0QOfZdND4D)UJ-~&W539*~M zeTnV&K9pm>ccAyV&jYo#I^&*rECb{By3B8C_W}`!|LBahpXM}akc4Dq*%yf6u7CSu zk&1-;#4_CWUj`agPBDp+4(3t;%araNm|4Z%4L#KV7VSSf5Vh`Nw9yq???|`;05bKfc4=` zWgys&_rG!*UJ}+c3wnKu1H0+8^$#-abF-Z>JJBVV|CZE8((M9_b%J2+)4Pu|>`B1R z!XKR9HGjF}9SnQ61a?bty6GE#Rs!2Q-uHc`d$|M_3O#N5{=Wf+F3IFKeOq`R)4lm> zH!nZ!oQ)b)WjMbC)-XHs9K$XzfqmfebH^Cg1Q>=lCciCBziwifrv$d}nPp5Fsx8Q_oY96kD8UFdmmuj2T&b7_Ql6{GVFf9 z?!+HlM|b>axheYvbKG?+9{4*ISEhM6V79CW4n;7sRIr7BZN+a+^KISZCo}AMzzC6H zSH3qusw~rd39wTwSZe(#rhJD0JI#Wfb?{eTW4f11((J$LsrNGMFMv(9=(-Qg=x5m9 zOX$9OecvL6opz0z&z0YvCp%SYN7Dea)BO0!z5>&oUqbhzKeoT0Vec%VTest{?_=0i zC3L5K?9Wd#tf_?Vvwz;YoMG3M(0%Rk`~JqTa0%T-@iwY5DeDwqBqXkfnPaD#diWk- zr(3Y>wS{|_?m57y;V|7heXoC#VaEZRV!mAMIio-FTwbZIsQrHTbdH85Su?Q(SbZfyGN;k8Gd3km=HZQDHg1Yft{2;d6Bf z-G83(f`JtPLlF(#Nq4>YDNgf~fZ1~S=Nb@^@*)sd=#?RltbO!)C%gS%V zxi<|l>=%I5S+JibKl^8foix|YOXss&f6uVX0iy{mm;LUY_v$_zV;;a7E!a!_b4(fT z2JBo5_IK~AALleb4cJl(_WR*!r!efVfc03g&wQ=n0K=AJ(E3&j_J;?5@I!_b0ONj| z^yQ;}>Oab`I{_o3&th;0izCq>291q=lcx%8DONW3|rZE(LXcn zMpVMZ7VMtQzj%>hw*VHlV2^Hia1O(sDuG>i_tnoc>vBzM$PHlJ-)7=V~EzgT) zN1kBV7XjOErTOk>-~SrJZd>TgkElKTbkk*P8Fm=3`z^ZNS9E@zVYjxZ{ctYBL-Y5N z=%rk+^#>1Ur|fI*KeU-)XI-mf_v*3Y#~$4=ona3EMuO)w2QNADIfi`&uq!QC{=ETe z9x}g|0JCKleDkkpNG)Oigq{~7HEC{c>+fLL8VUQBhD4QBe>X zaX~~yWgJvg+~41?s!r9dqPx@W%=3PpKc0e0b=9}dz2}^J?ozj^t1o;-Sfl>&?K=}} zsv`H`!}D$wxqpBK6gGcrBag7`vovk5!kRZ&ewDCq!A2?UtZ&DKgyo-YUpujkHeRwQ zEUY*Io11{G0AmFgU#sP}GXYD_$Mq)~Hj(p8C>tcY3>u(mJC!uAfBM60VaE@|e2~K4 zt#k7RVSB)4D{MlGT&t~{gw)$A`JL2cIxv*Mxe&w4U?ksHVSo1q7X1zW1%I&b&kXwNo#rL_0eV^XdskN|0Xf5|+ zN7%padFvZt(FyU}&#S>SCC#ZNWma9e8a)Lwmo#78zYw*@(B(C-n-zAXtNYH=9tsaq8j=2ffEO0*lF(C_rxE%?7e33~$!MPaeqnuo11X1wQSnctkt_`Au5oEO`59RrtR zqwDem*d~RQ&i~UYqj=9&G0pF1*<;fR>~~(;^JHxFG;1UEWAK?akhS+rM2lmv6Tn(2 zYV9S z=aOIh+4emfGWA|h2^g9t-FC7QXEd6FjqaCKV4d)pewl*pwo`|oMKRcWV9m^UA)DW$ zl1-m3_w|){who^~F8|^i9};%wRha*T!otF7jjt7U@70)xH|ypU9Q?6QE}I)Y%{e&h z4SW{4dH2plE(RO+q+G7;5vQ~r9V;K4M2V*Bn8^~66+kD7ifvR}#v`W+R3+pVj z$E~Mp{_5GS{%mZ>;Z2TU{me8^$M5dt?d-VOV1)@>O}3HqP$42z{Kz0+APvtKU`fi}x-{`ZMz;yn{lQ zGu~7A+{i)YB6km1PlfrfxyXv89bk{ONEI+bEkM_I8U?qj|-qn|;6%PCIR@i9D(IK#s$kHj9qC5G)Jw)U!YC0Teg6W|xs)Vc|5emlgK6 zqR!n67XQ05)TQrIdkj{H{ncBa9UyYkz{J;N>V2*#n3NHjT1Hoboq}W3lWa$~Z_dO< zV}9}85rH}J@Dv2gB{+w24YjJU{FV;x)kU4ZQ;GYoCn$HzGse3MaeCbEoRXco!k+7z z#QmqfWQb^F{lH}WLU!xOEea>+gX;;B~Imbm1OYxip}k(=R?``0h|UkF>^lKW}V zgZ~tE4_I^TupFq%vy;ZR6ZRC?aSDs}ymptcH(YYsMXT8C>-K%-lDnoNiCSbP@yepvD8Yr+Cx zYB~7V+-T`}g-fn?nb#|Fi(PWz&hJ{+jSslwc1#}ssK{+_$yJZ<{JOBWz{X-n^nCD) znN}H{veKUaWEmZp-0@07E*fMmxK5VyLWW2e=451+*vXV>5S=7$C=jC>Eq z%5TWwn&I(>Fc(Cafi$w38^mnTqUI#0+SYf1S)A8*M zxwhHe9<><1ij;h-%SEL;Vap~%U*_K;@zBVe}e=qpNs{R~|+?O$O0jSoW?j0K*1^fY0| zJ+5iftTYQRcxTVyGGSMOU1G^qczc&$`n|C4o7Y>uFlFye*it zXJnmUJ7l%HeZeGl$?O;`ik|IY(LpxDn_9uLaXx+R%&&I#crZJ^+Dd+&NC?b_z|O%l zp3Su|!%<&oL%jE1k!{&*_o?S%|H*m285AV@9PIDdQkPBkB`DMRi&;62R|7*%YVN<|5V28Sp<$hJlVUR9&ol9=|sor0N?RLrS zx_C`(VQH^A^IQK!$u41|!PNY^pKSZjs-zLIwc43_=6 z{f;xH`Q$T~y&_j!rq>@q*_?K_vkUr4(MI;O}XLNzBOp- zr`SLjZ`2R=HJI_Gy{zQCxl znJJg9dBfYjn$yaV!}To~D*)3Rf~|U8oc6vQ^JMpwEH%fp;i&T+-;J~79p4yZ77qFd zZ8QvJn!WKhrGH&^|mKF%wW6WT{`5Wqm)$$wa_`XwQ=-2jKP%Vs+?75)gz!9$d->O{1XUlmaPlDxGX_of=>eu4O zjr<~>U0}T|*1Ol;dn2XhF9x>yLwvQcGfL6>X+ZpKTTj8@|pU3+~%epfS76{%7 z#*W!w!N8%mhuK6!mx%9ir(DV5tM3V#EI;1w5Tt3v0qs|F9t`8GW1tIVxG)Cey{DLL z1>~eH7=-uj7(!HiX z@$3uONea6tYgHqWTL#8XROCKb+3hZ2-G9ftk-~oSuVy!>>vBKXcC#F)%i`^|UKJMo z(|(?v?1T5tJW*H=NO#7LbW+DFi6n5Hu>pl^-8LXeeR=s_2jxa4PP5V^Q zrOnBAz$&KcneP0}P|sNT%}|WlJwK$US#uXBXrs?dt2<<&$TiBq9Ruu8&l5Dy*t^I6 zm~F7AXCzp)#VWmTPu*T%uwd|Iutg|bLvCa$)Chc1Q9k!v){pEOfr_+#8nnoionjy{C}h-*o;)ZnRK-BR5U! z-7DNZO`{{I=W$wP;h#O0PBQXCo^igD&-^;$odO+9xe&J7ZfL^h6ndiF0h1Ucn>B6K z-NHg(9kIjw$bM?+N3USW-Qkk^`i;lTIvxKV2F!05zLzh$urjNkc!|-Q@R#n{Oy*JEu(Bt*tfuSGF z^2A&B_a-c33eL8lV!HO#D;)h5_S$gJqcXa#RWS-Cju-+D% z;s4~ej%FPz?Yj_cfWZ0DY_*{tuSg|!B!X}kzASlIue zca2%@A%+x(&qHG~O?I00yea0rz+`+zHYNAOVr(?Z zT?NKQn7WW{udZ#jpP2s#J4RvS8{KPNH?DByS8=uRTR2Q}txN94_8Wi3VLiWBU2=c_ zx6DUk9>pcs+l$V`lsn*(o89%60m6O+Q|-H}ZAn{U4Tn1IJL{J%JXP1FC75d8vETjF zNmy4f)t}c~*I|#avs`kcwzrrqY>Z2;`){XNV}?R7RnJEUlF$2CHKx9gIN9bG&i~AUaOyVK-f+&)i1v;-ukYvFThm4 zw9FpIA(Ecv4`5QK8B2TSoVQb0+ORb1I)JR-4fi(@b}HD(*pV3gYW;xD!iKu!4!v1v zrCI5c+j!sW7a4M%qJ?0G%rxub`g38$4W?Y6fJ(9I)_Dy!U*NJvls0 ze{Ur9tit|X5AWnqPM7-#j6o+%dvG?pL!D*d0j%Z<+qs`lgc|H5upbrH=F?^^gk|Hm zFM8Olpw$g+P5aIZ7J#+1SktW953e!%9LzJv`CV7q5byUi$XcA2rrlzu$-&pBTZSCO zMz`S+FzHvw_O72fUD%jWX?UB5VLRE>lDTxRF1HhGx57S~zA<0es?llM=L&nG?#8Eu z#e3fq^}J(Dnsz)s(ASmN|7O|UR{eYI{4{i}%~I z7S%@4>()JMm7nuBFHg;u-@L?_y<#!sSOJ)37i@Q*a=SSvFk#fUU?b9PmUlO2 z%&1E=+<%JQr#8j7;EpFgv)cK1@1&;fLyGKna02$zL-&~VFXEd5_9l+8+>do#r{)#Q zILrCY8>ZRQ!E$sRaTt2yITi=wQDcEWi}K?#To*f;Bh3*`CP^Ycf8_kQtW*DqaT&%M zPNrX{F=5(J;$%vG@!thRxljVR=?T~@2TL0-88XeQ988EF69w}etZ9}|%H8N-LJa#B zCt!EPWwo=HJ6Hp~-)G9qZ-s+7^IPR$PPxY&OqDA*Z+%>*Y0o>DJ|xhE)3l~pn;lF| z6VD+fVA~V0T@Kc_ucV5Wv*H5>GoGy@r(gCtm`IWNq6Zwz>6dRDOqHwD4##Dh_DcfB zAGN2aa-8C-5 zTx0^)F993qV5OF#Xatio67 zV5%++vI7q0jI*$VNs4;x7F0V}C%s?f8EIOB?AZ?HOmnV-scB|q&yUN3p+yenwBa@f z3;85fM)WcV6JpfA`x3B~aaqB6YvM9o8#-8pqDxlxGY+QeQWV`7msR*)aWK{P+S)b; zQ`4-iy%U#VY~f%fL6Ky;^pS(j7^kxR4km>DY?}2|93}ytiPQ77uK6e1VtVlN`P_J{ zE`(#V5+C2!B}~5vHPdB&Sqhuz$j=kvv-2XCu7!BHrZ4GQz~5Y97+dAp3~eKXL@rkV zw#+XV188Ax`}iC1@mS|N@fm+_DxO?V+^~tq^6MM-lJnv2YU7bkU0c{%=mFz3Y<^Z( zV6T3he`rGhtO>Sc)3Cknln95tI-3Osbu7l?TqrjeOxFc+Q}v_9AF_Ea<}2gVM~2)2 z7rTB-y@!M?a$>!(2e2%cSid+s3 zUOaK(dBQe>AuM#;$^LoS8Q%%p0@hezABUEGA#67o=SJzz9Bk{Jd%-ut4!H8$_QTn^ z!j6F5iJkncd|mGCmMvBbThajY%L==H_{sWQ34Of?#_@Vu^1Jup2j396EnqBdNptCt zhZYO#3?*ADa$mgBjnm*7(;NZTR$;kXD_%b8EDFYYC;6?p?AvRF@otgIW=#B7nXvs} z?G(9N(`J1stRbAK%58f4HT~L&x)gv>G0E?y`e(i;av?C*J7F&m_(PxXq1lu@t61Epi)n&+6@7^FR3!`+^*EiiYXq~X$U}_9{DykUqnJFwE z?0D>mU%t3^(xbvAg7Lao*tknCHS>!WM!}@Mx4`x8Z-*{-QhVZr0eD~Ge#|hi$Vk>tZw(8$D zFf@~v+`MN_K1SqrgNf~a9IU>7!1=-sgS9l}$hy|Ova7IW7~wJz`i#sow(1sP?ZM~| zVfQ|M@-|@wU~IsItzYrzN?{XSa-9Z!d9|=87%%2U?yD|;juEyTtb@Xqw(i3z361f& z4XlmAu6(@lc43FWq^{70{`rs37uF0)a$-;NJMESFZwl)QCNWRBtM1*JC(HvTb(-wl zBd609x-N6UB(BNM8CEbs*eaJ?mzTN?6t)vgEr;eegg+8?7);gknCP@E!m?06sAiT8 zFZ-{we3k=-=G9^kmM&i{a-G5IDD3lhuQ^>~Udp!BpFKp4;(aVavf-;Y82& zPv3l#uq|LY3hOiJ*}1|FfT=OjUK_(KbUhn3bLRK_`(5?%KJDXg=BR#|y!60bA~ym| zEx&z#Ts%Nn0IU^uM9&@H+{$9n^IPDOs~Wfz!x)3Da>;G$-HplUa@$;TSO0DEMqvlR zV4{`ZP4z}TDU1)r)>GJ*>wdE8QA05Nx8(llooSVOu1l_b+28MzG`oUH`^mEHvu5c% z!g_K$r(i zjlr?Ul>9CX6Mqi&WRow)2`h1>xo%sf#mZgGJM8C4A{TJ6Mt5C4Sy;%$Uiid#Mv!q9 zb+LKZch~1e$*NuK%?FCCc7ji(sy>_kbgMrlzd2x(ml*t|*L()ouVwYU*oR$T`mbm0DKj~$w9xZdpojY#n5RqH% zlKXS!_YqB82#*uN)t%n`N$Of5gp!WY=o>iKPSvGQ@{1BGpNrP+Slw4kspF1a_~9DRwfZD49! z(ES_l8ezL#azpq1W~KRoi}_2+#){lt7rXqd3kM6^52nW8r^nv2K-dA7Tm#=#Ry%*t z#lG0l)zamVE6wMJ9+)a=9tKm}rO6lk@v^Yrz-nPf>cgAECifJUh7nhq&a(7z507)9 z?wMe0h(zv!Rrh@&EDH>mEEX&Kace+W3ouoe-rbD%QZdb3Ftv@W`r(rjk?ZP8bJBeu zGZ|f%elGT0PNU(%hPu+c=5U&}wrXGbt7SH}#@iwkY9+dMvNo`AJazB@AC8arFJW{ye@)*c>pmY#aA4x=7dpSDN!Lc&tp=VlY+DQ!aVn zI$_JeR6TP$HEApCepi}T4I5S}Y?Uj`UaRu0db<`(jos(_E__GiHiD@!|LUr>ZwcGx zO7qR?x|a*v38u#U2lov8QrHJzYFl^c=N;BH&|VjN_`4of+qxgD84{8D_tT%pJuhh< z0b@)F^F99Z`@(($Q~h~th370`nTYh0Y5QLNLgYGwp}JUlemZdER$&ETstpfJ``ssOD443}kg4sgn3xEr`sLa|B~wH$ z0H*44_VeRulAccptO-7g&$_+*;JL!)fT?jddfs zTLPx~?3v5P{3L8SnA$EiIDN%a!d8LFwYDDzSAW{%bzvL8RQukT)ZEf#BbZu#h1-99 zLgco&^1CK;(4)e3yV%dKzC2ynepi~Uw>`37*dZ{rz6Za&6s@1(>)%{ywk=)%qOiKS zKv(_wWpIjnf&x3`6D1XE-8zTCOD3fl~(mQm@jgVze%0+xv#vG3Z3J7|)g z);2IT2LJY2-S>s<1XF$8Yx=jdgzW`W>w8A8kt2m208`_v_Psx`I_miycBQ%NzK13W zid+_$YQur{X;%nq4yNk)=CmkH(sjvkr8#!_vyTaD z?_xWD-#$uMS1{GS)}DDYh4pjE{rq0BrAvW}Eq?s_E+RL=#cp|JK3Y^m&v9U?eO=$q zCem&2xLBR7KerK90;c-&*#&`5g$2M=zl<#nPY@ObQ{!dKzMhut)vh!zz5n(LMQ)BO z&8Fooq6YJZ=7DkG&lqG~JN93D*=)du3w+DKB<9K5G`oUL5LjX1Dlk?!%JtX6!Svn7 z-eoX+Us;jsuT}du!Fch31UO<8y!XfGIpJRf6IvaLV8@i}?A7SyJ+v|}kxD=m7o^@1e^ z!}Bj-(w^mMg%zFa)uEektZjC=gZZL&4rtR~fSS4}fmIBzGI#2~-ZbWUbnW)EFLMIV4k zA5cq+20JcGGs~#Na{x@@1$z3Pip3F1%o{uthDgz^1KTT=JoV;u#jh1uRTG7MGN~mSUCFnxPM(_F#O(`gL%V4 zKfUcEgB4a6IG8VQ)`-zl4L037)WIUYtNRxBH<%|f!pTBS>a2XgVBzR!2lIx@3SSy* zFkk67FuNRrfrYgWEH)UP0|c|<#S+W>{1!4;?_O&i%wI9`z}kBZHr=}(tTuLxIu`N0z4~V} zUK(d_1Y_o8gV44w+w)Je{zb=a2Ww(6yeE6bq+g9R{gr#cq<-f``GR zZzQ|9V;+kWbu;Ma4F>7^$qs+IaiziX3$ws%xxwM{hyQH0S&g$>IOOsR+y3~n+4m35 z?+jK4i5NBv$nRQjS#KjvJX7jOGk?gPUp!-8BSePegGuZ{7w@E@txX$n@7lozp0~8a zmK%*U&(56)mSN?G_oL5Pdb_~_6&^=^_}+Ts-_5=%;x7l2xTfvvOMfxzN_2V@OyYWw z)+l>U{lRw`X%deqpKXOZuaOi&Nu4=o?il!dPMsMeDLUWLk_lrsXn`L zj(s0tgNwb_yvI(F+X!acfIgfG|*CQ+kEL)LVcVybR!g_+K^=NpfO!dob0X16t%P6V?yxSnPe<`dS zOx3fze^aY$XMxpM()_(V$0~<;V0OL5?~NV%cBQ1b#KkTgc1LGnE5Xz@a?hS$o)ESk zOto+I$Srk+Z39!wuV>oeD~0U^Q+<|p`e%M&hrrbQ%0@1{Sr{KiQS)2!;3anoYX+vK z+5XBYZwku=Q)B-AR-fXC5uZKriB6JoxKz97Dq;Cx9B>L-^3{N#un{iyV%Yd?B*y$i zFuBHKoOy;ke5uGq!PIiUcS6}I!WOvF%x`&Ujj$zPs(mfnb+_VWC75bM<&b{Ai`-f; z)n}g`S#z4OEiSnO-eWEMc7mxsd+&zkn?-KFOK!)u!jpv^0#oDjxYci){WRL+PR(lpjr#NCuSISiSOZ0F z;tRV%!WM(6HbhTc_MNbmF4pGv9T~zlfT_BCb52luFy>F+CG~|i` z>%sIg!n3ydJZLWIT3^pbu>RQRbGVsWVeyF9>pf45YgiAza85_CZ1El9>5upL1Qr{5 z)&(0%hU@9`vHkGK)q@Szx9|EhjNdL{n$o8w;*et44rH-Nf5v z%J0@5+D4j=>sh=k#<~`ToYxcsi-gL-THpZn#E{Q3Wcok*lA~y}1xkL?c+gzPmMi&@ z+4*6NpycP4Td(9trslU($xm;LmHha-A7USwn%@y6KewC)Ys5Y>HNO^MQs3QjUBT4+ zF0a#eAl0Gm`C#?9h0ok_BV74SIp()#MXo$SezOwfw;(}&OA_R_HbH({66Ci#L4Nxa z)ANF zd4X+1cg(e^Y4%oFN93pab7EW;^;f&tb^q>rJj8X|mnaPHOV2NUr{QK{>lHQ;2W>s^ z9TgX|<=SQ+Q5fC{>$m0bUG#Ho`|>a^?Xb_mB2ilo<4>@j(1GQihhLHX;JugL5j__v za>Y2P`sGoDmAP!#t}qVFY`N*)Lki!$!5g&A_qFSeuhUj;!Yc@4bPIE=S!&E*GEW`y`a(_(YiAcwnCk*=Vf7 z+VG&ckTLGoW6js{H|Ah_@T3mu*ywUuX~uhk$vWWJg1e8KB5Vm*Z|sn1Ra$9*!4TJAqDu)5-ZS9@s;B3-7c2)W(`5TH?X1@8gz*IN3)`2n zM^4jSM;rLPC0024jI8k`zt6))PqQo72@0E3Kkq4FBfvON6}iQGTHY@#0H)@bGiSU$ zPlUtTJp2indRAb+`1Q8iMD7TTWBIadhw-4fP%fvIvC_VY*uQ?7{xe_DGo@iUf*r#7l`k-Ha!36GTaROCLpIjJ`wMOu z_Wmb^oHtw-XTdePUuxm~jL8Y*bm=MUsKJz=zJkAa5^YZym`h~28RumD;G8QSQeV9MrZ?6Y9>uM3gR<{9#pr@&` zB1O+|Nka#-1u4g8D{Q&i79?x$U=~7tY2*3ag)JAoKq%$%9ZU%I%tp+%}f4yLAwYdkOp%p7fstBmj+ z@Rq7BxUX(58TfAXb_Ww;lMU+-BG@7qa$Px#c)yh8FH*BK=rr2P?At!t>eo*>d*#Co)kVdO8?(%q0_d zqk7}BEhoe{*3ZH0xOS#hW69J zRDY%gH#?ZKjJ7zK(N5uz?vHH_#-qkUUv0-~`z*&%k9InkT1F)WyB*AjJ!4^7A7Hi9 zwA*AJ+v{N1F_%pIUdVoYw&jHISZ(byVp(wNJo0CtzI@u$~SUwv=Hk^>#1|(P!iOIhb0H!sq2X zm@0>B<^&9{&WuwI#_#vWE+gZ5D;^ssY3gGQHLkO=HwcT-Z*Gjw(lHSEfO&HGPZrHT(mqlF3YLk-oaGcqa!*y zn3^WW&{W3Y?yoqQb8NcS!L$NNH4}5T>mAH_&Ah?E)UheX z&<-Xk8u7B(!3xe3${5_@V6`!8Yb<2j988Fj=5_~j+PBleimX8j<7KylscHWC=Ld0F z+W5T=79Ajx)N{Xs389{Y!v}=v;|Z0a4Z*}!Qyj|A%EA1Ey)eyUu!a_M_HmV9Sr&83 z&34EI9b?-0j{NNR2r|EA3DR5zX57!Ao=&-~jx<$W8f1R}*38n=S&t5ZHMUrp(q2cR ze}LJxt7)cd^`UG$+fM{L&Pr32Lw^KzqRn!J;;?ou{xr8)fy#=(6gfd`ud`=?+4(uj zsNiOYoc%6K9M)Fhk6rEo>q0J5D~di3X8Xm;4*6*X+Z=M%bQV};$wy$e4NhPG=t$F9 zewny;7TeeGGgus5v{qoaeHJrz+k@GNUPtbaw(o55@wW;*J_atCv?yY<&NSgCdUg}Q72iyaeM`YtfrK6Si=-nE_i^1%6LM@|cc_^+Nen-f`)L6>Oo(C4& zFM+__ar47?!okdf#fD|{5?Jh*sGa?egQ;y~gY12dG*MvY!ZZ&%m=NYyJG(Xt!S;)q zCgRq?RJp9|j$pBEN0}yI7l6gK5A70IoVGxl17_=~j<0jlZ+0+MPmBlSrr9*>c`&`M zXwET1Ev=T;2-mlq4EqxcKNVpDp`Ly$-8%N|P(0tPAIq?g9m2gA<5;G3Y$5`-u33X6 zJ#J@eU&9srZK|=_TF=+I?yl*Pd2;Y3-M4e^dLUI>YKruk(*OJL>#ir)}Lab!XJQv+kz4hw8Sf zH>BREdY9H)QEz*_-|L-L|DyUg)PJV_SM|THpVgpegI*2JY~XLOw83i){%Fv#;lzd) zHoUmuwGG!a+|#g5qh5`Q8{O1sL!+-6HEGM?0Ve>ZGS| z8dBvyZuvVZxk$MdBzWv}oRJ4DG9X2{&brQBAc<$!uy(<*GoTG~W=_nnGd_3F&t>dz z8G&^w)_GW0V%>ywA68_iwZ=LSYZ2BfvEGf9^JCv*%|_gG!#W!44OmxWuRj8WBm$ieKZy9_qV+P_~l*2V(QV#3z zndR^qwk(Tg^^Ee6vY>AV;aCLgKd`=swJz#=Z>;55mtbYNY{gc5K%Hm@^Q2x5dlcR0 zK|iLo65CB!slVt<{i!!~W*&?m$;Ykx&)^bAZoR29b*&FQs4smK|YM*1=!M$EH5b&+Q#ytKWH2C68j}T9%nkVNAhOAQZ^EA8<4(QXC%JV zyyii#l~^}nrEjPw^%ftAFKD~FjOd@KIK3txGvBYEON)kfyi%6-(>B^G{;kQkQeMhu@%7%Y-&l586#%F@9JM^fi6RSQG!T%vnw> zW5x)}X&%Jr6Z(Mmvs}e~#*_F!Ehm=GO02Y*`o`1s^8Y|r`rxnVN*h@p-1<^a+DJ~D z)<8GfOTVcx{3(vpKN8FIA^j994kfl*<9WhZu}xo65Bia99P1PPP2bUn`>?99%(8Op zc|OwqZ|QmM|Dc}h|BHGa{4eUM#(FCZR@Jx|js5GezKHb)bE}@;rHS+WQtb0wmLbne zr5vRU+0IDaW8B@1G+DnH>x?*nTnNmvJTSLlW|ev_M`MI z(#B7~IjkFO+vq#i5!Ol8W$~-(m+Npo+eq;b{rfDAeT|hqKM7w9Jr^t6uWOJF+hO{j zI`TO4p?=Iq@|cO^Y%7>H)1VyF)n)OSwn(`$E&7AD(+{*)9beF2E0Lb)M?L5pv0*Ac z$7(CYFYY#jy8aXCQ77t8oy0F9Lz}2K?Vt^{F^NO{sVnsp-Nj~U+s?pwZat}==<3#! ze%J@D#)HIysyAbTWlEpNii?#i?h+Aevso=TifMVZXQdOdVw>_}OqTK4pn#2w>6^*#M5F-+e{`O_XU z`c1g7cs>?;#IMi&hdxclpZ`K0j19&DZDZaN=Zs0(K%dfQ;=g?{Vx9iwc!u%LcB>U8 zjl^f?;WO(oeIhoBPiBKj*|BWtYnGoo#@TMrZ!AxiH|tZZy31IUx~JA%#w*K$deJ7@ zEp3eGLLaDQ#I%^N*deheHgN3s2-1`C5<4V5Xb0OJ@h5dpHV)}?)`1U^KKr@j@jN}Z zQ)xf+XI}I*{lsf}j-5Flz&x1WD4Z{KiRDTgIVZq0X+O(K<`+6bo^uGBAjf$G&Oxli zXX;NM)82jf$hijkK)(({`YZ>|U(jCZqc`C={r@YroVQ?J^do&MepY=fKBfN5hcV0c zMSQOMwmT-+nK$*K9~qP4Tk$#Vr_ZVXCalz(Hi$21KlP*iYJ5nUs%;7LVa!P$CCHz8 zF%S0Zj6v2B$&30(esV3N=1W^{K^kiQo3Jna3)^M-i?)fc#4g$-e)|D3;x{=@m>j3i zsk_+4yv3(tBl{Bivn{@qMq9;B=1&`wwU0V-+#uHu^s(Dc+DQLVcg7=aWlYds>M<4h zt;T0HuIW$lBlV$v%yOiUlhK`eQvbOw{h3cP`ZG_r4fI=0cEq!Rz8C%JGx38vo@n0_&{^V& z{-n+lOY|Gtb^48EKs^~>`yeCjA$6p#w4c6GeK`;NE3wixmN(~)_Th7^ww>imomsxr zU+OP?%UF=Mf%#BJ=EXLjc~EaPA2kp5O*QqE)Svksrs%NZfdywM?L97`cJic z9ro3_NuSYo^cmBXzKQbgG-(shm2{bw+J4gZcx~ul=qP@oPv~=ZxzJyKr46OtZe1mA zRQ*)lXoIvz(-qz5XX?h7s!2b#B~qT!HZWFbAN?mWBk>~TMnA^#uj*H(A?58ZuNBZ& zjd8c0^dWt@605|w=qc@*s&70!Q}wC%bGPD8w{Cy6j2SyDQ`Tw59n)cc(tfD*mi0>P zqwiUN#Fs1s(TU~E*bzU`M|@{B%TU^J@eTVCwH`^Ch>utvEK|v+FVa!ZXI^}Nv*bCp+JFYl(6MaN~wjX>~v(yK*9bvqQ9jdNUj`TU}0evp< zmP{Ei54ByRp0rPVqn3f&|J#!EKg(2f7n{{Fqx7e=f%Z@b`j@_=-+x6uw0|n&2r)qW zWL!&KrJl?KXPMErQU=tYWy5@v?f+H(u0(qDDgDIqVS4m~#Io2UWk{b>XZnw^&+&xV zPTM-+AqeV2d!(G0K7B;pnK$i}aT4vDhy9gUH(}j}mA+$aiH%~vJJzT#^%k8)54Y~I zbY>pz^r`(EHi*Ay2g_S@XSx2je0}5pM_)@>#;SAlCHq_YlfLIT znB!)a8)K67Phy6CWz5j8^b5;Q+9Af>3$SUW5)1U7_>MlM|2Su=#xUC?`joLG@v7EI zHLiJ{J3geWV#SHX6l3FC=teum7mRD#!@OwEe>=YEk7W91`k8vt&+52>zNg;Qw+)`v zkT|Bl=qvHN_;Mcn{#VC5@qEgB=+|{v8JiN9|5JWUR9zlSxOrs zWy&(4-gU86`%&u4IxD)0?zCwl^ibO#)?v0~v|a2?w*8ShK)<^CCMg^GQv5)_?8AO6 zf5s~t`jO)l>L_+gzUp-yeQ_OZqd#aL%aOK8`H1hN4Pg7EwrdjW%#Z$b=Ow<5m#(Ds zG;~ngb@79m?|Yu3n|9v<;3z4 z-Dw|nXZ*4bu^_F~5m~qC3(1f5JyzdRQ@`?`=oC?O`fus;5Yqe_YnwK>$B6ZAtlZy? z?TNXXb_Ui9u+ncV8{SW>!ana4-i$5nS&c3Iu?^d=vDRyA+^3Xhmc=J+aGZ5%AhvU{ z-j8(?)=#l!w9~Xxunxdli1l`?Ph#c0$6eUc?{fd~2kbXJ)#!t}V><@xC0K95%HP{? z$1G!w^@=*uZ@gE{`nDD4if-AkgY}d1ne2-gzp>hD#@r^P!FEF0e%95MI3}^nI?MXH z565b1Cm65n@7R~HZt!^+xBk?L`tuygQ*5Em{0$E3tlAQ<{;}>cKk6)YsJb)%SZy4y z?bzSS^@Y>})&crg>K%Q{@s-;K>d*Q~zf*TU1HiKA+}^3T^p~-GPkqIHv4K8eS*!%3 z|Ji0S##9@q6XTa0bo9 zsDryqRJ&v@gLbJlP=DITvQW#M@kBeQJN=~UF7u7loA$C^vJGb(ti~$sAN|iXeQ;Ep%=^5tq^oPVW%Z5ItE&H&F z?^##qFV<(7V_?2g{>)#_QT0fqgPN}z3-NSN^QNz^gpJ}a`q1q!+Q=A`wu0qK|Iug6 zgMOkM{UbKhM%qn#M0eUlSza?yo_a98)N7_}+@1$%Q z2Wok!<)oGir`@Wp z$;JcAhBn5EGbxwsPDY$cd`Q{2V?yFvjSKNH?Ti%*srZ=b)6a|nX+OlrjKe|H6I+P| z@pVnUrLTHpRpUeS{wq35Oo%_!`ba%5ap{?C%!*EIGpLsun=BjJ&AP*QU>UjNGnUWp zGj(D4xa%p)=CArtY@do`*>0$P*E}4fulXF|JIKFrXXDvJi9y;xAJRVB!L~u3MI3;0 zH$j%|37=<_>x7v&PXDk!>xh-lJklQeWFJ2An&WYtL;thy_!6J9PBWfCr2p0D6dCvY zj-*>3rm5;gJw&e|NK5i(zL#L1`7%H1!2Fr-Z8-im)?cwwAL`Hi`CKJ+VBT%=j_zj} z*Yw*YFxox>pJ_kqpj_K51asRg_KJ8cH zV*ehjd$2a|YLw|%Y;VNMvZTGqK3}TZ#OFlCud)0oc2QT_MZHwJwjuvmwuvukkHnIc z2g^b&d)h@CV%Zii9%wJ^p#Cf$+Q67%e6oxru9^2H9FjN^Td9l0aGh?kV~OP<_S1H$ zM=VdN7qM(-9ish=AKK5l!#bndtd;?7r%!1s+aA_W$}w%Wo$QZj58F`cPkZ)Z<@wSM zP(K-yu|1Zyh;5X#*UV=%)_mA2eVOzn^c(8{^^!3NZJ_3w=iWRQ>56 zi39NyeMdiWEB+Mysh8xl5By%}EjEb$w2Qu`ZY&qkc`DAQZ>c-;Vt>JYl={<8)R}&v z&Qd0-?$n#M(f72C*9x>pwILau-~L~u^A_}Z;y3#2n!1MHR9~faKiXgP75&6`qL1iv z&PlMp6n{&3yZuAoy3193%QzDMvYhE-#xu*BWg}(n)?3n4_3jS6S;jJ_;Eq$Vf%+$- zyBeP>p^wC*8qe|Sm&CIwN1st|HJ(eLv)HJXi`YOPh<{aE)p&N#sjv>v-%?gABbJS- zw;IQ)j^bBUN4I{rLTAQ~=on8g`d`&w{7=2;3$?DP`p|c(uAAU{%2H2$W^6FVqdP2aGc5TA0+=zFsas4v?EwyUBW%Y?eH9b%lSG0Jv@e&!g5 zvB7(pY)@HFreb9~CwYsm^d;5ROFr3J)U%hw>lm|!c`GpI03Er1Dt}3duQVQxgnZseH0-Y|i%i_8vIz3nwjVBD#BGbJVo$fVC%Nvds76(c^5nrGbzvt1*g9DyW*jHTT z$I)_+p|K_ADkdaaR^pFG&4TC|mj^>EC<`a8lg}G1EQ-RH#c^E;%_@D-8Fu0>&HWV> zsppF*4wqSCt`w1@TKdTv1Amtk+leM8hCrzF_DUK3Ny}E2F+}rQ-W! z1q1#He>Bx%wrf#EQMA0&TN$xxQNn!L*EyYA=nEhpq z>8F-_s;Q??SE+qUm6QT%?X1yMw5|xNRwOWY` zD(rDijRte%nvy`&8>#e$W)?>BQfNpelnNt0Z&lcbrY!j|r_+oKlP-1Wn6iq<<}c(@ z6iv+$%te<;+7?Ize3i(>s}1h!89UnJF4D2*j2K)v(Yz*+dK=&+NvJqHEw3n2k*we_ zj4J}3vE$AkJNmr50b@rdD`$4Y$q)^Yo3SWiMAg83W zDV4I$kgEtz_oZU25uzi{898Y5Bt1k+^?8wmK@-zh^WLPiQiwqW+R-QE|Wr{gTY5qSy$BRN7|8TuzNT!S-NyX7cG*L`s55Ua!#P zFs_U2%dHxX zOh-ti&`e+yreC@yuM#9uiU`b&m*`g&NmMKLtsz{uP50x%Eomo(aB{0xas})$vzO=Y(g{E@G3G+5`wCDyu3|%c26e4O7yo z+!sh8xTzBdJE`U24X08NdLBW{A?kJ%`zwpWeqSUH_wK^JD6XN4gTbhN54EDAM@eOH zM)Dz17AeHfzK4RTR0YHwhDOQffyz7;SAlwaoj`Y7KdC7vII}wGGo2^mo^y>&GaM53 zrREQac!R-d{uC}w$^wySQM4+B*|suY^pccXbqJ)?gyLeOB3P1w4VYvvhuO);y>Us9 zbX7#BT2UOVPCk9~*$ki*BGX&pk9boWFBTQ2R8@*n>$r;wD{x7Zw1C>^GFc zb=@+rj0Q^V>4>9XD5zcs9)*3?39L9iDocPvk%YPO;R~zRJ1Xt? zr1~#he%YSJ;JmUV;0yP(D#TG)n|+B~5FN#*VWPyo=spT#lvj$Yk+|Y`Xdt0{1sbgc z$p?!Q;cACh6L!yP?7Jo&j^`&q}789tI#kj#|#a+U};WZB=IBlPF|0T18NelQR z6~)CfqbUqh{6UVLp;8iUI!!S8lBz(UWO~@Rk&~n#o-IqVHMO$|1S+ZmN)uY6g9|Ht zGg2F*LBNWK8k5IWJ-afApBm3E@dYr*Om;?!cAITkDk70$eV#Yz7{Ozt`d#m&1u7!` zOH+s_b9yW3B2k}9UWT%I$Cf8T)sjAdVuO!*Rvt%(u zDo-w`93s59NOEe~Ay*W^g&~ zQpM9g$)`H3^bzKm%3)EY9Oa0g@=(Zw=e>CsF-2db^1zy{>Y3JB??m(NHK%z zXs{@G5Ap02X7Y-n`lQw$|Ni6O_^OR|9KJuKSznw{za{e*zi~6&+q-LCsH9kvr&N<1 z!5UxxFeg*|#omgjk&5+PBO*s0STvs$#1VM}(D0Q+PZm&!OS7`q6xD3`gaG zFmv*UB9e^ptdjEV2U-ElVR4EKpK!B*cPA<^nwf?z`Wy59I6s*~E`HSSX!CT`bXn-fn$DOo!eF?t(Dnmdz#srKei`^?HOOG zPw=HVN2^Sw${eXoe#)$-OjpW0q)afH1uwIHW&~Q(dCGODb%AMLIVzWg*0r8;nWS8z zsMj9WMTLE}AeRBw_+A~j8zXX9YYw%oF|^fO+wCwy+Gt?)4{SN@CQ)hY>_)6myeSQd z*+N{8hM^Xl2rOmzwqO&iUhMD2{vY_<1D_A$+k#v^HqSHmjK8gL>=ILUnF;H#CBkwkj?V}G3i93X`Ez{!!#vkGz<9UfEin;b`Ov2xD(qm$E* z{2PDq@+U2Vb05RDKhi%I>zPQ?hjkOyU0B})UykiJ*zVUQoqwp-$KZcA^;78&IJN-n zL`9zp9D5Td<>A;l_X9Ycjo)6B}mR!zJ`4n)x zmfvDbK;?_Tp+a2#C^&WDqNXqUZv^jbGL?(|KY=&VrEU2P(@{LXHooKD*yOTNc{6bQ zB!|98`s9-TvEX=(_E9|D)V3>lqWsSWmvS?c(bW8hfa9lPj!K^gs82C?Ed7Mf2FEMl z^+nZR_+8*~+&s;Z|GnUNt%APDdDIV`iY~Vb9IqIN%O8uwDZuoe1ef?!(-*$62EMfh zzOx4YQ4Rb6crKN}5=*~^cvr#z16zO9@*4^MBzjrKs4R^ChWJOny^M;>x~uY9dcZg2 zs}{5jyem@tgI#@5({BWRig{e(km*Z&b^#AzpD`l(tNGss&iGTgn*TlEKbTzNRF$8H z%Fp1F?gc0-kG-+jQ*` z@J`?;Vtt7vpAU}LiZ~WE|6w)o^TFvmE^7J`pJTzjW@nPhb3$CjJIcNUH z-f-}Xp+Eg4?GNKe#@}PWFNnbK%elh|!L)Q*l@b)e~A3WVm zF%!I944!6cTnjum2AA^bg26+6I&L*kF>|4RWc)g@z2PU7tLMJAG&VM*0_lCmO$o!Pyq8i>hBWxU~Or zju9V5`ZK}13NW{ZyrIoQ;247Ii=PT~1^A5+7%P%lKX85-sO}pNx~$>nGK| z33$hD0|=^Iwa;4v4}$y6jAO;eOz`0`xpDSY;AjH%#VK!;#%}OL@$*p)d_VYHI!jqp z|9u92RSYiv)ABT}G$uFnEAOId7b0zA&&Y)SrOvdc5_}N0ZZ7F>0-p@d#c98>-x9$e zHL&$p)xQ;Z*doSV>baN zDj!~)=U|K!4bFX9&=Y(Iwkn^40cVzJUmx%{T>MM$2Bv*|!C#NT z>zn;=0rx$C}@v2+v;*&g%>IU#h%}A17n-gSM#L(f)&@is*|fFZ26T!Q02+lG|c%pUDl2 z4F5I2F{ZZ^obk^^IPI6~hr7Wi8Q8&Pe18x4gcw{>yB?D#vDznzkDI_T1)?uTi96$O z6?i+7%ZBlR>Za?z8a!8kxi#X?@YXxv-WZ&Rc*g0y(Y_m}T4zzdzRCN6=eaojBiA4O z!8^P7HUx}Zf1Cy0F$S0GkF&ws$KX;cAM9t04=m;I!KfdG{%gS#wGS_XH&%sR@^96^ zKdga&T?79aylH~`8(?slNWT+m;HTEWPX}kLtBdNt{2KW18u$e@sq zoNX-^89%A{-wS?$fh|9fQ&;Bq0QkrlT<-t<1YQ(_%lPdG_(d_e%+LM|F5@?`kNMX# zTa}3eHSKs)UN)-!L2wLb9E-~5f;V$eXZ=_Lo~Zm*)FA&1xYS?ChWV#qhxR-R-bR4A zHS{yAeKl_SECI}Kf@28gSSX*4BTQj0IEJ{6#mL`C{}XV%J5jseeian6rQG_C~4C5XNl8XM&!_B{+9t9~2SYubn4 zSH_T+`1=U_@)%s=?_= zOe*m~`!I!}+us1Z$i*oy^DkN87slW+|B?;v9=}mu=3j!~GCnhtar7@&g3I-%svpnI z#QHcml5;FZ{2Tnm8u)hbmZo&9^#29U_L)m8o--IvIvdz(huD5g`Q?I7i@~LSwFMXd zNjpY)sb9B%cQNH9e{zYhm%zn-`h$yV|J&fP;-BYoeFr?&_(t^G0e%S+#iFJ!`kjm5 zFE_A*i+;nwOJZ<||Hr{sm|X0m{v!Vb_E~#|^@8IHB4Z;Dl{hJM*$6YLvKjSYA z`^^6e@Q#F7RBljBTLoThU{fQb{_$MOuLi$32ABE4HQ=%4|7)AMHHLGqk0D>*Ouq^E z-(v83rZ!pNSI6LW&GeUoOaDfFxzPT4*mD04@a8;-MdfwPy>;Ln4ea0&|IdIYsy`ot zv;K>}m=xo$7FOnW&4{C)e#`DeqK zd%@ZFh<@~MV{^YbcHWD@C4O6jzY&8=Y4inW`=q9Skcpf1?^|%TFZ8YW7l*9tpP#TZ zBnB64^C8UmqHIH~TqrN`Q(Oa|TLWJKo~Ng3>!-F44}d3%kDWEhzgvTR`e=;b5X`Kj zs(++@)dTMxgNuLWgR}oobHkg1P`P%3Q$&rA+UEZ8=WE*L7`(B` z_khoi!5f);(pX$yLI3vVIoRmsmu>Q?;7wz2(Ps8IjL}W5`lpF0e*^fr_{{WGF7ls& z(?3UZPAw!y0YQvSoihs5CjkG*#R zkE<&8hu0)&8`=t?wpgKHzyhT}>CIXzVACXRQ_>_PDHNzoCo_{|=p-}DOq!IVPyrDT zMHG=Ec;qUm+*CmHa0C=R9K3N56t936yy2yARFtEBzu#Kx-Fxkwow@iu^#A|9$Mrmu zowa`N`>uDr>wej5OZu+F;QKo8Qh&F8NdB$d3i(#H=18^r-+b#o0r+(hxU_$5z~2*rOKzos4~Ovc+8B$;jh|xi zB!|Z8Ixhs@S_Xa?{Iu^&z(0iNb@)mCoz>3vnJC&xbRHMuc^!T(F7fvzu|J9UX@5!o z^WdkwC}AA`K+-UQ$lzAg{H6%*>EMEuN7#;%t2>8Re z#NUy|Tr`CLQ0r%;Z34buByQq=-=KNBRPqzi>ip%J64U=7;NQnHjEjA52L5OSE~zOE zm7jlI0Gxx#u>98|nDJi@{DqMGi&42>W$k}0@SjHD68{Cmcv}@X9p%x{zV-Og|6jo0 zkEi4}{?+(&Jc*x?!S{YqnX>rb&7Zjz9|Zn}2wcV&Ip9Y};3DlQ;9tOC#g)Hx1BBbs z`jHay7xll{#z%zuzuNk50^S&b&$g+(3;4^hZ?mPxL-R}gckIOY8T?l}__GVmJ6TNs z=YgLS!XH1J@e@Vc2Yey|pJT1{b>PVeT+;U@OkP@$8A~C{wXgJl=K}u|_+8x0PfYwj z1AciVZlpa2oZq9J%x}v7Id4PxfvA4OKbHxDqkW}3UJU$+5dH-6N7m0S0seRdF6(FS z2mVL|F6lq>9XNk#^G8Q+^;O`f;TguIv_E)(zrSEo zZ00Xu(fr@9fd8=qzW;@I10Axi#E&+kqkj9L{8GnH0;g^+?w+5x+u>gTIy#rX>zzKo z;4c5Ez~5CLoIjJFV-DJ92zXBjcjxEBz`G)FnV)BXcShine?PidsS}YuOgqy_$N14i z>G*#Joad**xa7}*OU?K)j7$E19e4_|!nnwP0yw((Nw~;g_HHwOpzUZ6I_f9qTgHJ? zZx?s%yBm1a`WNL;-Xp+|p$AUnoAHD3{Q>xw3>?5=67ByZ@P|UUdp@t>vdR0;?)kh~ zz*)BFB!2gN-fZCSGjIquwdp?KZw}$^_~%97Y-?TT;?v(#9)B(HLoBoCM}A5Ffxx9) zySSw0jlek;pbO&0-wS-Pfdjb6?*qOl0vBm-t04bF735!CLHz$N}`FgTiy!o;+R{oVB40{kUlF3$a}X_op{;D3z38?3c%1HLB$m-Jo# z0qg-H{j)*CA06YLgCF&|1NdVhobSI#{C5K9O)4%waf$yk!2c@(m)Le+W!7&HmFL{@ zyBU*@AA_H34C1Jt%&)fr=dCaidEsC>mz&ZY!%x|o5+=rFARa1&Y z)4x+4#;_Fl$0Bf{o&b(1ly;K8CVeLU?*RV^;^){%aHfxK4*f3!|Bn!U;SpS)veeh$ z{i_IE`qvondm?bL|K~qq&Y!aX6UX?a|N0(q#^mB||Mep9R|}(ky7@Q#-^}`{%kRox z47{BD6M*k;<=PbM^Q|04SrCj&wej0%v>w@^-*w3V974YK`=8hj+`(=SMtuF57PXRdV zGM#H5@m~o1bsF{mFn$ynP5(~d2m6rz&**QYT?AbEPa!kg`Nf9oaRV0Un(-6+xcU2b;QNGdH-A40d?j!? z;Wzd-{!ajx{0rj7_buS;%UtL3KV##c3jbvV`~~1ApfEKxtn19Ci zDDZOS?+M`34ZHW(E&tyGeyBxU`N%RI-}iyPE&>;AUIs4da{0+Z|14DQwe-NbIGSYb zpAGy(jRtXff9zGjkB`8mww?rhqs38dv}5{2ekbtt5xB_T47@D@7x^Cmeo_Q3@~;Hm z5rK>R4+7s1fs6bf0q?Q+Z2NTee;PQ;Bb|$j{AYl78aRN9{3UnDf0hUjH~&`wm+~VN zF21$`z6tog!f2l^|5o7a%UtKC?+oD5{t1oCe<|=S0@x?D|ElLby9VyA1fr zA)N0AN&S2e@a_n_(OUDpz&A(WGi<4U8aQvWT)+xz-JjN&F%R{78F(Uu551Y~zo`xX z3;eASxa3;qE^~ha$JgSz@Q=)oVwfDz7B24gPp<-gzGXBqn*84fVf4=hJ`sUS`+hm_ zbAU@7Cn@8ffgky=0)950E^h7zF|qCQY3yGjea)be`bqxR;zx=Dfj<<&*+0nnnnQqp zJ_48d{b9iGiNK|{{1}Zp+YeVi#?Lm9@gH(G&iH_Tq4nbt=>N~d+d_&*Aqa}T;G z{XYx*00V1#^Iup0uUFvzSq1)=EAYSiv*qJI3V1pFTPpCM3LMRec2Vii0xy?;=T+dp zvI74t75MM3!2eC)Y(H5xMSr(^9)`jDz9xB*`S(FgUdxRyuBm`u4}2}^ADvsi=UD#@ zz`6fICpg>p{jKjt;Kzq>w(m_gH8%lY6M=L8itaPOdA|*v$S1$l)@SdJe*cZOBK?nn zUr2H|;irDG{`wQ(;r5sE<$U8$f$!GbK0onkR=-~YXZuSh@?HIg{sT8b8`#5HznCP_ z4+Fn60vBm#13x!}yXS`sz~2_axjrTBYY})@KZBdr?nU4WEx$adpUiLn2e=j|AfCjf z|Ed3izkVbnru|?JU~UHdL;>v6;3kF5z?Vhh#+qAz?*zWUp<(%#{`CRijLF5__W!HE z2Q9DUkI~=6|25#L2weLAuLB>5z@;`WdtmbT#!cUaz^?*7+c1gW)qmdy&G^8@UHuOP zE<+dLcjdnh_{EUzrr(u+jg{}>uKZgZ`4FR>EC03!O<5oi75|;UPb3KEj(_XmC;eRy z`tt+9S^vbop8}5In078M_PrnYl1SW8{{}d3N2fC-&WsOa{IKUiy#Ex!IX{&0`vUMo zBXF6Yz6ktv5xAuGfGo;4P83(dLCO;rs<~48y#B_yzDEVq=)~FxJ0A z`1XZNzlnb~@Y^GB86P$Qzcm6E`+nui=1T()gT_cy>e+>6&4>OU0OxJ@F5YvvZ{HsR z=l)$77yI7-2==ES`)bc(M!wX?CxL%5g!BB3X!C90w?yK`zCQ&1(Ma6b_tHm|dXeJb z42Q{I8Na^|_%Q|!;8K3B0KPZ^7in+*s^5ON^2tK`oew+@{a{j0zT1A>`ZZJbT-GxkQKa#A|KMi=Z zWpr`L-y?vdx(1vpf9_-D_n!_2u7@j-5M}>0z^7U1!T5~^Z*lM_{bRflixDs zkN5M4OX!1AZgun(-6;-SRW>q$xix?v|fRfOD?vI@iAM2i^~` z2|tOS@}+%$4*1cQS>kv3_y4w8KbVStJMg2*@Ly7a|EUW6vG0_RzXy1^_;&#>m;SE< zFPHw8D#X9xsq*pXfp^0`Q`zr<3jDtSUQYkxzgu4aA>ifs|GfhLa~1g4e6M``Y2fA3 ze>d=Q`S(NM(tbph&tCzTavg=g09@90g)UIOzwfVqNAVvGyd3`~;4(Ih;vWRgxgK3q z{1d%U zryuyr2wYmzhk#S>FuzFq5%7aBzG()HD_`bE3!XLW11|3B_h;a{z)R<*PsSg-{5o%7 z59jz*^jih|O_8|K=8eGL7>S$M3cwGvIMYbymY>Uj-+;bpF2b7$!nx(=Bfzf+;XMDs z^wTYQ&b;5w^0QEf1m_251HUh3Y$x@=m46ZN8$-BTevbMD)<+#n4S#q zci~AV_I1F9!Zv2xj`k zx#{Z!{s-9K#ohJg&A@*XiJS7#`dge2g?;H<{TW1m8}Ro=;6nYa-}&#iyZrp0zbAlm z{hLm3&OhaR&y&D&2KI2S-^lxo-v&Msfy?=x?*QKsfr~}f|K2~JV#xyew;A{W0@x?@ z6K%VIv+TRh;KqKtfUmWnq>uS0_B#i-%+Fn1wnpSY}_Jqr9Y5xCTbcf3&EJ{JQoXP--em$T2^z%M~M=-l)}CGEclxYSP< z7wQu*IeWOy1hZNT~dS(EkSp;-Q9{@V_mUwI4TGXL!Wes=^e_KE$`d=YM= zBcJiJ&t?2`fWIB}%f&A^#?PO5z{ewSdB1G|@LU8g@n7}l^6kR|zz={PbYdU3{df}i z5eD}Dy7IMGu2wc{O z`hfo|0vG#je7XGm=49a1kA08m@9MV|IQ4UJzMm}mod%rxg>ljEbl}u4jEjEV|65+a zt-!ayzze6)FAiMZ&k+6H_dB)&-x%U2F8U>auaCe*zuW&_UcY;RH$ykqv3yDY`+498 zxgh>0F7|r>IGX!_GvyORaNh>LDu5b(k^ckW$AxgW{pKmZUBGD@u@Cc?(&^tHc)|WJ zIKNLI{nH%a`3PM4r*{H>4)!B2+ZZ~^m-hQo;7^Be%9r=kt^od>2wd*xc|Y(cBXGH& zX9o_)y%mu+BTm*aI>s;K@AH6ngmCU3?_)AooI}k!Q=AJgr8}895}~cE^f{z z5d{xk?%WoMoBTToILH5!`ORo-d}hqsAC`WE`Xk9Y{tp5_82{6Weckr!(-rt1175EE zTR$tNwrlB9;)CPIPT;46aCiK@1$cWTZqk1W@YYD&r2k{UCEb=RFh2P_@Noc!+EBRV z>#M-y5xB7)_I76b_BAJKH+-wk{@J&vP&k!2e10lw71_^+|Qk@gPYQT3a2q_`IN zRd~M5`ti`^bB^`j4xCsRm-W>@6$hRcAOe3F`0-_MzMTCNq>oO@Fy%8X{KbGj z8^YcBK^^d?L%2IXs0aST2wdg|4Zy!2flF)h6I>p_vgkTD{eJ*1?V`}Q_^a^p`&t3) z)5SLfXZdxVi+>sT`$7!>ak0-=fWJiwt`$OD`ltT{enJE;{nHjSzPs%JQS8t5V;X*p z<22we*$&vnrTm-@{Erd1l%ID4&)WEfpYwCc?I&?K;R`k{!5P1d|9%Ag;~|{=qtQ;O z-vej+L0yI4;3m>%-U3aLzwY|EEB~N%u}SyKx%Mvrznsy*iF_B2wZ_!Zm>)2UB%3Io zu~Vl;;D<%vV!wTWH%H)NzaiicL4Q}id;iTb?J;kCQ}ko}(m!qiF70nr|Ck5981!^e z{2#8se-Ci|{ucP7(tkg2zCXX(!Sg4veWP`7b{hC45xAuPwd-T*&q#lmU$pJmSU&v) z;N{Z)9^mED|Je%sj|0CK>0le++7D9{ox<+|zdeL={vze~Vr>4(_*AN?TfUwLz5&#f zZ7gQmcjhJiD>j+_V8cF;@Q6hVHezb67eHH5qA{~&PP9FWmEH~lvNr|xu;e&W(T-2!}x zfdjZuf4c(z_bc$v++05X{eYK?|3u(7SpB5_8T%Ry+kyXU2APeZu-{_Gg=A4lM_ezX(#GZA>bwaV#z zF?9!Uu??cs@k{xR1CK}G!f`q9B_Z7OuckF=+!9mWkQuI@Qop-^lhVaq`D19<7&_EF}aPXdo>Kc)VB5BQOWJ-{#0rkxVg z-v?sdlyXY_r2U=^{89K_Jg|Na{NhO5X!}9nDr-w%Lq!jsO$ z#hQywjp_9d>gVFJ{&6PoeKogm$o$Osv%u}}&*OL7hx37Rt%6SS&&59goO2yIiQmOP zRw4eoEAank1^y>1@c*I${~v*uOaJVx<HosRW4;B;aq z#?QFU%A(Px1_7Jnoncw^f_~8bQ#Oty6D1DpoyY16K!2bw-#>PIMj`pFSIvoc5*VZq%+y5U4 z{AUrkw1)fR|#rT)6O*uM?9tZ%wFb>nX%@Ymo;=i`r}s@McSc zhb=#5{P|VjjJFv-%Aj+{H%|b63Sk`oNclA7&+y;4-SE4(%YPg2=fK;HpQPXAza-(u zFSyJ9ev5D0s_LK5+J@9=)IOlg_zZ-zhj=;r!pBnJTXJQ{W{-=PS z58YU{MSnN{PEW@4{p{iVp`X7;fO9NOC;Gecm!)Frd0@1?Ykw)9tAYO{guCOvtASHL zm*3zfwu94t{S^J(_*Vk|AoxW${Hx24jBnQfe|re$_+IWudNc5UiNNcv#1nyYf54UR zuD|^k@B@L<35~1YPk=A1GwEX)q@(>`18Um$CE)voaHhY`=GKhim_FY?`?&m4|Js2| z{FF!M#vccM2^z~|5H9UF<3GU0Uj#lD!dIffmH2qqD{$~8>-14(1i}g)}x%o$2 z^8YyCzYF1R{$CFKy^*-FX7h+&z9s)DA1Z76Z2-O*|I@kYN0rh3jlef*G>D7uO5ksG zcu7k6l*Qj&z~5s3$3r`J{q$47Pe7=|O#*lQbPw=Omte=K)k@kAvJ0kd{wx5vq=SQL=%ZHSo6M<77I>EU=An~^X58KbY|7B9s1^jr! z?(rMk$6)=Z`=)}N(2f#jNP1BG;AM?R6-Rw|5*?$}l=B)64vxomOUcxE(}8!v84 zjg92v#a$!CZKZUvluDEmeo(xS9%AT{WKu2cU)sDdJ&n6T0}##t z<0%@?YM>zQ)X0+LKwn~KI@OyVDmEX>@E#pbB49maKQ@rfB)1h) zJGNy;liQGrVs3QFa5RdvB&SC6#o>G+xnucM+#|_}sUQd*E2ax&;L&VxDs*TplS-ur zr-F<5bh20~WJZUklrWGerc1@tloCpXL^d-trCCZlb7Q5cn31&N&ZLL#OqybmER^B{ z+0?dTIy)GjSiNc+0=DG~>4C8fLWj2*jXkzdHbLl6Dl-*oGh*eGcrMS3^5Cj~>rI%h7eAb3*6SzpQylA<>sk6q3Vz zr9`2mdokUuEem#O?Cx}jwoG?-6*@FS6ztGk6<*1nlil-#?o^krMi+~|7^$~OhDM#a zWFpHhHqaI8E*d@eRMrUf>Fn{Pi>@v&{HAFnQ5qghjuyS9sjL8wRDvb8A~}aIPJ3LD zK3RP=qBi52JTscLEo(*jwTZ7)dJPRAwXdn=BZJ%IRZJ?nEY#KN>bDlI2R_x)m(IaR zsQQ94Qc7k02D_s6wY0=q`*bPG+El&%wKdv|BUeNO&fv0QB2fCXnStt6@|s99;I1gY zmVpTqP+Qwg4jBmS{RVT{DzCv@%4YNxpXK;%^|IwQ>MFB=&4j57d*4heYf}|-g+bk_ z$yl^v8Pm1OA7)gfA3+t#aT2rlZLvb~ZSP0Da;aBZUy1JBFPoCzdq0W(0A_F3#}(2P zR9PQWiCr~}Xiz0aGs#@G`mQX2kvTioy`KlmrI=M|36r)Ff9hGW`f@QLSqnocSsYE~ zcg2fKY8Zw|M-(rnlVgQ6`myReNv6p}Sall)9cxw*(fk9kBucdzg0X0xs?!3FYoqht6e6NUO&rKqWnN%$C5;Gq*}%fO!czc`ucnOdb*ah^lh$| z&l_1`4X|1smWb@OIJ87%9MM`IQZLmjp(w!NL) z^w*leWHE12STiHqff|a7ml4U~LbVq4mN8*gEL55Wv;4~VNP5JKsA|&La@DLe_(pO& z)3qel)Q!#Un_GKM({*D|uaSon^?qMb$eUJT4<|kZ4nqVxM-~^lxItV)_U@) zZrLQ0tCUHV5(C*Z^s6$SkpW|&S~`Wmx_(8SkoH_*SM~Boim6D{>67zEv4RzK~0%i#4?u$wc1Yq^p>#BLmzOuD%#E0pO@U1!MsA z`dUVqdg7m0wyKtH)QlOD!#j#4Gc>Kj!d@>}C~-*(n+oWbmL&7}YO=>;9!4Wwz0reg zsN_4VGrq&;EsRu=MD`)$rQFB>+WG1;Z7`cd9?OP&#X?lXK6Nb%rf57T2D7C?^$MXB zjTijA@QNBC1}Ig%{Bh0~Y9Z&!RMoY3ytZB$#~pT}NSSVVZ!eL&p~fW=46gOU9<1@o z^$VuGmethB?e!}cv)yx()sj~(BHJa|RXIP2(nF2m4qFQ#{|MCT`XrB~lPi|=I(mU$Xf*`1)qo6f}3_!TaUzO|N1>8MgwoSaGN z1+G`R-ils(DIVVPJnv(ey+ubB8R)1=XvQ8QsYP6HdOZTD^2Hw4_z$ z2#4FX?H`h3bZn#+3uH1<%&wQT9$Fq+qt?v?2LdbI2fveQ{ZwsCF6 zEmwQ3`F~@LV^ij5vQSGM(;PV*FVSUYATydMWYWbYI4fI7m#{%Hkjs_yndOm@6{*qO zc=fe?s2DGf<@32(nqD*~SOls*4)n}tVWnNq+sf#UHELIK8On*ODT9PK<6Uuz27?sR zwb=tK$y{znriKOJp=_~~D2>&yi#wDqoo!}!UZvb?1$;li?CDmlnO<3FZwdIEi%(Y6)=d`$q1 z*z5Rz6>+u8#h#^yx8?CZL@|RgVy#gRZ%d9Ok_Bw#)ynB-?`U?2LjosrLvJ69ma-{- zH*XS{&$&zeli>73S=fDlCB!?D^pELqv0S0N@vZHEc6<~<4Df!#iTUu6=Ex!E8VoTp^R`xj;TN6;sf5uY0<2Tug7 zT6W~+mi^G)(xfzH%9XDamJxEvl7CEk5__?{#mc-~#};g`T!KrPTsBw6+Sz=dxJ*(l zKbkKio-N=M8JSNHl+rwh{mS)vcEx#bttiQe)9+quU1Y-;}AvKg^Kj4 zbQW{7YB!UaZrexI!crX2hfth)vDc=mD{5VN##`R{Jb(4IzL+_uhSF?z#c7LIc0yuX zX1}h=Aiv6r$}F=LuS$-=Lb?V+U`lOEMU~?DE|T8P?oH>j37j`+%@sDL3SDC(X&m8h zOAls7(?u0;-`d*V)8EnE74L0t?e1->X3N1FZls5|jg9IOo~pKhd%Tz)3|Ck20xVp& zsPg1YfG<(RtpHW7<2#H~yrPv&jB@11MZ@e^DvhL6f8Zu4-3-`E!>C9pz2%rdi`9IoS3LYSsJYUP2Mtx)uz&9xUwcz=c-!Vprxuk1?O-@ zzf?Gt_IyFX8yf7jCf8f5_oCj*TgA)0F^Q+aUQ7J4rP9oLaWiOdo($L<(fPf~vQ_>R zz#alx2K(>L1n-UL`~?4>EM1drz4r?CYn!c#S2xa%=#yU#Yn#M;|$y z&u_!kI6Pz@>WVOKDSJCjEw7<_%4%J8M_J1<<17Z*XiuFy17cu99B^`X$!4t4ey>}mqFjMQ?)HJ#qk-J%>VDj zX9#Wt&30Tv`Vm~oe=$CBvIW;reh|Ok;1e@vwd1QNxGD2vz`Akeq!WeuGh`h3CL`xu zT=%>R@~;K$m3SV6>pAy35nm{RjIA5s?^KFk0DB*-@s8O7-A>ep&L$!*J_3gt=<{0S@c?9}A!jM#dLCio&fztwa91_!hq`PvzT6AF&xB0##Y2=M zW$mv>_oJ}q+mME{P_|zL z^JgglakYZ>sFkog%F$JF1*#Q3hH`cOAxb?5x-9ggdkHccQTFJTpdKwiJrVaV*yY%H zN?n7zzUNTrGTR_GBRy&4>x+)w|AIVu#L6Vqp@`>F!J5=Q3rmEtDm8k`Z%7aqr852ol?Jm?B%f4HL&fk-;B5*>vbrr zTTyNvhrFMI?qtL{2Hjq^=`k@Y^}ooc2T^Y5Qb@~NP#=51dns&sKKKuT%vWtT_)Ew? z*R6EY$Qx#7hw!ISF5=LSE{-z4$l7QCx_$%p=2x5Ob|IZ~UqM>mjk@f*e+7mMk3IKm z)SvO!qkJPBrz4*ahF{!v$BLDw@NgRX$G@Bs9FzFnza$mXrTA6{%Q{(YobsSklK?7oY#dlmAZ z?vs#tCd%7Gi1RRnT@M>9KwY{P={g;G{U?;Y-@F0s3T)0>o7W)hjt=xukU{s2`Dk-d z#_8@oK&h+YUxadWDt_XwLAjvY6l#}tBfXzPx!$r?sb9gKpJROZosTr_hy0=24*NX- zeWF~iQ?8=$e}?_j0{^r?Z~T<@-aanCZ*JMt4c~ILr*2+7dMzx+2QkI)X~FQ0uI^qP z-l)Ud+B@6(+uPz@Et}ipo$Xy4`ZuZwj_mmc^M_mYS-{@nFA#5Gwwyx{!Zaqn4Yn$ja#8)g|*U=xal?h+9(hF}e zwld-Cd%HKsw{&f8>4JJ~+Gb5I-m25n-Pa#)Ywv|2+KlXGN2m6d{!Q`zja#}-it7Z^ zZmL1ss+7-5;bGqYf$7%_#K4Sy6n~rY(G=gH5~{#cFHqV ztm$k#W3VH`53%9PRsEb-K@ZBrm}Gn@aPc?5zs&JB!oM8;!_+itu9_i3+-!CH*eKV3 zQpc7OLnq?R@Ii+g*%mpOF=nT zd*MMjw|e15&Jv_!2IL>^*y1)7XA0t{cXzeNJG$0)_ijer=PoKf>DkNGFcjiuY_5Gh9l-vPznCv@vZ?8^i7SH)}uBS&yHF%TE>KqQ6d!Z_bUD zh9y3RHK=hIqkHhwbb5yyK3#_!8a>Di{ zT{fG+IYa##bTz498DP21gGS2jF`#96rrjgT&y;p&nO|ag?+ujs(g^Q~ zlJwGk4GLj64)2CFGHjTs_VWvQ06N?U=7crrFf8vm`8tR7)LuEd*bQHnR{Go1F17-g?^kM;LwlUXSbkBs+4_h+D_yvfQ~V`VId3=Ue!SMAT& zca}OHa%hLid2j5%d_K{}B{p~q{Gt=>vsU}-=jEXT)3FwHg>{GNpdV?}ewH=*G4Kue z4~Ji5yXmFu_23a~j$;dA8-X2w^dne};Sb}ZEolc|zXm-L*M1VhF^}lijE-L+oQ^o# zh{-mI$FoT+ypE*fdg&GAg!btM{nT}6ip^xpd$Q$S92uYC#nCKh7uv+x=kb~TrWbz9 zuX38w){B0GH7LuCFs7*vR9iGH>6thFHaCyhbD#Usn2||)q7O?aaU3-p&*LOhNw;?l zN1aCPEuzc7J2&aP7v89b3b`?yy%;j>8);`NaK>?UT!G(77|3OAHvNQ zqBpRkRCM@am5(QjaqNvG(Q@{m}@Ao#F#XC+_Ii{fl77sL@ECV-Y?T&l1W* zB9JY`QAe-i$m4{wZnM8W)yeavO26jFdey}G!oFaQYKSQB$F~+r9V7W{dL%uHSA5Vn zwxvsnOtyI9nl)Y8Vr|(h+K+v>7@$sf;$R)3`wRMpedop0Y4G=$!>|;Q97dd>@Rm|2 zyk8%~u)%DTtsE0>#W>+s{wX+7Gnh#i)c*5ksWT97N3mlRdTvgj3v$COy%%o;=IQEU zrzDeEyz%D9>Prl!*XIhG6Qek{oodC~KkP$jQ??7+9J}D_MpfDLkjVDH+w{@x&Y6%) z`EFZ_#hgIfyA=NCZ2!Dn>%mSko){P~;|+!_P`cyP^q$Fh$b^IoVXD5f>%5b)(B)9Rff4EK4Co?kEVS9cT z!*Ga-+bKfJ@ViwZJ($elMt`N-H}-`C&`sQZYI2)>VsISSiPJ-4$TyuXjyJku41>7A|d4$M=SA4~^-Sm4ALeTeG{Y?97 z+Gk1g*{~;cv4M8{gRn-&4$Lq1qZl)K##sZM`3>xhqcg@gSzh_1g~p zqQ?u;rqnfMLCbQ<_J#J8vF4}~-t2_uZTJng-(kM0PfhB+&f@!zV$vzZ-s&cm?V z(3i3s!@Fe@k{`75U7*El<8kzIS-fv)i=&@6cUv4UR{O9m@8rMF;_U4_c8iZd$NLSg zbte6TN^jvU^NCGdhXQ-pVxnIT{Ew)-W{|M65%x8NWwEd8hCPO`F(<4CbWb2|GvZ-C z%{jB_PYS@qJvBu+qU`8#)Z{S-$5AE7l=h6}hV=o9(z-r1TYoGT^rLX?xysg;sB*(F zJqD6uBX&nPY6H%5dj-myH_k>rXW9H%+MUp=31MSdeM&*ojUx=>408vbEjJSgJ2-|g zeCdN`#bw4|FSI zai%k#gzY)^<_67fgp1o2GZ#0>xSILX43Iiv17eCbn;_3&4Q4D(9_&Nm(1)*k1N^pm z)4J1MC=a~Nax`blB>83|45v6uu+1l?9cu%Fd8`{Se@Hi1VMdO(;V`JzVa((C;LYto zc3D35KMPbG*PSuY*tQvAuMA>0ocJbPbFRF4ggp zZYk)zKpQt{S9-L|JlfSh?K07mw8yJ>0tYZKz<_8+hqa)00If$o=-X6$Xhg`JI5#5i zcb0q^=Od3h5r*bEIUM)H*=F@3T!+PR%*W;xW%ny|51CRTl``WlhHbTB1v^(_*ftf< z^K(v#Bu2vnCa)R39r>UEHbMDPLFOXN^AxZ_d<>1lPUa=&eZwk`m%hzxkYSu3W)X&# zS2to(C-W+v8y^jhF<2H#D&Ez(A)eBs9&0=5F@dwrIcQHJ z`-{UO=Zo=9e$^$tC9juI*{5F&Su>GFS;HBFpYuhIpNU<9-z;?Em*Pn`88hoKf|1|n z3u3wqIWiBhGC!=-A5$D(=rt0ks4Ic4<1rOScq8hDDYr4SJ!~__bRrnGKg!{|K@&`! z3BL^C=LP{y{~m;INSBN~urC4`vG-C&d}kW3dt}>K9S}e5I0G||%YlhQyBx5i+i!3! zZCxNg+i(cbw1sSc8nB*@JD7BxqJO&fuh9N05J#i-uheUP$QJefV7wc)U;@LnF}9x^ zxiepUzp*#{w6%*Hzrp8VO^*4iWq_Y+bDD=Ns$N}%wHiNt-A4)f)(-tl)c!nvkPyO3Yx%s?)EO!L$=-4fy@Ep;Rx^`M=Z z7V#a3bZAni2uNzlrgX_(fR*`RJOBa=G#wA0j`S|5L}WF^X|#6i9JqpqTh zv0a1uG{U7ExO8F{mX*7;?ARQ(OG4x0b?V+I8Jb7(s9xO%zv$zpIhgki>hq2)m(Gu` zUfr){`}&9slNWXB3tC29Q#17CT*f$#%?;0k!1<$0))B5YJfwL{oe`Yn#iyxPUjmJ^ zp+Wwb`m%%3M&zUZERp}I{eIld0l9VRzZ{(TD&t;pfk{cb)nc{1QLst^A42O*yJpPdYRrBTVxhhlc5pw753@ zE@-shri=b5_EopG_VmYFTJRvNIHp|He&zsb4&XRkJi)=SI)02R&M=?YYhL$`V;L) zvp$bF#5GOY3XsUGTDYM35<76!OfauiEImIQn*@-IKzOqna#RK9sDmkI$<1Z;^6U^ zcv}ZvukG*dJx#CCD772Zu8XGSIP4FQ$+&i-d=A!|xjDyKI2W84$|UtTs~NsJ_|M7} zIy0j?(go~D@B$psm3Y0v7XK8upO)^yR!-{dT$JIBI*r|f9hgjJ@bT(%(kTx3biBl8 zTYSqXr<*Q?Gk;Llc-@2TT;=Z3J9|DpSFOVe*5tV7+i)GBqtgP_!TV~+U@v=4BeM;k6OHtWu(3s{yK9qQXvETu=pct$_cEjG5RNOz2p zr#F@U8>eS5Wisd%SQxe%R-!7{q|7bBgmn6^e zHhd#qJVt5p?6_974yThl`o`=&3)7D?Iii}TW7v9y9WKmgu~~`vd8Sy(Bm;G0qm_?E zx#W&sGdp$5Ri}%$=5W=ZS?8i|J-%*vVWlmI;T#akVD}*O&RaG;Zzi@?b>gn8bYXoq zF(m614Bw{k+WSDd&^_3@Gtn}dq6ESJi2Ai%&r#YkSRTMEX_r2m!UMQ}a_aLlQlGo^ z>+&s~w&h@&rdanh^`EEZc)ZUvG`gMnGvuT zrl~>oW1R^#BMl3Wm^}!FH!5Ab(uMw9pWff@=f`#Yx-i?9sbR4L<7=|E?ba{2C9cXYN(!u8xU>Wst2j;_A`maf+JcpPcxc;&CwKC1%l zaL@3rVg|E)X^8#yLn+%v>*n|c>=#Yf>k5B|oQ80pZ`YZx(E9pk#uQFxH=>>uldi3% zZu`Yny$PJTa@xbWzWoLA%IACsOJmswjZSXV$1f>jhh}x`_H`%QgAg zZw@iYw&~Nf?Mc_7n{bA6{Km2SbVo0&D^D5+(=Mjmn>_{b&qaSZYV(?5c+UjeXzVe4 zd(|NU`TAVZ->EEZg3Fz_-Zod25N>D>@!wh!fZDnEi0RK4C{k zwq4y1;qz5!b_Jc8m%yIY|RB+4`eda;t zlzzL*K6)eSD@VzPX&JF5_D6Mg47t$Cm9??M z;ipW}P`4vAUe|P_r6We!bP_-1yX#epLo!KEKBGrW9b@A#YqO3V*wRh&aUnTeJ9XtO z1MaS`V{l;B@IlA(I6mz(wL-_~pM{==^C_}^$^4>h+MGPb_VsF&jvwd3tsYa3C-Pk@BdVz>$YsLWvc};sMn>o&aTsOwqe(Qh`YSH zoiOKUu&uU3p9}HA8u8W-Hl4XVV*uNJu)fV!-Q!qB;np%{Au`Sq|`S7mmboK4|C0cI-->F$Xp$e`&U2Cl)7+T*lj^^b%CS_6(n^TDjkktB@sQ z%viVs^5(U~pE}iT zX?rYf^!ZNxRat)iQ`ga6&@x^3!On{VeT$~^&g-y!zA%3S$=q<>K+`#X$P5ykRRn;hiOWu9(ZdQHcw3*7;fLm zRXy7$vaFxt=!i9kZoEm^+0xU4SNF{PF`{k&0a9$<{l5j z55xbbfu8xuc54PsRh^;v>zcNCa{RrpeZfb$2U~uy>-CK{z;F8C`gz;IN7;huIW#;j zA7H)bBee8Wcls$u+I#9sS$z6stzHdU9f$Y?MqbVt$jkqAIR5u}Vv1)Oi0!a(Ncl{| z&!5n;$K|agq-8oyx=dNlA)G(47isgF*3=2vr#EAsm?}6}CcuZY6b{Dz(3crgJAsJ} zC`*36j`eCn%d4N)44gLVfepVMD9fz>xS0RcTtVi+CSQ20aIC0|ekm4s)XQo!xkiv1>!TuLbY_m>%;K)L3Bz&z zq#*CS(vR~d1$pO{{@L&^x9tf1P4KU9{K$jCD#s7o7v5<7@6a}1&+n%8C3gC2>X%`! zVQ7QDX8u0<*Zck}>2LS_SJU6-`>$2)sf-inb*jDS`fpP00}~E@E9hPSZK^%#`tMTh zI3Vtqx4Xfgcl`IMb}SqD`2EzU)z{}i)o!fnl<$Y3lgsl6dHM{``LN5^RQm+F%Tzig zWwNN>Q@}+P>H^^6zElfInPBvgZ?l`qwV!@bngxtoJt{9(&_jK*!yPqtVAO zsPgMA+dtGr;gbbpugo;rbCogv_}#7A4} zF$>bi@_jAnXj6CtXHh2LpQ62w%xlW!O+n#2lyw81adF2JjPnN2GavY5Cvl_poACzm z>nzUn5Wm^M8OEP33xt8+0-So>s-MJ+EYgMJ`h=A|4Np2*!(cg+G~DiBt}OB}Uc+0b z?$mx0*RPRI(Th*6t9%ML_4>4a(%$~LLZpxzI+9*!{dgPH7b56b z*W5JEKxur?jUTeyv`m&eU40Ss?wF&_mgi>6%Xfj++xFY6>1<9+a0}FFw;zTKj6u?a ziLq>n80s$D^DiTOy6VI{ejUEwVCGev&wT~q;xK1PVgip9gBSL^*T%zip%(Jsx0b^+ zqCO|(JOgpGodXGb_JKI|#RjqEt=oP2o8ZTR2hY!Vpc!8r@ML0b0RCd;9IG$oVh^M= zk{{%25V|kN99=!)=!>~-CPyh~6Q&q9dg)==eH6T=Uif_?+DF}{;)AbEnQvR49Uxf_6oYbkuw9LAu{|?C}ty>nP&iK63)we9~6PDNQ$HA`KIk`{Z zJe`JE6G+j1oA&W3hmUdb2dDW)QJ-9Y9svCa_R7~fcyK@CIo{hvw(n>7T7>Hb3!F`0 z+4=$E+O5Ov3!{RHw# ze;Hhdjj5l2mNqr*f%r`uN7^8LoqA5ou4`hrDJO>Z7YG+xKH0YX(#ke|XKj@*azW0G zk7;@zXPF{S-K0Had19F`nAKU+HK^a|c#Iy;;(u9-F|?SJAPnhmqFp5KU({j#xI^Us z55l!QwCsBI2kSTG+2|zYpJBrHH0U@tW}M_V^wZT#2$!)9?Lb`gGc@(;FFKC;d3fkD z_BUNt>zaOx0M7lT{Z)vsg7 z8cz(1pm^sI=fceTEZe_2E{s|izH^9ntp`rKvi>#Tf7X+Yx*nN4(d`4mr0%k8Oa~qP ztWf0UdH`iHjYgK?CBBcPB}U$vj-UPRy`W*5XCvG#lPuHJMdBsxzM7`4X}=Kd;fNnW znwC$}?r&-5SX!w=T%-48#?)L($4eC4y0+cs4WCTaYk-r_`2DfSemd54$&PAKjraB zx?`-Lx-x$_c9C=~vKXIC*Kq-VQ12Y{mS2?K%QdgDH{bt|c1_CPO5hSNaX-ztzsJF7 zGZ$M8Ol-&cOL@#6{#aH?YvP!u)@U8-=QUe=x6RYDt)FZ0KE2-6a|%T^h>%}$ue>vF~SN9bfCAl*RN%32IO~eZ*P;ePc`yrvn^WI zm@X6MV%n3(5-AhkA<&sc{}j-0538jYSNL&-Vncf`b$82xsXKlfCw?gl;+L`@e#u+< zC2vicA6d0B&TKUO>Q=2M!@+V7Sqpubp40s>WQ7Sk!w>U#O&d`9bM}AA z$b+9UP#(N8YsOl|bM)y^YyT1OG^pgTxmdv8j~+$1INU*pJ6pI^(~dhS{Wh0rSq6Jk zkGze0>hZbH&omW4FXPan<<;pyqr>roj2BD5XtyyurS0Zh0XsF1>Cb-*9VE{vbwbmc zcAse$oO0Nj>eq7@BZOZi`(T_Zo8;qk~?RIoH8~>9|WU}u$A7M=I z1^Q|Je}=Y%z9Rdbz&NJncwTs!_KOfMe&zw!4k_zmD@(@8j58eXrJAO$>D?Y}{XE*A zbd8uMu@rt}7s4(!@@Pv_YDB^#Rbh zaUq$3xEri)GM?Lwa}bP!V;DO2^>Sa4$!EO!F^m)b7{jxjVOWD2w8!$zy$w3e=u^!C zz1e@_xb0t|i#Xi1m>9wWWpDSoO*j$1zOw}rQq-O3vBAbu^`UT_2xop=134_qq>VTW z<K~YHGRU;5xW-uyE1O`Fn^zUkuH0tPE#+@jZfC; zJHg}K6A9g!w@d?VAnPXlpFc?xTi8#5Z!zWt><>5|C7;X7GA(>T-hI?(z$^1$;gj{v zsCB!0BIrd&iAQwfyUw3==w01}HmJ{Z^*PX!pXqh&`R@pK=VZb4(U|%Vjn_4O!P158 z=-NZ{4aVK59t7`Hwh)`RY5QUXy~viQOaCzF>1X|Hux%dO3n||S-m|98y#q!scIvuM z{iEJH;kXs=PVoIRZ%>JB1;b~Wcb5X;lrvjx$l?RoS>0x|W_h`)7e|we^##w2;G9nI z+>c#)# z*xf2YlrZe33*Br9!;ZRyHF;sayty{4 zkjBwodnXHJ&bQ$c__#ZcTJXg{Z2$Usy};sljWL_vna;XpsafqbFJ9uR9@mbPyAWr3 z$8l0IJ~%ci@1QVzk%XuC7LoLaG4-fpzqKm9X>(6}-In$0#o&Ijw+CC*p1HA^$76P9 z<9@ySNA}DqGqh)J-*JtpuQ_Sx3GWy8nK`_?`%O9c9uP0w@yb2sfTrX*_Q#(8#+7}^ zTt01zqvY{y)z53bm?L^WyAEyJH=OvJP#63R?b2_#o)wrgw&P>2xUO|{$VhR@xjyfW zV*=}$bxwGr=qD!(0@!-}Hqb83B>UPi^_Zg*-ktRlVzCt_5m~ zF6$e{c)dGK{lcD01L@k(XQWR)`_!NW+uGf0Vaa3W{ZxD?yB3?whj;a8XYZVXnOnuw z6OPU}OY7x@+LKKO?=Zskx;x!+X>LKI&G>Es)BkNpR^V(yZ~F$EtL-%x$iJ}X%zzzI z<9NHkvu%SK%MA{;rSUQ?-Z%)hJ3Rjpem5I;27x}9A7(rqQ%^biVBLjxYw42(!Sa=s zGaT_z{j#B(MjzwmqP!<++7KTrn1eT7oyGfZp3H=OWnS{HNtsyUdH>*zV0gF9j7IAUD^J6|S2KX4peC9j~(rMm|(Q~wT zM`w3e=V|)v2){`Z!1OmbdfQLlg6j?1%(;Jlb0a|0(TPLg>v~&os+{uq9g+Z!y3yUW zfgi}|>)6nx&+d}0VK;LoM2l+FdXheg&s!BdokHJ9srU^QoRW9Ht@6)rsKDO#do%x^ z_=XDZ^VjA1rzpFXzM*mv>MF~Vb6$;y)9|^Abo&HGy}Fr2zirBXyR<<<(}#&kl6Qv_ zuk*(+U1+4!DUaNg{dym7#qGcu9F8;{A^4BLIV)5%t@m@#+i7LmI{JFL`|zF(TbEDR zwgn_Xo$XzVY{UL;f+`kVn0KjU(#_?H+{xv%KS3@=x$Bt|8a6E(2x50ywmE+ zd{T->tW)iMJ!TAY9c<#1b35KN=a2uQ^~9Ydc0|W91lO66w^0F-|y?ZIAGu4zLhB(llQIu>cmsazExNr)ABbh%j{ddo@P^%_pSb} z?GxV;+_>WR0V3b~sw&;AlQC=_nL0V89DmG$Hjg~@mM3~Y!>=pcXC(bJOV9tA&n7;z z9yLR6UiovP-vM{$h%AS7ut=k()5bx0uAHY_|6+SXd-KfS|EamkOz0h+t8i?{vO3F2 z6VB-c>mqDj$-ZohXwz3g4s9y!n<+zn`$m6b=$*d(oVf8WqW790^GwE=4WQwAs;n(? zjJZF;+;*Ay7u7Dm+MzoeYsdVtK69;>@;G*7PR|3K?0ML%3suM>5e5v0NMkdX|gd>vi+`c~>AF`kUbo?vr@@dOo)kbi4=Ny~CYf zJ8e>hA>2=_?_#1JY-bNaxVWXtljG?jdjPy=*|%>@HG_{ja;=X#!Q{HXAswALw_)z> zlyz*e4Q(p&jD73W;gBc!McXqEi1FvR0 zX1uWHaoe66-du5T7;p31brjM!D1`Aas}nX&dEY)GFTTluC0?$Ma<*#v5WYW* zZ!#d<_>X~J_}&)Qm`1oLq35i}>aelV49yPR*v7sNZNcF-4%u@D8P@8sTv90E3pj?C z@h(+krNPy5sG4_Zap*Q%FNMs3uK=@&U(5Oyp+NGU55X4{$j80 z{J=VCa=^0->K@MD$$eSA4G|98iFlv&v${P z51mikIr~hV7LXlL6x5q&m=JOkDK1&^61;5mB?n%E< z<8@7|Egdo1g_yi2vBtqzXWhN*<1NOxj`sdH`~4@vPkDTDw*8in-@LynxM@$K%P#hI z?R6N8r`5(2Z3EEiSFqdlw*^VxZs}RpsXx=V8|~|qac$ryzu4B*&)W!IO}|#{IVaGT zpmb=uEjTG}$_UR=re;QK1YX!I@rkO=W;8L`eQT^nJ!7Mq>Fk}<`ze$IcFo$ z%AU$@3UypCZ%ze2^QK^RU^&E>olqvU8eW-Tc!MAAl?jG7>Tr82q0@HERxBxb@1D4= zh^tAVsb(pJU70s5JEu8mz&9toI(0z6&MX7G6v3P^ih=J8hY#P$3)C;x?>3DG?{Z-n z+cjxxn4xDPjDD6i_dU7o2seF^$TDq#j1?${WkQ}>Cc^kmPEzyMHKnYKFc10ob9n|W z&yeMjwvjrEer&HY@XL5m(nH;S8hmp}^Z0j#gH4Z-s4Hc#jT0FRV?OdH`fyB{v+**V zJZyJe9_s%%!pOt_X}bb=Sm%rS>B=+XA>o(w2W^0JS(bm?;Wzo>xBI&sjQrG%cQpID zoAVsv_xJnFI~onhbDsC`adQq@bQ4>6cg|>=)vMiBw=o+((|J9{S}Y@Gz5ZgYjsJ(m z-+ZjDux5?kjAt7`z6-64=6fdUXkSuo!7hJm>h0L3|qmVc60$ zrwL#ehFyj*?i}%hnjph`umNW?o78&{E^e+0+LL2%vo_k_eUg5qEY-<(zRg-F!;<*k zNY<{i)1Oc9I5yKv8hrT$VZ~AkVf@A>!*D(XVWnYQq{%=XHcf{OCW<9LY`P9h@_i9c z-V7avSKlzPq%7RA09iP+fnFtvePM>}qr=8<=LoLl!aYI^o2kR%Sww*O%M5&l(d6^x zNP9oO8-y`A%MRb)GGzzzIAE+Z$H=_S`q%3A!N=zU-{je;tt-A0G2>lo#v4=cXGTqk zwMiYrkPD+Y2Lkmp9Zs%y@ykTamjj)3;143sHXb77#SLTpo^sSTF}cE>fi!U2I`bj$ zNqfw(JnQ`mrVVNQSBo7ODNDzu>8>Fic%^NH*Q-OsuEmevN%;r?IHBYEfYcF}?xP+Z z&gL)zc!ym58e(Sh~qN`0ZFP-k9Q8@ZUho=XLgZqkVqNK0j`spRmt6?DNz1dAEJugC}jlw6IJu zZnm?u>1Xj{edJmM9Wmx*6h;{gr#(pbc}r)?Vo(OtA0j)y5FBRhkbXf zfnxys|1{_S>CXRHQ}SpUo&Wc7{-5dmKa2N8huZ-2P9dUHf5E=^ept=97rL0%)AYCZ z!JjGOu61+$-nt9ZB+-qiyTS^Y5fdmwHNt-ZZ}#=gYA{ zXz%^7Ep4rqhO)rdQDjhvroVr94A--HaauYX?8<8?6!7JH%J<}%ASceQTz`8=mJV{| z^khb%uIS;(vcbOom=`(nJvuMgm3c}lh6N@iHhmtw1BvWxdUU9SyT<6hAGYCfCyWL3 z+xQIof(gTkGo0>%4fn%r>tTf9d!|jVG_Zj@ceG&VSDKYdLKIZoul+SSKr+$k6=@09DF2;>& zZoT3dLD@WKe2oe(BcfdIhn0(`fq7QbWqpQv7GZvwo}qpWf3Qr?P(LwYUYSNYkNpf` zQdU_mr^6C>)2)Yj)rfq24mjP<@tp0)iuH%6aVNgDYBQ7R{UvxLFZsXZ<*)I-o0reS zFZo5fU*X5R{0*LTlQF-omAw2dXqlJ4!;^6{4mU3;cMpD1c{wG9y!5ePUNT(r@(=i* z{;=Nfjmk^Nl)Pk};&=n!^3`9PW#0ZCa(pYYeZ%et!rZ)l5&m%A{*MU@cck}gs;g`H4-Cyuy zzWxLEHs(eG>N#eP%kU8kBNXh}a=Zk?KAX`?WI3~lbofC zOjG*h0G&3|ZvPFmq&Wa_aqjNU1O2(X*{_%n8p>ome!j=lYaKnQhaVs83|hMBjrDW( zM;&E+ZareX<$PMHmco!-%ikAaS0gMhL1>qS?s#=N`#(+T(fL7pys-ZCNS+^vcVrNw z?nAl<#d^B+kMhDD#6dsx$9pW;eX`ZxhL@lrz9V4*JI#QH^t5v-Q{*vMvrT5{S>^`Y zC%ANwDTyw4y*V+0`(eSS@eOGYf|_IeYLZSEWbBXDg=HFTlWj86DXn%8GvAo8=^;-H zc>x}65i=&-N7b9KZadu4)Q)_8T1RMYoI1=z7|?~6vEvI=c-d!Ef8k2&Y2)-mt&R;Q zUUQLI_n?RKEVHAlSSPHPga=IH=qqK^Anee@j3 z(S3h6+~Y9$YU9zf4b5WXu;F|ogXWo(23z(dzsaiivK$)=rmKk)j(56palG25m7h&Z7j&>LPm{xCPUrDpVwo=BgnC+Y z1?|AR;^obr^_=wJvQM@Ky4dNsq%Fu4(W)iW`U7hYJuZRZIk>+QnXuhCsM&B)M z{YJF_4-WokN?m+u)0fY((mk5p#d))&k5YqS!#L$B4X2j_dW}SQ+VR;VS4LN^BZZ>a zirI+%G@XmJqs7Y?GnW5A=Ap?c=uoc?f?xXjW{!-T7wa|lEox9L048oCkn?6-tk>Al z7jwOq|I4`eb>MTy#m(@`IEQqHz|V2Nn+Io|VSm_1P1;`5l}aE!$G#cr~`Q6d5E@-lbu z$JFaVgL`zC>FdS@(a6~OE!TjLG51}Yg#wftj-4335_iMv%@Tv?KIL%8adtR#z8#6M zOmY1f_m7y5N5L=p9BtQS7CT{Qyw&V?&BT1@XoQP9-jxhJqUS_;t&Lu_01fSUEM&-> zi2qC8ABX?lyk82x*b(jUa!EDaWf7#uPOHp__=vaxq0wR ziE%9M@df9)43{$UCj3u-SnsHH3zlJ->$1IE2|mYi$fp@<6~f%P?Hl38Si)J0o1s>l zu)y4Q4ZBjWT(5XD!s*O4?ZR3!Rl_g;i&$$ZOMbou|GW9Q z7JkVy(w&GO^Rop{x+v^s*o98=a~)`zpRIT@KN*LcpOo8X zgwvVzi*Sr4|A@^54eiObG|5Z;FL~JwIc{F|z%Thlx-R&cmnYl!CS$-cH=|=-*5TO; zT0Z;mWZaCy%}dJNg0QH(oDxG``k0@W)Q4-xzOKGLE*6eYY$9dg4Cv#_h$-23q>L~o zw)g_d2gmlC@ncz_9t~<#zl+Vf-j8snWVAax4D==`#9kUAA%NM5Ks9Hh1)9Ct7= z+$|I8G=$^bN&U@Jw)3aM&se1`X4p1_Nx89Yf9$PJ7~2c3h0Q`)Iuqe^EH8GQT8m;I z%=VIfFc!&l8-F2aBrjQC=}&;)%}aSd=bgZeX6D@QcF^H$cY4Ge?$CYI0K(*~2hYIp zR6^3~L+*wq=j?@Z28L&ExVOcU%>6c5^O5xwVx*y;Ez2Ne`aJdOZt$=STm&6i285q{ z8PJySl=D60KTGrb_P~ORKG!Gq!Mk zia&+;57|7|!*jiU`lqWg@XKA;QS`F*#HBizq(`uwKS4 zM!2*eY%3T>+IT!Qm@UP5SSrrKjz)#c+%0{ zSD?O-N9yktz)J8>=Brch_xQ}(DrqOv#nhFSZZhWQ^0p(NdDS-y{ek7jC@g5;vo+vXOuUww4 zwQ+~b6Wfg0C{G`;xKo~dEm4-rv@I-mSe`N8C1yT+6tbku@qa0E*W-V;%-sOL~Hm%Tcc4eq<{ zhu-)W{O=pWv>A+7w;9Gdx^4J4!h+?ZK1RA~^6(R&ql?Nzwh5oKxRZyzO2|X**Tz(j zZqsiE?M%pu-kbG$7HzLPNef$u&FQ}jKexWHZ(z9O^`|Wl?alw)e7_rh%36x}$@3Zf znD6)CNk^=NXB38b^!YUQkECP$b?NSNWCXFvWrutw9e&)@m*G-A?#KUA(djfoPiYUo z0NSu#Ob^F34*;VR`Lw;HlIOk?V^tz+yzcX? zvPZ;XHdAybooNlhHD*GrFoNB7OxzmC^8Hylon z{mwJlNk#sA7vFSclkX>w%Q(MI&duW(7QgnfQQ71@?v> z#6I!&zX|ftuuGpl`;a+De_g(K4l~v>%GDj?lE2I2p=p^vUu3hmZ@N6bW1o>RX>#W7 zSa+PCZdN||=NtA}>Q26AJ@Na2WZY+c*JT_z-c~-@mtq@#{e5n>uq87+d$BZWQBHRG z^E-+$Z|v{!{j;%bB-)^&W$+%&_moYZyTp9X)Ben3TH`N!cwe5ReY56C%8|&IBYY^| zk-8J*j%*)Ek1{6Pj_E}6cO-ve`{?{f(i7zq=}Fn6UXi3saXr?#D^sQ;=Uve@vCTw! z;yXmiI%2#;j;>=*W*v!huVkLAb$oGD`d`au3tvf3`ZgJpiS|98BQ5#P)2LUB-(-x( zJjr(AJ5RrrH|d9%mdu+qUyQ(gS@K0&{=0lXWXYGc?W61aQNE;%F>aFeMLDzP%|XVW zv(y>mBAGX9z9{2?Ecvq5d33&m@*Rnh#9SuX7c%2oydFvS?To|uV?D9&#Pg`64dd}9 znVyK*Bk76lM0#e?WB>i1wm{iQ-a|6iwZ;-5Z1fSnZ$^etr;YO#9~o+AyXlY+KAIB3 zSM$8-LrncPHiV~4em<1v`sS|p&JLlBPSYaYwMc1e`iHPhzOjDTazz)vS#m+A_n9Hg zHlf)zO?r3FLALb#a0kC_?PX3X|zF*RT+7tnWF>h9PWq(Qcu73wwFM zm{VQf=pmm;<%D8l*}l$&^t*Z?Tq0ji?TzXt-#~3^|LQ>@EQx78^!Nf9zc=7KWe`Xm z5yD z&g#_p_nkwg`3@QCN+C=6@vbXQb^WLX`PgckHXEw{0d}sWtw&lJ2fO;dTNO4VUoYi; zWrII_ymFE}pQ!uzIUY;XW*l4oA#Dd)I;*GC8Rn#;LinL~2x)ZKJeIHMd24C&gQlLj zF^H64_w018$`{$oh45BiI!`7uo7W&`b!}F)okKnAPL@{I@95jQ-o(CVPAAU*ex2z) znjeJ@BzM7~bWlgnY2+B^eh`@^%l{qQY?v29I=gf|-F+N-e9B+@+Oa)9?UN_Yzm8L1 z1-_Z0-88!WIzhW^_BK9IzJN0M+3J9{Zs(JmiiNP9PNV7kjM#aswrh!FTnCrGb8Fu) zqiaF&SG=&_&}Yc6tyOe;kj*Qx!8-b{q{~t|p3$7X>iUB0KhUWio#KyAu4dQ`Vr-4| zD+YydWixXiG7h3kBl-^NEUr%!4`i;Ty-&2=h3=QD>w^^iq==ZXukdLhd?sFsjCT!J zxk~4TFpCdf;oGZgg>as_=ae%i?!`vzc0N1JKZ(y6u?C$g@n<|XY&niD!$P?VI%w(8K%@6_n?yLjs)|48-JWS?p3nb6z4+VY-nX6v)G zxrR?-e9W0Z9`$`kkAdWvL(jU>YiM__eea8f6Y2l4<$iK!SZ`gD4Yhj~8&z&%TqvYI zF<+&sc%lCp{X&Sx*j4oF%~xgUevk6)*>9&h|LE_xt*44jeds)XStQ0sH8A#^&7R^R z8`}<{M|=83JH}_RA7R@?BSUzYY}abDB-{Q$@5}68cY<*()tDd-W|D2bSj?;5L+b1- zmbUW8`Si`sMigcvs~X02GHsHqROcEgIEu{Uqz6o3~Hut<`3afw*QR02fB$@vM(-eJe$q- zv-o!k{U>Qde9WZhLcZK2p59RJapGV)Ir5RIhVuQj>xCg<)tSb??qZHj+Oo$lIml0* zHR^qs9nZ6Us2G9R=7iz=+m!$Ku>d)@iqq}lAZI=O=PZ7jAYQHS=&Mh#;iv49PrcRE zQJ0Jx=~GpIl;ZOC7#E zLp)G1McZ@R$=lnQME1`1*Q#g?RM!h^_$s?RFqr((zEW3f_A7j-Scg|oB zzN#S(8r_0>%aVYS$Jn~uSHJ^Fn>AL@mz{8CBTdGhsPlYYhdaX8tu(Nav@auOei z?MiGgqpKLpsZX-QvdYGk48NbYJ-V7PkL^pTzX%ySkUy5|O!t=3nsx9zhrAE*MS1O) z(9S-w(}$mmk#%BOwh`~QryIxE@MgAZs$4o5o=(;0<@2Q)4df zBLB=njtgS&axu8DDjf%f@RNKa*}1W@r;|6n>+FIqVzL2$vrkU;>Z8q0UKdVUB^`0qvXtR-V(`)^j~8+5%(+AjM#D?g7-CySv+=+lLM)0(*7O20Jq zP7;49boq)6;HTd_e&+o{T(tj$ZcQ&FBPJFrO){ zeWEBoRi32()YR|TcP;yPMk*9$mt~dsPhaji#`lfnSyzky=z0y??+|}ZQbLh=`f@h% zHfGyA#*&HJWwSoH*iHQ#)NwhxR43yevFgQgp>0}XY7yvW5IBdWvmn`{}WGoR}x)fhzh4`LC)F!n4`+mCpJJTYN|NpXgrw zOm@@e%gXE}=g(b3c&V2duUY9rK$w$UJ z_3_bj$!33?BR@Ua7%UcskSmVEwaIX;{nyvG%|3g`ovz+N+MS?|drLZQh@VF4I8;&p zC2tBFJ<8S>^IQC`Xdbf9(ie+}jV|o^fVj-pNk6048)VujRuAy=>ZyDsE;_N@Zk!|Yaqo&&YNq=4fN-%RAgSJ~v!Q|MCE@t+>?{hU4P>aS&t z*JJdNKIVJcx~HvUD!qG%qbJ2+A?u$^XHPo(G{?AIlTFTIgIbOmeYLO7J8Fohbn|t7 zsxpyo`pORj^$UIDU>9=%_U+oj9Dpn@&}mUOeryxsOEJQ-hK^Z1^r>W~oZT04t?X~qk%bOaD0kKjY_x3QyY(lr3`U%|*YU>hlvYmZ~oGr#nnddf; zw*x=V@_q+)?!+$L&K2{ejg@S;fDOm7#kFL6T?|Ft$7!Rz?PBt;pyQ+x=Ir!aB7GMh zTv$&mr?Nenwx;u`*dEJI&$3}?XKdt)ANcwun^QBi$+!KFXHPcGD~9%Hqp^6oj$IeG zWS=Se)>v_)k4+KZ9qIjWM{@=3e|Vz4qFggFtv^*Crpwp)%opg}Q2B59cOThuvPBWg z55!KR?DSxhTG~w~$Ble;Cp&E$q>T0Zrx_2l*_pjRC+|aKdTYA23$pt>^A8NSze0U> zA(ziCgxmQk`XUE;3#q>Z|D0>zvtnolUoRu$Ms_U8Zuj%;Ib@H^m&zMU#KA6Yo-SYR zXnXQMSZZ+lNy!u}8HNGPsvg2ayKR~XfeA0|R56lpc zWIJEEy@Nw|LVWhk=3L75jx^&QS#O(atmUWQ)xWzOnR?1MoXv}|eYMcWC68lpS@o)G3E8%vr0?_dcb(Wn9jOzXgRAoe_8T`*?6xAKymxD> z!+d?JyK!H+idBrubbUuVWyHd#+TK#l7*CcLTN{%avL9PkA?qc@`Gr5fVTZ@qbFKQ; z^Yhn19Cg(9Y8e9tvYXh>#jZoe-fa5@O?193-$m*!O`a!8nj?{6oA|ADI-lxW)yZ-J zyY67u4fOhuT+7sP*CfYtdY7SBs!0x@)`s6IW09r>=eHq+(V z%}(EwXW>xCIzHbZuChzZAqFqCubei0G%mcFZXQ%YTjVP|Q;h1Tvtk?UFpLiFriSfJ z%`In$H!*TB4||NW97|61jll>u$gh9(FQ@O-aqMSASlQq9rm_O^DuHH$Uat#?d)JoFJt^pZ;i@bE~%qA_$8#Bbx%Y%#|XOkhD z^I876nGO?r>Q7b7U-_>Y{fQe2@xf?yuhvcrcF)JhMaZ7fMgQqWcXh30n~{7}SNUda zG@m|~Smx#H+4IDua&dmK_XJ~t^+U?HC*zK0VnEr-^le11Le-5?Y~9In1s!YGGLH1o z=c>AXLx-;I*oU1<(J9sb1#EkOjDy*+inPUzjfKX=A=UWn)$|mb1`GYC7(E}=pTi%2 z=qe%mf|wvl`AA*sEiD^Z#`~1D*+|F!zd&p&XDpZ5UP|VA@;-8I`mOb(edz3ZGl)N7v^G7+3Lw@VY zHewygw1kX*O^ddTKyARD$n2PnUweJ!};R9zpVL^_lI|c#QovKvnts_ zs`?V|c_@;pcWi%to5a1|Lejj?!EMj@i;cv-!uDm|j`2@ue6jgI?3)zF9sNCu?!M}B+TpKr^z7jav5EIRFGVy0X4hs=`dV$2Q%t%PA9_#;!zI&|yCq|BA{r{-%%>0{g()@4q|MKQs zZOoZ=Ix5aLXNbq|__s8UlWFFFx^mf;=B3ha8SY%TNC;^Q%ms@|zdJF$CwsqXWaeMI zW;spyJ31Q$EHhdSm0t}IHmI5VavyyBTR|MapzVhzSYuQ zhv;d4r<8EFeJ!tW&g0;{qp$1TI{nI=&Vx%jUvX|)sbb=sc&Eetg(#WoTt?mnSdNF} zzr;CId?ClI-0HNfYyU0w4Ug;U8g4zdo2G0@=Z06<&SQPObE`Cy=i%C!W&D_6-zMpw zqpNeJcy978v3Ew%wX<8jyPYR>EkPe;_G5tURkdAnv#d$Jcz?QaT&kmiGHX|Cf_y4VSim?*BZ+C6FDZP#R@W7AK$_PDC2YqXH_T5-Ot# zs-hZBLUq(YP1Hhd)InXOqaNy`0Zv9kG(uxEK~prtDL56)(E=^e3a!xwZP5OR7Mq4g-dhcBveNY)I=@RMjg~eI_jZ58sKEOG#VNqUek;7@up~oQ{a+fXbzWB zLrb(mYqUXIv_pGzKu2^!XLLbVbVGOaKu`2SZ}dT5^uuZBj{z8nK{y?QF$6;~48t)3 zXJ8~oVKmOf7&t8nXJH)1V*(~(5+-8`rXmB=Fdgw)*9^?WEX>9n%!SLV;T+7zxmbYn za6T@;g;6Cnf~8o7`>-7M;{iN~hwv~~;1R6Eqj(ID;|V;8r|>jZVKtt?vv>~A;|08kHCT&v zcnRyV0WV`CHsKY#ir4Tu-oR$OiMQ}J-oX~Ui>-JM+weXe;1le`r}zhU zVK+X*Kd}d&;|qL=udo+i;~RX7@30Tw;|J`=kN62c;};yjuQ-T9_zl0~4}=u|kPY$u zojH&bxsV%qkQe!o9|e$#f+&RJP#E#YMnzB*ey$RVqXbH#6iTBE%Hjl+!-+^kc~n3} zR6=D`LA;+>4JRQ!mr?^YQ46(E2X&E-dWiQi8{lL#L?gsGW)n0;Gn|4`(Ht$%60Oi0 zZO|6+B4B%TKu4JNhtBANuIPsD=z*T-h2H3czUYV3&>sUZ5QA_!24e_@Vi<;F1kS)n zjKXM~i7^<9voH?hF#!`X36l{|Q>G#V(=Z)pV+Lko7G`4(=3*Ys!F-&H1vn4q;{sfW zg}4Y8;}Tqo%Wyfaz?HZPSK}I7i|cSbZorMW2{+>w+=|<9I~L&%+=;tzH}1i`Sd1lD zie|0iPh%BU;~6}Q=kPpUz>8RewOEIjupS%m zGB#opUcsw)4X@)3Y{r{-3vc5cY{9$OiubS$@8bh}i0$|YA7ckT!A^XNe_$7O<1_pd zd+<5Fz?b+6d+{~C!MFGh`|v$}Kzu%?4(cKu@p-h9aqREEw?IQSiqCH}Mtlz8*xxY= L9J9dx9}D~!=sFCi diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym deleted file mode 100644 index 8e5ce026..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym +++ /dev/null @@ -1,14097 +0,0 @@ -MODULE windows x86 3EB931A9CE0242ABB14FFDF4ECAA97FC1 dump_syms_regtest.pdb -FILE 1 c:\breakpad\trunk\src\tools\windows\dump_syms\testdata\dump_syms_regtest.cc -FILE 2 f:\sp\public\sdk\inc\reason.h -FILE 3 f:\sp\public\sdk\inc\wincon.h -FILE 4 f:\sp\public\sdk\inc\pshpack2.h -FILE 5 f:\sp\public\sdk\inc\mcx.h -FILE 6 f:\sp\public\sdk\inc\winuser.h -FILE 7 f:\sp\public\sdk\inc\winnls.h -FILE 8 f:\sp\public\sdk\inc\guiddef.h -FILE 9 f:\sp\public\sdk\inc\specstrings.h -FILE 10 f:\sp\public\sdk\inc\basetsd.h -FILE 11 f:\sp\public\sdk\inc\stralign.h -FILE 12 f:\sp\public\sdk\inc\tvout.h -FILE 13 f:\sp\public\sdk\inc\winsvc.h -FILE 14 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 15 f:\sp\public\sdk\inc\wingdi.h -FILE 16 f:\sp\public\sdk\inc\pshpack4.h -FILE 17 f:\sp\public\sdk\inc\poppack.h -FILE 18 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 19 f:\sp\public\sdk\inc\winnetwk.h -FILE 20 f:\sp\public\sdk\inc\imm.h -FILE 21 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 22 f:\sp\public\sdk\inc\windef.h -FILE 23 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 24 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c -FILE 25 f:\sp\public\sdk\inc\pshpack1.h -FILE 26 f:\sp\public\sdk\inc\winver.h -FILE 27 f:\sp\public\sdk\inc\windows.h -FILE 28 f:\sp\public\sdk\inc\winnt.h -FILE 29 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 30 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 31 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 32 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 33 f:\sp\public\sdk\inc\ddbanned.h -FILE 34 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 35 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 36 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 37 f:\sp\public\sdk\inc\winreg.h -FILE 38 f:\sp\public\sdk\inc\winbase.h -FILE 39 f:\sp\public\sdk\inc\winerror.h -FILE 40 f:\sp\public\sdk\inc\pshpack8.h -FILE 41 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 42 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 43 f:\sp\public\sdk\inc\reason.h -FILE 44 f:\sp\public\sdk\inc\wincon.h -FILE 45 f:\sp\public\sdk\inc\pshpack2.h -FILE 46 f:\sp\public\sdk\inc\mcx.h -FILE 47 f:\sp\public\sdk\inc\winuser.h -FILE 48 f:\sp\public\sdk\inc\winnls.h -FILE 49 f:\sp\public\sdk\inc\guiddef.h -FILE 50 f:\sp\public\sdk\inc\specstrings.h -FILE 51 f:\sp\public\sdk\inc\basetsd.h -FILE 52 f:\sp\public\sdk\inc\stralign.h -FILE 53 f:\sp\public\sdk\inc\tvout.h -FILE 54 f:\sp\public\sdk\inc\winsvc.h -FILE 55 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 56 f:\sp\public\sdk\inc\wingdi.h -FILE 57 f:\sp\public\sdk\inc\pshpack4.h -FILE 58 f:\sp\public\sdk\inc\poppack.h -FILE 59 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 60 f:\sp\public\sdk\inc\winnetwk.h -FILE 61 f:\sp\public\sdk\inc\imm.h -FILE 62 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 63 f:\sp\public\sdk\inc\windef.h -FILE 64 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 65 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\mathfcns.c -FILE 66 f:\sp\public\sdk\inc\pshpack1.h -FILE 67 f:\sp\public\sdk\inc\winver.h -FILE 68 f:\sp\public\sdk\inc\windows.h -FILE 69 f:\sp\public\sdk\inc\winnt.h -FILE 70 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 71 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 72 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 73 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 74 f:\sp\public\sdk\inc\ddbanned.h -FILE 75 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 76 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 77 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 78 f:\sp\public\sdk\inc\winreg.h -FILE 79 f:\sp\public\sdk\inc\winbase.h -FILE 80 f:\sp\public\sdk\inc\winerror.h -FILE 81 f:\sp\public\sdk\inc\pshpack8.h -FILE 82 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 83 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 84 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 85 f:\sp\public\sdk\inc\winreg.h -FILE 86 f:\sp\public\sdk\inc\winbase.h -FILE 87 f:\sp\public\sdk\inc\winerror.h -FILE 88 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 89 f:\sp\public\sdk\inc\windef.h -FILE 90 f:\sp\vctools\crt_bld\self_x86\crt\src\ctime.h -FILE 91 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 92 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 93 f:\sp\public\sdk\inc\pshpack8.h -FILE 94 f:\sp\public\sdk\inc\reason.h -FILE 95 f:\sp\public\sdk\inc\wincon.h -FILE 96 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 97 f:\sp\public\sdk\inc\pshpack2.h -FILE 98 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 99 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 100 f:\sp\public\sdk\inc\mcx.h -FILE 101 f:\sp\public\sdk\inc\winuser.h -FILE 102 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 103 f:\sp\public\sdk\inc\winnls.h -FILE 104 f:\sp\public\sdk\inc\guiddef.h -FILE 105 f:\sp\public\sdk\inc\stralign.h -FILE 106 f:\sp\public\sdk\inc\winnt.h -FILE 107 f:\sp\public\sdk\inc\specstrings.h -FILE 108 f:\sp\public\sdk\inc\basetsd.h -FILE 109 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 110 f:\sp\public\sdk\inc\tvout.h -FILE 111 f:\sp\public\sdk\inc\winsvc.h -FILE 112 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 113 f:\sp\public\sdk\inc\wingdi.h -FILE 114 f:\sp\vctools\crt_bld\self_x86\crt\src\tzset.c -FILE 115 f:\sp\public\sdk\inc\pshpack4.h -FILE 116 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 117 f:\sp\public\sdk\inc\poppack.h -FILE 118 f:\sp\public\sdk\inc\winnetwk.h -FILE 119 f:\sp\public\sdk\inc\imm.h -FILE 120 f:\sp\public\sdk\inc\ddbanned.h -FILE 121 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 122 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 123 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 124 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 125 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 126 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 127 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 128 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 129 f:\sp\public\sdk\inc\windows.h -FILE 130 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 131 f:\sp\public\sdk\inc\pshpack1.h -FILE 132 f:\sp\public\sdk\inc\winver.h -FILE 133 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 134 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 135 f:\sp\public\sdk\inc\winnt.h -FILE 136 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 137 f:\sp\public\sdk\inc\winreg.h -FILE 138 f:\sp\public\sdk\inc\winbase.h -FILE 139 f:\sp\public\sdk\inc\winerror.h -FILE 140 f:\sp\public\sdk\inc\pshpack8.h -FILE 141 f:\sp\public\sdk\inc\reason.h -FILE 142 f:\sp\public\sdk\inc\wincon.h -FILE 143 f:\sp\public\sdk\inc\pshpack2.h -FILE 144 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 145 f:\sp\public\sdk\inc\mcx.h -FILE 146 f:\sp\public\sdk\inc\winuser.h -FILE 147 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 148 f:\sp\public\sdk\inc\winnls.h -FILE 149 f:\sp\public\sdk\inc\guiddef.h -FILE 150 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 151 f:\sp\public\sdk\inc\stralign.h -FILE 152 f:\sp\public\sdk\inc\specstrings.h -FILE 153 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 154 f:\sp\public\sdk\inc\basetsd.h -FILE 155 f:\sp\public\sdk\inc\windows.h -FILE 156 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 157 f:\sp\public\sdk\inc\tvout.h -FILE 158 f:\sp\public\sdk\inc\winsvc.h -FILE 159 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 160 f:\sp\public\sdk\inc\wingdi.h -FILE 161 f:\sp\vctools\crt_bld\self_x86\crt\src\timeset.c -FILE 162 f:\sp\public\sdk\inc\pshpack4.h -FILE 163 f:\sp\public\sdk\inc\poppack.h -FILE 164 f:\sp\public\sdk\inc\winnetwk.h -FILE 165 f:\sp\public\sdk\inc\imm.h -FILE 166 f:\sp\public\sdk\inc\ddbanned.h -FILE 167 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 168 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 169 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 170 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 171 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 172 f:\sp\public\sdk\inc\windef.h -FILE 173 f:\sp\public\sdk\inc\pshpack1.h -FILE 174 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 175 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 176 f:\sp\public\sdk\inc\winver.h -FILE 177 f:\sp\public\sdk\inc\wincon.h -FILE 178 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 179 f:\sp\public\sdk\inc\imm.h -FILE 180 f:\sp\public\sdk\inc\winbase.h -FILE 181 f:\sp\public\sdk\inc\wingdi.h -FILE 182 f:\sp\public\sdk\inc\winver.h -FILE 183 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 184 f:\sp\public\sdk\inc\windows.h -FILE 185 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 186 f:\sp\public\sdk\inc\pshpack2.h -FILE 187 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 188 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 189 f:\sp\public\sdk\inc\reason.h -FILE 190 f:\sp\vctools\crt_bld\self_x86\crt\src\strftime.c -FILE 191 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 192 f:\sp\public\sdk\inc\specstrings.h -FILE 193 f:\sp\public\sdk\inc\basetsd.h -FILE 194 f:\sp\public\sdk\inc\pshpack4.h -FILE 195 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 196 f:\sp\public\sdk\inc\winnetwk.h -FILE 197 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 198 f:\sp\public\sdk\inc\stralign.h -FILE 199 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 200 f:\sp\public\sdk\inc\poppack.h -FILE 201 f:\sp\public\sdk\inc\winsvc.h -FILE 202 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 203 f:\sp\public\sdk\inc\windef.h -FILE 204 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 205 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 206 f:\sp\public\sdk\inc\winuser.h -FILE 207 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 208 f:\sp\public\sdk\inc\mcx.h -FILE 209 f:\sp\public\sdk\inc\pshpack8.h -FILE 210 f:\sp\public\sdk\inc\guiddef.h -FILE 211 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 212 f:\sp\public\sdk\inc\winnt.h -FILE 213 f:\sp\public\sdk\inc\winnls.h -FILE 214 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 215 f:\sp\public\sdk\inc\pshpack1.h -FILE 216 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 217 f:\sp\public\sdk\inc\winerror.h -FILE 218 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 219 f:\sp\public\sdk\inc\winreg.h -FILE 220 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 221 f:\sp\public\sdk\inc\ddbanned.h -FILE 222 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 223 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 224 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 225 f:\sp\public\sdk\inc\tvout.h -FILE 226 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 227 f:\sp\public\sdk\inc\poppack.h -FILE 228 f:\sp\public\sdk\inc\winnetwk.h -FILE 229 f:\sp\public\sdk\inc\imm.h -FILE 230 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 231 f:\sp\public\sdk\inc\windef.h -FILE 232 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 233 f:\sp\public\sdk\inc\pshpack1.h -FILE 234 f:\sp\public\sdk\inc\winver.h -FILE 235 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 236 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 237 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 238 f:\sp\public\sdk\inc\winnt.h -FILE 239 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 240 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 241 f:\sp\public\sdk\inc\winreg.h -FILE 242 f:\sp\vctools\crt_bld\self_x86\crt\src\days.c -FILE 243 f:\sp\public\sdk\inc\winbase.h -FILE 244 f:\sp\public\sdk\inc\winerror.h -FILE 245 f:\sp\public\sdk\inc\pshpack8.h -FILE 246 f:\sp\public\sdk\inc\reason.h -FILE 247 f:\sp\public\sdk\inc\wincon.h -FILE 248 f:\sp\public\sdk\inc\ddbanned.h -FILE 249 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 250 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 251 f:\sp\public\sdk\inc\pshpack2.h -FILE 252 f:\sp\public\sdk\inc\mcx.h -FILE 253 f:\sp\public\sdk\inc\winuser.h -FILE 254 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 255 f:\sp\public\sdk\inc\winnls.h -FILE 256 f:\sp\public\sdk\inc\guiddef.h -FILE 257 f:\sp\public\sdk\inc\windows.h -FILE 258 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 259 f:\sp\public\sdk\inc\specstrings.h -FILE 260 f:\sp\public\sdk\inc\basetsd.h -FILE 261 f:\sp\public\sdk\inc\stralign.h -FILE 262 f:\sp\public\sdk\inc\tvout.h -FILE 263 f:\sp\public\sdk\inc\winsvc.h -FILE 264 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 265 f:\sp\public\sdk\inc\wingdi.h -FILE 266 f:\sp\public\sdk\inc\pshpack4.h -FILE 267 f:\sp\public\sdk\inc\wincon.h -FILE 268 f:\sp\public\sdk\inc\imm.h -FILE 269 f:\sp\public\sdk\inc\winbase.h -FILE 270 f:\sp\public\sdk\inc\wingdi.h -FILE 271 f:\sp\public\sdk\inc\winver.h -FILE 272 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 273 f:\sp\public\sdk\inc\windows.h -FILE 274 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 275 f:\sp\public\sdk\inc\pshpack2.h -FILE 276 f:\sp\public\sdk\inc\reason.h -FILE 277 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicol.c -FILE 278 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 279 f:\sp\public\sdk\inc\specstrings.h -FILE 280 f:\sp\public\sdk\inc\basetsd.h -FILE 281 f:\sp\public\sdk\inc\pshpack4.h -FILE 282 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 283 f:\sp\public\sdk\inc\winnetwk.h -FILE 284 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 285 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 286 f:\sp\public\sdk\inc\stralign.h -FILE 287 f:\sp\public\sdk\inc\poppack.h -FILE 288 f:\sp\public\sdk\inc\winsvc.h -FILE 289 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 290 f:\sp\public\sdk\inc\windef.h -FILE 291 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 292 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 293 f:\sp\public\sdk\inc\winuser.h -FILE 294 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 295 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 296 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 297 f:\sp\public\sdk\inc\mcx.h -FILE 298 f:\sp\public\sdk\inc\pshpack8.h -FILE 299 f:\sp\public\sdk\inc\guiddef.h -FILE 300 f:\sp\public\sdk\inc\winnt.h -FILE 301 f:\sp\public\sdk\inc\winnls.h -FILE 302 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 303 f:\sp\public\sdk\inc\pshpack1.h -FILE 304 f:\sp\public\sdk\inc\winerror.h -FILE 305 f:\sp\public\sdk\inc\winreg.h -FILE 306 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 307 f:\sp\public\sdk\inc\ddbanned.h -FILE 308 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 309 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 310 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 311 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 312 f:\sp\public\sdk\inc\tvout.h -FILE 313 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 314 f:\sp\public\sdk\inc\mcx.h -FILE 315 f:\sp\public\sdk\inc\pshpack8.h -FILE 316 f:\sp\public\sdk\inc\winnt.h -FILE 317 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 318 f:\sp\public\sdk\inc\specstrings.h -FILE 319 f:\sp\public\sdk\inc\basetsd.h -FILE 320 f:\sp\public\sdk\inc\winnls.h -FILE 321 f:\sp\public\sdk\inc\pshpack1.h -FILE 322 f:\sp\public\sdk\inc\winerror.h -FILE 323 f:\sp\public\sdk\inc\winreg.h -FILE 324 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicmp.c -FILE 325 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 326 f:\sp\public\sdk\inc\tvout.h -FILE 327 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 328 f:\sp\public\sdk\inc\wincon.h -FILE 329 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 330 f:\sp\public\sdk\inc\imm.h -FILE 331 f:\sp\public\sdk\inc\guiddef.h -FILE 332 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 333 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 334 f:\sp\public\sdk\inc\winbase.h -FILE 335 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 336 f:\sp\public\sdk\inc\wingdi.h -FILE 337 f:\sp\public\sdk\inc\windows.h -FILE 338 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 339 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 340 f:\sp\public\sdk\inc\winver.h -FILE 341 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 342 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 343 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 344 f:\sp\public\sdk\inc\pshpack2.h -FILE 345 f:\sp\public\sdk\inc\reason.h -FILE 346 f:\sp\public\sdk\inc\pshpack4.h -FILE 347 f:\sp\public\sdk\inc\winnetwk.h -FILE 348 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 349 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 350 f:\sp\public\sdk\inc\stralign.h -FILE 351 f:\sp\public\sdk\inc\windef.h -FILE 352 f:\sp\public\sdk\inc\poppack.h -FILE 353 f:\sp\public\sdk\inc\winsvc.h -FILE 354 f:\sp\public\sdk\inc\ddbanned.h -FILE 355 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 356 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 357 f:\sp\public\sdk\inc\winuser.h -FILE 358 f:\sp\public\sdk\inc\mcx.h -FILE 359 f:\sp\public\sdk\inc\pshpack8.h -FILE 360 f:\sp\public\sdk\inc\winnt.h -FILE 361 f:\sp\public\sdk\inc\specstrings.h -FILE 362 f:\sp\public\sdk\inc\basetsd.h -FILE 363 f:\sp\public\sdk\inc\winnls.h -FILE 364 f:\sp\public\sdk\inc\pshpack1.h -FILE 365 f:\sp\public\sdk\inc\winerror.h -FILE 366 f:\sp\public\sdk\inc\winreg.h -FILE 367 f:\sp\vctools\crt_bld\self_x86\crt\src\stricmp.c -FILE 368 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 369 f:\sp\public\sdk\inc\tvout.h -FILE 370 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 371 f:\sp\public\sdk\inc\wincon.h -FILE 372 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 373 f:\sp\public\sdk\inc\imm.h -FILE 374 f:\sp\public\sdk\inc\guiddef.h -FILE 375 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 376 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 377 f:\sp\public\sdk\inc\winbase.h -FILE 378 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 379 f:\sp\public\sdk\inc\wingdi.h -FILE 380 f:\sp\public\sdk\inc\windows.h -FILE 381 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 382 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 383 f:\sp\public\sdk\inc\winver.h -FILE 384 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 385 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 386 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 387 f:\sp\public\sdk\inc\pshpack2.h -FILE 388 f:\sp\public\sdk\inc\reason.h -FILE 389 f:\sp\public\sdk\inc\pshpack4.h -FILE 390 f:\sp\public\sdk\inc\winnetwk.h -FILE 391 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 392 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 393 f:\sp\public\sdk\inc\stralign.h -FILE 394 f:\sp\public\sdk\inc\windef.h -FILE 395 f:\sp\public\sdk\inc\poppack.h -FILE 396 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 397 f:\sp\public\sdk\inc\winsvc.h -FILE 398 f:\sp\public\sdk\inc\ddbanned.h -FILE 399 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 400 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 401 f:\sp\public\sdk\inc\winuser.h -FILE 402 f:\sp\public\sdk\inc\winnt.h -FILE 403 f:\sp\public\sdk\inc\pshpack4.h -FILE 404 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 405 f:\sp\public\sdk\inc\poppack.h -FILE 406 f:\sp\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl -FILE 407 f:\sp\public\sdk\inc\winnetwk.h -FILE 408 f:\sp\public\sdk\inc\imm.h -FILE 409 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 410 f:\sp\public\sdk\inc\pshpack1.h -FILE 411 f:\sp\public\sdk\inc\winver.h -FILE 412 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 413 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 414 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 415 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 416 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 417 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 418 f:\sp\public\sdk\inc\guiddef.h -FILE 419 f:\sp\public\sdk\inc\windows.h -FILE 420 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 421 f:\sp\public\sdk\inc\specstrings.h -FILE 422 f:\sp\public\sdk\inc\basetsd.h -FILE 423 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 424 f:\sp\public\sdk\inc\winreg.h -FILE 425 f:\sp\vctools\crt_bld\self_x86\crt\src\strncpy_s.c -FILE 426 f:\sp\public\sdk\inc\winbase.h -FILE 427 f:\sp\public\sdk\inc\winerror.h -FILE 428 f:\sp\public\sdk\inc\pshpack8.h -FILE 429 f:\sp\public\sdk\inc\reason.h -FILE 430 f:\sp\public\sdk\inc\wincon.h -FILE 431 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 432 f:\sp\public\sdk\inc\ddbanned.h -FILE 433 f:\sp\public\sdk\inc\windef.h -FILE 434 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 435 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 436 f:\sp\public\sdk\inc\pshpack2.h -FILE 437 f:\sp\public\sdk\inc\mcx.h -FILE 438 f:\sp\public\sdk\inc\winuser.h -FILE 439 f:\sp\public\sdk\inc\winnls.h -FILE 440 f:\sp\public\sdk\inc\stralign.h -FILE 441 f:\sp\public\sdk\inc\tvout.h -FILE 442 f:\sp\public\sdk\inc\winsvc.h -FILE 443 f:\sp\public\sdk\inc\wingdi.h -FILE 444 f:\sp\public\sdk\inc\winnt.h -FILE 445 f:\sp\public\sdk\inc\pshpack4.h -FILE 446 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 447 f:\sp\public\sdk\inc\poppack.h -FILE 448 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl -FILE 449 f:\sp\public\sdk\inc\winnetwk.h -FILE 450 f:\sp\public\sdk\inc\imm.h -FILE 451 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 452 f:\sp\public\sdk\inc\pshpack1.h -FILE 453 f:\sp\public\sdk\inc\winver.h -FILE 454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 455 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 456 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 457 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 458 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 460 f:\sp\public\sdk\inc\guiddef.h -FILE 461 f:\sp\public\sdk\inc\windows.h -FILE 462 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 463 f:\sp\public\sdk\inc\specstrings.h -FILE 464 f:\sp\public\sdk\inc\basetsd.h -FILE 465 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 466 f:\sp\public\sdk\inc\winreg.h -FILE 467 f:\sp\vctools\crt_bld\self_x86\crt\src\strcpy_s.c -FILE 468 f:\sp\public\sdk\inc\winbase.h -FILE 469 f:\sp\public\sdk\inc\winerror.h -FILE 470 f:\sp\public\sdk\inc\pshpack8.h -FILE 471 f:\sp\public\sdk\inc\reason.h -FILE 472 f:\sp\public\sdk\inc\wincon.h -FILE 473 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 474 f:\sp\public\sdk\inc\ddbanned.h -FILE 475 f:\sp\public\sdk\inc\windef.h -FILE 476 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 477 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 478 f:\sp\public\sdk\inc\pshpack2.h -FILE 479 f:\sp\public\sdk\inc\mcx.h -FILE 480 f:\sp\public\sdk\inc\winuser.h -FILE 481 f:\sp\public\sdk\inc\winnls.h -FILE 482 f:\sp\public\sdk\inc\stralign.h -FILE 483 f:\sp\public\sdk\inc\tvout.h -FILE 484 f:\sp\public\sdk\inc\winsvc.h -FILE 485 f:\sp\public\sdk\inc\wingdi.h -FILE 486 f:\sp\public\sdk\inc\winnt.h -FILE 487 f:\sp\public\sdk\inc\pshpack4.h -FILE 488 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 489 f:\sp\public\sdk\inc\poppack.h -FILE 490 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl -FILE 491 f:\sp\public\sdk\inc\winnetwk.h -FILE 492 f:\sp\public\sdk\inc\imm.h -FILE 493 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 494 f:\sp\public\sdk\inc\pshpack1.h -FILE 495 f:\sp\public\sdk\inc\winver.h -FILE 496 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 497 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 498 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 499 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 500 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 501 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 502 f:\sp\public\sdk\inc\guiddef.h -FILE 503 f:\sp\public\sdk\inc\windows.h -FILE 504 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 505 f:\sp\public\sdk\inc\specstrings.h -FILE 506 f:\sp\public\sdk\inc\basetsd.h -FILE 507 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 508 f:\sp\public\sdk\inc\winreg.h -FILE 509 f:\sp\vctools\crt_bld\self_x86\crt\src\strcat_s.c -FILE 510 f:\sp\public\sdk\inc\winbase.h -FILE 511 f:\sp\public\sdk\inc\winerror.h -FILE 512 f:\sp\public\sdk\inc\pshpack8.h -FILE 513 f:\sp\public\sdk\inc\reason.h -FILE 514 f:\sp\public\sdk\inc\wincon.h -FILE 515 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 516 f:\sp\public\sdk\inc\ddbanned.h -FILE 517 f:\sp\public\sdk\inc\windef.h -FILE 518 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 519 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 520 f:\sp\public\sdk\inc\pshpack2.h -FILE 521 f:\sp\public\sdk\inc\mcx.h -FILE 522 f:\sp\public\sdk\inc\winuser.h -FILE 523 f:\sp\public\sdk\inc\winnls.h -FILE 524 f:\sp\public\sdk\inc\stralign.h -FILE 525 f:\sp\public\sdk\inc\tvout.h -FILE 526 f:\sp\public\sdk\inc\winsvc.h -FILE 527 f:\sp\public\sdk\inc\wingdi.h -FILE 528 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 529 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 530 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 531 f:\sp\vctools\crt_bld\self_x86\crt\src\strlen_s.c -FILE 532 f:\sp\public\sdk\inc\ddbanned.h -FILE 533 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 534 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 535 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strpbrk.asm -FILE 536 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM -FILE 537 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 538 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\_strnicm.asm -FILE 539 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 540 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 541 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 542 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 543 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c -FILE 544 f:\sp\public\sdk\inc\ddbanned.h -FILE 545 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 546 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 547 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strlen.asm -FILE 548 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 549 f:\sp\public\sdk\inc\pshpack2.h -FILE 550 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 551 f:\sp\public\sdk\inc\mcx.h -FILE 552 f:\sp\public\sdk\inc\winuser.h -FILE 553 f:\sp\public\sdk\inc\winnls.h -FILE 554 f:\sp\public\sdk\inc\stralign.h -FILE 555 f:\sp\public\sdk\inc\tvout.h -FILE 556 f:\sp\public\sdk\inc\winsvc.h -FILE 557 f:\sp\public\sdk\inc\wingdi.h -FILE 558 f:\sp\public\sdk\inc\winnt.h -FILE 559 f:\sp\public\sdk\inc\pshpack4.h -FILE 560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 561 f:\sp\public\sdk\inc\poppack.h -FILE 562 f:\sp\public\sdk\inc\winnetwk.h -FILE 563 f:\sp\public\sdk\inc\imm.h -FILE 564 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 565 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 566 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 567 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 568 f:\sp\vctools\crt_bld\self_x86\crt\src\strdup.c -FILE 569 f:\sp\public\sdk\inc\pshpack1.h -FILE 570 f:\sp\public\sdk\inc\winver.h -FILE 571 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 572 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 573 f:\sp\public\sdk\inc\guiddef.h -FILE 574 f:\sp\public\sdk\inc\windows.h -FILE 575 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 576 f:\sp\public\sdk\inc\specstrings.h -FILE 577 f:\sp\public\sdk\inc\basetsd.h -FILE 578 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 579 f:\sp\public\sdk\inc\winreg.h -FILE 580 f:\sp\public\sdk\inc\ddbanned.h -FILE 581 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 582 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 583 f:\sp\public\sdk\inc\winbase.h -FILE 584 f:\sp\public\sdk\inc\winerror.h -FILE 585 f:\sp\public\sdk\inc\pshpack8.h -FILE 586 f:\sp\public\sdk\inc\reason.h -FILE 587 f:\sp\public\sdk\inc\wincon.h -FILE 588 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 589 f:\sp\public\sdk\inc\windef.h -FILE 590 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcspn.asm -FILE 591 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM -FILE 592 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 593 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcmp.asm -FILE 594 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 595 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strchr.asm -FILE 596 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 597 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c -FILE 598 f:\sp\public\sdk\inc\ddbanned.h -FILE 599 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 600 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 601 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memset.asm -FILE 602 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 603 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memmove.asm -FILE 604 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\MEMCPY.ASM -FILE 605 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 606 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c -FILE 607 f:\sp\public\sdk\inc\ddbanned.h -FILE 608 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 609 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 610 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c -FILE 611 f:\sp\public\sdk\inc\ddbanned.h -FILE 612 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 613 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 614 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memcpy.asm -FILE 615 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 616 f:\sp\public\sdk\inc\pshpack2.h -FILE 617 f:\sp\public\sdk\inc\winreg.h -FILE 618 f:\sp\public\sdk\inc\guiddef.h -FILE 619 f:\sp\public\sdk\inc\windows.h -FILE 620 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 621 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 622 f:\sp\public\sdk\inc\specstrings.h -FILE 623 f:\sp\public\sdk\inc\basetsd.h -FILE 624 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 625 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 626 f:\sp\public\sdk\inc\pshpack4.h -FILE 627 f:\sp\public\sdk\inc\reason.h -FILE 628 f:\sp\public\sdk\inc\wincon.h -FILE 629 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 630 f:\sp\public\sdk\inc\poppack.h -FILE 631 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 632 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 633 f:\sp\public\sdk\inc\mcx.h -FILE 634 f:\sp\public\sdk\inc\winuser.h -FILE 635 f:\sp\public\sdk\inc\winnls.h -FILE 636 f:\sp\public\sdk\inc\stralign.h -FILE 637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 638 f:\sp\public\sdk\inc\windef.h -FILE 639 f:\sp\public\sdk\inc\tvout.h -FILE 640 f:\sp\public\sdk\inc\winsvc.h -FILE 641 f:\sp\vctools\crt_bld\self_x86\crt\src\tidtable.c -FILE 642 f:\sp\public\sdk\inc\wingdi.h -FILE 643 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 644 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 645 f:\sp\public\sdk\inc\winnt.h -FILE 646 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 647 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 648 f:\sp\public\sdk\inc\winnetwk.h -FILE 649 f:\sp\public\sdk\inc\imm.h -FILE 650 f:\sp\public\sdk\inc\ddbanned.h -FILE 651 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 652 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 653 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 654 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 655 f:\sp\public\sdk\inc\winbase.h -FILE 656 f:\sp\public\sdk\inc\winerror.h -FILE 657 f:\sp\public\sdk\inc\pshpack1.h -FILE 658 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 659 f:\sp\vctools\crt_bld\self_x86\crt\src\memory.h -FILE 660 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 661 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 662 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 663 f:\sp\public\sdk\inc\pshpack8.h -FILE 664 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 665 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 666 f:\sp\public\sdk\inc\winver.h -FILE 667 f:\sp\public\sdk\inc\pshpack4.h -FILE 668 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 669 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 670 f:\sp\public\sdk\inc\poppack.h -FILE 671 f:\sp\public\sdk\inc\winnt.h -FILE 672 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 673 f:\sp\public\sdk\inc\winnetwk.h -FILE 674 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 675 f:\sp\public\sdk\inc\imm.h -FILE 676 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 677 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 678 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 679 f:\sp\public\sdk\inc\pshpack1.h -FILE 680 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 681 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 682 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 683 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 684 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 685 f:\sp\public\sdk\inc\winver.h -FILE 686 f:\sp\public\sdk\inc\guiddef.h -FILE 687 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 688 f:\sp\public\sdk\inc\specstrings.h -FILE 689 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 690 f:\sp\public\sdk\inc\basetsd.h -FILE 691 f:\sp\public\sdk\inc\windows.h -FILE 692 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 693 f:\sp\public\sdk\inc\winreg.h -FILE 694 f:\sp\vctools\crt_bld\self_x86\crt\src\stdenvp.c -FILE 695 f:\sp\public\sdk\inc\winbase.h -FILE 696 f:\sp\public\sdk\inc\winerror.h -FILE 697 f:\sp\public\sdk\inc\pshpack8.h -FILE 698 f:\sp\public\sdk\inc\reason.h -FILE 699 f:\sp\public\sdk\inc\ddbanned.h -FILE 700 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 701 f:\sp\public\sdk\inc\wincon.h -FILE 702 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 703 f:\sp\public\sdk\inc\pshpack2.h -FILE 704 f:\sp\public\sdk\inc\mcx.h -FILE 705 f:\sp\public\sdk\inc\winuser.h -FILE 706 f:\sp\public\sdk\inc\winnls.h -FILE 707 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 708 f:\sp\public\sdk\inc\windef.h -FILE 709 f:\sp\public\sdk\inc\stralign.h -FILE 710 f:\sp\public\sdk\inc\tvout.h -FILE 711 f:\sp\public\sdk\inc\winsvc.h -FILE 712 f:\sp\public\sdk\inc\wingdi.h -FILE 713 f:\sp\public\sdk\inc\poppack.h -FILE 714 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 715 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 716 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 717 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 718 f:\sp\public\sdk\inc\winnetwk.h -FILE 719 f:\sp\public\sdk\inc\imm.h -FILE 720 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 721 f:\sp\public\sdk\inc\windef.h -FILE 722 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 723 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 724 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 725 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 726 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 727 f:\sp\public\sdk\inc\pshpack1.h -FILE 728 f:\sp\public\sdk\inc\winver.h -FILE 729 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 730 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 731 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 732 f:\sp\public\sdk\inc\winnt.h -FILE 733 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 734 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 735 f:\sp\public\sdk\inc\winreg.h -FILE 736 f:\sp\vctools\crt_bld\self_x86\crt\src\stdargv.c -FILE 737 f:\sp\public\sdk\inc\winbase.h -FILE 738 f:\sp\public\sdk\inc\winerror.h -FILE 739 f:\sp\public\sdk\inc\pshpack8.h -FILE 740 f:\sp\public\sdk\inc\reason.h -FILE 741 f:\sp\public\sdk\inc\wincon.h -FILE 742 f:\sp\public\sdk\inc\ddbanned.h -FILE 743 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 744 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 745 f:\sp\public\sdk\inc\pshpack2.h -FILE 746 f:\sp\public\sdk\inc\mcx.h -FILE 747 f:\sp\public\sdk\inc\winuser.h -FILE 748 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 749 f:\sp\public\sdk\inc\winnls.h -FILE 750 f:\sp\public\sdk\inc\guiddef.h -FILE 751 f:\sp\public\sdk\inc\windows.h -FILE 752 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 753 f:\sp\public\sdk\inc\specstrings.h -FILE 754 f:\sp\public\sdk\inc\basetsd.h -FILE 755 f:\sp\public\sdk\inc\stralign.h -FILE 756 f:\sp\public\sdk\inc\tvout.h -FILE 757 f:\sp\public\sdk\inc\winsvc.h -FILE 758 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 759 f:\sp\public\sdk\inc\wingdi.h -FILE 760 f:\sp\public\sdk\inc\pshpack4.h -FILE 761 f:\sp\public\sdk\inc\reason.h -FILE 762 f:\sp\public\sdk\inc\wincon.h -FILE 763 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 764 f:\sp\public\sdk\inc\poppack.h -FILE 765 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 766 f:\sp\public\sdk\inc\mcx.h -FILE 767 f:\sp\public\sdk\inc\winuser.h -FILE 768 f:\sp\public\sdk\inc\winnls.h -FILE 769 f:\sp\public\sdk\inc\stralign.h -FILE 770 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 771 f:\sp\public\sdk\inc\windef.h -FILE 772 f:\sp\public\sdk\inc\tvout.h -FILE 773 f:\sp\public\sdk\inc\winsvc.h -FILE 774 f:\sp\public\sdk\inc\wingdi.h -FILE 775 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 776 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 777 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 778 f:\sp\public\sdk\inc\winnt.h -FILE 779 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 780 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 781 f:\sp\public\sdk\inc\winnetwk.h -FILE 782 f:\sp\public\sdk\inc\imm.h -FILE 783 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 784 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 785 f:\sp\vctools\crt_bld\self_x86\crt\src\mlock.c -FILE 786 f:\sp\public\sdk\inc\winbase.h -FILE 787 f:\sp\public\sdk\inc\winerror.h -FILE 788 f:\sp\public\sdk\inc\pshpack1.h -FILE 789 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 790 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 791 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 792 f:\sp\public\sdk\inc\pshpack8.h -FILE 793 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 794 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 795 f:\sp\public\sdk\inc\winver.h -FILE 796 f:\sp\public\sdk\inc\ddbanned.h -FILE 797 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 798 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 799 f:\sp\public\sdk\inc\pshpack2.h -FILE 800 f:\sp\public\sdk\inc\winreg.h -FILE 801 f:\sp\public\sdk\inc\guiddef.h -FILE 802 f:\sp\public\sdk\inc\windows.h -FILE 803 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 804 f:\sp\public\sdk\inc\specstrings.h -FILE 805 f:\sp\public\sdk\inc\basetsd.h -FILE 806 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 807 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 808 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 809 f:\sp\public\sdk\inc\pshpack4.h -FILE 810 f:\sp\public\sdk\inc\poppack.h -FILE 811 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 812 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 813 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 814 f:\sp\public\sdk\inc\winnetwk.h -FILE 815 f:\sp\public\sdk\inc\imm.h -FILE 816 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 817 f:\sp\public\sdk\inc\windef.h -FILE 818 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 819 f:\sp\public\sdk\inc\pshpack1.h -FILE 820 f:\sp\public\sdk\inc\winver.h -FILE 821 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 822 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 823 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 824 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 825 f:\sp\public\sdk\inc\winnt.h -FILE 826 f:\sp\vctools\crt_bld\self_x86\crt\src\cmsgs.h -FILE 827 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 828 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 829 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 830 f:\sp\public\sdk\inc\winreg.h -FILE 831 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 832 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0msg.c -FILE 833 f:\sp\public\sdk\inc\winbase.h -FILE 834 f:\sp\public\sdk\inc\winerror.h -FILE 835 f:\sp\public\sdk\inc\pshpack8.h -FILE 836 f:\sp\public\sdk\inc\reason.h -FILE 837 f:\sp\public\sdk\inc\wincon.h -FILE 838 f:\sp\public\sdk\inc\ddbanned.h -FILE 839 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 840 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 841 f:\sp\public\sdk\inc\pshpack2.h -FILE 842 f:\sp\public\sdk\inc\mcx.h -FILE 843 f:\sp\public\sdk\inc\winuser.h -FILE 844 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 845 f:\sp\public\sdk\inc\winnls.h -FILE 846 f:\sp\public\sdk\inc\guiddef.h -FILE 847 f:\sp\public\sdk\inc\windows.h -FILE 848 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 849 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 850 f:\sp\public\sdk\inc\specstrings.h -FILE 851 f:\sp\public\sdk\inc\basetsd.h -FILE 852 f:\sp\public\sdk\inc\stralign.h -FILE 853 f:\sp\public\sdk\inc\tvout.h -FILE 854 f:\sp\public\sdk\inc\winsvc.h -FILE 855 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 856 f:\sp\public\sdk\inc\wingdi.h -FILE 857 f:\sp\public\sdk\inc\pshpack4.h -FILE 858 f:\sp\public\sdk\inc\pshpack1.h -FILE 859 f:\sp\public\sdk\inc\winver.h -FILE 860 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 861 f:\sp\public\sdk\inc\winnt.h -FILE 862 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 863 f:\sp\public\sdk\inc\winreg.h -FILE 864 f:\sp\public\sdk\inc\winbase.h -FILE 865 f:\sp\public\sdk\inc\winerror.h -FILE 866 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 867 f:\sp\public\sdk\inc\pshpack8.h -FILE 868 f:\sp\public\sdk\inc\reason.h -FILE 869 f:\sp\public\sdk\inc\wincon.h -FILE 870 f:\sp\public\sdk\inc\pshpack2.h -FILE 871 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0init.c -FILE 872 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 873 f:\sp\public\sdk\inc\mcx.h -FILE 874 f:\sp\public\sdk\inc\winuser.h -FILE 875 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 876 f:\sp\public\sdk\inc\winnls.h -FILE 877 f:\sp\public\sdk\inc\guiddef.h -FILE 878 f:\sp\public\sdk\inc\windows.h -FILE 879 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 880 f:\sp\public\sdk\inc\specstrings.h -FILE 881 f:\sp\public\sdk\inc\basetsd.h -FILE 882 f:\sp\public\sdk\inc\stralign.h -FILE 883 f:\sp\public\sdk\inc\tvout.h -FILE 884 f:\sp\public\sdk\inc\winsvc.h -FILE 885 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 886 f:\sp\public\sdk\inc\wingdi.h -FILE 887 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 888 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 889 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 890 f:\sp\public\sdk\inc\pshpack4.h -FILE 891 f:\sp\public\sdk\inc\ddbanned.h -FILE 892 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 893 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 894 f:\sp\public\sdk\inc\poppack.h -FILE 895 f:\sp\public\sdk\inc\winnetwk.h -FILE 896 f:\sp\public\sdk\inc\imm.h -FILE 897 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 898 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 899 f:\sp\public\sdk\inc\windef.h -FILE 900 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 901 f:\sp\public\sdk\inc\poppack.h -FILE 902 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 903 f:\sp\public\sdk\inc\winnetwk.h -FILE 904 f:\sp\public\sdk\inc\imm.h -FILE 905 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 906 f:\sp\public\sdk\inc\windef.h -FILE 907 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 908 f:\sp\public\sdk\inc\pshpack1.h -FILE 909 f:\sp\public\sdk\inc\winver.h -FILE 910 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 911 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 912 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 913 f:\sp\public\sdk\inc\winnt.h -FILE 914 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 915 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 916 f:\sp\public\sdk\inc\winreg.h -FILE 917 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0fp.c -FILE 918 f:\sp\public\sdk\inc\winbase.h -FILE 919 f:\sp\public\sdk\inc\winerror.h -FILE 920 f:\sp\public\sdk\inc\pshpack8.h -FILE 921 f:\sp\public\sdk\inc\reason.h -FILE 922 f:\sp\public\sdk\inc\wincon.h -FILE 923 f:\sp\public\sdk\inc\ddbanned.h -FILE 924 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 925 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 926 f:\sp\public\sdk\inc\pshpack2.h -FILE 927 f:\sp\public\sdk\inc\mcx.h -FILE 928 f:\sp\public\sdk\inc\winuser.h -FILE 929 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 930 f:\sp\public\sdk\inc\winnls.h -FILE 931 f:\sp\public\sdk\inc\guiddef.h -FILE 932 f:\sp\public\sdk\inc\windows.h -FILE 933 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 934 f:\sp\public\sdk\inc\specstrings.h -FILE 935 f:\sp\public\sdk\inc\basetsd.h -FILE 936 f:\sp\public\sdk\inc\stralign.h -FILE 937 f:\sp\public\sdk\inc\tvout.h -FILE 938 f:\sp\public\sdk\inc\winsvc.h -FILE 939 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 940 f:\sp\public\sdk\inc\wingdi.h -FILE 941 f:\sp\public\sdk\inc\pshpack4.h -FILE 942 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 943 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 944 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 945 f:\sp\public\sdk\inc\pshpack4.h -FILE 946 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 947 f:\sp\public\sdk\inc\reason.h -FILE 948 f:\sp\public\sdk\inc\wincon.h -FILE 949 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 950 f:\sp\public\sdk\inc\poppack.h -FILE 951 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 952 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 953 f:\sp\public\sdk\inc\mcx.h -FILE 954 f:\sp\public\sdk\inc\winuser.h -FILE 955 f:\sp\public\sdk\inc\winnls.h -FILE 956 f:\sp\public\sdk\inc\stralign.h -FILE 957 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 958 f:\sp\public\sdk\inc\windef.h -FILE 959 f:\sp\public\sdk\inc\tvout.h -FILE 960 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 961 f:\sp\public\sdk\inc\winsvc.h -FILE 962 f:\sp\public\sdk\inc\wingdi.h -FILE 963 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 964 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 965 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 966 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 967 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 968 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 969 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 970 f:\sp\public\sdk\inc\winnt.h -FILE 971 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 972 f:\sp\public\sdk\inc\winnetwk.h -FILE 973 f:\sp\public\sdk\inc\imm.h -FILE 974 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0dat.c -FILE 975 f:\sp\public\sdk\inc\winbase.h -FILE 976 f:\sp\public\sdk\inc\winerror.h -FILE 977 f:\sp\public\sdk\inc\pshpack1.h -FILE 978 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 979 f:\sp\public\sdk\inc\pshpack8.h -FILE 980 f:\sp\public\sdk\inc\winver.h -FILE 981 f:\sp\public\sdk\inc\ddbanned.h -FILE 982 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 983 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 984 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 985 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 986 f:\sp\public\sdk\inc\pshpack2.h -FILE 987 f:\sp\public\sdk\inc\winreg.h -FILE 988 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 989 f:\sp\public\sdk\inc\guiddef.h -FILE 990 f:\sp\public\sdk\inc\windows.h -FILE 991 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 992 f:\sp\public\sdk\inc\specstrings.h -FILE 993 f:\sp\public\sdk\inc\basetsd.h -FILE 994 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 995 f:\sp\public\sdk\inc\tvout.h -FILE 996 f:\sp\public\sdk\inc\winsvc.h -FILE 997 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 998 f:\sp\public\sdk\inc\wingdi.h -FILE 999 f:\sp\public\sdk\inc\pshpack4.h -FILE 1000 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1001 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1002 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 1003 f:\sp\public\sdk\inc\poppack.h -FILE 1004 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 1005 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1006 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 1007 f:\sp\public\sdk\inc\winnetwk.h -FILE 1008 f:\sp\public\sdk\inc\imm.h -FILE 1009 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1010 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1011 f:\sp\public\sdk\inc\windef.h -FILE 1012 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1013 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1014 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 1015 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1016 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1017 f:\sp\public\sdk\inc\pshpack1.h -FILE 1018 f:\sp\public\sdk\inc\winver.h -FILE 1019 f:\sp\public\sdk\inc\winnt.h -FILE 1020 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1021 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1022 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c -FILE 1023 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1024 f:\sp\public\sdk\inc\winreg.h -FILE 1025 f:\sp\public\sdk\inc\winbase.h -FILE 1026 f:\sp\public\sdk\inc\winerror.h -FILE 1027 f:\sp\public\sdk\inc\ddbanned.h -FILE 1028 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1029 f:\sp\public\sdk\inc\pshpack8.h -FILE 1030 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1031 f:\sp\public\sdk\inc\reason.h -FILE 1032 f:\sp\public\sdk\inc\wincon.h -FILE 1033 f:\sp\public\sdk\inc\pshpack2.h -FILE 1034 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1035 f:\sp\public\sdk\inc\mcx.h -FILE 1036 f:\sp\public\sdk\inc\winuser.h -FILE 1037 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1038 f:\sp\public\sdk\inc\winnls.h -FILE 1039 f:\sp\public\sdk\inc\guiddef.h -FILE 1040 f:\sp\public\sdk\inc\windows.h -FILE 1041 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1042 f:\sp\public\sdk\inc\specstrings.h -FILE 1043 f:\sp\public\sdk\inc\basetsd.h -FILE 1044 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 1045 f:\sp\public\sdk\inc\stralign.h -FILE 1046 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\alloca16.asm -FILE 1047 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 1048 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\chkstk.asm -FILE 1049 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 1050 f:\sp\public\sdk\inc\wincon.h -FILE 1051 f:\sp\public\sdk\inc\imm.h -FILE 1052 f:\sp\public\sdk\inc\winbase.h -FILE 1053 f:\sp\public\sdk\inc\wingdi.h -FILE 1054 f:\sp\public\sdk\inc\winver.h -FILE 1055 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 1056 f:\sp\public\sdk\inc\windows.h -FILE 1057 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 1058 f:\sp\public\sdk\inc\pshpack2.h -FILE 1059 f:\sp\public\sdk\inc\reason.h -FILE 1060 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp -FILE 1061 f:\sp\public\sdk\inc\specstrings.h -FILE 1062 f:\sp\public\sdk\inc\basetsd.h -FILE 1063 f:\sp\public\sdk\inc\pshpack4.h -FILE 1064 f:\sp\public\sdk\inc\winnetwk.h -FILE 1065 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 1066 f:\sp\public\sdk\inc\stralign.h -FILE 1067 f:\sp\public\sdk\inc\poppack.h -FILE 1068 f:\sp\public\sdk\inc\winsvc.h -FILE 1069 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 1070 f:\sp\public\sdk\inc\windef.h -FILE 1071 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 1072 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 1073 f:\sp\public\sdk\inc\winuser.h -FILE 1074 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 1075 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 1076 f:\sp\public\sdk\inc\mcx.h -FILE 1077 f:\sp\public\sdk\inc\pshpack8.h -FILE 1078 f:\sp\public\sdk\inc\guiddef.h -FILE 1079 f:\sp\public\sdk\inc\winnt.h -FILE 1080 f:\sp\public\sdk\inc\winnls.h -FILE 1081 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 1082 f:\sp\public\sdk\inc\pshpack1.h -FILE 1083 f:\sp\public\sdk\inc\winerror.h -FILE 1084 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h -FILE 1085 f:\sp\public\sdk\inc\winreg.h -FILE 1086 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 1087 f:\sp\public\sdk\inc\ddbanned.h -FILE 1088 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 1089 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 1090 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h -FILE 1091 f:\sp\public\sdk\inc\tvout.h -FILE 1092 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 1093 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 1094 f:\sp\public\sdk\inc\poppack.h -FILE 1095 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1096 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1097 f:\sp\public\sdk\inc\winnetwk.h -FILE 1098 f:\sp\public\sdk\inc\imm.h -FILE 1099 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1100 f:\sp\public\sdk\inc\windef.h -FILE 1101 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1102 f:\sp\public\sdk\inc\pshpack1.h -FILE 1103 f:\sp\public\sdk\inc\winver.h -FILE 1104 f:\sp\public\sdk\inc\windows.h -FILE 1105 f:\sp\public\sdk\inc\winnt.h -FILE 1106 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1107 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1108 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1109 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1110 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1111 f:\sp\public\sdk\inc\winreg.h -FILE 1112 f:\sp\public\sdk\inc\winbase.h -FILE 1113 f:\sp\vctools\crt_bld\self_x86\crt\src\wtombenv.c -FILE 1114 f:\sp\public\sdk\inc\winerror.h -FILE 1115 f:\sp\public\sdk\inc\pshpack8.h -FILE 1116 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1117 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1118 f:\sp\public\sdk\inc\reason.h -FILE 1119 f:\sp\public\sdk\inc\wincon.h -FILE 1120 f:\sp\public\sdk\inc\ddbanned.h -FILE 1121 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1122 f:\sp\public\sdk\inc\pshpack2.h -FILE 1123 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1124 f:\sp\public\sdk\inc\mcx.h -FILE 1125 f:\sp\public\sdk\inc\winuser.h -FILE 1126 f:\sp\public\sdk\inc\winnls.h -FILE 1127 f:\sp\public\sdk\inc\guiddef.h -FILE 1128 f:\sp\public\sdk\inc\specstrings.h -FILE 1129 f:\sp\public\sdk\inc\basetsd.h -FILE 1130 f:\sp\public\sdk\inc\stralign.h -FILE 1131 f:\sp\public\sdk\inc\tvout.h -FILE 1132 f:\sp\public\sdk\inc\winsvc.h -FILE 1133 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1134 f:\sp\public\sdk\inc\wingdi.h -FILE 1135 f:\sp\public\sdk\inc\pshpack4.h -FILE 1136 f:\sp\public\sdk\inc\winnt.h -FILE 1137 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1138 f:\sp\public\sdk\inc\winreg.h -FILE 1139 f:\sp\public\sdk\inc\winbase.h -FILE 1140 f:\sp\public\sdk\inc\winerror.h -FILE 1141 f:\sp\public\sdk\inc\pshpack8.h -FILE 1142 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1143 f:\sp\public\sdk\inc\reason.h -FILE 1144 f:\sp\public\sdk\inc\wincon.h -FILE 1145 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h -FILE 1146 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1147 f:\sp\public\sdk\inc\pshpack2.h -FILE 1148 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1149 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1150 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1151 f:\sp\public\sdk\inc\mcx.h -FILE 1152 f:\sp\public\sdk\inc\winuser.h -FILE 1153 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1154 f:\sp\public\sdk\inc\winnls.h -FILE 1155 f:\sp\public\sdk\inc\guiddef.h -FILE 1156 f:\sp\public\sdk\inc\windows.h -FILE 1157 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1158 f:\sp\public\sdk\inc\specstrings.h -FILE 1159 f:\sp\public\sdk\inc\basetsd.h -FILE 1160 f:\sp\public\sdk\inc\stralign.h -FILE 1161 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1162 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 1163 f:\sp\public\sdk\inc\tvout.h -FILE 1164 f:\sp\public\sdk\inc\winsvc.h -FILE 1165 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1166 f:\sp\vctools\crt_bld\self_x86\crt\src\winxfltr.c -FILE 1167 f:\sp\public\sdk\inc\wingdi.h -FILE 1168 f:\sp\public\sdk\inc\pshpack4.h -FILE 1169 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1170 f:\sp\public\sdk\inc\poppack.h -FILE 1171 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1172 f:\sp\public\sdk\inc\winnetwk.h -FILE 1173 f:\sp\public\sdk\inc\imm.h -FILE 1174 f:\sp\public\sdk\inc\ddbanned.h -FILE 1175 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1176 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1177 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1178 f:\sp\public\sdk\inc\windef.h -FILE 1179 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h -FILE 1180 f:\sp\public\sdk\inc\pshpack1.h -FILE 1181 f:\sp\public\sdk\inc\winver.h -FILE 1182 f:\sp\public\sdk\inc\winnetwk.h -FILE 1183 f:\sp\public\sdk\inc\imm.h -FILE 1184 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1185 f:\sp\public\sdk\inc\windef.h -FILE 1186 f:\sp\public\sdk\inc\pshpack1.h -FILE 1187 f:\sp\public\sdk\inc\winver.h -FILE 1188 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1189 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1190 f:\sp\public\sdk\inc\winnt.h -FILE 1191 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1192 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1193 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1194 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1195 f:\sp\public\sdk\inc\winreg.h -FILE 1196 f:\sp\public\sdk\inc\winbase.h -FILE 1197 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1198 f:\sp\public\sdk\inc\winerror.h -FILE 1199 f:\sp\vctools\crt_bld\self_x86\crt\src\winsig.c -FILE 1200 f:\sp\public\sdk\inc\pshpack8.h -FILE 1201 f:\sp\public\sdk\inc\reason.h -FILE 1202 f:\sp\public\sdk\inc\wincon.h -FILE 1203 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1204 f:\sp\public\sdk\inc\pshpack2.h -FILE 1205 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1206 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1207 f:\sp\public\sdk\inc\mcx.h -FILE 1208 f:\sp\public\sdk\inc\winuser.h -FILE 1209 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1210 f:\sp\public\sdk\inc\winnls.h -FILE 1211 f:\sp\public\sdk\inc\guiddef.h -FILE 1212 f:\sp\public\sdk\inc\windows.h -FILE 1213 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1214 f:\sp\public\sdk\inc\specstrings.h -FILE 1215 f:\sp\public\sdk\inc\ddbanned.h -FILE 1216 f:\sp\public\sdk\inc\basetsd.h -FILE 1217 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1218 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1219 f:\sp\public\sdk\inc\stralign.h -FILE 1220 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 1221 f:\sp\public\sdk\inc\tvout.h -FILE 1222 f:\sp\public\sdk\inc\winsvc.h -FILE 1223 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1224 f:\sp\public\sdk\inc\wingdi.h -FILE 1225 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h -FILE 1226 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h -FILE 1227 f:\sp\public\sdk\inc\pshpack4.h -FILE 1228 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1229 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1230 f:\sp\public\sdk\inc\poppack.h -FILE 1231 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1232 f:\sp\public\sdk\inc\wincon.h -FILE 1233 f:\sp\public\sdk\inc\imm.h -FILE 1234 f:\sp\public\sdk\inc\winbase.h -FILE 1235 f:\sp\public\sdk\inc\wingdi.h -FILE 1236 f:\sp\public\sdk\inc\winver.h -FILE 1237 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1238 f:\sp\public\sdk\inc\windows.h -FILE 1239 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1240 f:\sp\public\sdk\inc\pshpack2.h -FILE 1241 f:\sp\public\sdk\inc\reason.h -FILE 1242 f:\sp\vctools\crt_bld\self_x86\crt\src\w_str.c -FILE 1243 f:\sp\public\sdk\inc\specstrings.h -FILE 1244 f:\sp\public\sdk\inc\basetsd.h -FILE 1245 f:\sp\public\sdk\inc\pshpack4.h -FILE 1246 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1247 f:\sp\public\sdk\inc\winnetwk.h -FILE 1248 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1249 f:\sp\public\sdk\inc\stralign.h -FILE 1250 f:\sp\public\sdk\inc\poppack.h -FILE 1251 f:\sp\public\sdk\inc\winsvc.h -FILE 1252 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1253 f:\sp\public\sdk\inc\windef.h -FILE 1254 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1255 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1256 f:\sp\public\sdk\inc\winuser.h -FILE 1257 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1258 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1259 f:\sp\public\sdk\inc\mcx.h -FILE 1260 f:\sp\public\sdk\inc\pshpack8.h -FILE 1261 f:\sp\public\sdk\inc\guiddef.h -FILE 1262 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1263 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1264 f:\sp\public\sdk\inc\winnt.h -FILE 1265 f:\sp\public\sdk\inc\winnls.h -FILE 1266 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1267 f:\sp\public\sdk\inc\pshpack1.h -FILE 1268 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1269 f:\sp\public\sdk\inc\winerror.h -FILE 1270 f:\sp\public\sdk\inc\winreg.h -FILE 1271 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1272 f:\sp\public\sdk\inc\ddbanned.h -FILE 1273 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1274 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1275 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1276 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1277 f:\sp\public\sdk\inc\tvout.h -FILE 1278 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1279 f:\sp\public\sdk\inc\wincon.h -FILE 1280 f:\sp\public\sdk\inc\imm.h -FILE 1281 f:\sp\public\sdk\inc\winbase.h -FILE 1282 f:\sp\public\sdk\inc\wingdi.h -FILE 1283 f:\sp\public\sdk\inc\winver.h -FILE 1284 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1285 f:\sp\public\sdk\inc\windows.h -FILE 1286 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1287 f:\sp\public\sdk\inc\pshpack2.h -FILE 1288 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1289 f:\sp\public\sdk\inc\reason.h -FILE 1290 f:\sp\vctools\crt_bld\self_x86\crt\src\w_loc.c -FILE 1291 f:\sp\public\sdk\inc\specstrings.h -FILE 1292 f:\sp\public\sdk\inc\basetsd.h -FILE 1293 f:\sp\public\sdk\inc\pshpack4.h -FILE 1294 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1295 f:\sp\public\sdk\inc\winnetwk.h -FILE 1296 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1297 f:\sp\public\sdk\inc\stralign.h -FILE 1298 f:\sp\public\sdk\inc\poppack.h -FILE 1299 f:\sp\public\sdk\inc\winsvc.h -FILE 1300 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1301 f:\sp\public\sdk\inc\windef.h -FILE 1302 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1303 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1304 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1305 f:\sp\public\sdk\inc\winuser.h -FILE 1306 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1307 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1308 f:\sp\public\sdk\inc\mcx.h -FILE 1309 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1310 f:\sp\public\sdk\inc\pshpack8.h -FILE 1311 f:\sp\public\sdk\inc\guiddef.h -FILE 1312 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1313 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1314 f:\sp\public\sdk\inc\winnt.h -FILE 1315 f:\sp\public\sdk\inc\winnls.h -FILE 1316 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1317 f:\sp\public\sdk\inc\pshpack1.h -FILE 1318 f:\sp\public\sdk\inc\winerror.h -FILE 1319 f:\sp\public\sdk\inc\winreg.h -FILE 1320 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1321 f:\sp\public\sdk\inc\ddbanned.h -FILE 1322 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1323 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1324 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1325 f:\sp\public\sdk\inc\tvout.h -FILE 1326 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1327 f:\sp\public\sdk\inc\poppack.h -FILE 1328 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1329 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1330 f:\sp\public\sdk\inc\winnetwk.h -FILE 1331 f:\sp\public\sdk\inc\imm.h -FILE 1332 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1333 f:\sp\public\sdk\inc\windef.h -FILE 1334 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1335 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1336 f:\sp\public\sdk\inc\pshpack1.h -FILE 1337 f:\sp\public\sdk\inc\winver.h -FILE 1338 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1339 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1340 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1341 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1342 f:\sp\public\sdk\inc\winnt.h -FILE 1343 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1344 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1345 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1346 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1347 f:\sp\public\sdk\inc\winreg.h -FILE 1348 f:\sp\vctools\crt_bld\self_x86\crt\src\convrtcp.c -FILE 1349 f:\sp\public\sdk\inc\winbase.h -FILE 1350 f:\sp\public\sdk\inc\winerror.h -FILE 1351 f:\sp\public\sdk\inc\pshpack8.h -FILE 1352 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1353 f:\sp\public\sdk\inc\reason.h -FILE 1354 f:\sp\public\sdk\inc\wincon.h -FILE 1355 f:\sp\public\sdk\inc\ddbanned.h -FILE 1356 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1357 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1358 f:\sp\public\sdk\inc\pshpack2.h -FILE 1359 f:\sp\public\sdk\inc\mcx.h -FILE 1360 f:\sp\public\sdk\inc\winuser.h -FILE 1361 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1362 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1363 f:\sp\public\sdk\inc\winnls.h -FILE 1364 f:\sp\public\sdk\inc\guiddef.h -FILE 1365 f:\sp\public\sdk\inc\windows.h -FILE 1366 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1367 f:\sp\public\sdk\inc\specstrings.h -FILE 1368 f:\sp\public\sdk\inc\basetsd.h -FILE 1369 f:\sp\public\sdk\inc\stralign.h -FILE 1370 f:\sp\public\sdk\inc\tvout.h -FILE 1371 f:\sp\public\sdk\inc\winsvc.h -FILE 1372 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1373 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1374 f:\sp\public\sdk\inc\wingdi.h -FILE 1375 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1376 f:\sp\public\sdk\inc\pshpack4.h -FILE 1377 f:\sp\public\sdk\inc\winerror.h -FILE 1378 f:\sp\public\sdk\inc\pshpack8.h -FILE 1379 f:\sp\public\sdk\inc\reason.h -FILE 1380 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1381 f:\sp\public\sdk\inc\wincon.h -FILE 1382 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1383 f:\sp\public\sdk\inc\pshpack2.h -FILE 1384 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1385 f:\sp\public\sdk\inc\mcx.h -FILE 1386 f:\sp\public\sdk\inc\winuser.h -FILE 1387 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1388 f:\sp\public\sdk\inc\winnls.h -FILE 1389 f:\sp\public\sdk\inc\guiddef.h -FILE 1390 f:\sp\public\sdk\inc\windows.h -FILE 1391 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 1392 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1393 f:\sp\public\sdk\inc\specstrings.h -FILE 1394 f:\sp\public\sdk\inc\basetsd.h -FILE 1395 f:\sp\public\sdk\inc\stralign.h -FILE 1396 f:\sp\public\sdk\inc\tvout.h -FILE 1397 f:\sp\public\sdk\inc\winsvc.h -FILE 1398 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1399 f:\sp\public\sdk\inc\wingdi.h -FILE 1400 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1401 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1402 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1403 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1404 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1405 f:\sp\public\sdk\inc\pshpack4.h -FILE 1406 f:\sp\public\sdk\inc\poppack.h -FILE 1407 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1408 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1409 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.c -FILE 1410 f:\sp\public\sdk\inc\winnetwk.h -FILE 1411 f:\sp\public\sdk\inc\imm.h -FILE 1412 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1413 f:\sp\public\sdk\inc\windef.h -FILE 1414 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1415 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1416 f:\sp\public\sdk\inc\pshpack1.h -FILE 1417 f:\sp\public\sdk\inc\ddbanned.h -FILE 1418 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1419 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1420 f:\sp\public\sdk\inc\winver.h -FILE 1421 f:\sp\public\sdk\inc\winnt.h -FILE 1422 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1423 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1424 f:\sp\public\sdk\inc\winreg.h -FILE 1425 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1426 f:\sp\public\sdk\inc\winbase.h -FILE 1427 f:\sp\public\sdk\inc\poppack.h -FILE 1428 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1429 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 1430 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1431 f:\sp\public\sdk\inc\winnetwk.h -FILE 1432 f:\sp\public\sdk\inc\imm.h -FILE 1433 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1434 f:\sp\public\sdk\inc\windef.h -FILE 1435 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1436 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1437 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1438 f:\sp\public\sdk\inc\pshpack1.h -FILE 1439 f:\sp\public\sdk\inc\winver.h -FILE 1440 f:\sp\public\sdk\inc\windows.h -FILE 1441 f:\sp\public\sdk\inc\winnt.h -FILE 1442 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1443 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1444 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1445 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1446 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1447 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1448 f:\sp\public\sdk\inc\winreg.h -FILE 1449 f:\sp\public\sdk\inc\winbase.h -FILE 1450 f:\sp\vctools\crt_bld\self_x86\crt\src\setenv.c -FILE 1451 f:\sp\public\sdk\inc\winerror.h -FILE 1452 f:\sp\public\sdk\inc\pshpack8.h -FILE 1453 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1454 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1455 f:\sp\public\sdk\inc\reason.h -FILE 1456 f:\sp\public\sdk\inc\wincon.h -FILE 1457 f:\sp\public\sdk\inc\ddbanned.h -FILE 1458 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1459 f:\sp\public\sdk\inc\pshpack2.h -FILE 1460 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1461 f:\sp\public\sdk\inc\mcx.h -FILE 1462 f:\sp\public\sdk\inc\winuser.h -FILE 1463 f:\sp\public\sdk\inc\winnls.h -FILE 1464 f:\sp\public\sdk\inc\guiddef.h -FILE 1465 f:\sp\public\sdk\inc\specstrings.h -FILE 1466 f:\sp\public\sdk\inc\basetsd.h -FILE 1467 f:\sp\public\sdk\inc\stralign.h -FILE 1468 f:\sp\public\sdk\inc\tvout.h -FILE 1469 f:\sp\public\sdk\inc\winsvc.h -FILE 1470 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1471 f:\sp\public\sdk\inc\wingdi.h -FILE 1472 f:\sp\public\sdk\inc\pshpack4.h -FILE 1473 f:\sp\public\sdk\inc\poppack.h -FILE 1474 f:\sp\public\sdk\inc\winnetwk.h -FILE 1475 f:\sp\public\sdk\inc\imm.h -FILE 1476 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1477 f:\sp\public\sdk\inc\windef.h -FILE 1478 f:\sp\public\sdk\inc\pshpack1.h -FILE 1479 f:\sp\public\sdk\inc\winver.h -FILE 1480 f:\sp\public\sdk\inc\windows.h -FILE 1481 f:\sp\public\sdk\inc\winnt.h -FILE 1482 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1483 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1484 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1485 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1486 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1487 f:\sp\public\sdk\inc\winreg.h -FILE 1488 f:\sp\public\sdk\inc\winbase.h -FILE 1489 f:\sp\vctools\crt_bld\self_x86\crt\src\rand_s.c -FILE 1490 f:\sp\public\sdk\inc\winerror.h -FILE 1491 f:\sp\public\sdk\inc\pshpack8.h -FILE 1492 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1493 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1494 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1495 f:\sp\public\sdk\inc\reason.h -FILE 1496 f:\sp\public\sdk\inc\wincon.h -FILE 1497 f:\sp\public\sdk\inc\ddbanned.h -FILE 1498 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1499 f:\sp\public\sdk\inc\pshpack2.h -FILE 1500 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1501 f:\sp\public\sdk\inc\mcx.h -FILE 1502 f:\sp\public\sdk\inc\winuser.h -FILE 1503 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1504 f:\sp\public\sdk\inc\winnls.h -FILE 1505 f:\sp\public\sdk\inc\guiddef.h -FILE 1506 f:\sp\public\sdk\inc\specstrings.h -FILE 1507 f:\sp\public\sdk\inc\basetsd.h -FILE 1508 f:\sp\public\sdk\inc\stralign.h -FILE 1509 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1510 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1511 f:\sp\public\sdk\inc\tvout.h -FILE 1512 f:\sp\public\sdk\inc\winsvc.h -FILE 1513 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1514 f:\sp\public\sdk\inc\wingdi.h -FILE 1515 f:\sp\public\sdk\inc\pshpack4.h -FILE 1516 f:\sp\public\sdk\inc\poppack.h -FILE 1517 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1518 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1519 f:\sp\public\sdk\inc\winnetwk.h -FILE 1520 f:\sp\public\sdk\inc\imm.h -FILE 1521 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1522 f:\sp\public\sdk\inc\windef.h -FILE 1523 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1524 f:\sp\public\sdk\inc\pshpack1.h -FILE 1525 f:\sp\public\sdk\inc\winver.h -FILE 1526 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1527 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1528 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1529 f:\sp\public\sdk\inc\winnt.h -FILE 1530 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1531 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1532 f:\sp\public\sdk\inc\winreg.h -FILE 1533 f:\sp\vctools\crt_bld\self_x86\crt\src\purevirt.c -FILE 1534 f:\sp\public\sdk\inc\winbase.h -FILE 1535 f:\sp\public\sdk\inc\winerror.h -FILE 1536 f:\sp\public\sdk\inc\pshpack8.h -FILE 1537 f:\sp\public\sdk\inc\reason.h -FILE 1538 f:\sp\public\sdk\inc\wincon.h -FILE 1539 f:\sp\public\sdk\inc\ddbanned.h -FILE 1540 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1541 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1542 f:\sp\public\sdk\inc\pshpack2.h -FILE 1543 f:\sp\public\sdk\inc\mcx.h -FILE 1544 f:\sp\public\sdk\inc\winuser.h -FILE 1545 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1546 f:\sp\public\sdk\inc\winnls.h -FILE 1547 f:\sp\public\sdk\inc\guiddef.h -FILE 1548 f:\sp\public\sdk\inc\windows.h -FILE 1549 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1550 f:\sp\public\sdk\inc\specstrings.h -FILE 1551 f:\sp\public\sdk\inc\basetsd.h -FILE 1552 f:\sp\public\sdk\inc\stralign.h -FILE 1553 f:\sp\public\sdk\inc\tvout.h -FILE 1554 f:\sp\public\sdk\inc\winsvc.h -FILE 1555 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1556 f:\sp\public\sdk\inc\wingdi.h -FILE 1557 f:\sp\public\sdk\inc\pshpack4.h -FILE 1558 f:\sp\public\sdk\inc\poppack.h -FILE 1559 f:\sp\public\sdk\inc\winnetwk.h -FILE 1560 f:\sp\public\sdk\inc\imm.h -FILE 1561 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1562 f:\sp\public\sdk\inc\windef.h -FILE 1563 f:\sp\public\sdk\inc\pshpack1.h -FILE 1564 f:\sp\public\sdk\inc\winver.h -FILE 1565 f:\sp\public\sdk\inc\windows.h -FILE 1566 f:\sp\public\sdk\inc\winnt.h -FILE 1567 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1568 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1569 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1570 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1571 f:\sp\public\sdk\inc\winreg.h -FILE 1572 f:\sp\public\sdk\inc\winbase.h -FILE 1573 f:\sp\vctools\crt_bld\self_x86\crt\src\pesect.c -FILE 1574 f:\sp\public\sdk\inc\winerror.h -FILE 1575 f:\sp\public\sdk\inc\pshpack8.h -FILE 1576 f:\sp\public\sdk\inc\reason.h -FILE 1577 f:\sp\public\sdk\inc\wincon.h -FILE 1578 f:\sp\public\sdk\inc\ddbanned.h -FILE 1579 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1580 f:\sp\public\sdk\inc\pshpack2.h -FILE 1581 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1582 f:\sp\public\sdk\inc\mcx.h -FILE 1583 f:\sp\public\sdk\inc\winuser.h -FILE 1584 f:\sp\public\sdk\inc\winnls.h -FILE 1585 f:\sp\public\sdk\inc\guiddef.h -FILE 1586 f:\sp\public\sdk\inc\specstrings.h -FILE 1587 f:\sp\public\sdk\inc\basetsd.h -FILE 1588 f:\sp\public\sdk\inc\stralign.h -FILE 1589 f:\sp\public\sdk\inc\tvout.h -FILE 1590 f:\sp\public\sdk\inc\winsvc.h -FILE 1591 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1592 f:\sp\public\sdk\inc\wingdi.h -FILE 1593 f:\sp\public\sdk\inc\pshpack4.h -FILE 1594 f:\sp\public\sdk\inc\winerror.h -FILE 1595 f:\sp\public\sdk\inc\pshpack1.h -FILE 1596 f:\sp\public\sdk\inc\pshpack8.h -FILE 1597 f:\sp\public\sdk\inc\winver.h -FILE 1598 f:\sp\public\sdk\inc\pshpack2.h -FILE 1599 f:\sp\public\sdk\inc\winreg.h -FILE 1600 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1601 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1602 f:\sp\public\sdk\inc\guiddef.h -FILE 1603 f:\sp\public\sdk\inc\windows.h -FILE 1604 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1605 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 1606 f:\sp\public\sdk\inc\specstrings.h -FILE 1607 f:\sp\public\sdk\inc\basetsd.h -FILE 1608 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1609 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1610 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1611 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1612 f:\sp\public\sdk\inc\pshpack4.h -FILE 1613 f:\sp\public\sdk\inc\reason.h -FILE 1614 f:\sp\public\sdk\inc\wincon.h -FILE 1615 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1616 f:\sp\public\sdk\inc\poppack.h -FILE 1617 f:\sp\public\sdk\inc\mcx.h -FILE 1618 f:\sp\public\sdk\inc\winuser.h -FILE 1619 f:\sp\public\sdk\inc\winnls.h -FILE 1620 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata2.c -FILE 1621 f:\sp\public\sdk\inc\stralign.h -FILE 1622 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1623 f:\sp\public\sdk\inc\windef.h -FILE 1624 f:\sp\public\sdk\inc\tvout.h -FILE 1625 f:\sp\public\sdk\inc\winsvc.h -FILE 1626 f:\sp\public\sdk\inc\wingdi.h -FILE 1627 f:\sp\public\sdk\inc\ddbanned.h -FILE 1628 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1629 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1630 f:\sp\public\sdk\inc\winnt.h -FILE 1631 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1632 f:\sp\public\sdk\inc\winnetwk.h -FILE 1633 f:\sp\public\sdk\inc\imm.h -FILE 1634 f:\sp\public\sdk\inc\winbase.h -FILE 1635 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1636 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1637 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1638 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata1.c -FILE 1639 f:\sp\public\sdk\inc\ddbanned.h -FILE 1640 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1641 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1642 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1643 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h -FILE 1644 f:\sp\public\sdk\inc\reason.h -FILE 1645 f:\sp\public\sdk\inc\wincon.h -FILE 1646 f:\sp\public\sdk\inc\pshpack2.h -FILE 1647 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1648 f:\sp\public\sdk\inc\mcx.h -FILE 1649 f:\sp\public\sdk\inc\winuser.h -FILE 1650 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1651 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1652 f:\sp\public\sdk\inc\winnls.h -FILE 1653 f:\sp\public\sdk\inc\guiddef.h -FILE 1654 f:\sp\public\sdk\inc\windows.h -FILE 1655 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1656 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1657 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1658 f:\sp\public\sdk\inc\specstrings.h -FILE 1659 f:\sp\public\sdk\inc\basetsd.h -FILE 1660 f:\sp\public\sdk\inc\stralign.h -FILE 1661 f:\sp\public\sdk\inc\tvout.h -FILE 1662 f:\sp\public\sdk\inc\winsvc.h -FILE 1663 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1664 f:\sp\public\sdk\inc\wingdi.h -FILE 1665 f:\sp\public\sdk\inc\pshpack4.h -FILE 1666 f:\sp\public\sdk\inc\poppack.h -FILE 1667 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 1668 f:\sp\public\sdk\inc\winnetwk.h -FILE 1669 f:\sp\public\sdk\inc\imm.h -FILE 1670 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1671 f:\sp\public\sdk\inc\windef.h -FILE 1672 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1673 f:\sp\vctools\crt_bld\self_x86\crt\src\onexit.c -FILE 1674 f:\sp\public\sdk\inc\pshpack1.h -FILE 1675 f:\sp\public\sdk\inc\winver.h -FILE 1676 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1677 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1678 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1679 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1680 f:\sp\public\sdk\inc\winnt.h -FILE 1681 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1682 f:\sp\public\sdk\inc\ddbanned.h -FILE 1683 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1684 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1685 f:\sp\public\sdk\inc\winreg.h -FILE 1686 f:\sp\public\sdk\inc\winbase.h -FILE 1687 f:\sp\public\sdk\inc\winerror.h -FILE 1688 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1689 f:\sp\public\sdk\inc\pshpack8.h -FILE 1690 f:\sp\public\sdk\inc\winbase.h -FILE 1691 f:\sp\public\sdk\inc\winerror.h -FILE 1692 f:\sp\public\sdk\inc\pshpack1.h -FILE 1693 f:\sp\public\sdk\inc\pshpack8.h -FILE 1694 f:\sp\public\sdk\inc\winver.h -FILE 1695 f:\sp\public\sdk\inc\pshpack2.h -FILE 1696 f:\sp\public\sdk\inc\winreg.h -FILE 1697 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1698 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1699 f:\sp\public\sdk\inc\guiddef.h -FILE 1700 f:\sp\public\sdk\inc\windows.h -FILE 1701 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1702 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1703 f:\sp\public\sdk\inc\specstrings.h -FILE 1704 f:\sp\public\sdk\inc\basetsd.h -FILE 1705 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1706 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1707 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1708 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1709 f:\sp\public\sdk\inc\pshpack4.h -FILE 1710 f:\sp\public\sdk\inc\reason.h -FILE 1711 f:\sp\public\sdk\inc\wincon.h -FILE 1712 f:\sp\public\sdk\inc\poppack.h -FILE 1713 f:\sp\public\sdk\inc\mcx.h -FILE 1714 f:\sp\public\sdk\inc\winuser.h -FILE 1715 f:\sp\public\sdk\inc\winnls.h -FILE 1716 f:\sp\vctools\crt_bld\self_x86\crt\src\lconv.c -FILE 1717 f:\sp\public\sdk\inc\stralign.h -FILE 1718 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1719 f:\sp\public\sdk\inc\windef.h -FILE 1720 f:\sp\public\sdk\inc\tvout.h -FILE 1721 f:\sp\public\sdk\inc\winsvc.h -FILE 1722 f:\sp\public\sdk\inc\wingdi.h -FILE 1723 f:\sp\public\sdk\inc\ddbanned.h -FILE 1724 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1725 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1726 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1727 f:\sp\public\sdk\inc\winnt.h -FILE 1728 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1729 f:\sp\public\sdk\inc\winnetwk.h -FILE 1730 f:\sp\public\sdk\inc\imm.h -FILE 1731 f:\sp\public\sdk\inc\guiddef.h -FILE 1732 f:\sp\public\sdk\inc\winnt.h -FILE 1733 f:\sp\public\sdk\inc\winnls.h -FILE 1734 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1735 f:\sp\public\sdk\inc\pshpack1.h -FILE 1736 f:\sp\public\sdk\inc\winerror.h -FILE 1737 f:\sp\public\sdk\inc\winreg.h -FILE 1738 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1739 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 1740 f:\sp\public\sdk\inc\tvout.h -FILE 1741 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1742 f:\sp\vctools\crt_bld\self_x86\crt\src\invarg.c -FILE 1743 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1744 f:\sp\public\sdk\inc\wincon.h -FILE 1745 f:\sp\public\sdk\inc\imm.h -FILE 1746 f:\sp\public\sdk\inc\winbase.h -FILE 1747 f:\sp\public\sdk\inc\wingdi.h -FILE 1748 f:\sp\public\sdk\inc\winver.h -FILE 1749 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1750 f:\sp\public\sdk\inc\windows.h -FILE 1751 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1752 f:\sp\public\sdk\inc\pshpack2.h -FILE 1753 f:\sp\public\sdk\inc\reason.h -FILE 1754 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 1755 f:\sp\public\sdk\inc\specstrings.h -FILE 1756 f:\sp\public\sdk\inc\basetsd.h -FILE 1757 f:\sp\public\sdk\inc\pshpack4.h -FILE 1758 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1759 f:\sp\public\sdk\inc\winnetwk.h -FILE 1760 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1761 f:\sp\public\sdk\inc\stralign.h -FILE 1762 f:\sp\public\sdk\inc\poppack.h -FILE 1763 f:\sp\public\sdk\inc\winsvc.h -FILE 1764 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1765 f:\sp\public\sdk\inc\windef.h -FILE 1766 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1767 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1768 f:\sp\public\sdk\inc\winuser.h -FILE 1769 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1770 f:\sp\public\sdk\inc\ddbanned.h -FILE 1771 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1772 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1773 f:\sp\public\sdk\inc\mcx.h -FILE 1774 f:\sp\public\sdk\inc\pshpack8.h -FILE 1775 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1776 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1777 f:\sp\public\sdk\inc\pshpack4.h -FILE 1778 f:\sp\public\sdk\inc\poppack.h -FILE 1779 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1780 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1781 f:\sp\public\sdk\inc\winnetwk.h -FILE 1782 f:\sp\public\sdk\inc\imm.h -FILE 1783 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1784 f:\sp\public\sdk\inc\windef.h -FILE 1785 f:\sp\public\sdk\inc\pshpack1.h -FILE 1786 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1787 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1788 f:\sp\public\sdk\inc\winver.h -FILE 1789 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1790 f:\sp\public\sdk\inc\winnt.h -FILE 1791 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1792 f:\sp\public\sdk\inc\winreg.h -FILE 1793 f:\sp\vctools\crt_bld\self_x86\crt\src\inittime.c -FILE 1794 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1795 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1796 f:\sp\public\sdk\inc\winbase.h -FILE 1797 f:\sp\public\sdk\inc\winerror.h -FILE 1798 f:\sp\public\sdk\inc\pshpack8.h -FILE 1799 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1800 f:\sp\public\sdk\inc\reason.h -FILE 1801 f:\sp\public\sdk\inc\ddbanned.h -FILE 1802 f:\sp\public\sdk\inc\wincon.h -FILE 1803 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1804 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1805 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1806 f:\sp\public\sdk\inc\pshpack2.h -FILE 1807 f:\sp\public\sdk\inc\mcx.h -FILE 1808 f:\sp\public\sdk\inc\winuser.h -FILE 1809 f:\sp\public\sdk\inc\winnls.h -FILE 1810 f:\sp\public\sdk\inc\guiddef.h -FILE 1811 f:\sp\public\sdk\inc\stralign.h -FILE 1812 f:\sp\public\sdk\inc\specstrings.h -FILE 1813 f:\sp\public\sdk\inc\basetsd.h -FILE 1814 f:\sp\public\sdk\inc\windows.h -FILE 1815 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1816 f:\sp\public\sdk\inc\tvout.h -FILE 1817 f:\sp\public\sdk\inc\winsvc.h -FILE 1818 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1819 f:\sp\public\sdk\inc\wingdi.h -FILE 1820 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1821 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1822 f:\sp\public\sdk\inc\pshpack4.h -FILE 1823 f:\sp\public\sdk\inc\poppack.h -FILE 1824 f:\sp\public\sdk\inc\winnt.h -FILE 1825 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1826 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1827 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1828 f:\sp\public\sdk\inc\winnetwk.h -FILE 1829 f:\sp\public\sdk\inc\imm.h -FILE 1830 f:\sp\public\sdk\inc\pshpack1.h -FILE 1831 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1832 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1833 f:\sp\public\sdk\inc\winver.h -FILE 1834 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1835 f:\sp\public\sdk\inc\guiddef.h -FILE 1836 f:\sp\public\sdk\inc\specstrings.h -FILE 1837 f:\sp\public\sdk\inc\basetsd.h -FILE 1838 f:\sp\public\sdk\inc\windows.h -FILE 1839 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1840 f:\sp\public\sdk\inc\winreg.h -FILE 1841 f:\sp\vctools\crt_bld\self_x86\crt\src\initnum.c -FILE 1842 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h -FILE 1843 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1844 f:\sp\public\sdk\inc\winbase.h -FILE 1845 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1846 f:\sp\public\sdk\inc\winerror.h -FILE 1847 f:\sp\public\sdk\inc\pshpack8.h -FILE 1848 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1849 f:\sp\public\sdk\inc\reason.h -FILE 1850 f:\sp\public\sdk\inc\ddbanned.h -FILE 1851 f:\sp\public\sdk\inc\wincon.h -FILE 1852 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1853 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1854 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1855 f:\sp\public\sdk\inc\pshpack2.h -FILE 1856 f:\sp\public\sdk\inc\mcx.h -FILE 1857 f:\sp\public\sdk\inc\winuser.h -FILE 1858 f:\sp\public\sdk\inc\winnls.h -FILE 1859 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1860 f:\sp\public\sdk\inc\windef.h -FILE 1861 f:\sp\public\sdk\inc\stralign.h -FILE 1862 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1863 f:\sp\public\sdk\inc\tvout.h -FILE 1864 f:\sp\public\sdk\inc\winsvc.h -FILE 1865 f:\sp\public\sdk\inc\wingdi.h -FILE 1866 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1867 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1868 f:\sp\public\sdk\inc\pshpack4.h -FILE 1869 f:\sp\public\sdk\inc\poppack.h -FILE 1870 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1871 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1872 f:\sp\public\sdk\inc\winnetwk.h -FILE 1873 f:\sp\public\sdk\inc\imm.h -FILE 1874 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1875 f:\sp\public\sdk\inc\windef.h -FILE 1876 f:\sp\public\sdk\inc\pshpack1.h -FILE 1877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1878 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1879 f:\sp\public\sdk\inc\winver.h -FILE 1880 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1881 f:\sp\public\sdk\inc\winnt.h -FILE 1882 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1883 f:\sp\public\sdk\inc\winreg.h -FILE 1884 f:\sp\vctools\crt_bld\self_x86\crt\src\initmon.c -FILE 1885 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1886 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1887 f:\sp\public\sdk\inc\winbase.h -FILE 1888 f:\sp\public\sdk\inc\winerror.h -FILE 1889 f:\sp\public\sdk\inc\pshpack8.h -FILE 1890 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1891 f:\sp\public\sdk\inc\reason.h -FILE 1892 f:\sp\public\sdk\inc\ddbanned.h -FILE 1893 f:\sp\public\sdk\inc\wincon.h -FILE 1894 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1895 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1896 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1897 f:\sp\public\sdk\inc\pshpack2.h -FILE 1898 f:\sp\public\sdk\inc\mcx.h -FILE 1899 f:\sp\public\sdk\inc\winuser.h -FILE 1900 f:\sp\public\sdk\inc\winnls.h -FILE 1901 f:\sp\public\sdk\inc\guiddef.h -FILE 1902 f:\sp\public\sdk\inc\stralign.h -FILE 1903 f:\sp\public\sdk\inc\specstrings.h -FILE 1904 f:\sp\public\sdk\inc\basetsd.h -FILE 1905 f:\sp\public\sdk\inc\windows.h -FILE 1906 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1907 f:\sp\public\sdk\inc\tvout.h -FILE 1908 f:\sp\public\sdk\inc\winsvc.h -FILE 1909 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1910 f:\sp\public\sdk\inc\wingdi.h -FILE 1911 f:\sp\public\sdk\inc\winbase.h -FILE 1912 f:\sp\public\sdk\inc\winerror.h -FILE 1913 f:\sp\public\sdk\inc\pshpack1.h -FILE 1914 f:\sp\public\sdk\inc\pshpack8.h -FILE 1915 f:\sp\public\sdk\inc\winver.h -FILE 1916 f:\sp\public\sdk\inc\pshpack2.h -FILE 1917 f:\sp\public\sdk\inc\winreg.h -FILE 1918 f:\sp\public\sdk\inc\guiddef.h -FILE 1919 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1920 f:\sp\public\sdk\inc\specstrings.h -FILE 1921 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1922 f:\sp\public\sdk\inc\basetsd.h -FILE 1923 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1924 f:\sp\public\sdk\inc\windows.h -FILE 1925 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1926 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1927 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1928 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1929 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1930 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1931 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1932 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1933 f:\sp\public\sdk\inc\pshpack4.h -FILE 1934 f:\sp\public\sdk\inc\reason.h -FILE 1935 f:\sp\public\sdk\inc\wincon.h -FILE 1936 f:\sp\public\sdk\inc\poppack.h -FILE 1937 f:\sp\vctools\crt_bld\self_x86\crt\src\inithelp.c -FILE 1938 f:\sp\public\sdk\inc\mcx.h -FILE 1939 f:\sp\public\sdk\inc\winuser.h -FILE 1940 f:\sp\public\sdk\inc\winnls.h -FILE 1941 f:\sp\public\sdk\inc\stralign.h -FILE 1942 f:\sp\public\sdk\inc\tvout.h -FILE 1943 f:\sp\public\sdk\inc\winsvc.h -FILE 1944 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1945 f:\sp\public\sdk\inc\wingdi.h -FILE 1946 f:\sp\public\sdk\inc\windef.h -FILE 1947 f:\sp\public\sdk\inc\ddbanned.h -FILE 1948 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1949 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1950 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1951 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1952 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1953 f:\sp\public\sdk\inc\winnetwk.h -FILE 1954 f:\sp\public\sdk\inc\imm.h -FILE 1955 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1956 f:\sp\public\sdk\inc\winnt.h -FILE 1957 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1958 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1959 f:\sp\public\sdk\inc\pshpack4.h -FILE 1960 f:\sp\public\sdk\inc\poppack.h -FILE 1961 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1962 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1963 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1964 f:\sp\public\sdk\inc\winnetwk.h -FILE 1965 f:\sp\public\sdk\inc\imm.h -FILE 1966 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1967 f:\sp\public\sdk\inc\windef.h -FILE 1968 f:\sp\public\sdk\inc\pshpack1.h -FILE 1969 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1970 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1971 f:\sp\public\sdk\inc\winver.h -FILE 1972 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1973 f:\sp\public\sdk\inc\winnt.h -FILE 1974 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1975 f:\sp\public\sdk\inc\winreg.h -FILE 1976 f:\sp\vctools\crt_bld\self_x86\crt\src\initctyp.c -FILE 1977 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 1978 f:\sp\public\sdk\inc\winbase.h -FILE 1979 f:\sp\public\sdk\inc\winerror.h -FILE 1980 f:\sp\public\sdk\inc\pshpack8.h -FILE 1981 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1982 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 1983 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1984 f:\sp\public\sdk\inc\reason.h -FILE 1985 f:\sp\public\sdk\inc\ddbanned.h -FILE 1986 f:\sp\public\sdk\inc\wincon.h -FILE 1987 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1988 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1989 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1990 f:\sp\public\sdk\inc\pshpack2.h -FILE 1991 f:\sp\public\sdk\inc\mcx.h -FILE 1992 f:\sp\public\sdk\inc\winuser.h -FILE 1993 f:\sp\public\sdk\inc\winnls.h -FILE 1994 f:\sp\public\sdk\inc\guiddef.h -FILE 1995 f:\sp\public\sdk\inc\stralign.h -FILE 1996 f:\sp\public\sdk\inc\specstrings.h -FILE 1997 f:\sp\public\sdk\inc\basetsd.h -FILE 1998 f:\sp\public\sdk\inc\windows.h -FILE 1999 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2000 f:\sp\public\sdk\inc\tvout.h -FILE 2001 f:\sp\public\sdk\inc\winsvc.h -FILE 2002 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2003 f:\sp\public\sdk\inc\wingdi.h -FILE 2004 f:\sp\public\sdk\inc\poppack.h -FILE 2005 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2006 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2007 f:\sp\public\sdk\inc\winnetwk.h -FILE 2008 f:\sp\public\sdk\inc\imm.h -FILE 2009 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2010 f:\sp\public\sdk\inc\windef.h -FILE 2011 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2012 f:\sp\public\sdk\inc\pshpack1.h -FILE 2013 f:\sp\public\sdk\inc\winver.h -FILE 2014 f:\sp\public\sdk\inc\windows.h -FILE 2015 f:\sp\public\sdk\inc\winnt.h -FILE 2016 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2017 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2018 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2019 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2020 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2021 f:\sp\public\sdk\inc\winreg.h -FILE 2022 f:\sp\public\sdk\inc\winbase.h -FILE 2023 f:\sp\vctools\crt_bld\self_x86\crt\src\initcrit.c -FILE 2024 f:\sp\public\sdk\inc\winerror.h -FILE 2025 f:\sp\public\sdk\inc\pshpack8.h -FILE 2026 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2027 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2028 f:\sp\public\sdk\inc\reason.h -FILE 2029 f:\sp\public\sdk\inc\wincon.h -FILE 2030 f:\sp\public\sdk\inc\ddbanned.h -FILE 2031 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2032 f:\sp\public\sdk\inc\pshpack2.h -FILE 2033 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2034 f:\sp\public\sdk\inc\mcx.h -FILE 2035 f:\sp\public\sdk\inc\winuser.h -FILE 2036 f:\sp\public\sdk\inc\winnls.h -FILE 2037 f:\sp\public\sdk\inc\guiddef.h -FILE 2038 f:\sp\public\sdk\inc\specstrings.h -FILE 2039 f:\sp\public\sdk\inc\basetsd.h -FILE 2040 f:\sp\public\sdk\inc\stralign.h -FILE 2041 f:\sp\public\sdk\inc\tvout.h -FILE 2042 f:\sp\public\sdk\inc\winsvc.h -FILE 2043 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2044 f:\sp\public\sdk\inc\wingdi.h -FILE 2045 f:\sp\public\sdk\inc\pshpack4.h -FILE 2046 f:\sp\public\sdk\inc\poppack.h -FILE 2047 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2048 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2049 f:\sp\public\sdk\inc\winnetwk.h -FILE 2050 f:\sp\public\sdk\inc\imm.h -FILE 2051 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2052 f:\sp\public\sdk\inc\windef.h -FILE 2053 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2054 f:\sp\public\sdk\inc\pshpack1.h -FILE 2055 f:\sp\public\sdk\inc\winver.h -FILE 2056 f:\sp\public\sdk\inc\windows.h -FILE 2057 f:\sp\public\sdk\inc\winnt.h -FILE 2058 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2059 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2060 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2061 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2062 f:\sp\public\sdk\inc\winreg.h -FILE 2063 f:\sp\public\sdk\inc\winbase.h -FILE 2064 f:\sp\vctools\crt_bld\self_x86\crt\src\initcoll.c -FILE 2065 f:\sp\public\sdk\inc\winerror.h -FILE 2066 f:\sp\public\sdk\inc\pshpack8.h -FILE 2067 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2068 f:\sp\public\sdk\inc\reason.h -FILE 2069 f:\sp\public\sdk\inc\wincon.h -FILE 2070 f:\sp\public\sdk\inc\ddbanned.h -FILE 2071 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2072 f:\sp\public\sdk\inc\pshpack2.h -FILE 2073 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2074 f:\sp\public\sdk\inc\mcx.h -FILE 2075 f:\sp\public\sdk\inc\winuser.h -FILE 2076 f:\sp\public\sdk\inc\winnls.h -FILE 2077 f:\sp\public\sdk\inc\guiddef.h -FILE 2078 f:\sp\public\sdk\inc\specstrings.h -FILE 2079 f:\sp\public\sdk\inc\basetsd.h -FILE 2080 f:\sp\public\sdk\inc\stralign.h -FILE 2081 f:\sp\public\sdk\inc\tvout.h -FILE 2082 f:\sp\public\sdk\inc\winsvc.h -FILE 2083 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2084 f:\sp\public\sdk\inc\wingdi.h -FILE 2085 f:\sp\public\sdk\inc\pshpack4.h -FILE 2086 f:\sp\public\sdk\inc\poppack.h -FILE 2087 f:\sp\public\sdk\inc\winnetwk.h -FILE 2088 f:\sp\public\sdk\inc\imm.h -FILE 2089 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2090 f:\sp\public\sdk\inc\windef.h -FILE 2091 f:\binaries.x86ret\vcboot\inc\mm3dnow.h -FILE 2092 f:\sp\public\sdk\inc\pshpack1.h -FILE 2093 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2094 f:\sp\public\sdk\inc\winver.h -FILE 2095 f:\sp\public\sdk\inc\windows.h -FILE 2096 f:\sp\public\sdk\inc\winnt.h -FILE 2097 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2098 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2099 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2100 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2101 f:\sp\public\sdk\inc\winreg.h -FILE 2102 f:\sp\public\sdk\inc\winbase.h -FILE 2103 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_support.c -FILE 2104 f:\sp\public\sdk\inc\winerror.h -FILE 2105 f:\sp\public\sdk\inc\pshpack8.h -FILE 2106 f:\sp\vctools\crt_bld\self_x86\crt\src\intrin.h -FILE 2107 f:\sp\vctools\crt_bld\self_x86\crt\src\setjmp.h -FILE 2108 f:\sp\public\sdk\inc\reason.h -FILE 2109 f:\sp\public\sdk\inc\wincon.h -FILE 2110 f:\sp\public\sdk\inc\ddbanned.h -FILE 2111 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2112 f:\sp\public\sdk\inc\pshpack2.h -FILE 2113 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2114 f:\sp\public\sdk\inc\mcx.h -FILE 2115 f:\sp\public\sdk\inc\winuser.h -FILE 2116 f:\sp\public\sdk\inc\winnls.h -FILE 2117 f:\sp\public\sdk\inc\guiddef.h -FILE 2118 f:\sp\public\sdk\inc\specstrings.h -FILE 2119 f:\sp\public\sdk\inc\basetsd.h -FILE 2120 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2121 f:\sp\public\sdk\inc\stralign.h -FILE 2122 f:\sp\public\sdk\inc\tvout.h -FILE 2123 f:\sp\public\sdk\inc\winsvc.h -FILE 2124 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2125 f:\sp\public\sdk\inc\wingdi.h -FILE 2126 f:\binaries.x86ret\vcboot\inc\emmintrin.h -FILE 2127 f:\binaries.x86ret\vcboot\inc\xmmintrin.h -FILE 2128 f:\binaries.x86ret\vcboot\inc\mmintrin.h -FILE 2129 f:\sp\public\sdk\inc\pshpack4.h -FILE 2130 f:\sp\public\sdk\inc\poppack.h -FILE 2131 f:\sp\public\sdk\inc\winnetwk.h -FILE 2132 f:\sp\public\sdk\inc\imm.h -FILE 2133 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2134 f:\sp\public\sdk\inc\windef.h -FILE 2135 f:\sp\public\sdk\inc\pshpack1.h -FILE 2136 f:\sp\public\sdk\inc\winver.h -FILE 2137 f:\sp\public\sdk\inc\windows.h -FILE 2138 f:\sp\public\sdk\inc\winnt.h -FILE 2139 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2140 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2141 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2142 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2143 f:\sp\public\sdk\inc\winreg.h -FILE 2144 f:\sp\public\sdk\inc\winbase.h -FILE 2145 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_report.c -FILE 2146 f:\sp\public\sdk\inc\winerror.h -FILE 2147 f:\sp\public\sdk\inc\pshpack8.h -FILE 2148 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2149 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2150 f:\sp\public\sdk\inc\reason.h -FILE 2151 f:\sp\public\sdk\inc\wincon.h -FILE 2152 f:\sp\public\sdk\inc\ddbanned.h -FILE 2153 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2154 f:\sp\public\sdk\inc\pshpack2.h -FILE 2155 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2156 f:\sp\public\sdk\inc\mcx.h -FILE 2157 f:\sp\public\sdk\inc\winuser.h -FILE 2158 f:\sp\public\sdk\inc\winnls.h -FILE 2159 f:\sp\public\sdk\inc\guiddef.h -FILE 2160 f:\sp\public\sdk\inc\specstrings.h -FILE 2161 f:\sp\public\sdk\inc\basetsd.h -FILE 2162 f:\sp\public\sdk\inc\stralign.h -FILE 2163 f:\sp\public\sdk\inc\tvout.h -FILE 2164 f:\sp\public\sdk\inc\winsvc.h -FILE 2165 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2166 f:\sp\public\sdk\inc\wingdi.h -FILE 2167 f:\sp\public\sdk\inc\pshpack4.h -FILE 2168 f:\sp\public\sdk\inc\poppack.h -FILE 2169 f:\sp\public\sdk\inc\winnetwk.h -FILE 2170 f:\sp\public\sdk\inc\imm.h -FILE 2171 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2172 f:\sp\public\sdk\inc\windef.h -FILE 2173 f:\sp\public\sdk\inc\pshpack1.h -FILE 2174 f:\sp\public\sdk\inc\winver.h -FILE 2175 f:\sp\public\sdk\inc\windows.h -FILE 2176 f:\sp\public\sdk\inc\winnt.h -FILE 2177 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2178 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2179 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2180 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2181 f:\sp\public\sdk\inc\winreg.h -FILE 2182 f:\sp\public\sdk\inc\winbase.h -FILE 2183 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_cookie.c -FILE 2184 f:\sp\public\sdk\inc\winerror.h -FILE 2185 f:\sp\public\sdk\inc\pshpack8.h -FILE 2186 f:\sp\public\sdk\inc\reason.h -FILE 2187 f:\sp\public\sdk\inc\wincon.h -FILE 2188 f:\sp\public\sdk\inc\ddbanned.h -FILE 2189 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2190 f:\sp\public\sdk\inc\pshpack2.h -FILE 2191 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2192 f:\sp\public\sdk\inc\mcx.h -FILE 2193 f:\sp\public\sdk\inc\winuser.h -FILE 2194 f:\sp\public\sdk\inc\winnls.h -FILE 2195 f:\sp\public\sdk\inc\guiddef.h -FILE 2196 f:\sp\public\sdk\inc\specstrings.h -FILE 2197 f:\sp\public\sdk\inc\basetsd.h -FILE 2198 f:\sp\public\sdk\inc\stralign.h -FILE 2199 f:\sp\public\sdk\inc\tvout.h -FILE 2200 f:\sp\public\sdk\inc\winsvc.h -FILE 2201 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2202 f:\sp\public\sdk\inc\wingdi.h -FILE 2203 f:\sp\public\sdk\inc\pshpack4.h -FILE 2204 f:\sp\public\sdk\inc\winerror.h -FILE 2205 f:\sp\public\sdk\inc\pshpack1.h -FILE 2206 f:\sp\public\sdk\inc\pshpack8.h -FILE 2207 f:\sp\public\sdk\inc\winver.h -FILE 2208 f:\sp\public\sdk\inc\pshpack2.h -FILE 2209 f:\sp\public\sdk\inc\winreg.h -FILE 2210 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2211 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2212 f:\sp\public\sdk\inc\guiddef.h -FILE 2213 f:\sp\public\sdk\inc\windows.h -FILE 2214 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2215 f:\sp\public\sdk\inc\specstrings.h -FILE 2216 f:\sp\public\sdk\inc\basetsd.h -FILE 2217 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2218 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2219 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2220 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2221 f:\sp\public\sdk\inc\pshpack4.h -FILE 2222 f:\sp\public\sdk\inc\reason.h -FILE 2223 f:\sp\public\sdk\inc\wincon.h -FILE 2224 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2225 f:\sp\public\sdk\inc\poppack.h -FILE 2226 f:\sp\public\sdk\inc\mcx.h -FILE 2227 f:\sp\public\sdk\inc\winuser.h -FILE 2228 f:\sp\public\sdk\inc\winnls.h -FILE 2229 f:\sp\vctools\crt_bld\self_x86\crt\src\glstatus.c -FILE 2230 f:\sp\public\sdk\inc\stralign.h -FILE 2231 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2232 f:\sp\public\sdk\inc\windef.h -FILE 2233 f:\sp\public\sdk\inc\tvout.h -FILE 2234 f:\sp\public\sdk\inc\winsvc.h -FILE 2235 f:\sp\public\sdk\inc\wingdi.h -FILE 2236 f:\sp\public\sdk\inc\ddbanned.h -FILE 2237 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2238 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2239 f:\sp\public\sdk\inc\winnt.h -FILE 2240 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2241 f:\sp\public\sdk\inc\winnetwk.h -FILE 2242 f:\sp\public\sdk\inc\imm.h -FILE 2243 f:\sp\public\sdk\inc\winbase.h -FILE 2244 f:\sp\public\sdk\inc\pshpack4.h -FILE 2245 f:\sp\public\sdk\inc\poppack.h -FILE 2246 f:\sp\public\sdk\inc\winnt.h -FILE 2247 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2248 f:\sp\public\sdk\inc\winnetwk.h -FILE 2249 f:\sp\public\sdk\inc\imm.h -FILE 2250 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2251 f:\sp\public\sdk\inc\pshpack1.h -FILE 2252 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2253 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2254 f:\sp\public\sdk\inc\winver.h -FILE 2255 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2256 f:\sp\public\sdk\inc\guiddef.h -FILE 2257 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2258 f:\sp\public\sdk\inc\specstrings.h -FILE 2259 f:\sp\public\sdk\inc\basetsd.h -FILE 2260 f:\sp\public\sdk\inc\windows.h -FILE 2261 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2262 f:\sp\public\sdk\inc\winreg.h -FILE 2263 f:\sp\vctools\crt_bld\self_x86\crt\src\getqloc.c -FILE 2264 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2265 f:\sp\public\sdk\inc\winbase.h -FILE 2266 f:\sp\public\sdk\inc\winerror.h -FILE 2267 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2268 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2269 f:\sp\public\sdk\inc\pshpack8.h -FILE 2270 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2271 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2272 f:\sp\public\sdk\inc\reason.h -FILE 2273 f:\sp\public\sdk\inc\ddbanned.h -FILE 2274 f:\sp\public\sdk\inc\wincon.h -FILE 2275 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2276 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2277 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2278 f:\sp\public\sdk\inc\pshpack2.h -FILE 2279 f:\sp\public\sdk\inc\mcx.h -FILE 2280 f:\sp\public\sdk\inc\winuser.h -FILE 2281 f:\sp\public\sdk\inc\winnls.h -FILE 2282 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2283 f:\sp\public\sdk\inc\windef.h -FILE 2284 f:\sp\public\sdk\inc\stralign.h -FILE 2285 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2286 f:\sp\public\sdk\inc\tvout.h -FILE 2287 f:\sp\public\sdk\inc\winsvc.h -FILE 2288 f:\sp\public\sdk\inc\wingdi.h -FILE 2289 f:\sp\public\sdk\inc\reason.h -FILE 2290 f:\sp\public\sdk\inc\wincon.h -FILE 2291 f:\sp\public\sdk\inc\pshpack2.h -FILE 2292 f:\sp\public\sdk\inc\mcx.h -FILE 2293 f:\sp\public\sdk\inc\winuser.h -FILE 2294 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2295 f:\sp\public\sdk\inc\winnls.h -FILE 2296 f:\sp\public\sdk\inc\guiddef.h -FILE 2297 f:\sp\public\sdk\inc\windows.h -FILE 2298 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2299 f:\sp\public\sdk\inc\specstrings.h -FILE 2300 f:\sp\public\sdk\inc\basetsd.h -FILE 2301 f:\sp\public\sdk\inc\stralign.h -FILE 2302 f:\sp\public\sdk\inc\tvout.h -FILE 2303 f:\sp\public\sdk\inc\winsvc.h -FILE 2304 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2305 f:\sp\public\sdk\inc\wingdi.h -FILE 2306 f:\sp\public\sdk\inc\pshpack4.h -FILE 2307 f:\sp\public\sdk\inc\poppack.h -FILE 2308 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2309 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2310 f:\sp\public\sdk\inc\winnetwk.h -FILE 2311 f:\sp\public\sdk\inc\imm.h -FILE 2312 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2313 f:\sp\public\sdk\inc\windef.h -FILE 2314 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2315 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2316 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2317 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2318 f:\sp\vctools\crt_bld\self_x86\crt\src\getenv.c -FILE 2319 f:\sp\public\sdk\inc\pshpack1.h -FILE 2320 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2321 f:\sp\public\sdk\inc\winver.h -FILE 2322 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2323 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2324 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2325 f:\sp\public\sdk\inc\winnt.h -FILE 2326 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2327 f:\sp\public\sdk\inc\ddbanned.h -FILE 2328 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2329 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2330 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2331 f:\sp\public\sdk\inc\winreg.h -FILE 2332 f:\sp\public\sdk\inc\winbase.h -FILE 2333 f:\sp\public\sdk\inc\winerror.h -FILE 2334 f:\sp\public\sdk\inc\pshpack8.h -FILE 2335 f:\sp\public\sdk\inc\poppack.h -FILE 2336 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2337 f:\sp\public\sdk\inc\winnetwk.h -FILE 2338 f:\sp\public\sdk\inc\imm.h -FILE 2339 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2340 f:\sp\public\sdk\inc\windef.h -FILE 2341 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2342 f:\sp\public\sdk\inc\pshpack1.h -FILE 2343 f:\sp\public\sdk\inc\winver.h -FILE 2344 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2345 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2346 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2347 f:\sp\public\sdk\inc\winnt.h -FILE 2348 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2349 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2350 f:\sp\public\sdk\inc\winreg.h -FILE 2351 f:\sp\vctools\crt_bld\self_x86\crt\src\errmode.c -FILE 2352 f:\sp\public\sdk\inc\winbase.h -FILE 2353 f:\sp\public\sdk\inc\winerror.h -FILE 2354 f:\sp\public\sdk\inc\pshpack8.h -FILE 2355 f:\sp\public\sdk\inc\reason.h -FILE 2356 f:\sp\public\sdk\inc\wincon.h -FILE 2357 f:\sp\public\sdk\inc\ddbanned.h -FILE 2358 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2359 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2360 f:\sp\public\sdk\inc\pshpack2.h -FILE 2361 f:\sp\public\sdk\inc\mcx.h -FILE 2362 f:\sp\public\sdk\inc\winuser.h -FILE 2363 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2364 f:\sp\public\sdk\inc\winnls.h -FILE 2365 f:\sp\public\sdk\inc\guiddef.h -FILE 2366 f:\sp\public\sdk\inc\windows.h -FILE 2367 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2368 f:\sp\public\sdk\inc\specstrings.h -FILE 2369 f:\sp\public\sdk\inc\basetsd.h -FILE 2370 f:\sp\public\sdk\inc\stralign.h -FILE 2371 f:\sp\public\sdk\inc\tvout.h -FILE 2372 f:\sp\public\sdk\inc\winsvc.h -FILE 2373 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2374 f:\sp\public\sdk\inc\wingdi.h -FILE 2375 f:\sp\public\sdk\inc\pshpack4.h -FILE 2376 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2377 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2378 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2379 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2380 f:\sp\vctools\crt_bld\self_x86\crt\src\dbghook.c -FILE 2381 f:\sp\public\sdk\inc\ddbanned.h -FILE 2382 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2383 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2384 f:\sp\public\sdk\inc\poppack.h -FILE 2385 f:\sp\public\sdk\inc\winnetwk.h -FILE 2386 f:\sp\public\sdk\inc\imm.h -FILE 2387 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2388 f:\sp\public\sdk\inc\windef.h -FILE 2389 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2390 f:\sp\public\sdk\inc\pshpack1.h -FILE 2391 f:\sp\public\sdk\inc\winver.h -FILE 2392 f:\sp\public\sdk\inc\windows.h -FILE 2393 f:\sp\public\sdk\inc\winnt.h -FILE 2394 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2395 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2396 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2397 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2398 f:\sp\public\sdk\inc\winreg.h -FILE 2399 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 2400 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.c -FILE 2401 f:\sp\public\sdk\inc\winbase.h -FILE 2402 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 2403 f:\sp\public\sdk\inc\winerror.h -FILE 2404 f:\sp\public\sdk\inc\pshpack8.h -FILE 2405 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2406 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2407 f:\sp\public\sdk\inc\reason.h -FILE 2408 f:\sp\public\sdk\inc\wincon.h -FILE 2409 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2410 f:\sp\public\sdk\inc\ddbanned.h -FILE 2411 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2412 f:\sp\public\sdk\inc\pshpack2.h -FILE 2413 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2414 f:\sp\public\sdk\inc\mcx.h -FILE 2415 f:\sp\public\sdk\inc\winuser.h -FILE 2416 f:\sp\public\sdk\inc\winnls.h -FILE 2417 f:\sp\public\sdk\inc\guiddef.h -FILE 2418 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2419 f:\sp\public\sdk\inc\specstrings.h -FILE 2420 f:\sp\public\sdk\inc\basetsd.h -FILE 2421 f:\sp\public\sdk\inc\stralign.h -FILE 2422 f:\sp\public\sdk\inc\tvout.h -FILE 2423 f:\sp\public\sdk\inc\winsvc.h -FILE 2424 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2425 f:\sp\public\sdk\inc\wingdi.h -FILE 2426 f:\sp\public\sdk\inc\pshpack4.h -FILE 2427 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2428 f:\sp\public\sdk\inc\mcx.h -FILE 2429 f:\sp\public\sdk\inc\winuser.h -FILE 2430 f:\sp\public\sdk\inc\winnls.h -FILE 2431 f:\sp\public\sdk\inc\stralign.h -FILE 2432 f:\sp\public\sdk\inc\tvout.h -FILE 2433 f:\sp\public\sdk\inc\winsvc.h -FILE 2434 f:\sp\public\sdk\inc\wingdi.h -FILE 2435 f:\sp\public\sdk\inc\pshpack4.h -FILE 2436 f:\sp\public\sdk\inc\winnt.h -FILE 2437 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2438 f:\sp\public\sdk\inc\poppack.h -FILE 2439 f:\sp\public\sdk\inc\winnetwk.h -FILE 2440 f:\sp\public\sdk\inc\imm.h -FILE 2441 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2442 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2443 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2444 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2445 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2446 f:\sp\public\sdk\inc\pshpack1.h -FILE 2447 f:\sp\vctools\crt_bld\self_x86\crt\src\crtmbox.c -FILE 2448 f:\sp\public\sdk\inc\winver.h -FILE 2449 f:\sp\public\sdk\inc\guiddef.h -FILE 2450 f:\sp\public\sdk\inc\windows.h -FILE 2451 f:\sp\public\sdk\inc\specstrings.h -FILE 2452 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2453 f:\sp\public\sdk\inc\basetsd.h -FILE 2454 f:\sp\public\sdk\inc\winreg.h -FILE 2455 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2456 f:\sp\public\sdk\inc\winbase.h -FILE 2457 f:\sp\public\sdk\inc\ddbanned.h -FILE 2458 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2459 f:\sp\public\sdk\inc\winerror.h -FILE 2460 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2461 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2462 f:\sp\public\sdk\inc\pshpack8.h -FILE 2463 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2464 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2465 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2466 f:\sp\public\sdk\inc\reason.h -FILE 2467 f:\sp\public\sdk\inc\wincon.h -FILE 2468 f:\sp\public\sdk\inc\pshpack2.h -FILE 2469 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2470 f:\sp\public\sdk\inc\windef.h -FILE 2471 f:\sp\public\sdk\inc\poppack.h -FILE 2472 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 2473 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2474 f:\sp\public\sdk\inc\winnetwk.h -FILE 2475 f:\sp\public\sdk\inc\imm.h -FILE 2476 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2477 f:\sp\public\sdk\inc\windef.h -FILE 2478 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2479 f:\sp\public\sdk\inc\pshpack1.h -FILE 2480 f:\sp\public\sdk\inc\winver.h -FILE 2481 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2482 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2483 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2484 f:\sp\public\sdk\inc\winnt.h -FILE 2485 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2486 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2487 f:\sp\public\sdk\inc\winreg.h -FILE 2488 f:\sp\vctools\crt_bld\self_x86\crt\src\cmiscdat.c -FILE 2489 f:\sp\public\sdk\inc\winbase.h -FILE 2490 f:\sp\public\sdk\inc\winerror.h -FILE 2491 f:\sp\public\sdk\inc\pshpack8.h -FILE 2492 f:\sp\public\sdk\inc\reason.h -FILE 2493 f:\sp\public\sdk\inc\wincon.h -FILE 2494 f:\sp\public\sdk\inc\ddbanned.h -FILE 2495 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2496 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2497 f:\sp\public\sdk\inc\pshpack2.h -FILE 2498 f:\sp\public\sdk\inc\mcx.h -FILE 2499 f:\sp\public\sdk\inc\winuser.h -FILE 2500 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2501 f:\sp\public\sdk\inc\winnls.h -FILE 2502 f:\sp\public\sdk\inc\guiddef.h -FILE 2503 f:\sp\public\sdk\inc\windows.h -FILE 2504 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2505 f:\sp\public\sdk\inc\specstrings.h -FILE 2506 f:\sp\public\sdk\inc\basetsd.h -FILE 2507 f:\sp\public\sdk\inc\stralign.h -FILE 2508 f:\sp\public\sdk\inc\tvout.h -FILE 2509 f:\sp\public\sdk\inc\winsvc.h -FILE 2510 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2511 f:\sp\public\sdk\inc\wingdi.h -FILE 2512 f:\sp\public\sdk\inc\pshpack4.h -FILE 2513 f:\sp\public\sdk\inc\pshpack4.h -FILE 2514 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2515 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 2516 f:\sp\public\sdk\inc\poppack.h -FILE 2517 f:\sp\public\sdk\inc\winnetwk.h -FILE 2518 f:\sp\public\sdk\inc\imm.h -FILE 2519 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2520 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2521 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2522 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2523 f:\sp\public\sdk\inc\windef.h -FILE 2524 f:\sp\public\sdk\inc\pshpack1.h -FILE 2525 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2526 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2527 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2528 f:\sp\public\sdk\inc\winver.h -FILE 2529 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2530 f:\sp\public\sdk\inc\winnt.h -FILE 2531 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2532 f:\sp\public\sdk\inc\winreg.h -FILE 2533 f:\sp\vctools\crt_bld\self_x86\crt\src\abort.c -FILE 2534 f:\sp\public\sdk\inc\winbase.h -FILE 2535 f:\sp\public\sdk\inc\winerror.h -FILE 2536 f:\sp\public\sdk\inc\pshpack8.h -FILE 2537 f:\sp\public\sdk\inc\reason.h -FILE 2538 f:\sp\public\sdk\inc\ddbanned.h -FILE 2539 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2540 f:\sp\public\sdk\inc\wincon.h -FILE 2541 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2542 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2543 f:\sp\public\sdk\inc\pshpack2.h -FILE 2544 f:\sp\public\sdk\inc\mcx.h -FILE 2545 f:\sp\public\sdk\inc\winuser.h -FILE 2546 f:\sp\public\sdk\inc\winnls.h -FILE 2547 f:\sp\public\sdk\inc\guiddef.h -FILE 2548 f:\sp\public\sdk\inc\stralign.h -FILE 2549 f:\sp\public\sdk\inc\specstrings.h -FILE 2550 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2551 f:\sp\public\sdk\inc\basetsd.h -FILE 2552 f:\sp\public\sdk\inc\windows.h -FILE 2553 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2554 f:\sp\public\sdk\inc\tvout.h -FILE 2555 f:\sp\public\sdk\inc\winsvc.h -FILE 2556 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2557 f:\sp\public\sdk\inc\wingdi.h -FILE 2558 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2559 f:\sp\public\sdk\inc\wincon.h -FILE 2560 f:\sp\public\sdk\inc\imm.h -FILE 2561 f:\sp\public\sdk\inc\winbase.h -FILE 2562 f:\sp\public\sdk\inc\wingdi.h -FILE 2563 f:\sp\public\sdk\inc\winver.h -FILE 2564 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2565 f:\sp\public\sdk\inc\windows.h -FILE 2566 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2567 f:\sp\public\sdk\inc\pshpack2.h -FILE 2568 f:\sp\public\sdk\inc\reason.h -FILE 2569 f:\sp\vctools\crt_bld\self_x86\crt\src\a_str.c -FILE 2570 f:\sp\public\sdk\inc\specstrings.h -FILE 2571 f:\sp\public\sdk\inc\basetsd.h -FILE 2572 f:\sp\public\sdk\inc\pshpack4.h -FILE 2573 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2574 f:\sp\public\sdk\inc\winnetwk.h -FILE 2575 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2576 f:\sp\public\sdk\inc\stralign.h -FILE 2577 f:\sp\public\sdk\inc\poppack.h -FILE 2578 f:\sp\public\sdk\inc\winsvc.h -FILE 2579 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2580 f:\sp\public\sdk\inc\windef.h -FILE 2581 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2582 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2583 f:\sp\public\sdk\inc\winuser.h -FILE 2584 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2585 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2586 f:\sp\public\sdk\inc\mcx.h -FILE 2587 f:\sp\public\sdk\inc\pshpack8.h -FILE 2588 f:\sp\public\sdk\inc\guiddef.h -FILE 2589 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2590 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2591 f:\sp\public\sdk\inc\winnt.h -FILE 2592 f:\sp\public\sdk\inc\winnls.h -FILE 2593 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2594 f:\sp\public\sdk\inc\pshpack1.h -FILE 2595 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2596 f:\sp\public\sdk\inc\winerror.h -FILE 2597 f:\sp\public\sdk\inc\winreg.h -FILE 2598 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2599 f:\sp\public\sdk\inc\ddbanned.h -FILE 2600 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2601 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2602 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2603 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2604 f:\sp\public\sdk\inc\tvout.h -FILE 2605 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2606 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2607 f:\sp\public\sdk\inc\wincon.h -FILE 2608 f:\sp\public\sdk\inc\imm.h -FILE 2609 f:\sp\public\sdk\inc\winbase.h -FILE 2610 f:\sp\public\sdk\inc\wingdi.h -FILE 2611 f:\sp\public\sdk\inc\winver.h -FILE 2612 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2613 f:\sp\public\sdk\inc\windows.h -FILE 2614 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2615 f:\sp\public\sdk\inc\pshpack2.h -FILE 2616 f:\sp\public\sdk\inc\reason.h -FILE 2617 f:\sp\vctools\crt_bld\self_x86\crt\src\a_map.c -FILE 2618 f:\sp\public\sdk\inc\specstrings.h -FILE 2619 f:\sp\public\sdk\inc\basetsd.h -FILE 2620 f:\sp\public\sdk\inc\pshpack4.h -FILE 2621 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2622 f:\sp\public\sdk\inc\winnetwk.h -FILE 2623 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2624 f:\sp\public\sdk\inc\stralign.h -FILE 2625 f:\sp\public\sdk\inc\poppack.h -FILE 2626 f:\sp\public\sdk\inc\winsvc.h -FILE 2627 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2628 f:\sp\public\sdk\inc\windef.h -FILE 2629 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2630 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2631 f:\sp\public\sdk\inc\winuser.h -FILE 2632 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2633 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2634 f:\sp\public\sdk\inc\mcx.h -FILE 2635 f:\sp\public\sdk\inc\pshpack8.h -FILE 2636 f:\sp\public\sdk\inc\guiddef.h -FILE 2637 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2638 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2639 f:\sp\public\sdk\inc\winnt.h -FILE 2640 f:\sp\public\sdk\inc\winnls.h -FILE 2641 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2642 f:\sp\public\sdk\inc\pshpack1.h -FILE 2643 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2644 f:\sp\public\sdk\inc\winerror.h -FILE 2645 f:\sp\public\sdk\inc\winreg.h -FILE 2646 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2647 f:\sp\public\sdk\inc\ddbanned.h -FILE 2648 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2649 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2650 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2651 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2652 f:\sp\public\sdk\inc\tvout.h -FILE 2653 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2654 f:\sp\public\sdk\inc\wincon.h -FILE 2655 f:\sp\public\sdk\inc\imm.h -FILE 2656 f:\sp\public\sdk\inc\winbase.h -FILE 2657 f:\sp\public\sdk\inc\wingdi.h -FILE 2658 f:\sp\public\sdk\inc\winver.h -FILE 2659 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2660 f:\sp\public\sdk\inc\windows.h -FILE 2661 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2662 f:\sp\public\sdk\inc\pshpack2.h -FILE 2663 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2664 f:\sp\public\sdk\inc\reason.h -FILE 2665 f:\sp\vctools\crt_bld\self_x86\crt\src\a_loc.c -FILE 2666 f:\sp\public\sdk\inc\specstrings.h -FILE 2667 f:\sp\public\sdk\inc\basetsd.h -FILE 2668 f:\sp\public\sdk\inc\pshpack4.h -FILE 2669 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2670 f:\sp\public\sdk\inc\winnetwk.h -FILE 2671 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2672 f:\sp\public\sdk\inc\stralign.h -FILE 2673 f:\sp\public\sdk\inc\poppack.h -FILE 2674 f:\sp\public\sdk\inc\winsvc.h -FILE 2675 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2676 f:\sp\public\sdk\inc\windef.h -FILE 2677 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2678 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2679 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2680 f:\sp\public\sdk\inc\winuser.h -FILE 2681 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2682 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2683 f:\sp\public\sdk\inc\mcx.h -FILE 2684 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2685 f:\sp\public\sdk\inc\pshpack8.h -FILE 2686 f:\sp\public\sdk\inc\guiddef.h -FILE 2687 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2688 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2689 f:\sp\public\sdk\inc\winnt.h -FILE 2690 f:\sp\public\sdk\inc\winnls.h -FILE 2691 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2692 f:\sp\public\sdk\inc\pshpack1.h -FILE 2693 f:\sp\public\sdk\inc\winerror.h -FILE 2694 f:\sp\public\sdk\inc\winreg.h -FILE 2695 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2696 f:\sp\public\sdk\inc\ddbanned.h -FILE 2697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2698 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2699 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2700 f:\sp\public\sdk\inc\tvout.h -FILE 2701 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2702 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2703 f:\sp\public\sdk\inc\poppack.h -FILE 2704 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2705 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2706 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2707 f:\sp\public\sdk\inc\winnetwk.h -FILE 2708 f:\sp\public\sdk\inc\imm.h -FILE 2709 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2710 f:\sp\public\sdk\inc\windef.h -FILE 2711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2712 f:\sp\public\sdk\inc\pshpack1.h -FILE 2713 f:\sp\public\sdk\inc\winver.h -FILE 2714 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2715 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2716 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2717 f:\sp\public\sdk\inc\winnt.h -FILE 2718 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2719 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2720 f:\sp\public\sdk\inc\winreg.h -FILE 2721 f:\sp\vctools\crt_bld\self_x86\crt\src\a_env.c -FILE 2722 f:\sp\public\sdk\inc\winbase.h -FILE 2723 f:\sp\public\sdk\inc\winerror.h -FILE 2724 f:\sp\public\sdk\inc\pshpack8.h -FILE 2725 f:\sp\public\sdk\inc\reason.h -FILE 2726 f:\sp\public\sdk\inc\wincon.h -FILE 2727 f:\sp\public\sdk\inc\ddbanned.h -FILE 2728 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2729 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2730 f:\sp\public\sdk\inc\pshpack2.h -FILE 2731 f:\sp\public\sdk\inc\mcx.h -FILE 2732 f:\sp\public\sdk\inc\winuser.h -FILE 2733 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2734 f:\sp\public\sdk\inc\winnls.h -FILE 2735 f:\sp\public\sdk\inc\guiddef.h -FILE 2736 f:\sp\public\sdk\inc\windows.h -FILE 2737 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2738 f:\sp\public\sdk\inc\specstrings.h -FILE 2739 f:\sp\public\sdk\inc\basetsd.h -FILE 2740 f:\sp\public\sdk\inc\stralign.h -FILE 2741 f:\sp\public\sdk\inc\tvout.h -FILE 2742 f:\sp\public\sdk\inc\winsvc.h -FILE 2743 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2744 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2745 f:\sp\public\sdk\inc\wingdi.h -FILE 2746 f:\sp\public\sdk\inc\pshpack4.h -FILE 2747 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2748 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2749 f:\sp\public\sdk\inc\wincon.h -FILE 2750 f:\sp\public\sdk\inc\imm.h -FILE 2751 f:\sp\public\sdk\inc\winbase.h -FILE 2752 f:\sp\public\sdk\inc\wingdi.h -FILE 2753 f:\sp\public\sdk\inc\winver.h -FILE 2754 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2755 f:\sp\public\sdk\inc\windows.h -FILE 2756 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2757 f:\sp\public\sdk\inc\pshpack2.h -FILE 2758 f:\sp\public\sdk\inc\reason.h -FILE 2759 f:\sp\vctools\crt_bld\self_x86\crt\src\a_cmp.c -FILE 2760 f:\sp\public\sdk\inc\specstrings.h -FILE 2761 f:\sp\public\sdk\inc\basetsd.h -FILE 2762 f:\sp\public\sdk\inc\pshpack4.h -FILE 2763 f:\sp\public\sdk\inc\winnetwk.h -FILE 2764 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2765 f:\sp\public\sdk\inc\stralign.h -FILE 2766 f:\sp\public\sdk\inc\poppack.h -FILE 2767 f:\sp\public\sdk\inc\winsvc.h -FILE 2768 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2769 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2770 f:\sp\public\sdk\inc\windef.h -FILE 2771 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2772 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2773 f:\sp\public\sdk\inc\winuser.h -FILE 2774 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2775 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2776 f:\sp\public\sdk\inc\mcx.h -FILE 2777 f:\sp\public\sdk\inc\pshpack8.h -FILE 2778 f:\sp\public\sdk\inc\guiddef.h -FILE 2779 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2780 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2781 f:\sp\public\sdk\inc\winnt.h -FILE 2782 f:\sp\public\sdk\inc\winnls.h -FILE 2783 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2784 f:\sp\public\sdk\inc\pshpack1.h -FILE 2785 f:\sp\public\sdk\inc\winerror.h -FILE 2786 f:\sp\public\sdk\inc\winreg.h -FILE 2787 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2788 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2789 f:\sp\public\sdk\inc\ddbanned.h -FILE 2790 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2791 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2792 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2793 f:\sp\public\sdk\inc\tvout.h -FILE 2794 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2795 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm -FILE 2796 f:\sp\public\sdk\inc\poppack.h -FILE 2797 f:\sp\public\sdk\inc\winnetwk.h -FILE 2798 f:\sp\public\sdk\inc\imm.h -FILE 2799 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2800 f:\sp\public\sdk\inc\windef.h -FILE 2801 f:\sp\public\sdk\inc\pshpack1.h -FILE 2802 f:\sp\public\sdk\inc\winver.h -FILE 2803 f:\sp\public\sdk\inc\windows.h -FILE 2804 f:\sp\public\sdk\inc\winnt.h -FILE 2805 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2806 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2807 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2808 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2809 f:\sp\public\sdk\inc\winreg.h -FILE 2810 f:\sp\public\sdk\inc\winbase.h -FILE 2811 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\secchk.c -FILE 2812 f:\sp\public\sdk\inc\winerror.h -FILE 2813 f:\sp\public\sdk\inc\pshpack8.h -FILE 2814 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 2815 f:\sp\public\sdk\inc\reason.h -FILE 2816 f:\sp\public\sdk\inc\wincon.h -FILE 2817 f:\sp\public\sdk\inc\ddbanned.h -FILE 2818 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2819 f:\sp\public\sdk\inc\pshpack2.h -FILE 2820 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2821 f:\sp\public\sdk\inc\mcx.h -FILE 2822 f:\sp\public\sdk\inc\winuser.h -FILE 2823 f:\sp\public\sdk\inc\winnls.h -FILE 2824 f:\sp\public\sdk\inc\guiddef.h -FILE 2825 f:\sp\public\sdk\inc\specstrings.h -FILE 2826 f:\sp\public\sdk\inc\basetsd.h -FILE 2827 f:\sp\public\sdk\inc\stralign.h -FILE 2828 f:\sp\public\sdk\inc\tvout.h -FILE 2829 f:\sp\public\sdk\inc\winsvc.h -FILE 2830 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2831 f:\sp\public\sdk\inc\wingdi.h -FILE 2832 f:\sp\public\sdk\inc\pshpack4.h -FILE 2833 f:\sp\public\sdk\inc\poppack.h -FILE 2834 f:\sp\public\sdk\inc\winnetwk.h -FILE 2835 f:\sp\public\sdk\inc\imm.h -FILE 2836 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2837 f:\sp\public\sdk\inc\windef.h -FILE 2838 f:\sp\public\sdk\inc\pshpack1.h -FILE 2839 f:\sp\public\sdk\inc\winver.h -FILE 2840 f:\sp\public\sdk\inc\windows.h -FILE 2841 f:\sp\public\sdk\inc\winnt.h -FILE 2842 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2843 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2844 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2845 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2846 f:\sp\public\sdk\inc\winreg.h -FILE 2847 f:\sp\public\sdk\inc\winbase.h -FILE 2848 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c -FILE 2849 f:\sp\public\sdk\inc\winerror.h -FILE 2850 f:\sp\public\sdk\inc\pshpack8.h -FILE 2851 f:\sp\public\sdk\inc\reason.h -FILE 2852 f:\sp\public\sdk\inc\wincon.h -FILE 2853 f:\sp\public\sdk\inc\ddbanned.h -FILE 2854 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2855 f:\sp\public\sdk\inc\pshpack2.h -FILE 2856 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2857 f:\sp\public\sdk\inc\mcx.h -FILE 2858 f:\sp\public\sdk\inc\winuser.h -FILE 2859 f:\sp\public\sdk\inc\winnls.h -FILE 2860 f:\sp\public\sdk\inc\guiddef.h -FILE 2861 f:\sp\public\sdk\inc\specstrings.h -FILE 2862 f:\sp\public\sdk\inc\basetsd.h -FILE 2863 f:\sp\public\sdk\inc\stralign.h -FILE 2864 f:\sp\public\sdk\inc\tvout.h -FILE 2865 f:\sp\public\sdk\inc\winsvc.h -FILE 2866 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2867 f:\sp\public\sdk\inc\wingdi.h -FILE 2868 f:\sp\public\sdk\inc\pshpack4.h -FILE 2869 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm -FILE 2870 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc -FILE 2871 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm -FILE 2872 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc -FILE 2873 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc -FILE 2874 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc -FILE 2875 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm -FILE 2876 f:\sp\public\sdk\inc\ntldr.h -FILE 2877 f:\sp\public\sdk\inc\ntpoapi.h -FILE 2878 f:\sp\public\sdk\inc\ntexapi.h -FILE 2879 f:\sp\public\sdk\inc\pshpack1.h -FILE 2880 f:\sp\public\sdk\inc\pshpack8.h -FILE 2881 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 2882 f:\sp\public\sdk\inc\ntdef.h -FILE 2883 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 2884 f:\sp\public\sdk\inc\mce.h -FILE 2885 f:\sp\public\sdk\inc\poppack.h -FILE 2886 f:\sp\public\sdk\inc\ntimage.h -FILE 2887 f:\sp\public\sdk\inc\pshpack2.h -FILE 2888 f:\sp\public\sdk\inc\ntpsapi.h -FILE 2889 f:\sp\public\sdk\inc\nti386.h -FILE 2890 f:\sp\public\sdk\inc\nt.h -FILE 2891 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 2892 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 2893 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 2894 f:\sp\public\sdk\inc\specstrings.h -FILE 2895 f:\sp\public\sdk\inc\basetsd.h -FILE 2896 f:\sp\public\sdk\inc\ntxcapi.h -FILE 2897 f:\sp\public\sdk\inc\guiddef.h -FILE 2898 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c -FILE 2899 f:\sp\public\sdk\inc\ntstatus.h -FILE 2900 f:\sp\public\sdk\inc\ntkeapi.h -FILE 2901 f:\sp\public\sdk\inc\ntconfig.h -FILE 2902 f:\sp\public\sdk\inc\ntregapi.h -FILE 2903 f:\sp\public\sdk\inc\ntmmapi.h -FILE 2904 f:\sp\public\sdk\inc\ntobapi.h -FILE 2905 f:\sp\public\sdk\inc\nxi386.h -FILE 2906 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h -FILE 2907 f:\sp\public\sdk\inc\ntioapi.h -FILE 2908 f:\sp\public\sdk\inc\devioctl.h -FILE 2909 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 2910 f:\sp\public\sdk\inc\ntseapi.h -FILE 2911 f:\sp\public\sdk\inc\ddbanned.h -FILE 2912 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 2913 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 2914 f:\sp\public\sdk\inc\ntnls.h -FILE 2915 f:\sp\public\sdk\inc\ntelfapi.h -FILE 2916 f:\sp\public\sdk\inc\pshpack4.h -FILE 2917 f:\sp\public\sdk\inc\ntiolog.h -FILE 2918 f:\sp\public\sdk\inc\ntlpcapi.h -FILE 2919 f:\sp\public\sdk\inc\ntpnpapi.h -FILE 2920 f:\sp\public\sdk\inc\cfg.h -FILE 2921 f:\sp\public\sdk\inc\pebteb.h -FILE 2922 f:\sp\public\sdk\inc\wincon.h -FILE 2923 f:\sp\public\sdk\inc\imm.h -FILE 2924 f:\sp\public\sdk\inc\winbase.h -FILE 2925 f:\sp\public\sdk\inc\wingdi.h -FILE 2926 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2927 f:\sp\public\sdk\inc\winver.h -FILE 2928 f:\sp\public\sdk\inc\pshpack2.h -FILE 2929 f:\sp\public\sdk\inc\reason.h -FILE 2930 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 2931 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2932 f:\sp\vctools\crt_bld\self_x86\crt\src\mbsnbico.c -FILE 2933 f:\sp\public\sdk\inc\specstrings.h -FILE 2934 f:\sp\public\sdk\inc\basetsd.h -FILE 2935 f:\sp\public\sdk\inc\pshpack4.h -FILE 2936 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2937 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 2938 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2939 f:\sp\public\sdk\inc\winnetwk.h -FILE 2940 f:\sp\public\sdk\inc\stralign.h -FILE 2941 f:\sp\public\sdk\inc\poppack.h -FILE 2942 f:\sp\public\sdk\inc\winsvc.h -FILE 2943 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2944 f:\sp\public\sdk\inc\windef.h -FILE 2945 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2946 f:\sp\public\sdk\inc\winuser.h -FILE 2947 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2948 f:\sp\public\sdk\inc\windows.h -FILE 2949 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2950 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2951 f:\sp\public\sdk\inc\mcx.h -FILE 2952 f:\sp\public\sdk\inc\pshpack8.h -FILE 2953 f:\sp\public\sdk\inc\guiddef.h -FILE 2954 f:\sp\public\sdk\inc\winnt.h -FILE 2955 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2956 f:\sp\public\sdk\inc\winnls.h -FILE 2957 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2958 f:\sp\public\sdk\inc\pshpack1.h -FILE 2959 f:\sp\public\sdk\inc\winerror.h -FILE 2960 f:\sp\public\sdk\inc\winreg.h -FILE 2961 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2962 f:\sp\public\sdk\inc\ddbanned.h -FILE 2963 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2964 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2965 f:\sp\public\sdk\inc\tvout.h -FILE 2966 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2967 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2968 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2969 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2970 f:\sp\public\sdk\inc\wincon.h -FILE 2971 f:\sp\public\sdk\inc\imm.h -FILE 2972 f:\sp\public\sdk\inc\winbase.h -FILE 2973 f:\sp\public\sdk\inc\wingdi.h -FILE 2974 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 2975 f:\sp\public\sdk\inc\winver.h -FILE 2976 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2977 f:\sp\public\sdk\inc\windows.h -FILE 2978 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2979 f:\sp\public\sdk\inc\pshpack2.h -FILE 2980 f:\sp\public\sdk\inc\reason.h -FILE 2981 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2982 f:\sp\vctools\crt_bld\self_x86\crt\src\mbschr.c -FILE 2983 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2984 f:\sp\public\sdk\inc\specstrings.h -FILE 2985 f:\sp\public\sdk\inc\basetsd.h -FILE 2986 f:\sp\public\sdk\inc\pshpack4.h -FILE 2987 f:\sp\public\sdk\inc\winnetwk.h -FILE 2988 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2989 f:\sp\public\sdk\inc\stralign.h -FILE 2990 f:\sp\public\sdk\inc\poppack.h -FILE 2991 f:\sp\public\sdk\inc\winsvc.h -FILE 2992 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2993 f:\sp\public\sdk\inc\windef.h -FILE 2994 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2995 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2996 f:\sp\public\sdk\inc\winuser.h -FILE 2997 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2998 f:\sp\public\sdk\inc\mcx.h -FILE 2999 f:\sp\public\sdk\inc\pshpack8.h -FILE 3000 f:\sp\public\sdk\inc\guiddef.h -FILE 3001 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 3002 f:\sp\public\sdk\inc\winnt.h -FILE 3003 f:\sp\public\sdk\inc\winnls.h -FILE 3004 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3005 f:\sp\public\sdk\inc\pshpack1.h -FILE 3006 f:\sp\public\sdk\inc\winerror.h -FILE 3007 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3008 f:\sp\public\sdk\inc\winreg.h -FILE 3009 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3010 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3011 f:\sp\public\sdk\inc\ddbanned.h -FILE 3012 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3013 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3014 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3015 f:\sp\public\sdk\inc\tvout.h -FILE 3016 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3017 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 3018 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 3019 f:\sp\public\sdk\inc\wincon.h -FILE 3020 f:\sp\public\sdk\inc\imm.h -FILE 3021 f:\sp\public\sdk\inc\winbase.h -FILE 3022 f:\sp\public\sdk\inc\wingdi.h -FILE 3023 f:\sp\public\sdk\inc\winver.h -FILE 3024 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3025 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3026 f:\sp\public\sdk\inc\pshpack2.h -FILE 3027 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 3028 f:\sp\public\sdk\inc\reason.h -FILE 3029 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.c -FILE 3030 f:\sp\public\sdk\inc\specstrings.h -FILE 3031 f:\sp\public\sdk\inc\basetsd.h -FILE 3032 f:\sp\public\sdk\inc\pshpack4.h -FILE 3033 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3034 f:\sp\public\sdk\inc\winnetwk.h -FILE 3035 f:\sp\public\sdk\inc\stralign.h -FILE 3036 f:\sp\public\sdk\inc\poppack.h -FILE 3037 f:\sp\public\sdk\inc\winsvc.h -FILE 3038 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3039 f:\sp\public\sdk\inc\windef.h -FILE 3040 f:\sp\public\sdk\inc\winuser.h -FILE 3041 f:\sp\public\sdk\inc\windows.h -FILE 3042 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3043 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3044 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3045 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3046 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3047 f:\sp\public\sdk\inc\mcx.h -FILE 3048 f:\sp\public\sdk\inc\pshpack8.h -FILE 3049 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3050 f:\sp\public\sdk\inc\guiddef.h -FILE 3051 f:\sp\public\sdk\inc\winnt.h -FILE 3052 f:\sp\public\sdk\inc\winnls.h -FILE 3053 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3054 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 3055 f:\sp\public\sdk\inc\pshpack1.h -FILE 3056 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3057 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3058 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3059 f:\sp\public\sdk\inc\winerror.h -FILE 3060 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 3061 f:\sp\public\sdk\inc\winreg.h -FILE 3062 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3063 f:\sp\public\sdk\inc\ddbanned.h -FILE 3064 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3065 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3066 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 3067 f:\sp\public\sdk\inc\tvout.h -FILE 3068 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3069 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3070 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3071 f:\sp\public\sdk\inc\wincon.h -FILE 3072 f:\sp\public\sdk\inc\imm.h -FILE 3073 f:\sp\public\sdk\inc\winbase.h -FILE 3074 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3075 f:\sp\public\sdk\inc\wingdi.h -FILE 3076 f:\sp\public\sdk\inc\windef.h -FILE 3077 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 3078 f:\sp\public\sdk\inc\winver.h -FILE 3079 f:\sp\public\sdk\inc\pshpack2.h -FILE 3080 f:\sp\public\sdk\inc\reason.h -FILE 3081 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3082 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3083 f:\sp\vctools\crt_bld\self_x86\crt\src\ismbbyte.c -FILE 3084 f:\sp\public\sdk\inc\winnt.h -FILE 3085 f:\sp\public\sdk\inc\specstrings.h -FILE 3086 f:\sp\public\sdk\inc\basetsd.h -FILE 3087 f:\sp\public\sdk\inc\pshpack4.h -FILE 3088 f:\sp\public\sdk\inc\winnetwk.h -FILE 3089 f:\sp\public\sdk\inc\stralign.h -FILE 3090 f:\sp\public\sdk\inc\poppack.h -FILE 3091 f:\sp\public\sdk\inc\winsvc.h -FILE 3092 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3093 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3094 f:\sp\public\sdk\inc\winuser.h -FILE 3095 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3096 f:\sp\public\sdk\inc\mcx.h -FILE 3097 f:\sp\public\sdk\inc\pshpack8.h -FILE 3098 f:\sp\public\sdk\inc\guiddef.h -FILE 3099 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3100 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 3101 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3102 f:\sp\public\sdk\inc\windows.h -FILE 3103 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3104 f:\sp\public\sdk\inc\winnls.h -FILE 3105 f:\sp\public\sdk\inc\pshpack1.h -FILE 3106 f:\sp\public\sdk\inc\winerror.h -FILE 3107 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3108 f:\sp\public\sdk\inc\winreg.h -FILE 3109 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3110 f:\sp\public\sdk\inc\ddbanned.h -FILE 3111 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3112 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3113 f:\sp\public\sdk\inc\tvout.h -FILE 3114 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 3115 f:\sp\public\sdk\inc\poppack.h -FILE 3116 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3117 f:\sp\public\sdk\inc\winnetwk.h -FILE 3118 f:\sp\public\sdk\inc\imm.h -FILE 3119 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3120 f:\sp\public\sdk\inc\windef.h -FILE 3121 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3122 f:\sp\public\sdk\inc\pshpack1.h -FILE 3123 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 3124 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3125 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3126 f:\sp\public\sdk\inc\winver.h -FILE 3127 f:\sp\public\sdk\inc\windows.h -FILE 3128 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3129 f:\sp\public\sdk\inc\winnt.h -FILE 3130 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3131 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3132 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3133 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3134 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3135 f:\sp\public\sdk\inc\winreg.h -FILE 3136 f:\sp\public\sdk\inc\winbase.h -FILE 3137 f:\sp\vctools\crt_bld\self_x86\crt\src\ioinit.c -FILE 3138 f:\sp\public\sdk\inc\winerror.h -FILE 3139 f:\sp\public\sdk\inc\pshpack8.h -FILE 3140 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3141 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3142 f:\sp\public\sdk\inc\reason.h -FILE 3143 f:\sp\public\sdk\inc\wincon.h -FILE 3144 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3145 f:\sp\public\sdk\inc\ddbanned.h -FILE 3146 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3147 f:\sp\public\sdk\inc\pshpack2.h -FILE 3148 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3149 f:\sp\public\sdk\inc\mcx.h -FILE 3150 f:\sp\public\sdk\inc\winuser.h -FILE 3151 f:\sp\public\sdk\inc\winnls.h -FILE 3152 f:\sp\public\sdk\inc\guiddef.h -FILE 3153 f:\sp\public\sdk\inc\specstrings.h -FILE 3154 f:\sp\public\sdk\inc\basetsd.h -FILE 3155 f:\sp\public\sdk\inc\stralign.h -FILE 3156 f:\sp\public\sdk\inc\tvout.h -FILE 3157 f:\sp\public\sdk\inc\winsvc.h -FILE 3158 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3159 f:\sp\public\sdk\inc\wingdi.h -FILE 3160 f:\sp\public\sdk\inc\pshpack4.h -FILE 3161 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\ulldvrm.asm -FILE 3162 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 3163 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc -FILE 3164 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\llmul.asm -FILE 3165 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 3166 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc -FILE 3167 f:\sp\public\sdk\inc\poppack.h -FILE 3168 f:\sp\public\sdk\inc\winnetwk.h -FILE 3169 f:\sp\public\sdk\inc\imm.h -FILE 3170 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3171 f:\sp\public\sdk\inc\windef.h -FILE 3172 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3173 f:\sp\public\sdk\inc\pshpack1.h -FILE 3174 f:\sp\public\sdk\inc\winver.h -FILE 3175 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3176 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3177 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3178 f:\sp\public\sdk\inc\winnt.h -FILE 3179 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3180 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3181 f:\sp\public\sdk\inc\winreg.h -FILE 3182 f:\sp\vctools\crt_bld\self_x86\crt\src\_newmode.c -FILE 3183 f:\sp\public\sdk\inc\winbase.h -FILE 3184 f:\sp\public\sdk\inc\winerror.h -FILE 3185 f:\sp\public\sdk\inc\pshpack8.h -FILE 3186 f:\sp\public\sdk\inc\reason.h -FILE 3187 f:\sp\public\sdk\inc\wincon.h -FILE 3188 f:\sp\public\sdk\inc\ddbanned.h -FILE 3189 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3190 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3191 f:\sp\public\sdk\inc\pshpack2.h -FILE 3192 f:\sp\public\sdk\inc\mcx.h -FILE 3193 f:\sp\public\sdk\inc\winuser.h -FILE 3194 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3195 f:\sp\public\sdk\inc\winnls.h -FILE 3196 f:\sp\public\sdk\inc\guiddef.h -FILE 3197 f:\sp\public\sdk\inc\windows.h -FILE 3198 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3199 f:\sp\public\sdk\inc\specstrings.h -FILE 3200 f:\sp\public\sdk\inc\basetsd.h -FILE 3201 f:\sp\public\sdk\inc\stralign.h -FILE 3202 f:\sp\public\sdk\inc\tvout.h -FILE 3203 f:\sp\public\sdk\inc\winsvc.h -FILE 3204 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3205 f:\sp\public\sdk\inc\wingdi.h -FILE 3206 f:\sp\public\sdk\inc\pshpack4.h -FILE 3207 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h -FILE 3208 f:\sp\public\sdk\inc\winerror.h -FILE 3209 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 3210 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 3211 f:\sp\public\sdk\inc\winreg.h -FILE 3212 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3213 f:\sp\public\sdk\inc\tvout.h -FILE 3214 f:\sp\vctools\crt_bld\self_x86\crt\src\delete.cpp -FILE 3215 f:\sp\public\sdk\inc\wincon.h -FILE 3216 f:\sp\public\sdk\inc\imm.h -FILE 3217 f:\sp\public\sdk\inc\winbase.h -FILE 3218 f:\sp\public\sdk\inc\wingdi.h -FILE 3219 f:\sp\public\sdk\inc\winver.h -FILE 3220 f:\sp\public\sdk\inc\windows.h -FILE 3221 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3222 f:\sp\public\sdk\inc\pshpack2.h -FILE 3223 f:\sp\public\sdk\inc\reason.h -FILE 3224 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3225 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3226 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3227 f:\sp\public\sdk\inc\specstrings.h -FILE 3228 f:\sp\public\sdk\inc\basetsd.h -FILE 3229 f:\sp\public\sdk\inc\pshpack4.h -FILE 3230 f:\sp\public\sdk\inc\winnetwk.h -FILE 3231 f:\sp\public\sdk\inc\stralign.h -FILE 3232 f:\sp\public\sdk\inc\poppack.h -FILE 3233 f:\sp\public\sdk\inc\winsvc.h -FILE 3234 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3235 f:\sp\public\sdk\inc\windef.h -FILE 3236 f:\sp\public\sdk\inc\winuser.h -FILE 3237 f:\sp\public\sdk\inc\mcx.h -FILE 3238 f:\sp\public\sdk\inc\pshpack8.h -FILE 3239 f:\sp\public\sdk\inc\ddbanned.h -FILE 3240 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3241 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3242 f:\sp\public\sdk\inc\guiddef.h -FILE 3243 f:\sp\public\sdk\inc\winnt.h -FILE 3244 f:\sp\public\sdk\inc\winnls.h -FILE 3245 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3246 f:\sp\public\sdk\inc\pshpack1.h -FILE 3247 f:\sp\public\sdk\inc\tvout.h -FILE 3248 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3249 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 3250 f:\sp\public\sdk\inc\wincon.h -FILE 3251 f:\sp\public\sdk\inc\imm.h -FILE 3252 f:\sp\public\sdk\inc\winbase.h -FILE 3253 f:\sp\public\sdk\inc\wingdi.h -FILE 3254 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3255 f:\sp\public\sdk\inc\winver.h -FILE 3256 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3257 f:\sp\public\sdk\inc\windows.h -FILE 3258 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3259 f:\sp\public\sdk\inc\pshpack2.h -FILE 3260 f:\sp\vctools\crt_bld\self_x86\crt\src\handler.cpp -FILE 3261 f:\sp\public\sdk\inc\reason.h -FILE 3262 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3263 f:\sp\public\sdk\inc\specstrings.h -FILE 3264 f:\sp\public\sdk\inc\basetsd.h -FILE 3265 f:\sp\public\sdk\inc\pshpack4.h -FILE 3266 f:\sp\public\sdk\inc\winnetwk.h -FILE 3267 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3268 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3269 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3270 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3271 f:\sp\public\sdk\inc\stralign.h -FILE 3272 f:\sp\public\sdk\inc\poppack.h -FILE 3273 f:\sp\public\sdk\inc\winsvc.h -FILE 3274 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3275 f:\sp\public\sdk\inc\windef.h -FILE 3276 f:\sp\public\sdk\inc\winuser.h -FILE 3277 f:\sp\public\sdk\inc\mcx.h -FILE 3278 f:\sp\public\sdk\inc\pshpack8.h -FILE 3279 f:\sp\public\sdk\inc\guiddef.h -FILE 3280 f:\sp\public\sdk\inc\winnt.h -FILE 3281 f:\sp\public\sdk\inc\winnls.h -FILE 3282 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3283 f:\sp\public\sdk\inc\pshpack1.h -FILE 3284 f:\sp\public\sdk\inc\winerror.h -FILE 3285 f:\sp\public\sdk\inc\ddbanned.h -FILE 3286 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3287 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3288 f:\sp\public\sdk\inc\winreg.h -FILE 3289 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3290 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3291 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h -FILE 3292 f:\sp\public\sdk\inc\winsvc.h -FILE 3293 f:\sp\public\sdk\inc\wingdi.h -FILE 3294 f:\sp\public\sdk\inc\pshpack4.h -FILE 3295 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3296 f:\sp\public\sdk\inc\poppack.h -FILE 3297 f:\sp\public\sdk\inc\winnt.h -FILE 3298 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3299 f:\sp\public\sdk\inc\winnetwk.h -FILE 3300 f:\sp\public\sdk\inc\imm.h -FILE 3301 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3302 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3303 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3304 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3305 f:\sp\public\sdk\inc\pshpack1.h -FILE 3306 f:\sp\public\sdk\inc\winver.h -FILE 3307 f:\sp\public\sdk\inc\guiddef.h -FILE 3308 f:\sp\public\sdk\inc\specstrings.h -FILE 3309 f:\sp\public\sdk\inc\basetsd.h -FILE 3310 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3311 f:\sp\vctools\crt_bld\self_x86\crt\src\sbheap.c -FILE 3312 f:\sp\public\sdk\inc\windows.h -FILE 3313 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3314 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3315 f:\sp\public\sdk\inc\winreg.h -FILE 3316 f:\sp\public\sdk\inc\winbase.h -FILE 3317 f:\sp\public\sdk\inc\winerror.h -FILE 3318 f:\sp\public\sdk\inc\pshpack8.h -FILE 3319 f:\sp\public\sdk\inc\ddbanned.h -FILE 3320 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3321 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3322 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3323 f:\sp\public\sdk\inc\reason.h -FILE 3324 f:\sp\public\sdk\inc\wincon.h -FILE 3325 f:\sp\public\sdk\inc\pshpack2.h -FILE 3326 f:\sp\public\sdk\inc\mcx.h -FILE 3327 f:\sp\public\sdk\inc\winuser.h -FILE 3328 f:\sp\public\sdk\inc\winnls.h -FILE 3329 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3330 f:\sp\public\sdk\inc\windef.h -FILE 3331 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3332 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3333 f:\sp\public\sdk\inc\stralign.h -FILE 3334 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3335 f:\sp\public\sdk\inc\tvout.h -FILE 3336 f:\sp\public\sdk\inc\winver.h -FILE 3337 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 3338 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 3339 f:\sp\public\sdk\inc\guiddef.h -FILE 3340 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3341 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3342 f:\sp\public\sdk\inc\specstrings.h -FILE 3343 f:\sp\public\sdk\inc\basetsd.h -FILE 3344 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3345 f:\sp\public\sdk\inc\windows.h -FILE 3346 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3347 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3348 f:\sp\public\sdk\inc\winreg.h -FILE 3349 f:\sp\public\sdk\inc\winbase.h -FILE 3350 f:\sp\public\sdk\inc\winerror.h -FILE 3351 f:\sp\public\sdk\inc\pshpack8.h -FILE 3352 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3353 f:\sp\public\sdk\inc\reason.h -FILE 3354 f:\sp\public\sdk\inc\wincon.h -FILE 3355 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3356 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3357 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3358 f:\sp\public\sdk\inc\pshpack2.h -FILE 3359 f:\sp\public\sdk\inc\mcx.h -FILE 3360 f:\sp\public\sdk\inc\winuser.h -FILE 3361 f:\sp\public\sdk\inc\winnls.h -FILE 3362 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3363 f:\sp\public\sdk\inc\windef.h -FILE 3364 f:\sp\public\sdk\inc\stralign.h -FILE 3365 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3366 f:\sp\public\sdk\inc\tvout.h -FILE 3367 f:\sp\public\sdk\inc\winsvc.h -FILE 3368 f:\sp\vctools\crt_bld\self_x86\crt\src\realloc.c -FILE 3369 f:\sp\public\sdk\inc\wingdi.h -FILE 3370 f:\sp\public\sdk\inc\pshpack4.h -FILE 3371 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3372 f:\sp\public\sdk\inc\poppack.h -FILE 3373 f:\sp\public\sdk\inc\winnt.h -FILE 3374 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3375 f:\sp\public\sdk\inc\winnetwk.h -FILE 3376 f:\sp\public\sdk\inc\ddbanned.h -FILE 3377 f:\sp\public\sdk\inc\imm.h -FILE 3378 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3379 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3380 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3381 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3382 f:\sp\public\sdk\inc\pshpack1.h -FILE 3383 f:\sp\public\sdk\inc\pshpack2.h -FILE 3384 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3385 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3386 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3387 f:\sp\public\sdk\inc\mcx.h -FILE 3388 f:\sp\public\sdk\inc\winuser.h -FILE 3389 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3390 f:\sp\public\sdk\inc\winnls.h -FILE 3391 f:\sp\public\sdk\inc\guiddef.h -FILE 3392 f:\sp\public\sdk\inc\windows.h -FILE 3393 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3394 f:\sp\public\sdk\inc\specstrings.h -FILE 3395 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3396 f:\sp\public\sdk\inc\basetsd.h -FILE 3397 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3398 f:\sp\public\sdk\inc\stralign.h -FILE 3399 f:\sp\public\sdk\inc\tvout.h -FILE 3400 f:\sp\public\sdk\inc\winsvc.h -FILE 3401 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3402 f:\sp\public\sdk\inc\wingdi.h -FILE 3403 f:\sp\public\sdk\inc\pshpack4.h -FILE 3404 f:\sp\public\sdk\inc\poppack.h -FILE 3405 f:\sp\public\sdk\inc\winnetwk.h -FILE 3406 f:\sp\public\sdk\inc\imm.h -FILE 3407 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3408 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3409 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3410 f:\sp\public\sdk\inc\windef.h -FILE 3411 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3412 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3413 f:\sp\vctools\crt_bld\self_x86\crt\src\msize.c -FILE 3414 f:\sp\public\sdk\inc\pshpack1.h -FILE 3415 f:\sp\public\sdk\inc\winver.h -FILE 3416 f:\sp\public\sdk\inc\winnt.h -FILE 3417 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3418 f:\sp\public\sdk\inc\winreg.h -FILE 3419 f:\sp\public\sdk\inc\ddbanned.h -FILE 3420 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3421 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3422 f:\sp\public\sdk\inc\winbase.h -FILE 3423 f:\sp\public\sdk\inc\winerror.h -FILE 3424 f:\sp\public\sdk\inc\pshpack8.h -FILE 3425 f:\sp\public\sdk\inc\reason.h -FILE 3426 f:\sp\public\sdk\inc\wincon.h -FILE 3427 f:\sp\public\sdk\inc\pshpack2.h -FILE 3428 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3429 f:\sp\public\sdk\inc\mcx.h -FILE 3430 f:\sp\public\sdk\inc\winuser.h -FILE 3431 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3432 f:\sp\public\sdk\inc\winnls.h -FILE 3433 f:\sp\public\sdk\inc\guiddef.h -FILE 3434 f:\sp\public\sdk\inc\windows.h -FILE 3435 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3436 f:\sp\public\sdk\inc\specstrings.h -FILE 3437 f:\sp\public\sdk\inc\basetsd.h -FILE 3438 f:\sp\public\sdk\inc\stralign.h -FILE 3439 f:\sp\public\sdk\inc\tvout.h -FILE 3440 f:\sp\public\sdk\inc\winsvc.h -FILE 3441 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3442 f:\sp\public\sdk\inc\wingdi.h -FILE 3443 f:\sp\public\sdk\inc\pshpack4.h -FILE 3444 f:\sp\public\sdk\inc\poppack.h -FILE 3445 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3446 f:\sp\public\sdk\inc\winnetwk.h -FILE 3447 f:\sp\public\sdk\inc\imm.h -FILE 3448 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3449 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3450 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3451 f:\sp\public\sdk\inc\windef.h -FILE 3452 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3453 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3454 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3455 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.c -FILE 3456 f:\sp\public\sdk\inc\pshpack1.h -FILE 3457 f:\sp\public\sdk\inc\winver.h -FILE 3458 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 3459 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 3460 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3461 f:\sp\public\sdk\inc\winnt.h -FILE 3462 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3463 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3464 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3465 f:\sp\public\sdk\inc\winreg.h -FILE 3466 f:\sp\public\sdk\inc\ddbanned.h -FILE 3467 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3468 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3469 f:\sp\public\sdk\inc\winbase.h -FILE 3470 f:\sp\public\sdk\inc\winerror.h -FILE 3471 f:\sp\public\sdk\inc\pshpack8.h -FILE 3472 f:\sp\public\sdk\inc\reason.h -FILE 3473 f:\sp\public\sdk\inc\wincon.h -FILE 3474 f:\sp\public\sdk\inc\winver.h -FILE 3475 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3476 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3477 f:\sp\public\sdk\inc\winnt.h -FILE 3478 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3479 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3480 f:\sp\public\sdk\inc\winreg.h -FILE 3481 f:\sp\public\sdk\inc\winbase.h -FILE 3482 f:\sp\public\sdk\inc\winerror.h -FILE 3483 f:\sp\public\sdk\inc\pshpack8.h -FILE 3484 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3485 f:\sp\public\sdk\inc\reason.h -FILE 3486 f:\sp\public\sdk\inc\wincon.h -FILE 3487 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3488 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3489 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3490 f:\sp\public\sdk\inc\pshpack2.h -FILE 3491 f:\sp\public\sdk\inc\mcx.h -FILE 3492 f:\sp\public\sdk\inc\winuser.h -FILE 3493 f:\sp\public\sdk\inc\winnls.h -FILE 3494 f:\sp\public\sdk\inc\guiddef.h -FILE 3495 f:\sp\public\sdk\inc\stralign.h -FILE 3496 f:\sp\public\sdk\inc\specstrings.h -FILE 3497 f:\sp\public\sdk\inc\basetsd.h -FILE 3498 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3499 f:\sp\public\sdk\inc\windows.h -FILE 3500 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3501 f:\sp\public\sdk\inc\tvout.h -FILE 3502 f:\sp\public\sdk\inc\winsvc.h -FILE 3503 f:\sp\vctools\crt_bld\self_x86\crt\src\heapinit.c -FILE 3504 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3505 f:\sp\public\sdk\inc\wingdi.h -FILE 3506 f:\sp\public\sdk\inc\pshpack4.h -FILE 3507 f:\sp\public\sdk\inc\poppack.h -FILE 3508 f:\sp\public\sdk\inc\winnetwk.h -FILE 3509 f:\sp\public\sdk\inc\ddbanned.h -FILE 3510 f:\sp\public\sdk\inc\imm.h -FILE 3511 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3512 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3513 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3514 f:\sp\public\sdk\inc\windef.h -FILE 3515 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3516 f:\sp\public\sdk\inc\pshpack1.h -FILE 3517 f:\sp\public\sdk\inc\pshpack2.h -FILE 3518 f:\sp\public\sdk\inc\mcx.h -FILE 3519 f:\sp\public\sdk\inc\winuser.h -FILE 3520 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3521 f:\sp\public\sdk\inc\winnls.h -FILE 3522 f:\sp\public\sdk\inc\guiddef.h -FILE 3523 f:\sp\public\sdk\inc\windows.h -FILE 3524 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3525 f:\sp\public\sdk\inc\specstrings.h -FILE 3526 f:\sp\public\sdk\inc\basetsd.h -FILE 3527 f:\sp\public\sdk\inc\stralign.h -FILE 3528 f:\sp\public\sdk\inc\tvout.h -FILE 3529 f:\sp\public\sdk\inc\winsvc.h -FILE 3530 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3531 f:\sp\public\sdk\inc\wingdi.h -FILE 3532 f:\sp\public\sdk\inc\pshpack4.h -FILE 3533 f:\sp\public\sdk\inc\poppack.h -FILE 3534 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3535 f:\sp\public\sdk\inc\winnetwk.h -FILE 3536 f:\sp\public\sdk\inc\imm.h -FILE 3537 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3538 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3539 f:\sp\public\sdk\inc\windef.h -FILE 3540 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3541 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3542 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3543 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3544 f:\sp\public\sdk\inc\pshpack1.h -FILE 3545 f:\sp\vctools\crt_bld\self_x86\crt\src\free.c -FILE 3546 f:\sp\public\sdk\inc\winver.h -FILE 3547 f:\sp\public\sdk\inc\winnt.h -FILE 3548 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3549 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 3550 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 3551 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3552 f:\sp\public\sdk\inc\winreg.h -FILE 3553 f:\sp\public\sdk\inc\ddbanned.h -FILE 3554 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3555 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3556 f:\sp\public\sdk\inc\winbase.h -FILE 3557 f:\sp\public\sdk\inc\winerror.h -FILE 3558 f:\sp\public\sdk\inc\pshpack8.h -FILE 3559 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3560 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3561 f:\sp\public\sdk\inc\reason.h -FILE 3562 f:\sp\public\sdk\inc\wincon.h -FILE 3563 f:\sp\public\sdk\inc\pshpack2.h -FILE 3564 f:\sp\public\sdk\inc\mcx.h -FILE 3565 f:\sp\public\sdk\inc\winuser.h -FILE 3566 f:\sp\public\sdk\inc\winnls.h -FILE 3567 f:\sp\public\sdk\inc\guiddef.h -FILE 3568 f:\sp\public\sdk\inc\windows.h -FILE 3569 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3570 f:\sp\public\sdk\inc\specstrings.h -FILE 3571 f:\sp\public\sdk\inc\basetsd.h -FILE 3572 f:\sp\public\sdk\inc\stralign.h -FILE 3573 f:\sp\public\sdk\inc\tvout.h -FILE 3574 f:\sp\public\sdk\inc\winsvc.h -FILE 3575 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3576 f:\sp\public\sdk\inc\wingdi.h -FILE 3577 f:\sp\public\sdk\inc\pshpack4.h -FILE 3578 f:\sp\public\sdk\inc\poppack.h -FILE 3579 f:\sp\public\sdk\inc\winnetwk.h -FILE 3580 f:\sp\public\sdk\inc\imm.h -FILE 3581 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3582 f:\sp\public\sdk\inc\windef.h -FILE 3583 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3584 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3585 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3586 f:\sp\public\sdk\inc\pshpack1.h -FILE 3587 f:\sp\vctools\crt_bld\self_x86\crt\src\crtheap.c -FILE 3588 f:\sp\public\sdk\inc\winver.h -FILE 3589 f:\sp\public\sdk\inc\winnt.h -FILE 3590 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3591 f:\sp\public\sdk\inc\winreg.h -FILE 3592 f:\sp\public\sdk\inc\ddbanned.h -FILE 3593 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3594 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3595 f:\sp\public\sdk\inc\winbase.h -FILE 3596 f:\sp\public\sdk\inc\winerror.h -FILE 3597 f:\sp\public\sdk\inc\pshpack8.h -FILE 3598 f:\sp\public\sdk\inc\reason.h -FILE 3599 f:\sp\public\sdk\inc\wincon.h -FILE 3600 f:\sp\public\sdk\inc\pshpack2.h -FILE 3601 f:\sp\public\sdk\inc\mcx.h -FILE 3602 f:\sp\public\sdk\inc\winuser.h -FILE 3603 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3604 f:\sp\public\sdk\inc\winnls.h -FILE 3605 f:\sp\public\sdk\inc\stralign.h -FILE 3606 f:\sp\public\sdk\inc\tvout.h -FILE 3607 f:\sp\public\sdk\inc\winsvc.h -FILE 3608 f:\sp\public\sdk\inc\wingdi.h -FILE 3609 f:\sp\public\sdk\inc\winnt.h -FILE 3610 f:\sp\public\sdk\inc\pshpack4.h -FILE 3611 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3612 f:\sp\public\sdk\inc\poppack.h -FILE 3613 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3614 f:\sp\public\sdk\inc\winnetwk.h -FILE 3615 f:\sp\public\sdk\inc\imm.h -FILE 3616 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3617 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3618 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3619 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3620 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3621 f:\sp\public\sdk\inc\pshpack1.h -FILE 3622 f:\sp\vctools\crt_bld\self_x86\crt\src\calloc.c -FILE 3623 f:\sp\public\sdk\inc\winver.h -FILE 3624 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 3625 f:\sp\public\sdk\inc\guiddef.h -FILE 3626 f:\sp\public\sdk\inc\windows.h -FILE 3627 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3628 f:\sp\public\sdk\inc\specstrings.h -FILE 3629 f:\sp\public\sdk\inc\basetsd.h -FILE 3630 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 3631 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 3632 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3633 f:\sp\public\sdk\inc\winreg.h -FILE 3634 f:\sp\public\sdk\inc\ddbanned.h -FILE 3635 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3636 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3637 f:\sp\public\sdk\inc\winbase.h -FILE 3638 f:\sp\public\sdk\inc\winerror.h -FILE 3639 f:\sp\public\sdk\inc\pshpack8.h -FILE 3640 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3641 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3642 f:\sp\public\sdk\inc\reason.h -FILE 3643 f:\sp\public\sdk\inc\wincon.h -FILE 3644 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3645 f:\sp\public\sdk\inc\windef.h -FILE 3646 f:\sp\public\sdk\inc\wincon.h -FILE 3647 f:\sp\public\sdk\inc\imm.h -FILE 3648 f:\sp\public\sdk\inc\winbase.h -FILE 3649 f:\sp\public\sdk\inc\wingdi.h -FILE 3650 f:\sp\public\sdk\inc\winver.h -FILE 3651 f:\sp\public\sdk\inc\pshpack2.h -FILE 3652 f:\sp\public\sdk\inc\reason.h -FILE 3653 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 3654 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp -FILE 3655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 3656 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 3657 f:\sp\public\sdk\inc\specstrings.h -FILE 3658 f:\sp\public\sdk\inc\basetsd.h -FILE 3659 f:\sp\public\sdk\inc\pshpack4.h -FILE 3660 f:\sp\public\sdk\inc\winnetwk.h -FILE 3661 f:\sp\public\sdk\inc\stralign.h -FILE 3662 f:\sp\public\sdk\inc\poppack.h -FILE 3663 f:\sp\public\sdk\inc\winsvc.h -FILE 3664 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 3665 f:\sp\public\sdk\inc\windef.h -FILE 3666 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 3667 f:\sp\public\sdk\inc\winuser.h -FILE 3668 f:\sp\public\sdk\inc\windows.h -FILE 3669 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 3670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 3671 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 3672 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 3673 f:\sp\public\sdk\inc\mcx.h -FILE 3674 f:\sp\public\sdk\inc\pshpack8.h -FILE 3675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 3676 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 3677 f:\sp\public\sdk\inc\guiddef.h -FILE 3678 f:\sp\public\sdk\inc\winnt.h -FILE 3679 f:\sp\public\sdk\inc\winnls.h -FILE 3680 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 3681 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 3682 f:\sp\public\sdk\inc\pshpack1.h -FILE 3683 f:\sp\public\sdk\inc\winerror.h -FILE 3684 f:\sp\vctools\langapi\include\ehdata.h -FILE 3685 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 3686 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 3687 f:\sp\public\sdk\inc\winreg.h -FILE 3688 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 3689 f:\sp\public\sdk\inc\ddbanned.h -FILE 3690 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 3691 f:\sp\public\sdk\inc\tvout.h -FILE 3692 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 3693 f:\sp\public\sdk\inc\specstrings.h -FILE 3694 f:\sp\public\sdk\inc\basetsd.h -FILE 3695 f:\sp\public\sdk\inc\pshpack4.h -FILE 3696 f:\sp\public\sdk\inc\winnetwk.h -FILE 3697 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 3698 f:\sp\public\sdk\inc\stralign.h -FILE 3699 f:\sp\public\sdk\inc\poppack.h -FILE 3700 f:\sp\public\sdk\inc\winsvc.h -FILE 3701 f:\sp\public\sdk\inc\winuser.h -FILE 3702 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 3703 f:\sp\public\sdk\inc\windef.h -FILE 3704 f:\sp\vctools\langapi\undname\undname.cxx -FILE 3705 f:\sp\public\sdk\inc\mcx.h -FILE 3706 f:\sp\public\sdk\inc\pshpack8.h -FILE 3707 f:\sp\public\sdk\inc\guiddef.h -FILE 3708 f:\sp\vctools\langapi\undname\utf8.h -FILE 3709 f:\sp\public\sdk\inc\winnls.h -FILE 3710 f:\sp\public\sdk\inc\pshpack1.h -FILE 3711 f:\sp\public\sdk\inc\winnt.h -FILE 3712 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 3713 f:\sp\public\sdk\inc\winerror.h -FILE 3714 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl -FILE 3715 f:\sp\vctools\langapi\undname\undname.hxx -FILE 3716 f:\sp\vctools\langapi\undname\undname.h -FILE 3717 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 3718 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 3719 f:\sp\public\sdk\inc\winreg.h -FILE 3720 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 3721 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 3722 f:\sp\public\sdk\inc\tvout.h -FILE 3723 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h -FILE 3724 f:\sp\public\sdk\inc\wincon.h -FILE 3725 f:\sp\public\sdk\inc\imm.h -FILE 3726 f:\sp\public\sdk\inc\winbase.h -FILE 3727 f:\sp\public\sdk\inc\wingdi.h -FILE 3728 f:\sp\public\sdk\inc\winver.h -FILE 3729 f:\sp\public\sdk\inc\pshpack2.h -FILE 3730 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 3731 f:\sp\public\sdk\inc\windows.h -FILE 3732 f:\sp\public\sdk\inc\reason.h -FILE 3733 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 3734 f:\sp\public\sdk\inc\ddbanned.h -FILE 3735 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 3736 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 3737 f:\sp\vctools\langapi\undname\undname.inl -FILE 3738 f:\sp\public\sdk\inc\guiddef.h -FILE 3739 f:\sp\public\sdk\inc\winnt.h -FILE 3740 f:\sp\public\sdk\inc\winnls.h -FILE 3741 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 3742 f:\sp\public\sdk\inc\pshpack1.h -FILE 3743 f:\sp\public\sdk\inc\winerror.h -FILE 3744 f:\sp\public\sdk\inc\winreg.h -FILE 3745 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 3746 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 3747 f:\sp\public\sdk\inc\tvout.h -FILE 3748 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp -FILE 3749 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 3750 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 3751 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 3752 f:\sp\public\sdk\inc\wincon.h -FILE 3753 f:\sp\public\sdk\inc\imm.h -FILE 3754 f:\sp\public\sdk\inc\winbase.h -FILE 3755 f:\sp\public\sdk\inc\wingdi.h -FILE 3756 f:\sp\public\sdk\inc\winver.h -FILE 3757 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 3758 f:\sp\public\sdk\inc\windows.h -FILE 3759 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 3760 f:\sp\public\sdk\inc\pshpack2.h -FILE 3761 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 3762 f:\sp\public\sdk\inc\reason.h -FILE 3763 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 3764 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h -FILE 3765 f:\sp\public\sdk\inc\specstrings.h -FILE 3766 f:\sp\public\sdk\inc\basetsd.h -FILE 3767 f:\sp\public\sdk\inc\pshpack4.h -FILE 3768 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h -FILE 3769 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 3770 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 3771 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 3772 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 3773 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 3774 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 3775 f:\sp\public\sdk\inc\winnetwk.h -FILE 3776 f:\sp\vctools\langapi\undname\undname.h -FILE 3777 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 3778 f:\sp\public\sdk\inc\stralign.h -FILE 3779 f:\sp\public\sdk\inc\poppack.h -FILE 3780 f:\sp\public\sdk\inc\winsvc.h -FILE 3781 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 3782 f:\sp\public\sdk\inc\windef.h -FILE 3783 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 3784 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 3785 f:\sp\public\sdk\inc\winuser.h -FILE 3786 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 3787 f:\sp\public\sdk\inc\ddbanned.h -FILE 3788 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 3789 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 3790 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 3791 f:\sp\public\sdk\inc\mcx.h -FILE 3792 f:\sp\public\sdk\inc\pshpack8.h -FILE 3793 f:\sp\public\sdk\inc\winnls.h -FILE 3794 f:\sp\public\sdk\inc\pshpack1.h -FILE 3795 f:\sp\public\sdk\inc\winnt.h -FILE 3796 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 3797 f:\sp\public\sdk\inc\winerror.h -FILE 3798 f:\sp\public\sdk\inc\winreg.h -FILE 3799 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 3800 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 3801 f:\sp\public\sdk\inc\tvout.h -FILE 3802 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h -FILE 3803 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 3804 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 3805 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 3806 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp -FILE 3807 f:\sp\public\sdk\inc\wincon.h -FILE 3808 f:\sp\public\sdk\inc\imm.h -FILE 3809 f:\sp\public\sdk\inc\winbase.h -FILE 3810 f:\sp\public\sdk\inc\wingdi.h -FILE 3811 f:\sp\public\sdk\inc\winver.h -FILE 3812 f:\sp\public\sdk\inc\pshpack2.h -FILE 3813 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 3814 f:\sp\public\sdk\inc\reason.h -FILE 3815 f:\sp\public\sdk\inc\windows.h -FILE 3816 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 3817 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 3818 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 3819 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 3820 f:\sp\public\sdk\inc\specstrings.h -FILE 3821 f:\sp\public\sdk\inc\basetsd.h -FILE 3822 f:\sp\public\sdk\inc\pshpack4.h -FILE 3823 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 3824 f:\sp\public\sdk\inc\winnetwk.h -FILE 3825 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 3826 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 3827 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 3828 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 3829 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 3830 f:\sp\public\sdk\inc\stralign.h -FILE 3831 f:\sp\public\sdk\inc\poppack.h -FILE 3832 f:\sp\public\sdk\inc\winsvc.h -FILE 3833 f:\sp\public\sdk\inc\winuser.h -FILE 3834 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 3835 f:\sp\public\sdk\inc\windef.h -FILE 3836 f:\sp\vctools\langapi\undname\undname.h -FILE 3837 f:\sp\public\sdk\inc\ddbanned.h -FILE 3838 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 3839 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 3840 f:\sp\public\sdk\inc\mcx.h -FILE 3841 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 3842 f:\sp\public\sdk\inc\pshpack8.h -FILE 3843 f:\sp\public\sdk\inc\guiddef.h -FILE 3844 f:\sp\public\sdk\inc\poppack.h -FILE 3845 f:\sp\public\sdk\inc\winsvc.h -FILE 3846 f:\sp\public\sdk\inc\windows.h -FILE 3847 f:\sp\public\sdk\inc\winuser.h -FILE 3848 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 3849 f:\sp\public\sdk\inc\windef.h -FILE 3850 f:\sp\public\sdk\inc\mcx.h -FILE 3851 f:\sp\public\sdk\inc\pshpack8.h -FILE 3852 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 3853 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 3854 f:\sp\public\sdk\inc\guiddef.h -FILE 3855 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp -FILE 3856 f:\sp\public\sdk\inc\winnls.h -FILE 3857 f:\sp\public\sdk\inc\pshpack1.h -FILE 3858 f:\sp\public\sdk\inc\winnt.h -FILE 3859 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 3860 f:\sp\public\sdk\inc\winerror.h -FILE 3861 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 3862 f:\sp\public\sdk\inc\winreg.h -FILE 3863 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 3864 f:\sp\public\sdk\inc\tvout.h -FILE 3865 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 3866 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 3867 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 3868 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 3869 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 3870 f:\sp\public\sdk\inc\wincon.h -FILE 3871 f:\sp\public\sdk\inc\imm.h -FILE 3872 f:\sp\public\sdk\inc\winbase.h -FILE 3873 f:\sp\public\sdk\inc\wingdi.h -FILE 3874 f:\sp\public\sdk\inc\winver.h -FILE 3875 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 3876 f:\sp\public\sdk\inc\pshpack2.h -FILE 3877 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 3878 f:\sp\public\sdk\inc\reason.h -FILE 3879 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 3880 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 3881 f:\sp\public\sdk\inc\specstrings.h -FILE 3882 f:\sp\public\sdk\inc\basetsd.h -FILE 3883 f:\sp\public\sdk\inc\pshpack4.h -FILE 3884 f:\sp\public\sdk\inc\ddbanned.h -FILE 3885 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 3886 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 3887 f:\sp\public\sdk\inc\winnetwk.h -FILE 3888 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 3889 f:\sp\public\sdk\inc\stralign.h -FILE 3890 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3891 f:\sp\public\sdk\inc\pshpack4.h -FILE 3892 f:\sp\public\sdk\inc\reason.h -FILE 3893 f:\sp\public\sdk\inc\wincon.h -FILE 3894 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3895 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3896 f:\sp\public\sdk\inc\poppack.h -FILE 3897 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3898 f:\sp\public\sdk\inc\mcx.h -FILE 3899 f:\sp\public\sdk\inc\winuser.h -FILE 3900 f:\sp\public\sdk\inc\winnls.h -FILE 3901 f:\sp\public\sdk\inc\stralign.h -FILE 3902 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3903 f:\sp\public\sdk\inc\windef.h -FILE 3904 f:\sp\public\sdk\inc\tvout.h -FILE 3905 f:\sp\public\sdk\inc\winsvc.h -FILE 3906 f:\sp\public\sdk\inc\wingdi.h -FILE 3907 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3908 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3909 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3910 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3911 f:\sp\public\sdk\inc\winnt.h -FILE 3912 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3913 f:\sp\public\sdk\inc\winnetwk.h -FILE 3914 f:\sp\public\sdk\inc\imm.h -FILE 3915 f:\sp\vctools\crt_bld\self_x86\crt\src\dosmap.c -FILE 3916 f:\sp\public\sdk\inc\winbase.h -FILE 3917 f:\sp\public\sdk\inc\winerror.h -FILE 3918 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3919 f:\sp\public\sdk\inc\pshpack1.h -FILE 3920 f:\sp\public\sdk\inc\pshpack8.h -FILE 3921 f:\sp\public\sdk\inc\winver.h -FILE 3922 f:\sp\public\sdk\inc\ddbanned.h -FILE 3923 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3924 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3925 f:\sp\public\sdk\inc\pshpack2.h -FILE 3926 f:\sp\public\sdk\inc\winreg.h -FILE 3927 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3928 f:\sp\public\sdk\inc\guiddef.h -FILE 3929 f:\sp\public\sdk\inc\windows.h -FILE 3930 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3931 f:\sp\public\sdk\inc\specstrings.h -FILE 3932 f:\sp\public\sdk\inc\basetsd.h -FILE 3933 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3934 f:\sp\public\sdk\inc\mcx.h -FILE 3935 f:\sp\public\sdk\inc\pshpack8.h -FILE 3936 f:\sp\public\sdk\inc\guiddef.h -FILE 3937 f:\sp\public\sdk\inc\winnt.h -FILE 3938 f:\sp\public\sdk\inc\winnls.h -FILE 3939 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3940 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3941 f:\sp\public\sdk\inc\pshpack1.h -FILE 3942 f:\sp\public\sdk\inc\winerror.h -FILE 3943 f:\sp\vctools\crt_bld\self_x86\crt\src\tolower.c -FILE 3944 f:\sp\public\sdk\inc\winreg.h -FILE 3945 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3946 f:\sp\public\sdk\inc\tvout.h -FILE 3947 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3948 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3949 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3950 f:\sp\public\sdk\inc\wincon.h -FILE 3951 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3952 f:\sp\public\sdk\inc\imm.h -FILE 3953 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3954 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3955 f:\sp\public\sdk\inc\winbase.h -FILE 3956 f:\sp\public\sdk\inc\wingdi.h -FILE 3957 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3958 f:\sp\public\sdk\inc\winver.h -FILE 3959 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3960 f:\sp\public\sdk\inc\windows.h -FILE 3961 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3962 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3963 f:\sp\public\sdk\inc\pshpack2.h -FILE 3964 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3965 f:\sp\public\sdk\inc\reason.h -FILE 3966 f:\sp\public\sdk\inc\specstrings.h -FILE 3967 f:\sp\public\sdk\inc\basetsd.h -FILE 3968 f:\sp\public\sdk\inc\pshpack4.h -FILE 3969 f:\sp\public\sdk\inc\winnetwk.h -FILE 3970 f:\sp\public\sdk\inc\ddbanned.h -FILE 3971 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3972 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3973 f:\sp\public\sdk\inc\stralign.h -FILE 3974 f:\sp\public\sdk\inc\poppack.h -FILE 3975 f:\sp\public\sdk\inc\winsvc.h -FILE 3976 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3977 f:\sp\public\sdk\inc\windef.h -FILE 3978 f:\sp\public\sdk\inc\winuser.h -FILE 3979 f:\sp\public\sdk\inc\winsvc.h -FILE 3980 f:\sp\public\sdk\inc\winuser.h -FILE 3981 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3982 f:\sp\public\sdk\inc\mcx.h -FILE 3983 f:\sp\public\sdk\inc\pshpack8.h -FILE 3984 f:\sp\public\sdk\inc\guiddef.h -FILE 3985 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3986 f:\sp\public\sdk\inc\windows.h -FILE 3987 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3988 f:\sp\public\sdk\inc\winnls.h -FILE 3989 f:\sp\vctools\crt_bld\self_x86\crt\src\strtoq.c -FILE 3990 f:\sp\public\sdk\inc\pshpack1.h -FILE 3991 f:\sp\public\sdk\inc\winerror.h -FILE 3992 f:\sp\public\sdk\inc\winreg.h -FILE 3993 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3994 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3995 f:\sp\public\sdk\inc\tvout.h -FILE 3996 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3997 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3998 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3999 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4000 f:\sp\public\sdk\inc\wincon.h -FILE 4001 f:\sp\public\sdk\inc\imm.h -FILE 4002 f:\sp\public\sdk\inc\winbase.h -FILE 4003 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4004 f:\sp\public\sdk\inc\wingdi.h -FILE 4005 f:\sp\public\sdk\inc\windef.h -FILE 4006 f:\sp\public\sdk\inc\winver.h -FILE 4007 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4008 f:\sp\public\sdk\inc\pshpack2.h -FILE 4009 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4010 f:\sp\public\sdk\inc\reason.h -FILE 4011 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4012 f:\sp\public\sdk\inc\winnt.h -FILE 4013 f:\sp\public\sdk\inc\specstrings.h -FILE 4014 f:\sp\public\sdk\inc\basetsd.h -FILE 4015 f:\sp\public\sdk\inc\pshpack4.h -FILE 4016 f:\sp\public\sdk\inc\ddbanned.h -FILE 4017 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4018 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4019 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4020 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4021 f:\sp\public\sdk\inc\winnetwk.h -FILE 4022 f:\sp\public\sdk\inc\stralign.h -FILE 4023 f:\sp\public\sdk\inc\poppack.h -FILE 4024 f:\sp\public\sdk\inc\winsvc.h -FILE 4025 f:\sp\public\sdk\inc\winuser.h -FILE 4026 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4027 f:\sp\public\sdk\inc\mcx.h -FILE 4028 f:\sp\public\sdk\inc\pshpack8.h -FILE 4029 f:\sp\public\sdk\inc\guiddef.h -FILE 4030 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4031 f:\sp\public\sdk\inc\windows.h -FILE 4032 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4033 f:\sp\public\sdk\inc\winnls.h -FILE 4034 f:\sp\vctools\crt_bld\self_x86\crt\src\strtol.c -FILE 4035 f:\sp\public\sdk\inc\pshpack1.h -FILE 4036 f:\sp\public\sdk\inc\winerror.h -FILE 4037 f:\sp\public\sdk\inc\winreg.h -FILE 4038 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4039 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4040 f:\sp\public\sdk\inc\tvout.h -FILE 4041 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4042 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4043 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4044 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4045 f:\sp\public\sdk\inc\wincon.h -FILE 4046 f:\sp\public\sdk\inc\imm.h -FILE 4047 f:\sp\public\sdk\inc\winbase.h -FILE 4048 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4049 f:\sp\public\sdk\inc\wingdi.h -FILE 4050 f:\sp\public\sdk\inc\windef.h -FILE 4051 f:\sp\public\sdk\inc\winver.h -FILE 4052 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4053 f:\sp\public\sdk\inc\pshpack2.h -FILE 4054 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4055 f:\sp\public\sdk\inc\reason.h -FILE 4056 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4057 f:\sp\public\sdk\inc\winnt.h -FILE 4058 f:\sp\public\sdk\inc\specstrings.h -FILE 4059 f:\sp\public\sdk\inc\basetsd.h -FILE 4060 f:\sp\public\sdk\inc\pshpack4.h -FILE 4061 f:\sp\public\sdk\inc\ddbanned.h -FILE 4062 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4063 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4064 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4065 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4066 f:\sp\public\sdk\inc\winnetwk.h -FILE 4067 f:\sp\public\sdk\inc\stralign.h -FILE 4068 f:\sp\public\sdk\inc\poppack.h -FILE 4069 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4070 f:\sp\public\sdk\inc\winreg.h -FILE 4071 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4072 f:\sp\public\sdk\inc\tvout.h -FILE 4073 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4074 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4075 f:\sp\public\sdk\inc\wincon.h -FILE 4076 f:\sp\public\sdk\inc\imm.h -FILE 4077 f:\sp\public\sdk\inc\winbase.h -FILE 4078 f:\sp\vctools\crt_bld\self_x86\crt\src\isctype.c -FILE 4079 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4080 f:\sp\public\sdk\inc\wingdi.h -FILE 4081 f:\sp\public\sdk\inc\windef.h -FILE 4082 f:\sp\public\sdk\inc\winver.h -FILE 4083 f:\sp\public\sdk\inc\pshpack2.h -FILE 4084 f:\sp\public\sdk\inc\reason.h -FILE 4085 f:\sp\public\sdk\inc\winnt.h -FILE 4086 f:\sp\public\sdk\inc\specstrings.h -FILE 4087 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4088 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 4089 f:\sp\public\sdk\inc\basetsd.h -FILE 4090 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4091 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4092 f:\sp\public\sdk\inc\pshpack4.h -FILE 4093 f:\sp\public\sdk\inc\winnetwk.h -FILE 4094 f:\sp\public\sdk\inc\stralign.h -FILE 4095 f:\sp\public\sdk\inc\poppack.h -FILE 4096 f:\sp\public\sdk\inc\winsvc.h -FILE 4097 f:\sp\public\sdk\inc\winuser.h -FILE 4098 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4099 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4100 f:\sp\public\sdk\inc\mcx.h -FILE 4101 f:\sp\public\sdk\inc\pshpack8.h -FILE 4102 f:\sp\public\sdk\inc\guiddef.h -FILE 4103 f:\sp\public\sdk\inc\ddbanned.h -FILE 4104 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4105 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4106 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4107 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4108 f:\sp\public\sdk\inc\windows.h -FILE 4109 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4110 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4111 f:\sp\public\sdk\inc\winnls.h -FILE 4112 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4113 f:\sp\public\sdk\inc\pshpack1.h -FILE 4114 f:\sp\public\sdk\inc\winerror.h -FILE 4115 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4116 f:\sp\public\sdk\inc\winreg.h -FILE 4117 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4118 f:\sp\public\sdk\inc\tvout.h -FILE 4119 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4120 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4121 f:\sp\public\sdk\inc\wincon.h -FILE 4122 f:\sp\public\sdk\inc\imm.h -FILE 4123 f:\sp\public\sdk\inc\winbase.h -FILE 4124 f:\sp\vctools\crt_bld\self_x86\crt\src\iswctype.c -FILE 4125 f:\sp\public\sdk\inc\wingdi.h -FILE 4126 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4127 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4128 f:\sp\public\sdk\inc\winver.h -FILE 4129 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4130 f:\sp\public\sdk\inc\windows.h -FILE 4131 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4132 f:\sp\public\sdk\inc\pshpack2.h -FILE 4133 f:\sp\public\sdk\inc\reason.h -FILE 4134 f:\sp\public\sdk\inc\specstrings.h -FILE 4135 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 4136 f:\sp\public\sdk\inc\basetsd.h -FILE 4137 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4138 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4139 f:\sp\public\sdk\inc\pshpack4.h -FILE 4140 f:\sp\public\sdk\inc\winnetwk.h -FILE 4141 f:\sp\public\sdk\inc\stralign.h -FILE 4142 f:\sp\public\sdk\inc\poppack.h -FILE 4143 f:\sp\public\sdk\inc\winsvc.h -FILE 4144 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4145 f:\sp\public\sdk\inc\windef.h -FILE 4146 f:\sp\public\sdk\inc\winuser.h -FILE 4147 f:\sp\public\sdk\inc\mcx.h -FILE 4148 f:\sp\public\sdk\inc\pshpack8.h -FILE 4149 f:\sp\public\sdk\inc\guiddef.h -FILE 4150 f:\sp\public\sdk\inc\ddbanned.h -FILE 4151 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4152 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4153 f:\sp\public\sdk\inc\winnt.h -FILE 4154 f:\sp\public\sdk\inc\winnls.h -FILE 4155 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4156 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4157 f:\sp\public\sdk\inc\pshpack1.h -FILE 4158 f:\sp\public\sdk\inc\winerror.h -FILE 4159 f:\sp\public\sdk\inc\winsvc.h -FILE 4160 f:\sp\public\sdk\inc\winuser.h -FILE 4161 f:\sp\public\sdk\inc\mcx.h -FILE 4162 f:\sp\public\sdk\inc\pshpack8.h -FILE 4163 f:\sp\public\sdk\inc\guiddef.h -FILE 4164 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4165 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4166 f:\sp\public\sdk\inc\windows.h -FILE 4167 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4168 f:\sp\public\sdk\inc\winnls.h -FILE 4169 f:\sp\vctools\crt_bld\self_x86\crt\src\_wctype.c -FILE 4170 f:\sp\public\sdk\inc\pshpack1.h -FILE 4171 f:\sp\public\sdk\inc\winerror.h -FILE 4172 f:\sp\public\sdk\inc\winreg.h -FILE 4173 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4174 f:\sp\public\sdk\inc\tvout.h -FILE 4175 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4176 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4177 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4178 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4179 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4180 f:\sp\public\sdk\inc\wincon.h -FILE 4181 f:\sp\public\sdk\inc\imm.h -FILE 4182 f:\sp\public\sdk\inc\winbase.h -FILE 4183 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4184 f:\sp\public\sdk\inc\wingdi.h -FILE 4185 f:\sp\public\sdk\inc\windef.h -FILE 4186 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4187 f:\sp\public\sdk\inc\winver.h -FILE 4188 f:\sp\public\sdk\inc\pshpack2.h -FILE 4189 f:\sp\public\sdk\inc\reason.h -FILE 4190 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4191 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4192 f:\sp\public\sdk\inc\winnt.h -FILE 4193 f:\sp\public\sdk\inc\specstrings.h -FILE 4194 f:\sp\public\sdk\inc\basetsd.h -FILE 4195 f:\sp\public\sdk\inc\pshpack4.h -FILE 4196 f:\sp\public\sdk\inc\ddbanned.h -FILE 4197 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4198 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4199 f:\sp\public\sdk\inc\winnetwk.h -FILE 4200 f:\sp\public\sdk\inc\stralign.h -FILE 4201 f:\sp\public\sdk\inc\poppack.h -FILE 4202 f:\sp\public\sdk\inc\mcx.h -FILE 4203 f:\sp\public\sdk\inc\pshpack8.h -FILE 4204 f:\sp\public\sdk\inc\guiddef.h -FILE 4205 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4206 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4207 f:\sp\public\sdk\inc\windows.h -FILE 4208 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4209 f:\sp\public\sdk\inc\winnls.h -FILE 4210 f:\sp\public\sdk\inc\pshpack1.h -FILE 4211 f:\sp\public\sdk\inc\winerror.h -FILE 4212 f:\sp\public\sdk\inc\winreg.h -FILE 4213 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4214 f:\sp\vctools\crt_bld\self_x86\crt\src\_ctype.c -FILE 4215 f:\sp\public\sdk\inc\tvout.h -FILE 4216 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4217 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4218 f:\sp\public\sdk\inc\wincon.h -FILE 4219 f:\sp\public\sdk\inc\imm.h -FILE 4220 f:\sp\public\sdk\inc\winbase.h -FILE 4221 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4222 f:\sp\public\sdk\inc\wingdi.h -FILE 4223 f:\sp\public\sdk\inc\windef.h -FILE 4224 f:\sp\public\sdk\inc\winver.h -FILE 4225 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4226 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4227 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4228 f:\sp\public\sdk\inc\pshpack2.h -FILE 4229 f:\sp\public\sdk\inc\reason.h -FILE 4230 f:\sp\public\sdk\inc\winnt.h -FILE 4231 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4232 f:\sp\public\sdk\inc\specstrings.h -FILE 4233 f:\sp\public\sdk\inc\basetsd.h -FILE 4234 f:\sp\public\sdk\inc\pshpack4.h -FILE 4235 f:\sp\public\sdk\inc\winnetwk.h -FILE 4236 f:\sp\public\sdk\inc\stralign.h -FILE 4237 f:\sp\public\sdk\inc\poppack.h -FILE 4238 f:\sp\public\sdk\inc\winsvc.h -FILE 4239 f:\sp\public\sdk\inc\ddbanned.h -FILE 4240 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4241 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4242 f:\sp\public\sdk\inc\winuser.h -FILE 4243 f:\sp\public\sdk\inc\pshpack2.h -FILE 4244 f:\sp\public\sdk\inc\mcx.h -FILE 4245 f:\sp\public\sdk\inc\winuser.h -FILE 4246 f:\sp\public\sdk\inc\winnls.h -FILE 4247 f:\sp\public\sdk\inc\stralign.h -FILE 4248 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4249 f:\sp\public\sdk\inc\windef.h -FILE 4250 f:\sp\public\sdk\inc\tvout.h -FILE 4251 f:\sp\public\sdk\inc\winsvc.h -FILE 4252 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 4253 f:\sp\public\sdk\inc\wingdi.h -FILE 4254 f:\sp\public\sdk\inc\pshpack4.h -FILE 4255 f:\sp\public\sdk\inc\poppack.h -FILE 4256 f:\sp\public\sdk\inc\winnt.h -FILE 4257 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4258 f:\sp\public\sdk\inc\winnetwk.h -FILE 4259 f:\sp\public\sdk\inc\imm.h -FILE 4260 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoa.c -FILE 4261 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4262 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4264 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4265 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4266 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoas.c -FILE 4267 f:\sp\public\sdk\inc\pshpack1.h -FILE 4268 f:\sp\public\sdk\inc\winver.h -FILE 4269 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4270 f:\sp\public\sdk\inc\guiddef.h -FILE 4271 f:\sp\public\sdk\inc\specstrings.h -FILE 4272 f:\sp\public\sdk\inc\basetsd.h -FILE 4273 f:\sp\public\sdk\inc\winreg.h -FILE 4274 f:\sp\public\sdk\inc\ddbanned.h -FILE 4275 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4276 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4277 f:\sp\public\sdk\inc\windows.h -FILE 4278 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4279 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4280 f:\sp\public\sdk\inc\winbase.h -FILE 4281 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4282 f:\sp\public\sdk\inc\winerror.h -FILE 4283 f:\sp\public\sdk\inc\pshpack8.h -FILE 4284 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 4285 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4286 f:\sp\public\sdk\inc\reason.h -FILE 4287 f:\sp\public\sdk\inc\wincon.h -FILE 4288 f:\sp\public\sdk\inc\poppack.h -FILE 4289 f:\sp\public\sdk\inc\winnetwk.h -FILE 4290 f:\sp\public\sdk\inc\imm.h -FILE 4291 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4292 f:\sp\public\sdk\inc\windef.h -FILE 4293 f:\sp\public\sdk\inc\pshpack1.h -FILE 4294 f:\sp\public\sdk\inc\winver.h -FILE 4295 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4296 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4297 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4298 f:\sp\public\sdk\inc\winnt.h -FILE 4299 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4300 f:\sp\public\sdk\inc\winreg.h -FILE 4301 f:\sp\vctools\crt_bld\self_x86\crt\src\atox.c -FILE 4302 f:\sp\public\sdk\inc\winbase.h -FILE 4303 f:\sp\public\sdk\inc\winerror.h -FILE 4304 f:\sp\public\sdk\inc\pshpack8.h -FILE 4305 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4306 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4307 f:\sp\public\sdk\inc\reason.h -FILE 4308 f:\sp\public\sdk\inc\wincon.h -FILE 4309 f:\sp\public\sdk\inc\ddbanned.h -FILE 4310 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4311 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4312 f:\sp\public\sdk\inc\pshpack2.h -FILE 4313 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 4314 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4315 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4316 f:\sp\public\sdk\inc\mcx.h -FILE 4317 f:\sp\public\sdk\inc\winuser.h -FILE 4318 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4319 f:\sp\public\sdk\inc\winnls.h -FILE 4320 f:\sp\public\sdk\inc\guiddef.h -FILE 4321 f:\sp\public\sdk\inc\windows.h -FILE 4322 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4323 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4324 f:\sp\public\sdk\inc\specstrings.h -FILE 4325 f:\sp\public\sdk\inc\basetsd.h -FILE 4326 f:\sp\public\sdk\inc\stralign.h -FILE 4327 f:\sp\public\sdk\inc\tvout.h -FILE 4328 f:\sp\public\sdk\inc\winsvc.h -FILE 4329 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4330 f:\sp\public\sdk\inc\wingdi.h -FILE 4331 f:\sp\public\sdk\inc\pshpack4.h -PUBLIC 1005 0 @ILT+0(?h@C@google_breakpad@@SAPADABV12@@Z) -PUBLIC 100a 0 @ILT+5(?set_member@C@google_breakpad@@QAEXH@Z) -PUBLIC 100f 0 @ILT+10(??_EC@google_breakpad@@UAEPAXI@Z) -PUBLIC 1014 0 @ILT+15(??_EC@google_breakpad@@UAEPAXI@Z) -PUBLIC 1019 0 @ILT+20(?f@C@google_breakpad@@QAEXXZ) -PUBLIC 101e 0 @ILT+25(_main) -PUBLIC 1023 0 @ILT+30(??0C@google_breakpad@@QAE@XZ) -PUBLIC 1028 0 @ILT+35(??1C@google_breakpad@@UAE@XZ) -PUBLIC 102d 0 @ILT+40(?g@C@google_breakpad@@UAEHXZ) -FUNC 1060 54 8 main -1060 6 57 1 -1066 8 58 1 -106e e 59 1 -107c 8 60 1 -1084 b 61 1 -108f f 62 1 -109e 12 64 1 -10b0 4 65 1 -FUNC 10c0 a 0 google_breakpad::i -10c0 3 51 1 -10c3 5 52 1 -10c8 2 53 1 -FUNC 10f0 21 0 google_breakpad::C::C() -10f0 21 37 1 -FUNC 1120 14 0 google_breakpad::C::~C() -1120 14 38 1 -FUNC 1140 16 8 google_breakpad::C::set_member(int) -1140 16 40 1 -FUNC 1160 1e 0 google_breakpad::C::f() -1160 1e 43 1 -FUNC 1190 10 0 google_breakpad::C::g() -1190 10 44 1 -FUNC 11b0 7 4 google_breakpad::C::h(google_breakpad::C const &) -11b0 7 45 1 -FUNC 11c0 2c 0 google_breakpad::C::`vector deleting destructor'(unsigned int) -FUNC 11f7 f 4 type_info::name(__type_info_node *) -11f7 0 44 3806 -11f7 c 45 3806 -1203 3 46 3806 -FUNC 1206 e 0 type_info::~type_info() -1206 0 49 3806 -1206 d 50 3806 -1213 1 51 3806 -FUNC 1214 1c 0 type_info::`vector deleting destructor'(unsigned int) -FUNC 1230 f 4 type_info::_name_internal_method(__type_info_node *) -1230 0 54 3806 -1230 c 55 3806 -123c 3 56 3806 -FUNC 123f 8 0 type_info::_type_info_dtor_internal_method() -123f 0 59 3806 -123f 7 60 3806 -1246 1 61 3806 -FUNC 1247 1b 4 type_info::operator==(type_info const &) -1247 0 89 3806 -1247 18 90 3806 -125f 3 91 3806 -FUNC 1262 1c 4 type_info::operator!=(type_info const &) -1262 0 98 3806 -1262 19 99 3806 -127b 3 100 3806 -FUNC 127e 1f 4 type_info::before(type_info const &) -127e 0 103 3806 -127e 1c 104 3806 -129a 3 105 3806 -FUNC 129d 4 0 type_info::raw_name() -129d 0 108 3806 -129d 3 109 3806 -12a0 1 110 3806 -FUNC 12a1 b 4 type_info::type_info(type_info const &) -12a1 8 113 3806 -12a9 3 123 3806 -FUNC 12ac 5 4 type_info::operator=(type_info const &) -12ac 2 127 3806 -12ae 3 135 3806 -FUNC 12b1 5 4 operator delete(void *) -12b1 0 20 3214 -12b1 5 23 3214 -FUNC 12b6 a 4 _set_osplatform -12b6 a 385 1009 -FUNC 12c0 a 4 _set_osver -12c0 a 386 1009 -FUNC 12ca a 4 _set_winver -12ca a 387 1009 -FUNC 12d4 a 4 _set_winmajor -12d4 a 388 1009 -FUNC 12de a 4 _set_winminor -12de a 389 1009 -FUNC 12e8 24 4 fast_error_exit -12e8 0 375 1022 -12e8 9 384 1022 -12f1 5 386 1022 -12f6 9 388 1022 -12ff c 389 1022 -130b 1 390 1022 -FUNC 130c 41 0 check_managed_app -130c 0 413 1022 -130c b 418 1022 -1317 5 422 1022 -131c a 424 1022 -1326 2 425 1022 -1328 9 427 1022 -1331 2 428 1022 -1333 7 433 1022 -133a 2 434 1022 -133c d 437 1022 -1349 1 438 1022 -134a 2 419 1022 -134c 1 438 1022 -FUNC 134d 1b6 0 __tmainCRTStartup -134d c 203 1022 -1359 19 233 1022 -1372 4 234 1022 -1376 8 235 1022 -137e a 236 1022 -1388 2 242 1022 -138a 7 243 1022 -1391 3 244 1022 -1394 4 243 1022 -1398 9 244 1022 -13a1 2 245 1022 -13a3 6 248 1022 -13a9 6 249 1022 -13af 6 250 1022 -13b5 9 256 1022 -13be 9 257 1022 -13c7 8 258 1022 -13cf 6 259 1022 -13d5 d 260 1022 -13e2 6 262 1022 -13e8 5 263 1022 -13ed 6 264 1022 -13f3 6 265 1022 -13f9 6 266 1022 -13ff 8 271 1022 -1407 c 273 1022 -1413 8 274 1022 -141b 9 276 1022 -1424 8 277 1022 -142c 5 286 1022 -1431 4 294 1022 -1435 9 296 1022 -143e 8 297 1022 -1446 b 300 1022 -1451 a 303 1022 -145b 9 305 1022 -1464 8 306 1022 -146c 9 307 1022 -1475 8 308 1022 -147d 8 310 1022 -1485 4 311 1022 -1489 7 312 1022 -1490 a 326 1022 -149a 18 327 1022 -14b2 6 330 1022 -14b8 6 331 1022 -14be 5 333 1022 -14c3 2 335 1022 -14c5 17 336 1022 -14dc 6 342 1022 -14e2 6 344 1022 -14e8 6 345 1022 -14ee 5 347 1022 -14f3 7 349 1022 -14fa 3 351 1022 -14fd 6 352 1022 -FUNC 1503 a 0 mainCRTStartup -1503 0 186 1022 -1503 5 193 1022 -1508 5 195 1022 -FUNC 150d 22 18 _invoke_watson_if_error -150d 3 754 3783 -1510 6 755 3783 -1516 17 759 3783 -152d 2 760 3783 -FUNC 152f 70 4 type_info::_Type_info_dtor(type_info *) -152f c 62 3748 -153b 8 63 3748 -1543 4 64 3748 -1547 a 65 3748 -1551 d 70 3748 -155e 4 72 3748 -1562 4 74 3748 -1566 6 79 3748 -156c 7 80 3748 -1573 9 94 3748 -157c 4 101 3748 -1580 c 103 3748 -158c 6 107 3748 -1592 2 83 3748 -1594 2 72 3748 -1596 9 104 3748 -FUNC 159f f5 8 type_info::_Name_base(type_info const *,__type_info_node *) -159f c 109 3748 -15ab e 113 3748 -15b9 24 124 3748 -15dd 7 125 3748 -15e4 16 132 3748 -15fa 2 133 3748 -15fc 5 132 3748 -1601 b 136 3748 -160c 5 142 3748 -1611 a 149 3748 -161b 4 150 3748 -161f 11 157 3748 -1630 20 158 3748 -1650 5 159 3748 -1655 9 165 3748 -165e 3 166 3748 -1661 2 167 3748 -1663 7 173 3748 -166a 9 180 3748 -1673 c 181 3748 -167f 3 188 3748 -1682 6 189 3748 -1688 3 181 3748 -168b 9 182 3748 -FUNC 1694 70 4 type_info::_Type_info_dtor_internal(type_info *) -1694 c 197 3748 -16a0 8 198 3748 -16a8 4 199 3748 -16ac a 200 3748 -16b6 d 205 3748 -16c3 4 207 3748 -16c7 4 209 3748 -16cb 6 214 3748 -16d1 7 215 3748 -16d8 9 229 3748 -16e1 4 236 3748 -16e5 c 238 3748 -16f1 6 242 3748 -16f7 2 218 3748 -16f9 2 207 3748 -16fb 9 239 3748 -FUNC 1704 31 10 __unDNameHelper -1704 3 249 3748 -1707 7 250 3748 -170e 7 252 3748 -1715 1e 260 3748 -1733 2 261 3748 -FUNC 1735 eb 8 type_info::_Name_base_internal(type_info const *,__type_info_node *) -1735 c 265 3748 -1741 e 269 3748 -174f 1a 273 3748 -1769 7 274 3748 -1770 16 281 3748 -1786 2 282 3748 -1788 5 281 3748 -178d b 285 3748 -1798 5 291 3748 -179d a 298 3748 -17a7 4 299 3748 -17ab 11 306 3748 -17bc 20 307 3748 -17dc 5 308 3748 -17e1 9 314 3748 -17ea 3 315 3748 -17ed 2 316 3748 -17ef 7 322 3748 -17f6 9 329 3748 -17ff c 330 3748 -180b 3 337 3748 -180e 6 338 3748 -1814 3 330 3748 -1817 9 331 3748 -FUNC 1820 53 4 __clean_type_info_names_internal -1820 c 346 3748 -182c 8 347 3748 -1834 4 348 3748 -1838 6 352 3748 -183e 4 354 3748 -1842 3 356 3748 -1845 7 357 3748 -184c 8 358 3748 -1854 4 354 3748 -1858 c 359 3748 -1864 6 363 3748 -186a 9 361 3748 -FUNC 1880 88 8 strcmp -1880 0 65 593 -1880 4 73 593 -1884 4 74 593 -1888 6 76 593 -188e 2 77 593 -1890 2 81 593 -1892 2 83 593 -1894 2 84 593 -1896 2 85 593 -1898 2 86 593 -189a 3 87 593 -189d 2 88 593 -189f 2 89 593 -18a1 2 90 593 -18a3 3 92 593 -18a6 3 94 593 -18a9 2 95 593 -18ab 2 96 593 -18ad 2 97 593 -18af 3 98 593 -18b2 2 99 593 -18b4 3 100 593 -18b7 3 101 593 -18ba 2 102 593 -18bc 4 103 593 -18c0 2 107 593 -18c2 2 108 593 -18c4 2 115 593 -18c6 2 116 593 -18c8 3 117 593 -18cb 1 118 593 -18cc 6 122 593 -18d2 2 123 593 -18d4 2 125 593 -18d6 3 126 593 -18d9 2 127 593 -18db 2 128 593 -18dd 3 129 593 -18e0 2 130 593 -18e2 2 131 593 -18e4 6 133 593 -18ea 2 134 593 -18ec 3 139 593 -18ef 3 140 593 -18f2 2 141 593 -18f4 2 142 593 -18f6 2 143 593 -18f8 2 144 593 -18fa 3 145 593 -18fd 2 146 593 -18ff 2 147 593 -1901 2 148 593 -1903 3 149 593 -1906 2 150 593 -FUNC 1908 8e 4 free -1908 c 42 3545 -1914 7 47 3545 -191b 9 53 3545 -1924 8 57 3545 -192c 4 58 3545 -1930 e 60 3545 -193e 9 61 3545 -1947 c 64 3545 -1953 6 68 3545 -1959 3 70 3545 -195c 2 106 3545 -195e 9 65 3545 -1967 f 109 3545 -1976 4 110 3545 -197a 16 112 3545 -1990 6 115 3545 -FUNC 1996 3d 4 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *) -1996 0 67 3654 -1996 33 68 3654 -19c9 5 69 3654 -19ce 2 72 3654 -19d0 3 73 3654 -FUNC 19d3 e 0 __CxxSetUnhandledExceptionFilter -19d3 0 86 3654 -19d3 b 89 3654 -19de 2 90 3654 -19e0 1 91 3654 -FUNC 19e1 24 4 _amsg_exit -19e1 0 446 974 -19e1 5 449 974 -19e6 9 450 974 -19ef b 451 974 -19fa a 452 974 -1a04 1 453 974 -FUNC 1a05 26 4 __crtCorExitProcess -1a05 0 650 974 -1a05 b 654 974 -1a10 4 655 974 -1a14 c 656 974 -1a20 4 657 974 -1a24 6 658 974 -1a2a 1 668 974 -FUNC 1a2b 15 4 __crtExitProcess -1a2b 0 673 974 -1a2b a 674 974 -1a35 b 683 974 -FUNC 1a40 9 0 _lockexit -1a40 0 733 974 -1a40 8 734 974 -1a48 1 735 974 -FUNC 1a49 9 0 _unlockexit -1a49 0 759 974 -1a49 8 760 974 -1a51 1 761 974 -FUNC 1a52 18 4 _initterm -1a52 3 841 974 -1a55 2 855 974 -1a57 6 853 974 -1a5d 2 854 974 -1a5f 3 855 974 -1a62 7 848 974 -1a69 1 857 974 -FUNC 1a6a 20 8 _initterm_e -1a6a 1 890 974 -1a6b c 899 974 -1a77 6 904 974 -1a7d 2 905 974 -1a7f 3 906 974 -1a82 7 899 974 -1a89 1 910 974 -FUNC 1a8a 37 4 _get_osplatform -1a8a 0 929 974 -1a8a 27 931 974 -1ab1 1 939 974 -1ab2 9 934 974 -1abb 2 936 974 -1abd 3 938 974 -1ac0 1 939 974 -FUNC 1ac1 3c 4 _get_osver -1ac1 0 958 974 -1ac1 27 960 974 -1ae8 1 968 974 -1ae9 8 963 974 -1af1 8 965 974 -1af9 3 967 974 -1afc 1 968 974 -FUNC 1afd 3c 4 _get_winver -1afd 0 987 974 -1afd 27 989 974 -1b24 1 997 974 -1b25 8 992 974 -1b2d 8 994 974 -1b35 3 996 974 -1b38 1 997 974 -FUNC 1b39 3c 4 _get_winmajor -1b39 0 1016 974 -1b39 27 1018 974 -1b60 1 1026 974 -1b61 8 1021 974 -1b69 8 1023 974 -1b71 3 1025 974 -1b74 1 1026 974 -FUNC 1b75 3c 4 _get_winminor -1b75 0 1045 974 -1b75 27 1047 974 -1b9c 1 1055 974 -1b9d 8 1050 974 -1ba5 8 1052 974 -1bad 3 1054 974 -1bb0 1 1055 974 -FUNC 1bb1 37 4 _get_wpgmptr -1bb1 0 1074 974 -1bb1 27 1076 974 -1bd8 1 1085 974 -1bd9 9 1080 974 -1be2 2 1082 974 -1be4 3 1084 974 -1be7 1 1085 974 -FUNC 1be8 37 4 _get_pgmptr -1be8 0 1104 974 -1be8 27 1106 974 -1c0f 1 1115 974 -1c10 9 1110 974 -1c19 2 1112 974 -1c1b 3 1114 974 -1c1e 1 1115 974 -FUNC 1c1f 92 4 _cinit -1c1f 0 263 974 -1c1f 18 273 974 -1c37 b 275 974 -1c42 5 277 974 -1c47 f 283 974 -1c56 4 284 974 -1c5a 4 285 974 -1c5e a 288 974 -1c68 20 293 974 -1c88 1a 306 974 -1ca2 c 308 974 -1cae 2 312 974 -1cb0 1 313 974 -FUNC 1cb1 e2 c doexit -1cb1 c 499 974 -1cbd 8 517 974 -1cc5 5 518 974 -1cca b 520 974 -1cd5 6 521 974 -1cdb 8 524 974 -1ce3 5 526 974 -1ce8 e 542 974 -1cf6 12 543 974 -1d08 5 545 974 -1d0d b 546 974 -1d18 10 551 974 -1d28 9 552 974 -1d31 2 553 974 -1d33 10 558 974 -1d43 10 566 974 -1d53 c 584 974 -1d5f 6 588 974 -1d65 6 592 974 -1d6b 8 594 974 -1d73 8 596 974 -1d7b 3 584 974 -1d7e 6 585 974 -1d84 9 586 974 -1d8d 6 597 974 -FUNC 1d93 11 4 exit -1d93 0 397 974 -1d93 10 398 974 -1da3 1 399 974 -FUNC 1da4 11 4 _exit -1da4 0 405 974 -1da4 10 406 974 -1db4 1 407 974 -FUNC 1db5 f 0 _cexit -1db5 0 412 974 -1db5 e 413 974 -1dc3 1 414 974 -FUNC 1dc4 f 0 _c_exit -1dc4 0 419 974 -1dc4 e 420 974 -1dd2 1 421 974 -FUNC 1dd3 4c 0 _init_pointers -1dd3 1 786 974 -1dd4 7 787 974 -1ddb 6 789 974 -1de1 6 790 974 -1de7 6 791 974 -1ded 6 792 974 -1df3 6 793 974 -1df9 6 794 974 -1dff 6 795 974 -1e05 6 796 974 -1e0b 13 799 974 -1e1e 1 800 974 -FUNC 1e1f 1a0 4 _NMSG_WRITE -1e1f 2 174 832 -1e21 a 178 832 -1e2b f 179 832 -1e3a a 182 832 -1e44 2a 203 832 -1e6e c 215 832 -1e7a 2a 224 832 -1ea4 1e 227 832 -1ec2 26 228 832 -1ee8 d 231 832 -1ef5 b 233 832 -1f00 2f 234 832 -1f2f 20 237 832 -1f4f 22 238 832 -1f71 15 242 832 -1f86 a 205 832 -1f90 9 206 832 -1f99 24 212 832 -1fbd 2 245 832 -FUNC 1fbf 20 4 _GET_RTERRMSG -1fbf 0 268 832 -1fbf 2 271 832 -1fc1 13 272 832 -1fd4 2 275 832 -1fd6 1 276 832 -1fd7 7 273 832 -1fde 1 276 832 -FUNC 1fdf 39 0 _FF_MSGBANNER -1fdf 0 141 832 -1fdf 22 145 832 -2001 a 147 832 -200b c 148 832 -2017 1 150 832 -FUNC 2018 1 4 _initp_misc_winxfltr -2018 0 105 1166 -2018 1 106 1166 -FUNC 2019 32 4 xcptlookup -2019 0 410 1166 -2019 b 411 1166 -2024 14 418 1166 -2038 e 425 1166 -2046 2 428 1166 -2048 2 426 1166 -204a 1 429 1166 -FUNC 204b 15e 8 _XcptFilter -204b 6 206 1166 -2051 7 213 1166 -2058 8 214 1166 -2060 34 219 1166 -2094 2 221 1166 -2096 2 225 1166 -2098 3 227 1166 -209b 7 234 1166 -20a2 7 235 1166 -20a9 5 243 1166 -20ae 4 248 1166 -20b2 8 249 1166 -20ba 3 255 1166 -20bd 6 259 1166 -20c3 6 273 1166 -20c9 6 274 1166 -20cf c 283 1166 -20db 17 291 1166 -20f2 1e 294 1166 -2110 3 291 1166 -2113 c 321 1166 -211f 9 323 1166 -2128 7 325 1166 -212f 9 327 1166 -2138 7 329 1166 -213f 9 331 1166 -2148 7 333 1166 -214f 9 335 1166 -2158 7 337 1166 -215f 9 339 1166 -2168 7 341 1166 -216f 9 343 1166 -2178 7 345 1166 -217f 7 347 1166 -2186 8 356 1166 -218e 3 361 1166 -2191 2 363 1166 -2193 4 368 1166 -2197 3 369 1166 -219a 7 375 1166 -21a1 6 377 1166 -21a7 2 379 1166 -FUNC 21a9 1b 8 __CppXcptFilter -21a9 0 145 1166 -21a9 b 146 1166 -21b4 c 147 1166 -21c0 1 151 1166 -21c1 2 149 1166 -21c3 1 151 1166 -FUNC 21c4 db 0 _setenvp -21c4 1 77 694 -21c5 c 85 694 -21d1 5 86 694 -21d6 8 91 694 -21de 4 98 694 -21e2 8 99 694 -21ea 4 110 694 -21ee 1 111 694 -21ef 11 112 694 -2200 15 117 694 -2215 2 118 694 -2217 9 121 694 -2220 9 123 694 -2229 6 125 694 -222f 10 127 694 -223f 1c 133 694 -225b 3 134 694 -225e 6 121 694 -2264 b 138 694 -226f 6 139 694 -2275 2 142 694 -2277 a 149 694 -2281 7 152 694 -2288 17 153 694 -FUNC 229f a 4 _set_pgmptr -229f a 334 717 -FUNC 22a9 198 c parse_cmdline -22a9 4 218 736 -22ad 6 226 736 -22b3 8 230 736 -22bb 14 231 736 -22cf 3 250 736 -22d2 5 252 736 -22d7 5 254 736 -22dc 9 255 736 -22e5 2 256 736 -22e7 2 258 736 -22e9 4 259 736 -22ed 8 260 736 -22f5 2 262 736 -22f7 f 264 736 -2306 2 265 736 -2308 6 266 736 -230e a 267 736 -2318 1 268 736 -2319 1a 272 736 -2333 4 277 736 -2337 4 278 736 -233b 4 281 736 -233f 9 286 736 -2348 a 287 736 -2352 3 288 736 -2355 1 275 736 -2356 2 276 736 -2358 9 291 736 -2361 6 295 736 -2367 9 296 736 -2370 2 297 736 -2372 3 311 736 -2375 4 315 736 -2379 1 318 736 -237a 1 319 736 -237b 5 316 736 -2380 5 321 736 -2385 5 324 736 -238a e 325 736 -2398 2 326 736 -239a 2 327 736 -239c d 329 736 -23a9 2 332 736 -23ab 5 336 736 -23b0 4 337 736 -23b4 4 338 736 -23b8 6 339 736 -23be 3 338 736 -23c1 14 343 736 -23d5 4 348 736 -23d9 2 349 736 -23db 10 350 736 -23eb b 351 736 -23f6 2 352 736 -23f8 a 354 736 -2402 2 355 736 -2404 a 356 736 -240e 1 357 736 -240f 2 358 736 -2411 5 361 736 -2416 1 363 736 -2417 5 372 736 -241c 4 376 736 -2420 7 377 736 -2427 2 378 736 -2429 8 379 736 -2431 9 382 736 -243a 3 383 736 -243d 2 384 736 -243f 2 385 736 -FUNC 2441 b9 0 _setargv -2441 7 88 736 -2448 c 97 736 -2454 5 98 736 -2459 18 104 736 -2471 19 120 736 -248a 11 127 736 -249b 15 132 736 -24b0 a 136 736 -24ba 2 138 736 -24bc 8 140 736 -24c4 3 141 736 -24c7 2 142 736 -24c9 13 149 736 -24dc c 153 736 -24e8 6 157 736 -24ee 4 172 736 -24f2 6 134 736 -24f8 2 173 736 -FUNC 24fa 135 0 __crtGetEnvironmentStringsA -24fa 2 43 2721 -24fc 1a 57 2721 -2516 8 59 2721 -251e c 60 2721 -252a b 62 2721 -2535 e 63 2721 -2543 9 68 2721 -254c 4 71 2721 -2550 8 72 2721 -2558 7 73 2721 -255f 7 77 2721 -2566 7 78 2721 -256d 7 79 2721 -2574 1b 93 2721 -258f 13 97 2721 -25a2 11 111 2721 -25b3 a 113 2721 -25bd 8 114 2721 -25c5 7 99 2721 -25cc 4 100 2721 -25d0 6 123 2721 -25d6 2 152 2721 -25d8 a 126 2721 -25e2 6 127 2721 -25e8 4 133 2721 -25ec 5 134 2721 -25f1 5 135 2721 -25f6 5 138 2721 -25fb d 140 2721 -2608 7 141 2721 -260f 5 142 2721 -2614 b 145 2721 -261f 7 147 2721 -2626 6 149 2721 -262c 3 153 2721 -FUNC 262f 240 0 _ioinit -262f c 111 3137 -263b 5 122 3137 -2640 a 127 3137 -264a 7 128 3137 -2651 f 137 3137 -2660 6 139 3137 -2666 5 142 3137 -266b 6 143 3137 -2671 8 145 3137 -2679 4 146 3137 -267d 3 147 3137 -2680 4 148 3137 -2684 3 149 3137 -2687 4 151 3137 -268b 4 152 3137 -268f 4 153 3137 -2693 13 145 3137 -26a6 15 161 3137 -26bb 2 166 3137 -26bd 3 172 3137 -26c0 6 173 3137 -26c6 b 179 3137 -26d1 5 185 3137 -26d6 f 191 3137 -26e5 9 204 3137 -26ee 7 205 3137 -26f5 8 207 3137 -26fd 4 208 3137 -2701 3 209 3137 -2704 4 210 3137 -2708 4 211 3137 -270c 4 212 3137 -2710 4 213 3137 -2714 4 214 3137 -2718 f 207 3137 -2727 9 185 3137 -2730 2 284 3137 -2732 6 197 3137 -2738 8 221 3137 -2740 24 234 3137 -2764 15 236 3137 -2779 7 237 3137 -2780 5 238 3137 -2785 18 241 3137 -279d 3 243 3137 -27a0 d 221 3137 -27ad 2 253 3137 -27af b 255 3137 -27ba c 258 3137 -27c6 6 306 3137 -27cc 4 262 3137 -27d0 30 266 3137 -2800 2 271 3137 -2802 a 277 3137 -280c 6 278 3137 -2812 5 279 3137 -2817 4 280 3137 -281b 14 284 3137 -282f 3 286 3137 -2832 2 288 3137 -2834 4 297 3137 -2838 6 298 3137 -283e a 253 3137 -2848 c 313 3137 -2854 4 315 3137 -2858 7 128 3137 -285f a 129 3137 -2869 6 316 3137 -FUNC 286f 4c 0 _ioterm -286f 2 341 3137 -2871 5 345 3137 -2876 6 347 3137 -287c 8 353 3137 -2884 9 355 3137 -288d 11 356 3137 -289e 4 353 3137 -28a2 7 361 3137 -28a9 11 362 3137 -28ba 1 365 3137 -FUNC 28bb 24 0 _RTC_Initialize -FUNC 28df 24 0 _RTC_Terminate -FUNC 2903 6c 0 _use_encode_pointer -2903 7 66 641 -290a 2 72 641 -290c 12 75 641 -291e 7 76 641 -2925 5 78 641 -292a 7 82 641 -2931 5 85 641 -2936 e 91 641 -2944 1f 93 641 -2963 4 95 641 -2967 6 100 641 -296d 2 101 641 -FUNC 296f 6e 4 _encode_pointer -296f 1 120 641 -2970 2b 129 641 -299b 8 145 641 -29a3 d 133 641 -29b0 d 135 641 -29bd c 138 641 -29c9 4 148 641 -29cd a 150 641 -29d7 5 153 641 -29dc 1 154 641 -FUNC 29dd 9 0 _encoded_null -29dd 0 173 641 -29dd 8 174 641 -29e5 1 175 641 -FUNC 29e6 6e 4 _decode_pointer -29e6 1 194 641 -29e7 2b 203 641 -2a12 8 219 641 -2a1a d 207 641 -2a27 d 209 641 -2a34 c 212 641 -2a40 4 222 641 -2a44 a 224 641 -2a4e 5 227 641 -2a53 1 228 641 -FUNC 2a54 9 4 __crtTlsAlloc -2a54 0 240 641 -2a54 6 241 641 -2a5a 3 242 641 -FUNC 2a5d 15 4 __fls_getvalue -2a5d 0 258 641 -2a5d 12 259 641 -2a6f 3 260 641 -FUNC 2a72 6 0 __get_flsindex -2a72 0 272 641 -2a72 5 273 641 -2a77 1 274 641 -FUNC 2a78 32 0 __set_flsgetvalue -2a78 1 286 641 -2a79 e 288 641 -2a87 4 289 641 -2a8b e 291 641 -2a99 d 292 641 -2aa6 3 294 641 -2aa9 1 298 641 -FUNC 2aaa 19 8 __fls_setvalue -2aaa 0 315 641 -2aaa 16 316 641 -2ac0 3 317 641 -FUNC 2ac3 3d 0 _mtterm -2ac3 0 473 641 -2ac3 a 480 641 -2acd f 481 641 -2adc 7 482 641 -2ae3 a 485 641 -2aed 7 486 641 -2af4 7 487 641 -2afb 5 494 641 -FUNC 2b00 bf 8 _initptd -2b00 c 521 641 -2b0c e 522 641 -2b1a a 524 641 -2b24 6 525 641 -2b2a 4 527 641 -2b2e 9 529 641 -2b37 16 532 641 -2b4d 10 533 641 -2b5d 3 540 641 -2b60 7 544 641 -2b67 7 545 641 -2b6e 8 546 641 -2b76 7 547 641 -2b7d 8 551 641 -2b85 4 552 641 -2b89 6 553 641 -2b8f 4 561 641 -2b93 8 562 641 -2b9b 9 563 641 -2ba4 c 565 641 -2bb0 6 568 641 -2bb6 9 566 641 -FUNC 2bbf 77 0 _getptd_noexit -2bbf 2 588 641 -2bc1 6 592 641 -2bc7 15 600 641 -2bdc 14 608 641 -2bf0 19 610 641 -2c09 a 616 641 -2c13 6 618 641 -2c19 6 619 641 -2c1f 2 621 641 -2c21 7 627 641 -2c28 2 628 641 -2c2a 8 633 641 -2c32 3 635 641 -2c35 1 636 641 -FUNC 2c36 18 0 _getptd -2c36 1 657 641 -2c37 7 658 641 -2c3e 4 659 641 -2c42 8 660 641 -2c4a 3 662 641 -2c4d 1 663 641 -FUNC 2c4e 121 4 _freefls -2c4e c 691 641 -2c5a b 702 641 -2c65 7 703 641 -2c6c 7 704 641 -2c73 7 706 641 -2c7a 7 707 641 -2c81 7 709 641 -2c88 7 710 641 -2c8f 7 712 641 -2c96 7 713 641 -2c9d 7 715 641 -2ca4 7 716 641 -2cab 7 718 641 -2cb2 7 719 641 -2cb9 a 721 641 -2cc3 7 722 641 -2cca 8 724 641 -2cd2 4 725 641 -2cd6 1a 728 641 -2cf0 7 729 641 -2cf7 c 731 641 -2d03 8 735 641 -2d0b 7 737 641 -2d12 7 738 641 -2d19 7 740 641 -2d20 15 743 641 -2d35 7 744 641 -2d3c c 747 641 -2d48 7 751 641 -2d4f 8 754 641 -2d57 3 731 641 -2d5a 9 732 641 -2d63 3 747 641 -2d66 9 748 641 -FUNC 2d6f 69 4 _freeptd -2d6f 0 778 641 -2d6f a 783 641 -2d79 1b 795 641 -2d94 13 796 641 -2da7 16 802 641 -2dbd 7 804 641 -2dc4 a 807 641 -2dce 9 811 641 -2dd7 1 813 641 -FUNC 2dd8 6 0 __threadid -2dd8 0 837 641 -2dd8 6 838 641 -FUNC 2dde 6 0 __threadhandle -2dde 0 844 641 -2dde 6 845 641 -FUNC 2de4 184 0 _mtinit -2de4 1 346 641 -2de5 d 355 641 -2df2 4 356 641 -2df6 5 357 641 -2dfb 3 358 641 -2dfe 2 444 641 -2e00 e 362 641 -2e0e d 365 641 -2e1b d 368 641 -2e28 d 371 641 -2e35 2a 372 641 -2e5f a 375 641 -2e69 1a 379 641 -2e83 25 388 641 -2ea8 5 393 641 -2ead b 400 641 -2eb8 10 401 641 -2ec8 10 402 641 -2ed8 18 403 641 -2ef0 7 410 641 -2ef7 2 412 641 -2ef9 1b 418 641 -2f14 2 420 641 -2f16 2d 428 641 -2f43 a 438 641 -2f4d 6 440 641 -2f53 6 441 641 -2f59 5 443 641 -2f5e 5 430 641 -2f63 4 389 641 -2f67 1 444 641 -FUNC 2f68 5b 0 __heap_select -2f68 6 70 3503 -2f6e 23 143 3503 -2f91 1b 144 3503 -2fac d 145 3503 -2fb9 3 146 3503 -2fbc 2 164 3503 -2fbe 3 161 3503 -2fc1 2 164 3503 -FUNC 2fc3 5a 4 _heap_init -2fc3 0 192 3503 -2fc3 20 199 3503 -2fe3 2 200 3503 -2fe5 1 240 3503 -2fe6 5 204 3503 -2feb a 206 3503 -2ff5 f 209 3503 -3004 c 211 3503 -3010 7 212 3503 -3017 2 213 3503 -3019 3 239 3503 -301c 1 240 3503 -FUNC 301d 74 0 _heap_term -301d 1 261 3503 -301e c 264 3503 -302a 1b 270 3503 -3045 f 273 3503 -3054 b 276 3503 -305f d 278 3503 -306c 11 281 3503 -307d c 300 3503 -3089 7 301 3503 -3090 1 302 3503 -FUNC 3091 6 0 _get_heap_handle -3091 0 320 3503 -3091 5 322 3503 -3096 1 323 3503 -FUNC 3098 45 0 _SEH_prolog4 -FUNC 30dd 14 0 _SEH_epilog4 -FUNC 3100 24 0 ValidateLocalCookies -FUNC 3130 196 10 _except_handler4 -FUNC 32c6 94 0 __security_init_cookie -32c6 6 97 2103 -32cc 21 114 2103 -32ed 7 116 2103 -32f4 3 117 2103 -32f7 a 127 2103 -3301 6 132 2103 -3307 8 135 2103 -330f 8 136 2103 -3317 8 137 2103 -331f 10 139 2103 -332f 2 144 2103 -3331 4 161 2103 -3335 7 163 2103 -333c 4 166 2103 -3340 7 168 2103 -3347 6 172 2103 -334d b 173 2103 -3358 2 175 2103 -FUNC 335a a 4 _initp_misc_invarg -335a 0 38 1742 -335a 9 39 1742 -3363 1 40 1742 -FUNC 3364 fc 14 _invoke_watson -3364 1c 111 1742 -3380 6 128 1742 -3386 6 129 1742 -338c 6 130 1742 -3392 3 131 1742 -3395 3 132 1742 -3398 3 133 1742 -339b 7 134 1742 -33a2 7 135 1742 -33a9 4 136 1742 -33ad 4 137 1742 -33b1 4 138 1742 -33b5 4 139 1742 -33b9 1 140 1742 -33ba 6 141 1742 -33c0 6 147 1742 -33c6 19 148 1742 -33df 3 150 1742 -33e2 13 163 1742 -33f5 6 168 1742 -33fb 13 169 1742 -340e 6 171 1742 -3414 a 174 1742 -341e a 176 1742 -3428 8 180 1742 -3430 8 181 1742 -3438 12 184 1742 -344a 16 185 1742 -FUNC 3460 22 4 _set_invalid_parameter_handler -3460 1 207 1742 -3461 b 211 1742 -346c d 212 1742 -3479 5 214 1742 -347e 3 216 1742 -3481 1 217 1742 -FUNC 3482 d 0 _get_invalid_parameter_handler -3482 0 221 1742 -3482 c 225 1742 -348e 1 228 1742 -FUNC 348f 9 14 _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int) -348f 3 266 1742 -3492 1 274 1742 -3493 5 273 1742 -FUNC 3498 24 14 _invalid_parameter -3498 3 70 1742 -349b b 77 1742 -34a6 5 78 1742 -34ab 1 89 1742 -34ac 2 80 1742 -34ae 8 86 1742 -34b6 1 89 1742 -34b7 5 88 1742 -FUNC 34bc 10 0 _invalid_parameter_noinfo -34bc 0 98 1742 -34bc f 99 1742 -34cb 1 100 1742 -FUNC 34cc 9 14 _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int) -34cc 3 249 1742 -34cf 1 257 1742 -34d0 5 256 1742 -FUNC 34d5 49 0 _mtinitlocks -34d5 2 137 785 -34d7 7 144 785 -34de 11 145 785 -34ef 2 146 785 -34f1 15 148 785 -3506 6 144 785 -350c 5 157 785 -3511 d 158 785 -FUNC 351e 55 0 _mtdeletelocks -351e 1 188 785 -351f d 194 785 -352c c 196 785 -3538 3 200 785 -353b 6 206 785 -3541 f 207 785 -3550 6 215 785 -3556 c 217 785 -3562 10 221 785 -3572 1 224 785 -FUNC 3573 15 4 _unlock -3573 3 371 785 -3576 10 375 785 -3586 2 376 785 -FUNC 3588 18 4 _lockerr_exit -3588 0 403 785 -3588 c 404 785 -3594 b 405 785 -359f 1 406 785 -FUNC 35a0 c3 4 _mtinitlocknum -35a0 c 259 785 -35ac 6 261 785 -35b2 a 269 785 -35bc 5 270 785 -35c1 7 271 785 -35c8 c 272 785 -35d4 e 276 785 -35e2 4 277 785 -35e6 e 279 785 -35f4 b 280 785 -35ff 4 281 785 -3603 8 284 785 -360b 3 285 785 -360e 4 287 785 -3612 11 288 785 -3623 7 289 785 -362a b 290 785 -3635 3 291 785 -3638 2 292 785 -363a 2 293 785 -363c 2 296 785 -363e 7 297 785 -3645 c 300 785 -3651 3 304 785 -3654 6 305 785 -365a 9 301 785 -FUNC 3663 31 4 _lock -3663 3 333 785 -3666 10 338 785 -3676 b 340 785 -3681 8 341 785 -3689 9 348 785 -3692 2 349 785 -FUNC 3694 65 c strcpy_s -3694 0 13 448 -3694 30 18 448 -36c4 c 19 448 -36d0 2 21 448 -36d2 d 23 448 -36df 4 27 448 -36e3 2 29 448 -36e5 e 30 448 -36f3 5 33 448 -36f8 1 34 448 -FUNC 3700 8b 4 strlen -3700 0 54 547 -3700 4 63 547 -3704 6 64 547 -370a 2 65 547 -370c 2 69 547 -370e 3 70 547 -3711 2 71 547 -3713 2 72 547 -3715 6 73 547 -371b 2 74 547 -371d 13 76 547 -3730 2 81 547 -3732 5 82 547 -3737 2 83 547 -3739 3 84 547 -373c 2 85 547 -373e 3 86 547 -3741 5 87 547 -3746 2 88 547 -3748 3 90 547 -374b 2 91 547 -374d 2 92 547 -374f 2 93 547 -3751 2 94 547 -3753 5 95 547 -3758 2 96 547 -375a 5 97 547 -375f 2 98 547 -3761 2 99 547 -3763 3 103 547 -3766 4 104 547 -376a 2 105 547 -376c 1 106 547 -376d 3 108 547 -3770 4 109 547 -3774 2 110 547 -3776 1 111 547 -3777 3 113 547 -377a 4 114 547 -377e 2 115 547 -3780 1 116 547 -3781 3 118 547 -3784 4 119 547 -3788 2 120 547 -378a 1 121 547 -FUNC 378b 6 0 HeapManager::Block::Block() -378b 6 90 3704 -FUNC 3791 1b 8 HeapManager::Constructor(void * (*)(unsigned int),void (*)(void *)) -3791 6 100 3704 -3797 7 101 3704 -379e 5 102 3704 -37a3 3 103 3704 -37a6 3 104 3704 -37a9 3 105 3704 -FUNC 37ac 26 0 HeapManager::Destructor() -37ac 9 110 3704 -37b5 2 111 3704 -37b7 5 113 3704 -37bc 15 115 3704 -37d1 1 118 3704 -FUNC 37d2 63 0 UnDecorator::getNumberOfDimensions() -37d2 0 1663 3704 -37d2 c 1664 3704 -37de 2 1665 3704 -37e0 1 1696 3704 -37e1 a 1666 3704 -37eb d 1667 3704 -37f8 1 1696 3704 -37f9 4 1670 3704 -37fd 4 1677 3704 -3801 a 1679 3704 -380b 6 1680 3704 -3811 d 1684 3704 -381e 5 1675 3704 -3823 e 1690 3704 -3831 3 1691 3704 -3834 1 1696 3704 -FUNC 3835 474 0 UnDecorator::getTypeEncoding() -3835 f 2335 3704 -3844 2 2336 3704 -3846 5 2341 3704 -384b 9 2345 3704 -3854 c 2351 3704 -3860 9 2423 3704 -3869 2 2426 3704 -386b 2a 2427 3704 -3895 8 2450 3704 -389d 2 2451 3704 -389f 24 2454 3704 -38c3 7 2462 3704 -38ca 5 2463 3704 -38cf 6 2353 3704 -38d5 8 2358 3704 -38dd b 2362 3704 -38e8 5 2363 3704 -38ed 2 2364 3704 -38ef 5 2365 3704 -38f4 9 2369 3704 -38fd 1b 2373 3704 -3918 11 2377 3704 -3929 a 2393 3704 -3933 10 2388 3704 -3943 2 2389 3704 -3945 18 2384 3704 -395d 2 2385 3704 -395f 12 2380 3704 -3971 16 2399 3704 -3987 11 2418 3704 -3998 a 2406 3704 -39a2 5 2407 3704 -39a7 15 2410 3704 -39bc 5 2422 3704 -39c1 1b 2427 3704 -39dc a 2430 3704 -39e6 5 2431 3704 -39eb 7 2472 3704 -39f2 a 2478 3704 -39fc c 2483 3704 -3a08 5 2485 3704 -3a0d 5 2486 3704 -3a12 5 2487 3704 -3a17 5 2490 3704 -3a1c 5 2505 3704 -3a21 5 2508 3704 -3a26 5 2509 3704 -3a2b 5 2434 3704 -3a30 5 2435 3704 -3a35 1a 2427 3704 -3a4f 30 2568 3704 -3a7f 5 2529 3704 -3a84 4 2530 3704 -3a88 a 2531 3704 -3a92 2 2532 3704 -3a94 a 2533 3704 -3a9e 5 2537 3704 -3aa3 5 2538 3704 -3aa8 2 2539 3704 -3aaa 5 2540 3704 -3aaf e 2544 3704 -3abd 6 2560 3704 -3ac3 10 2555 3704 -3ad3 2 2556 3704 -3ad5 18 2551 3704 -3aed 2 2552 3704 -3aef 12 2547 3704 -3b01 2 2564 3704 -3b03 a 2442 3704 -3b0d 2 2443 3704 -3b0f a 2438 3704 -3b19 2 2439 3704 -3b1b 5 2445 3704 -3b20 c 2574 3704 -3b2c 14 2577 3704 -3b40 a 2579 3704 -3b4a 18 2586 3704 -3b62 1a 2589 3704 -3b7c 1b 2590 3704 -3b97 5 2591 3704 -3b9c 1a 2594 3704 -3bb6 1b 2595 3704 -3bd1 5 2596 3704 -3bd6 1a 2599 3704 -3bf0 10 2600 3704 -3c00 2 2601 3704 -3c02 7 2604 3704 -3c09 2 2605 3704 -3c0b a 2608 3704 -3c15 2 2609 3704 -3c17 a 2612 3704 -3c21 2 2613 3704 -3c23 a 2616 3704 -3c2d 2 2617 3704 -3c2f a 2620 3704 -3c39 2 2621 3704 -3c3b a 2624 3704 -3c45 7 2634 3704 -3c4c 7 2635 3704 -3c53 7 2637 3704 -3c5a 10 2639 3704 -3c6a 3f 2648 3704 -FUNC 3ca9 b 0 UnDecorator::doUnderScore() -3ca9 b 4259 3704 -FUNC 3cb4 d 0 UnDecorator::doMSKeywords() -3cb4 d 4260 3704 -FUNC 3cc1 e 0 UnDecorator::doPtr64() -3cc1 e 4261 3704 -FUNC 3ccf e 0 UnDecorator::doFunctionReturns() -3ccf e 4262 3704 -FUNC 3cdd e 0 UnDecorator::doAllocationModel() -3cdd e 4263 3704 -FUNC 3ceb e 0 UnDecorator::doAllocationLanguage() -3ceb e 4264 3704 -FUNC 3cf9 12 0 UnDecorator::doThisTypes() -3cf9 12 4271 3704 -FUNC 3d0b e 0 UnDecorator::doAccessSpecifiers() -3d0b e 4272 3704 -FUNC 3d19 e 0 UnDecorator::doThrowTypes() -3d19 e 4273 3704 -FUNC 3d27 e 0 UnDecorator::doMemberTypes() -3d27 e 4274 3704 -FUNC 3d35 b 0 UnDecorator::doNameOnly() -3d35 b 4279 3704 -FUNC 3d40 b 0 UnDecorator::doTypeOnly() -3d40 b 4280 3704 -FUNC 3d4b b 0 UnDecorator::haveTemplateParameters() -3d4b b 4281 3704 -FUNC 3d56 e 0 UnDecorator::doEcsu() -3d56 e 4282 3704 -FUNC 3d64 b 0 UnDecorator::doNoIdentCharCheck() -3d64 b 4283 3704 -FUNC 3d6f e 0 UnDecorator::doEllipsis() -3d6f e 4284 3704 -FUNC 3d7d 19 4 UnDecorator::UScore(Tokens) -3d7d 0 4288 3704 -3d7d 9 4293 3704 -3d86 d 4294 3704 -3d93 2 4296 3704 -3d95 1 4298 3704 -FUNC 3d96 84 8 HeapManager::getMemory(unsigned int,int) -3d96 2 134 3737 -3d98 a 137 3737 -3da2 9 139 3737 -3dab 6 140 3737 -3db1 4 146 3737 -3db5 3 147 3737 -3db8 8 149 3737 -3dc0 7 153 3737 -3dc7 2 154 3737 -3dc9 1c 159 3737 -3de5 4 164 3737 -3de9 7 168 3737 -3df0 2 169 3737 -3df2 2 170 3737 -3df4 3 171 3737 -3df7 8 175 3737 -3dff 2 182 3737 -3e01 4 179 3737 -3e05 5 183 3737 -3e0a d 187 3737 -3e17 3 190 3737 -FUNC 3e1a d 0 DName::DName() -3e1a 2 210 3737 -3e1c 3 211 3737 -3e1f 7 220 3737 -3e26 1 221 3737 -FUNC 3e27 12 4 DName::DName(DNameNode *) -3e27 2 224 3737 -3e29 4 225 3737 -3e2d 9 234 3737 -3e36 3 235 3737 -FUNC 3e39 9c 4 DName::DName(DName const &) -3e39 2 259 3737 -3e3b 17 260 3737 -3e52 10 261 3737 -3e62 d 262 3737 -3e6f d 263 3737 -3e7c 10 264 3737 -3e8c 4 265 3737 -3e90 e 266 3737 -3e9e 13 267 3737 -3eb1 10 268 3737 -3ec1 11 269 3737 -3ed2 3 270 3737 -FUNC 3ed5 a 0 DName::status() -3ed5 a 481 3737 -FUNC 3edf 5 0 DName::clearStatus() -3edf 5 482 3737 -FUNC 3ee4 7 0 DName::setPtrRef() -3ee4 7 484 3737 -FUNC 3eeb a 0 DName::isPtrRef() -3eeb a 485 3737 -FUNC 3ef5 8 0 DName::setIsArray() -3ef5 8 490 3737 -FUNC 3efd a 0 DName::isArray() -3efd a 491 3737 -FUNC 3f07 a 0 DName::isNoTE() -3f07 a 492 3737 -FUNC 3f11 8 0 DName::setIsNoTE() -3f11 8 493 3737 -FUNC 3f19 a 0 DName::isPinPtr() -3f19 a 494 3737 -FUNC 3f23 8 0 DName::setIsPinPtr() -3f23 8 495 3737 -FUNC 3f2b a 0 DName::isComArray() -3f2b a 496 3737 -FUNC 3f35 8 0 DName::setIsComArray() -3f35 8 497 3737 -FUNC 3f3d a 0 DName::isVCallThunk() -3f3d a 498 3737 -FUNC 3f47 8 0 DName::setIsVCallThunk() -3f47 8 499 3737 -FUNC 3f4f 7b 4 DName::operator=(DName const &) -3f4f 3 879 3737 -3f52 12 880 3737 -3f64 17 882 3737 -3f7b d 883 3737 -3f88 d 884 3737 -3f95 d 885 3737 -3fa2 10 886 3737 -3fb2 10 887 3737 -3fc2 5 889 3737 -3fc7 3 897 3737 -FUNC 3fca 9 0 Replicator::isFull() -3fca 9 1001 3737 -FUNC 3fd3 25 4 Replicator::operator[](int) -3fd3 0 1028 3737 -3fd3 9 1029 3737 -3fdc b 1031 3737 -3fe7 6 1034 3737 -3fed 5 1032 3737 -3ff2 3 1030 3737 -3ff5 3 1036 3737 -FUNC 3ff8 d 0 DNameNode::DNameNode() -3ff8 d 1048 3737 -FUNC 4005 4 0 DNameNode::nextNode() -4005 4 1052 3737 -FUNC 4009 29 4 DNameNode::operator+=(DNameNode *) -4009 2 1131 3737 -400b 8 1132 3737 -4013 8 1134 3737 -401b b 1139 3737 -4026 4 1144 3737 -402a 2 1147 3737 -402c 3 1148 3737 -402f 3 1156 3737 -FUNC 4032 16 4 charNode::charNode(char) -4032 16 1166 3737 -FUNC 4048 4 0 charNode::length() -4048 4 1168 3737 -FUNC 404c 4 0 charNode::getLastChar() -404c 4 1170 3737 -FUNC 4050 1b 8 charNode::getString(char *,int) -4050 0 1173 3737 -4050 f 1174 3737 -405f 5 1175 3737 -4064 2 1176 3737 -4066 2 1177 3737 -4068 3 1183 3737 -FUNC 406b 4 0 pcharNode::length() -406b 4 1189 3737 -FUNC 406f 2f 4 pDNameNode::pDNameNode(DName *) -406f 2f 1244 3737 -FUNC 409e 25 4 DNameStatusNode::DNameStatusNode(DNameStatus) -409e 25 1261 3737 -FUNC 40c3 4 0 DNameStatusNode::length() -40c3 4 1263 3737 -FUNC 40c7 d 0 DNameStatusNode::getLastChar() -40c7 d 1266 3737 -FUNC 40d4 e 0 und_strlen -40d4 0 1283 3737 -40d4 6 1286 3737 -40da 7 1287 3737 -40e1 1 1291 3737 -FUNC 40e2 20 8 und_strncpy -40e2 0 1295 3737 -40e2 1b 1296 3737 -40fd 4 1299 3737 -4101 1 1301 3737 -FUNC 4102 25 4 und_strncmp -4102 0 1304 3737 -4102 7 1305 3737 -4109 2 1306 3737 -410b 1 1315 3737 -410c a 1308 3737 -4116 1 1310 3737 -4117 1 1311 3737 -4118 6 1308 3737 -411e 8 1314 3737 -4126 1 1315 3737 -FUNC 4127 33 0 UnDecorator::getDataIndirectType() -4127 33 4033 3704 -FUNC 415a 34 0 UnDecorator::getThisType() -415a 34 4034 3704 -FUNC 418e 13 c operator new(unsigned int,HeapManager &,int) -418e 13 131 3737 -FUNC 41a1 56 4 DName::DName(DName *) -41a1 0 274 3737 -41a1 a 275 3737 -41ab 23 277 3737 -41ce 13 278 3737 -41e1 2 281 3737 -41e3 4 283 3737 -41e7 3 284 3737 -41ea 7 295 3737 -41f1 6 296 3737 -FUNC 41f7 61 4 DName::DName(DNameStatus) -41f7 2 457 3737 -41f9 21 458 3737 -421a 1e 459 3737 -4238 7 467 3737 -423f 9 469 3737 -4248 a 470 3737 -4252 6 472 3737 -FUNC 4258 17 0 DName::isValid() -4258 17 478 3737 -FUNC 426f 15 0 DName::isEmpty() -426f 15 479 3737 -FUNC 4284 14 0 DName::isUDC() -4284 14 486 3737 -FUNC 4298 e 0 DName::setIsUDC() -4298 e 487 3737 -FUNC 42a6 14 0 DName::isUDTThunk() -42a6 14 488 3737 -FUNC 42ba 25 0 DName::length() -42ba 1 502 3737 -42bb 2 503 3737 -42bd a 506 3737 -42c7 4 507 3737 -42cb b 508 3737 -42d6 5 507 3737 -42db 3 510 3737 -42de 1 512 3737 -FUNC 42df 38 0 DName::getLastChar() -42df 2 516 3737 -42e1 2 517 3737 -42e3 9 519 3737 -42ec 6 520 3737 -42f2 a 521 3737 -42fc 2 522 3737 -42fe 7 520 3737 -4305 11 524 3737 -4316 1 526 3737 -FUNC 4317 91 8 DName::getString(char *,int) -4317 7 530 3737 -431e 9 531 3737 -4327 5 535 3737 -432c 7 537 3737 -4333 e 538 3737 -4341 c 544 3737 -434d d 550 3737 -435a 4 553 3737 -435e 8 555 3737 -4366 4 561 3737 -436a 6 565 3737 -4370 2 566 3737 -4372 b 570 3737 -437d 4 574 3737 -4381 2 578 3737 -4383 3 579 3737 -4386 3 586 3737 -4389 4 553 3737 -438d 4 590 3737 -4391 2 593 3737 -4393 6 594 3737 -4399 6 595 3737 -439f 5 599 3737 -43a4 4 601 3737 -FUNC 43a8 35 4 DName::operator|=(DName const &) -43a8 3 832 3737 -43ab 19 835 3737 -43c4 13 836 3737 -43d7 3 840 3737 -43da 3 842 3737 -FUNC 43dd 81 4 DName::operator=(DNameStatus) -43dd 2 928 3737 -43df 10 929 3737 -43ef 12 937 3737 -4401 26 945 3737 -4427 6 947 3737 -442d e 948 3737 -443b 10 933 3737 -444b d 934 3737 -4458 3 954 3737 -445b 3 956 3737 -FUNC 445e 1e 0 Replicator::Replicator() -445e 1e 1004 3737 -FUNC 447c 47 4 Replicator::operator+=(DName const &) -447c 3 1009 3737 -447f 12 1010 3737 -4491 20 1012 3737 -44b1 4 1017 3737 -44b5 8 1018 3737 -44bd 3 1022 3737 -44c0 3 1024 3737 -FUNC 44c3 47 0 DNameNode::clone() -44c3 3 1055 3737 -44c6 43 1056 3737 -4509 1 1057 3737 -FUNC 450a 65 8 pcharNode::pcharNode(char const *,int) -450a 1 1197 3737 -450b 1f 1200 3737 -452a c 1201 3737 -4536 8 1205 3737 -453e c 1207 3737 -454a a 1210 3737 -4554 b 1211 3737 -455f 2 1214 3737 -4561 3 1216 3737 -4564 4 1217 3737 -4568 7 1220 3737 -FUNC 456f 12 0 pcharNode::getLastChar() -456f 12 1191 3737 -FUNC 4581 31 8 pcharNode::getString(char *,int) -4581 0 1224 3737 -4581 b 1227 3737 -458c 2 1228 3737 -458e 21 1232 3737 -45af 3 1234 3737 -FUNC 45b2 f 0 pDNameNode::length() -45b2 f 1246 3737 -FUNC 45c1 f 0 pDNameNode::getLastChar() -45c1 f 1248 3737 -FUNC 45d0 1d 8 pDNameNode::getString(char *,int) -45d0 1d 1251 3737 -FUNC 45ed 33 8 DNameStatusNode::getString(char *,int) -45ed 0 1269 3737 -45ed b 1272 3737 -45f8 2 1273 3737 -45fa 23 1277 3737 -461d 3 1279 3737 -FUNC 4620 73 14 UnDecorator::UnDecorator(char *,char const *,int,char * (*)(long),unsigned long) -4620 16 736 3704 -4636 8 737 3704 -463e 5 738 3704 -4643 9 740 3704 -464c a 741 3704 -4656 5 745 3704 -465b 2 747 3704 -465d 6 748 3704 -4663 6 749 3704 -4669 8 754 3704 -4671 15 755 3704 -4686 d 758 3704 -FUNC 4693 2f 4 UnDecorator::getReturnType(DName *) -4693 3 2906 3704 -4696 8 2907 3704 -469e 15 2911 3704 -46b3 d 2915 3704 -46c0 2 2917 3704 -FUNC 46c2 f 0 UnDecorator::getStorageConvention() -46c2 f 4032 3704 -FUNC 46d1 79 4 DName::operator+=(DNameStatus) -46d1 4 799 3737 -46d5 17 800 3737 -46ec 20 804 3737 -470c 4 807 3737 -4710 7 809 3737 -4717 6 811 3737 -471d 8 812 3737 -4725 2 815 3737 -4727 3 816 3737 -472a 5 818 3737 -472f e 819 3737 -473d 7 801 3737 -4744 3 825 3737 -4747 3 827 3737 -FUNC 474a 68 4 DName::operator=(DName *) -474a 3 901 3737 -474d 12 902 3737 -475f 7 903 3737 -4766 29 911 3737 -478f 6 913 3737 -4795 c 914 3737 -47a1 2 917 3737 -47a3 9 918 3737 -47ac 3 922 3737 -47af 3 924 3737 -FUNC 47b2 a6 8 DName::doPchar(char const *,int) -47b2 3 962 3737 -47b5 1e 963 3737 -47d3 6 964 3737 -47d9 c 965 3737 -47e5 10 966 3737 -47f5 5 970 3737 -47fa 23 984 3737 -481d 6 986 3737 -4823 9 987 3737 -482c 2 988 3737 -482e 1b 977 3737 -4849 c 993 3737 -4855 3 995 3737 -FUNC 4858 26 4 DName::DName(char) -4858 3 238 3737 -485b 3 244 3737 -485e 7 248 3737 -4865 7 252 3737 -486c c 253 3737 -4878 6 255 3737 -FUNC 487e 31 4 DName::DName(char const *) -487e 0 300 3737 -487e 16 312 3737 -4894 15 313 3737 -48a9 6 315 3737 -FUNC 48af d0 8 DName::DName(char const * &,char) -48af 7 319 3737 -48b6 d 329 3737 -48c3 f 333 3737 -48d2 8 334 3737 -48da 9 342 3737 -48e3 40 343 3737 -4923 b 344 3737 -492e 9 355 3737 -4937 8 359 3737 -493f 8 361 3737 -4947 9 363 3737 -4950 3 364 3737 -4953 2 367 3737 -4955 3 347 3737 -4958 a 378 3737 -4962 8 380 3737 -496a 6 368 3737 -4970 7 371 3737 -4977 6 372 3737 -497d 2 375 3737 -FUNC 497f 69 8 DName::DName(unsigned __int64) -497f 15 384 3737 -4994 3 390 3737 -4997 a 398 3737 -49a1 4 402 3737 -49a5 13 406 3737 -49b8 3 407 3737 -49bb c 409 3737 -49c7 e 411 3737 -49d5 13 413 3737 -FUNC 49e8 96 8 DName::DName(__int64) -49e8 10 416 3737 -49f8 26 436 3737 -4a1e 15 438 3737 -4a33 10 443 3737 -4a43 5 444 3737 -4a48 c 446 3737 -4a54 6 448 3737 -4a5a 4 449 3737 -4a5e e 452 3737 -4a6c 12 453 3737 -FUNC 4a7e 2e 4 DName::operator+(DNameStatus) -4a7e 1 675 3737 -4a7f c 676 3737 -4a8b 9 679 3737 -4a94 b 680 3737 -4a9f 2 681 3737 -4aa1 5 682 3737 -4aa6 3 686 3737 -4aa9 3 688 3737 -FUNC 4aac 62 4 DName::operator+=(DName const &) -4aac 2 739 3737 -4aae f 740 3737 -4abd 13 741 3737 -4ad0 2 742 3737 -4ad2 9 743 3737 -4adb 6 744 3737 -4ae1 2 745 3737 -4ae3 7 747 3737 -4aea 6 749 3737 -4af0 9 750 3737 -4af9 2 751 3737 -4afb d 752 3737 -4b08 3 758 3737 -4b0b 3 760 3737 -FUNC 4b0e 8b 4 DName::operator+=(DName *) -4b0e 2 764 3737 -4b10 a 765 3737 -4b1a 9 766 3737 -4b23 8 767 3737 -4b2b 10 768 3737 -4b3b 8 789 3737 -4b43 20 770 3737 -4b63 4 773 3737 -4b67 7 775 3737 -4b6e 6 777 3737 -4b74 8 778 3737 -4b7c 2 781 3737 -4b7e 3 782 3737 -4b81 5 784 3737 -4b86 d 785 3737 -4b93 3 793 3737 -4b96 3 795 3737 -FUNC 4b99 1c 4 DName::operator=(char) -4b99 1 847 3737 -4b9a 15 854 3737 -4baf 3 856 3737 -4bb2 3 858 3737 -FUNC 4bb5 2a 4 DName::operator=(char const *) -4bb5 0 862 3737 -4bb5 24 869 3737 -4bd9 3 873 3737 -4bdc 3 875 3737 -FUNC 4bdf a6 0 UnDecorator::getCallingConvention() -4bdf 5 2825 3704 -4be4 f 2826 3704 -4bf3 c 2828 3704 -4bff 5 2835 3704 -4c04 1a 2845 3704 -4c1e 20 2852 3704 -4c3e 2 2875 3704 -4c40 2 2876 3704 -4c42 2 2871 3704 -4c44 2 2872 3704 -4c46 2 2867 3704 -4c48 2 2868 3704 -4c4a 2 2863 3704 -4c4c 2 2864 3704 -4c4e 1 2859 3704 -4c4f 2 2860 3704 -4c51 13 2855 3704 -4c64 e 2891 3704 -4c72 4 2895 3704 -4c76 d 2899 3704 -4c83 2 2901 3704 -FUNC 4c85 37 0 UnDecorator::getVCallThunkType() -4c85 3 4057 3704 -4c88 9 4059 3704 -4c91 5 4066 3704 -4c96 4 4059 3704 -4c9a 4 4066 3704 -4c9e 6 4061 3704 -4ca4 c 4062 3704 -4cb0 a 4064 3704 -4cba 2 4170 3704 -FUNC 4cbc 51 4 DName::operator+(DName const &) -4cbc 1 639 3737 -4cbd c 640 3737 -4cc9 b 643 3737 -4cd4 b 644 3737 -4cdf d 645 3737 -4cec 11 646 3737 -4cfd 2 647 3737 -4cff 8 648 3737 -4d07 3 652 3737 -4d0a 3 654 3737 -FUNC 4d0d 2e 4 DName::operator+(DName *) -4d0d 1 658 3737 -4d0e c 659 3737 -4d1a 9 662 3737 -4d23 b 663 3737 -4d2e 2 664 3737 -4d30 5 665 3737 -4d35 3 669 3737 -4d38 3 671 3737 -FUNC 4d3b 6a 4 DName::operator+=(char) -4d3b 1 693 3737 -4d3c b 694 3737 -4d47 9 695 3737 -4d50 6 696 3737 -4d56 2 697 3737 -4d58 7 699 3737 -4d5f 6 701 3737 -4d65 2b 702 3737 -4d90 2 703 3737 -4d92 c 704 3737 -4d9e 4 710 3737 -4da2 3 712 3737 -FUNC 4da5 6c 4 DName::operator+=(char const *) -4da5 2 716 3737 -4da7 f 717 3737 -4db6 9 718 3737 -4dbf 6 719 3737 -4dc5 2 720 3737 -4dc7 7 722 3737 -4dce 6 724 3737 -4dd4 28 725 3737 -4dfc 2 726 3737 -4dfe d 727 3737 -4e0b 3 733 3737 -4e0e 3 735 3737 -FUNC 4e11 e0 0 UnDecorator::getArgumentList() -4e11 7 3076 3704 -4e18 12 3078 3704 -4e2a 29 3081 3704 -4e53 6 3085 3704 -4e59 4 3086 3704 -4e5d 2 3087 3704 -4e5f e 3088 3704 -4e6d 6 3093 3704 -4e73 6 3095 3704 -4e79 5 3100 3704 -4e7e 1 3102 3704 -4e7f 11 3106 3704 -4e90 2 3109 3704 -4e92 16 3116 3704 -4ea8 19 3121 3704 -4ec1 9 3122 3704 -4eca 17 3126 3704 -4ee1 b 3132 3704 -4eec 3 3141 3704 -4eef 2 3143 3704 -FUNC 4ef1 4f 4 UnDecorator::getVdispMapType(DName const &) -4ef1 6 4230 3704 -4ef7 d 4231 3704 -4f04 c 4232 3704 -4f10 12 4233 3704 -4f22 9 4234 3704 -4f2b a 4236 3704 -4f35 6 4237 3704 -4f3b 3 4238 3704 -4f3e 2 4239 3704 -FUNC 4f40 22 8 operator+(char,DName const &) -4f40 22 198 3737 -FUNC 4f62 22 8 operator+(DNameStatus,DName const &) -4f62 22 201 3737 -FUNC 4f84 22 8 operator+(char const *,DName const &) -4f84 22 204 3737 -FUNC 4fa6 2e 4 DName::operator+(char) -4fa6 1 605 3737 -4fa7 c 606 3737 -4fb3 9 609 3737 -4fbc b 610 3737 -4fc7 2 611 3737 -4fc9 5 612 3737 -4fce 3 616 3737 -4fd1 3 618 3737 -FUNC 4fd4 2e 4 DName::operator+(char const *) -4fd4 1 622 3737 -4fd5 c 623 3737 -4fe1 9 626 3737 -4fea b 627 3737 -4ff5 2 628 3737 -4ff7 5 629 3737 -4ffc 3 633 3737 -4fff 3 635 3737 -FUNC 5002 141 4 UnDecorator::getDimension(bool) -5002 7 1616 3704 -5009 10 1618 3704 -5019 e 1620 3704 -5027 6 1623 3704 -502d f 1624 3704 -503c 8 1625 3704 -5044 47 1626 3704 -508b 4 1629 3704 -508f 4 1636 3704 -5093 8 1638 3704 -509b 20 1639 3704 -50bb d 1643 3704 -50c8 4 1634 3704 -50cc b 1649 3704 -50d7 2 1650 3704 -50d9 5 1652 3704 -50de 13 1653 3704 -50f1 c 1637 3704 -50fd 4 1641 3704 -5101 a 1653 3704 -510b 36 1655 3704 -5141 2 1659 3704 -FUNC 5143 d4 0 UnDecorator::getEnumType() -5143 6 2762 3704 -5149 1a 2766 3704 -5163 12 2770 3704 -5175 5 2774 3704 -517a 2 2775 3704 -517c 5 2779 3704 -5181 2 2780 3704 -5183 5 2786 3704 -5188 2 2787 3704 -518a d 2791 3704 -5197 1f 2801 3704 -51b6 1e 2807 3704 -51d4 e 2814 3704 -51e2 4 2795 3704 -51e6 d 2818 3704 -51f3 24 2820 3704 -FUNC 5217 c4 0 UnDecorator::getArgumentTypes() -5217 3 3035 3704 -521a 18 3036 3704 -5232 9 3046 3704 -523b 7 3051 3704 -5242 13 3052 3704 -5255 c 3064 3704 -5261 36 3058 3704 -5297 b 3061 3704 -52a2 21 3039 3704 -52c3 16 3042 3704 -52d9 2 3072 3704 -FUNC 52db 7e 0 UnDecorator::getThrowTypes() -52db 3 3148 3704 -52de e 3149 3704 -52ec 2 3150 3704 -52ee 21 3151 3704 -530f 1f 3153 3704 -532e 29 3155 3704 -5357 2 3157 3704 -FUNC 5359 125 c UnDecorator::getExtendedDataIndirectType(char &,bool &,int) -5359 6 3636 3704 -535f 1a 3641 3704 -5379 1c 3643 3704 -5395 a 3669 3704 -539f 6 3670 3704 -53a5 b 3672 3704 -53b0 a 3674 3704 -53ba 21 3675 3704 -53db 17 3678 3704 -53f2 a 3680 3704 -53fc 6 3689 3704 -5402 2 3691 3704 -5404 17 3693 3704 -541b 1e 3700 3704 -5439 6 3663 3704 -543f 2 3665 3704 -5441 3 3656 3704 -5444 d 3657 3704 -5451 2 3659 3704 -5453 6 3647 3704 -5459 13 3649 3704 -546c 10 3703 3704 -547c 2 3704 3704 -FUNC 547e 15f 4 UnDecorator::getArrayType(DName const &) -547e 3 3986 3704 -5481 12 3987 3704 -5493 7 3989 3704 -549a 4 3991 3704 -549e 2 3992 3704 -54a0 4 3994 3704 -54a4 9 3995 3704 -54ad 2a 4026 3704 -54d7 2 4028 3704 -54d9 c 3998 3704 -54e5 9 4000 3704 -54ee d 4001 3704 -54fb 35 4005 3704 -5530 b 4009 3704 -553b 4 4010 3704 -553f 8 4011 3704 -5547 2 4012 3704 -5549 2c 4013 3704 -5575 d 4017 3704 -5582 9 4018 3704 -558b 12 4019 3704 -559d a 4023 3704 -55a7 36 4024 3704 -FUNC 55dd 31 0 UnDecorator::getLexicalFrame() -55dd 31 4031 3704 -FUNC 560e 12 0 UnDecorator::getDisplacement() -560e 12 4048 3704 -FUNC 5620 12 0 UnDecorator::getCallIndex() -5620 12 4049 3704 -FUNC 5632 12 0 UnDecorator::getGuardNumber() -5632 12 4050 3704 -FUNC 5644 150 4 UnDecorator::getVfTableType(DName const &) -5644 7 4174 3704 -564b d 4175 3704 -5658 1d 4178 3704 -5675 2c 4180 3704 -56a1 f 4182 3704 -56b0 e 4184 3704 -56be 5 4186 3704 -56c3 11 4188 3704 -56d4 2d 4190 3704 -5701 b 4194 3704 -570c 7 4195 3704 -5713 10 4199 3704 -5723 a 4200 3704 -572d b 4188 3704 -5738 b 4204 3704 -5743 a 4206 3704 -574d 7 4207 3704 -5754 9 4209 3704 -575d a 4216 3704 -5767 6 4217 3704 -576d 2 4220 3704 -576f 9 4221 3704 -5778 17 4222 3704 -578f 3 4224 3704 -5792 2 4226 3704 -FUNC 5794 a0 8 UnDecorator::getStringEncoding(char *,int) -5794 6 1447 3704 -579a b 1448 3704 -57a5 22 1451 3704 -57c7 6 1456 3704 -57cd b 1459 3704 -57d8 b 1462 3704 -57e3 13 1464 3704 -57f6 c 1466 3704 -5802 5 1469 3704 -5807 6 1470 3704 -580d 4 1471 3704 -5811 14 1477 3704 -5825 d 1452 3704 -5832 2 1478 3704 -FUNC 5834 50 0 UnDecorator::getSignedDimension() -5834 5 1603 3704 -5839 b 1604 3704 -5844 c 1605 3704 -5850 2 1606 3704 -5852 23 1608 3704 -5875 d 1611 3704 -5882 2 1612 3704 -FUNC 5884 2bb 0 UnDecorator::getTemplateConstant() -5884 15 1877 3704 -5899 f 1884 3704 -58a8 32 1885 3704 -58da 9 1921 3704 -58e3 b 1922 3704 -58ee 20 1924 3704 -590e 12 1931 3704 -5920 e 1932 3704 -592e 3 1937 3704 -5931 7 1939 3704 -5938 6 1941 3704 -593e 4 1942 3704 -5942 2 1944 3704 -5944 4 1945 3704 -5948 2a 1950 3704 -5972 a 1900 3704 -597c 6 1902 3704 -5982 11 1903 3704 -5993 1b 1906 3704 -59ae b 1892 3704 -59b9 6 2034 3704 -59bf 7 1954 3704 -59c6 26 1885 3704 -59ec b 1990 3704 -59f7 c 1991 3704 -5a03 10 1992 3704 -5a13 9 1966 3704 -5a1c c 1968 3704 -5a28 e 1971 3704 -5a36 10 1973 3704 -5a46 6 1975 3704 -5a4c 6 1976 3704 -5a52 3 1980 3704 -5a55 29 1981 3704 -5a7e a 1983 3704 -5a88 a 2001 3704 -5a92 a 2003 3704 -5a9c 13 2007 3704 -5aaf a 2008 3704 -5ab9 11 2012 3704 -5aca 13 2015 3704 -5add a 2016 3704 -5ae7 13 2021 3704 -5afa a 2022 3704 -5b04 13 2026 3704 -5b17 d 2029 3704 -5b24 7 1913 3704 -5b2b 14 2041 3704 -FUNC 5b3f d9 8 UnDecorator::getPtrRefDataType(DName const &,int) -5b3f 3 3937 3704 -5b42 11 3940 3704 -5b53 b 3944 3704 -5b5e 12 3948 3704 -5b70 12 3949 3704 -5b82 10 3951 3704 -5b92 5 3957 3704 -5b97 16 3961 3704 -5bad d 3967 3704 -5bba c 3968 3704 -5bc6 b 3970 3704 -5bd1 6 3972 3704 -5bd7 1e 3974 3704 -5bf5 e 3976 3704 -5c03 13 3980 3704 -5c16 2 3982 3704 -FUNC 5c18 14 4 UnDecorator::getVbTableType(DName const &) -5c18 14 4053 3704 -FUNC 5c2c 1b8 0 UnDecorator::getTemplateArgumentList() -5c2c 14 1775 3704 -5c40 c 1777 3704 -5c4c 7 1778 3704 -5c53 2a 1781 3704 -5c7d 6 1785 3704 -5c83 4 1786 3704 -5c87 2 1787 3704 -5c89 e 1788 3704 -5c97 8 1793 3704 -5c9f 5 1798 3704 -5ca4 1 1800 3704 -5ca5 11 1804 3704 -5cb6 5 1807 3704 -5cbb 7 1810 3704 -5cc2 7 1816 3704 -5cc9 6 1817 3704 -5ccf 12 1818 3704 -5ce1 a 1820 3704 -5ceb 5 1821 3704 -5cf0 e 1822 3704 -5cfe 5 1824 3704 -5d03 9 1830 3704 -5d0c c 1832 3704 -5d18 e 1835 3704 -5d26 10 1837 3704 -5d36 6 1839 3704 -5d3c 1 1840 3704 -5d3d 2 1842 3704 -5d3f 25 1843 3704 -5d64 2 1846 3704 -5d66 10 1847 3704 -5d76 2 1850 3704 -5d78 1f 1851 3704 -5d97 17 1857 3704 -5dae 9 1858 3704 -5db7 16 1862 3704 -5dcd 17 1873 3704 -FUNC 5de4 56f 8 UnDecorator::getOperatorName(bool,bool *) -5de4 b 1095 3704 -5def 53 1103 3704 -5e42 13 1183 3704 -5e55 c 1439 3704 -5e61 1d 1440 3704 -5e7e 11 1442 3704 -5e8f 5 1444 3704 -5e94 3 1124 3704 -5e97 8 1126 3704 -5e9f 21 1127 3704 -5ec0 c 1129 3704 -5ecc a 1130 3704 -5ed6 a 1133 3704 -5ee0 7 1135 3704 -5ee7 3 1136 3704 -5eea 9 1144 3704 -5ef3 5 1145 3704 -5ef8 6 1148 3704 -5efe 2 1154 3704 -5f00 15 1156 3704 -5f15 18 1160 3704 -5f2d 1a 1161 3704 -5f47 10 1166 3704 -5f57 b 1167 3704 -5f62 5 1170 3704 -5f67 6 1106 3704 -5f6d f 1108 3704 -5f7c 21 1103 3704 -5f9d 3d 1220 3704 -5fda 18 1240 3704 -5ff2 b 1234 3704 -5ffd 5 1235 3704 -6002 13 1245 3704 -6015 7 1247 3704 -601c 8 1249 3704 -6024 18 1220 3704 -603c 13 1255 3704 -604f 7 1256 3704 -6056 2 1257 3704 -6058 16 1335 3704 -606e 7 1356 3704 -6075 6 1350 3704 -607b 2 1352 3704 -607d 25 1220 3704 -60a2 13 1290 3704 -60b5 17 1291 3704 -60cc 24 1292 3704 -60f0 14 1313 3704 -6104 6 1316 3704 -610a 5 1317 3704 -610f 10 1302 3704 -611f 20 1303 3704 -613f 20 1304 3704 -615f 20 1305 3704 -617f 22 1306 3704 -61a1 12 1307 3704 -61b3 c 1296 3704 -61bf 2b 1297 3704 -61ea 13 1281 3704 -61fd 17 1282 3704 -6214 1a 1283 3704 -622e 5 1284 3704 -6233 2d 1220 3704 -6260 25 1364 3704 -6285 10 1373 3704 -6295 13 1378 3704 -62a8 a 1397 3704 -62b2 13 1399 3704 -62c5 a 1403 3704 -62cf 6 1405 3704 -62d5 2 1408 3704 -62d7 13 1410 3704 -62ea d 1413 3704 -62f7 5 1415 3704 -62fc 10 1278 3704 -630c b 1330 3704 -6317 5 1428 3704 -631c 3 1187 3704 -631f 13 1216 3704 -6332 8 1437 3704 -633a 19 1438 3704 -FUNC 6353 153 4 UnDecorator::getTemplateName(bool) -6353 5 1700 3704 -6358 1f 1704 3704 -6377 16 1714 3704 -638d 1d 1716 3704 -63aa 23 1725 3704 -63cd e 1729 3704 -63db 6 1730 3704 -63e1 12 1732 3704 -63f3 2 1734 3704 -63f5 16 1735 3704 -640b c 1738 3704 -6417 7 1739 3704 -641e 6 1746 3704 -6424 21 1747 3704 -6445 c 1749 3704 -6451 a 1750 3704 -645b a 1753 3704 -6465 6 1755 3704 -646b 6 1756 3704 -6471 23 1769 3704 -6494 d 1705 3704 -64a1 5 1771 3704 -FUNC 64a6 1ea 4 UnDecorator::getZName(bool) -64a6 10 1007 3704 -64b6 11 1008 3704 -64c7 3 1013 3704 -64ca 26 1043 3704 -64f0 b 1024 3704 -64fb 5 1026 3704 -6500 16 1028 3704 -6516 16 1030 3704 -652c 17 1031 3704 -6543 7 1033 3704 -654a 25 1040 3704 -656f 5 1042 3704 -6574 29 1043 3704 -659d 8 1045 3704 -65a5 b 1051 3704 -65b0 c 1053 3704 -65bc e 1056 3704 -65ca 10 1058 3704 -65da 4 1060 3704 -65de b 1061 3704 -65e9 2 1063 3704 -65eb a 1064 3704 -65f5 10 1065 3704 -6605 2 1068 3704 -6607 d 1069 3704 -6614 2a 1070 3704 -663e 2 1073 3704 -6640 1a 1076 3704 -665a 11 1083 3704 -666b 9 1084 3704 -6674 f 1087 3704 -6683 d 1090 3704 -FUNC 6690 e4 0 UnDecorator::getScopedName() -6690 7 2727 3704 -6697 e 2728 3704 -66a5 15 2733 3704 -66ba 1a 2737 3704 -66d4 2a 2738 3704 -66fe b 2742 3704 -6709 8 2743 3704 -6711 4 2744 3704 -6715 1b 2745 3704 -6730 b 2746 3704 -673b 7 2747 3704 -6742 2 2748 3704 -6744 2b 2749 3704 -676f 3 2753 3704 -6772 2 2755 3704 -FUNC 6774 f 0 UnDecorator::getECSUName() -6774 f 2758 3704 -FUNC 6783 100 0 UnDecorator::getECSUDataType() -6783 3 3392 3704 -6786 20 3395 3704 -67a6 37 3399 3704 -67dd 5 3424 3704 -67e2 2 3425 3704 -67e4 5 3420 3704 -67e9 2 3421 3704 -67eb 26 3431 3704 -6811 2 3432 3704 -6813 5 3415 3704 -6818 2 3416 3704 -681a 5 3411 3704 -681f 2 3412 3704 -6821 d 3407 3704 -682e 7 3439 3704 -6835 4 3441 3704 -6839 c 3442 3704 -6845 16 3446 3704 -685b e 3450 3704 -6869 18 3404 3704 -6881 2 3452 3704 -FUNC 6883 46 0 UnDecorator::getSymbolName() -6883 3 989 3704 -6886 a 990 3704 -6890 6 991 3704 -6896 c 992 3704 -68a2 16 997 3704 -68b8 f 1001 3704 -68c7 2 1003 3704 -FUNC 68c9 92 0 UnDecorator::getBasedType() -68c9 6 2653 3704 -68cf 13 2654 3704 -68e2 a 2659 3704 -68ec 17 2661 3704 -6903 c 2707 3704 -690f 13 2699 3704 -6922 2 2700 3704 -6924 d 2674 3704 -6931 2 2711 3704 -6933 a 2712 3704 -693d d 2716 3704 -694a f 2720 3704 -6959 2 2722 3704 -FUNC 695b b42 4 UnDecorator::composeDeclaration(DName const &) -695b 6 2045 3704 -6961 e 2046 3704 -696f 5 2047 3704 -6974 a 2048 3704 -697e b 2053 3704 -6989 f 2054 3704 -6998 8 2055 3704 -69a0 15 2056 3704 -69b5 8 2057 3704 -69bd 10 2058 3704 -69cd 83 2075 3704 -6a50 7 2081 3704 -6a57 19 2082 3704 -6a70 21 2083 3704 -6a91 2 2084 3704 -6a93 15 2085 3704 -6aa8 27 2090 3704 -6acf 33 2092 3704 -6b02 9 2094 3704 -6b0b 9 2096 3704 -6b14 2b 2098 3704 -6b3f d 2101 3704 -6b4c 9 2103 3704 -6b55 2d 2105 3704 -6b82 2e 2107 3704 -6bb0 5 2111 3704 -6bb5 3 2114 3704 -6bb8 3 2115 3704 -6bbb 3 2116 3704 -6bbe 3 2117 3704 -6bc1 3 2118 3704 -6bc4 26 2121 3704 -6bea 12 2123 3704 -6bfc 19 2125 3704 -6c15 19 2126 3704 -6c2e 2 2127 3704 -6c30 12 2129 3704 -6c42 19 2131 3704 -6c5b 1b 2134 3704 -6c76 13 2141 3704 -6c89 a 2142 3704 -6c93 15 2143 3704 -6ca8 2 2144 3704 -6caa f 2145 3704 -6cb9 10 2147 3704 -6cc9 9 2151 3704 -6cd2 22 2152 3704 -6cf4 2 2153 3704 -6cf6 13 2168 3704 -6d09 c 2172 3704 -6d15 14 2173 3704 -6d29 1a 2174 3704 -6d43 2 2175 3704 -6d45 b 2176 3704 -6d50 5 2182 3704 -6d55 6 2185 3704 -6d5b 27 2187 3704 -6d82 b 2189 3704 -6d8d 5 2190 3704 -6d92 1b 2194 3704 -6dad 15 2195 3704 -6dc2 1d 2202 3704 -6ddf 16 2204 3704 -6df5 55 2205 3704 -6e4a 12 2206 3704 -6e5c 2b 2207 3704 -6e87 2 2208 3704 -6e89 d 2209 3704 -6e96 1a 2211 3704 -6eb0 2e 2218 3704 -6ede 12 2222 3704 -6ef0 c 2223 3704 -6efc c 2227 3704 -6f08 15 2228 3704 -6f1d 2 2229 3704 -6f1f f 2230 3704 -6f2e 1a 2235 3704 -6f48 b 2237 3704 -6f53 3 2238 3704 -6f56 5 2243 3704 -6f5b b 2245 3704 -6f66 1c 2250 3704 -6f82 13 2251 3704 -6f95 e 2252 3704 -6fa3 2 2253 3704 -6fa5 10 2254 3704 -6fb5 3d 2255 3704 -6ff2 c 2256 3704 -6ffe e 2257 3704 -700c 4c 2258 3704 -7058 a 2259 3704 -7062 4b 2260 3704 -70ad 7 2261 3704 -70b4 4b 2262 3704 -70ff f 2263 3704 -710e f 2264 3704 -711d 6 2268 3704 -7123 61 2277 3704 -7184 15 2281 3704 -7199 2 2283 3704 -719b 18 2285 3704 -71b3 2d 2292 3704 -71e0 12 2294 3704 -71f2 37 2296 3704 -7229 23 2297 3704 -724c b7 2299 3704 -7303 23 2300 3704 -7326 12 2306 3704 -7338 37 2307 3704 -736f b 2308 3704 -737a 37 2309 3704 -73b1 b 2310 3704 -73bc 30 2311 3704 -73ec 23 2312 3704 -740f 36 2319 3704 -7445 1e 2320 3704 -7463 8 2325 3704 -746b 1e 2326 3704 -7489 12 2329 3704 -749b 2 2331 3704 -FUNC 749d 211 0 UnDecorator::getDecoratedName() -749d 7 861 3704 -74a4 e 864 3704 -74b2 a 868 3704 -74bc b 873 3704 -74c7 8 874 3704 -74cf 11 876 3704 -74e0 10 878 3704 -74f0 6 882 3704 -74f6 9 903 3704 -74ff 9 906 3704 -7508 8 910 3704 -7510 6 912 3704 -7516 5 910 3704 -751b 2 915 3704 -751d a 918 3704 -7527 19 919 3704 -7540 6 920 3704 -7546 f 924 3704 -7555 8 925 3704 -755d 17 929 3704 -7574 a 930 3704 -757e c 932 3704 -758a 8 933 3704 -7592 5 934 3704 -7597 18 935 3704 -75af a 936 3704 -75b9 13 937 3704 -75cc b 938 3704 -75d7 2 940 3704 -75d9 29 941 3704 -7602 4 945 3704 -7606 10 946 3704 -7616 9 948 3704 -761f 3 950 3704 -7622 1c 955 3704 -763e f 959 3704 -764d 4 976 3704 -7651 6 962 3704 -7657 14 964 3704 -766b 19 967 3704 -7684 5 968 3704 -7689 10 971 3704 -7699 2 979 3704 -769b 2 980 3704 -769d f 982 3704 -76ac 2 984 3704 -FUNC 76ae 28b 0 UnDecorator::getScope() -76ae d 1482 3704 -76bb f 1483 3704 -76ca 2a 1489 3704 -76f4 14 1492 3704 -7708 b 1495 3704 -7713 16 1496 3704 -7729 5 1498 3704 -772e 17 1499 3704 -7745 3 1500 3704 -7748 f 1506 3704 -7757 2a 1507 3704 -7781 10 1566 3704 -7791 5 1567 3704 -7796 34 1561 3704 -77ca 4 1562 3704 -77ce 5 1563 3704 -77d3 e 1510 3704 -77e1 5 1514 3704 -77e6 22 1515 3704 -7808 e 1518 3704 -7816 6 1519 3704 -781c 5 1522 3704 -7821 2a 1523 3704 -784b 2 1524 3704 -784d f 1546 3704 -785c 1a 1548 3704 -7876 b 1550 3704 -7881 9 1551 3704 -788a 2 1554 3704 -788c f 1530 3704 -789b 2 1570 3704 -789d 21 1571 3704 -78be a 1489 3704 -78c8 f 1577 3704 -78d7 18 1590 3704 -78ef 2 1591 3704 -78f1 b 1580 3704 -78fc 7 1581 3704 -7903 2 1582 3704 -7905 2b 1583 3704 -7930 4 1597 3704 -7934 5 1599 3704 -FUNC 7939 341 4 UnDecorator::getFunctionIndirectType(DName const &) -7939 3 3461 3704 -793c e 3462 3704 -794a 15 3463 3704 -795f f 3465 3704 -796e 10 3466 3704 -797e 7 3469 3704 -7985 a 3471 3704 -798f 6 3473 3704 -7995 7 3475 3704 -799c d 3477 3704 -79a9 17 3482 3704 -79c0 9 3485 3704 -79c9 3 3486 3704 -79cc 5 3490 3704 -79d1 f 3491 3704 -79e0 6 3496 3704 -79e6 13 3497 3704 -79f9 b 3501 3704 -7a04 1e 3503 3704 -7a22 8 3505 3704 -7a2a 29 3506 3704 -7a53 2 3507 3704 -7a55 17 3508 3704 -7a6c f 3510 3704 -7a7b 4 3511 3704 -7a7f 10 3518 3704 -7a8f 15 3519 3704 -7aa4 9 3527 3704 -7aad d 3528 3704 -7aba 30 3529 3704 -7aea 2 3530 3704 -7aec 11 3521 3704 -7afd 7 3514 3704 -7b04 16 3516 3704 -7b1a 13 3531 3704 -7b2d d 3535 3704 -7b3a 22 3537 3704 -7b5c 2 3546 3704 -7b5e 13 3547 3704 -7b71 c 3551 3704 -7b7d 28 3552 3704 -7ba5 1e 3557 3704 -7bc3 c 3558 3704 -7bcf 2e 3561 3704 -7bfd 10 3563 3704 -7c0d c 3564 3704 -7c19 c 3566 3704 -7c25 15 3567 3704 -7c3a 2 3568 3704 -7c3c f 3569 3704 -7c4b 4 3573 3704 -7c4f b 3574 3704 -7c5a e 3580 3704 -7c68 10 3576 3704 -7c78 2 3581 3704 -FUNC 7c7a 4e4 10 UnDecorator::getDataIndirectType(DName const &,char,DName const &,int) -7c7a 6 3707 3704 -7c80 23 3711 3704 -7ca3 4 3713 3704 -7ca7 17 3715 3704 -7cbe c 3717 3704 -7cca 10 3719 3704 -7cda e 3723 3704 -7ce8 6 3725 3704 -7cee 15 3726 3704 -7d03 17 3732 3704 -7d1a 11 3751 3704 -7d2b a 3752 3704 -7d35 32 3753 3704 -7d67 5 3754 3704 -7d6c 11 3743 3704 -7d7d a 3744 3704 -7d87 25 3745 3704 -7dac 2 3746 3704 -7dae 8 3747 3704 -7db6 2 3749 3704 -7db8 19 3735 3704 -7dd1 a 3736 3704 -7ddb 14 3737 3704 -7def 5 3738 3704 -7df4 11 3739 3704 -7e05 6 3766 3704 -7e0b a 3768 3704 -7e15 17 3770 3704 -7e2c 10 3772 3704 -7e3c 1a 3778 3704 -7e56 5 3780 3704 -7e5b 6 3782 3704 -7e61 9 3787 3704 -7e6a b 3789 3704 -7e75 19 3791 3704 -7e8e c 3793 3704 -7e9a 24 3794 3704 -7ebe c 3796 3704 -7eca 22 3797 3704 -7eec 9 3801 3704 -7ef5 5 3805 3704 -7efa 7 3806 3704 -7f01 6 3810 3704 -7f07 1e 3812 3704 -7f25 8 3814 3704 -7f2d 1b 3815 3704 -7f48 2 3816 3704 -7f4a 16 3817 3704 -7f60 a 3819 3704 -7f6a 13 3828 3704 -7f7d b 3833 3704 -7f88 c 3834 3704 -7f94 8 3835 3704 -7f9c 6 3836 3704 -7fa2 b 3842 3704 -7fad b 3843 3704 -7fb8 3 3863 3704 -7fbb 6 3864 3704 -7fc1 22 3866 3704 -7fe3 9 3871 3704 -7fec 13 3872 3704 -7fff 5 3876 3704 -8004 1e 3877 3704 -8022 5 3879 3704 -8027 1e 3880 3704 -8045 5 3884 3704 -804a e 3885 3704 -8058 14 3889 3704 -806c 28 3895 3704 -8094 2 3890 3704 -8096 b 3891 3704 -80a1 2 3892 3704 -80a3 c 3898 3704 -80af 17 3899 3704 -80c6 4 3902 3704 -80ca 6 3904 3704 -80d0 7 3906 3704 -80d7 8 3774 3704 -80df 13 3918 3704 -80f2 12 3922 3704 -8104 29 3925 3704 -812d 10 3923 3704 -813d c 3928 3704 -8149 3 3929 3704 -814c 10 3931 3704 -815c 2 3933 3704 -FUNC 815e 14c 0 UnDecorator::operator char *() -815e 6 762 3704 -8164 4 763 3704 -8168 f 764 3704 -8177 9 770 3704 -8180 c 772 3704 -818c 7 775 3704 -8193 1d 776 3704 -81b0 4 782 3704 -81b4 16 783 3704 -81ca 9 785 3704 -81d3 5 794 3704 -81d8 9 795 3704 -81e1 13 799 3704 -81f4 e 808 3704 -8202 2 809 3704 -8204 2 848 3704 -8206 1a 810 3704 -8220 e 813 3704 -822e e 811 3704 -823c 9 817 3704 -8245 e 819 3704 -8253 d 820 3704 -8260 a 824 3704 -826a f 825 3704 -8279 5 828 3704 -827e 2 829 3704 -8280 2 830 3704 -8282 5 831 3704 -8287 1 832 3704 -8288 5 833 3704 -828d 1 835 3704 -828e 5 834 3704 -8293 2 838 3704 -8295 a 839 3704 -829f 9 841 3704 -82a8 2 848 3704 -FUNC 82aa 116 c UnDecorator::getPtrRefType(DName const &,DName const &,char) -82aa 5 3585 3704 -82af f 3588 3704 -82be d 3589 3704 -82cb b 3591 3704 -82d6 20 3594 3704 -82f6 b 3595 3704 -8301 b 3597 3704 -830c 9 3598 3704 -8315 14 3600 3704 -8329 14 3606 3704 -833d 1b 3608 3704 -8358 a 3612 3704 -8362 b 3615 3704 -836d c 3617 3704 -8379 9 3618 3704 -8382 c 3620 3704 -838e c 3622 3704 -839a a 3623 3704 -83a4 b 3625 3704 -83af f 3629 3704 -83be 2 3632 3704 -FUNC 83c0 1b 8 UnDecorator::getPointerType(DName const &,DName const &) -83c0 1b 4037 3704 -FUNC 83db 1b 8 UnDecorator::getPointerTypeArray(DName const &,DName const &) -83db 1b 4040 3704 -FUNC 83f6 1b 8 UnDecorator::getReferenceType(DName const &,DName const &) -83f6 1b 4043 3704 -FUNC 8411 a3 18 __unDName -8411 f 604 3704 -8420 9 606 3704 -8429 4 607 3704 -842d a 612 3704 -8437 2 613 3704 -8439 8 614 3704 -8441 3 615 3704 -8444 20 618 3704 -8464 1a 627 3704 -847e e 628 3704 -848c a 633 3704 -8496 c 636 3704 -84a2 3 643 3704 -84a5 6 645 3704 -84ab 9 637 3704 -FUNC 84b4 a3 1c __unDNameEx -84b4 f 684 3704 -84c3 9 687 3704 -84cc 4 688 3704 -84d0 a 693 3704 -84da 2 694 3704 -84dc 8 695 3704 -84e4 3 696 3704 -84e7 20 699 3704 -8507 1a 708 3704 -8521 e 709 3704 -852f a 714 3704 -8539 c 717 3704 -8545 3 724 3704 -8548 6 726 3704 -854e 9 718 3704 -FUNC 8557 387 4 UnDecorator::getBasicDataType(DName const &) -8557 3 3162 3704 -855a 15 3163 3704 -856f 6 3165 3704 -8575 4 3168 3704 -8579 35 3173 3704 -85ae 5 3178 3704 -85b3 5 3179 3704 -85b8 5 3183 3704 -85bd 5 3184 3704 -85c2 5 3188 3704 -85c7 5 3189 3704 -85cc 5 3193 3704 -85d1 5 3194 3704 -85d6 5 3203 3704 -85db 5 3204 3704 -85e0 2a 3173 3704 -860a 3c 3222 3704 -8646 5 3231 3704 -864b 5 3232 3704 -8650 22 3273 3704 -8672 5 3235 3704 -8677 5 3236 3704 -867c f 3222 3704 -868b 5 3243 3704 -8690 5 3244 3704 -8695 5 3239 3704 -869a 5 3240 3704 -869f 5 3247 3704 -86a4 5 3248 3704 -86a9 1b 3222 3704 -86c4 3 3264 3704 -86c7 6 3262 3704 -86cd 10 3264 3704 -86dd 10 3266 3704 -86ed 11 3267 3704 -86fe 5 3275 3704 -8703 2 3276 3704 -8705 5 3255 3704 -870a 2 3257 3704 -870c 3 3224 3704 -870f 12 3343 3704 -8721 9 3345 3704 -872a 7 3347 3704 -8731 16 3348 3704 -8747 6 3352 3704 -874d d 3353 3704 -875a 5 3355 3704 -875f 5 3227 3704 -8764 2 3278 3704 -8766 d 3281 3704 -8773 2 3282 3704 -8775 5 3219 3704 -877a 2 3220 3704 -877c 3 3287 3704 -877f 5 3290 3704 -8784 d 3207 3704 -8791 d 3212 3704 -879e 9 3297 3704 -87a7 1f 3301 3704 -87c6 19 3314 3704 -87df c 3322 3704 -87eb 2 3326 3704 -87ed c 3307 3704 -87f9 2 3308 3704 -87fb 1e 3311 3704 -8819 10 3332 3704 -8829 18 3333 3704 -8841 5 3337 3704 -8846 c 3360 3704 -8852 5 3367 3704 -8857 d 3369 3704 -8864 5 3371 3704 -8869 d 3372 3704 -8876 2 3373 3704 -8878 5 3374 3704 -887d d 3375 3704 -888a 17 3380 3704 -88a1 16 3385 3704 -88b7 27 3387 3704 -FUNC 88de 13e 4 UnDecorator::getPrimaryDataType(DName const &) -88de 7 2962 3704 -88e5 2b 2966 3704 -8910 12 3027 3704 -8922 d 2972 3704 -892f c 2974 3704 -893b a 2975 3704 -8945 b 2981 3704 -8950 6 2984 3704 -8956 1e 2986 3704 -8974 7 2996 3704 -897b 2 2997 3704 -897d 6 2998 3704 -8983 f 3000 3704 -8992 8 3002 3704 -899a 10 3004 3704 -89aa 2f 3022 3704 -89d9 16 3012 3704 -89ef 17 3008 3704 -8a06 14 2969 3704 -8a1a 2 3030 3704 -FUNC 8a1c b1 4 UnDecorator::getDataType(DName *) -8a1c 6 2922 3704 -8a22 b 2923 3704 -8a2d 15 2928 3704 -8a42 10 2954 3704 -8a52 6 2934 3704 -8a58 c 2936 3704 -8a64 f 2937 3704 -8a73 13 2939 3704 -8a86 6 2944 3704 -8a8c 29 2946 3704 -8ab5 2 2947 3704 -8ab7 14 2931 3704 -8acb 2 2957 3704 -FUNC 8acd 64 4 UnDecorator::getExternalDataType(DName const &) -8acd 7 4244 3704 -8ad4 1e 4247 3704 -8af2 9 4248 3704 -8afb 30 4253 3704 -8b2b 4 4255 3704 -8b2f 2 4257 3704 -FUNC 8b31 4f 4 V6_HeapAlloc -8b31 c 27 3455 -8b3d 4 28 3455 -8b41 b 29 3455 -8b4c 8 31 3455 -8b54 4 32 3455 -8b58 a 33 3455 -8b62 c 35 3455 -8b6e 3 39 3455 -8b71 6 40 3455 -8b77 9 36 3455 -FUNC 8b80 75 4 _heap_alloc -8b80 0 90 3455 -8b80 9 95 3455 -8b89 5 96 3455 -8b8e 7 97 3455 -8b95 c 98 3455 -8ba1 a 104 3455 -8bab 18 105 3455 -8bc3 1 129 3455 -8bc4 a 107 3455 -8bce 9 108 3455 -8bd7 2 109 3455 -8bd9 4 121 3455 -8bdd 1 122 3455 -8bde 6 124 3455 -8be4 10 126 3455 -8bf4 1 129 3455 -FUNC 8bf5 c3 4 malloc -8bf5 1 155 3455 -8bf6 16 159 3455 -8c0c 65 163 3455 -8c71 4 168 3455 -8c75 b 172 3455 -8c80 b 179 3455 -8c8b 2 183 3455 -8c8d 7 174 3455 -8c94 8 193 3455 -8c9c 5 195 3455 -8ca1 1 196 3455 -8ca2 7 185 3455 -8ca9 b 186 3455 -8cb4 3 187 3455 -8cb7 1 196 3455 -FUNC 8cb8 3b 4 _get_errno_from_oserr -8cb8 0 119 3915 -8cb8 6 123 3915 -8cbe f 124 3915 -8ccd 8 133 3915 -8cd5 3 134 3915 -8cd8 1 139 3915 -8cd9 7 125 3915 -8ce0 1 139 3915 -8ce1 11 135 3915 -8cf2 1 139 3915 -FUNC 8cf3 13 0 _errno -8cf3 0 280 3915 -8cf3 5 281 3915 -8cf8 4 282 3915 -8cfc 5 283 3915 -8d01 1 288 3915 -8d02 3 285 3915 -8d05 1 288 3915 -FUNC 8d06 13 0 __doserrno -8d06 0 293 3915 -8d06 5 294 3915 -8d0b 4 295 3915 -8d0f 5 296 3915 -8d14 1 300 3915 -8d15 3 298 3915 -8d18 1 300 3915 -FUNC 8d19 1e 4 _dosmaperr -8d19 1 110 3915 -8d1a 9 111 3915 -8d23 13 113 3915 -8d36 1 114 3915 -FUNC 8d37 1b 4 _set_errno -8d37 0 157 3915 -8d37 5 158 3915 -8d3c 4 159 3915 -8d40 3 161 3915 -8d43 1 168 3915 -8d44 b 165 3915 -8d4f 2 166 3915 -8d51 1 168 3915 -FUNC 8d52 2a 4 _get_errno -8d52 1 187 3915 -8d53 1b 189 3915 -8d6e 1 195 3915 -8d6f 9 193 3915 -8d78 3 194 3915 -8d7b 1 195 3915 -FUNC 8d7c 1b 4 _set_doserrno -8d7c 0 213 3915 -8d7c 5 214 3915 -8d81 4 215 3915 -8d85 3 217 3915 -8d88 1 224 3915 -8d89 b 221 3915 -8d94 2 222 3915 -8d96 1 224 3915 -FUNC 8d97 2a 4 _get_doserrno -8d97 1 243 3915 -8d98 1b 245 3915 -8db3 1 251 3915 -8db4 9 249 3915 -8dbd 3 250 3915 -8dc0 1 251 3915 -FUNC 8dc1 21 0 _get_sbh_threshold -8dc1 0 61 3311 -8dc1 9 64 3311 -8dca 2 66 3311 -8dcc 1 81 3311 -8dcd 14 69 3311 -8de1 1 81 3311 -FUNC 8de2 46 4 _set_amblksiz -8de2 0 214 3311 -8de2 2b 216 3311 -8e0d 1 224 3311 -8e0e 11 217 3311 -8e1f 5 220 3311 -8e24 3 223 3311 -8e27 1 224 3311 -FUNC 8e28 3c 4 _get_amblksiz -8e28 0 243 3311 -8e28 27 245 3311 -8e4f 1 253 3311 -8e50 8 246 3311 -8e58 8 249 3311 -8e60 3 252 3311 -8e63 1 253 3311 -FUNC 8e64 48 4 __sbh_heap_init -8e64 0 274 3311 -8e64 1c 275 3311 -8e80 1 285 3311 -8e81 4 278 3311 -8e85 7 280 3311 -8e8c c 281 3311 -8e98 13 284 3311 -8eab 1 285 3311 -FUNC 8eac 2b 4 __sbh_find_block -8eac 0 306 3311 -8eac 12 307 3311 -8ebe 7 316 3311 -8ec5 8 317 3311 -8ecd 3 319 3311 -8ed0 4 314 3311 -8ed4 2 321 3311 -8ed6 1 322 3311 -FUNC 8ed7 314 8 __sbh_free_block -8ed7 6 381 3311 -8edd 7 399 3311 -8ee4 9 402 3311 -8eed 18 407 3311 -8f05 3 408 3311 -8f08 d 412 3311 -8f15 3 416 3311 -8f18 5 417 3311 -8f1d 6 420 3311 -8f23 b 424 3311 -8f2e 4 429 3311 -8f32 5 430 3311 -8f37 3 431 3311 -8f3a 8 434 3311 -8f42 3 439 3311 -8f45 b 441 3311 -8f50 e 442 3311 -8f5e 5 443 3311 -8f63 2 445 3311 -8f65 5 448 3311 -8f6a 11 449 3311 -8f7b 9 450 3311 -8f84 9 455 3311 -8f8d 15 459 3311 -8fa2 6 463 3311 -8fa8 5 464 3311 -8fad 3 465 3311 -8fb0 f 468 3311 -8fbf 3 474 3311 -8fc2 6 477 3311 -8fc8 b 478 3311 -8fd3 2 479 3311 -8fd5 3 483 3311 -8fd8 6 484 3311 -8fde 7 485 3311 -8fe5 2 486 3311 -8fe7 4 489 3311 -8feb b 493 3311 -8ff6 3 498 3311 -8ff9 11 501 3311 -900a 6 502 3311 -9010 5 503 3311 -9015 2 505 3311 -9017 e 508 3311 -9025 6 509 3311 -902b 6 511 3311 -9031 c 516 3311 -903d c 517 3311 -9049 8 520 3311 -9051 e 524 3311 -905f 6 528 3311 -9065 3 529 3311 -9068 6 530 3311 -906e 3 531 3311 -9071 6 532 3311 -9077 8 535 3311 -907f 18 541 3311 -9097 e 542 3311 -90a5 f 543 3311 -90b4 2 545 3311 -90b6 6 547 3311 -90bc 10 548 3311 -90cc 13 550 3311 -90df 5 556 3311 -90e4 4 558 3311 -90e8 b 561 3311 -90f3 d 564 3311 -9100 6 568 3311 -9106 1a 569 3311 -9120 15 573 3311 -9135 16 577 3311 -914b 19 578 3311 -9164 9 579 3311 -916d 6 583 3311 -9173 8 586 3311 -917b 16 589 3311 -9191 25 595 3311 -91b6 14 599 3311 -91ca 4 600 3311 -91ce a 603 3311 -91d8 8 608 3311 -91e0 9 609 3311 -91e9 2 611 3311 -FUNC 91eb b0 0 __sbh_alloc_new_region -91eb 0 891 3311 -91eb 13 897 3311 -91fe 1e 900 3311 -921c 4 901 3311 -9220 12 905 3311 -9232 9 909 3311 -923b 18 913 3311 -9253 2 914 3311 -9255 1a 918 3311 -926f 10 920 3311 -927f 2 921 3311 -9281 9 927 3311 -928a 6 930 3311 -9290 6 933 3311 -9296 4 935 3311 -929a 1 936 3311 -FUNC 929b 106 4 __sbh_alloc_new_group -929b 5 958 3311 -92a0 3 959 3311 -92a3 9 972 3311 -92ac 4 973 3311 -92b0 2 976 3311 -92b2 1 977 3311 -92b3 4 974 3311 -92b7 15 981 3311 -92cc c 986 3311 -92d8 1f 993 3311 -92f7 8 994 3311 -92ff 6 998 3311 -9305 12 1001 3311 -9317 4 1004 3311 -931b 7 1005 3311 -9322 8 1011 3311 -932a 10 1013 3311 -933a 12 1016 3311 -934c 3 1001 3311 -934f 8 1021 3311 -9357 6 1023 3311 -935d 3 1024 3311 -9360 6 1027 3311 -9366 3 1028 3311 -9369 5 1030 3311 -936e a 1031 3311 -9378 9 1032 3311 -9381 b 1033 3311 -938c e 1036 3311 -939a 5 1038 3311 -939f 2 1039 3311 -FUNC 93a1 2df c __sbh_resize_block -93a1 6 1061 3311 -93a7 c 1080 3311 -93b3 b 1083 3311 -93be 3 1084 3311 -93c1 12 1085 3311 -93d3 7 1089 3311 -93da 14 1096 3311 -93ee 13 1099 3311 -9401 7 1105 3311 -9408 8 1106 3311 -9410 6 1107 3311 -9416 8 1110 3311 -941e 3 1115 3311 -9421 9 1117 3311 -942a 11 1118 3311 -943b 5 1119 3311 -9440 2 1121 3311 -9442 5 1124 3311 -9447 14 1125 3311 -945b 6 1126 3311 -9461 9 1131 3311 -946a 9 1132 3311 -9473 12 1135 3311 -9485 a 1141 3311 -948f 9 1142 3311 -9498 3 1143 3311 -949b 9 1147 3311 -94a4 6 1148 3311 -94aa 6 1149 3311 -94b0 3 1150 3311 -94b3 6 1151 3311 -94b9 8 1154 3311 -94c1 18 1160 3311 -94d9 e 1161 3311 -94e7 6 1162 3311 -94ed 2 1164 3311 -94ef 6 1166 3311 -94f5 10 1167 3311 -9505 13 1169 3311 -9518 c 1174 3311 -9524 9 1176 3311 -952d 6 1180 3311 -9533 9 1182 3311 -953c 7 1100 3311 -9543 6 1186 3311 -9549 3 1189 3311 -954c d 1195 3311 -9559 7 1198 3311 -9560 b 1199 3311 -956b 3 1200 3311 -956e a 1203 3311 -9578 7 1208 3311 -957f 5 1209 3311 -9584 3 1210 3311 -9587 8 1213 3311 -958f 3 1218 3311 -9592 b 1221 3311 -959d e 1222 3311 -95ab 5 1223 3311 -95b0 2 1225 3311 -95b2 5 1228 3311 -95b7 11 1229 3311 -95c8 9 1231 3311 -95d1 9 1236 3311 -95da 9 1237 3311 -95e3 9 1240 3311 -95ec 4 1241 3311 -95f0 5 1242 3311 -95f5 3 1243 3311 -95f8 6 1249 3311 -95fe 3 1250 3311 -9601 6 1251 3311 -9607 3 1252 3311 -960a 6 1253 3311 -9610 8 1256 3311 -9618 18 1262 3311 -9630 e 1263 3311 -963e 6 1264 3311 -9644 2 1266 3311 -9646 6 1268 3311 -964c 10 1269 3311 -965c 13 1271 3311 -966f 5 1276 3311 -9674 4 1278 3311 -9678 6 1281 3311 -967e 2 1282 3311 -FUNC 9680 cd 0 __sbh_heapmin -9680 0 1302 3311 -9680 d 1306 3311 -968d 6 1310 3311 -9693 17 1311 3311 -96aa 15 1314 3311 -96bf 16 1318 3311 -96d5 19 1319 3311 -96ee 9 1320 3311 -96f7 f 1325 3311 -9706 11 1328 3311 -9717 28 1333 3311 -973f 6 1334 3311 -9745 7 1338 3311 -974c 1 1340 3311 -FUNC 974d 2e2 0 __sbh_heap_check -974d 3 1361 3311 -9750 12 1391 3311 -9762 8 1393 3311 -976a 16 1398 3311 -9780 3 1401 3311 -9783 8 1402 3311 -978b 6 1406 3311 -9791 9 1407 3311 -979a c 1408 3311 -97a6 3 1409 3311 -97a9 3 1410 3311 -97ac 6 1411 3311 -97b2 4 1418 3311 -97b6 1b 1421 3311 -97d1 9 1424 3311 -97da 9 1428 3311 -97e3 1c 1438 3311 -97ff 2 1445 3311 -9801 7 1446 3311 -9808 1 1449 3311 -9809 c 1452 3311 -9815 3 1456 3311 -9818 2 1458 3311 -981a 6 1462 3311 -9820 5 1463 3311 -9825 3 1464 3311 -9828 9 1465 3311 -9831 1e 1470 3311 -984f c 1475 3311 -985b 2 1479 3311 -985d 4 1481 3311 -9861 6 1484 3311 -9867 10 1488 3311 -9877 e 1492 3311 -9885 2 1498 3311 -9887 4 1502 3311 -988b 20 1505 3311 -98ab 19 1509 3311 -98c4 8 1514 3311 -98cc 3 1518 3311 -98cf 6 1520 3311 -98d5 8 1524 3311 -98dd 4 1527 3311 -98e1 e 1532 3311 -98ef 8 1536 3311 -98f7 6 1541 3311 -98fd 5 1542 3311 -9902 3 1543 3311 -9905 8 1544 3311 -990d c 1549 3311 -9919 11 1554 3311 -992a 6 1559 3311 -9930 3 1561 3311 -9933 e 1563 3311 -9941 3 1564 3311 -9944 2 1566 3311 -9946 8 1568 3311 -994e 3 1569 3311 -9951 1c 1575 3311 -996d c 1580 3311 -9979 10 1585 3311 -9989 17 1591 3311 -99a0 7 1595 3311 -99a7 7 1596 3311 -99ae 16 1597 3311 -99c4 f 1602 3311 -99d3 18 1606 3311 -99eb 5 1608 3311 -99f0 2 1609 3311 -99f2 4 1403 3311 -99f6 4 1425 3311 -99fa 4 1453 3311 -99fe 4 1485 3311 -9a02 4 1471 3311 -9a06 4 1439 3311 -9a0a 4 1493 3311 -9a0e 4 1537 3311 -9a12 4 1545 3311 -9a16 4 1550 3311 -9a1a 4 1510 3311 -9a1e 4 1581 3311 -9a22 4 1576 3311 -9a26 4 1592 3311 -9a2a 5 1603 3311 -FUNC 9a2f a8 4 _set_sbh_threshold -9a2f 1 102 3311 -9a30 a 104 3311 -9a3a 3 106 3311 -9a3d 1 195 3311 -9a3e a 109 3311 -9a48 25 112 3311 -9a6d 5 113 3311 -9a72 4 114 3311 -9a76 2 195 3311 -9a78 6 173 3311 -9a7e 2 175 3311 -9a80 5 179 3311 -9a85 2d 185 3311 -9ab2 6 186 3311 -9ab8 a 187 3311 -9ac2 5 188 3311 -9ac7 b 193 3311 -9ad2 4 194 3311 -9ad6 1 195 3311 -FUNC 9ad7 2e3 4 __sbh_alloc_block -9ad7 6 632 3311 -9add 5 633 3311 -9ae2 15 650 3311 -9af7 5 668 3311 -9afc 7 669 3311 -9b03 5 671 3311 -9b08 4 672 3311 -9b0c 2 674 3311 -9b0e d 677 3311 -9b1b a 682 3311 -9b25 e 686 3311 -9b33 3 688 3311 -9b36 2 683 3311 -9b38 5 688 3311 -9b3d 4 692 3311 -9b41 8 694 3311 -9b49 e 698 3311 -9b57 3 700 3311 -9b5a 2 695 3311 -9b5c 5 700 3311 -9b61 6 705 3311 -9b67 6 709 3311 -9b6d 6 711 3311 -9b73 4 707 3311 -9b77 4 715 3311 -9b7b 8 717 3311 -9b83 6 720 3311 -9b89 3 722 3311 -9b8c 2 718 3311 -9b8e 5 722 3311 -9b93 4 726 3311 -9b97 e 727 3311 -9ba5 7 728 3311 -9bac 12 733 3311 -9bbe 2 734 3311 -9bc0 6 737 3311 -9bc6 3 739 3311 -9bc9 2 740 3311 -9bcb 1c 745 3311 -9be7 4 749 3311 -9beb 14 751 3311 -9bff e 752 3311 -9c0d 3 751 3311 -9c10 12 754 3311 -9c22 a 760 3311 -9c2c d 763 3311 -9c39 2 768 3311 -9c3b 2 767 3311 -9c3d 1 768 3311 -9c3e 4 765 3311 -9c42 7 770 3311 -9c49 5 775 3311 -9c4e 6 776 3311 -9c54 8 777 3311 -9c5c 3 778 3311 -9c5f 8 781 3311 -9c67 8 784 3311 -9c6f 3 788 3311 -9c72 e 791 3311 -9c80 15 792 3311 -9c95 8 793 3311 -9c9d 2 795 3311 -9c9f f 798 3311 -9cae f 799 3311 -9cbd e 800 3311 -9ccb 1c 809 3311 -9ce7 6 813 3311 -9ced 3 814 3311 -9cf0 6 815 3311 -9cf6 3 816 3311 -9cf9 6 817 3311 -9cff 8 820 3311 -9d07 18 826 3311 -9d1f b 827 3311 -9d2a 10 829 3311 -9d3a 2 831 3311 -9d3c 6 833 3311 -9d42 d 835 3311 -9d4f 16 837 3311 -9d65 3 831 3311 -9d68 4 844 3311 -9d6c 2 846 3311 -9d6e 9 848 3311 -9d77 a 853 3311 -9d81 4 855 3311 -9d85 e 858 3311 -9d93 13 862 3311 -9da6 7 863 3311 -9dad 5 866 3311 -9db2 6 868 3311 -9db8 2 869 3311 -FUNC 9dba 39 0 terminate() -9dba c 94 3855 -9dc6 8 107 3855 -9dce 4 111 3855 -9dd2 4 116 3855 -9dd6 2 120 3855 -9dd8 2 121 3855 -9dda 7 122 3855 -9de1 7 127 3855 -9de8 5 135 3855 -9ded 6 136 3855 -FUNC 9df3 13 0 unexpected() -9df3 0 149 3855 -9df3 8 159 3855 -9dfb 4 163 3855 -9dff 2 167 3855 -9e01 5 173 3855 -FUNC 9e06 37 0 _inconsistency() -9e06 c 187 3855 -9e12 c 196 3855 -9e1e 4 197 3855 -9e22 4 202 3855 -9e26 2 203 3855 -9e28 2 204 3855 -9e2a 7 205 3855 -9e31 7 211 3855 -9e38 5 217 3855 -FUNC 9e3d 11 4 _initp_eh_hooks -9e3d 0 74 3855 -9e3d 10 80 3855 -9e4d 1 81 3855 -FUNC 9e4e b9 4 _onexit_nolock -9e4e 5 104 1673 -9e53 b 107 1673 -9e5e 13 108 1673 -9e71 16 112 1673 -9e87 d 122 1673 -9e94 d 127 1673 -9ea1 14 129 1673 -9eb5 3 134 1673 -9eb8 14 136 1673 -9ecc 3 147 1673 -9ecf f 149 1673 -9ede e 156 1673 -9eec c 157 1673 -9ef8 7 159 1673 -9eff 6 114 1673 -9f05 2 160 1673 -FUNC 9f07 2f 0 __onexitinit -9f07 1 205 1673 -9f08 b 208 1673 -9f13 9 209 1673 -9f1c e 211 1673 -9f2a 4 216 1673 -9f2e 1 221 1673 -9f2f 3 218 1673 -9f32 3 220 1673 -9f35 1 221 1673 -FUNC 9f36 3c 4 _onexit -9f36 c 85 1673 -9f42 5 88 1673 -9f47 4 90 1673 -9f4b c 91 1673 -9f57 c 93 1673 -9f63 3 97 1673 -9f66 6 98 1673 -9f6c 6 94 1673 -FUNC 9f72 12 4 atexit -9f72 0 165 1673 -9f72 11 166 1673 -9f83 1 167 1673 -FUNC 9f84 1f 0 _initp_misc_cfltcvt_tab -9f84 2 54 2488 -9f86 8 56 2488 -9f8e 14 58 2488 -9fa2 1 60 2488 -FUNC 9fb0 29 4 _ValidateImageBase -9fb0 0 44 1573 -9fb0 b 50 1573 -9fbb 2 52 1573 -9fbd 1 68 1573 -9fbe 5 55 1573 -9fc3 6 56 1573 -9fc9 2 58 1573 -9fcb d 62 1573 -9fd8 1 68 1573 -FUNC 9fe0 42 8 _FindPESection -9fe0 0 92 1573 -9fe0 9 99 1573 -9fe9 19 108 1573 -a002 10 111 1573 -a012 a 108 1573 -a01c 5 123 1573 -a021 1 124 1573 -FUNC a030 bb 4 _IsNonwritableInCurrentImage -a030 33 149 1573 -a063 7 156 1573 -a06a f 164 1573 -a079 2 166 1573 -a07b 8 174 1573 -a083 e 175 1573 -a091 2 176 1573 -a093 2 178 1573 -a095 12 185 1573 -a0a7 12 195 1573 -a0b9 17 187 1573 -a0d0 9 193 1573 -a0d9 12 195 1573 -FUNC a0eb 19 4 _initp_misc_winsig -a0eb 0 57 1199 -a0eb 9 58 1199 -a0f4 5 59 1199 -a0f9 5 60 1199 -a0fe 5 61 1199 -a103 1 62 1199 -FUNC a104 9b 4 ctrlevent_capture -a104 c 89 1199 -a110 9 94 1199 -a119 3 95 1199 -a11c 5 102 1199 -a121 5 103 1199 -a126 e 104 1199 -a134 7 105 1199 -a13b 2 107 1199 -a13d 5 108 1199 -a142 e 109 1199 -a150 7 110 1199 -a157 1 109 1199 -a158 9 113 1199 -a161 7 117 1199 -a168 c 120 1199 -a174 5 124 1199 -a179 4 128 1199 -a17d 2 120 1199 -a17f 8 121 1199 -a187 6 130 1199 -a18d 7 131 1199 -a194 3 138 1199 -a197 8 139 1199 -FUNC a19f 34 4 siglookup -a19f 0 634 1199 -a19f b 635 1199 -a1aa 15 645 1199 -a1bf f 649 1199 -a1ce 2 653 1199 -a1d0 2 658 1199 -a1d2 1 659 1199 -FUNC a1d3 d 0 __get_sigabrt -a1d3 0 676 1199 -a1d3 c 677 1199 -a1df 1 678 1199 -FUNC a1e0 9 0 __fpecode -a1e0 0 699 1199 -a1e0 8 700 1199 -a1e8 1 701 1199 -FUNC a1e9 9 0 __pxcptinfoptrs -a1e9 0 721 1199 -a1e9 8 722 1199 -a1f1 1 723 1199 -FUNC a1f2 23d 8 signal -a1f2 c 219 1199 -a1fe 4 224 1199 -a202 3 230 1199 -a205 3 244 1199 -a208 12 230 1199 -a21a 2f 244 1199 -a249 13 327 1199 -a25c 7 334 1199 -a263 8 335 1199 -a26b a 342 1199 -a275 17 346 1199 -a28c 10 352 1199 -a29c 13 367 1199 -a2af 3 380 1199 -a2b2 e 382 1199 -a2c0 3 395 1199 -a2c3 17 401 1199 -a2da 5 390 1199 -a2df 5 401 1199 -a2e4 8 246 1199 -a2ec 4 247 1199 -a2f0 12 254 1199 -a302 14 257 1199 -a316 6 259 1199 -a31c 2 261 1199 -a31e f 263 1199 -a32d a 264 1199 -a337 18 268 1199 -a34f f 288 1199 -a35e 4 289 1199 -a362 b 291 1199 -a36d 2 293 1199 -a36f f 279 1199 -a37e 4 280 1199 -a382 b 282 1199 -a38d 2 284 1199 -a38f f 296 1199 -a39e 4 297 1199 -a3a2 b 299 1199 -a3ad 2 301 1199 -a3af f 271 1199 -a3be 4 272 1199 -a3c2 c 274 1199 -a3ce c 305 1199 -a3da 9 309 1199 -a3e3 4 407 1199 -a3e7 3 305 1199 -a3ea 9 306 1199 -a3f3 19 410 1199 -a40c 1a 419 1199 -a426 3 417 1199 -a429 6 423 1199 -FUNC a42f 1b0 4 raise -a42f c 452 1199 -a43b 5 459 1199 -a440 3 460 1199 -a443 1f 462 1199 -a462 a 488 1199 -a46c 4 489 1199 -a470 8 490 1199 -a478 a 465 1199 -a482 2 467 1199 -a484 11 492 1199 -a495 2 493 1199 -a497 f 462 1199 -a4a6 1c 500 1199 -a4c2 a 476 1199 -a4cc 2 478 1199 -a4ce a 470 1199 -a4d8 2 472 1199 -a4da a 481 1199 -a4e4 7 482 1199 -a4eb a 502 1199 -a4f5 2 510 1199 -a4f7 4 509 1199 -a4fb 6 510 1199 -a501 5 515 1199 -a506 7 520 1199 -a50d 5 527 1199 -a512 7 528 1199 -a519 5 530 1199 -a51e f 543 1199 -a52d 6 544 1199 -a533 3 545 1199 -a536 5 551 1199 -a53b 6 552 1199 -a541 7 553 1199 -a548 5 561 1199 -a54d 1c 568 1199 -a569 d 571 1199 -a576 5 568 1199 -a57b 7 574 1199 -a582 c 577 1199 -a58e 5 582 1199 -a593 8 588 1199 -a59b 2 589 1199 -a59d 6 577 1199 -a5a3 6 578 1199 -a5a9 9 579 1199 -a5b2 5 590 1199 -a5b7 f 597 1199 -a5c6 6 598 1199 -a5cc 5 603 1199 -a5d1 6 604 1199 -a5d7 2 607 1199 -a5d9 6 608 1199 -FUNC a5df a 4 _initp_misc_rand_s -a5df 0 58 1489 -a5df 9 59 1489 -a5e8 1 60 1489 -FUNC a5e9 104 4 rand_s -a5e9 3 66 1489 -a5ec b 67 1489 -a5f7 2b 68 1489 -a622 c 71 1489 -a62e d 77 1489 -a63b 4 78 1489 -a63f 1e 80 1489 -a65d e 83 1489 -a66b 4 84 1489 -a66f 2f 86 1489 -a69e 9 88 1489 -a6a7 5 89 1489 -a6ac 16 94 1489 -a6c2 7 103 1489 -a6c9 9 107 1489 -a6d2 b 109 1489 -a6dd 9 110 1489 -a6e6 6 112 1489 -a6ec 1 113 1489 -FUNC a6ed 15a 14 __getlocaleinfo -a6ed 1d 70 1937 -a70a 7 76 1937 -a711 87 109 1937 -a798 13 103 1937 -a7ab 5 114 1937 -a7b0 7 115 1937 -a7b7 3 141 1937 -a7ba 12 142 1937 -a7cc 20 106 1937 -a7ec 5 108 1937 -a7f1 7 109 1937 -a7f8 4 111 1937 -a7fc 5 118 1937 -a801 1a 126 1937 -a81b 2 127 1937 -a81d 2 129 1937 -a81f 10 134 1937 -a82f 16 135 1937 -a845 2 139 1937 -FUNC a847 a 4 _initp_misc_purevirt -a847 0 166 1937 -a847 9 167 1937 -a850 1 168 1937 -FUNC a851 a 4 _initp_misc_initcrit -a851 0 47 2023 -a851 9 48 2023 -a85a 1 49 2023 -FUNC a85b 10 8 __crtInitCritSecNoSpinCount -a85b 0 76 2023 -a85b a 77 2023 -a865 3 78 2023 -a868 3 79 2023 -FUNC a86b c5 8 __crtInitCritSecAndSpinCount -a86b c 109 2023 -a877 5 111 2023 -a87c e 112 2023 -a88a 4 114 2023 -a88e 1b 120 2023 -a8a9 4 121 2023 -a8ad 2 129 2023 -a8af b 130 2023 -a8ba 4 131 2023 -a8be e 134 2023 -a8cc 4 136 2023 -a8d0 5 149 2023 -a8d5 c 152 2023 -a8e1 3 155 2023 -a8e4 b 161 2023 -a8ef 2 162 2023 -a8f1 1a 163 2023 -a90b 9 170 2023 -a914 8 171 2023 -a91c 4 173 2023 -a920 7 174 2023 -a927 3 176 2023 -a92a 6 177 2023 -FUNC a930 a 4 _initp_heap_handler -a930 0 31 3260 -a930 9 32 3260 -a939 1 33 3260 -FUNC a93a 31 4 _set_new_handler(int (*)(unsigned int)) -a93a 1 53 3260 -a93b 7 57 3260 -a942 b 59 3260 -a94d b 60 3260 -a958 f 63 3260 -a967 3 65 3260 -a96a 1 66 3260 -FUNC a96b 9 4 _set_new_handler(int) -a96b 0 86 3260 -a96b 8 89 3260 -a973 1 90 3260 -FUNC a974 d 0 _query_new_handler() -a974 0 110 3260 -a974 c 111 3260 -a980 1 112 3260 -FUNC a981 22 4 _callnewh -a981 0 131 3260 -a981 b 133 3260 -a98c 10 135 3260 -a99c 3 138 3260 -a99f 1 139 3260 -a9a0 2 136 3260 -a9a2 1 139 3260 -FUNC a9a3 1bd c __crtMessageBoxA -a9a3 9 41 2447 -a9ac 5 49 2447 -a9b1 2 56 2447 -a9b3 18 64 2447 -a9cb d 66 2447 -a9d8 2 67 2447 -a9da 6 69 2447 -a9e0 10 76 2447 -a9f0 6 78 2447 -a9f6 6 80 2447 -a9fc 15 83 2447 -aa11 1a 86 2447 -aa2b 1c 88 2447 -aa47 6 89 2447 -aa4d 8 95 2447 -aa55 6 98 2447 -aa5b a 100 2447 -aa65 14 102 2447 -aa79 14 116 2447 -aa8d 6 119 2447 -aa93 d 120 2447 -aaa0 c 122 2447 -aaac 1f 127 2447 -aacb 1b 136 2447 -aae6 6 137 2447 -aaec 7 138 2447 -aaf3 2 139 2447 -aaf5 7 140 2447 -aafc 2 142 2447 -aafe a 144 2447 -ab08 6 146 2447 -ab0e 5 147 2447 -ab13 2 149 2447 -ab15 11 153 2447 -ab26 6 155 2447 -ab2c 5 156 2447 -ab31 8 158 2447 -ab39 b 165 2447 -ab44 5 166 2447 -ab49 10 168 2447 -ab59 5 173 2447 -ab5e 2 176 2447 -FUNC ab60 71 c strcat_s -ab60 0 13 490 -ab60 30 18 490 -ab90 c 19 490 -ab9c 2 21 490 -ab9e 4 23 490 -aba2 1 25 490 -aba3 3 26 490 -aba6 2 29 490 -aba8 2 32 490 -abaa d 35 490 -abb7 4 39 490 -abbb 2 41 490 -abbd e 42 490 -abcb 5 45 490 -abd0 1 46 490 -FUNC abd1 b3 10 strncpy_s -abd1 5 13 406 -abd6 14 17 406 -abea 5 65 406 -abef 2 66 406 -abf1 26 24 406 -ac17 5 25 406 -ac1c 2 28 406 -ac1e 2 29 406 -ac20 b 31 406 -ac2b 8 35 406 -ac33 d 37 406 -ac40 2 41 406 -ac42 12 45 406 -ac54 5 48 406 -ac59 2 50 406 -ac5b 4 54 406 -ac5f 6 56 406 -ac65 3 58 406 -ac68 c 59 406 -ac74 2 61 406 -ac76 e 62 406 -FUNC ac84 46 4 _set_error_mode -ac84 0 43 2351 -ac84 15 50 2351 -ac99 6 58 2351 -ac9f 1 65 2351 -aca0 5 54 2351 -aca5 7 55 2351 -acac 1 65 2351 -acad 1c 61 2351 -acc9 1 65 2351 -FUNC acca a 4 __set_app_type -acca 0 91 2351 -acca 9 96 2351 -acd3 1 97 2351 -FUNC acd4 6 0 __get_app_type -acd4 0 120 2351 -acd4 5 125 2351 -acd9 1 126 2351 -FUNC acda 21 4 wait_a_bit -acda 1 18 3587 -acdb b 19 3587 -ace6 6 20 3587 -acec 8 21 3587 -acf4 3 22 3587 -acf7 3 23 3587 -acfa 1 24 3587 -FUNC acfb 10 4 _set_malloc_crt_max_wait -acfb 0 32 3587 -acfb f 34 3587 -ad0a 1 36 3587 -FUNC ad0b 40 4 _malloc_crt -ad0b 2 39 3587 -ad0d 2 40 3587 -ad0f b 44 3587 -ad1a d 45 3587 -ad27 18 46 3587 -ad3f 7 47 3587 -ad46 4 50 3587 -ad4a 1 51 3587 -FUNC ad4b 48 8 _calloc_crt -ad4b 2 54 3587 -ad4d 2 55 3587 -ad4f 14 61 3587 -ad63 c 62 3587 -ad6f 18 63 3587 -ad87 7 64 3587 -ad8e 4 67 3587 -ad92 1 68 3587 -FUNC ad93 4b 8 _realloc_crt -ad93 2 71 3587 -ad95 2 72 3587 -ad97 f 76 3587 -ada6 14 77 3587 -adba 18 78 3587 -add2 7 79 3587 -add9 4 82 3587 -addd 1 83 3587 -FUNC adde 50 c _recalloc_crt -adde 2 86 3587 -ade0 2 87 3587 -ade2 16 91 3587 -adf8 12 92 3587 -ae0a 18 94 3587 -ae22 7 95 3587 -ae29 4 100 3587 -ae2d 1 101 3587 -FUNC ae2e 8 0 _malloc_crt_fastcall -ae2e 0 105 3587 -ae2e 7 106 3587 -ae35 1 107 3587 -FUNC ae36 a 0 _calloc_crt_fastcall -ae36 0 110 3587 -ae36 9 111 3587 -ae3f 1 112 3587 -FUNC ae40 a 0 _realloc_crt_fastcall -ae40 0 115 3587 -ae40 9 116 3587 -ae49 1 117 3587 -FUNC ae4a e 0 _LocaleUpdate::~_LocaleUpdate() -ae4a 0 282 3057 -ae4a 6 283 3057 -ae50 7 284 3057 -ae57 1 285 3057 -FUNC ae58 3 0 _LocaleUpdate::GetLocaleT() -ae58 2 287 3057 -ae5a 1 289 3057 -FUNC ae5b 2f 0 CPtoLCID -ae5b 0 329 3029 -ae5b 14 330 3029 -ae6f 2 345 3029 -ae71 1 346 3029 -ae72 5 342 3029 -ae77 1 346 3029 -ae78 5 339 3029 -ae7d 1 346 3029 -ae7e 5 336 3029 -ae83 1 346 3029 -ae84 5 333 3029 -ae89 1 346 3029 -FUNC ae8a 55 0 setSBCS -ae8a 4 363 3029 -ae8e 14 368 3029 -aea2 3 371 3029 -aea5 3 374 3029 -aea8 3 376 3029 -aeab 8 379 3029 -aeb3 a 381 3029 -aebd 9 382 3029 -aec6 b 384 3029 -aed1 d 385 3029 -aede 1 386 3029 -FUNC aedf 18a 0 setSBUpLow -aedf 1d 402 3029 -aefc f 412 3029 -af0b d 415 3029 -af18 c 416 3029 -af24 e 420 3029 -af32 3 419 3029 -af35 28 421 3029 -af5d 1d 427 3029 -af7a 23 432 3029 -af9d 25 437 3029 -afc2 2 442 3029 -afc4 a 443 3029 -afce 5 445 3029 -afd3 9 446 3029 -afdc 5 448 3029 -afe1 5 450 3029 -afe6 e 451 3029 -aff4 2 453 3029 -aff6 8 454 3029 -affe 5 442 3029 -b003 8 456 3029 -b00b 2c 472 3029 -b037 5 466 3029 -b03c 5 468 3029 -b041 7 469 3029 -b048 2 471 3029 -b04a 3 472 3029 -b04d 5 460 3029 -b052 17 474 3029 -FUNC b069 a4 0 __updatetmbcinfo -b069 c 496 3029 -b075 7 499 3029 -b07c 10 500 3029 -b08c 3 533 3029 -b08f 4 536 3029 -b093 8 538 3029 -b09b 2 541 3029 -b09d 6 542 3029 -b0a3 8 501 3029 -b0ab 4 503 3029 -b0af e 506 3029 -b0bd 17 512 3029 -b0d4 7 517 3029 -b0db 11 524 3029 -b0ec 7 525 3029 -b0f3 11 528 3029 -b104 9 530 3029 -FUNC b10d 82 4 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *) -b10d 0 261 3057 -b10d f 262 3057 -b11c 8 264 3057 -b124 5 265 3057 -b129 6 266 3057 -b12f 1c 268 3057 -b14b 21 269 3057 -b16c 9 270 3057 -b175 4 272 3057 -b179 4 273 3057 -b17d 2 276 3057 -b17f a 278 3057 -b189 6 280 3057 -FUNC b18f 7a 0 getSystemCP -b18f 7 282 3029 -b196 b 284 3029 -b1a1 b 289 3029 -b1ac a 291 3029 -b1b6 14 292 3029 -b1ca 5 295 3029 -b1cf a 297 3029 -b1d9 8 298 3029 -b1e1 5 302 3029 -b1e6 12 305 3029 -b1f8 f 308 3029 -b207 2 309 3029 -FUNC b209 1d9 8 _setmbcp_nolock -b209 15 686 3029 -b21e b 693 3029 -b229 9 696 3029 -b232 7 698 3029 -b239 7 699 3029 -b240 3 703 3029 -b243 2 705 3029 -b245 19 708 3029 -b25e 2a 743 3029 -b288 13 751 3029 -b29b f 756 3029 -b2aa 15 761 3029 -b2bf 17 764 3029 -b2d6 c 766 3029 -b2e2 f 712 3029 -b2f1 15 715 3029 -b306 9 720 3029 -b30f 8 723 3029 -b317 12 724 3029 -b329 9 723 3029 -b332 5 720 3029 -b337 12 715 3029 -b349 20 731 3029 -b369 d 733 3029 -b376 7 736 3029 -b37d 5 737 3029 -b382 6 767 3029 -b388 10 766 3029 -b398 8 771 3029 -b3a0 7 772 3029 -b3a7 b 775 3029 -b3b2 3 778 3029 -b3b5 2 780 3029 -b3b7 3 782 3029 -b3ba 8 785 3029 -b3c2 2 789 3029 -b3c4 6 794 3029 -b3ca 6 797 3029 -b3d0 3 746 3029 -b3d3 f 802 3029 -FUNC b3e2 3c 0 _getmbcp -b3e2 6 819 3029 -b3e8 a 821 3029 -b3f2 9 822 3029 -b3fb 10 823 3029 -b40b 2 826 3029 -b40d f 825 3029 -b41c 2 826 3029 -FUNC b41e 19a 4 _setmbcp -b41e c 574 3029 -b42a 4 575 3029 -b42e a 579 3029 -b438 5 581 3029 -b43d 3 582 3029 -b440 b 585 3029 -b44b 9 587 3029 -b454 d 593 3029 -b461 8 595 3029 -b469 c 597 3029 -b475 3 607 3029 -b478 16 612 3029 -b48e 1a 614 3029 -b4a8 7 615 3029 -b4af 3 619 3029 -b4b2 9 620 3029 -b4bb 17 622 3029 -b4d2 8 624 3029 -b4da 4 625 3029 -b4de 8 630 3029 -b4e6 8 631 3029 -b4ee 8 632 3029 -b4f6 a 633 3029 -b500 d 634 3029 -b50d 3 633 3029 -b510 c 635 3029 -b51c a 636 3029 -b526 3 635 3029 -b529 c 637 3029 -b535 d 638 3029 -b542 3 637 3029 -b545 1c 640 3029 -b561 7 641 3029 -b568 6 645 3029 -b56e 3 646 3029 -b571 e 648 3029 -b57f 9 650 3029 -b588 2 653 3029 -b58a 5 654 3029 -b58f 8 660 3029 -b597 7 661 3029 -b59e b 662 3029 -b5a9 2 668 3029 -b5ab 4 673 3029 -b5af 3 682 3029 -b5b2 6 683 3029 -FUNC b5b8 1e 0 __initmbctable -b5b8 0 843 3029 -b5b8 9 853 3029 -b5c1 8 854 3029 -b5c9 a 855 3029 -b5d3 2 860 3029 -b5d5 1 861 3029 -FUNC b5d6 51 10 x_ismbbtype_l -b5d6 6 213 3083 -b5dc b 214 3083 -b5e7 4 219 3083 -b5eb 3a 222 3083 -b625 2 223 3083 -FUNC b627 15 8 _ismbbkalnum_l -b627 0 80 3083 -b627 14 81 3083 -b63b 1 82 3083 -FUNC b63c 13 4 _ismbbkalnum -b63c 0 85 3083 -b63c 12 86 3083 -b64e 1 87 3083 -FUNC b64f 15 8 _ismbbkprint_l -b64f 0 90 3083 -b64f 14 91 3083 -b663 1 92 3083 -FUNC b664 13 4 _ismbbkprint -b664 0 95 3083 -b664 12 96 3083 -b676 1 97 3083 -FUNC b677 15 8 _ismbbkpunct_l -b677 0 100 3083 -b677 14 101 3083 -b68b 1 102 3083 -FUNC b68c 13 4 _ismbbkpunct -b68c 0 105 3083 -b68c 12 106 3083 -b69e 1 107 3083 -FUNC b69f 18 8 _ismbbalnum_l -b69f 0 113 3083 -b69f 17 114 3083 -b6b6 1 115 3083 -FUNC b6b7 16 4 _ismbbalnum -b6b7 0 118 3083 -b6b7 15 119 3083 -b6cc 1 120 3083 -FUNC b6cd 18 8 _ismbbalpha_l -b6cd 0 123 3083 -b6cd 17 124 3083 -b6e4 1 125 3083 -FUNC b6e5 16 4 _ismbbalpha -b6e5 0 128 3083 -b6e5 15 129 3083 -b6fa 1 130 3083 -FUNC b6fb 18 8 _ismbbgraph_l -b6fb 0 133 3083 -b6fb 17 134 3083 -b712 1 135 3083 -FUNC b713 16 4 _ismbbgraph -b713 0 138 3083 -b713 15 139 3083 -b728 1 140 3083 -FUNC b729 18 8 _ismbbprint_l -b729 0 143 3083 -b729 17 144 3083 -b740 1 145 3083 -FUNC b741 16 4 _ismbbprint -b741 0 148 3083 -b741 15 149 3083 -b756 1 150 3083 -FUNC b757 15 8 _ismbbpunct_l -b757 0 153 3083 -b757 14 154 3083 -b76b 1 155 3083 -FUNC b76c 13 4 _ismbbpunct -b76c 0 158 3083 -b76c 12 159 3083 -b77e 1 160 3083 -FUNC b77f 15 8 _ismbblead_l -b77f 0 166 3083 -b77f 14 167 3083 -b793 1 168 3083 -FUNC b794 13 4 _ismbblead -b794 0 171 3083 -b794 12 172 3083 -b7a6 1 173 3083 -FUNC b7a7 15 8 _ismbbtrail_l -b7a7 0 176 3083 -b7a7 14 177 3083 -b7bb 1 178 3083 -FUNC b7bc 13 4 _ismbbtrail -b7bc 0 181 3083 -b7bc 12 182 3083 -b7ce 1 183 3083 -FUNC b7cf 53 8 _ismbbkana_l -b7cf 6 189 3083 -b7d5 b 190 3083 -b7e0 10 192 3083 -b7f0 1f 194 3083 -b80f 2 197 3083 -b811 f 196 3083 -b820 2 197 3083 -FUNC b822 e 4 _ismbbkana -b822 0 200 3083 -b822 d 201 3083 -b82f 1 202 3083 -FUNC b830 365 c memcpy -b830 3 101 614 -b833 1 113 614 -b834 1 114 614 -b835 3 116 614 -b838 3 117 614 -b83b 3 119 614 -b83e 2 129 614 -b840 2 131 614 -b842 2 132 614 -b844 2 134 614 -b846 2 135 614 -b848 2 137 614 -b84a 6 138 614 -b850 6 147 614 -b856 2 148 614 -b858 7 150 614 -b85f 2 151 614 -b861 1 153 614 -b862 1 154 614 -b863 3 155 614 -b866 3 156 614 -b869 2 157 614 -b86b 1 158 614 -b86c 1 159 614 -b86d 2 160 614 -b86f 1 163 614 -b870 1 164 614 -b871 1 165 614 -b872 5 166 614 -b877 6 179 614 -b87d 2 180 614 -b87f 3 182 614 -b882 3 183 614 -b885 3 185 614 -b888 2 186 614 -b88a 2 188 614 -b88c 8 190 614 -b894 2 208 614 -b896 5 209 614 -b89b 3 211 614 -b89e 2 212 614 -b8a0 3 214 614 -b8a3 2 215 614 -b8a5 7 217 614 -b8ac 8 221 614 -b8b4 14 225 614 -b8c8 2 232 614 -b8ca 2 233 614 -b8cc 2 235 614 -b8ce 3 236 614 -b8d1 3 238 614 -b8d4 3 239 614 -b8d7 3 241 614 -b8da 3 242 614 -b8dd 3 244 614 -b8e0 3 245 614 -b8e3 3 247 614 -b8e6 2 248 614 -b8e8 2 250 614 -b8ea a 252 614 -b8f4 2 256 614 -b8f6 2 257 614 -b8f8 2 259 614 -b8fa 3 260 614 -b8fd 3 262 614 -b900 3 263 614 -b903 3 265 614 -b906 3 266 614 -b909 3 268 614 -b90c 2 269 614 -b90e 2 271 614 -b910 8 273 614 -b918 2 277 614 -b91a 2 278 614 -b91c 2 280 614 -b91e 3 281 614 -b921 3 283 614 -b924 3 284 614 -b927 3 286 614 -b92a 2 287 614 -b92c 2 289 614 -b92e 2a 291 614 -b958 4 298 614 -b95c 4 300 614 -b960 4 302 614 -b964 4 304 614 -b968 4 306 614 -b96c 4 308 614 -b970 4 310 614 -b974 4 312 614 -b978 4 314 614 -b97c 4 316 614 -b980 4 318 614 -b984 4 320 614 -b988 4 322 614 -b98c 4 324 614 -b990 7 326 614 -b997 2 328 614 -b999 2 329 614 -b99b 19 331 614 -b9b4 3 340 614 -b9b7 1 341 614 -b9b8 1 342 614 -b9b9 3 344 614 -b9bc 2 348 614 -b9be 2 350 614 -b9c0 3 351 614 -b9c3 1 352 614 -b9c4 1 353 614 -b9c5 3 354 614 -b9c8 2 358 614 -b9ca 2 360 614 -b9cc 3 361 614 -b9cf 3 362 614 -b9d2 3 363 614 -b9d5 1 364 614 -b9d6 1 365 614 -b9d7 5 366 614 -b9dc 2 370 614 -b9de 2 372 614 -b9e0 3 373 614 -b9e3 3 374 614 -b9e6 3 375 614 -b9e9 3 376 614 -b9ec 3 377 614 -b9ef 1 378 614 -b9f0 1 379 614 -b9f1 3 380 614 -b9f4 4 391 614 -b9f8 4 392 614 -b9fc 6 397 614 -ba02 2 398 614 -ba04 3 400 614 -ba07 3 401 614 -ba0a 3 403 614 -ba0d 2 404 614 -ba0f 1 406 614 -ba10 2 407 614 -ba12 1 408 614 -ba13 9 410 614 -ba1c 2 414 614 -ba1e a 417 614 -ba28 2 422 614 -ba2a 5 423 614 -ba2f 3 425 614 -ba32 2 426 614 -ba34 3 428 614 -ba37 2 429 614 -ba39 7 431 614 -ba40 14 435 614 -ba54 3 442 614 -ba57 2 443 614 -ba59 3 445 614 -ba5c 3 446 614 -ba5f 3 448 614 -ba62 3 449 614 -ba65 3 451 614 -ba68 2 452 614 -ba6a 1 454 614 -ba6b 2 455 614 -ba6d 1 456 614 -ba6e a 458 614 -ba78 3 462 614 -ba7b 2 463 614 -ba7d 3 465 614 -ba80 3 466 614 -ba83 3 468 614 -ba86 3 469 614 -ba89 3 471 614 -ba8c 3 472 614 -ba8f 3 474 614 -ba92 2 475 614 -ba94 1 477 614 -ba95 2 478 614 -ba97 1 479 614 -ba98 8 481 614 -baa0 3 485 614 -baa3 2 486 614 -baa5 3 488 614 -baa8 3 489 614 -baab 3 491 614 -baae 3 492 614 -bab1 3 494 614 -bab4 3 495 614 -bab7 3 497 614 -baba 3 498 614 -babd 3 500 614 -bac0 6 501 614 -bac6 1 503 614 -bac7 2 504 614 -bac9 1 505 614 -baca 2a 507 614 -baf4 4 516 614 -baf8 4 518 614 -bafc 4 520 614 -bb00 4 522 614 -bb04 4 524 614 -bb08 4 526 614 -bb0c 4 528 614 -bb10 4 530 614 -bb14 4 532 614 -bb18 4 534 614 -bb1c 4 536 614 -bb20 4 538 614 -bb24 4 540 614 -bb28 4 542 614 -bb2c 7 544 614 -bb33 2 546 614 -bb35 2 547 614 -bb37 19 549 614 -bb50 3 558 614 -bb53 1 560 614 -bb54 1 561 614 -bb55 3 562 614 -bb58 3 566 614 -bb5b 3 568 614 -bb5e 3 569 614 -bb61 1 570 614 -bb62 1 571 614 -bb63 5 572 614 -bb68 3 576 614 -bb6b 3 578 614 -bb6e 3 579 614 -bb71 3 580 614 -bb74 3 581 614 -bb77 1 582 614 -bb78 1 583 614 -bb79 3 584 614 -bb7c 3 588 614 -bb7f 3 590 614 -bb82 3 591 614 -bb85 3 592 614 -bb88 3 593 614 -bb8b 3 594 614 -bb8e 3 595 614 -bb91 1 596 614 -bb92 1 597 614 -bb93 2 598 614 -FUNC bb95 6 0 ___setlc_active_func -bb95 0 90 1409 -bb95 5 91 1409 -bb9a 1 92 1409 -FUNC bb9b 6 0 ___unguarded_readlc_active_add_func -bb9b 0 104 1409 -bb9b 5 105 1409 -bba0 1 106 1409 -FUNC bba1 140 4 __freetlocinfo -bba1 3 144 1409 -bba4 26 152 1409 -bbca e 155 1409 -bbd8 6 157 1409 -bbde d 158 1409 -bbeb e 162 1409 -bbf9 6 164 1409 -bbff d 165 1409 -bc0c b 168 1409 -bc17 d 169 1409 -bc24 e 176 1409 -bc32 11 178 1409 -bc43 13 179 1409 -bc56 e 180 1409 -bc64 e 181 1409 -bc72 17 188 1409 -bc89 6 190 1409 -bc8f 9 191 1409 -bc98 6 194 1409 -bc9e 13 197 1409 -bcb1 7 199 1409 -bcb8 10 205 1409 -bcc8 d 207 1409 -bcd5 b 214 1409 -bce0 1 215 1409 -FUNC bce1 86 4 __addlocaleref -bce1 3 225 1409 -bce4 e 227 1409 -bcf2 a 228 1409 -bcfc 3 229 1409 -bcff a 231 1409 -bd09 3 232 1409 -bd0c a 234 1409 -bd16 3 235 1409 -bd19 a 237 1409 -bd23 3 238 1409 -bd26 6 240 1409 -bd2c f 242 1409 -bd3b 3 243 1409 -bd3e d 245 1409 -bd4b 9 246 1409 -bd54 12 248 1409 -bd66 1 249 1409 -FUNC bd67 8c 4 __removelocaleref -bd67 1 259 1409 -bd68 b 261 1409 -bd73 9 263 1409 -bd7c a 265 1409 -bd86 3 266 1409 -bd89 a 268 1409 -bd93 3 269 1409 -bd96 a 271 1409 -bda0 3 272 1409 -bda3 a 274 1409 -bdad 3 275 1409 -bdb0 6 277 1409 -bdb6 f 279 1409 -bdc5 3 280 1409 -bdc8 d 282 1409 -bdd5 9 283 1409 -bdde 11 285 1409 -bdef 3 287 1409 -bdf2 1 288 1409 -FUNC bdf3 24 0 _copytlocinfo_nolock -bdf3 3 302 1409 -bdf6 d 303 1409 -be03 7 304 1409 -be0a 3 305 1409 -be0d 9 306 1409 -be16 1 308 1409 -FUNC be17 3e 0 _updatetlocinfoEx_nolock -be17 0 321 1409 -be17 9 324 1409 -be20 2 326 1409 -be22 4 327 1409 -be26 8 334 1409 -be2e 5 339 1409 -be33 6 341 1409 -be39 e 350 1409 -be47 7 351 1409 -be4e 3 355 1409 -be51 1 356 1409 -be52 2 325 1409 -be54 1 356 1409 -FUNC be55 76 0 __updatetlocinfo -be55 c 382 1409 -be61 7 384 1409 -be68 10 386 1409 -be78 8 397 1409 -be80 4 399 1409 -be84 8 401 1409 -be8c 2 404 1409 -be8e 6 405 1409 -be94 8 387 1409 -be9c 4 388 1409 -bea0 11 390 1409 -beb1 e 392 1409 -bebf 8 394 1409 -bec7 4 395 1409 -FUNC becb 66 4 _configthreadlocale -becb 2 420 1409 -becd 5 434 1409 -bed2 10 435 1409 -bee2 19 437 1409 -befb 1d 456 1409 -bf18 3 444 1409 -bf1b 2 445 1409 -bf1d 6 440 1409 -bf23 2 441 1409 -bf25 7 452 1409 -bf2c 4 460 1409 -bf30 1 462 1409 -FUNC bf31 53 0 sync_legacy_variables_lk -bf31 0 489 1409 -bf31 e 490 1409 -bf3f 9 491 1409 -bf48 c 492 1409 -bf54 c 493 1409 -bf60 c 494 1409 -bf6c c 495 1409 -bf78 b 496 1409 -bf83 1 497 1409 -FUNC bf84 96 4 _free_locale -bf84 c 517 1409 -bf90 9 518 1409 -bf99 1c 522 1409 -bfb5 7 524 1409 -bfbc 4 526 1409 -bfc0 8 534 1409 -bfc8 3 535 1409 -bfcb 8 537 1409 -bfd3 11 540 1409 -bfe4 7 541 1409 -bfeb c 543 1409 -bff7 7 552 1409 -bffe 3 553 1409 -c001 7 554 1409 -c008 6 556 1409 -c00e 3 543 1409 -c011 9 545 1409 -FUNC c01a 5 4 __free_locale -c01a 0 562 1409 -c01a 5 563 1409 -FUNC c01f 88 0 _get_current_locale -c01f c 687 1409 -c02b 7 689 1409 -c032 14 691 1409 -c046 b 693 1409 -c051 4 694 1409 -c055 5 697 1409 -c05a 5 698 1409 -c05f 5 706 1409 -c064 6 707 1409 -c06a 8 708 1409 -c072 4 709 1409 -c076 8 710 1409 -c07e c 712 1409 -c08a 9 715 1409 -c093 2 717 1409 -c095 6 718 1409 -c09b 3 712 1409 -c09e 9 713 1409 -FUNC c0a7 5 0 __get_current_locale -c0a7 0 722 1409 -c0a7 5 723 1409 -FUNC c0ac 3 4 __init_dummy -c0ac 0 1283 1409 -c0ac 2 1284 1409 -c0ae 1 1285 1409 -FUNC c0af 3e c _strcats -c0af 2 1288 1409 -c0b1 f 1294 1409 -c0c0 26 1296 1409 -c0e6 6 1294 1409 -c0ec 1 1299 1409 -FUNC c0ed 129 8 __lc_strtolc -c0ed 6 1302 1409 -c0f3 11 1307 1409 -c104 c 1309 1409 -c110 7 1310 1409 -c117 b 1313 1409 -c122 25 1315 1409 -c147 6 1317 1409 -c14d 2 1318 1409 -c14f 15 1323 1409 -c164 1d 1328 1409 -c181 9 1329 1409 -c18a 10 1331 1409 -c19a c 1332 1409 -c1a6 14 1334 1409 -c1ba 28 1335 1409 -c1e2 9 1340 1409 -c1eb b 1348 1409 -c1f6 18 1350 1409 -c20e 6 1338 1409 -c214 2 1353 1409 -FUNC c216 6b c __lc_lctostr -c216 5 1356 1409 -c21b 25 1357 1409 -c240 7 1358 1409 -c247 16 1359 1409 -c25d c 1360 1409 -c269 16 1361 1409 -c27f 2 1362 1409 -FUNC c281 171 0 _setlocale_get_all -c281 4 1124 1409 -c285 3 1126 1409 -c288 1d 1134 1409 -c2a5 3 1137 1409 -c2a8 3 1139 1409 -c2ab 2 1140 1409 -c2ad 2f 1143 1409 -c2dc 26 1146 1409 -c302 10 1147 1409 -c312 5 1148 1409 -c317 4 1141 1409 -c31b 2f 1143 1409 -c34a a 1144 1409 -c354 8 1152 1409 -c35c 14 1154 1409 -c370 9 1156 1409 -c379 e 1159 1409 -c387 9 1161 1409 -c390 7 1165 1409 -c397 7 1166 1409 -c39e 9 1168 1409 -c3a7 15 1170 1409 -c3bc 9 1172 1409 -c3c5 e 1175 1409 -c3d3 9 1177 1409 -c3dc 12 1183 1409 -c3ee 4 1187 1409 -FUNC c3f2 1d4 18 _expandlocale -c3f2 15 1198 1409 -c407 41 1230 1409 -c448 14 1211 1409 -c45c b 1216 1409 -c467 26 1219 1409 -c48d 4 1220 1409 -c491 3 1222 1409 -c494 4 1223 1409 -c498 4 1224 1409 -c49c 7 1226 1409 -c4a3 2 1228 1409 -c4a5 8 1230 1409 -c4ad 6 1234 1409 -c4b3 2f 1236 1409 -c4e2 4 1241 1409 -c4e6 e 1243 1409 -c4f4 6 1244 1409 -c4fa 10 1246 1409 -c50a 6 1247 1409 -c510 9 1251 1409 -c519 10 1253 1409 -c529 a 1255 1409 -c533 2 1260 1409 -c535 8 1263 1409 -c53d 26 1267 1409 -c563 5 1271 1409 -c568 e 1272 1409 -c576 5 1273 1409 -c57b 10 1274 1409 -c58b 22 1276 1409 -c5ad 5 1277 1409 -c5b2 2 1212 1409 -c5b4 12 1278 1409 -FUNC c5c6 2f6 4 _setlocale_set_cat -c5c6 19 980 1409 -c5df 5 993 1409 -c5e4 2f 998 1409 -c613 7 1000 1409 -c61a 19 1002 1409 -c633 6 1004 1409 -c639 c 1007 1409 -c645 16 1008 1409 -c65b 2 1010 1409 -c65d 3 1013 1409 -c660 d 1014 1409 -c66d 2c 1015 1409 -c699 3 1016 1409 -c69c 39 1019 1409 -c6d5 6 1020 1409 -c6db 15 1021 1409 -c6f0 17 1022 1409 -c707 a 1029 1409 -c711 6 1031 1409 -c717 18 1037 1409 -c72f 7 1039 1409 -c736 8 1053 1409 -c73e 14 1054 1409 -c752 18 1055 1409 -c76a 2 1039 1409 -c76c a 1044 1409 -c776 d 1046 1409 -c783 b 1047 1409 -c78e 9 1058 1409 -c797 26 1066 1409 -c7bd 2 1069 1409 -c7bf 10 1071 1409 -c7cf 22 1072 1409 -c7f1 2 1081 1409 -c7f3 4 1082 1409 -c7f7 5 1083 1409 -c7fc 9 1085 1409 -c805 6 1088 1409 -c80b 9 1089 1409 -c814 12 1091 1409 -c826 6 1094 1409 -c82c e 1095 1409 -c83a f 1096 1409 -c849 9 1097 1409 -c852 5 1099 1409 -c857 24 1106 1409 -c87b 7 1109 1409 -c882 8 1110 1409 -c88a 6 1111 1409 -c890 18 1116 1409 -c8a8 3 1118 1409 -c8ab 11 1119 1409 -FUNC c8bc 1ce 4 _setlocale_nolock -c8bc 1a 873 1409 -c8d6 7 877 1409 -c8dd 5 904 1409 -c8e2 17 880 1409 -c8f9 5 882 1409 -c8fe 12 888 1409 -c910 1d 890 1409 -c92d 2 894 1409 -c92f d 898 1409 -c93c 1e 900 1409 -c95a 11 904 1409 -c96b 1d 907 1409 -c988 e 904 1409 -c996 1b 913 1409 -c9b1 6 916 1409 -c9b7 24 918 1409 -c9db 18 922 1409 -c9f3 3 923 1409 -c9f6 7 925 1409 -c9fd 1 926 1409 -c9fe 9 928 1409 -ca07 c 930 1409 -ca13 4 901 1409 -ca17 19 935 1409 -ca30 3 937 1409 -ca33 4 939 1409 -ca37 11 941 1409 -ca48 c 943 1409 -ca54 2 947 1409 -ca56 3 949 1409 -ca59 2 952 1409 -ca5b 3 953 1409 -ca5e 9 937 1409 -ca67 5 956 1409 -ca6c 2 961 1409 -ca6e 3 962 1409 -ca71 2 965 1409 -ca73 5 966 1409 -ca78 12 972 1409 -FUNC ca8a f3 8 _create_locale -ca8a 0 605 1409 -ca8a 10 609 1409 -ca9a 13 612 1409 -caad b 614 1409 -cab8 4 610 1409 -cabc c 658 1409 -cac8 8 617 1409 -cad0 7 619 1409 -cad7 2 621 1409 -cad9 14 623 1409 -caed 7 625 1409 -caf4 7 626 1409 -cafb 2 628 1409 -cafd c 630 1409 -cb09 14 632 1409 -cb1d 7 634 1409 -cb24 7 635 1409 -cb2b 9 637 1409 -cb34 2 640 1409 -cb36 13 642 1409 -cb49 8 644 1409 -cb51 7 645 1409 -cb58 7 646 1409 -cb5f 9 647 1409 -cb68 2 648 1409 -cb6a 2 650 1409 -cb6c 5 652 1409 -cb71 5 653 1409 -cb76 7 657 1409 -FUNC cb7d 5 8 __create_locale -cb7d 0 665 1409 -cb7d 5 666 1409 -FUNC cb82 170 8 setlocale -cb82 c 791 1409 -cb8e 5 792 1409 -cb93 25 797 1409 -cbb8 a 799 1409 -cbc2 5 801 1409 -cbc7 4 806 1409 -cbcb 3 807 1409 -cbce 1b 808 1409 -cbe9 8 818 1409 -cbf1 7 819 1409 -cbf8 a 820 1409 -cc02 8 822 1409 -cc0a 19 826 1409 -cc23 18 834 1409 -cc3b a 836 1409 -cc45 8 839 1409 -cc4d 7 840 1409 -cc54 a 841 1409 -cc5e 7 842 1409 -cc65 f 846 1409 -cc74 c 847 1409 -cc80 18 849 1409 -cc98 5 850 1409 -cc9d b 852 1409 -cca8 8 822 1409 -ccb0 9 823 1409 -ccb9 3 852 1409 -ccbc 9 853 1409 -ccc5 2 855 1409 -ccc7 6 856 1409 -cccd 8 857 1409 -ccd5 c 860 1409 -cce1 3 865 1409 -cce4 6 866 1409 -ccea 3 860 1409 -cced 5 862 1409 -FUNC ccf2 f 0 __security_check_cookie -ccf2 0 52 2811 -ccf2 6 55 2811 -ccf8 2 56 2811 -ccfa 2 57 2811 -ccfc 5 59 2811 -FUNC cd04 90 0 _local_unwind4 -FUNC cd94 46 0 _unwind_handler4 -FUNC cdda 1c 4 _seh_longjmp_unwind4 -FUNC cdf6 17 0 _EH4_CallFilterFunc -FUNC ce0d 19 0 _EH4_TransferToHandler -FUNC ce26 1a 0 _EH4_GlobalUnwind -FUNC ce40 17 8 _EH4_LocalUnwind -FUNC ce57 8 4 _crt_debugger_hook -ce57 0 62 2380 -ce57 7 65 2380 -ce5e 1 66 2380 -FUNC ce60 7a c memset -ce60 0 59 601 -ce60 4 68 601 -ce64 4 69 601 -ce68 2 71 601 -ce6a 2 72 601 -ce6c 2 74 601 -ce6e 4 75 601 -ce72 2 78 601 -ce74 2 79 601 -ce76 6 80 601 -ce7c 2 81 601 -ce7e 7 82 601 -ce85 2 83 601 -ce87 5 85 601 -ce8c 1 91 601 -ce8d 2 92 601 -ce8f 3 94 601 -ce92 2 95 601 -ce94 2 97 601 -ce96 3 98 601 -ce99 2 99 601 -ce9b 2 101 601 -ce9d 2 103 601 -ce9f 3 104 601 -cea2 3 105 601 -cea5 2 106 601 -cea7 2 110 601 -cea9 3 111 601 -ceac 2 113 601 -ceae 2 115 601 -ceb0 3 117 601 -ceb3 2 119 601 -ceb5 2 122 601 -ceb7 3 123 601 -ceba 3 124 601 -cebd 2 125 601 -cebf 2 127 601 -cec1 2 129 601 -cec3 2 130 601 -cec5 2 134 601 -cec7 3 135 601 -ceca 3 137 601 -cecd 2 138 601 -cecf 4 142 601 -ced3 1 143 601 -ced4 1 145 601 -ced5 4 148 601 -ced9 1 150 601 -FUNC ceda 2a 0 _purecall -ceda 0 43 1533 -ceda b 44 1533 -cee5 5 45 1533 -ceea 2 47 1533 -ceec 7 54 1533 -cef3 c 56 1533 -ceff 5 57 1533 -FUNC cf04 22 4 _set_purecall_handler -cf04 1 82 1533 -cf05 b 85 1533 -cf10 12 86 1533 -cf22 3 88 1533 -cf25 1 89 1533 -FUNC cf26 d 0 _get_purecall_handler -cf26 0 92 1533 -cf26 c 93 1533 -cf32 1 94 1533 -FUNC cf40 95 0 _aulldvrm -cf40 0 45 3161 -cf40 1 47 3161 -cf41 4 79 3161 -cf45 2 80 3161 -cf47 2 81 3161 -cf49 4 82 3161 -cf4d 4 83 3161 -cf51 2 84 3161 -cf53 2 85 3161 -cf55 2 86 3161 -cf57 4 87 3161 -cf5b 2 88 3161 -cf5d 2 89 3161 -cf5f 2 94 3161 -cf61 4 95 3161 -cf65 2 96 3161 -cf67 2 97 3161 -cf69 4 98 3161 -cf6d 2 99 3161 -cf6f 2 100 3161 -cf71 2 107 3161 -cf73 4 108 3161 -cf77 4 109 3161 -cf7b 4 110 3161 -cf7f 2 112 3161 -cf81 2 113 3161 -cf83 2 114 3161 -cf85 2 115 3161 -cf87 2 116 3161 -cf89 2 117 3161 -cf8b 2 118 3161 -cf8d 2 119 3161 -cf8f 4 128 3161 -cf93 2 129 3161 -cf95 4 130 3161 -cf99 2 131 3161 -cf9b 2 132 3161 -cf9d 2 133 3161 -cf9f 4 141 3161 -cfa3 2 142 3161 -cfa5 2 143 3161 -cfa7 4 144 3161 -cfab 2 145 3161 -cfad 1 147 3161 -cfae 4 148 3161 -cfb2 4 149 3161 -cfb6 2 151 3161 -cfb8 4 160 3161 -cfbc 4 161 3161 -cfc0 2 162 3161 -cfc2 2 163 3161 -cfc4 3 164 3161 -cfc7 2 169 3161 -cfc9 2 170 3161 -cfcb 2 171 3161 -cfcd 2 172 3161 -cfcf 2 173 3161 -cfd1 1 179 3161 -cfd2 3 181 3161 -FUNC cfe0 34 0 _allmul -cfe0 0 47 3164 -cfe0 4 62 3164 -cfe4 4 63 3164 -cfe8 2 64 3164 -cfea 4 65 3164 -cfee 2 66 3164 -cff0 4 68 3164 -cff4 2 69 3164 -cff6 3 71 3164 -cff9 1 74 3164 -cffa 2 81 3164 -cffc 2 82 3164 -cffe 4 84 3164 -d002 4 85 3164 -d006 2 86 3164 -d008 4 88 3164 -d00c 2 89 3164 -d00e 2 90 3164 -d010 1 92 3164 -d011 3 94 3164 -FUNC d014 11 4 atol -d014 0 55 4301 -d014 10 56 4301 -d024 1 57 4301 -FUNC d025 15 8 _atol_l -d025 0 64 4301 -d025 14 65 4301 -d039 1 66 4301 -FUNC d03a 5 4 atoi -d03a 0 99 4301 -d03a 5 100 4301 -FUNC d03f 5 8 _atoi_l -d03f 0 107 4301 -d03f 5 108 4301 -FUNC d044 11 4 _atoi64 -d044 0 143 4301 -d044 10 144 4301 -d054 1 145 4301 -FUNC d055 15 8 _atoi64_l -d055 0 151 4301 -d055 14 152 4301 -d069 1 153 4301 -FUNC d070 365 c memmove -d070 3 101 604 -d073 1 113 604 -d074 1 114 604 -d075 3 116 604 -d078 3 117 604 -d07b 3 119 604 -d07e 2 129 604 -d080 2 131 604 -d082 2 132 604 -d084 2 134 604 -d086 2 135 604 -d088 2 137 604 -d08a 6 138 604 -d090 6 147 604 -d096 2 148 604 -d098 7 150 604 -d09f 2 151 604 -d0a1 1 153 604 -d0a2 1 154 604 -d0a3 3 155 604 -d0a6 3 156 604 -d0a9 2 157 604 -d0ab 1 158 604 -d0ac 1 159 604 -d0ad 2 160 604 -d0af 1 163 604 -d0b0 1 164 604 -d0b1 1 165 604 -d0b2 5 166 604 -d0b7 6 179 604 -d0bd 2 180 604 -d0bf 3 182 604 -d0c2 3 183 604 -d0c5 3 185 604 -d0c8 2 186 604 -d0ca 2 188 604 -d0cc 8 190 604 -d0d4 2 208 604 -d0d6 5 209 604 -d0db 3 211 604 -d0de 2 212 604 -d0e0 3 214 604 -d0e3 2 215 604 -d0e5 7 217 604 -d0ec 8 221 604 -d0f4 14 225 604 -d108 2 232 604 -d10a 2 233 604 -d10c 2 235 604 -d10e 3 236 604 -d111 3 238 604 -d114 3 239 604 -d117 3 241 604 -d11a 3 242 604 -d11d 3 244 604 -d120 3 245 604 -d123 3 247 604 -d126 2 248 604 -d128 2 250 604 -d12a a 252 604 -d134 2 256 604 -d136 2 257 604 -d138 2 259 604 -d13a 3 260 604 -d13d 3 262 604 -d140 3 263 604 -d143 3 265 604 -d146 3 266 604 -d149 3 268 604 -d14c 2 269 604 -d14e 2 271 604 -d150 8 273 604 -d158 2 277 604 -d15a 2 278 604 -d15c 2 280 604 -d15e 3 281 604 -d161 3 283 604 -d164 3 284 604 -d167 3 286 604 -d16a 2 287 604 -d16c 2 289 604 -d16e 2a 291 604 -d198 4 298 604 -d19c 4 300 604 -d1a0 4 302 604 -d1a4 4 304 604 -d1a8 4 306 604 -d1ac 4 308 604 -d1b0 4 310 604 -d1b4 4 312 604 -d1b8 4 314 604 -d1bc 4 316 604 -d1c0 4 318 604 -d1c4 4 320 604 -d1c8 4 322 604 -d1cc 4 324 604 -d1d0 7 326 604 -d1d7 2 328 604 -d1d9 2 329 604 -d1db 19 331 604 -d1f4 3 340 604 -d1f7 1 341 604 -d1f8 1 342 604 -d1f9 3 344 604 -d1fc 2 348 604 -d1fe 2 350 604 -d200 3 351 604 -d203 1 352 604 -d204 1 353 604 -d205 3 354 604 -d208 2 358 604 -d20a 2 360 604 -d20c 3 361 604 -d20f 3 362 604 -d212 3 363 604 -d215 1 364 604 -d216 1 365 604 -d217 5 366 604 -d21c 2 370 604 -d21e 2 372 604 -d220 3 373 604 -d223 3 374 604 -d226 3 375 604 -d229 3 376 604 -d22c 3 377 604 -d22f 1 378 604 -d230 1 379 604 -d231 3 380 604 -d234 4 391 604 -d238 4 392 604 -d23c 6 397 604 -d242 2 398 604 -d244 3 400 604 -d247 3 401 604 -d24a 3 403 604 -d24d 2 404 604 -d24f 1 406 604 -d250 2 407 604 -d252 1 408 604 -d253 9 410 604 -d25c 2 414 604 -d25e a 417 604 -d268 2 422 604 -d26a 5 423 604 -d26f 3 425 604 -d272 2 426 604 -d274 3 428 604 -d277 2 429 604 -d279 7 431 604 -d280 14 435 604 -d294 3 442 604 -d297 2 443 604 -d299 3 445 604 -d29c 3 446 604 -d29f 3 448 604 -d2a2 3 449 604 -d2a5 3 451 604 -d2a8 2 452 604 -d2aa 1 454 604 -d2ab 2 455 604 -d2ad 1 456 604 -d2ae a 458 604 -d2b8 3 462 604 -d2bb 2 463 604 -d2bd 3 465 604 -d2c0 3 466 604 -d2c3 3 468 604 -d2c6 3 469 604 -d2c9 3 471 604 -d2cc 3 472 604 -d2cf 3 474 604 -d2d2 2 475 604 -d2d4 1 477 604 -d2d5 2 478 604 -d2d7 1 479 604 -d2d8 8 481 604 -d2e0 3 485 604 -d2e3 2 486 604 -d2e5 3 488 604 -d2e8 3 489 604 -d2eb 3 491 604 -d2ee 3 492 604 -d2f1 3 494 604 -d2f4 3 495 604 -d2f7 3 497 604 -d2fa 3 498 604 -d2fd 3 500 604 -d300 6 501 604 -d306 1 503 604 -d307 2 504 604 -d309 1 505 604 -d30a 2a 507 604 -d334 4 516 604 -d338 4 518 604 -d33c 4 520 604 -d340 4 522 604 -d344 4 524 604 -d348 4 526 604 -d34c 4 528 604 -d350 4 530 604 -d354 4 532 604 -d358 4 534 604 -d35c 4 536 604 -d360 4 538 604 -d364 4 540 604 -d368 4 542 604 -d36c 7 544 604 -d373 2 546 604 -d375 2 547 604 -d377 19 549 604 -d390 3 558 604 -d393 1 560 604 -d394 1 561 604 -d395 3 562 604 -d398 3 566 604 -d39b 3 568 604 -d39e 3 569 604 -d3a1 1 570 604 -d3a2 1 571 604 -d3a3 5 572 604 -d3a8 3 576 604 -d3ab 3 578 604 -d3ae 3 579 604 -d3b1 3 580 604 -d3b4 3 581 604 -d3b7 1 582 604 -d3b8 1 583 604 -d3b9 3 584 604 -d3bc 3 588 604 -d3bf 3 590 604 -d3c2 3 591 604 -d3c5 3 592 604 -d3c8 3 593 604 -d3cb 3 594 604 -d3ce 3 595 604 -d3d1 1 596 604 -d3d2 1 597 604 -d3d3 2 598 604 -FUNC d3d5 f3 0 abort -d3d5 1b 53 2533 -d3f0 a 56 2533 -d3fa 8 59 2533 -d402 5 68 2533 -d407 4 69 2533 -d40b 8 71 2533 -d413 d 78 2533 -d420 6 87 2533 -d426 6 88 2533 -d42c 6 89 2533 -d432 3 90 2533 -d435 3 91 2533 -d438 3 92 2533 -d43b 7 93 2533 -d442 7 94 2533 -d449 4 95 2533 -d44d 4 96 2533 -d451 4 97 2533 -d455 4 98 2533 -d459 1 99 2533 -d45a 6 100 2533 -d460 6 106 2533 -d466 19 107 2533 -d47f 3 109 2533 -d482 13 117 2533 -d495 9 122 2533 -d49e 3 123 2533 -d4a1 15 126 2533 -d4b6 a 128 2533 -d4c0 8 137 2533 -FUNC d4c8 1e 8 _set_abort_behavior -d4c8 0 158 2533 -d4c8 1d 160 2533 -d4e5 1 162 2533 -FUNC d4e6 a3 4 _msize -d4e6 c 43 3413 -d4f2 2d 47 3413 -d51f 9 51 3413 -d528 8 55 3413 -d530 3 56 3413 -d533 e 57 3413 -d541 e 59 3413 -d54f c 61 3413 -d55b 5 64 3413 -d560 10 88 3413 -d570 2 91 3413 -d572 6 93 3413 -d578 8 61 3413 -d580 9 62 3413 -FUNC d589 9 0 _fptrap -d589 0 46 917 -d589 8 47 917 -d591 1 48 917 -FUNC d592 54 8 _isalpha_l -d592 6 57 4214 -d598 b 58 4214 -d5a3 41 60 4214 -d5e4 2 61 4214 -FUNC d5e6 2b 4 isalpha -d5e6 0 66 4214 -d5e6 9 67 4214 -d5ef 13 69 4214 -d602 1 75 4214 -d603 d 73 4214 -d610 1 75 4214 -FUNC d611 4f 8 _isupper_l -d611 6 81 4214 -d617 b 82 4214 -d622 3c 84 4214 -d65e 2 85 4214 -FUNC d660 29 4 isupper -d660 0 90 4214 -d660 9 91 4214 -d669 11 93 4214 -d67a 1 99 4214 -d67b d 97 4214 -d688 1 99 4214 -FUNC d689 4f 8 _islower_l -d689 6 105 4214 -d68f b 106 4214 -d69a 3c 108 4214 -d6d6 2 109 4214 -FUNC d6d8 29 4 islower -d6d8 0 114 4214 -d6d8 9 115 4214 -d6e1 11 117 4214 -d6f2 1 123 4214 -d6f3 d 121 4214 -d700 1 123 4214 -FUNC d701 4f 8 _isdigit_l -d701 6 129 4214 -d707 b 130 4214 -d712 3c 132 4214 -d74e 2 133 4214 -FUNC d750 29 4 isdigit -d750 0 138 4214 -d750 9 139 4214 -d759 11 141 4214 -d76a 1 147 4214 -d76b d 145 4214 -d778 1 147 4214 -FUNC d779 54 8 _isxdigit_l -d779 6 153 4214 -d77f b 154 4214 -d78a 41 156 4214 -d7cb 2 157 4214 -FUNC d7cd 2b 4 isxdigit -d7cd 0 162 4214 -d7cd 9 163 4214 -d7d6 13 165 4214 -d7e9 1 171 4214 -d7ea d 169 4214 -d7f7 1 171 4214 -FUNC d7f8 4f 8 _isspace_l -d7f8 6 177 4214 -d7fe b 178 4214 -d809 3c 180 4214 -d845 2 181 4214 -FUNC d847 29 4 isspace -d847 0 186 4214 -d847 9 187 4214 -d850 11 189 4214 -d861 1 195 4214 -d862 d 193 4214 -d86f 1 195 4214 -FUNC d870 4f 8 _ispunct_l -d870 6 201 4214 -d876 b 202 4214 -d881 3c 204 4214 -d8bd 2 205 4214 -FUNC d8bf 29 4 ispunct -d8bf 0 210 4214 -d8bf 9 211 4214 -d8c8 11 213 4214 -d8d9 1 219 4214 -d8da d 217 4214 -d8e7 1 219 4214 -FUNC d8e8 54 8 _isalnum_l -d8e8 6 225 4214 -d8ee b 226 4214 -d8f9 41 228 4214 -d93a 2 229 4214 -FUNC d93c 2b 4 isalnum -d93c 0 234 4214 -d93c 9 235 4214 -d945 13 237 4214 -d958 1 243 4214 -d959 d 241 4214 -d966 1 243 4214 -FUNC d967 54 8 _isprint_l -d967 6 249 4214 -d96d b 250 4214 -d978 41 252 4214 -d9b9 2 253 4214 -FUNC d9bb 2b 4 isprint -d9bb 0 258 4214 -d9bb 9 259 4214 -d9c4 13 261 4214 -d9d7 1 267 4214 -d9d8 d 265 4214 -d9e5 1 267 4214 -FUNC d9e6 54 8 _isgraph_l -d9e6 6 273 4214 -d9ec b 274 4214 -d9f7 41 276 4214 -da38 2 277 4214 -FUNC da3a 2b 4 isgraph -da3a 0 282 4214 -da3a 9 283 4214 -da43 13 285 4214 -da56 1 291 4214 -da57 d 289 4214 -da64 1 291 4214 -FUNC da65 4f 8 _iscntrl_l -da65 6 297 4214 -da6b b 298 4214 -da76 3c 300 4214 -dab2 2 301 4214 -FUNC dab4 29 4 iscntrl -dab4 0 306 4214 -dab4 9 307 4214 -dabd 11 309 4214 -dace 1 315 4214 -dacf d 313 4214 -dadc 1 315 4214 -FUNC dadd d 4 __isascii -dadd 0 320 4214 -dadd c 321 4214 -dae9 1 322 4214 -FUNC daea 8 4 __toascii -daea 0 327 4214 -daea 7 328 4214 -daf1 1 329 4214 -FUNC daf2 1f 8 _iscsymf_l -daf2 0 335 4214 -daf2 1a 336 4214 -db0c 1 337 4214 -db0d 3 336 4214 -db10 1 337 4214 -FUNC db11 1a 4 __iscsymf -db11 0 341 4214 -db11 15 342 4214 -db26 1 343 4214 -db27 3 342 4214 -db2a 1 343 4214 -FUNC db2b 1f 8 _iscsym_l -db2b 0 349 4214 -db2b 1a 350 4214 -db45 1 351 4214 -db46 3 350 4214 -db49 1 351 4214 -FUNC db4a 1c 4 __iscsym -db4a 0 356 4214 -db4a 17 357 4214 -db61 1 358 4214 -db62 3 357 4214 -db65 1 358 4214 -FUNC db66 12 8 _MarkAllocaS -db66 0 207 1309 -db66 8 208 1309 -db6e 6 210 1309 -db74 3 211 1309 -db77 1 214 1309 -FUNC db78 1b 4 _freea -db78 0 249 1309 -db78 8 251 1309 -db80 3 253 1309 -db83 8 255 1309 -db8b 7 257 1309 -db92 1 266 1309 -FUNC db93 13b 18 __crtGetLocaleInfoW_stat -db93 f 60 1290 -dba2 14 68 1290 -dbb6 d 70 1290 -dbc3 8 71 1290 -dbcb b 73 1290 -dbd6 f 74 1290 -dbe5 5 79 1290 -dbea 13 81 1290 -dbfd 7 86 1290 -dc04 2 140 1290 -dc06 8 96 1290 -dc0e b 97 1290 -dc19 16 100 1290 -dc2f 7 101 1290 -dc36 48 104 1290 -dc7e 2 105 1290 -dc80 2 106 1290 -dc82 e 110 1290 -dc90 7 113 1290 -dc97 2 121 1290 -dc99 2 123 1290 -dc9b 17 130 1290 -dcb2 6 134 1290 -dcb8 4 136 1290 -dcbc 12 141 1290 -FUNC dcce 3b 18 __crtGetLocaleInfoW -dcce 6 151 1290 -dcd4 b 152 1290 -dcdf 28 161 1290 -dd07 2 162 1290 -FUNC dd09 13d 18 __crtGetLocaleInfoA_stat -dd09 f 60 2665 -dd18 17 68 2665 -dd2f a 70 2665 -dd39 8 71 2665 -dd41 b 73 2665 -dd4c f 74 2665 -dd5b 11 79 2665 -dd6c 4 86 2665 -dd70 5 96 2665 -dd75 b 97 2665 -dd80 13 100 2665 -dd93 7 101 2665 -dd9a 49 104 2665 -dde3 2 105 2665 -dde5 2 106 2665 -dde7 10 110 2665 -ddf7 3 114 2665 -ddfa 6 124 2665 -de00 2 126 2665 -de02 15 135 2665 -de17 7 139 2665 -de1e 4 141 2665 -de22 12 81 2665 -de34 12 145 2665 -FUNC de46 3b 18 __crtGetLocaleInfoA -de46 6 155 2665 -de4c b 156 2665 -de57 28 165 2665 -de7f 2 166 2665 -FUNC de81 11e c _calloc_impl -de81 c 23 3622 -de8d 9 28 3622 -de96 2e 30 3622 -dec4 9 32 3622 -decd 4 36 3622 -ded1 3 37 3622 -ded4 5 41 3622 -ded9 5 43 3622 -dede 9 46 3622 -dee7 9 50 3622 -def0 b 52 3622 -defb 8 56 3622 -df03 3 57 3622 -df06 c 58 3622 -df12 c 60 3622 -df1e 7 64 3622 -df25 d 65 3622 -df32 4 93 3622 -df36 11 94 3622 -df47 c 97 3622 -df53 f 109 3622 -df62 b 111 3622 -df6d 6 112 3622 -df73 5 113 3622 -df78 5 60 3622 -df7d 9 61 3622 -df86 4 100 3622 -df8a 7 102 3622 -df91 6 103 3622 -df97 2 105 3622 -df99 6 119 3622 -FUNC df9f 3f 8 calloc -df9f 4 145 3622 -dfa3 5 146 3622 -dfa8 14 147 3622 -dfbc 15 149 3622 -dfd1 8 151 3622 -dfd9 3 153 3622 -dfdc 2 154 3622 -FUNC dfde 21b 8 realloc -dfde c 64 3368 -dfea 7 69 3368 -dff1 e 70 3368 -dfff 7 73 3368 -e006 7 75 3368 -e00d 5 76 3368 -e012 d 81 3368 -e01f 5 88 3368 -e024 9 89 3368 -e02d 8 91 3368 -e035 3 92 3368 -e038 12 96 3368 -e04a 8 100 3368 -e052 f 102 3368 -e061 5 103 3368 -e066 e 104 3368 -e074 4 107 3368 -e078 10 108 3368 -e088 9 110 3368 -e091 a 111 3368 -e09b 5 118 3368 -e0a0 4 120 3368 -e0a4 6 121 3368 -e0aa 9 123 3368 -e0b3 15 124 3368 -e0c8 4 127 3368 -e0cc 10 128 3368 -e0dc c 129 3368 -e0e8 c 135 3368 -e0f4 6 142 3368 -e0fa 4 144 3368 -e0fe 1 145 3368 -e0ff 9 147 3368 -e108 14 148 3368 -e11c 6 135 3368 -e122 9 137 3368 -e12b 3 148 3368 -e12e 10 158 3368 -e13e f 181 3368 -e14d 5 186 3368 -e152 5 183 3368 -e157 11 186 3368 -e168 2 188 3368 -e16a 8 160 3368 -e172 5 170 3368 -e177 3 167 3368 -e17a 2 172 3368 -e17c 6 174 3368 -e182 2 155 3368 -e184 4 321 3368 -e188 1 322 3368 -e189 12 323 3368 -e19b c 332 3368 -e1a7 b 347 3368 -e1b2 5 319 3368 -e1b7 7 327 3368 -e1be b 328 3368 -e1c9 2 329 3368 -e1cb 6 356 3368 -e1d1 5 349 3368 -e1d6 5 350 3368 -e1db 4 334 3368 -e1df 16 341 3368 -e1f5 4 343 3368 -FUNC e1f9 79 c _recalloc -e1f9 3 744 3368 -e1fc a 749 3368 -e206 28 751 3368 -e22e 4 753 3368 -e232 9 754 3368 -e23b b 755 3368 -e246 b 756 3368 -e251 a 757 3368 -e25b 10 759 3368 -e26b 5 761 3368 -e270 2 762 3368 -FUNC e272 1a 4 strncnt -e272 0 48 2617 -e272 6 49 2617 -e278 6 52 2617 -e27e 1 53 2617 -e27f 5 52 2617 -e284 7 55 2617 -e28b 1 56 2617 -FUNC e28c 3a2 20 __crtLCMapStringA_stat -e28c 12 99 2617 -e29e d 108 2617 -e2ab 1b 109 2617 -e2c6 8 110 2617 -e2ce b 111 2617 -e2d9 a 112 2617 -e2e3 5 119 2617 -e2e8 19 120 2617 -e301 5 124 2617 -e306 1 125 2617 -e307 3 127 2617 -e30a 16 133 2617 -e320 9 213 2617 -e329 8 235 2617 -e331 8 236 2617 -e339 27 247 2617 -e360 6 248 2617 -e366 48 251 2617 -e3ae 3 252 2617 -e3b1 6 253 2617 -e3b7 19 262 2617 -e3d0 21 271 2617 -e3f1 8 274 2617 -e3f9 9 277 2617 -e402 9 279 2617 -e40b 12 288 2617 -e41d 5 292 2617 -e422 4b 298 2617 -e46d 4 299 2617 -e471 18 309 2617 -e489 3 312 2617 -e48c 6 322 2617 -e492 2 325 2617 -e494 17 335 2617 -e4ab 7 342 2617 -e4b2 8 344 2617 -e4ba 9 346 2617 -e4c3 b 141 2617 -e4ce 8 142 2617 -e4d6 5 143 2617 -e4db 8 144 2617 -e4e3 11 146 2617 -e4f4 7 147 2617 -e4fb 9 153 2617 -e504 15 155 2617 -e519 5 156 2617 -e51e 2 157 2617 -e520 1b 164 2617 -e53b 7 166 2617 -e542 41 169 2617 -e583 2 170 2617 -e585 28 196 2617 -e5ad 2 183 2617 -e5af 2 184 2617 -e5b1 25 190 2617 -e5d6 7 198 2617 -e5dd 2 199 2617 -e5df 1a 202 2617 -e5f9 5 204 2617 -e5fe 9 205 2617 -e607 c 206 2617 -e613 7 207 2617 -e61a 2 208 2617 -e61c 12 350 2617 -FUNC e62e 43 24 __crtLCMapStringA -e62e 6 363 2617 -e634 b 364 2617 -e63f 30 376 2617 -e66f 2 377 2617 -FUNC e671 1b8 1c __crtGetStringTypeA_stat -e671 f 66 2569 -e680 10 75 2569 -e690 18 79 2569 -e6a8 8 80 2569 -e6b0 b 82 2569 -e6bb f 83 2569 -e6ca 11 88 2569 -e6db 9 120 2569 -e6e4 8 141 2569 -e6ec 8 142 2569 -e6f4 27 153 2569 -e71b 6 154 2569 -e721 3e 157 2569 -e75f 2 158 2569 -e761 2 159 2569 -e763 f 161 2569 -e772 13 169 2569 -e785 11 174 2569 -e796 6 176 2569 -e79c 6 178 2569 -e7a2 2 90 2569 -e7a4 5 94 2569 -e7a9 8 95 2569 -e7b1 5 96 2569 -e7b6 8 97 2569 -e7be e 99 2569 -e7cc 4 100 2569 -e7d0 5 104 2569 -e7d5 17 106 2569 -e7ec 2 107 2569 -e7ee 2 108 2569 -e7f0 3 109 2569 -e7f3 15 112 2569 -e808 6 113 2569 -e80e 7 114 2569 -e815 2 115 2569 -e817 12 182 2569 -FUNC e829 40 20 __crtGetStringTypeA -e829 6 194 2569 -e82f b 195 2569 -e83a 2d 206 2569 -e867 2 207 2569 -FUNC e869 87 c fastcopy_I -FUNC e8f0 e3 c _VEC_memcpy -FUNC e9d3 14 0 _sse2_mathfcns_init -FUNC e9e7 14 4 _set_SSE2_enable -FUNC e9fb 6 0 __pwctype_func -e9fb 0 24 2400 -e9fb 5 25 2400 -ea00 1 26 2400 -FUNC ea01 29 0 __pctype_func -ea01 0 29 2400 -ea01 7 35 2400 -ea08 3 36 2400 -ea0b 18 38 2400 -ea23 6 39 2400 -ea29 1 40 2400 -FUNC ea2a 419 0 _get_lc_time -ea2a 6 94 1793 -ea30 12 104 1793 -ea42 3 105 1793 -ea45 2 170 1793 -ea47 9 108 1793 -ea50 16 112 1793 -ea66 15 113 1793 -ea7b 15 114 1793 -ea90 18 115 1793 -eaa8 15 116 1793 -eabd 13 117 1793 -ead0 14 118 1793 -eae4 18 120 1793 -eafc 15 121 1793 -eb11 15 122 1793 -eb26 15 123 1793 -eb3b 18 124 1793 -eb53 15 125 1793 -eb68 15 126 1793 -eb7d 15 128 1793 -eb92 18 129 1793 -ebaa 15 130 1793 -ebbf 15 131 1793 -ebd4 15 132 1793 -ebe9 18 133 1793 -ec01 15 134 1793 -ec16 15 135 1793 -ec2b 15 136 1793 -ec40 18 137 1793 -ec58 15 138 1793 -ec6d 15 139 1793 -ec82 15 141 1793 -ec97 18 142 1793 -ecaf 15 143 1793 -ecc4 15 144 1793 -ecd9 15 145 1793 -ecee 18 146 1793 -ed06 18 147 1793 -ed1e 18 148 1793 -ed36 18 149 1793 -ed4e 1b 150 1793 -ed69 18 151 1793 -ed81 18 152 1793 -ed99 18 154 1793 -edb1 1b 155 1793 -edcc 18 160 1793 -ede4 18 161 1793 -edfc 1b 163 1793 -ee17 20 165 1793 -ee37 a 169 1793 -ee41 2 170 1793 -FUNC ee43 190 4 __free_lc_time -ee43 1 179 1793 -ee44 c 180 1793 -ee50 8 183 1793 -ee58 8 184 1793 -ee60 8 185 1793 -ee68 8 186 1793 -ee70 8 187 1793 -ee78 8 188 1793 -ee80 7 189 1793 -ee87 8 191 1793 -ee8f 8 192 1793 -ee97 8 193 1793 -ee9f 8 194 1793 -eea7 8 195 1793 -eeaf 8 196 1793 -eeb7 8 197 1793 -eebf 8 199 1793 -eec7 b 200 1793 -eed2 8 201 1793 -eeda 8 202 1793 -eee2 8 203 1793 -eeea 8 204 1793 -eef2 8 205 1793 -eefa 8 206 1793 -ef02 8 207 1793 -ef0a 8 208 1793 -ef12 8 209 1793 -ef1a 8 210 1793 -ef22 8 212 1793 -ef2a 8 213 1793 -ef32 8 214 1793 -ef3a 8 215 1793 -ef42 8 216 1793 -ef4a b 217 1793 -ef55 b 218 1793 -ef60 b 219 1793 -ef6b b 220 1793 -ef76 b 221 1793 -ef81 b 222 1793 -ef8c b 223 1793 -ef97 b 225 1793 -efa2 b 226 1793 -efad b 228 1793 -efb8 b 229 1793 -efc3 f 230 1793 -efd2 1 232 1793 -FUNC efd3 73 4 __init_time -efd3 4 56 1793 -efd7 f 60 1793 -efe6 16 64 1793 -effc 4 65 1793 -f000 b 67 1793 -f00b 6 69 1793 -f011 8 70 1793 -f019 2 71 1793 -f01b 6 73 1793 -f021 2 74 1793 -f023 2 75 1793 -f025 18 78 1793 -f03d 2 82 1793 -f03f 6 83 1793 -f045 1 84 1793 -FUNC f046 33 0 fix_grouping -f046 0 32 1841 -f046 8 40 1841 -f04e a 43 1841 -f058 4 45 1841 -f05c 1 61 1841 -f05d 6 40 1841 -f063 1 63 1841 -f064 4 50 1841 -f068 2 52 1841 -f06a 7 55 1841 -f071 6 56 1841 -f077 2 60 1841 -FUNC f079 40 4 __free_lconv_num -f079 1 211 1841 -f07a 8 212 1841 -f082 a 215 1841 -f08c 7 216 1841 -f093 b 218 1841 -f09e 7 219 1841 -f0a5 b 221 1841 -f0b0 8 222 1841 -f0b8 1 223 1841 -FUNC f0b9 1c8 4 __init_numeric -f0b9 7 84 1841 -f0c0 4 92 1841 -f0c4 2 93 1841 -f0c6 11 96 1841 -f0d7 3 177 1841 -f0da 3 178 1841 -f0dd c 179 1841 -f0e9 14 102 1841 -f0fd 8 103 1841 -f105 9 108 1841 -f10e 13 113 1841 -f121 9 115 1841 -f12a 2 116 1841 -f12c 2 118 1841 -f12e 9 120 1841 -f137 12 125 1841 -f149 8 127 1841 -f151 a 128 1841 -f15b 7 129 1841 -f162 2 131 1841 -f164 19 140 1841 -f17d 15 142 1841 -f192 1b 144 1841 -f1ad 2 146 1841 -f1af c 148 1841 -f1bb 1e 154 1841 -f1d9 2 156 1841 -f1db 17 154 1841 -f1f2 b 164 1841 -f1fd 9 165 1841 -f206 c 166 1841 -f212 8 168 1841 -f21a 7 169 1841 -f221 2 170 1841 -f223 13 186 1841 -f236 11 191 1841 -f247 b 193 1841 -f252 d 194 1841 -f25f 9 197 1841 -f268 9 198 1841 -f271 9 200 1841 -f27a 5 201 1841 -f27f 2 202 1841 -FUNC f281 33 0 fix_grouping -f281 0 214 1884 -f281 8 222 1884 -f289 a 225 1884 -f293 4 227 1884 -f297 1 243 1884 -f298 6 222 1884 -f29e 1 245 1884 -f29f 4 232 1884 -f2a3 2 234 1884 -f2a5 7 237 1884 -f2ac 6 238 1884 -f2b2 2 242 1884 -FUNC f2b4 89 4 __free_lconv_mon -f2b4 1 255 1884 -f2b5 8 256 1884 -f2bd b 259 1884 -f2c8 7 260 1884 -f2cf b 262 1884 -f2da 7 263 1884 -f2e1 b 265 1884 -f2ec 7 266 1884 -f2f3 b 268 1884 -f2fe 7 269 1884 -f305 b 271 1884 -f310 7 272 1884 -f317 b 274 1884 -f322 7 275 1884 -f329 b 277 1884 -f334 8 278 1884 -f33c 1 279 1884 -FUNC f33d 2c4 4 __init_monetary -f33d 8 65 1884 -f345 6 73 1884 -f34b 13 77 1884 -f35e 3 187 1884 -f361 3 188 1884 -f364 a 189 1884 -f36e 11 83 1884 -f37f 8 84 1884 -f387 f 89 1884 -f396 7 91 1884 -f39d 2 92 1884 -f39f 2 94 1884 -f3a1 9 96 1884 -f3aa f 101 1884 -f3b9 6 103 1884 -f3bf 9 104 1884 -f3c8 2 105 1884 -f3ca 2 107 1884 -f3cc 4 112 1884 -f3d0 14 117 1884 -f3e4 14 119 1884 -f3f8 14 121 1884 -f40c 17 123 1884 -f423 14 125 1884 -f437 14 128 1884 -f44b 14 130 1884 -f45f 17 133 1884 -f476 14 135 1884 -f48a 14 137 1884 -f49e 14 139 1884 -f4b2 17 141 1884 -f4c9 14 143 1884 -f4dd 14 145 1884 -f4f1 17 147 1884 -f508 2 149 1884 -f50a 6 150 1884 -f510 6 151 1884 -f516 8 152 1884 -f51e b 153 1884 -f529 5 154 1884 -f52e 1c 157 1884 -f54a 2 159 1884 -f54c 17 157 1884 -f563 c 169 1884 -f56f 3 175 1884 -f572 32 181 1884 -f5a4 11 194 1884 -f5b5 15 199 1884 -f5ca b 201 1884 -f5d5 d 202 1884 -f5e2 9 204 1884 -f5eb 9 205 1884 -f5f4 6 206 1884 -f5fa 5 208 1884 -f5ff 2 209 1884 -FUNC f601 395 4 __init_ctype -f601 11 59 1976 -f612 6 60 1976 -f618 1f 82 1976 -f637 7 84 1976 -f63e 20 89 1976 -f65e 7 94 1976 -f665 10 98 1976 -f675 b 100 1976 -f680 b 102 1976 -f68b 12 104 1976 -f69d 2f 106 1976 -f6cc 5 109 1976 -f6d1 2 112 1976 -f6d3 e 113 1976 -f6e1 15 115 1976 -f6f6 a 118 1976 -f700 4 121 1976 -f704 8 124 1976 -f70c e 126 1976 -f71a 9 128 1976 -f723 b 129 1976 -f72e b 128 1976 -f739 2c 140 1976 -f765 33 155 1976 -f798 2d 166 1976 -f7c5 37 178 1976 -f7fc 11 180 1976 -f80d 17 182 1976 -f824 15 183 1976 -f839 d 180 1976 -f846 12 189 1976 -f858 f 190 1976 -f867 12 191 1976 -f879 18 195 1976 -f891 11 198 1976 -f8a2 13 199 1976 -f8b5 e 200 1976 -f8c3 e 201 1976 -f8d1 9 203 1976 -f8da 6 204 1976 -f8e0 9 206 1976 -f8e9 9 207 1976 -f8f2 9 208 1976 -f8fb 9 209 1976 -f904 9 210 1976 -f90d 9 213 1976 -f916 4 214 1976 -f91a 8 217 1976 -f922 8 218 1976 -f92a 8 219 1976 -f932 10 220 1976 -f942 13 227 1976 -f955 2 231 1976 -f957 6 232 1976 -f95d a 233 1976 -f967 a 234 1976 -f971 a 235 1976 -f97b a 236 1976 -f985 2 238 1976 -f987 f 240 1976 -FUNC f996 29 0 ___mb_cur_max_func -f996 0 248 1976 -f996 7 254 1976 -f99d 3 255 1976 -f9a0 18 257 1976 -f9b8 6 259 1976 -f9be 1 260 1976 -FUNC f9bf 16 4 ___mb_cur_max_l_func -f9bf 0 263 1976 -f9bf 15 264 1976 -f9d4 1 265 1976 -FUNC f9d5 26 0 ___lc_codepage_func -f9d5 0 268 1976 -f9d5 7 274 1976 -f9dc 3 275 1976 -f9df 18 277 1976 -f9f7 3 279 1976 -f9fa 1 280 1976 -FUNC f9fb 26 0 ___lc_collate_cp_func -f9fb 0 284 1976 -f9fb 7 290 1976 -fa02 3 291 1976 -fa05 18 293 1976 -fa1d 3 295 1976 -fa20 1 296 1976 -FUNC fa21 26 0 ___lc_handle_func -fa21 0 300 1976 -fa21 7 306 1976 -fa28 3 307 1976 -fa2b 18 309 1976 -fa43 3 311 1976 -fa46 1 312 1976 -FUNC fa47 3 4 __init_collate -fa47 0 41 2064 -fa47 2 42 2064 -fa49 1 43 2064 -FUNC fa4a fe 4 _Getdays_l -fa4a 9 111 190 -fa53 d 115 190 -fa60 9 117 190 -fa69 9 119 190 -fa72 28 120 190 -fa9a b 121 190 -faa5 c 123 190 -fab1 4 126 190 -fab5 30 128 190 -fae5 8 129 190 -faed 31 131 190 -fb1e 12 132 190 -fb30 3 134 190 -fb33 13 137 190 -fb46 2 138 190 -FUNC fb48 9 0 _Getdays -fb48 0 142 190 -fb48 8 143 190 -fb50 1 144 190 -FUNC fb51 fe 4 _Getmonths_l -fb51 9 150 190 -fb5a d 154 190 -fb67 16 156 190 -fb7d 2b 159 190 -fba8 b 160 190 -fbb3 8 162 190 -fbbb a 163 190 -fbc5 2d 167 190 -fbf2 8 168 190 -fbfa 2c 170 190 -fc26 11 171 190 -fc37 3 173 190 -fc3a 13 176 190 -fc4d 2 177 190 -FUNC fc4f 9 0 _Getmonths -fc4f 0 181 190 -fc4f 8 182 190 -fc57 1 183 190 -FUNC fc58 355 4 _Gettnames_l -fc58 9 189 190 -fc61 d 193 190 -fc6e 9 195 190 -fc77 9 197 190 -fc80 28 198 190 -fca8 d 199 190 -fcb5 29 200 190 -fcde 18 201 190 -fcf6 11 202 190 -fd07 f 203 190 -fd16 f 204 190 -fd25 7 205 190 -fd2c e 206 190 -fd3a 8 208 190 -fd42 12 212 190 -fd54 13 213 190 -fd67 6 214 190 -fd6d 2a 215 190 -fd97 6 216 190 -fd9d d 217 190 -fdaa 26 218 190 -fdd0 1c 219 190 -fdec 18 221 190 -fe04 6 222 190 -fe0a 26 223 190 -fe30 a 224 190 -fe3a 5 225 190 -fe3f 2a 226 190 -fe69 18 227 190 -fe81 30 230 190 -feb1 a 231 190 -febb 30 233 190 -feeb a 234 190 -fef5 30 236 190 -ff25 a 237 190 -ff2f 30 239 190 -ff5f a 240 190 -ff69 30 242 190 -ff99 12 245 190 -ffab 2 246 190 -FUNC ffad 9 0 _Gettnames -ffad 0 250 190 -ffad 8 251 190 -ffb5 1 252 190 -FUNC ffb6 20 0 _store_str -ffb6 0 869 190 -ffb6 f 871 190 -ffc5 7 872 190 -ffcc 9 873 190 -ffd5 1 875 190 -FUNC ffd6 36 0 _store_number -ffd6 0 965 190 -ffd6 8 973 190 -ffde c 976 190 -ffea 2 977 190 -ffec b 978 190 -fff7 2 981 190 -fff9 2 982 190 -fffb 1 983 190 -fffc 7 988 190 -10003 3 989 190 -10006 5 990 190 -1000b 1 991 190 -FUNC 1000c 79 4 _store_num -1000c 8 909 190 -10014 2 910 190 -10016 8 912 190 -1001e 33 913 190 -10051 2 914 190 -10053 4 917 190 -10057 8 918 190 -1005f b 919 190 -1006a c 921 190 -10076 5 923 190 -1007b 2 924 190 -1007d 2 926 190 -1007f 4 927 190 -10083 2 928 190 -FUNC 10085 3e6 10 _expandtime -10085 5 548 190 -1008a 4f 558 190 -100d9 16 659 190 -100ef 5 662 190 -100f4 16 587 190 -1010a 7 589 190 -10111 5 590 190 -10116 16 571 190 -1012c 7 573 190 -10133 5 574 190 -10138 5 822 190 -1013d 7 823 190 -10144 5 824 190 -10149 16 667 190 -1015f 10 668 190 -1016f 2 669 190 -10171 5 672 190 -10176 23 558 190 -10199 6 787 190 -1019f 5 789 190 -101a4 15 736 190 -101b9 2 737 190 -101bb 2 739 190 -101bd 5 740 190 -101c2 15 722 190 -101d7 2 723 190 -101d9 16 742 190 -101ef 4 743 190 -101f3 2 744 190 -101f5 5 745 190 -101fa 6 746 190 -10200 8 747 190 -10208 1 748 190 -10209 5 752 190 -1020e f 715 190 -1021d 5 718 190 -10222 3 696 190 -10225 2 699 190 -10227 1d 804 190 -10244 6 806 190 -1024a d 808 190 -10257 2 809 190 -10259 37 558 190 -10290 19 678 190 -102a9 8 680 190 -102b1 2 681 190 -102b3 15 650 190 -102c8 13 652 190 -102db 5 653 190 -102e0 1e 601 190 -102fe 2 603 190 -10300 5 606 190 -10305 2 607 190 -10307 2 608 190 -10309 25 615 190 -1032e 2 617 190 -10330 1 627 190 -10331 2 642 190 -10333 e 579 190 -10341 7 581 190 -10348 5 582 190 -1034d 2d 562 190 -1037a 6 564 190 -10380 5 565 190 -10385 e 687 190 -10393 3 689 190 -10396 5 690 190 -1039b 15 558 190 -103b0 2 834 190 -103b2 5 814 190 -103b7 19 817 190 -103d0 5 819 190 -103d5 d 795 190 -103e2 b 798 190 -103ed 5 799 190 -103f2 11 762 190 -10403 5 764 190 -10408 1 774 190 -10409 5 776 190 -1040e 16 729 190 -10424 6 731 190 -1042a 5 732 190 -1042f 16 704 190 -10445 3 705 190 -10448 b 706 190 -10453 2 707 190 -10455 e 708 190 -10463 6 839 190 -10469 2 840 190 -FUNC 1046b 45d 18 _store_winword -1046b 10 1035 190 -1047b 5 1043 190 -10480 a 1053 190 -1048a 3 1043 190 -1048d 6 1053 190 -10493 2 1054 190 -10495 6 1049 190 -1049b 2 1050 190 -1049d 6 1046 190 -104a3 10 1057 190 -104b3 4 1066 190 -104b7 8 1067 190 -104bf 6 1069 190 -104c5 d 1075 190 -104d2 a 1076 190 -104dc 8 1077 190 -104e4 4 1078 190 -104e8 2a 1085 190 -10512 b 1087 190 -1051d 31 1092 190 -1054e 7 1093 190 -10555 3 1097 190 -10558 13 1100 190 -1056b 10 1101 190 -1057b b 1102 190 -10586 b 1103 190 -10591 9 1106 190 -1059a 3 1291 190 -1059d 12 1292 190 -105af 11 1114 190 -105c0 5 1117 190 -105c5 b 1120 190 -105d0 37 1125 190 -10607 14 1274 190 -1061b c 1277 190 -10627 8 1283 190 -1062f 4 1284 190 -10633 9 1286 190 -1063c c 1287 190 -10648 5 1277 190 -1064d e 1128 190 -1065b 7 1133 190 -10662 7 1132 190 -10669 7 1130 190 -10670 2 1131 190 -10672 5 1134 190 -10677 a 1156 190 -10681 7 1158 190 -10688 2 1159 190 -1068a 5 1160 190 -1068f 11 1175 190 -106a0 5 1176 190 -106a5 11 1177 190 -106b6 6 1178 190 -106bc 2 1179 190 -106be 5 1180 190 -106c3 b 1225 190 -106ce 13 1226 190 -106e1 4 1228 190 -106e5 1a 1233 190 -106ff 9 1236 190 -10708 8 1242 190 -10710 4 1243 190 -10714 9 1246 190 -1071d 8 1247 190 -10725 5 1277 190 -1072a 1 1230 190 -1072b 5 1250 190 -10730 12 1136 190 -10742 7 1141 190 -10749 7 1140 190 -10750 7 1138 190 -10757 2 1139 190 -10759 5 1142 190 -1075e 29 1125 190 -10787 e 1144 190 -10795 7 1147 190 -1079c 2 1146 190 -1079e 5 1148 190 -107a3 7 1182 190 -107aa b 1183 190 -107b5 2 1184 190 -107b7 6 1185 190 -107bd 12 1187 190 -107cf 17 1188 190 -107e6 c 1191 190 -107f2 8 1197 190 -107fa 4 1198 190 -107fe 8 1201 190 -10806 2 1202 190 -10808 5 1203 190 -1080d 9 1204 190 -10816 1a 1205 190 -10830 9 1207 190 -10839 8 1212 190 -10841 4 1213 190 -10845 9 1215 190 -1084e 8 1216 190 -10856 2 1220 190 -10858 d 1168 190 -10865 7 1170 190 -1086c 2 1171 190 -1086e 2 1172 190 -10870 d 1162 190 -1087d 7 1164 190 -10884 2 1165 190 -10886 2 1166 190 -10888 d 1150 190 -10895 7 1152 190 -1089c 2 1153 190 -1089e 1b 1268 190 -108b9 3 1272 190 -108bc 5 1273 190 -108c1 7 1194 190 -FUNC 108c8 1af 18 _Strftime_l -108c8 6 356 190 -108ce 4 361 190 -108d2 13 362 190 -108e5 33 364 190 -10918 33 365 190 -1094b d 368 190 -10958 10 375 190 -10968 e 385 190 -10976 a 387 190 -10980 1e 435 190 -1099e 4 438 190 -109a2 a 446 190 -109ac 5 447 190 -109b1 b 452 190 -109bc 3 453 190 -109bf 2 454 190 -109c1 7 400 190 -109c8 1 405 190 -109c9 2 408 190 -109cb 5 409 190 -109d0 1 411 190 -109d1 1 412 190 -109d2 1d 415 190 -109ef 1 428 190 -109f0 5 385 190 -109f5 5 464 190 -109fa 5 469 190 -109ff 13 470 190 -10a12 3 441 190 -10a15 f 478 190 -10a24 b 481 190 -10a2f 2 483 190 -10a31 b 402 190 -10a3c 2 403 190 -10a3e 5 421 190 -10a43 7 423 190 -10a4a 2 464 190 -10a4c 18 485 190 -10a64 11 488 190 -10a75 2 490 190 -FUNC 10a77 1e 14 _strftime_l -10a77 3 291 190 -10a7a 19 292 190 -10a93 2 293 190 -FUNC 10a95 1d 10 strftime -10a95 0 300 190 -10a95 1c 301 190 -10ab1 1 302 190 -FUNC 10ab2 1e 14 _Strftime -10ab2 3 343 190 -10ab5 19 345 190 -10ace 2 346 190 -FUNC 10ad0 26 0 localeconv -10ad0 0 69 1716 -10ad0 5 75 1716 -10ad5 1b 78 1716 -10af0 5 79 1716 -10af5 1 80 1716 -FUNC 10b00 46 8 strcspn -10b00 4 191 591 -10b04 2 198 591 -10b06 1 199 591 -10b07 1 200 591 -10b08 1 201 591 -10b09 1 202 591 -10b0a 1 203 591 -10b0b 1 204 591 -10b0c 1 205 591 -10b0d 1 206 591 -10b0e 6 212 591 -10b14 2 216 591 -10b16 2 217 591 -10b18 2 218 591 -10b1a 3 219 591 -10b1d 4 220 591 -10b21 2 221 591 -10b23 3 227 591 -10b26 6 229 591 -10b2c 3 234 591 -10b2f 2 236 591 -10b31 2 237 591 -10b33 2 238 591 -10b35 3 239 591 -10b38 4 240 591 -10b3c 2 245 591 -10b3e 2 255 591 -10b40 3 257 591 -10b43 3 259 591 -FUNC 10b46 60 c TranslateName -10b46 3 340 2263 -10b49 3 342 2263 -10b4c 3 343 2263 -10b4f b 346 2263 -10b5a a 348 2263 -10b64 14 349 2263 -10b78 6 351 2263 -10b7e a 352 2263 -10b88 2 353 2263 -10b8a 4 354 2263 -10b8e 2 355 2263 -10b90 3 356 2263 -10b93 7 346 2263 -10b9a a 359 2263 -10ba4 2 360 2263 -FUNC 10ba6 14 0 GetLcidFromDefault -10ba6 0 761 2263 -10ba6 7 762 2263 -10bad c 763 2263 -10bb9 1 764 2263 -FUNC 10bba 77 0 ProcessCodePage -10bba 13 784 2263 -10bcd 1a 787 2263 -10be7 11 795 2263 -10bf8 8 799 2263 -10c00 2 801 2263 -10c02 18 791 2263 -10c1a 3 793 2263 -10c1d 7 805 2263 -10c24 d 806 2263 -FUNC 10c31 1e 4 TestDefaultCountry -10c31 0 826 2263 -10c31 2 830 2263 -10c33 15 832 2263 -10c48 3 835 2263 -10c4b 1 836 2263 -10c4c 2 833 2263 -10c4e 1 836 2263 -FUNC 10c4f 32 0 LcidFromHexString -10c4f 1 893 2263 -10c50 2 895 2263 -10c52 2 897 2263 -10c54 9 899 2263 -10c5d 5 900 2263 -10c62 8 901 2263 -10c6a 3 902 2263 -10c6d 10 903 2263 -10c7d 3 906 2263 -10c80 1 907 2263 -FUNC 10c81 1b 0 GetPrimaryLen -10c81 0 926 2263 -10c81 2 927 2263 -10c83 3 930 2263 -10c86 12 931 2263 -10c98 1 933 2263 -10c99 2 935 2263 -10c9b 1 938 2263 -FUNC 10c9c 96 4 CountryEnumProc -10c9c 15 717 2263 -10cb1 7 718 2263 -10cb8 f 719 2263 -10cc7 23 725 2263 -10cea 3 728 2263 -10ced 3 729 2263 -10cf0 12 731 2263 -10d02 b 734 2263 -10d0d a 738 2263 -10d17 b 741 2263 -10d22 10 742 2263 -FUNC 10d32 72 8 TestDefaultLanguage -10d32 11 858 2263 -10d43 22 864 2263 -10d65 4 865 2263 -10d69 d 867 2263 -10d76 1c 871 2263 -10d92 2 872 2263 -10d94 3 874 2263 -10d97 d 875 2263 -FUNC 10da4 1d0 4 LangCountryEnumProc -10da4 16 435 2263 -10dba 7 436 2263 -10dc1 d 437 2263 -10dce 27 444 2263 -10df5 4 447 2263 -10df9 8 448 2263 -10e01 16 450 2263 -10e17 1d 456 2263 -10e34 2 460 2263 -10e36 11 462 2263 -10e47 7 467 2263 -10e4e 5 468 2263 -10e53 6 472 2263 -10e59 1a 475 2263 -10e73 14 482 2263 -10e87 3 483 2263 -10e8a a 487 2263 -10e94 b 490 2263 -10e9f 6 493 2263 -10ea5 3 494 2263 -10ea8 12 501 2263 -10eba 1d 506 2263 -10ed7 6 510 2263 -10edd c 513 2263 -10ee9 16 518 2263 -10eff 8 522 2263 -10f07 14 528 2263 -10f1b 2 531 2263 -10f1d 2 540 2263 -10f1f 1b 550 2263 -10f3a f 553 2263 -10f49 7 557 2263 -10f50 5 558 2263 -10f55 3 559 2263 -10f58 b 566 2263 -10f63 11 567 2263 -FUNC 10f74 bf 4 LanguageEnumProc -10f74 15 624 2263 -10f89 7 625 2263 -10f90 f 626 2263 -10f9f 23 632 2263 -10fc2 3 635 2263 -10fc5 3 636 2263 -10fc8 11 639 2263 -10fd9 7 643 2263 -10fe0 2 650 2263 -10fe2 1d 651 2263 -10fff f 654 2263 -1100e a 658 2263 -11018 b 662 2263 -11023 10 663 2263 -FUNC 11033 2c 0 GetLcidFromCountry -11033 0 686 2263 -11033 10 687 2263 -11043 11 689 2263 -11054 6 693 2263 -1105a 4 694 2263 -1105e 1 695 2263 -FUNC 1105f 65 0 GetLcidFromLangCountry -1105f 0 386 2263 -1105f 7 388 2263 -11066 1a 389 2263 -11080 5 390 2263 -11085 17 392 2263 -1109c 10 394 2263 -110ac 13 402 2263 -110bf 4 403 2263 -110c3 1 404 2263 -FUNC 110c4 3c 0 GetLcidFromLanguage -110c4 0 591 2263 -110c4 13 593 2263 -110d7 e 594 2263 -110e5 10 596 2263 -110f5 6 600 2263 -110fb 4 601 2263 -110ff 1 602 2263 -FUNC 11100 1e3 c __get_qualified_locale -11100 4 205 2263 -11104 5 208 2263 -11109 12 212 2263 -1111b 7 215 2263 -11122 5 217 2263 -11127 3 222 2263 -1112a f 223 2263 -11139 10 226 2263 -11149 d 230 2263 -11156 a 232 2263 -11160 5 235 2263 -11165 2 237 2263 -11167 5 240 2263 -1116c 5 243 2263 -11171 14 248 2263 -11185 a 250 2263 -1118f 5 252 2263 -11194 2 254 2263 -11196 5 256 2263 -1119b 2 261 2263 -1119d a 263 2263 -111a7 28 266 2263 -111cf 2 268 2263 -111d1 13 271 2263 -111e4 3 277 2263 -111e7 6 278 2263 -111ed 17 281 2263 -11204 32 285 2263 -11236 d 289 2263 -11243 6 290 2263 -11249 8 293 2263 -11251 7 295 2263 -11258 8 296 2263 -11260 4 297 2263 -11264 8 301 2263 -1126c d 305 2263 -11279 23 306 2263 -1129c 2 307 2263 -1129e f 308 2263 -112ad 2 309 2263 -112af 12 311 2263 -112c1 2 312 2263 -112c3 14 313 2263 -112d7 5 315 2263 -112dc 6 286 2263 -112e2 1 316 2263 -FUNC 112e3 12 0 cmpResult -FUNC 112f5 18 0 cmpBYTE -FUNC 1130d 40 0 cmpWORD -FUNC 1134d 78 0 cmpDWORD -FUNC 113c5 1490 0 unaligned_memcmp -FUNC 12855 1680 c memcmp -FUNC 13ed5 be c strncmp -13ed5 4 42 543 -13ed9 5 43 543 -13ede 7 45 543 -13ee5 7 46 543 -13eec 6 48 543 -13ef2 d 51 543 -13eff 11 56 543 -13f10 c 61 543 -13f1c c 66 543 -13f28 15 71 543 -13f3d 2 81 543 -13f3f a 73 543 -13f49 a 68 543 -13f53 a 63 543 -13f5d 10 58 543 -13f6d 2 79 543 -13f6f a 81 543 -13f79 1 85 543 -13f7a 4 86 543 -13f7e 5 79 543 -13f83 4 89 543 -13f87 2 90 543 -13f89 a 83 543 -FUNC 13fa0 40 8 strpbrk -13fa0 4 191 536 -13fa4 2 198 536 -13fa6 1 199 536 -13fa7 1 200 536 -13fa8 1 201 536 -13fa9 1 202 536 -13faa 1 203 536 -13fab 1 204 536 -13fac 1 205 536 -13fad 1 206 536 -13fae 6 212 536 -13fb4 2 216 536 -13fb6 2 217 536 -13fb8 2 218 536 -13fba 3 219 536 -13fbd 4 220 536 -13fc1 2 221 536 -13fc3 5 227 536 -13fc8 2 236 536 -13fca 2 237 536 -13fcc 2 238 536 -13fce 3 239 536 -13fd1 4 240 536 -13fd5 2 247 536 -13fd7 3 248 536 -13fda 3 257 536 -13fdd 3 259 536 -FUNC 13fe0 104 0 __report_gsfailure -13fe0 9 140 2145 -13fe9 5 170 2145 -13fee 6 171 2145 -13ff4 6 172 2145 -13ffa 6 173 2145 -14000 6 174 2145 -14006 6 175 2145 -1400c 7 176 2145 -14013 7 177 2145 -1401a 7 178 2145 -14021 7 179 2145 -14028 7 180 2145 -1402f 7 181 2145 -14036 1 182 2145 -14037 6 183 2145 -1403d 3 190 2145 -14040 5 191 2145 -14045 3 192 2145 -14048 5 193 2145 -1404d 3 194 2145 -14050 5 195 2145 -14055 6 201 2145 -1405b a 204 2145 -14065 a 206 2145 -1406f a 285 2145 -14079 a 286 2145 -14083 b 293 2145 -1408e b 294 2145 -14099 b 297 2145 -140a4 8 298 2145 -140ac 8 302 2145 -140b4 b 304 2145 -140bf 9 313 2145 -140c8 8 315 2145 -140d0 12 319 2145 -140e2 2 320 2145 -FUNC 140e4 20 0 _global_unwind2 -FUNC 14104 45 0 __unwind_handler -FUNC 14149 84 0 _local_unwind2 -FUNC 141cd 23 0 _abnormal_termination -FUNC 141f0 9 0 _NLG_Notify1 -FUNC 141f9 1f 0 _NLG_Notify -PUBLIC 14210 0 _NLG_Dispatch -FUNC 14218 3 0 _NLG_Call -PUBLIC 1421a 0 _NLG_Return2 -FUNC 1421b 57 8 fastzero_I -FUNC 14272 8f c _VEC_memzero -FUNC 14301 22b 14 strtoxl -14301 8 80 4034 -14309 b 86 4034 -14314 3 89 4034 -14317 b 92 4034 -14322 30 94 4034 -14352 11 95 4034 -14363 c 100 4034 -1436f 34 101 4034 -143a3 5 102 4034 -143a8 5 104 4034 -143ad 4 105 4034 -143b1 2 106 4034 -143b3 5 108 4034 -143b8 3 109 4034 -143bb 1d 111 4034 -143d8 4 118 4034 -143dc 5 121 4034 -143e1 9 122 4034 -143ea a 123 4034 -143f4 9 126 4034 -143fd 7 124 4034 -14404 2 129 4034 -14406 5 140 4034 -1440b f 142 4034 -1441a 1 143 4034 -1441b 9 144 4034 -14424 8 149 4034 -1442c c 154 4034 -14438 8 155 4034 -14440 7 156 4034 -14447 13 157 4034 -1445a 5 160 4034 -1445f 4 164 4034 -14463 b 171 4034 -1446e 4 177 4034 -14472 6 178 4034 -14478 8 190 4034 -14480 6 193 4034 -14486 3 195 4034 -14489 4 196 4034 -1448d 2 198 4034 -1448f c 173 4034 -1449b 3 185 4034 -1449e 2 186 4034 -144a0 24 201 4034 -144c4 5 204 4034 -144c9 c 205 4034 -144d5 6 206 4034 -144db 10 207 4034 -144eb 7 213 4034 -144f2 2 215 4034 -144f4 6 217 4034 -144fa 3 219 4034 -144fd 12 221 4034 -1450f 7 113 4034 -14516 2 115 4034 -14518 12 116 4034 -1452a 2 222 4034 -FUNC 1452c 29 c strtol -1452c 3 229 4034 -1452f 8 230 4034 -14537 13 232 4034 -1454a 9 236 4034 -14553 2 238 4034 -FUNC 14555 1b 10 _strtol_l -14555 0 246 4034 -14555 1a 247 4034 -1456f 1 248 4034 -FUNC 14570 2a c strtoul -14570 3 255 4034 -14573 7 256 4034 -1457a 14 258 4034 -1458e a 262 4034 -14598 2 264 4034 -FUNC 1459a 1b 10 _strtoul_l -1459a 0 272 4034 -1459a 1a 273 4034 -145b4 1 274 4034 -FUNC 145b5 294 14 strtoxq -145b5 8 80 3989 -145bd b 86 3989 -145c8 3 89 3989 -145cb b 92 3989 -145d6 31 94 3989 -14607 12 95 3989 -14619 c 100 3989 -14625 37 102 3989 -1465c 2 103 3989 -1465e 9 105 3989 -14667 4 106 3989 -1466b 2 107 3989 -1466d 6 109 3989 -14673 9 110 3989 -1467c 8 112 3989 -14684 6 115 3989 -1468a 9 116 3989 -14693 a 117 3989 -1469d 9 120 3989 -146a6 3 118 3989 -146a9 5 123 3989 -146ae 10 125 3989 -146be 1 126 3989 -146bf 9 127 3989 -146c8 26 132 3989 -146ee e 137 3989 -146fc 8 138 3989 -14704 6 139 3989 -1470a 11 140 3989 -1471b 5 143 3989 -14720 31 154 3989 -14751 4 160 3989 -14755 6 161 3989 -1475b a 173 3989 -14765 7 176 3989 -1476c 6 178 3989 -14772 6 179 3989 -14778 5 181 3989 -1477d 19 156 3989 -14796 b 168 3989 -147a1 5 169 3989 -147a6 35 184 3989 -147db 5 187 3989 -147e0 c 188 3989 -147ec a 189 3989 -147f6 6 190 3989 -147fc 7 191 3989 -14803 2 192 3989 -14805 7 193 3989 -1480c 8 195 3989 -14814 5 197 3989 -14819 6 199 3989 -1481f 13 201 3989 -14832 15 203 3989 -14847 2 204 3989 -FUNC 14849 29 c _strtoi64 -14849 3 211 3989 -1484c 8 212 3989 -14854 13 214 3989 -14867 9 218 3989 -14870 2 220 3989 -FUNC 14872 1b 10 _strtoi64_l -14872 0 227 3989 -14872 1a 228 3989 -1488c 1 229 3989 -FUNC 1488d 2a c _strtoui64 -1488d 3 236 3989 -14890 7 237 3989 -14897 14 239 3989 -148ab a 243 3989 -148b5 2 245 3989 -FUNC 148b7 1b 10 _strtoui64_l -148b7 0 253 3989 -148b7 1a 254 3989 -148d1 1 255 3989 -FUNC 148d2 b6 c _isctype_l -148d2 7 114 4078 -148d9 b 118 4078 -148e4 d 121 4078 -148f1 f 122 4078 -14900 1f 124 4078 -1491f 3 126 4078 -14922 d 129 4078 -1492f 2 130 4078 -14931 a 133 4078 -1493b 26 144 4078 -14961 10 146 4078 -14971 15 149 4078 -14986 2 150 4078 -FUNC 14988 2f 8 _isctype -14988 0 156 4078 -14988 9 157 4078 -14991 12 159 4078 -149a3 1 165 4078 -149a4 12 163 4078 -149b6 1 165 4078 -FUNC 149c0 2c 0 _alloca_probe_16 -149c0 0 44 1046 -149c0 1 46 1046 -149c1 4 47 1046 -149c5 2 48 1046 -149c7 3 49 1046 -149ca 2 50 1046 -149cc 2 51 1046 -149ce 2 52 1046 -149d0 1 53 1046 -149d1 5 54 1046 -149d6 1 59 1046 -149d7 4 60 1046 -149db 2 61 1046 -149dd 3 62 1046 -149e0 2 63 1046 -149e2 2 64 1046 -149e4 2 65 1046 -149e6 1 66 1046 -149e7 5 67 1046 -PUBLIC 149d6 0 _alloca_probe_8 -FUNC 149ec 47 4 __ansicp -149ec 10 39 1348 -149fc 1c 44 1348 -14a18 3 45 1348 -14a1b 2 46 1348 -14a1d a 47 1348 -14a27 c 49 1348 -FUNC 14a33 1b2 18 __convertcp -14a33 16 79 1348 -14a49 10 83 1348 -14a59 18 85 1348 -14a71 17 90 1348 -14a88 13 92 1348 -14a9b 6 93 1348 -14aa1 d 99 1348 -14aae 2 101 1348 -14ab0 c 103 1348 -14abc 2a 115 1348 -14ae6 15 111 1348 -14afb 7 112 1348 -14b02 1c 115 1348 -14b1e 3 116 1348 -14b21 2 117 1348 -14b23 10 119 1348 -14b33 15 127 1348 -14b48 7 129 1348 -14b4f 18 138 1348 -14b67 3 139 1348 -14b6a 2 140 1348 -14b6c 1f 149 1348 -14b8b 11 151 1348 -14b9c 12 160 1348 -14bae 9 162 1348 -14bb7 3 163 1348 -14bba 2 164 1348 -14bbc 6 165 1348 -14bc2 5 166 1348 -14bc7 9 174 1348 -14bd0 3 177 1348 -14bd3 12 178 1348 -FUNC 14be5 50 0 has_osfxsr_set -FUNC 14c35 60 0 _get_sse2_info -FUNC 14c95 d 0 __sse2_available_init -FUNC 14ca2 34 4 _get_daylight -14ca2 0 35 161 -14ca2 27 36 161 -14cc9 1 41 161 -14cca 8 39 161 -14cd2 3 40 161 -14cd5 1 41 161 -FUNC 14cd6 34 4 _get_dstbias -14cd6 0 44 161 -14cd6 27 45 161 -14cfd 1 50 161 -14cfe 8 48 161 -14d06 3 49 161 -14d09 1 50 161 -FUNC 14d0a 34 4 _get_timezone -14d0a 0 53 161 -14d0a 27 54 161 -14d31 1 59 161 -14d32 8 57 161 -14d3a 3 58 161 -14d3d 1 59 161 -FUNC 14d3e a2 10 _get_tzname -14d3e 3 62 161 -14d41 10 63 161 -14d51 4 64 161 -14d55 3 66 161 -14d58 7 68 161 -14d5f 27 69 161 -14d86 20 63 161 -14da6 f 72 161 -14db5 8 73 161 -14dbd 4 76 161 -14dc1 5 78 161 -14dc6 5 80 161 -14dcb 13 82 161 -14dde 2 83 161 -FUNC 14de0 6 0 __daylight -14de0 0 118 161 -14de0 5 119 161 -14de5 1 120 161 -FUNC 14de6 6 0 __dstbias -14de6 0 123 161 -14de6 5 124 161 -14deb 1 125 161 -FUNC 14dec 6 0 __timezone -14dec 0 128 161 -14dec 5 129 161 -14df1 1 130 161 -FUNC 14df2 6 0 __tzname -14df2 0 133 161 -14df2 5 134 161 -14df7 1 135 161 -FUNC 14df8 c 4 _set_daylight -14df8 c 189 92 -FUNC 14e04 c 4 _set_dstbias -14e04 c 190 92 -FUNC 14e10 c 4 _set_timezone -14e10 c 191 92 -FUNC 14e1c 349 0 _tzset_nolock -14e1c c 124 114 -14e28 5 127 114 -14e2d 3 129 114 -14e30 3 130 114 -14e33 3 131 114 -14e36 3 132 114 -14e39 3 133 114 -14e3c 8 135 114 -14e44 3 136 114 -14e47 8 139 114 -14e4f 1b 142 114 -14e6a 1b 143 114 -14e85 1b 144 114 -14ea0 8 149 114 -14ea8 6 154 114 -14eae f 160 114 -14ebd 18 165 114 -14ed5 14 260 114 -14ee9 b 268 114 -14ef4 4 274 114 -14ef8 7 275 114 -14eff 16 277 114 -14f15 6 281 114 -14f1b 32 283 114 -14f4d 9 174 114 -14f56 7 175 114 -14f5d 6 176 114 -14f63 13 179 114 -14f76 9 183 114 -14f7f b 188 114 -14f8a 9 190 114 -14f93 e 191 114 -14fa1 12 199 114 -14fb3 3 201 114 -14fb6 c 203 114 -14fc2 2 205 114 -14fc4 3 206 114 -14fc7 3 214 114 -14fca 27 234 114 -14ff1 8 235 114 -14ff9 2 236 114 -14ffb 7 237 114 -15002 23 247 114 -15025 9 248 114 -1502e 2 249 114 -15030 8 250 114 -15038 7 256 114 -1503f a 288 114 -15049 a 289 114 -15053 a 290 114 -1505d c 292 114 -15069 9 296 114 -15072 23 301 114 -15095 8 310 114 -1509d 7 311 114 -150a4 1 312 114 -150a5 10 318 114 -150b5 11 320 114 -150c6 5 292 114 -150cb 9 293 114 -150d4 5 325 114 -150d9 e 329 114 -150e7 d 330 114 -150f4 5 335 114 -150f9 b 339 114 -15104 d 340 114 -15111 5 344 114 -15116 3 345 114 -15119 6 350 114 -1511f 4 351 114 -15123 21 352 114 -15144 2 354 114 -15146 5 355 114 -1514b a 357 114 -15155 a 358 114 -1515f 6 360 114 -FUNC 15165 1f5 24 cvtdate -15165 6 409 114 -1516b 4 412 114 -1516f c 414 114 -1517b 52 424 114 -151cd 4c 430 114 -15219 14 436 114 -1522d 2 437 114 -1522f 2 438 114 -15231 46 447 114 -15277 3 449 114 -1527a 2 452 114 -1527c 3c 457 114 -152b8 3 459 114 -152bb 27 467 114 -152e2 6 472 114 -152e8 2 474 114 -152ea 29 485 114 -15313 11 486 114 -15324 a 487 114 -1532e 8 488 114 -15336 d 490 114 -15343 6 491 114 -15349 6 492 114 -1534f 9 499 114 -15358 2 503 114 -FUNC 1535a 1ae 0 _isindst_nolock -1535a 5 554 114 -1535f 20 558 114 -1537f 5 560 114 -15384 7 561 114 -1538b 1b 568 114 -153a6 c 569 114 -153b2 7 573 114 -153b9 34 584 114 -153ed 2 585 114 -153ef 19 596 114 -15408 40 611 114 -15448 2 612 114 -1544a 1e 623 114 -15468 2 626 114 -1546a 14 641 114 -1547e 1a 653 114 -15498 d 660 114 -154a5 d 664 114 -154b2 8 666 114 -154ba 4 674 114 -154be 2 697 114 -154c0 8 673 114 -154c8 8 675 114 -154d0 4 676 114 -154d4 14 679 114 -154e8 4 681 114 -154ec b 682 114 -154f7 2 685 114 -154f9 d 691 114 -15506 2 694 114 -FUNC 15508 4f 0 __tzset -15508 c 85 114 -15514 a 88 114 -1551e 8 90 114 -15526 3 91 114 -15529 8 93 114 -15531 5 94 114 -15536 6 95 114 -1553c c 98 114 -15548 6 103 114 -1554e 9 99 114 -FUNC 15557 38 0 _tzset -15557 c 109 114 -15563 8 110 114 -1556b 4 111 114 -1556f 5 113 114 -15574 c 115 114 -15580 6 118 114 -15586 9 116 114 -FUNC 1558f 41 4 _isindst -1558f c 538 114 -1559b 8 541 114 -155a3 4 542 114 -155a7 b 543 114 -155b2 c 544 114 -155be 3 548 114 -155c1 6 549 114 -155c7 9 545 114 -FUNC 155d0 35 8 __ascii_stricmp -155d0 a 75 367 -155da c 80 367 -155e6 3 81 367 -155e9 c 82 367 -155f5 3 83 367 -155f8 9 85 367 -15601 3 87 367 -15604 1 88 367 -FUNC 15605 d3 c _stricmp_l -15605 7 47 367 -1560c b 49 367 -15617 36 52 367 -1564d 32 53 367 -1567f 8 55 367 -15687 e 57 367 -15695 15 63 367 -156aa 11 64 367 -156bb 8 65 367 -156c3 13 68 367 -156d6 2 69 367 -FUNC 156d8 50 8 _stricmp -156d8 4 94 367 -156dc a 95 367 -156e6 24 98 367 -1570a 6 99 367 -15710 1 107 367 -15711 5 101 367 -15716 10 105 367 -15726 2 107 367 -FUNC 15728 36 8 _isleadbyte_l -15728 6 55 4169 -1572e b 56 4169 -15739 23 57 4169 -1575c 2 58 4169 -FUNC 1575e e 4 isleadbyte -1575e 0 63 4169 -1575e d 64 4169 -1576b 1 65 4169 -FUNC 1576c 16 8 _iswalpha_l -1576c 0 71 4169 -1576c 15 72 4169 -15781 1 73 4169 -FUNC 15782 11 4 iswalpha -15782 0 78 4169 -15782 10 79 4169 -15792 1 80 4169 -FUNC 15793 13 8 _iswupper_l -15793 0 86 4169 -15793 12 87 4169 -157a5 1 88 4169 -FUNC 157a6 e 4 iswupper -157a6 0 93 4169 -157a6 d 94 4169 -157b3 1 95 4169 -FUNC 157b4 13 8 _iswlower_l -157b4 0 101 4169 -157b4 12 102 4169 -157c6 1 103 4169 -FUNC 157c7 e 4 iswlower -157c7 0 108 4169 -157c7 d 109 4169 -157d4 1 110 4169 -FUNC 157d5 13 8 _iswdigit_l -157d5 0 116 4169 -157d5 12 117 4169 -157e7 1 118 4169 -FUNC 157e8 e 4 iswdigit -157e8 0 123 4169 -157e8 d 124 4169 -157f5 1 125 4169 -FUNC 157f6 16 8 _iswxdigit_l -157f6 0 131 4169 -157f6 15 132 4169 -1580b 1 133 4169 -FUNC 1580c 11 4 iswxdigit -1580c 0 138 4169 -1580c 10 139 4169 -1581c 1 140 4169 -FUNC 1581d 13 8 _iswspace_l -1581d 0 146 4169 -1581d 12 147 4169 -1582f 1 148 4169 -FUNC 15830 e 4 iswspace -15830 0 153 4169 -15830 d 154 4169 -1583d 1 155 4169 -FUNC 1583e 13 8 _iswpunct_l -1583e 0 161 4169 -1583e 12 162 4169 -15850 1 163 4169 -FUNC 15851 e 4 iswpunct -15851 0 168 4169 -15851 d 169 4169 -1585e 1 170 4169 -FUNC 1585f 16 8 _iswalnum_l -1585f 0 176 4169 -1585f 15 177 4169 -15874 1 178 4169 -FUNC 15875 11 4 iswalnum -15875 0 183 4169 -15875 10 184 4169 -15885 1 185 4169 -FUNC 15886 16 8 _iswprint_l -15886 0 191 4169 -15886 15 192 4169 -1589b 1 193 4169 -FUNC 1589c 11 4 iswprint -1589c 0 198 4169 -1589c 10 199 4169 -158ac 1 200 4169 -FUNC 158ad 16 8 _iswgraph_l -158ad 0 206 4169 -158ad 15 207 4169 -158c2 1 208 4169 -FUNC 158c3 11 4 iswgraph -158c3 0 213 4169 -158c3 10 214 4169 -158d3 1 215 4169 -FUNC 158d4 13 8 _iswcntrl_l -158d4 0 221 4169 -158d4 12 222 4169 -158e6 1 223 4169 -FUNC 158e7 e 4 iswcntrl -158e7 0 228 4169 -158e7 d 229 4169 -158f4 1 230 4169 -FUNC 158f5 c 4 iswascii -158f5 0 235 4169 -158f5 b 236 4169 -15900 1 237 4169 -FUNC 15901 26 8 _iswcsym_l -15901 0 243 4169 -15901 21 244 4169 -15922 1 245 4169 -15923 3 244 4169 -15926 1 245 4169 -FUNC 15927 21 4 __iswcsym -15927 0 250 4169 -15927 1c 251 4169 -15943 1 252 4169 -15944 3 251 4169 -15947 1 252 4169 -FUNC 15948 26 8 _iswcsymf_l -15948 0 258 4169 -15948 21 259 4169 -15969 1 260 4169 -1596a 3 259 4169 -1596d 1 260 4169 -FUNC 1596e 21 4 __iswcsymf -1596e 0 265 4169 -1596e 1c 266 4169 -1598a 1 267 4169 -1598b 3 266 4169 -1598e 1 267 4169 -FUNC 1598f f0 10 _strnicmp_l -1598f 7 51 324 -15996 d 54 324 -159a3 b 56 324 -159ae 33 59 324 -159e1 7 60 324 -159e8 32 61 324 -15a1a 8 63 324 -15a22 1d 65 324 -15a3f 15 71 324 -15a54 11 72 324 -15a65 d 74 324 -15a72 6 76 324 -15a78 5 79 324 -15a7d 2 80 324 -FUNC 15a7f 5c c _strnicmp -15a7f 4 125 324 -15a83 a 127 324 -15a8d 24 130 324 -15ab1 5 131 324 -15ab6 a 132 324 -15ac0 1 141 324 -15ac1 5 134 324 -15ac6 13 138 324 -15ad9 2 141 324 -FUNC 15adb db c xtoa_s -15adb 8 93 4260 -15ae3 24 102 4260 -15b07 24 103 4260 -15b2b 19 105 4260 -15b44 b 106 4260 -15b4f a 112 4260 -15b59 6 114 4260 -15b5f 7 116 4260 -15b66 2 118 4260 -15b68 2 121 4260 -15b6a 5 124 4260 -15b6f 5 128 4260 -15b74 3 129 4260 -15b77 2 130 4260 -15b79 6 131 4260 -15b7f 3 135 4260 -15b82 e 136 4260 -15b90 8 139 4260 -15b98 2 141 4260 -15b9a 2 142 4260 -15b9c 3 148 4260 -15b9f 6 152 4260 -15ba5 3 154 4260 -15ba8 1 155 4260 -15ba9 4 156 4260 -15bad 5 158 4260 -15bb2 4 160 4260 -FUNC 15bb6 28 10 _itoa_s -15bb6 3 172 4260 -15bb9 d 175 4260 -15bc6 4 176 4260 -15bca 2 177 4260 -15bcc 10 178 4260 -15bdc 2 181 4260 -FUNC 15bde 25 10 _ltoa_s -15bde 3 189 4260 -15be1 20 190 4260 -15c01 2 191 4260 -FUNC 15c03 18 10 _ultoa_s -15c03 0 199 4260 -15c03 17 200 4260 -15c1a 1 201 4260 -FUNC 15c1b f6 14 x64toa_s -15c1b 7 309 4260 -15c22 25 318 4260 -15c47 5 319 4260 -15c4c 19 321 4260 -15c65 b 322 4260 -15c70 3 327 4260 -15c73 20 333 4260 -15c93 3 336 4260 -15c96 1e 352 4260 -15cb4 3 344 4260 -15cb7 2 345 4260 -15cb9 5 346 4260 -15cbe 5 351 4260 -15cc3 13 352 4260 -15cd6 5 355 4260 -15cdb 3 357 4260 -15cde 13 358 4260 -15cf1 4 364 4260 -15cf5 9 368 4260 -15cfe 3 370 4260 -15d01 1 371 4260 -15d02 7 372 4260 -15d09 4 375 4260 -15d0d 4 377 4260 -FUNC 15d11 33 14 _i64toa_s -15d11 3 390 4260 -15d14 2e 391 4260 -15d42 2 392 4260 -FUNC 15d44 1d 14 _ui64toa_s -15d44 4 400 4260 -15d48 17 401 4260 -15d5f 2 402 4260 -FUNC 15d70 2b 0 _chkstk -15d70 0 65 1048 -15d70 1 69 1048 -15d71 4 73 1048 -15d75 2 74 1048 -15d77 2 79 1048 -15d79 2 80 1048 -15d7b 2 81 1048 -15d7d 2 83 1048 -15d7f 5 84 1048 -15d84 2 87 1048 -15d86 2 88 1048 -15d88 2 89 1048 -15d8a 1 90 1048 -15d8b 1 91 1048 -15d8c 2 92 1048 -15d8e 3 93 1048 -15d91 1 94 1048 -15d92 5 98 1048 -15d97 2 99 1048 -15d99 2 100 1048 -FUNC 15d9b 81 4 _getenv_helper_nolock -15d9b 0 95 2318 -15d9b 10 103 2318 -15dab 3 104 2318 -15dae 1 169 2318 -15daf e 128 2318 -15dbd 7 131 2318 -15dc4 2 132 2318 -15dc6 6 135 2318 -15dcc c 140 2318 -15dd8 9 142 2318 -15de1 2 150 2318 -15de3 22 154 2318 -15e05 3 164 2318 -15e08 6 150 2318 -15e0e 5 168 2318 -15e13 9 169 2318 -FUNC 15e1c 93 c _getenv_s_helper -15e1c 7 220 2318 -15e23 21 224 2318 -15e44 15 226 2318 -15e59 4 227 2318 -15e5d 3 229 2318 -15e60 a 233 2318 -15e6a 3 234 2318 -15e6d 2 236 2318 -15e6f 7 239 2318 -15e76 6 240 2318 -15e7c 2 243 2318 -15e7e 5 246 2318 -15e83 5 251 2318 -15e88 20 254 2318 -15ea8 5 256 2318 -15ead 2 257 2318 -FUNC 15eaf a2 8 _dupenv_s_helper -15eaf 6 339 2318 -15eb5 21 344 2318 -15ed6 9 346 2318 -15edf 2 348 2318 -15ee1 5 350 2318 -15ee6 8 352 2318 -15eee 6 353 2318 -15ef4 2 355 2318 -15ef6 9 358 2318 -15eff b 362 2318 -15f0a 6 364 2318 -15f10 b 366 2318 -15f1b 9 367 2318 -15f24 1e 370 2318 -15f42 7 371 2318 -15f49 2 373 2318 -15f4b 4 375 2318 -15f4f 2 376 2318 -FUNC 15f51 83 4 getenv -15f51 c 75 2318 -15f5d 2a 78 2318 -15f87 18 79 2318 -15f9f 8 81 2318 -15fa7 3 82 2318 -15faa c 83 2318 -15fb6 c 85 2318 -15fc2 3 89 2318 -15fc5 6 90 2318 -15fcb 9 86 2318 -FUNC 15fd4 d8 10 getenv_s -15fd4 c 198 2318 -15fe0 8 201 2318 -15fe8 5 202 2318 -15fed a1 203 2318 -1608e c 205 2318 -1609a 3 209 2318 -1609d 6 210 2318 -160a3 9 206 2318 -FUNC 160ac e6 c _dupenv_s -160ac c 303 2318 -160b8 8 306 2318 -160c0 5 307 2318 -160c5 af 311 2318 -16174 c 314 2318 -16180 3 318 2318 -16183 6 319 2318 -16189 9 315 2318 -FUNC 16192 8 4 _tolower -16192 0 48 3943 -16192 7 49 3943 -16199 1 50 3943 -FUNC 1619a 117 8 _tolower_l -1619a 8 70 3943 -161a2 b 74 3943 -161ad c 77 3943 -161b9 31 79 3943 -161ea f 80 3943 -161f9 14 82 3943 -1620d 2b 86 3943 -16238 3 88 3943 -1623b d 91 3943 -16248 2 92 3943 -1624a b 94 3943 -16255 a 97 3943 -1625f 25 110 3943 -16284 6 112 3943 -1628a 5 116 3943 -1628f 6 117 3943 -16295 1a 119 3943 -162af 2 120 3943 -FUNC 162b1 27 4 tolower -162b1 0 143 3943 -162b1 9 145 3943 -162ba f 147 3943 -162c9 1 153 3943 -162ca d 151 3943 -162d7 1 153 3943 -FUNC 162d8 82 c _iswctype_l -162d8 6 66 4124 -162de 8 69 4124 -162e6 6 70 4124 -162ec 8 71 4124 -162f4 18 72 4124 -1630c 2 73 4124 -1630e b 75 4124 -16319 25 85 4124 -1633e 3 86 4124 -16341 d 87 4124 -1634e a 89 4124 -16358 2 90 4124 -FUNC 1635a 6e 8 iswctype -1635a 4 96 4124 -1635e 8 97 4124 -16366 2 99 4124 -16368 2 122 4124 -1636a 8 101 4124 -16372 14 103 4124 -16386 2 122 4124 -16388 9 106 4124 -16391 25 117 4124 -163b6 10 121 4124 -163c6 2 122 4124 -FUNC 163c8 5 8 is_wctype -163c8 0 148 4124 -163c8 5 149 4124 -FUNC 163d0 61 c __ascii_strnicmp -163d0 6 69 538 -163d6 3 75 538 -163d9 2 76 538 -163db 2 77 538 -163dd 3 79 538 -163e0 3 80 538 -163e3 2 82 538 -163e5 2 83 538 -163e7 5 84 538 -163ec 2 89 538 -163ee 2 91 538 -163f0 2 93 538 -163f2 2 95 538 -163f4 2 97 538 -163f6 2 98 538 -163f8 3 100 538 -163fb 3 101 538 -163fe 2 103 538 -16400 2 104 538 -16402 2 106 538 -16404 2 107 538 -16406 2 109 538 -16408 2 112 538 -1640a 2 113 538 -1640c 2 115 538 -1640e 2 116 538 -16410 2 118 538 -16412 2 121 538 -16414 2 122 538 -16416 3 124 538 -16419 2 125 538 -1641b 2 128 538 -1641d 2 129 538 -1641f 2 130 538 -16421 5 133 538 -16426 2 134 538 -16428 2 135 538 -1642a 2 138 538 -1642c 5 140 538 -FUNC 16431 ec 10 _mbsnbicoll_l -16431 7 53 2932 -16438 b 55 2932 -16443 9 57 2932 -1644c 13 58 2932 -1645f 33 61 2932 -16492 6 62 2932 -16498 23 63 2932 -164bb 8 65 2932 -164c3 14 66 2932 -164d7 23 74 2932 -164fa 10 75 2932 -1650a 11 77 2932 -1651b 2 79 2932 -FUNC 1651d 17 c _mbsnbicoll -1651d 0 85 2932 -1651d 16 86 2932 -16533 1 87 2932 -FUNC 16534 95 0 __wtomb_environ -16534 7 43 1113 -1653b 3 44 1113 -1653e 9 45 1113 -16547 c 52 1113 -16553 12 57 1113 -16565 11 61 1113 -16576 12 65 1113 -16588 10 72 1113 -16598 5 74 1113 -1659d 9 76 1113 -165a6 3 77 1113 -165a9 9 81 1113 -165b2 5 84 1113 -165b7 2 85 1113 -165b9 5 58 1113 -165be 9 67 1113 -165c7 2 68 1113 -FUNC 165c9 1a 8 strnlen -165c9 0 38 531 -165c9 19 45 531 -165e2 1 49 531 -FUNC 165e3 224 1c __crtGetStringTypeW_stat -165e3 10 64 1242 -165f3 9 72 1242 -165fc 7 73 1242 -16603 14 75 1242 -16617 11 79 1242 -16628 8 80 1242 -16630 b 82 1242 -1663b f 83 1242 -1664a 4 88 1242 -1664e 13 90 1242 -16661 7 95 1242 -16668 2 199 1242 -1666a 8 119 1242 -16672 b 120 1242 -1667d 5 121 1242 -16682 b 122 1242 -1668d e 128 1242 -1669b 5 130 1242 -166a0 3 131 1242 -166a3 1d 142 1242 -166c0 6 143 1242 -166c6 40 146 1242 -16706 3 147 1242 -16709 6 148 1242 -1670f d 150 1242 -1671c 1a 160 1242 -16736 4d 164 1242 -16783 4 165 1242 -16787 5 170 1242 -1678c b 171 1242 -16797 3 174 1242 -1679a 23 178 1242 -167bd 12 186 1242 -167cf f 189 1242 -167de 4 187 1242 -167e2 7 191 1242 -167e9 8 194 1242 -167f1 4 196 1242 -167f5 12 200 1242 -FUNC 16807 3e 1c __crtGetStringTypeW -16807 6 211 1242 -1680d b 212 1242 -16818 2b 222 1242 -16843 2 223 1242 -FUNC 16845 1a 4 strncnt -16845 0 50 2759 -16845 6 51 2759 -1684b 6 54 2759 -16851 1 55 2759 -16852 5 54 2759 -16857 7 57 2759 -1685e 1 58 2759 -FUNC 1685f 389 18 __crtCompareStringA_stat -1685f 10 96 2759 -1686f 31 280 2759 -168a0 c 107 2759 -168ac b 109 2759 -168b7 a 110 2759 -168c1 5 118 2759 -168c6 1b 119 2759 -168e1 7 122 2759 -168e8 1f 123 2759 -16907 6 120 2759 -1690d 7 121 2759 -16914 3 124 2759 -16917 2 125 2759 -16919 17 130 2759 -16930 7 189 2759 -16937 8 201 2759 -1693f 8 202 2759 -16947 d 208 2759 -16954 5 214 2759 -16959 8 215 2759 -16961 2 218 2759 -16963 6 219 2759 -16969 5 222 2759 -1696e 4 223 2759 -16972 f 231 2759 -16981 2 232 2759 -16983 5 237 2759 -16988 4 239 2759 -1698c 2 240 2759 -1698e 10 244 2759 -1699e a 246 2759 -169a8 7 244 2759 -169af 2 262 2759 -169b1 5 253 2759 -169b6 6 255 2759 -169bc 8 256 2759 -169c4 10 260 2759 -169d4 11 262 2759 -169e5 7 260 2759 -169ec 2 262 2759 -169ee 1a 280 2759 -16a08 6 281 2759 -16a0e 4d 284 2759 -16a5b 4 285 2759 -16a5f 6 286 2759 -16a65 19 295 2759 -16a7e 17 305 2759 -16a95 46 309 2759 -16adb 4 310 2759 -16adf 13 320 2759 -16af2 17 326 2759 -16b09 7 328 2759 -16b10 8 331 2759 -16b18 9 333 2759 -16b21 4 132 2759 -16b25 5 137 2759 -16b2a 8 138 2759 -16b32 5 139 2759 -16b37 8 140 2759 -16b3f e 142 2759 -16b4d 6 143 2759 -16b53 5 148 2759 -16b58 19 155 2759 -16b71 2 156 2759 -16b73 6 157 2759 -16b79 19 163 2759 -16b92 4 164 2759 -16b96 7 166 2759 -16b9d 5 167 2759 -16ba2 3 169 2759 -16ba5 3 170 2759 -16ba8 18 178 2759 -16bc0 6 179 2759 -16bc6 6 181 2759 -16bcc 8 182 2759 -16bd4 2 184 2759 -16bd6 12 337 2759 -FUNC 16be8 40 20 __crtCompareStringA -16be8 6 349 2759 -16bee b 350 2759 -16bf9 2d 361 2759 -16c26 2 362 2759 -FUNC 16c28 f8 10 _strnicoll_l -16c28 7 55 277 -16c2f b 57 277 -16c3a 9 59 277 -16c43 13 60 277 -16c56 33 63 277 -16c89 6 64 277 -16c8f 23 65 277 -16cb2 a 67 277 -16cbc 15 68 277 -16cd1 21 78 277 -16cf2 b 80 277 -16cfd 10 81 277 -16d0d 11 84 277 -16d1e 2 85 277 -FUNC 16d20 27 c _strnicoll -16d20 3 92 277 -16d23 9 93 277 -16d2c 1 101 277 -16d2d 5 95 277 -16d32 13 99 277 -16d45 2 101 277 -FUNC 16d47 4d 4 findenv -16d47 1 387 1450 -16d48 8 390 1450 -16d50 12 394 1450 -16d62 d 399 1450 -16d6f 9 390 1450 -16d78 e 407 1450 -16d86 1 408 1450 -16d87 c 400 1450 -16d93 1 408 1450 -FUNC 16d94 5d 0 copy_environ -16d94 4 428 1450 -16d98 2 429 1450 -16d9a 6 434 1450 -16da0 2 464 1450 -16da2 7 438 1450 -16da9 8 439 1450 -16db1 14 443 1450 -16dc5 8 444 1450 -16dcd 6 448 1450 -16dd3 11 458 1450 -16de4 4 448 1450 -16de8 2 461 1450 -16dea 5 463 1450 -16def 2 464 1450 -FUNC 16df1 24c 8 __crtsetenv -16df1 6 76 1450 -16df7 2c 89 1450 -16e23 2 91 1450 -16e25 1c 98 1450 -16e41 5 114 1450 -16e46 13 125 1450 -16e59 c 126 1450 -16e65 4 130 1450 -16e69 d 153 1450 -16e76 9 155 1450 -16e7f b 100 1450 -16e8a 6 101 1450 -16e90 2 356 1450 -16e92 3 164 1450 -16e95 6 165 1450 -16e9b f 171 1450 -16eaa 2 172 1450 -16eac 2 173 1450 -16eae 8 176 1450 -16eb6 f 178 1450 -16ec5 2 179 1450 -16ec7 2 180 1450 -16ec9 6 196 1450 -16ecf 5 197 1450 -16ed4 2 200 1450 -16ed6 10 207 1450 -16ee6 9 210 1450 -16eef a 216 1450 -16ef9 6 218 1450 -16eff 5 235 1450 -16f04 5 238 1450 -16f09 5 241 1450 -16f0e c 222 1450 -16f1a 4 221 1450 -16f1e 1d 230 1450 -16f3b 2 233 1450 -16f3d 9 245 1450 -16f46 4 250 1450 -16f4a 2 251 1450 -16f4c 2f 255 1450 -16f7b 8 258 1450 -16f83 3 259 1450 -16f86 5 262 1450 -16f8b 5 264 1450 -16f90 21 287 1450 -16fb1 25 289 1450 -16fd6 21 338 1450 -16ff7 4 339 1450 -16ffb b 343 1450 -17006 7 346 1450 -1700d 5 349 1450 -17012 8 351 1450 -1701a 6 352 1450 -17020 8 355 1450 -17028 8 271 1450 -17030 6 274 1450 -17036 7 276 1450 -FUNC 1703d 50 4 _strdup -1703d 1 66 568 -1703e b 70 568 -17049 6 71 568 -1704f 9 73 568 -17058 e 77 568 -17066 1c 80 568 -17082 4 81 568 -17086 6 84 568 -1708c 1 85 568 -FUNC 1708d ba c _mbschr_l -1708d 7 53 2982 -17094 b 55 2982 -1709f 32 58 2982 -170d1 8 60 2982 -170d9 d 61 2982 -170e6 a 65 2982 -170f0 7 67 2982 -170f7 10 69 2982 -17107 3 70 2982 -1710a 8 72 2982 -17112 d 63 2982 -1711f 8 76 2982 -17127 e 77 2982 -17135 10 79 2982 -17145 2 80 2982 -FUNC 17147 13 8 _mbschr -17147 0 86 2982 -17147 12 87 2982 -17159 1 88 2982 -FUNC 17170 be 8 strchr -17170 0 60 595 -17170 2 68 595 -17172 4 69 595 -17176 1 73 595 -17177 2 74 595 -17179 3 75 595 -1717c 4 76 595 -17180 6 77 595 -17186 2 78 595 -17188 2 81 595 -1718a 3 82 595 -1718d 2 83 595 -1718f 2 84 595 -17191 2 85 595 -17193 2 86 595 -17195 6 87 595 -1719b 2 88 595 -1719d 2 91 595 -1719f 1 92 595 -171a0 2 93 595 -171a2 3 94 595 -171a5 1 95 595 -171a6 2 96 595 -171a8 2 101 595 -171aa 5 102 595 -171af 2 104 595 -171b1 2 105 595 -171b3 2 107 595 -171b5 2 108 595 -171b7 2 110 595 -171b9 3 111 595 -171bc 3 113 595 -171bf 2 114 595 -171c1 2 116 595 -171c3 3 117 595 -171c6 6 119 595 -171cc 2 120 595 -171ce 5 124 595 -171d3 2 125 595 -171d5 5 127 595 -171da 2 128 595 -171dc 6 130 595 -171e2 2 131 595 -171e4 1 134 595 -171e5 1 135 595 -171e6 1 137 595 -171e7 2 138 595 -171e9 1 139 595 -171ea 3 142 595 -171ed 2 143 595 -171ef 2 144 595 -171f1 2 145 595 -171f3 2 146 595 -171f5 2 147 595 -171f7 2 148 595 -171f9 2 149 595 -171fb 2 150 595 -171fd 3 151 595 -17200 2 152 595 -17202 2 153 595 -17204 2 154 595 -17206 2 155 595 -17208 2 156 595 -1720a 2 157 595 -1720c 2 158 595 -1720e 2 159 595 -17210 2 160 595 -17212 1 163 595 -17213 1 164 595 -17214 3 165 595 -17217 1 166 595 -17218 1 167 595 -17219 3 170 595 -1721c 1 171 595 -1721d 1 172 595 -1721e 1 173 595 -1721f 1 174 595 -17220 3 177 595 -17223 1 178 595 -17224 1 179 595 -17225 1 180 595 -17226 1 181 595 -17227 3 184 595 -1722a 1 185 595 -1722b 1 186 595 -1722c 1 187 595 -1722d 1 188 595 -PUBLIC 17176 0 __from_strstr_to_strchr -STACK WIN 4 1060 54 6 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10c0 a 3 0 0 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10f0 21 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1120 14 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1140 16 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1160 1e 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1190 10 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11b0 7 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11c0 2c 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11f7 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1206 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1214 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1215 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1230 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 123f 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1247 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1262 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 127e 1f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 129d 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12a1 b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12ac 5 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12b1 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12b6 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12c0 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12ca a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12d4 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12de a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12e8 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 130c 41 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 134d 1b6 c 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14c5 14 0 0 0 c 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1503 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 150d 22 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 152f 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1596 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 159f f5 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1688 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1694 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16fb 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1704 31 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1735 eb c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1814 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1820 53 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 186a 8 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1908 8e c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 195e 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1996 3d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19d3 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e1 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a05 26 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a2b 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a40 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a49 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a52 18 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a53 16 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a6a 20 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a6b 1e 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a8a 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a8f 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1ac1 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1ac6 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1afd 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b02 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b39 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b3e 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b75 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b7a 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bb1 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bb6 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1be8 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bed 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c1f 92 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c5d 34 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c5e 32 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1cb1 e2 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d7b 11 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1d93 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1da4 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1db5 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dc4 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dd3 4c 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dd4 4a 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1e1f 1a0 8 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1e21 19c 6 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 1e26 196 1 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 1e27 194 0 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 1e44 176 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 20 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 1fbf 20 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1fdf 39 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2018 1 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2019 32 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2024 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 204b 15e 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2051 156 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2069 13d 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 206f 136 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 21a9 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21c4 db b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21c5 c3 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 21ce b9 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 21cf b7 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 221e 67 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 229f a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22a9 198 e 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22b1 187 6 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 22b7 180 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2441 b9 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2448 b0 a 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2451 a6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2452 a4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 24fa 135 b 0 0 0 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2502 12a 3 0 0 4 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ = -STACK WIN 4 2503 128 2 0 0 8 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 2504 126 1 0 0 c 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 2505 124 0 0 0 10 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 262f 240 c 0 0 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2858 4 0 0 0 c 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 286f 4c 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2870 4a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2871 48 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28bb 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28bc 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28bd 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28df 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28e0 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 28e1 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2903 6c 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2909 64 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 290a 62 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 292a 41 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 296f 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2970 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 29dd 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 29e6 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 29e7 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2a54 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2a5d 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2a72 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2a78 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2a79 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2aaa 19 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2ac3 3d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2b00 bf c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2bb6 8 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 2bbf 77 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2bc0 75 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2bc1 71 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c36 18 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c37 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c4e 121 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2d57 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 2d63 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 2d6f 69 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2d79 4b 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2d82 25 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2dd8 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2dde 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2de4 184 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2de5 182 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2e00 166 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2f68 5b 6 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2f6e 43 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2fc3 5a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 301d 74 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 301e 72 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 302a 53 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 3031 4b 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 303c 30 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 3091 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3100 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3130 196 14 0 10 0 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3134 d3 10 0 10 4 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 24 - ^ = -STACK WIN 4 3139 cd b 0 10 8 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 313a cb a 0 10 c 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 3144 c0 0 0 10 10 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 32c6 94 15 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 32da 7e 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 32db 7c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 32f7 5f 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 335a a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3364 fc 1c 0 14 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 3460 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3461 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3482 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 348f 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 3498 24 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 34bc 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 34cc 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 34d5 49 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 34d6 3b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 34d7 39 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 351e 55 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 351f 53 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 3526 4b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 352c 2a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 3573 15 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 3588 18 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 35a0 c3 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 365a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 3663 31 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 366a 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 3694 65 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3699 5f 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 369e 59 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 369f 57 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 378b 6 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3791 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 37ac 26 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 37ad 24 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 37d2 63 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3835 474 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 383c 42e 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 383d 42c 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 383e 42a 1 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 383f 428 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 3ca9 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3cb4 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3cc1 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ccf e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3cdd e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ceb e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3cf9 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d0b e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d19 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d27 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d35 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d40 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d4b b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d56 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d64 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d6f e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d7d 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d96 84 13 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d97 80 12 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3d98 7e 11 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3dbe 57 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ = -STACK WIN 4 3e1a d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3e27 12 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3e39 9c 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3e4c 86 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ed5 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3edf 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ee4 7 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3eeb a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ef5 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3efd a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f07 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f11 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f19 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f23 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f2b a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f35 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f3d a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f47 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f4f 7b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3f52 75 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3fca 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3fd3 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3ff8 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4005 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4009 29 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 401b f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4032 16 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4048 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 404c 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4050 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 406b 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 406f 2f 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 409e 25 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 40c3 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 40c7 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 40d4 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 40e2 20 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4102 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4127 33 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 415a 34 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 418e 13 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 41a1 56 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 41a7 4d 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 41f7 61 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 41f8 5d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 41f9 59 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4258 17 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 426f 15 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4284 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4298 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42a6 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42ba 25 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42bb 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42c7 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42df 38 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42e0 36 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42e1 32 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4317 91 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 431b 89 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 431c 87 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4351 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 43a8 35 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43ab 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43dd 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43de 7d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43df 79 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 445e 1e 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 445f 1c 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 447c 47 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 447d 43 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44c3 47 7 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44c4 45 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 44c5 43 5 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 44c6 41 4 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 450a 65 11 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 450b 61 10 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4510 5b b 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4511 57 a 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 456f 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4581 31 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 45b2 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 45c1 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 45d0 1d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 45ed 33 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4620 73 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4624 6b 3 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4625 5b 2 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4693 2f 3 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 46c2 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 46d1 79 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 46d2 75 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 46d3 71 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 474a 68 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 474b 64 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47b2 a6 3 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47b3 a2 2 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47d3 81 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 47e5 6e 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 4858 26 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4859 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 487e 31 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4883 29 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48af d0 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 48b3 b3 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 48b4 b1 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 48c3 9f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 497f 69 13 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4990 4f 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 4991 4b 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 4992 49 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 49e8 96 22 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 49fc 79 e 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4a0a 66 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4a2f 29 0 0 8 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 4a7e 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4a7f 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4aac 62 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4aad 5e 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4aae 5a 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4b0e 8b a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4b0f 87 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4b10 83 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4b99 1c 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4b9a 18 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4bb5 2a 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4bba 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4bdf a6 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4c85 37 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4cbc 51 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4cbd 4d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d0d 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d0e 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d3b 6a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d3c 66 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4d43 5e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4da5 6c a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4da6 68 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4da7 64 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e11 e0 e 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4e18 d7 7 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4e1f cd 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4e3a b1 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 4ef1 4f 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4ef7 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4f40 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4f62 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4f84 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4fa6 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4fa7 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4fd4 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4fd5 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5002 141 7 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5009 138 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 508a b3 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 508b b1 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5143 d4 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5217 c4 e 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 52db 7e d 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5359 125 11 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 536a 112 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 547e 15f f 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 548d 4a 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 54e5 b3 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 55dd 31 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 560e 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5620 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5632 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5644 150 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 564b 147 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5794 a0 6 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5834 50 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5884 2bb 2b 0 4 0 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 589f 296 10 0 4 4 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 58a8 28a 7 0 4 8 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 58af 282 0 0 4 c d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 5b3f d9 b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5bad 17 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c18 14 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5c2c 1b8 18 0 4 0 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c3d 1a0 7 0 4 4 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c44 18d 0 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c65 168 0 0 4 c 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 108 - ^ = -STACK WIN 4 5de4 56f 22 0 c 0 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5df8 97 e 0 c 4 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ = -STACK WIN 4 5e06 88 0 0 c 8 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ = -STACK WIN 4 6353 153 10 0 8 0 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6377 11b 0 0 8 4 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 637e 113 0 0 8 8 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 6387 109 0 0 8 c d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 64a6 1ea 1b 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 64c1 1c8 0 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6549 111 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 654a 10f 0 0 8 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 6690 e4 15 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6697 db e 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 66a5 ca 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6774 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6783 100 19 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 678f f2 d 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 679c e4 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 6883 46 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 68c9 92 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 695b b42 14 0 8 0 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6966 b35 9 0 8 4 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 696f b2b 0 0 8 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 69d8 abe 0 0 8 c 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 120 - ^ = -STACK WIN 4 749d 211 13 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 74a4 208 c 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 74b0 1fb 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 76ae 28b 1f 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 76ba 27a 13 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 76bb 278 12 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 76cd 263 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 7939 341 d 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 797e 2f7 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 79e5 28f 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 79e6 28d 0 0 8 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 7c7a 4e4 18 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7c88 4d4 a 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 7c89 4d2 9 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 7c92 4c8 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 815e 14c 6 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 82aa 116 5 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 82cb 59 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 83c0 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 83db 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 83f6 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8411 a3 f 0 18 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 84ab 8 0 0 18 c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 84b4 a3 f 0 1c c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 854e 8 0 0 1c c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8557 387 12 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8567 350 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 8568 34e 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 8569 34c 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 88de 13e 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 88e5 135 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8a1c b1 6 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8acd 64 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8ad4 5b 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8b31 4f c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8b77 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8b80 75 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8bc8 2c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8bf5 c3 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8bf6 c1 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 8c04 9c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 8c0b 94 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 8c0c 90 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 8cb8 3b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8cf3 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d06 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d19 1e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d1a 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d37 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d52 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d53 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d7c 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d97 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8d98 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8dc1 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8de2 46 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8ded 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8e28 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8e2d 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8e64 48 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8eac 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8ed7 314 11 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8ee4 305 4 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8ee8 300 0 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8f15 2d2 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 91eb b0 d 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 91f1 a9 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 91f8 a1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 929b 106 11 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 92a7 f8 5 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 92a8 f6 4 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 92ac f1 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 93a1 2df 12 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 93ae 2d0 5 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 93af 2ce 4 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 93b3 2c9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 9680 cd 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 974d 2e2 f 0 0 0 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 975c 294 0 0 0 4 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 9771 27e 0 0 0 8 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 9774 27a 0 0 0 c 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 9a2f a8 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9a30 a6 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9a78 5d 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9ad7 2e3 2a 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9afb 2bd 6 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 9b00 2b7 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 9b01 2b5 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 9dba 39 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9dda 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9df3 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e06 37 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9e2a 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9e3d 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e4e b9 5 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e50 b5 3 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 9e51 b3 2 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9e52 b1 1 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9e53 af 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9f07 2f 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f08 2d 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f36 3c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9f6c 5 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9f72 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f84 1f 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f85 1d 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f86 1b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9fb0 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9fe0 42 18 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9fee 33 a 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 9fef 31 9 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 9ff8 27 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 a030 bb 33 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a04a a1 19 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 a0b9 14 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 a0eb 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a104 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a17d 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a19f 34 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a1aa 1d 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a1d3 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a1e0 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a1e9 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a1f2 23d c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a3e7 b 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a42f 1b0 c 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a59d 14 0 0 4 c 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a5df a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a5e9 104 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a5ea 102 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 a5eb 100 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 a5ec fe 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 a625 c4 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 16 - ^ = -STACK WIN 4 a6ed 15a 24 0 14 0 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a706 bc b 0 14 4 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 a707 b8 a 0 14 8 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 a711 ad 0 0 14 c 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 a847 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a851 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a85b 10 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a86b c5 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a8f1 17 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a930 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a93a 31 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a93b 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a96b 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a974 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a981 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a9a3 1bd 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a9aa 1b4 2 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 a9ab 1b2 1 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 a9ac 1b0 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 ab60 71 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ab65 6b 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ab6a 65 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ab6b 63 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 abd1 b3 e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 abd5 1a a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 abd6 2e 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 abdf e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 ac84 46 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac89 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 acca a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 acd4 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 acda 21 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 acdb 1f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 acfb 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad0b 40 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad0c 3e 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad0d 3c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad4b 48 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad4c 46 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad4d 44 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad93 4b 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad94 49 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ad95 47 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 adde 50 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 addf 4e 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ade0 4c 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae2e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae36 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae40 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae4a e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae58 3 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae5b 2f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae8a 55 b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae8b 53 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ae8c 51 9 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 ae8d 4f 8 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 ae8e 4d 7 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 aedf 18a 1d 0 0 0 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 aefb 161 1 0 0 4 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ = -STACK WIN 4 aefc 15d 0 0 0 8 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ = -STACK WIN 4 b069 a4 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b101 b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 b10d 82 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b114 78 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b18f 7a 7 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b196 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 b209 1d9 19 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b21a 1c1 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 b21e 1ba 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 b222 1b5 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 b3e2 3c 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b41e 19a c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b57f 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 b5b8 1e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b5d6 51 6 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b627 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b63c 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b64f 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b664 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b677 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b68c 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b69f 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b6b7 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b6cd 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b6e5 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b6fb 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b713 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b729 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b741 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b757 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b76c 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b77f 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b794 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b7a7 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b7bc 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b7cf 53 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b822 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bb95 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bb9b 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bba1 140 12 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bba2 13e 11 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 bba3 13c 10 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bba4 13a f 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bbb3 12a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bce1 86 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bce2 84 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 bce3 82 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bce4 80 5 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bce9 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 bd67 8c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bd68 8a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bd71 7e 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 bd72 7c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 bd73 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 bdf3 24 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bdf4 22 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 be03 12 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 be17 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 be20 31 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 be55 76 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 bebf 8 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 becb 66 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 becc 64 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 becd 62 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bf31 53 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bf84 96 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c00e b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 c01a 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c01f 88 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c09b b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 c0a7 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0ac 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0af 3e 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0b0 3c 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 c0b1 3a 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 c0bc 2e 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 c0ed 129 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c0f1 123 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 c0f2 121 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 c0f3 11f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 c216 6b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c21a 4d 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 c21b 4b 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 c281 171 4 0 0 0 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c285 169 0 0 0 4 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 20 - ^ = -STACK WIN 4 c2a4 149 0 0 0 8 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ = -STACK WIN 4 c2a5 141 0 0 0 c 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ = -STACK WIN 4 c3f2 1d4 1e 0 18 0 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c40b 1b1 5 0 18 4 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 c40c 1ad 4 0 18 8 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 c410 1a8 0 0 18 c b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 c5c6 2f6 17 0 4 0 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c5dc 2d6 1 0 4 4 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ = -STACK WIN 4 c5dd 2d2 0 0 4 8 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ = -STACK WIN 4 c8bc 1ce 18 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c8d5 1ab 0 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 c8d6 1a7 0 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 c8dd 19f 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 ca8a f3 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ca90 2c 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ca91 2a 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cb7d 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cb82 170 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 cca8 10 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 ccb9 b 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 ccea 7 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 ccf2 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ce57 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ceda 2a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cf04 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cf05 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cf26 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d014 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d025 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d03a 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d03f 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d044 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d055 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d3d5 f3 23 0 0 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d4c8 1e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d4e6 a3 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d578 10 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 d589 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d592 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d5e6 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d611 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d660 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d689 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d6d8 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d701 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d750 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d779 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d7cd 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d7f8 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d847 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d870 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d8bf 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d8e8 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d93c 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d967 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 d9bb 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 d9e6 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 da3a 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 da65 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dab4 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 dadd d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 daea 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 daf2 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db11 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db2b 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db4a 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db66 12 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db78 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 db93 13b 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dba8 126 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 dcce 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dd09 13d 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dd1e 128 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 de46 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 de81 11e c 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 df78 d 0 0 c c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 df9f 3f 9 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dfa8 34 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dfc1 18 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dfde 21b c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e11c e 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 e1f9 79 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e200 70 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 e236 39 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 e237 37 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 e272 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e28c 3a2 1d 0 20 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e29d 391 c 0 20 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 e62e 43 6 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e671 1b8 1d 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e686 1a3 8 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 e829 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e869 87 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e8f0 e3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e9d3 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e9e7 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e9fb 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ea01 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ea2a 419 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ea4c 3f5 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 ea4d 3ed 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 ee43 190 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ee44 18e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 efd3 73 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 efd4 71 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 efd5 6f 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 efd6 6d 1 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 efd7 6b 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 f046 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f04d 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f04e 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f079 40 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f07a 3e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f0b9 1c8 11 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f0c0 1bf a 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 f0c4 1ba 6 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 f0ca 1b3 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 f281 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f288 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f289 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f2b4 89 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f2b5 87 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f33d 2c4 c 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f344 2bb 5 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 f345 2b9 4 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 f349 2b4 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 f601 395 1b 0 4 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f612 37d a 0 4 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 f615 377 7 0 4 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 f61c 36f 0 0 4 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 f996 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f9bf 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f9d5 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f9fb 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fa21 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fa47 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fa4a fe 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 fa51 e9 2 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 fa52 e7 1 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 fa53 e5 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 fb48 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fb51 fe 9 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 fb58 e9 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 fb59 e7 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 fb5a e5 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 fc4f 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fc58 355 9 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 fc5f 34c 2 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 fc60 348 1 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 fc61 346 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 ffad 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ffb6 20 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ffba 1b 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ffbf 15 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ffd6 36 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ffdc 2f 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1000c 79 8 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10011 72 3 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 10012 70 2 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 10085 3e6 11 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1008a 3df c 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 10091 3d7 5 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 10092 3d5 4 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1046b 45d 1d 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1047f 449 9 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 108c8 1af a 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 108d2 1a3 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 10918 15c 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1094b 128 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 10a77 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10a95 1d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10ab2 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10ad0 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10b46 60 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10b4c 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 10b55 45 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 10b56 43 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 10ba6 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10bba 77 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10bcb 5f 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10c31 1e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10c4f 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10c50 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10c81 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10c9c 96 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10cad 7c 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10cae 78 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10d32 72 11 0 8 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10d43 5a 0 0 8 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10d7f 13 0 0 8 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10da4 1d0 13 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10db5 1b6 2 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 10db6 1b2 1 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 10db7 1b0 0 0 4 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 10f74 bf 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10f85 a5 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10f86 a1 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11033 2c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1105f 65 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 110c4 3c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 11100 1e3 4 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 11101 1e1 3 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 11102 1df 2 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 11103 1dd 1 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 11104 1db 0 0 c 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 112e3 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 112f5 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1130d 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1134d 78 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 113c5 1490 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 113c6 83f 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 113c7 83d 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12855 1680 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12859 15f8 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1285a 15f6 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1288b 86c 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 13ed5 be 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 13ede a9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 13ef0 96 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 13fe0 104 9 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1421b 57 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14272 8f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14301 22b 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14308 222 1 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14309 220 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14367 1c1 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 1452c 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14555 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14570 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1459a 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 145b5 294 8 0 14 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 145bc 28b 1 0 14 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 145bd 289 0 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 14619 1f9 0 0 14 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 14849 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14872 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1488d 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 148b7 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148d2 b6 7 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 148d9 ad 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 14988 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 149ec 47 10 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14a33 1b2 2a 0 18 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14a50 195 d 0 18 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 14be5 50 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14c02 1c 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 14c35 60 9 0 0 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14c3e 57 0 0 0 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 14c95 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ca2 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ca7 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14cd6 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14cdb 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14d0a 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14d0f 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14d3e a2 c 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14d45 99 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 14d4a 93 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 14d58 84 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 14de0 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14de6 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14dec 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14df2 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14df8 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e04 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e10 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e1c 349 c 0 0 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 150c6 d 0 0 0 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 15165 1f5 14 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15174 1e4 5 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 15175 1e2 4 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 15176 1e0 3 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1535a 1ae 5 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1535f 15f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1538f 12e 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 15508 4f c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1554e 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 15557 38 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15586 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1558f 41 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 155c7 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 155d0 35 a 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 155d5 2f 5 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 155da 27 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15605 d3 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1560c ca 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1564d 88 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 15695 33 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 156d8 50 4 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 156dc 4a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15728 36 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1575e e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1576c 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15782 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15793 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157a6 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157b4 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157c7 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157d5 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157e8 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157f6 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1580c 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1581d 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15830 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1583e 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15851 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1585f 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15875 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15886 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1589c 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158ad 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158c3 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158d4 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158e7 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158f5 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15901 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15927 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15948 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1596e 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1598f f0 e 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15996 e7 7 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1599c e0 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1599d de 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 15a7f 5c 4 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15a83 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15adb db 8 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15ae0 d2 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 15ae1 d0 2 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 15b0b a5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 15bb6 28 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15bde 25 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15c03 18 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15c1b f6 c 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15c22 eb 5 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 15c27 e5 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 15d11 33 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15d2c 16 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15d44 1d 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15d48 17 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15d9b 81 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15da3 70 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15db2 60 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 15db3 5e 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 15e1c 93 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15e20 8d 3 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 15e21 8b 2 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 15e60 4b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 15eaf a2 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15eb4 9b 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15eb5 99 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15f51 83 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15fcb 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 15fd4 d8 c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 160a3 8 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 160ac e6 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16189 8 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 16192 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1619a 117 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 161a1 10e 1 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 161a2 10c 0 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 162b1 27 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 162d8 82 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1635a 6e 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 163c8 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16431 ec 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16438 e3 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 16498 82 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1651d 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16534 95 a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1653a 7d 4 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1653b 7b 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1653e 77 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 165c9 1a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 165e3 224 17 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 165f8 20f 2 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 16807 3e 6 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16845 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1685f 389 16 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16873 375 2 0 18 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 16be8 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16c28 f8 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16c2f ef 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 16c8f 8e 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 16d20 27 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16d47 4d 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16d48 48 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16d94 5d 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16db0 3f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16db1 3d 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16df1 24c f 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16dfb 95 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 16e00 8f 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 16e23 6b 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 1703d 50 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1703e 4e 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 17043 48 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1704e 3c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1704f 3a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1708d ba 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 17094 b1 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 170d1 73 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 17147 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 0 14c5 14 0 0 0 0 0 0 0 0 -STACK WIN 0 1596 9 0 0 0 0 0 0 0 0 -STACK WIN 0 1688 c 0 0 0 0 0 0 0 0 -STACK WIN 0 16fb 9 0 0 0 0 0 0 0 0 -STACK WIN 0 1814 c 0 0 0 0 0 0 0 0 -STACK WIN 0 186a 9 0 0 0 0 0 0 0 0 -STACK WIN 0 1880 88 0 0 8 0 0 0 0 0 -STACK WIN 0 195e 9 0 0 0 0 0 0 0 0 -STACK WIN 0 1d7b 12 0 0 0 0 0 0 0 0 -STACK WIN 0 2858 4 0 0 0 0 0 0 0 0 -STACK WIN 0 2bb6 9 0 0 0 0 0 0 0 0 -STACK WIN 0 2d57 c 0 0 0 0 0 0 0 0 -STACK WIN 0 2d63 c 0 0 0 0 0 0 0 0 -STACK WIN 0 365a 9 0 0 0 0 0 0 0 0 -STACK WIN 0 3700 8b 0 0 4 0 0 0 0 0 -STACK WIN 0 84ab 9 0 0 0 0 0 0 0 0 -STACK WIN 0 854e 9 0 0 0 0 0 0 0 0 -STACK WIN 0 8b77 9 0 0 0 0 0 0 0 0 -STACK WIN 0 9dda 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9e2a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9f6c 6 0 0 0 0 0 0 0 0 -STACK WIN 0 a0b9 14 0 0 0 0 0 0 0 0 -STACK WIN 0 a17d a 0 0 0 0 0 0 0 0 -STACK WIN 0 a3e7 c 0 0 0 0 0 0 0 0 -STACK WIN 0 a59d 15 0 0 0 0 0 0 0 0 -STACK WIN 0 a8f1 17 0 0 0 0 0 0 0 0 -STACK WIN 0 b101 c 0 0 0 0 0 0 0 0 -STACK WIN 0 b57f 9 0 0 0 0 0 0 0 0 -STACK WIN 0 bebf 9 0 0 0 0 0 0 0 0 -STACK WIN 0 c00e c 0 0 0 0 0 0 0 0 -STACK WIN 0 c09b c 0 0 0 0 0 0 0 0 -STACK WIN 0 cca8 11 0 0 0 0 0 0 0 0 -STACK WIN 0 ccb9 c 0 0 0 0 0 0 0 0 -STACK WIN 0 ccea 8 0 0 0 0 0 0 0 0 -STACK WIN 0 cd04 90 3 0 c c 0 0 0 0 -STACK WIN 0 cd94 46 0 0 10 4 0 0 0 1 -STACK WIN 0 cdf6 17 4 0 0 10 0 0 0 1 -STACK WIN 0 ce0d 19 0 0 0 0 0 0 0 0 -STACK WIN 0 ce40 17 1 0 8 4 0 0 0 1 -STACK WIN 0 ce60 7a 0 0 c 0 0 0 0 0 -STACK WIN 0 d578 11 0 0 0 0 0 0 0 0 -STACK WIN 0 df78 e 0 0 0 0 0 0 0 0 -STACK WIN 0 e11c f 0 0 0 0 0 0 0 0 -STACK WIN 0 14149 84 3 0 8 c 0 0 0 0 -STACK WIN 0 141cd 23 0 0 0 0 0 0 0 0 -STACK WIN 0 14218 3 0 0 0 0 0 0 0 0 -STACK WIN 0 14c02 1c 0 0 0 0 0 0 0 0 -STACK WIN 0 150c6 e 0 0 0 0 0 0 0 0 -STACK WIN 0 1554e 9 0 0 0 0 0 0 0 0 -STACK WIN 0 15586 9 0 0 0 0 0 0 0 0 -STACK WIN 0 155c7 9 0 0 0 0 0 0 0 0 -STACK WIN 0 15fcb 9 0 0 0 0 0 0 0 0 -STACK WIN 0 160a3 9 0 0 0 0 0 0 0 0 -STACK WIN 0 16189 9 0 0 0 0 0 0 0 0 -STACK WIN 0 17170 be 0 0 8 0 0 0 0 0 diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.cc b/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.cc deleted file mode 100644 index e2ec640e..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.cc +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Tool to upload an exe/dll and its associated symbols to an HTTP server. -// The PDB file is located automatically, using the path embedded in the -// executable. The upload is sent as a multipart/form-data POST request, -// with the following parameters: -// code_file: the basename of the module, e.g. "app.exe" -// debug_file: the basename of the debugging file, e.g. "app.pdb" -// debug_identifier: the debug file's identifier, usually consisting of -// the guid and age embedded in the pdb, e.g. -// "11111111BBBB3333DDDD555555555555F" -// version: the file version of the module, e.g. "1.2.3.4" -// os: the operating system that the module was built for, always -// "windows" in this implementation. -// cpu: the CPU that the module was built for, typically "x86". -// symbol_file: the contents of the breakpad-format symbol file - -#include -#include -#include - -#include -#include -#include -#include - -#include "common/windows/string_utils-inl.h" - -#include "common/windows/http_upload.h" -#include "common/windows/pdb_source_line_writer.h" - -using std::string; -using std::wstring; -using std::vector; -using std::map; -using google_breakpad::HTTPUpload; -using google_breakpad::PDBModuleInfo; -using google_breakpad::PDBSourceLineWriter; -using google_breakpad::WindowsStringUtils; - -// Extracts the file version information for the given filename, -// as a string, for example, "1.2.3.4". Returns true on success. -static bool GetFileVersionString(const wchar_t *filename, wstring *version) { - DWORD handle; - DWORD version_size = GetFileVersionInfoSize(filename, &handle); - if (version_size < sizeof(VS_FIXEDFILEINFO)) { - return false; - } - - vector version_info(version_size); - if (!GetFileVersionInfo(filename, handle, version_size, &version_info[0])) { - return false; - } - - void *file_info_buffer = NULL; - unsigned int file_info_length; - if (!VerQueryValue(&version_info[0], L"\\", - &file_info_buffer, &file_info_length)) { - return false; - } - - // The maximum value of each version component is 65535 (0xffff), - // so the max length is 24, including the terminating null. - wchar_t ver_string[24]; - VS_FIXEDFILEINFO *file_info = - reinterpret_cast(file_info_buffer); - swprintf(ver_string, sizeof(ver_string) / sizeof(ver_string[0]), - L"%d.%d.%d.%d", - file_info->dwFileVersionMS >> 16, - file_info->dwFileVersionMS & 0xffff, - file_info->dwFileVersionLS >> 16, - file_info->dwFileVersionLS & 0xffff); - - // remove when VC++7.1 is no longer supported - ver_string[sizeof(ver_string) / sizeof(ver_string[0]) - 1] = L'\0'; - - *version = ver_string; - return true; -} - -// Creates a new temporary file and writes the symbol data from the given -// exe/dll file to it. Returns the path to the temp file in temp_file_path -// and information about the pdb in pdb_info. -static bool DumpSymbolsToTempFile(const wchar_t *file, - wstring *temp_file_path, - PDBModuleInfo *pdb_info) { - google_breakpad::PDBSourceLineWriter writer; - // Use EXE_FILE to get information out of the exe/dll in addition to the - // pdb. The name and version number of the exe/dll are of value, and - // there's no way to locate an exe/dll given a pdb. - if (!writer.Open(file, PDBSourceLineWriter::EXE_FILE)) { - return false; - } - - wchar_t temp_path[_MAX_PATH]; - if (GetTempPath(_MAX_PATH, temp_path) == 0) { - return false; - } - - wchar_t temp_filename[_MAX_PATH]; - if (GetTempFileName(temp_path, L"sym", 0, temp_filename) == 0) { - return false; - } - - FILE *temp_file = NULL; -#if _MSC_VER >= 1400 // MSVC 2005/8 - if (_wfopen_s(&temp_file, temp_filename, L"w") != 0) { -#else // _MSC_VER >= 1400 - // _wfopen_s was introduced in MSVC8. Use _wfopen for earlier environments. - // Don't use it with MSVC8 and later, because it's deprecated. - if (!(temp_file = _wfopen(temp_filename, L"w"))) { -#endif // _MSC_VER >= 1400 - return false; - } - - bool success = writer.WriteMap(temp_file); - fclose(temp_file); - if (!success) { - _wunlink(temp_filename); - return false; - } - - *temp_file_path = temp_filename; - - return writer.GetModuleInfo(pdb_info); -} - -int wmain(int argc, wchar_t *argv[]) { - if (argc < 3) { - wprintf(L"Usage: %s \n", argv[0]); - return 0; - } - const wchar_t *module = argv[1], *url = argv[2]; - - wstring symbol_file; - PDBModuleInfo pdb_info; - if (!DumpSymbolsToTempFile(module, &symbol_file, &pdb_info)) { - fwprintf(stderr, L"Could not get symbol data from %s\n", module); - return 1; - } - - wstring code_file = WindowsStringUtils::GetBaseName(wstring(module)); - - map parameters; - parameters[L"code_file"] = code_file; - parameters[L"debug_file"] = pdb_info.debug_file; - parameters[L"debug_identifier"] = pdb_info.debug_identifier; - parameters[L"os"] = L"windows"; // This version of symupload is Windows-only - parameters[L"cpu"] = pdb_info.cpu; - - // Don't make a missing version a hard error. Issue a warning, and let the - // server decide whether to reject files without versions. - wstring file_version; - if (GetFileVersionString(module, &file_version)) { - parameters[L"version"] = file_version; - } else { - fwprintf(stderr, L"Warning: Could not get file version for %s\n", module); - } - - bool success = HTTPUpload::SendRequest(url, parameters, - symbol_file, L"symbol_file", - NULL, NULL); - _wunlink(symbol_file.c_str()); - - if (!success) { - fwprintf(stderr, L"Symbol file upload failed\n"); - return 1; - } - - wprintf(L"Uploaded symbols for windows-%s/%s/%s (%s %s)\n", - pdb_info.cpu.c_str(), pdb_info.debug_file.c_str(), - pdb_info.debug_identifier.c_str(), code_file.c_str(), - file_version.c_str()); - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.vcproj b/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.vcproj deleted file mode 100644 index d6d07f1e..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/symupload/symupload.vcproj +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      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 -#include -#include -#include - -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/minidump.h" -#include "google_breakpad/processor/minidump_processor.h" -#include "google_breakpad/processor/process_state.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/logging.h" -#include "processor/pathname_stripper.h" -#include "processor/scoped_ptr.h" -#include "processor/simple_symbol_supplier.h" - -namespace { - -using std::string; -using std::vector; -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CallStack; -using google_breakpad::CodeModule; -using google_breakpad::CodeModules; -using google_breakpad::MinidumpModule; -using google_breakpad::MinidumpProcessor; -using google_breakpad::PathnameStripper; -using google_breakpad::ProcessState; -using google_breakpad::scoped_ptr; -using google_breakpad::SimpleSymbolSupplier; -using google_breakpad::StackFrame; -using google_breakpad::StackFramePPC; -using google_breakpad::StackFrameSPARC; -using google_breakpad::StackFrameX86; -using google_breakpad::StackFrameAMD64; - -// Separator character for machine readable output. -static const char kOutputSeparator = '|'; - -// PrintRegister prints a register's name and value to stdout. It will -// print four registers on a line. For the first register in a set, -// pass 0 for |sequence|. For registers in a set, pass the most recent -// return value of PrintRegister. Note that PrintRegister will print a -// newline before the first register (with |sequence| set to 0) is printed. -// The caller is responsible for printing the final newline after a set -// of registers is completely printed, regardless of the number of calls -// to PrintRegister. -static int PrintRegister(const char *name, u_int32_t value, int sequence) { - if (sequence % 4 == 0) { - printf("\n "); - } - printf(" %5s = 0x%08x", name, value); - return ++sequence; -} - -// StripSeparator takes a string |original| and returns a copy -// of the string with all occurences of |kOutputSeparator| removed. -static string StripSeparator(const string &original) { - string result = original; - string::size_type position = 0; - while ((position = result.find(kOutputSeparator, position)) != string::npos) { - result.erase(position, 1); - } - return result; -} - -// PrintStack prints the call stack in |stack| to stdout, in a reasonably -// useful form. Module, function, and source file names are displayed if -// they are available. The code offset to the base code address of the -// source line, function, or module is printed, preferring them in that -// order. If no source line, function, or module information is available, -// an absolute code offset is printed. -// -// If |cpu| is a recognized CPU name, relevant register state for each stack -// frame printed is also output, if available. -static void PrintStack(const CallStack *stack, const string &cpu) { - int frame_count = stack->frames()->size(); - for (int frame_index = 0; frame_index < frame_count; ++frame_index) { - const StackFrame *frame = stack->frames()->at(frame_index); - printf("%2d ", frame_index); - - if (frame->module) { - printf("%s", PathnameStripper::File(frame->module->code_file()).c_str()); - if (!frame->function_name.empty()) { - printf("!%s", frame->function_name.c_str()); - if (!frame->source_file_name.empty()) { - string source_file = PathnameStripper::File(frame->source_file_name); - printf(" [%s : %d + 0x%" PRIx64 "]", - source_file.c_str(), - frame->source_line, - frame->instruction - frame->source_line_base); - } else { - printf(" + 0x%" PRIx64, frame->instruction - frame->function_base); - } - } else { - printf(" + 0x%" PRIx64, - frame->instruction - frame->module->base_address()); - } - } else { - printf("0x%" PRIx64, frame->instruction); - } - - int sequence = 0; - if (cpu == "x86") { - const StackFrameX86 *frame_x86 = - reinterpret_cast(frame); - - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EIP) - sequence = PrintRegister("eip", frame_x86->context.eip, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP) - sequence = PrintRegister("esp", frame_x86->context.esp, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBP) - sequence = PrintRegister("ebp", frame_x86->context.ebp, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBX) - sequence = PrintRegister("ebx", frame_x86->context.ebx, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESI) - sequence = PrintRegister("esi", frame_x86->context.esi, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EDI) - sequence = PrintRegister("edi", frame_x86->context.edi, sequence); - if (frame_x86->context_validity == StackFrameX86::CONTEXT_VALID_ALL) { - sequence = PrintRegister("eax", frame_x86->context.eax, sequence); - sequence = PrintRegister("ecx", frame_x86->context.ecx, sequence); - sequence = PrintRegister("edx", frame_x86->context.edx, sequence); - sequence = PrintRegister("efl", frame_x86->context.eflags, sequence); - } - } else if (cpu == "ppc") { - const StackFramePPC *frame_ppc = - reinterpret_cast(frame); - - if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_SRR0) - sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence); - if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_GPR1) - sequence = PrintRegister("r1", frame_ppc->context.gpr[1], sequence); - } else if (cpu == "amd64") { - const StackFrameAMD64 *frame_amd64 = - reinterpret_cast(frame); - - if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RIP) - sequence = PrintRegister("rip", frame_amd64->context.rip, sequence); - if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RSP) - sequence = PrintRegister("rsp", frame_amd64->context.rsp, sequence); - if (frame_amd64->context_validity & StackFrameAMD64::CONTEXT_VALID_RBP) - sequence = PrintRegister("rbp", frame_amd64->context.rbp, sequence); - } else if (cpu == "sparc") { - const StackFrameSPARC *frame_sparc = - reinterpret_cast(frame); - - if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_SP) - sequence = PrintRegister("sp", frame_sparc->context.g_r[14], sequence); - if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_FP) - sequence = PrintRegister("fp", frame_sparc->context.g_r[30], sequence); - if (frame_sparc->context_validity & StackFrameSPARC::CONTEXT_VALID_PC) - sequence = PrintRegister("pc", frame_sparc->context.pc, sequence); - } - printf("\n"); - } -} - -// PrintStackMachineReadable prints the call stack in |stack| to stdout, -// in the following machine readable pipe-delimited text format: -// thread number|frame number|module|function|source file|line|offset -// -// Module, function, source file, and source line may all be empty -// depending on availability. The code offset follows the same rules as -// PrintStack above. -static void PrintStackMachineReadable(int thread_num, const CallStack *stack) { - int frame_count = stack->frames()->size(); - for (int frame_index = 0; frame_index < frame_count; ++frame_index) { - const StackFrame *frame = stack->frames()->at(frame_index); - printf("%d%c%d%c", thread_num, kOutputSeparator, frame_index, - kOutputSeparator); - - if (frame->module) { - assert(!frame->module->code_file().empty()); - printf("%s", StripSeparator(PathnameStripper::File( - frame->module->code_file())).c_str()); - if (!frame->function_name.empty()) { - printf("%c%s", kOutputSeparator, - StripSeparator(frame->function_name).c_str()); - if (!frame->source_file_name.empty()) { - printf("%c%s%c%d%c0x%" PRIx64, - kOutputSeparator, - StripSeparator(frame->source_file_name).c_str(), - kOutputSeparator, - frame->source_line, - kOutputSeparator, - frame->instruction - frame->source_line_base); - } else { - printf("%c%c%c0x%" PRIx64, - kOutputSeparator, // empty source file - kOutputSeparator, // empty source line - kOutputSeparator, - frame->instruction - frame->function_base); - } - } else { - printf("%c%c%c%c0x%" PRIx64, - kOutputSeparator, // empty function name - kOutputSeparator, // empty source file - kOutputSeparator, // empty source line - kOutputSeparator, - frame->instruction - frame->module->base_address()); - } - } else { - // the printf before this prints a trailing separator for module name - printf("%c%c%c%c0x%" PRIx64, - kOutputSeparator, // empty function name - kOutputSeparator, // empty source file - kOutputSeparator, // empty source line - kOutputSeparator, - frame->instruction); - } - printf("\n"); - } -} - -static void PrintModules(const CodeModules *modules) { - if (!modules) - return; - - printf("\n"); - printf("Loaded modules:\n"); - - u_int64_t main_address = 0; - const CodeModule *main_module = modules->GetMainModule(); - if (main_module) { - main_address = main_module->base_address(); - } - - unsigned int module_count = modules->module_count(); - for (unsigned int module_sequence = 0; - module_sequence < module_count; - ++module_sequence) { - const CodeModule *module = modules->GetModuleAtSequence(module_sequence); - u_int64_t base_address = module->base_address(); - printf("0x%08" PRIx64 " - 0x%08" PRIx64 " %s %s%s\n", - base_address, base_address + module->size() - 1, - PathnameStripper::File(module->code_file()).c_str(), - module->version().empty() ? "???" : module->version().c_str(), - main_module != NULL && base_address == main_address ? - " (main)" : ""); - } -} - -// PrintModulesMachineReadable outputs a list of loaded modules, -// one per line, in the following machine-readable pipe-delimited -// text format: -// Module|{Module Filename}|{Version}|{Debug Filename}|{Debug Identifier}| -// {Base Address}|{Max Address}|{Main} -static void PrintModulesMachineReadable(const CodeModules *modules) { - if (!modules) - return; - - u_int64_t main_address = 0; - const CodeModule *main_module = modules->GetMainModule(); - if (main_module) { - main_address = main_module->base_address(); - } - - unsigned int module_count = modules->module_count(); - for (unsigned int module_sequence = 0; - module_sequence < module_count; - ++module_sequence) { - const CodeModule *module = modules->GetModuleAtSequence(module_sequence); - u_int64_t base_address = module->base_address(); - printf("Module%c%s%c%s%c%s%c%s%c0x%08" PRIx64 "%c0x%08" PRIx64 "%c%d\n", - kOutputSeparator, - StripSeparator(PathnameStripper::File(module->code_file())).c_str(), - kOutputSeparator, StripSeparator(module->version()).c_str(), - kOutputSeparator, - StripSeparator(PathnameStripper::File(module->debug_file())).c_str(), - kOutputSeparator, - StripSeparator(module->debug_identifier()).c_str(), - kOutputSeparator, base_address, - kOutputSeparator, base_address + module->size() - 1, - kOutputSeparator, - main_module != NULL && base_address == main_address ? 1 : 0); - } -} - -static void PrintProcessState(const ProcessState& process_state) { - // Print OS and CPU information. - string cpu = process_state.system_info()->cpu; - string cpu_info = process_state.system_info()->cpu_info; - printf("Operating system: %s\n", process_state.system_info()->os.c_str()); - printf(" %s\n", - process_state.system_info()->os_version.c_str()); - printf("CPU: %s\n", cpu.c_str()); - if (!cpu_info.empty()) { - // This field is optional. - printf(" %s\n", cpu_info.c_str()); - } - printf(" %d CPU%s\n", - process_state.system_info()->cpu_count, - process_state.system_info()->cpu_count != 1 ? "s" : ""); - printf("\n"); - - // Print crash information. - if (process_state.crashed()) { - printf("Crash reason: %s\n", process_state.crash_reason().c_str()); - printf("Crash address: 0x%" PRIx64 "\n", process_state.crash_address()); - } else { - printf("No crash\n"); - } - - // If the thread that requested the dump is known, print it first. - int requesting_thread = process_state.requesting_thread(); - if (requesting_thread != -1) { - printf("\n"); - printf("Thread %d (%s)\n", - requesting_thread, - process_state.crashed() ? "crashed" : - "requested dump, did not crash"); - PrintStack(process_state.threads()->at(requesting_thread), cpu); - } - - // Print all of the threads in the dump. - int thread_count = process_state.threads()->size(); - for (int thread_index = 0; thread_index < thread_count; ++thread_index) { - if (thread_index != requesting_thread) { - // Don't print the crash thread again, it was already printed. - printf("\n"); - printf("Thread %d\n", thread_index); - PrintStack(process_state.threads()->at(thread_index), cpu); - } - } - - PrintModules(process_state.modules()); -} - -static void PrintProcessStateMachineReadable(const ProcessState& process_state) -{ - // Print OS and CPU information. - // OS|{OS Name}|{OS Version} - // CPU|{CPU Name}|{CPU Info}|{Number of CPUs} - printf("OS%c%s%c%s\n", kOutputSeparator, - StripSeparator(process_state.system_info()->os).c_str(), - kOutputSeparator, - StripSeparator(process_state.system_info()->os_version).c_str()); - printf("CPU%c%s%c%s%c%d\n", kOutputSeparator, - StripSeparator(process_state.system_info()->cpu).c_str(), - kOutputSeparator, - // this may be empty - StripSeparator(process_state.system_info()->cpu_info).c_str(), - kOutputSeparator, - process_state.system_info()->cpu_count); - - int requesting_thread = process_state.requesting_thread(); - - // Print crash information. - // Crash|{Crash Reason}|{Crash Address}|{Crashed Thread} - printf("Crash%c", kOutputSeparator); - if (process_state.crashed()) { - printf("%s%c0x%" PRIx64 "%c", - StripSeparator(process_state.crash_reason()).c_str(), - kOutputSeparator, process_state.crash_address(), kOutputSeparator); - } else { - printf("No crash%c%c", kOutputSeparator, kOutputSeparator); - } - - if (requesting_thread != -1) { - printf("%d\n", requesting_thread); - } else { - printf("\n"); - } - - PrintModulesMachineReadable(process_state.modules()); - - // blank line to indicate start of threads - printf("\n"); - - // If the thread that requested the dump is known, print it first. - if (requesting_thread != -1) { - PrintStackMachineReadable(requesting_thread, - process_state.threads()->at(requesting_thread)); - } - - // Print all of the threads in the dump. - int thread_count = process_state.threads()->size(); - for (int thread_index = 0; thread_index < thread_count; ++thread_index) { - if (thread_index != requesting_thread) { - // Don't print the crash thread again, it was already printed. - PrintStackMachineReadable(thread_index, - process_state.threads()->at(thread_index)); - } - } -} - -// Processes |minidump_file| using MinidumpProcessor. |symbol_path|, if -// non-empty, is the base directory of a symbol storage area, laid out in -// the format required by SimpleSymbolSupplier. If such a storage area -// is specified, it is made available for use by the MinidumpProcessor. -// -// Returns the value of MinidumpProcessor::Process. If processing succeeds, -// prints identifying OS and CPU information from the minidump, crash -// information if the minidump was produced as a result of a crash, and -// call stacks for each thread contained in the minidump. All information -// is printed to stdout. -static bool PrintMinidumpProcess(const string &minidump_file, - const vector &symbol_paths, - bool machine_readable) { - scoped_ptr symbol_supplier; - if (!symbol_paths.empty()) { - // TODO(mmentovai): check existence of symbol_path if specified? - symbol_supplier.reset(new SimpleSymbolSupplier(symbol_paths)); - } - - BasicSourceLineResolver resolver; - MinidumpProcessor minidump_processor(symbol_supplier.get(), &resolver); - - // Process the minidump. - ProcessState process_state; - if (minidump_processor.Process(minidump_file, &process_state) != - MinidumpProcessor::PROCESS_OK) { - BPLOG(ERROR) << "MinidumpProcessor::Process failed"; - return false; - } - - if (machine_readable) { - PrintProcessStateMachineReadable(process_state); - } else { - PrintProcessState(process_state); - } - - return true; -} - -} // namespace - -static void usage(const char *program_name) { - fprintf(stderr, "usage: %s [-m] [symbol-path ...]\n" - " -m : Output in machine-readable format\n", - program_name); -} - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - if (argc < 2) { - usage(argv[0]); - return 1; - } - - const char *minidump_file; - bool machine_readable; - int symbol_path_arg; - - if (strcmp(argv[1], "-m") == 0) { - if (argc < 3) { - usage(argv[0]); - return 1; - } - - machine_readable = true; - minidump_file = argv[2]; - symbol_path_arg = 3; - } else { - machine_readable = false; - minidump_file = argv[1]; - symbol_path_arg = 2; - } - - // extra arguments are symbol paths - std::vector symbol_paths; - if (argc > symbol_path_arg) { - for (int argi = symbol_path_arg; argi < argc; ++argi) - symbol_paths.push_back(argv[argi]); - } - - return PrintMinidumpProcess(minidump_file, - symbol_paths, - machine_readable) ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_machine_readable_test b/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_machine_readable_test deleted file mode 100644 index 2aadb241..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_machine_readable_test +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2007, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -testdata_dir=$srcdir/src/processor/testdata -./src/processor/minidump_stackwalk -m $testdata_dir/minidump2.dmp \ - $testdata_dir/symbols | \ - tr -d '\015' | \ - diff -u $testdata_dir/minidump2.stackwalk.machine_readable.out - -exit $? diff --git a/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_test b/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_test deleted file mode 100644 index f9790279..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/minidump_stackwalk_test +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2006, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -testdata_dir=$srcdir/src/processor/testdata -./src/processor/minidump_stackwalk $testdata_dir/minidump2.dmp \ - $testdata_dir/symbols | \ - tr -d '\015' | \ - diff -u $testdata_dir/minidump2.stackwalk.out - -exit $? diff --git a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.cc b/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.cc deleted file mode 100644 index 839287bd..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.cc +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// pathname_stripper.cc: Manipulates pathnames into their component parts. -// -// See pathname_stripper.h for documentation. -// -// Author: Mark Mentovai - -#include "processor/pathname_stripper.h" - -namespace google_breakpad { - -// static -string PathnameStripper::File(const string &path) { - string::size_type slash = path.rfind('/'); - string::size_type backslash = path.rfind('\\'); - - string::size_type file_start = 0; - if (slash != string::npos && - (backslash == string::npos || slash > backslash)) { - file_start = slash + 1; - } else if (backslash != string::npos) { - file_start = backslash + 1; - } - - return path.substr(file_start); -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.h b/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.h deleted file mode 100644 index 17db75d6..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// pathname_stripper.h: Manipulates pathnames into their component parts. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_PATHNAME_STRIPPER_H__ -#define PROCESSOR_PATHNAME_STRIPPER_H__ - -#include - -namespace google_breakpad { - -using std::string; - -class PathnameStripper { - public: - // Given path, a pathname with components separated by slashes (/) or - // backslashes (\), returns the trailing component, without any separator. - // If path ends in a separator character, returns an empty string. - static string File(const string &path); -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_PATHNAME_STRIPPER_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/pathname_stripper_unittest.cc deleted file mode 100644 index 957c94f2..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/pathname_stripper_unittest.cc +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include "processor/pathname_stripper.h" -#include "processor/logging.h" - -#define ASSERT_TRUE(condition) \ - if (!(condition)) { \ - fprintf(stderr, "FAIL: %s @ %s:%d\n", #condition, __FILE__, __LINE__); \ - return false; \ - } - -#define ASSERT_EQ(e1, e2) ASSERT_TRUE((e1) == (e2)) - -namespace { - -using google_breakpad::PathnameStripper; - -static bool RunTests() { - ASSERT_EQ(PathnameStripper::File("/dir/file"), "file"); - ASSERT_EQ(PathnameStripper::File("\\dir\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("/dir\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("\\dir/file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir/file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir/\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir\\/file"), "file"); - ASSERT_EQ(PathnameStripper::File("file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir/"), ""); - ASSERT_EQ(PathnameStripper::File("dir\\"), ""); - ASSERT_EQ(PathnameStripper::File("dir/dir/"), ""); - ASSERT_EQ(PathnameStripper::File("dir\\dir\\"), ""); - ASSERT_EQ(PathnameStripper::File("dir1/dir2/file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir1\\dir2\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir1/dir2\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir1\\dir2/file"), "file"); - ASSERT_EQ(PathnameStripper::File(""), ""); - ASSERT_EQ(PathnameStripper::File("1"), "1"); - ASSERT_EQ(PathnameStripper::File("1/2"), "2"); - ASSERT_EQ(PathnameStripper::File("1\\2"), "2"); - ASSERT_EQ(PathnameStripper::File("/1/2"), "2"); - ASSERT_EQ(PathnameStripper::File("\\1\\2"), "2"); - ASSERT_EQ(PathnameStripper::File("dir//file"), "file"); - ASSERT_EQ(PathnameStripper::File("dir\\\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("/dir//file"), "file"); - ASSERT_EQ(PathnameStripper::File("\\dir\\\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("c:\\dir\\file"), "file"); - ASSERT_EQ(PathnameStripper::File("c:\\dir\\file.ext"), "file.ext"); - - return true; -} - -} // namespace - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator-inl.h b/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator-inl.h deleted file mode 100644 index aa0851d9..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator-inl.h +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// postfix_evaluator-inl.h: Postfix (reverse Polish) notation expression -// evaluator. -// -// Documentation in postfix_evaluator.h. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_POSTFIX_EVALUATOR_INL_H__ -#define PROCESSOR_POSTFIX_EVALUATOR_INL_H__ - - -#include - -#include "processor/postfix_evaluator.h" -#include "google_breakpad/processor/memory_region.h" -#include "processor/logging.h" - -namespace google_breakpad { - -using std::istringstream; -using std::ostringstream; - - -// A small class used in Evaluate to make sure to clean up the stack -// before returning failure. -class AutoStackClearer { - public: - explicit AutoStackClearer(vector *stack) : stack_(stack) {} - ~AutoStackClearer() { stack_->clear(); } - - private: - vector *stack_; -}; - - -template -bool PostfixEvaluator::Evaluate(const string &expression, - DictionaryValidityType *assigned) { - // Ensure that the stack is cleared before returning. - AutoStackClearer clearer(&stack_); - - // Tokenize, splitting on whitespace. - istringstream stream(expression); - string token; - while (stream >> token) { - // There are enough binary operations that do exactly the same thing - // (other than the specific operation, of course) that it makes sense - // to share as much code as possible. - enum BinaryOperation { - BINARY_OP_NONE = 0, - BINARY_OP_ADD, - BINARY_OP_SUBTRACT, - BINARY_OP_MULTIPLY, - BINARY_OP_DIVIDE_QUOTIENT, - BINARY_OP_DIVIDE_MODULUS - }; - - BinaryOperation operation = BINARY_OP_NONE; - if (token == "+") - operation = BINARY_OP_ADD; - else if (token == "-") - operation = BINARY_OP_SUBTRACT; - else if (token == "*") - operation = BINARY_OP_MULTIPLY; - else if (token == "/") - operation = BINARY_OP_DIVIDE_QUOTIENT; - else if (token == "%") - operation = BINARY_OP_DIVIDE_MODULUS; - - if (operation != BINARY_OP_NONE) { - // Get the operands. - ValueType operand1, operand2; - if (!PopValues(&operand1, &operand2)) { - BPLOG(ERROR) << "Could not PopValues to get two values for binary " - "operation " << token << ": " << expression; - return false; - } - - // Perform the operation. - ValueType result; - switch (operation) { - case BINARY_OP_ADD: - result = operand1 + operand2; - break; - case BINARY_OP_SUBTRACT: - result = operand1 - operand2; - break; - case BINARY_OP_MULTIPLY: - result = operand1 * operand2; - break; - case BINARY_OP_DIVIDE_QUOTIENT: - result = operand1 / operand2; - break; - case BINARY_OP_DIVIDE_MODULUS: - result = operand1 % operand2; - break; - case BINARY_OP_NONE: - // This will not happen, but compilers will want a default or - // BINARY_OP_NONE case. - BPLOG(ERROR) << "Not reached!"; - return false; - break; - } - - // Save the result. - PushValue(result); - } else if (token == "^") { - // ^ for unary dereference. Can't dereference without memory. - if (!memory_) { - BPLOG(ERROR) << "Attempt to dereference without memory: " << - expression; - return false; - } - - ValueType address; - if (!PopValue(&address)) { - BPLOG(ERROR) << "Could not PopValue to get value to derefence: " << - expression; - return false; - } - - ValueType value; - if (!memory_->GetMemoryAtAddress(address, &value)) { - BPLOG(ERROR) << "Could not dereference memory at address " << - HexString(address) << ": " << expression; - return false; - } - - PushValue(value); - } else if (token == "=") { - // = for assignment. - ValueType value; - if (!PopValue(&value)) { - BPLOG(ERROR) << "Could not PopValue to get value to assign: " << - expression; - return false; - } - - // Assignment is only meaningful when assigning into an identifier. - // The identifier must name a variable, not a constant. Variables - // begin with '$'. - string identifier; - if (PopValueOrIdentifier(NULL, &identifier) != POP_RESULT_IDENTIFIER) { - BPLOG(ERROR) << "PopValueOrIdentifier returned a value, but an " - "identifier is needed to assign " << - HexString(value) << ": " << expression; - return false; - } - if (identifier.empty() || identifier[0] != '$') { - BPLOG(ERROR) << "Can't assign " << HexString(value) << " to " << - identifier << ": " << expression; - return false; - } - - (*dictionary_)[identifier] = value; - if (assigned) - (*assigned)[identifier] = true; - } else { - // The token is not an operator, it's a literal value or an identifier. - // Push it onto the stack as-is. Use push_back instead of PushValue - // because PushValue pushes ValueType as a string, but token is already - // a string. - stack_.push_back(token); - } - } - - // If there's anything left on the stack, it indicates incomplete execution. - // This is a failure case. If the stack is empty, evalution was complete - // and successful. - BPLOG_IF(ERROR, !stack_.empty()) << "Incomplete execution: " << expression; - return stack_.empty(); -} - - -template -typename PostfixEvaluator::PopResult -PostfixEvaluator::PopValueOrIdentifier( - ValueType *value, string *identifier) { - // There needs to be at least one element on the stack to pop. - if (!stack_.size()) - return POP_RESULT_FAIL; - - string token = stack_.back(); - stack_.pop_back(); - - // First, try to treat the value as a literal. In order for this to - // succed, the entire string must be parseable as ValueType. If this - // isn't possible, it can't be a literal, so treat it as an identifier - // instead. - istringstream token_stream(token); - ValueType literal; - if (token_stream >> literal && token_stream.peek() == EOF) { - if (value) { - *value = literal; - } - return POP_RESULT_VALUE; - } else { - if (identifier) { - *identifier = token; - } - return POP_RESULT_IDENTIFIER; - } -} - - -template -bool PostfixEvaluator::PopValue(ValueType *value) { - ValueType literal; - string token; - PopResult result; - if ((result = PopValueOrIdentifier(&literal, &token)) == POP_RESULT_FAIL) { - return false; - } else if (result == POP_RESULT_VALUE) { - // This is the easy case. - *value = literal; - } else { // result == POP_RESULT_IDENTIFIER - // There was an identifier at the top of the stack. Resolve it to a - // value by looking it up in the dictionary. - typename DictionaryType::const_iterator iterator = - dictionary_->find(token); - if (iterator == dictionary_->end()) { - // The identifier wasn't found in the dictionary. Don't imply any - // default value, just fail. - BPLOG(ERROR) << "Identifier " << token << " not in dictionary"; - return false; - } - - *value = iterator->second; - } - - return true; -} - - -template -bool PostfixEvaluator::PopValues(ValueType *value1, - ValueType *value2) { - return PopValue(value2) && PopValue(value1); -} - - -template -void PostfixEvaluator::PushValue(const ValueType &value) { - ostringstream token_stream; - token_stream << value; - stack_.push_back(token_stream.str()); -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_POSTFIX_EVALUATOR_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator.h b/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator.h deleted file mode 100644 index 552ed159..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator.h +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// postfix_evaluator.h: Postfix (reverse Polish) notation expression evaluator. -// -// PostfixEvaluator evaluates an expression, using the expression itself -// in postfix (reverse Polish) notation and a dictionary mapping constants -// and variables to their values. The evaluator supports standard -// arithmetic operations, assignment into variables, and when an optional -// MemoryRange is provided, dereferencing. (Any unary key-to-value operation -// may be used with a MemoryRange implementation that returns the appropriate -// values, but PostfixEvaluator was written with dereferencing in mind.) -// -// The expression language is simple. Expressions are supplied as strings, -// with operands and operators delimited by whitespace. Operands may be -// either literal values suitable for ValueType, or constants or variables, -// which reference the dictionary. The supported binary operators are + -// (addition), - (subtraction), * (multiplication), / (quotient of division), -// and % (modulus of division). The unary ^ (dereference) operator is also -// provided. These operators allow any operand to be either a literal -// value, constant, or variable. Assignment (=) of any type of operand into -// a variable is also supported. -// -// The dictionary is provided as a map with string keys. Keys beginning -// with the '$' character are treated as variables. All other keys are -// treated as constants. Any results must be assigned into variables in the -// dictionary. These variables do not need to exist prior to calling -// Evaluate, unless used in an expression prior to being assigned to. The -// internal stack state is not made available after evaluation, and any -// values remaining on the stack are treated as evidence of incomplete -// execution and cause the evaluator to indicate failure. -// -// PostfixEvaluator is intended to support evaluation of "program strings" -// obtained from MSVC frame data debugging information in pdb files as -// returned by the DIA APIs. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_POSTFIX_EVALUATOR_H__ -#define PROCESSOR_POSTFIX_EVALUATOR_H__ - - -#include -#include -#include - -namespace google_breakpad { - -using std::map; -using std::string; -using std::vector; - -class MemoryRegion; - -template -class PostfixEvaluator { - public: - typedef map DictionaryType; - typedef map DictionaryValidityType; - - // Create a PostfixEvaluator object that may be used (with Evaluate) on - // one or more expressions. PostfixEvaluator does not take ownership of - // either argument. |memory| may be NULL, in which case dereferencing - // (^) will not be supported. |dictionary| may be NULL, but evaluation - // will fail in that case unless set_dictionary is used before calling - // Evaluate. - PostfixEvaluator(DictionaryType *dictionary, MemoryRegion *memory) - : dictionary_(dictionary), memory_(memory), stack_() {} - - // Evaluate the expression. The results of execution will be stored - // in one (or more) variables in the dictionary. Returns false if any - // failures occure during execution, leaving variables in the dictionary - // in an indeterminate state. If assigned is non-NULL, any keys set in - // the dictionary as a result of evaluation will also be set to true in - // assigned, providing a way to determine if an expression modifies any - // of its input variables. - bool Evaluate(const string &expression, DictionaryValidityType *assigned); - - DictionaryType* dictionary() const { return dictionary_; } - - // Reset the dictionary. PostfixEvaluator does not take ownership. - void set_dictionary(DictionaryType *dictionary) {dictionary_ = dictionary; } - - private: - // Return values for PopValueOrIdentifier - enum PopResult { - POP_RESULT_FAIL = 0, - POP_RESULT_VALUE, - POP_RESULT_IDENTIFIER - }; - - // Retrieves the topmost literal value, constant, or variable from the - // stack. Returns POP_RESULT_VALUE if the topmost entry is a literal - // value, and sets |value| accordingly. Returns POP_RESULT_IDENTIFIER - // if the topmost entry is a constant or variable identifier, and sets - // |identifier| accordingly. Returns POP_RESULT_FAIL on failure, such - // as when the stack is empty. - PopResult PopValueOrIdentifier(ValueType *value, string *identifier); - - // Retrieves the topmost value on the stack. If the topmost entry is - // an identifier, the dictionary is queried for the identifier's value. - // Returns false on failure, such as when the stack is empty or when - // a nonexistent identifier is named. - bool PopValue(ValueType *value); - - // Retrieves the top two values on the stack, in the style of PopValue. - // value2 is popped before value1, so that value1 corresponds to the - // entry that was pushed prior to value2. Returns false on failure. - bool PopValues(ValueType *value1, ValueType *value2); - - // Pushes a new value onto the stack. - void PushValue(const ValueType &value); - - // The dictionary mapping constant and variable identifiers (strings) to - // values. Keys beginning with '$' are treated as variable names, and - // PostfixEvaluator is free to create and modify these keys. Weak pointer. - DictionaryType *dictionary_; - - // If non-NULL, the MemoryRegion used for dereference (^) operations. - // If NULL, dereferencing is unsupported and will fail. Weak pointer. - MemoryRegion *memory_; - - // The stack contains state information as execution progresses. Values - // are pushed on to it as the expression string is read and as operations - // yield values; values are popped when used as operands to operators. - vector stack_; -}; - -} // namespace google_breakpad - - -#endif // PROCESSOR_POSTFIX_EVALUATOR_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator_unittest.cc deleted file mode 100644 index d687cc83..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/postfix_evaluator_unittest.cc +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// postfix_evaluator_unittest.cc: Unit tests for PostfixEvaluator. -// -// Author: Mark Mentovai - -#include -#include -#include - -#include "processor/postfix_evaluator-inl.h" - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/processor/memory_region.h" -#include "processor/logging.h" - - -namespace { - - -using std::map; -using std::string; -using google_breakpad::MemoryRegion; -using google_breakpad::PostfixEvaluator; - - -// FakeMemoryRegion is used to test PostfixEvaluator's dereference (^) -// operator. The result of dereferencing a value is one greater than -// the value. -class FakeMemoryRegion : public MemoryRegion { - public: - virtual u_int64_t GetBase() { return 0; } - virtual u_int32_t GetSize() { return 0; } - virtual bool GetMemoryAtAddress(u_int64_t address, u_int8_t *value) { - *value = address + 1; - return true; - } - virtual bool GetMemoryAtAddress(u_int64_t address, u_int16_t *value) { - *value = address + 1; - return true; - } - virtual bool GetMemoryAtAddress(u_int64_t address, u_int32_t *value) { - *value = address + 1; - return true; - } - virtual bool GetMemoryAtAddress(u_int64_t address, u_int64_t *value) { - *value = address + 1; - return true; - } -}; - - -struct EvaluateTest { - // Expression passed to PostfixEvaluator::Evaluate. - const string expression; - - // True if the expression is expected to be evaluable, false if evaluation - // is expected to fail. - bool evaluable; -}; - - -struct EvaluateTestSet { - // The dictionary used for all tests in the set. - PostfixEvaluator::DictionaryType *dictionary; - - // The list of tests. - const EvaluateTest *evaluate_tests; - - // The number of tests. - unsigned int evaluate_test_count; - - // Identifiers and their expected values upon completion of the Evaluate - // tests in the set. - map *validate_data; -}; - - -static bool RunTests() { - // The first test set checks the basic operations and failure modes. - PostfixEvaluator::DictionaryType dictionary_0; - const EvaluateTest evaluate_tests_0[] = { - { "$rAdd 2 2 + =", true }, // $rAdd = 2 + 2 = 4 - { "$rAdd $rAdd 2 + =", true }, // $rAdd = $rAdd + 2 = 6 - { "$rAdd 2 $rAdd + =", true }, // $rAdd = 2 + $rAdd = 8 - { "99", false }, // put some junk on the stack... - { "$rAdd2 2 2 + =", true }, // ...and make sure things still work - { "$rAdd2\t2\n2 + =", true }, // same but with different whitespace - { "$rAdd2 2 2 + = ", true }, // trailing whitespace - { " $rAdd2 2 2 + =", true }, // leading whitespace - { "$rAdd2 2 2 + =", true }, // extra whitespace - { "$T0 2 = +", false }, // too few operands for add - { "2 + =", false }, // too few operands for add - { "2 +", false }, // too few operands for add - { "+", false }, // too few operands for add - { "^", false }, // too few operands for dereference - { "=", false }, // too few operands for assignment - { "2 =", false }, // too few operands for assignment - { "2 2 + =", false }, // too few operands for assignment - { "2 2 =", false }, // can't assign into a literal - { "k 2 =", false }, // can't assign into a constant - { "2", false }, // leftover data on stack - { "2 2 +", false }, // leftover data on stack - { "$rAdd", false }, // leftover data on stack - { "0 $T1 0 0 + =", false }, // leftover data on stack - { "$T2 $T2 2 + =", false }, // can't operate on an undefined value - { "$rMul 9 6 * =", true }, // $rMul = 9 * 6 = 54 - { "$rSub 9 6 - =", true }, // $rSub = 9 - 6 = 3 - { "$rDivQ 9 6 / =", true }, // $rDivQ = 9 / 6 = 1 - { "$rDivM 9 6 % =", true }, // $rDivM = 9 % 6 = 3 - { "$rDeref 9 ^ =", true } // $rDeref = ^9 = 10 (FakeMemoryRegion) - }; - map validate_data_0; - validate_data_0["$rAdd"] = 8; - validate_data_0["$rAdd2"] = 4; - validate_data_0["$rSub"] = 3; - validate_data_0["$rMul"] = 54; - validate_data_0["$rDivQ"] = 1; - validate_data_0["$rDivM"] = 3; - validate_data_0["$rDeref"] = 10; - - // The second test set simulates a couple of MSVC program strings. - // The data is fudged a little bit because the tests use FakeMemoryRegion - // instead of a real stack snapshot, but the program strings are real and - // the implementation doesn't know or care that the data is not real. - PostfixEvaluator::DictionaryType dictionary_1; - dictionary_1["$ebp"] = 0xbfff0010; - dictionary_1["$eip"] = 0x10000000; - dictionary_1["$esp"] = 0xbfff0000; - dictionary_1[".cbSavedRegs"] = 4; - dictionary_1[".cbParams"] = 4; - dictionary_1[".raSearchStart"] = 0xbfff0020; - const EvaluateTest evaluate_tests_1[] = { - { "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = " - "$L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + =", true }, - // Intermediate state: $T0 = 0xbfff0010, $eip = 0xbfff0015, - // $ebp = 0xbfff0011, $esp = 0xbfff0018, - // $L = 0xbfff000c, $P = 0xbfff001c - { "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = " - "$L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ =", - true }, - // Intermediate state: $T0 = 0xbfff0011, $eip = 0xbfff0016, - // $ebp = 0xbfff0012, $esp = 0xbfff0019, - // $L = 0xbfff000d, $P = 0xbfff001d, - // $ebx = 0xbffefff6 - { "$T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = " - "$esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = " - "$ebx $T0 28 - ^ =", - true } - }; - map validate_data_1; - validate_data_1["$T0"] = 0xbfff0012; - validate_data_1["$T1"] = 0xbfff0020; - validate_data_1["$T2"] = 0xbfff0019; - validate_data_1["$eip"] = 0xbfff0021; - validate_data_1["$ebp"] = 0xbfff0012; - validate_data_1["$esp"] = 0xbfff0024; - validate_data_1["$L"] = 0xbfff000e; - validate_data_1["$P"] = 0xbfff0028; - validate_data_1["$ebx"] = 0xbffefff7; - validate_data_1[".cbSavedRegs"] = 4; - validate_data_1[".cbParams"] = 4; - - EvaluateTestSet evaluate_test_sets[] = { - { &dictionary_0, evaluate_tests_0, - sizeof(evaluate_tests_0) / sizeof(EvaluateTest), &validate_data_0 }, - { &dictionary_1, evaluate_tests_1, - sizeof(evaluate_tests_1) / sizeof(EvaluateTest), &validate_data_1 }, - }; - - unsigned int evaluate_test_set_count = sizeof(evaluate_test_sets) / - sizeof(EvaluateTestSet); - - FakeMemoryRegion fake_memory; - PostfixEvaluator postfix_evaluator = - PostfixEvaluator(NULL, &fake_memory); - - for (unsigned int evaluate_test_set_index = 0; - evaluate_test_set_index < evaluate_test_set_count; - ++evaluate_test_set_index) { - EvaluateTestSet *evaluate_test_set = - &evaluate_test_sets[evaluate_test_set_index]; - const EvaluateTest *evaluate_tests = evaluate_test_set->evaluate_tests; - unsigned int evaluate_test_count = evaluate_test_set->evaluate_test_count; - - // The same dictionary will be used for each test in the set. Earlier - // tests can affect the state of the dictionary for later tests. - postfix_evaluator.set_dictionary(evaluate_test_set->dictionary); - - // Use a new validity dictionary for each test set. - PostfixEvaluator::DictionaryValidityType assigned; - - for (unsigned int evaluate_test_index = 0; - evaluate_test_index < evaluate_test_count; - ++evaluate_test_index) { - const EvaluateTest *evaluate_test = &evaluate_tests[evaluate_test_index]; - - // Do the test. - bool result = postfix_evaluator.Evaluate(evaluate_test->expression, - &assigned); - if (result != evaluate_test->evaluable) { - fprintf(stderr, "FAIL: evaluate set %d/%d, test %d/%d, " - "expression \"%s\", expected %s, observed %s\n", - evaluate_test_set_index, evaluate_test_set_count, - evaluate_test_index, evaluate_test_count, - evaluate_test->expression.c_str(), - evaluate_test->evaluable ? "evaluable" : "not evaluable", - result ? "evaluted" : "not evaluated"); - return false; - } - } - - // Validate the results. - for (map::const_iterator validate_iterator = - evaluate_test_set->validate_data->begin(); - validate_iterator != evaluate_test_set->validate_data->end(); - ++validate_iterator) { - const string identifier = validate_iterator->first; - unsigned int expected_value = validate_iterator->second; - - map::const_iterator dictionary_iterator = - evaluate_test_set->dictionary->find(identifier); - - // The identifier must exist in the dictionary. - if (dictionary_iterator == evaluate_test_set->dictionary->end()) { - fprintf(stderr, "FAIL: evaluate test set %d/%d, " - "validate identifier \"%s\", " - "expected %d, observed not found\n", - evaluate_test_set_index, evaluate_test_set_count, - identifier.c_str(), expected_value); - return false; - } - - // The value in the dictionary must be the same as the expected value. - unsigned int observed_value = dictionary_iterator->second; - if (expected_value != observed_value) { - fprintf(stderr, "FAIL: evaluate test set %d/%d, " - "validate identifier \"%s\", " - "expected %d, observed %d\n", - evaluate_test_set_index, evaluate_test_set_count, - identifier.c_str(), expected_value, observed_value); - return false; - } - - // The value must be set in the "assigned" dictionary if it was a - // variable. It must not have been assigned if it was a constant. - bool expected_assigned = identifier[0] == '$'; - bool observed_assigned = false; - PostfixEvaluator::DictionaryValidityType::const_iterator - iterator_assigned = assigned.find(identifier); - if (iterator_assigned != assigned.end()) { - observed_assigned = iterator_assigned->second; - } - if (expected_assigned != observed_assigned) { - fprintf(stderr, "FAIL: evaluate test set %d/%d, " - "validate assignment of \"%s\", " - "expected %d, observed %d\n", - evaluate_test_set_index, evaluate_test_set_count, - identifier.c_str(), expected_assigned, observed_assigned); - return false; - } - } - } - - return true; -} - - -} // namespace - - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/process_state.cc b/thirdparty/google-breakpad/r318/src/processor/process_state.cc deleted file mode 100644 index 934792b3..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/process_state.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// process_state.cc: A snapshot of a process, in a fully-digested state. -// -// See process_state.h for documentation. -// -// Author: Mark Mentovai - -#include "google_breakpad/processor/process_state.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_modules.h" - -namespace google_breakpad { - -ProcessState::~ProcessState() { - Clear(); -} - -void ProcessState::Clear() { - time_date_stamp_ = 0; - crashed_ = false; - crash_reason_.clear(); - crash_address_ = 0; - requesting_thread_ = -1; - for (vector::const_iterator iterator = threads_.begin(); - iterator != threads_.end(); - ++iterator) { - delete *iterator; - } - threads_.clear(); - system_info_.Clear(); - delete modules_; - modules_ = NULL; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/range_map-inl.h b/thirdparty/google-breakpad/r318/src/processor/range_map-inl.h deleted file mode 100644 index 77bf7d20..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/range_map-inl.h +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// range_map-inl.h: Range map implementation. -// -// See range_map.h for documentation. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_RANGE_MAP_INL_H__ -#define PROCESSOR_RANGE_MAP_INL_H__ - - -#include - -#include "processor/range_map.h" -#include "processor/logging.h" - - -namespace google_breakpad { - - -template -bool RangeMap::StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry) { - AddressType high = base + size - 1; - - // Check for undersize or overflow. - if (size <= 0 || high < base) { - // The processor will hit this case too frequently with common symbol - // files in the size == 0 case, which is more suited to a DEBUG channel. - // Filter those out since there's no DEBUG channel at the moment. - BPLOG_IF(INFO, size != 0) << "StoreRange failed, " << HexString(base) << - "+" << HexString(size) << ", " << - HexString(high); - return false; - } - - // Ensure that this range does not overlap with another one already in the - // map. - MapConstIterator iterator_base = map_.lower_bound(base); - MapConstIterator iterator_high = map_.lower_bound(high); - - if (iterator_base != iterator_high) { - // Some other range begins in the space used by this range. It may be - // contained within the space used by this range, or it may extend lower. - // Regardless, it is an error. - AddressType other_base = iterator_base->second.base(); - AddressType other_size = iterator_base->first - other_base + 1; - BPLOG(INFO) << "StoreRange failed, an existing range is contained by or " - "extends lower than the new range: new " << - HexString(base) << "+" << HexString(size) << ", existing " << - HexString(other_base) << "+" << HexString(other_size); - return false; - } - - if (iterator_high != map_.end()) { - if (iterator_high->second.base() <= high) { - // The range above this one overlaps with this one. It may fully - // contain this range, or it may begin within this range and extend - // higher. Regardless, it's an error. - AddressType other_base = iterator_high->second.base(); - AddressType other_size = iterator_high->first - other_base + 1; - BPLOG(INFO) << "StoreRange failed, an existing range contains or " - "extends higher than the new range: new " << - HexString(base) << "+" << HexString(size) << - ", existing " << - HexString(other_base) << "+" << HexString(other_size); - return false; - } - } - - // Store the range in the map by its high address, so that lower_bound can - // be used to quickly locate a range by address. - map_.insert(MapValue(high, Range(base, entry))); - return true; -} - - -template -bool RangeMap::RetrieveRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRange requires |entry|"; - assert(entry); - - MapConstIterator iterator = map_.lower_bound(address); - if (iterator == map_.end()) - return false; - - // The map is keyed by the high address of each range, so |address| is - // guaranteed to be lower than the range's high address. If |range| is - // not directly preceded by another range, it's possible for address to - // be below the range's low address, though. When that happens, address - // references something not within any range, so return false. - if (address < iterator->second.base()) - return false; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->second.base(); - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -bool RangeMap::RetrieveNearestRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveNearestRange requires |entry|"; - assert(entry); - - // If address is within a range, RetrieveRange can handle it. - if (RetrieveRange(address, entry, entry_base, entry_size)) - return true; - - // upper_bound gives the first element whose key is greater than address, - // but we want the first element whose key is less than or equal to address. - // Decrement the iterator to get there, but not if the upper_bound already - // points to the beginning of the map - in that case, address is lower than - // the lowest stored key, so return false. - MapConstIterator iterator = map_.upper_bound(address); - if (iterator == map_.begin()) - return false; - --iterator; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->first; - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -bool RangeMap::RetrieveRangeAtIndex( - int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { - BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRangeAtIndex requires |entry|"; - assert(entry); - - if (index >= GetCount()) { - BPLOG(ERROR) << "Index out of range: " << index << "/" << GetCount(); - return false; - } - - // Walk through the map. Although it's ordered, it's not a vector, so it - // can't be addressed directly by index. - MapConstIterator iterator = map_.begin(); - for (int this_index = 0; this_index < index; ++this_index) - ++iterator; - - *entry = iterator->second.entry(); - if (entry_base) - *entry_base = iterator->first; - if (entry_size) - *entry_size = iterator->first - iterator->second.base() + 1; - - return true; -} - - -template -int RangeMap::GetCount() const { - return map_.size(); -} - - -template -void RangeMap::Clear() { - map_.clear(); -} - - -} // namespace google_breakpad - - -#endif // PROCESSOR_RANGE_MAP_INL_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/range_map.h b/thirdparty/google-breakpad/r318/src/processor/range_map.h deleted file mode 100644 index a7b67412..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/range_map.h +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// range_map.h: Range maps. -// -// A range map associates a range of addresses with a specific object. This -// is useful when certain objects of variable size are located within an -// address space. The range map makes it simple to determine which object is -// associated with a specific address, which may be any address within the -// range associated with an object. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_RANGE_MAP_H__ -#define PROCESSOR_RANGE_MAP_H__ - - -#include - - -namespace google_breakpad { - - -template -class RangeMap { - public: - RangeMap() : map_() {} - - // Inserts a range into the map. Returns false for a parameter error, - // or if the location of the range would conflict with a range already - // stored in the map. - bool StoreRange(const AddressType &base, - const AddressType &size, - const EntryType &entry); - - // Locates the range encompassing the supplied address. If there is - // no such range, returns false. entry_base and entry_size, if non-NULL, - // are set to the base and size of the entry's range. - bool RetrieveRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const; - - // Locates the range encompassing the supplied address, if one exists. - // If no range encompasses the supplied address, locates the nearest range - // to the supplied address that is lower than the address. Returns false - // if no range meets these criteria. entry_base and entry_size, if - // non-NULL, are set to the base and size of the entry's range. - bool RetrieveNearestRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; - - // Treating all ranges as a list ordered by the address spaces that they - // occupy, locates the range at the index specified by index. Returns - // false if index is larger than the number of ranges stored. entry_base - // and entry_size, if non-NULL, are set to the base and size of the entry's - // range. - // - // RetrieveRangeAtIndex is not optimized for speedy operation. - bool RetrieveRangeAtIndex(int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; - - // Returns the number of ranges stored in the RangeMap. - int GetCount() const; - - // Empties the range map, restoring it to the state it was when it was - // initially created. - void Clear(); - - private: - class Range { - public: - Range(const AddressType &base, const EntryType &entry) - : base_(base), entry_(entry) {} - - AddressType base() const { return base_; } - EntryType entry() const { return entry_; } - - private: - // The base address of the range. The high address does not need to - // be stored, because RangeMap uses it as the key to the map. - const AddressType base_; - - // The entry corresponding to a range. - const EntryType entry_; - }; - - // Convenience types. - typedef std::map AddressToRangeMap; - typedef typename AddressToRangeMap::const_iterator MapConstIterator; - typedef typename AddressToRangeMap::value_type MapValue; - - // Maps the high address of each range to a EntryType. - AddressToRangeMap map_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_RANGE_MAP_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/range_map_unittest.cc b/thirdparty/google-breakpad/r318/src/processor/range_map_unittest.cc deleted file mode 100644 index 5b5ce573..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/range_map_unittest.cc +++ /dev/null @@ -1,494 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// range_map_unittest.cc: Unit tests for RangeMap -// -// Author: Mark Mentovai - - -#include -#include - -#include "processor/range_map-inl.h" - -#include "processor/linked_ptr.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" - - -namespace { - - -using google_breakpad::linked_ptr; -using google_breakpad::scoped_ptr; -using google_breakpad::RangeMap; - - -// A CountedObject holds an int. A global (not thread safe!) count of -// allocated CountedObjects is maintained to help test memory management. -class CountedObject { - public: - explicit CountedObject(int id) : id_(id) { ++count_; } - ~CountedObject() { --count_; } - - static int count() { return count_; } - int id() const { return id_; } - - private: - static int count_; - int id_; -}; - -int CountedObject::count_; - - -typedef int AddressType; -typedef RangeMap< AddressType, linked_ptr > TestMap; - - -// RangeTest contains data to use for store and retrieve tests. See -// RunTests for descriptions of the tests. -struct RangeTest { - // Base address to use for test - AddressType address; - - // Size of range to use for test - AddressType size; - - // Unique ID of range - unstorable ranges must have unique IDs too - int id; - - // Whether this range is expected to be stored successfully or not - bool expect_storable; -}; - - -// A RangeTestSet encompasses multiple RangeTests, which are run in -// sequence on the same RangeMap. -struct RangeTestSet { - // An array of RangeTests - const RangeTest *range_tests; - - // The number of tests in the set - unsigned int range_test_count; -}; - - -// StoreTest uses the data in a RangeTest and calls StoreRange on the -// test RangeMap. It returns true if the expected result occurred, and -// false if something else happened. -static bool StoreTest(TestMap *range_map, const RangeTest *range_test) { - linked_ptr object(new CountedObject(range_test->id)); - bool stored = range_map->StoreRange(range_test->address, - range_test->size, - object); - - if (stored != range_test->expect_storable) { - fprintf(stderr, "FAILED: " - "StoreRange id %d, expected %s, observed %s\n", - range_test->id, - range_test->expect_storable ? "storable" : "not storable", - stored ? "stored" : "not stored"); - return false; - } - - return true; -} - - -// RetrieveTest uses the data in RangeTest and calls RetrieveRange on the -// test RangeMap. If it retrieves the expected value (which can be no -// map entry at the specified range,) it returns true, otherwise, it returns -// false. RetrieveTest will check the values around the base address and -// the high address of a range to guard against off-by-one errors. -static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) { - for (unsigned int side = 0; side <= 1; ++side) { - // When side == 0, check the low side (base address) of each range. - // When side == 1, check the high side (base + size) of each range. - - // Check one-less and one-greater than the target address in addition - // to the target address itself. - - // If the size of the range is only 1, don't check one greater than - // the base or one less than the high - for a successfully stored - // range, these tests would erroneously fail because the range is too - // small. - AddressType low_offset = -1; - AddressType high_offset = 1; - if (range_test->size == 1) { - if (!side) // When checking the low side, - high_offset = 0; // don't check one over the target. - else // When checking the high side, - low_offset = 0; // don't check one under the target. - } - - for (AddressType offset = low_offset; offset <= high_offset; ++offset) { - AddressType address = - offset + - (!side ? range_test->address : - range_test->address + range_test->size - 1); - - bool expected_result = false; // This is correct for tests not stored. - if (range_test->expect_storable) { - if (offset == 0) // When checking the target address, - expected_result = true; // test should always succeed. - else if (offset == -1) // When checking one below the target, - expected_result = side; // should fail low and succeed high. - else // When checking one above the target, - expected_result = !side; // should succeed low and fail high. - } - - linked_ptr object; - AddressType retrieved_base; - AddressType retrieved_size; - bool retrieved = range_map->RetrieveRange(address, &object, - &retrieved_base, - &retrieved_size); - - bool observed_result = retrieved && object->id() == range_test->id; - - if (observed_result != expected_result) { - fprintf(stderr, "FAILED: " - "RetrieveRange id %d, side %d, offset %d, " - "expected %s, observed %s\n", - range_test->id, - side, - offset, - expected_result ? "true" : "false", - observed_result ? "true" : "false"); - return false; - } - - // If a range was successfully retrieved, check that the returned - // bounds match the range as stored. - if (observed_result == true && - (retrieved_base != range_test->address || - retrieved_size != range_test->size)) { - fprintf(stderr, "FAILED: " - "RetrieveRange id %d, side %d, offset %d, " - "expected base/size %d/%d, observed %d/%d\n", - range_test->id, - side, - offset, - range_test->address, range_test->size, - retrieved_base, retrieved_size); - return false; - } - - // Now, check RetrieveNearestRange. The nearest range is always - // expected to be different from the test range when checking one - // less than the low side. - bool expected_nearest = range_test->expect_storable; - if (!side && offset < 0) - expected_nearest = false; - - linked_ptr nearest_object; - AddressType nearest_base; - bool retrieved_nearest = range_map->RetrieveNearestRange(address, - &nearest_object, - &nearest_base, - NULL); - - // When checking one greater than the high side, RetrieveNearestRange - // should usually return the test range. When a different range begins - // at that address, though, then RetrieveNearestRange should return the - // range at the address instead of the test range. - if (side && offset > 0 && nearest_base == address) { - expected_nearest = false; - } - - bool observed_nearest = retrieved_nearest && - nearest_object->id() == range_test->id; - - if (observed_nearest != expected_nearest) { - fprintf(stderr, "FAILED: " - "RetrieveNearestRange id %d, side %d, offset %d, " - "expected %s, observed %s\n", - range_test->id, - side, - offset, - expected_nearest ? "true" : "false", - observed_nearest ? "true" : "false"); - return false; - } - } - } - - return true; -} - - -// Test RetrieveRangeAtIndex, which is supposed to return objects in order -// according to their addresses. This test is performed by looping through -// the map, calling RetrieveRangeAtIndex for all possible indices in sequence, -// and verifying that each call returns a different object than the previous -// call, and that ranges are returned with increasing base addresses. Returns -// false if the test fails. -static bool RetrieveIndexTest(TestMap *range_map, int set) { - linked_ptr object; - CountedObject *last_object = NULL; - AddressType last_base = 0; - - int object_count = range_map->GetCount(); - for (int object_index = 0; object_index < object_count; ++object_index) { - AddressType base; - if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) { - fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " - "expected success, observed failure\n", - set, object_index); - return false; - } - - if (!object.get()) { - fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " - "expected object, observed NULL\n", - set, object_index); - return false; - } - - // It's impossible to do these comparisons unless there's a previous - // object to compare against. - if (last_object) { - // The object must be different from the last one. - if (object->id() == last_object->id()) { - fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " - "expected different objects, observed same objects (%d)\n", - set, object_index, object->id()); - return false; - } - - // Each object must have a base greater than the previous object's base. - if (base <= last_base) { - fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " - "expected different bases, observed same bases (%d)\n", - set, object_index, base); - return false; - } - } - - last_object = object.get(); - last_base = base; - } - - // Make sure that RetrieveRangeAtIndex doesn't allow lookups at indices that - // are too high. - if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL, NULL)) { - fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d (too large), " - "expected failure, observed success\n", - set, object_count); - return false; - } - - return true; -} - - -// RunTests runs a series of test sets. -static bool RunTests() { - // These tests will be run sequentially. The first set of tests exercises - // most functions of RangeTest, and verifies all of the bounds-checking. - const RangeTest range_tests_0[] = { - { INT_MIN, 16, 1, true }, // lowest possible range - { -2, 5, 2, true }, // a range through zero - { INT_MAX - 9, 11, 3, false }, // tests anti-overflow - { INT_MAX - 9, 10, 4, true }, // highest possible range - { 5, 0, 5, false }, // tests anti-zero-size - { 5, 1, 6, true }, // smallest possible range - { -20, 15, 7, true }, // entirely negative - - { 10, 10, 10, true }, // causes the following tests to fail - { 9, 10, 11, false }, // one-less base, one-less high - { 9, 11, 12, false }, // one-less base, identical high - { 9, 12, 13, false }, // completely contains existing - { 10, 9, 14, false }, // identical base, one-less high - { 10, 10, 15, false }, // exactly identical to existing range - { 10, 11, 16, false }, // identical base, one-greater high - { 11, 8, 17, false }, // contained completely within - { 11, 9, 18, false }, // one-greater base, identical high - { 11, 10, 19, false }, // one-greater base, one-greater high - { 9, 2, 20, false }, // overlaps bottom by one - { 10, 1, 21, false }, // overlaps bottom by one, contained - { 19, 1, 22, false }, // overlaps top by one, contained - { 19, 2, 23, false }, // overlaps top by one - - { 9, 1, 24, true }, // directly below without overlap - { 20, 1, 25, true }, // directly above without overlap - - { 6, 3, 26, true }, // exactly between two ranges, gapless - { 7, 3, 27, false }, // tries to span two ranges - { 7, 5, 28, false }, // tries to span three ranges - { 4, 20, 29, false }, // tries to contain several ranges - - { 30, 50, 30, true }, - { 90, 25, 31, true }, - { 35, 65, 32, false }, // tries to span two noncontiguous - { 120, 10000, 33, true }, // > 8-bit - { 20000, 20000, 34, true }, // > 8-bit - { 0x10001, 0x10001, 35, true }, // > 16-bit - - { 27, -1, 36, false } // tests high < base - }; - - // Attempt to fill the entire space. The entire space must be filled with - // three stores because AddressType is signed for these tests, so RangeMap - // treats the size as signed and rejects sizes that appear to be negative. - // Even if these tests were run as unsigned, two stores would be needed - // to fill the space because the entire size of the space could only be - // described by using one more bit than would be present in AddressType. - const RangeTest range_tests_1[] = { - { INT_MIN, INT_MAX, 50, true }, // From INT_MIN to -2, inclusive - { -1, 2, 51, true }, // From -1 to 0, inclusive - { 1, INT_MAX, 52, true }, // From 1 to INT_MAX, inclusive - { INT_MIN, INT_MAX, 53, false }, // Can't fill the space twice - { -1, 2, 54, false }, - { 1, INT_MAX, 55, false }, - { -3, 6, 56, false }, // -3 to 2, inclusive - spans 3 ranges - }; - - // A light round of testing to verify that RetrieveRange does the right - // the right thing at the extremities of the range when nothing is stored - // there. Checks are forced without storing anything at the extremities - // by setting size = 0. - const RangeTest range_tests_2[] = { - { INT_MIN, 0, 100, false }, // makes RetrieveRange check low end - { -1, 3, 101, true }, - { INT_MAX, 0, 102, false }, // makes RetrieveRange check high end - }; - - // Similar to the previous test set, but with a couple of ranges closer - // to the extremities. - const RangeTest range_tests_3[] = { - { INT_MIN + 1, 1, 110, true }, - { INT_MAX - 1, 1, 111, true }, - { INT_MIN, 0, 112, false }, // makes RetrieveRange check low end - { INT_MAX, 0, 113, false } // makes RetrieveRange check high end - }; - - // The range map is cleared between sets of tests listed here. - const RangeTestSet range_test_sets[] = { - { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) }, - { range_tests_1, sizeof(range_tests_1) / sizeof(RangeTest) }, - { range_tests_2, sizeof(range_tests_2) / sizeof(RangeTest) }, - { range_tests_3, sizeof(range_tests_3) / sizeof(RangeTest) }, - { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) } // Run again - }; - - // Maintain the range map in a pointer so that deletion can be meaningfully - // tested. - scoped_ptr range_map(new TestMap()); - - // Run all of the test sets in sequence. - unsigned int range_test_set_count = sizeof(range_test_sets) / - sizeof(RangeTestSet); - for (unsigned int range_test_set_index = 0; - range_test_set_index < range_test_set_count; - ++range_test_set_index) { - const RangeTest *range_tests = - range_test_sets[range_test_set_index].range_tests; - unsigned int range_test_count = - range_test_sets[range_test_set_index].range_test_count; - - // Run the StoreRange test, which validates StoreRange and initializes - // the RangeMap with data for the RetrieveRange test. - int stored_count = 0; // The number of ranges successfully stored - for (unsigned int range_test_index = 0; - range_test_index < range_test_count; - ++range_test_index) { - const RangeTest *range_test = &range_tests[range_test_index]; - if (!StoreTest(range_map.get(), range_test)) - return false; - - if (range_test->expect_storable) - ++stored_count; - } - - // There should be exactly one CountedObject for everything successfully - // stored in the RangeMap. - if (CountedObject::count() != stored_count) { - fprintf(stderr, "FAILED: " - "stored object counts don't match, expected %d, observed %d\n", - stored_count, - CountedObject::count()); - - return false; - } - - // The RangeMap's own count of objects should also match. - if (range_map->GetCount() != stored_count) { - fprintf(stderr, "FAILED: stored object count doesn't match GetCount, " - "expected %d, observed %d\n", - stored_count, range_map->GetCount()); - - return false; - } - - // Run the RetrieveRange test - for (unsigned int range_test_index = 0; - range_test_index < range_test_count; - ++range_test_index) { - const RangeTest *range_test = &range_tests[range_test_index]; - if (!RetrieveTest(range_map.get(), range_test)) - return false; - } - - if (!RetrieveIndexTest(range_map.get(), range_test_set_index)) - return false; - - // Clear the map between test sets. If this is the final test set, - // delete the map instead to test destruction. - if (range_test_set_index < range_test_set_count - 1) - range_map->Clear(); - else - range_map.reset(); - - // Test that all stored objects are freed when the RangeMap is cleared - // or deleted. - if (CountedObject::count() != 0) { - fprintf(stderr, "FAILED: " - "did not free all objects after %s, %d still allocated\n", - range_test_set_index < range_test_set_count - 1 ? "clear" - : "delete", - CountedObject::count()); - - return false; - } - } - - return true; -} - - -} // namespace - - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - return RunTests() ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/processor/scoped_ptr.h b/thirdparty/google-breakpad/r318/src/processor/scoped_ptr.h deleted file mode 100644 index 0d4f7fd3..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/scoped_ptr.h +++ /dev/null @@ -1,335 +0,0 @@ -// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. -// Copyright (c) 2001, 2002 Peter Dimov -// -// Permission to copy, use, modify, sell and distribute this software -// is granted provided this copyright notice appears in all copies. -// This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. -// -// See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation. -// - -// scoped_ptr mimics a built-in pointer except that it guarantees deletion -// of the object pointed to, either on destruction of the scoped_ptr or via -// an explicit reset(). scoped_ptr is a simple solution for simple needs; -// use shared_ptr or std::auto_ptr if your needs are more complex. - -// *** NOTE *** -// If your scoped_ptr is a class member of class FOO pointing to a -// forward declared type BAR (as shown below), then you MUST use a non-inlined -// version of the destructor. The destructor of a scoped_ptr (called from -// FOO's destructor) must have a complete definition of BAR in order to -// destroy it. Example: -// -// -- foo.h -- -// class BAR; -// -// class FOO { -// public: -// FOO(); -// ~FOO(); // Required for sources that instantiate class FOO to compile! -// -// private: -// scoped_ptr bar_; -// }; -// -// -- foo.cc -- -// #include "foo.h" -// FOO::~FOO() {} // Empty, but must be non-inlined to FOO's class definition. - -// scoped_ptr_malloc added by Google -// When one of these goes out of scope, instead of doing a delete or -// delete[], it calls free(). scoped_ptr_malloc is likely to see -// much more use than any other specializations. - -// release() added by Google -// Use this to conditionally transfer ownership of a heap-allocated object -// to the caller, usually on method success. - -#ifndef PROCESSOR_SCOPED_PTR_H__ -#define PROCESSOR_SCOPED_PTR_H__ - -#include // for std::ptrdiff_t -#include // for assert -#include // for free() decl - -namespace google_breakpad { - -template -class scoped_ptr { - private: - - T* ptr; - - scoped_ptr(scoped_ptr const &); - scoped_ptr & operator=(scoped_ptr const &); - - public: - - typedef T element_type; - - explicit scoped_ptr(T* p = 0): ptr(p) {} - - ~scoped_ptr() { - typedef char type_must_be_complete[sizeof(T)]; - delete ptr; - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - delete ptr; - ptr = p; - } - } - - T& operator*() const { - assert(ptr != 0); - return *ptr; - } - - T* operator->() const { - assert(ptr != 0); - return ptr; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_ptr & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_ptr should have its own object - template bool operator==(scoped_ptr const& p) const; - template bool operator!=(scoped_ptr const& p) const; -}; - -template inline -void swap(scoped_ptr& a, scoped_ptr& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_ptr& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_ptr& b) { - return p != b.get(); -} - -// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to -// is guaranteed, either on destruction of the scoped_array or via an explicit -// reset(). Use shared_array or std::vector if your needs are more complex. - -template -class scoped_array { - private: - - T* ptr; - - scoped_array(scoped_array const &); - scoped_array & operator=(scoped_array const &); - - public: - - typedef T element_type; - - explicit scoped_array(T* p = 0) : ptr(p) {} - - ~scoped_array() { - typedef char type_must_be_complete[sizeof(T)]; - delete[] ptr; - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - delete [] ptr; - ptr = p; - } - } - - T& operator[](std::ptrdiff_t i) const { - assert(ptr != 0); - assert(i >= 0); - return ptr[i]; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_array & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_array should have its own object - template bool operator==(scoped_array const& p) const; - template bool operator!=(scoped_array const& p) const; -}; - -template inline -void swap(scoped_array& a, scoped_array& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_array& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_array& b) { - return p != b.get(); -} - - -// This class wraps the c library function free() in a class that can be -// passed as a template argument to scoped_ptr_malloc below. -class ScopedPtrMallocFree { - public: - inline void operator()(void* x) const { - free(x); - } -}; - -// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a -// second template argument, the functor used to free the object. - -template -class scoped_ptr_malloc { - private: - - T* ptr; - - scoped_ptr_malloc(scoped_ptr_malloc const &); - scoped_ptr_malloc & operator=(scoped_ptr_malloc const &); - - public: - - typedef T element_type; - - explicit scoped_ptr_malloc(T* p = 0): ptr(p) {} - - ~scoped_ptr_malloc() { - typedef char type_must_be_complete[sizeof(T)]; - free_((void*) ptr); - } - - void reset(T* p = 0) { - typedef char type_must_be_complete[sizeof(T)]; - - if (ptr != p) { - free_((void*) ptr); - ptr = p; - } - } - - T& operator*() const { - assert(ptr != 0); - return *ptr; - } - - T* operator->() const { - assert(ptr != 0); - return ptr; - } - - bool operator==(T* p) const { - return ptr == p; - } - - bool operator!=(T* p) const { - return ptr != p; - } - - T* get() const { - return ptr; - } - - void swap(scoped_ptr_malloc & b) { - T* tmp = b.ptr; - b.ptr = ptr; - ptr = tmp; - } - - T* release() { - T* tmp = ptr; - ptr = 0; - return tmp; - } - - private: - - // no reason to use these: each scoped_ptr_malloc should have its own object - template - bool operator==(scoped_ptr_malloc const& p) const; - template - bool operator!=(scoped_ptr_malloc const& p) const; - - static FreeProc const free_; -}; - -template -FP const scoped_ptr_malloc::free_ = FP(); - -template inline -void swap(scoped_ptr_malloc& a, scoped_ptr_malloc& b) { - a.swap(b); -} - -template inline -bool operator==(T* p, const scoped_ptr_malloc& b) { - return p == b.get(); -} - -template inline -bool operator!=(T* p, const scoped_ptr_malloc& b) { - return p != b.get(); -} - -} // namespace google_breakpad - -#endif // PROCESSOR_SCOPED_PTR_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.cc b/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.cc deleted file mode 100644 index c593e955..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.cc +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// simple_symbol_supplier.cc: A simple SymbolSupplier implementation -// -// See simple_symbol_supplier.h for documentation. -// -// Author: Mark Mentovai - -#include -#include - -#include -#include -#include -#include - -#include "processor/simple_symbol_supplier.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/system_info.h" -#include "processor/logging.h" -#include "processor/pathname_stripper.h" - -namespace google_breakpad { - -static bool file_exists(const string &file_name) { - struct stat sb; - return stat(file_name.c_str(), &sb) == 0; -} - -SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFile( - const CodeModule *module, const SystemInfo *system_info, - string *symbol_file) { - BPLOG_IF(ERROR, !symbol_file) << "SimpleSymbolSupplier::GetSymbolFile " - "requires |symbol_file|"; - assert(symbol_file); - symbol_file->clear(); - - for (unsigned int path_index = 0; path_index < paths_.size(); ++path_index) { - SymbolResult result; - if ((result = GetSymbolFileAtPathFromRoot(module, system_info, - paths_[path_index], - symbol_file)) != NOT_FOUND) { - return result; - } - } - return NOT_FOUND; -} - -SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFile( - const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data) { - assert(symbol_data); - symbol_data->clear(); - - SymbolSupplier::SymbolResult s = GetSymbolFile(module, system_info, symbol_file); - - if (s == FOUND) { - std::ifstream in(symbol_file->c_str()); - std::getline(in, *symbol_data, std::string::traits_type::to_char_type( - std::string::traits_type::eof())); - in.close(); - } - return s; -} - -SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFileAtPathFromRoot( - const CodeModule *module, const SystemInfo *system_info, - const string &root_path, string *symbol_file) { - BPLOG_IF(ERROR, !symbol_file) << "SimpleSymbolSupplier::GetSymbolFileAtPath " - "requires |symbol_file|"; - assert(symbol_file); - symbol_file->clear(); - - if (!module) - return NOT_FOUND; - - // Start with the base path. - string path = root_path; - - // Append the debug (pdb) file name as a directory name. - path.append("/"); - string debug_file_name = PathnameStripper::File(module->debug_file()); - if (debug_file_name.empty()) { - BPLOG(ERROR) << "Can't construct symbol file path without debug_file " - "(code_file = " << - PathnameStripper::File(module->code_file()) << ")"; - return NOT_FOUND; - } - path.append(debug_file_name); - - // Append the identifier as a directory name. - path.append("/"); - string identifier = module->debug_identifier(); - if (identifier.empty()) { - BPLOG(ERROR) << "Can't construct symbol file path without debug_identifier " - "(code_file = " << - PathnameStripper::File(module->code_file()) << - ", debug_file = " << debug_file_name << ")"; - return NOT_FOUND; - } - path.append(identifier); - - // Transform the debug file name into one ending in .sym. If the existing - // name ends in .pdb, strip the .pdb. Otherwise, add .sym to the non-.pdb - // name. - path.append("/"); - string debug_file_extension; - if (debug_file_name.size() > 4) - debug_file_extension = debug_file_name.substr(debug_file_name.size() - 4); - std::transform(debug_file_extension.begin(), debug_file_extension.end(), - debug_file_extension.begin(), tolower); - if (debug_file_extension == ".pdb") { - path.append(debug_file_name.substr(0, debug_file_name.size() - 4)); - } else { - path.append(debug_file_name); - } - path.append(".sym"); - - if (!file_exists(path)) { - BPLOG(INFO) << "No symbol file at " << path; - return NOT_FOUND; - } - - *symbol_file = path; - return FOUND; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.h b/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.h deleted file mode 100644 index dff6a512..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/simple_symbol_supplier.h +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// simple_symbol_supplier.h: A simple SymbolSupplier implementation -// -// SimpleSymbolSupplier is a straightforward implementation of SymbolSupplier -// that stores symbol files in a filesystem tree. A SimpleSymbolSupplier is -// created with one or more base directories, which are the root paths for all -// symbol files. Each symbol file contained therein has a directory entry in -// the base directory with a name identical to the corresponding debugging -// file (pdb). Within each of these directories, there are subdirectories -// named for the debugging file's identifier. For recent pdb files, this is -// a concatenation of the pdb's uuid and age, presented in hexadecimal form, -// without any dashes or separators. The uuid is in uppercase hexadecimal -// and the age is in lowercase hexadecimal. Within that subdirectory, -// SimpleSymbolSupplier expects to find the symbol file, which is named -// identically to the debug file, but with a .sym extension. If the original -// debug file had a name ending in .pdb, the .pdb extension will be replaced -// with .sym. This sample hierarchy is rooted at the "symbols" base -// directory: -// -// symbols -// symbols/test_app.pdb -// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1 -// symbols/test_app.pdb/63FE4780728D49379B9D7BB6460CB42A1/test_app.sym -// symbols/kernel32.pdb -// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542 -// symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym -// -// In this case, the uuid of test_app.pdb is -// 63fe4780-728d-4937-9b9d-7bb6460cb42a and its age is 1. -// -// This scheme was chosen to be roughly analogous to the way that -// symbol files may be accessed from Microsoft Symbol Server. A hierarchy -// used for Microsoft Symbol Server storage is usable as a hierarchy for -// SimpleSymbolServer, provided that the pdb files are transformed to dumped -// format using a tool such as dump_syms, and given a .sym extension. -// -// SimpleSymbolSupplier will iterate over all root paths searching for -// a symbol file existing in that path. -// -// SimpleSymbolSupplier supports any debugging file which can be identified -// by a CodeModule object's debug_file and debug_identifier accessors. The -// expected ultimate source of these CodeModule objects are MinidumpModule -// objects; it is this class that is responsible for assigning appropriate -// values for debug_file and debug_identifier. -// -// Author: Mark Mentovai - -#ifndef PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ -#define PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ - -#include -#include - -#include "google_breakpad/processor/symbol_supplier.h" - -namespace google_breakpad { - -using std::string; -using std::vector; - -class CodeModule; - -class SimpleSymbolSupplier : public SymbolSupplier { - public: - // Creates a new SimpleSymbolSupplier, using path as the root path where - // symbols are stored. - explicit SimpleSymbolSupplier(const string &path) : paths_(1, path) {} - - // Creates a new SimpleSymbolSupplier, using paths as a list of root - // paths where symbols may be stored. - explicit SimpleSymbolSupplier(const vector &paths) : paths_(paths) {} - - virtual ~SimpleSymbolSupplier() {} - - // Returns the path to the symbol file for the given module. See the - // description above. - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file); - - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data); - protected: - SymbolResult GetSymbolFileAtPathFromRoot(const CodeModule *module, - const SystemInfo *system_info, - const string &root_path, - string *symbol_file); - - private: - vector paths_; -}; - -} // namespace google_breakpad - -#endif // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/stack_frame_info.h b/thirdparty/google-breakpad/r318/src/processor/stack_frame_info.h deleted file mode 100644 index 052a9338..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stack_frame_info.h +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stack_frame_info.h: Holds debugging information about a stack frame. -// -// This structure is specific to Windows debugging information obtained -// from pdb files using the DIA API. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACK_FRAME_INFO_H__ -#define PROCESSOR_STACK_FRAME_INFO_H__ - -#include - -#include "google_breakpad/common/breakpad_types.h" - -namespace google_breakpad { - -struct StackFrameInfo { - public: - enum Validity { - VALID_NONE = 0, - VALID_PARAMETER_SIZE = 1, - VALID_ALL = -1 - }; - - StackFrameInfo() : valid(VALID_NONE), - prolog_size(0), - epilog_size(0), - parameter_size(0), - saved_register_size(0), - local_size(0), - max_stack_size(0), - allocates_base_pointer(0), - program_string() {} - - StackFrameInfo(u_int32_t set_prolog_size, - u_int32_t set_epilog_size, - u_int32_t set_parameter_size, - u_int32_t set_saved_register_size, - u_int32_t set_local_size, - u_int32_t set_max_stack_size, - int set_allocates_base_pointer, - const std::string set_program_string) - : valid(VALID_ALL), - prolog_size(set_prolog_size), - epilog_size(set_epilog_size), - parameter_size(set_parameter_size), - saved_register_size(set_saved_register_size), - local_size(set_local_size), - max_stack_size(set_max_stack_size), - allocates_base_pointer(set_allocates_base_pointer), - program_string(set_program_string) {} - - // CopyFrom makes "this" StackFrameInfo object identical to "that". - void CopyFrom(const StackFrameInfo &that) { - valid = that.valid; - prolog_size = that.prolog_size; - epilog_size = that.epilog_size; - parameter_size = that.parameter_size; - saved_register_size = that.saved_register_size; - local_size = that.local_size; - max_stack_size = that.max_stack_size; - allocates_base_pointer = that.allocates_base_pointer; - program_string = that.program_string; - } - - // Clears the StackFrameInfo object so that users will see it as though - // it contains no information. - void Clear() { - valid = VALID_NONE; - program_string.erase(); - } - - // Identifies which fields in the structure are valid. This is of - // type Validity, but it is defined as an int because it's not - // possible to OR values into an enumerated type. Users must check - // this field before using any other. - int valid; - - // These values come from IDiaFrameData. - u_int32_t prolog_size; - u_int32_t epilog_size; - u_int32_t parameter_size; - u_int32_t saved_register_size; - u_int32_t local_size; - u_int32_t max_stack_size; - - // Only one of allocates_base_pointer or program_string will be valid. - // If program_string is empty, use allocates_base_pointer. - bool allocates_base_pointer; - std::string program_string; -}; - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACK_FRAME_INFO_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker.cc deleted file mode 100644 index de67bdaa..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker.cc +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker.cc: Generic stackwalker. -// -// See stackwalker.h for documentation. -// -// Author: Mark Mentovai - - -#include - -#include "google_breakpad/processor/stackwalker.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/minidump.h" -#include "google_breakpad/processor/source_line_resolver_interface.h" -#include "google_breakpad/processor/stack_frame.h" -#include "google_breakpad/processor/symbol_supplier.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" -#include "processor/scoped_ptr.h" -#include "processor/stack_frame_info.h" -#include "processor/stackwalker_ppc.h" -#include "processor/stackwalker_sparc.h" -#include "processor/stackwalker_x86.h" -#include "processor/stackwalker_amd64.h" - -namespace google_breakpad { - - -Stackwalker::Stackwalker(const SystemInfo *system_info, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : system_info_(system_info), - memory_(memory), - modules_(modules), - supplier_(supplier), - resolver_(resolver) { -} - - -bool Stackwalker::Walk(CallStack *stack) { - BPLOG_IF(ERROR, !stack) << "Stackwalker::Walk requires |stack|"; - assert(stack); - stack->Clear(); - - // stack_frame_info parallels the CallStack. The vector is passed to the - // GetCallerFrame function. It contains information that may be helpful - // for stackwalking. - vector< linked_ptr > stack_frame_info; - - // Begin with the context frame, and keep getting callers until there are - // no more. - - // Take ownership of the pointer returned by GetContextFrame. - scoped_ptr frame(GetContextFrame()); - - while (frame.get()) { - // frame already contains a good frame with properly set instruction and - // frame_pointer fields. The frame structure comes from either the - // context frame (above) or a caller frame (below). - - linked_ptr frame_info; - - // Resolve the module information, if a module map was provided. - if (modules_) { - const CodeModule *module = - modules_->GetModuleForAddress(frame->instruction); - if (module) { - frame->module = module; - if (resolver_ && - !resolver_->HasModule(frame->module->code_file()) && - supplier_) { - string symbol_data, symbol_file; - SymbolSupplier::SymbolResult symbol_result = - supplier_->GetSymbolFile(module, system_info_, - &symbol_file, &symbol_data); - - switch (symbol_result) { - case SymbolSupplier::FOUND: - resolver_->LoadModuleUsingMapBuffer(frame->module->code_file(), - symbol_data); - break; - case SymbolSupplier::NOT_FOUND: - break; // nothing to do - case SymbolSupplier::INTERRUPT: - return false; - } - } - frame_info.reset(resolver_->FillSourceLineInfo(frame.get())); - } - } - - // Add the frame to the call stack. Relinquish the ownership claim - // over the frame, because the stack now owns it. - stack->frames_.push_back(frame.release()); - - // Add the frame info to the parallel stack. - stack_frame_info.push_back(frame_info); - frame_info.reset(NULL); - - // Get the next frame and take ownership. - frame.reset(GetCallerFrame(stack, stack_frame_info)); - } - - return true; -} - - -// static -Stackwalker* Stackwalker::StackwalkerForCPU( - const SystemInfo *system_info, - MinidumpContext *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) { - if (!context) { - BPLOG(ERROR) << "Can't choose a stackwalker implementation without context"; - return NULL; - } - - Stackwalker *cpu_stackwalker = NULL; - - u_int32_t cpu = context->GetContextCPU(); - switch (cpu) { - case MD_CONTEXT_X86: - cpu_stackwalker = new StackwalkerX86(system_info, - context->GetContextX86(), - memory, modules, supplier, - resolver); - break; - - case MD_CONTEXT_PPC: - cpu_stackwalker = new StackwalkerPPC(system_info, - context->GetContextPPC(), - memory, modules, supplier, - resolver); - break; - - case MD_CONTEXT_AMD64: - cpu_stackwalker = new StackwalkerAMD64(system_info, - context->GetContextAMD64(), - memory, modules, supplier, - resolver); - break; - - case MD_CONTEXT_SPARC: - cpu_stackwalker = new StackwalkerSPARC(system_info, - context->GetContextSPARC(), - memory, modules, supplier, - resolver); - break; - } - - BPLOG_IF(ERROR, !cpu_stackwalker) << "Unknown CPU type " << HexString(cpu) << - ", can't choose a stackwalker " - "implementation"; - return cpu_stackwalker; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.cc deleted file mode 100644 index 7a413963..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.cc +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_amd64.cc: amd64-specific stackwalker. -// -// See stackwalker_amd64.h for documentation. -// -// Author: Mark Mentovai, Ted Mielczarek - - -#include "processor/stackwalker_amd64.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/memory_region.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/logging.h" - -namespace google_breakpad { - - -StackwalkerAMD64::StackwalkerAMD64(const SystemInfo *system_info, - const MDRawContextAMD64 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : Stackwalker(system_info, memory, modules, supplier, resolver), - context_(context) { -} - - -StackFrame* StackwalkerAMD64::GetContextFrame() { - if (!context_ || !memory_) { - BPLOG(ERROR) << "Can't get context frame without context or memory"; - return NULL; - } - - StackFrameAMD64 *frame = new StackFrameAMD64(); - - // The instruction pointer is stored directly in a register, so pull it - // straight out of the CPU context structure. - frame->context = *context_; - frame->context_validity = StackFrameAMD64::CONTEXT_VALID_ALL; - frame->instruction = frame->context.rip; - - return frame; -} - - -StackFrame* StackwalkerAMD64::GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) { - if (!memory_ || !stack) { - BPLOG(ERROR) << "Can't get caller frame without memory or stack"; - return NULL; - } - - StackFrameAMD64 *last_frame = static_cast( - stack->frames()->back()); - - //FIXME: this pretty much doesn't work at all due to FPO - // being enabled by default. - // Brain-dead stackwalking: - // %rip_new = *(%rbp_old + 8) - // %rsp_new = %rbp_old + 16 - // %rbp_new = *(%rbp_old) - - // A caller frame must reside higher in memory than its callee frames. - // Anything else is an error, or an indication that we've reached the - // end of the stack. - u_int64_t stack_pointer = last_frame->context.rbp + 16; - if (stack_pointer <= last_frame->context.rsp) { - return NULL; - } - - u_int64_t instruction; - if (!memory_->GetMemoryAtAddress(last_frame->context.rbp + 8, - &instruction) || - instruction <= 1) { - return NULL; - } - - u_int64_t stack_base; - if (!memory_->GetMemoryAtAddress(last_frame->context.rbp, - &stack_base) || - stack_base <= 1) { - return NULL; - } - - StackFrameAMD64 *frame = new StackFrameAMD64(); - - frame->context = last_frame->context; - frame->context.rip = instruction; - frame->context.rsp = stack_pointer; - frame->context.rbp = stack_base; - frame->context_validity = StackFrameAMD64::CONTEXT_VALID_RIP | - StackFrameAMD64::CONTEXT_VALID_RSP | - StackFrameAMD64::CONTEXT_VALID_RBP; - - frame->instruction = frame->context.rip - 1; - - return frame; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.h b/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.h deleted file mode 100644 index a3e11358..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_amd64.h +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_amd64.h: amd64-specific stackwalker. -// -// Provides stack frames given amd64 register context and a memory region -// corresponding to a amd64 stack. -// -// Author: Mark Mentovai, Ted Mielczarek - - -#ifndef PROCESSOR_STACKWALKER_AMD64_H__ -#define PROCESSOR_STACKWALKER_AMD64_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerAMD64 : public Stackwalker { - public: - // context is a amd64 context object that gives access to amd64-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerAMD64(const SystemInfo *system_info, - const MDRawContextAMD64 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using amd64 context (stack pointer in %rsp, - // stack base in %rbp) and stack conventions (saved stack pointer at 0(%rbp)) - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextAMD64 *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_AMD64_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.cc deleted file mode 100644 index 02a49b21..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.cc +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_ppc.cc: ppc-specific stackwalker. -// -// See stackwalker_ppc.h for documentation. -// -// Author: Mark Mentovai - - -#include "processor/stackwalker_ppc.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/memory_region.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/logging.h" - -namespace google_breakpad { - - -StackwalkerPPC::StackwalkerPPC(const SystemInfo *system_info, - const MDRawContextPPC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : Stackwalker(system_info, memory, modules, supplier, resolver), - context_(context) { - if (memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) { - // This implementation only covers 32-bit ppc CPUs. The limits of the - // supplied stack are invalid. Mark memory_ = NULL, which will cause - // stackwalking to fail. - BPLOG(ERROR) << "Memory out of range for stackwalking: " << - HexString(memory_->GetBase()) << "+" << - HexString(memory_->GetSize()); - memory_ = NULL; - } -} - - -StackFrame* StackwalkerPPC::GetContextFrame() { - if (!context_ || !memory_) { - BPLOG(ERROR) << "Can't get context frame without context or memory"; - return NULL; - } - - StackFramePPC *frame = new StackFramePPC(); - - // The instruction pointer is stored directly in a register, so pull it - // straight out of the CPU context structure. - frame->context = *context_; - frame->context_validity = StackFramePPC::CONTEXT_VALID_ALL; - frame->instruction = frame->context.srr0; - - return frame; -} - - -StackFrame* StackwalkerPPC::GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) { - if (!memory_ || !stack) { - BPLOG(ERROR) << "Can't get caller frame without memory or stack"; - return NULL; - } - - // The instruction pointers for previous frames are saved on the stack. - // The typical ppc calling convention is for the called procedure to store - // its return address in the calling procedure's stack frame at 8(%r1), - // and to allocate its own stack frame by decrementing %r1 (the stack - // pointer) and saving the old value of %r1 at 0(%r1). Because the ppc has - // no hardware stack, there is no distinction between the stack pointer and - // frame pointer, and what is typically thought of as the frame pointer on - // an x86 is usually referred to as the stack pointer on a ppc. - - StackFramePPC *last_frame = static_cast( - stack->frames()->back()); - - // A caller frame must reside higher in memory than its callee frames. - // Anything else is an error, or an indication that we've reached the - // end of the stack. - u_int32_t stack_pointer; - if (!memory_->GetMemoryAtAddress(last_frame->context.gpr[1], - &stack_pointer) || - stack_pointer <= last_frame->context.gpr[1]) { - return NULL; - } - - // Mac OS X/Darwin gives 1 as the return address from the bottom-most - // frame in a stack (a thread's entry point). I haven't found any - // documentation on this, but 0 or 1 would be bogus return addresses, - // so check for them here and return false (end of stack) when they're - // hit to avoid having a phantom frame. - u_int32_t instruction; - if (!memory_->GetMemoryAtAddress(stack_pointer + 8, &instruction) || - instruction <= 1) { - return NULL; - } - - StackFramePPC *frame = new StackFramePPC(); - - frame->context = last_frame->context; - frame->context.srr0 = instruction; - frame->context.gpr[1] = stack_pointer; - frame->context_validity = StackFramePPC::CONTEXT_VALID_SRR0 | - StackFramePPC::CONTEXT_VALID_GPR1; - - // frame->context.srr0 is the return address, which is one instruction - // past the branch that caused us to arrive at the callee. Set - // frame_ppc->instruction to four less than that. Since all ppc - // instructions are 4 bytes wide, this is the address of the branch - // instruction. This allows source line information to match up with the - // line that contains a function call. Callers that require the exact - // return address value may access the context.srr0 field of StackFramePPC. - frame->instruction = frame->context.srr0 - 4; - - return frame; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.h b/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.h deleted file mode 100644 index 3d312419..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_ppc.h +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_ppc.h: ppc-specific stackwalker. -// -// Provides stack frames given ppc register context and a memory region -// corresponding to a ppc stack. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACKWALKER_PPC_H__ -#define PROCESSOR_STACKWALKER_PPC_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerPPC : public Stackwalker { - public: - // context is a ppc context object that gives access to ppc-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerPPC(const SystemInfo *system_info, - const MDRawContextPPC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using ppc context (stack pointer in %r1, - // saved program counter in %srr0) and stack conventions (saved stack - // pointer at 0(%r1), return address at 8(0(%r1)). - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextPPC *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_PPC_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest.cc deleted file mode 100644 index 6b71a6a8..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest.cc +++ /dev/null @@ -1,425 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_selftest.cc: Tests StackwalkerX86 or StackwalkerPPC using the -// running process' stack as test data, if running on an x86 or ppc and -// compiled with gcc. This test is not enabled in the "make check" suite -// by default, because certain optimizations interfere with its proper -// operation. To turn it on, configure with --enable-selftest. -// -// Optimizations that cause problems: -// - stack frame reuse. The Recursor function here calls itself with -// |return Recursor|. When the caller's frame is reused, it will cause -// CountCallerFrames to correctly return the same number of frames -// in both the caller and callee. This is considered an unexpected -// condition in the test, which expects a callee to have one more -// caller frame in the stack than its caller. -// - frame pointer omission. Even with a stackwalker that understands -// this optimization, the code to harness debug information currently -// only exists to retrieve it from minidumps, not the current process. -// -// This test can also serve as a developmental and debugging aid if -// PRINT_STACKS is defined. -// -// Author: Mark Mentovai - -#include "processor/logging.h" - -#if defined(__i386) && !defined(__i386__) -#define __i386__ -#endif -#if defined(__sparc) && !defined(__sparc__) -#define __sparc__ -#endif - -#if (defined(__SUNPRO_CC) || defined(__GNUC__)) && \ - (defined(__i386__) || defined(__ppc__) || defined(__sparc__)) - - -#include - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/memory_region.h" -#include "google_breakpad/processor/stack_frame.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/scoped_ptr.h" - -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CallStack; -using google_breakpad::MemoryRegion; -using google_breakpad::scoped_ptr; -using google_breakpad::StackFrame; -using google_breakpad::StackFramePPC; -using google_breakpad::StackFrameX86; -using google_breakpad::StackFrameSPARC; - -#if defined(__i386__) -#include "processor/stackwalker_x86.h" -using google_breakpad::StackwalkerX86; -#elif defined(__ppc__) -#include "processor/stackwalker_ppc.h" -using google_breakpad::StackwalkerPPC; -#elif defined(__sparc__) -#include "processor/stackwalker_sparc.h" -using google_breakpad::StackwalkerSPARC; -#endif // __i386__ || __ppc__ || __sparc__ - -#define RECURSION_DEPTH 100 - - -// A simple MemoryRegion subclass that provides direct access to this -// process' memory space by pointer. -class SelfMemoryRegion : public MemoryRegion { - public: - virtual u_int64_t GetBase() { return 0; } - virtual u_int32_t GetSize() { return 0xffffffff; } - - bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value) { - return GetMemoryAtAddressInternal(address, value); } - bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value) { - return GetMemoryAtAddressInternal(address, value); } - bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value) { - return GetMemoryAtAddressInternal(address, value); } - bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value) { - return GetMemoryAtAddressInternal(address, value); } - - private: - template bool GetMemoryAtAddressInternal(u_int64_t address, - T* value) { - // Without knowing what addresses are actually mapped, just assume that - // everything low is not mapped. This helps the stackwalker catch the - // end of a stack when it tries to dereference a null or low pointer - // in an attempt to find the caller frame. Other unmapped accesses will - // cause the program to crash, but that would properly be a test failure. - if (address < 0x100) - return false; - - u_int8_t* memory = 0; - *value = *reinterpret_cast(&memory[address]); - return true; - } -}; - - -#if defined(__GNUC__) - - -#if defined(__i386__) - -// GetEBP returns the current value of the %ebp register. Because it's -// implemented as a function, %ebp itself contains GetEBP's frame pointer -// and not the caller's frame pointer. Dereference %ebp to obtain the -// caller's frame pointer, which the compiler-generated preamble stored -// on the stack (provided frame pointers are not being omitted.) Because -// this function depends on the compiler-generated preamble, inlining is -// disabled. -static u_int32_t GetEBP() __attribute__((noinline)); -static u_int32_t GetEBP() { - u_int32_t ebp; - __asm__ __volatile__( - "movl (%%ebp), %0" - : "=a" (ebp) - ); - return ebp; -} - - -// The caller's %esp is 8 higher than the value of %ebp in this function, -// assuming that it's not inlined and that the standard prolog is used. -// The CALL instruction places a 4-byte return address on the stack above -// the caller's %esp, and this function's prolog will save the caller's %ebp -// on the stack as well, for another 4 bytes, before storing %esp in %ebp. -static u_int32_t GetESP() __attribute__((noinline)); -static u_int32_t GetESP() { - u_int32_t ebp; - __asm__ __volatile__( - "movl %%ebp, %0" - : "=a" (ebp) - ); - return ebp + 8; -} - - -// GetEIP returns the instruction pointer identifying the next instruction -// to execute after GetEIP returns. It obtains this information from the -// stack, where it was placed by the call instruction that called GetEIP. -// This function depends on frame pointers not being omitted. It is possible -// to write a pure asm version of this routine that has no compiler-generated -// preamble and uses %esp instead of %ebp; that would function in the -// absence of frame pointers. However, the simpler approach is used here -// because GetEBP and stackwalking necessarily depends on access to frame -// pointers. Because this function depends on a call instruction and the -// compiler-generated preamble, inlining is disabled. -static u_int32_t GetEIP() __attribute__((noinline)); -static u_int32_t GetEIP() { - u_int32_t eip; - __asm__ __volatile__( - "movl 4(%%ebp), %0" - : "=a" (eip) - ); - return eip; -} - - -#elif defined(__ppc__) - - -// GetSP returns the current value of the %r1 register, which by convention, -// is the stack pointer on ppc. Because it's implemented as a function, -// %r1 itself contains GetSP's own stack pointer and not the caller's stack -// pointer. Dereference %r1 to obtain the caller's stack pointer, which the -// compiler-generated prolog stored on the stack. Because this function -// depends on the compiler-generated prolog, inlining is disabled. -static u_int32_t GetSP() __attribute__((noinline)); -static u_int32_t GetSP() { - u_int32_t sp; - __asm__ __volatile__( - "lwz %0, 0(r1)" - : "=r" (sp) - ); - return sp; -} - - -// GetPC returns the program counter identifying the next instruction to -// execute after GetPC returns. It obtains this information from the -// link register, where it was placed by the branch instruction that called -// GetPC. Because this function depends on the caller's use of a branch -// instruction, inlining is disabled. -static u_int32_t GetPC() __attribute__((noinline)); -static u_int32_t GetPC() { - u_int32_t lr; - __asm__ __volatile__( - "mflr %0" - : "=r" (lr) - ); - return lr; -} - - -#elif defined(__sparc__) - - -// GetSP returns the current value of the %sp/%o6/%g_r[14] register, which -// by convention, is the stack pointer on sparc. Because it's implemented -// as a function, %sp itself contains GetSP's own stack pointer and not -// the caller's stack pointer. Dereference to obtain the caller's stack -// pointer, which the compiler-generated prolog stored on the stack. -// Because this function depends on the compiler-generated prolog, inlining -// is disabled. -static u_int32_t GetSP() __attribute__((noinline)); -static u_int32_t GetSP() { - u_int32_t sp; - __asm__ __volatile__( - "mov %%fp, %0" - : "=r" (sp) - ); - return sp; -} - -// GetFP returns the current value of the %fp register. Because it's -// implemented as a function, %fp itself contains GetFP's frame pointer -// and not the caller's frame pointer. Dereference %fp to obtain the -// caller's frame pointer, which the compiler-generated preamble stored -// on the stack (provided frame pointers are not being omitted.) Because -// this function depends on the compiler-generated preamble, inlining is -// disabled. -static u_int32_t GetFP() __attribute__((noinline)); -static u_int32_t GetFP() { - u_int32_t fp; - __asm__ __volatile__( - "ld [%%fp+56], %0" - : "=r" (fp) - ); - return fp; -} - -// GetPC returns the program counter identifying the next instruction to -// execute after GetPC returns. It obtains this information from the -// link register, where it was placed by the branch instruction that called -// GetPC. Because this function depends on the caller's use of a branch -// instruction, inlining is disabled. -static u_int32_t GetPC() __attribute__((noinline)); -static u_int32_t GetPC() { - u_int32_t pc; - __asm__ __volatile__( - "mov %%i7, %0" - : "=r" (pc) - ); - return pc + 8; -} - -#endif // __i386__ || __ppc__ || __sparc__ - -#elif defined(__SUNPRO_CC) - -#if defined(__i386__) -extern "C" { -extern u_int32_t GetEIP(); -extern u_int32_t GetEBP(); -extern u_int32_t GetESP(); -} -#elif defined(__sparc__) -extern "C" { -extern u_int32_t GetPC(); -extern u_int32_t GetFP(); -extern u_int32_t GetSP(); -} -#endif // __i386__ || __sparc__ - -#endif // __GNUC__ || __SUNPRO_CC - -// CountCallerFrames returns the number of stack frames beneath the function -// that called CountCallerFrames. Because this function's return value -// is dependent on the size of the stack beneath it, inlining is disabled, -// and any function that calls this should not be inlined either. -#if defined(__GNUC__) -static unsigned int CountCallerFrames() __attribute__((noinline)); -#elif defined(__SUNPRO_CC) -static unsigned int CountCallerFrames(); -#endif -static unsigned int CountCallerFrames() { - SelfMemoryRegion memory; - BasicSourceLineResolver resolver; - -#if defined(__i386__) - MDRawContextX86 context = MDRawContextX86(); - context.eip = GetEIP(); - context.ebp = GetEBP(); - context.esp = GetESP(); - - StackwalkerX86 stackwalker = StackwalkerX86(NULL, &context, &memory, NULL, - NULL, &resolver); -#elif defined(__ppc__) - MDRawContextPPC context = MDRawContextPPC(); - context.srr0 = GetPC(); - context.gpr[1] = GetSP(); - - StackwalkerPPC stackwalker = StackwalkerPPC(NULL, &context, &memory, NULL, - NULL, &resolver); -#elif defined(__sparc__) - MDRawContextSPARC context = MDRawContextSPARC(); - context.pc = GetPC(); - context.g_r[14] = GetSP(); - context.g_r[30] = GetFP(); - - StackwalkerSPARC stackwalker = StackwalkerSPARC(NULL, &context, &memory, - NULL, NULL, &resolver); -#endif // __i386__ || __ppc__ || __sparc__ - - CallStack stack; - stackwalker.Walk(&stack); - -#ifdef PRINT_STACKS - printf("\n"); - for (unsigned int frame_index = 0; - frame_index < stack.frames()->size(); - ++frame_index) { - StackFrame *frame = stack.frames()->at(frame_index); - printf("frame %-3d instruction = 0x%08" PRIx64, - frame_index, frame->instruction); -#if defined(__i386__) - StackFrameX86 *frame_x86 = reinterpret_cast(frame); - printf(" esp = 0x%08x ebp = 0x%08x\n", - frame_x86->context.esp, frame_x86->context.ebp); -#elif defined(__ppc__) - StackFramePPC *frame_ppc = reinterpret_cast(frame); - printf(" gpr[1] = 0x%08x\n", frame_ppc->context.gpr[1]); -#elif defined(__sparc__) - StackFrameSPARC *frame_sparc = reinterpret_cast(frame); - printf(" sp = 0x%08x fp = 0x%08x\n", - frame_sparc->context.g_r[14], frame_sparc->context.g_r[30]); -#endif // __i386__ || __ppc__ || __sparc__ - } -#endif // PRINT_STACKS - - // Subtract 1 because the caller wants the number of frames beneath - // itself. Because the caller called us, subract two for our frame and its - // frame, which are included in stack.size(). - return stack.frames()->size() - 2; -} - - -// Recursor verifies that the number stack frames beneath itself is one more -// than the number of stack frames beneath its parent. When depth frames -// have been reached, Recursor stops checking and returns success. If the -// frame count check fails at any depth, Recursor will stop and return false. -// Because this calls CountCallerFrames, inlining is disabled. -#if defined(__GNUC__) -static bool Recursor(unsigned int depth, unsigned int parent_callers) - __attribute__((noinline)); -#elif defined(__SUNPRO_CC) -static bool Recursor(unsigned int depth, unsigned int parent_callers); -#endif -static bool Recursor(unsigned int depth, unsigned int parent_callers) { - unsigned int callers = CountCallerFrames(); - if (callers != parent_callers + 1) - return false; - - if (depth) - return Recursor(depth - 1, callers); - - // depth == 0 - return true; -} - - -// Because this calls CountCallerFrames, inlining is disabled - but because -// it's main (and nobody calls it other than the entry point), it wouldn't -// be inlined anyway. -#if defined(__GNUC__) -int main(int argc, char** argv) __attribute__((noinline)); -#elif defined(__SUNPRO_CC) -int main(int argc, char** argv); -#endif -int main(int argc, char** argv) { - BPLOG_INIT(&argc, &argv); - - return Recursor(RECURSION_DEPTH, CountCallerFrames()) ? 0 : 1; -} - - -#else -// Not i386 or ppc or sparc? We can only test stacks we know how to walk. - - -int main(int argc, char **argv) { - BPLOG_INIT(&argc, &argv); - - // "make check" interprets an exit status of 77 to mean that the test is - // not supported. - BPLOG(ERROR) << "Selftest not supported here"; - return 77; -} - - -#endif // (__GNUC__ || __SUNPRO_CC) && (__i386__ || __ppc__ || __sparc__) diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest_sol.s b/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest_sol.s deleted file mode 100644 index 648b0499..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_selftest_sol.s +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (c) 2007, Google 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: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * 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 - * OWNER 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. - */ - -/* stackwalker_selftest_sol.s - * On Solaris, the recommeded compiler is CC, so we can not use gcc inline - * asm, use this method instead. - * - * How to compile: as -P -L -D_ASM -D_STDC -K PIC -o \ - * src/processor/stackwalker_selftest_sol.o \ - * src/processor/stackwalker_selftest_sol.s - * - * Author: Michael Shang - */ - -#include - -#if defined(__i386) - - -ENTRY(GetEBP) - pushl %ebp - movl %esp,%ebp - subl $0x00000004,%esp - movl 0x00000000(%ebp),%eax - movl %eax,0xfffffffc(%ebp) - movl 0xfffffffc(%ebp),%eax - leave - ret -SET_SIZE(GetEBP) - -ENTRY(GetEIP) - pushl %ebp - movl %esp,%ebp - subl $0x00000004,%esp - movl 0x00000004(%ebp),%eax - movl %eax,0xfffffffc(%ebp) - movl 0xfffffffc(%ebp),%eax - leave - ret -SET_SIZE(GetEIP) - -ENTRY(GetESP) - pushl %ebp - movl %esp,%ebp - subl $0x00000004,%esp - movl %ebp,%eax - movl %eax,0xfffffffc(%ebp) - movl 0xfffffffc(%ebp),%eax - addl $0x00000008,%eax - leave - ret -SET_SIZE(GetESP) - - -#elif defined(__sparc) - - -ENTRY(GetPC) - save %sp, -120, %sp - mov %i7, %i4 - inccc 8, %i4 - mov %i4, %i0 - ret - restore -SET_SIZE(GetPC) - -ENTRY(GetSP) - save %sp, -120, %sp - mov %fp, %i4 - mov %i4, %i0 - ret - restore -SET_SIZE(GetSP) - -ENTRY(GetFP) - save %sp, -120, %sp - ld [%fp + 56], %g1 - mov %g1, %i0 - ret - restore -SET_SIZE(GetFP) - - -#endif // __i386 || __sparc diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.cc deleted file mode 100644 index b7b6f005..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.cc +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_sparc.cc: sparc-specific stackwalker. -// -// See stackwalker_sparc.h for documentation. -// -// Author: Michael Shang - - -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/memory_region.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/logging.h" -#include "processor/stackwalker_sparc.h" - -namespace google_breakpad { - - -StackwalkerSPARC::StackwalkerSPARC(const SystemInfo *system_info, - const MDRawContextSPARC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : Stackwalker(system_info, memory, modules, supplier, resolver), - context_(context) { -} - - -StackFrame* StackwalkerSPARC::GetContextFrame() { - if (!context_ || !memory_) { - BPLOG(ERROR) << "Can't get context frame without context or memory"; - return NULL; - } - - StackFrameSPARC *frame = new StackFrameSPARC(); - - // The instruction pointer is stored directly in a register, so pull it - // straight out of the CPU context structure. - frame->context = *context_; - frame->context_validity = StackFrameSPARC::CONTEXT_VALID_ALL; - frame->instruction = frame->context.pc; - - return frame; -} - - -StackFrame* StackwalkerSPARC::GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) { - if (!memory_ || !stack) { - BPLOG(ERROR) << "Can't get caller frame without memory or stack"; - return NULL; - } - - StackFrameSPARC *last_frame = static_cast( - stack->frames()->back()); - - // new: caller - // old: callee - // %fp, %i6 and g_r[30] is the same, see minidump_format.h - // %sp, %o6 and g_r[14] is the same, see minidump_format.h - // %sp_new = %fp_old - // %fp_new = *(%fp_old + 32 + 32 - 8), where the callee's %i6 - // %pc_new = *(%fp_old + 32 + 32 - 4) + 8 - // which is callee's %i7 plus 8 - - // A caller frame must reside higher in memory than its callee frames. - // Anything else is an error, or an indication that we've reached the - // end of the stack. - u_int32_t stack_pointer = last_frame->context.g_r[30]; - if (stack_pointer <= last_frame->context.g_r[14]) { - return NULL; - } - - u_int32_t instruction; - if (!memory_->GetMemoryAtAddress(stack_pointer + 60, - &instruction) || instruction <= 1) { - return NULL; - } - - u_int32_t stack_base; - if (!memory_->GetMemoryAtAddress(stack_pointer + 56, - &stack_base) || stack_base <= 1) { - return NULL; - } - - StackFrameSPARC *frame = new StackFrameSPARC(); - - frame->context = last_frame->context; - frame->context.g_r[14] = stack_pointer; - frame->context.g_r[30] = stack_base; - - // frame->context.pc is the return address, which is 2 instruction - // past the branch that caused us to arrive at the callee, which are - // a CALL instruction then a NOP instruction. - // frame_ppc->instruction to 8 less than that. Since all sparc - // instructions are 4 bytes wide, this is the address of the branch - // instruction. This allows source line information to match up with the - // line that contains a function call. Callers that require the exact - // return address value may access the %i7/g_r[31] field of StackFrameSPARC. - frame->context.pc = instruction + 8; - frame->instruction = instruction; - frame->context_validity = StackFrameSPARC::CONTEXT_VALID_PC | - StackFrameSPARC::CONTEXT_VALID_SP | - StackFrameSPARC::CONTEXT_VALID_FP; - - return frame; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.h b/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.h deleted file mode 100644 index f051e5bb..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_sparc.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_sparc.h: sparc-specific stackwalker. -// -// Provides stack frames given sparc register context and a memory region -// corresponding to an sparc stack. -// -// Author: Michael Shang - - -#ifndef PROCESSOR_STACKWALKER_SPARC_H__ -#define PROCESSOR_STACKWALKER_SPARC_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - -class StackwalkerSPARC : public Stackwalker { - public: - // context is a sparc context object that gives access to sparc-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerSPARC(const SystemInfo *system_info, - const MDRawContextSPARC *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using x86 context (%ebp, %esp, %eip) and - // stack conventions (saved %ebp at [%ebp], saved %eip at 4[%ebp], or - // alternate conventions as guided by stack_frame_info_). - // Implementation of Stackwalker, using ppc context (stack pointer in %r1, - // saved program counter in %srr0) and stack conventions (saved stack - // pointer at 0(%r1), return address at 8(0(%r1)). - // Implementation of Stackwalker, using sparc context (%fp, %sp, %pc) and - // stack conventions (saved %sp at) - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextSPARC *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_SPARC_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.cc b/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.cc deleted file mode 100644 index e39df17f..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.cc +++ /dev/null @@ -1,432 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_x86.cc: x86-specific stackwalker. -// -// See stackwalker_x86.h for documentation. -// -// Author: Mark Mentovai - - -#include "processor/postfix_evaluator-inl.h" - -#include "processor/stackwalker_x86.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/memory_region.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" -#include "processor/stack_frame_info.h" - -namespace google_breakpad { - - -StackwalkerX86::StackwalkerX86(const SystemInfo *system_info, - const MDRawContextX86 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver) - : Stackwalker(system_info, memory, modules, supplier, resolver), - context_(context) { - if (memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) { - // The x86 is a 32-bit CPU, the limits of the supplied stack are invalid. - // Mark memory_ = NULL, which will cause stackwalking to fail. - BPLOG(ERROR) << "Memory out of range for stackwalking: " << - HexString(memory_->GetBase()) << "+" << - HexString(memory_->GetSize()); - memory_ = NULL; - } -} - - -StackFrame* StackwalkerX86::GetContextFrame() { - if (!context_ || !memory_) { - BPLOG(ERROR) << "Can't get context frame without context or memory"; - return NULL; - } - - StackFrameX86 *frame = new StackFrameX86(); - - // The instruction pointer is stored directly in a register, so pull it - // straight out of the CPU context structure. - frame->context = *context_; - frame->context_validity = StackFrameX86::CONTEXT_VALID_ALL; - frame->instruction = frame->context.eip; - - return frame; -} - - -StackFrame* StackwalkerX86::GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info) { - if (!memory_ || !stack) { - BPLOG(ERROR) << "Can't get caller frame without memory or stack"; - return NULL; - } - - StackFrameX86 *last_frame = static_cast( - stack->frames()->back()); - StackFrameInfo *last_frame_info = stack_frame_info.back().get(); - - // This stackwalker sets each frame's %esp to its value immediately prior - // to the CALL into the callee. This means that %esp points to the last - // callee argument pushed onto the stack, which may not be where %esp points - // after the callee returns. Specifically, the value is correct for the - // cdecl calling convention, but not other conventions. The cdecl - // convention requires a caller to pop its callee's arguments from the - // stack after the callee returns. This is usually accomplished by adding - // the known size of the arguments to %esp. Other calling conventions, - // including stdcall, thiscall, and fastcall, require the callee to pop any - // parameters stored on the stack before returning. This is usually - // accomplished by using the RET n instruction, which pops n bytes off - // the stack after popping the return address. - // - // Because each frame's %esp will point to a location on the stack after - // callee arguments have been PUSHed, when locating things in a stack frame - // relative to %esp, the size of the arguments to the callee need to be - // taken into account. This seems a little bit unclean, but it's better - // than the alternative, which would need to take these same things into - // account, but only for cdecl functions. With this implementation, we get - // to be agnostic about each function's calling convention. Furthermore, - // this is how Windows debugging tools work, so it means that the %esp - // values produced by this stackwalker directly correspond to the %esp - // values you'll see there. - // - // If the last frame has no callee (because it's the context frame), just - // set the callee parameter size to 0: the stack pointer can't point to - // callee arguments because there's no callee. This is correct as long - // as the context wasn't captured while arguments were being pushed for - // a function call. Note that there may be functions whose parameter sizes - // are unknown, 0 is also used in that case. When that happens, it should - // be possible to walk to the next frame without reference to %esp. - - int frames_already_walked = stack_frame_info.size(); - u_int32_t last_frame_callee_parameter_size = 0; - if (frames_already_walked >= 2) { - StackFrameInfo *last_frame_callee_info = - stack_frame_info[frames_already_walked - 2].get(); - if (last_frame_callee_info && - last_frame_callee_info->valid & StackFrameInfo::VALID_PARAMETER_SIZE) { - last_frame_callee_parameter_size = - last_frame_callee_info->parameter_size; - } - } - - // Set up the dictionary for the PostfixEvaluator. %ebp and %esp are used - // in each program string, and their previous values are known, so set them - // here. .cbCalleeParams is a Breakpad extension that allows us to use - // the PostfixEvaluator engine when certain types of debugging information - // are present without having to write the constants into the program string - // as literals. - PostfixEvaluator::DictionaryType dictionary; - dictionary["$ebp"] = last_frame->context.ebp; - dictionary["$esp"] = last_frame->context.esp; - dictionary[".cbCalleeParams"] = last_frame_callee_parameter_size; - - if (last_frame_info && last_frame_info->valid == StackFrameInfo::VALID_ALL) { - // FPO debugging data is available. Initialize constants. - dictionary[".cbSavedRegs"] = last_frame_info->saved_register_size; - dictionary[".cbLocals"] = last_frame_info->local_size; - dictionary[".raSearchStart"] = last_frame->context.esp + - last_frame_callee_parameter_size + - last_frame_info->local_size + - last_frame_info->saved_register_size; - } - if (last_frame_info && - last_frame_info->valid & StackFrameInfo::VALID_PARAMETER_SIZE) { - // This is treated separately because it can either come from FPO data or - // from other debugging data. - dictionary[".cbParams"] = last_frame_info->parameter_size; - } - - // Decide what type of program string to use. The program string is in - // postfix notation and will be passed to PostfixEvaluator::Evaluate. - // Given the dictionary and the program string, it is possible to compute - // the return address and the values of other registers in the calling - // function. When encountering a nontraditional frame (one which takes - // advantage of FPO), the stack may need to be scanned for these values. - // For traditional frames, simple deterministic dereferencing suffices - // without any need for scanning. The results of program string evaluation - // will be used to determine whether to scan for better values. - string program_string; - bool traditional_frame = true; - bool recover_ebp = true; - if (last_frame_info && last_frame_info->valid == StackFrameInfo::VALID_ALL) { - // FPO data available. - traditional_frame = false; - if (!last_frame_info->program_string.empty()) { - // The FPO data has its own program string, which will tell us how to - // get to the caller frame, and may even fill in the values of - // nonvolatile registers and provide pointers to local variables and - // parameters. In some cases, particularly with program strings that use - // .raSearchStart, the stack may need to be scanned afterward. - program_string = last_frame_info->program_string; - } else if (last_frame_info->allocates_base_pointer) { - // The function corresponding to the last frame doesn't use the frame - // pointer for conventional purposes, but it does allocate a new - // frame pointer and use it for its own purposes. Its callee's - // information is still accessed relative to %esp, and the previous - // value of %ebp can be recovered from a location in its stack frame, - // within the saved-register area. - // - // Functions that fall into this category use the %ebp register for - // a purpose other than the frame pointer. They restore the caller's - // %ebp before returning. These functions create their stack frame - // after a CALL by decrementing the stack pointer in an amount - // sufficient to store local variables, and then PUSHing saved - // registers onto the stack. Arguments to a callee function, if any, - // are PUSHed after that. Walking up to the caller, therefore, - // can be done solely with calculations relative to the stack pointer - // (%esp). The return address is recovered from the memory location - // above the known sizes of the callee's parameters, saved registers, - // and locals. The caller's stack pointer (the value of %esp when - // the caller executed CALL) is the location immediately above the - // saved return address. The saved value of %ebp to be restored for - // the caller is at a known location in the saved-register area of - // the stack frame. - // - // For this type of frame, MSVC 14 (from Visual Studio 8/2005) in - // link-time code generation mode (/LTCG and /GL) can generate erroneous - // debugging data. The reported size of saved registers can be 0, - // which is clearly an error because these frames must, at the very - // least, save %ebp. For this reason, in addition to those given above - // about the use of .raSearchStart, the stack may need to be scanned - // for a better return address and a better frame pointer after the - // program string is evaluated. - // - // %eip_new = *(%esp_old + callee_params + saved_regs + locals) - // %ebp_new = *(%esp_old + callee_params + saved_regs - 8) - // %esp_new = %esp_old + callee_params + saved_regs + locals + 4 - program_string = "$eip .raSearchStart ^ = " - "$ebp $esp .cbCalleeParams + .cbSavedRegs + 8 - ^ = " - "$esp .raSearchStart 4 + ="; - } else { - // The function corresponding to the last frame doesn't use %ebp at - // all. The callee frame is located relative to %esp. - // - // The called procedure's instruction pointer and stack pointer are - // recovered in the same way as the case above, except that no - // frame pointer (%ebp) is used at all, so it is not saved anywhere - // in the callee's stack frame and does not need to be recovered. - // Because %ebp wasn't used in the callee, whatever value it has - // is the value that it had in the caller, so it can be carried - // straight through without bringing its validity into question. - // - // Because of the use of .raSearchStart, the stack will possibly be - // examined to locate a better return address after program string - // evaluation. The stack will not be examined to locate a saved - // %ebp value, because these frames do not save (or use) %ebp. - // - // %eip_new = *(%esp_old + callee_params + saved_regs + locals) - // %esp_new = %esp_old + callee_params + saved_regs + locals + 4 - // %ebp_new = %ebp_old - program_string = "$eip .raSearchStart ^ = " - "$esp .raSearchStart 4 + ="; - recover_ebp = false; - } - } else { - // No FPO information is available for the last frame. Assume that the - // standard %ebp-using x86 calling convention is in use. - // - // The typical x86 calling convention, when frame pointers are present, - // is for the calling procedure to use CALL, which pushes the return - // address onto the stack and sets the instruction pointer (%eip) to - // the entry point of the called routine. The called routine then - // PUSHes the calling routine's frame pointer (%ebp) onto the stack - // before copying the stack pointer (%esp) to the frame pointer (%ebp). - // Therefore, the calling procedure's frame pointer is always available - // by dereferencing the called procedure's frame pointer, and the return - // address is always available at the memory location immediately above - // the address pointed to by the called procedure's frame pointer. The - // calling procedure's stack pointer (%esp) is 8 higher than the value - // of the called procedure's frame pointer at the time the calling - // procedure made the CALL: 4 bytes for the return address pushed by the - // CALL itself, and 4 bytes for the callee's PUSH of the caller's frame - // pointer. - // - // Instruction and frame pointer recovery for these traditional frames is - // entirely deterministic, and the stack will not be scanned after - // recovering these values. - // - // %eip_new = *(%ebp_old + 4) - // %esp_new = %ebp_old + 8 - // %ebp_new = *(%ebp_old) - program_string = "$eip $ebp 4 + ^ = " - "$esp $ebp 8 + = " - "$ebp $ebp ^ ="; - } - - // Now crank it out, making sure that the program string set at least the - // two required variables. - PostfixEvaluator evaluator = - PostfixEvaluator(&dictionary, memory_); - PostfixEvaluator::DictionaryValidityType dictionary_validity; - if (!evaluator.Evaluate(program_string, &dictionary_validity) || - dictionary_validity.find("$eip") == dictionary_validity.end() || - dictionary_validity.find("$esp") == dictionary_validity.end()) { - return NULL; - } - - // If this stack frame did not use %ebp in a traditional way, locating the - // return address isn't entirely deterministic. In that case, the stack - // can be scanned to locate the return address. - // - // Even in nontraditional frames, if program string evaluation resulted in - // both %eip and %ebp values of 0, trust that the end of the stack has been - // reached and don't scan for anything else. - if (!traditional_frame && - (dictionary["$eip"] != 0 || dictionary["$ebp"] != 0)) { - int offset = 0; - - // This scan can only be done if a CodeModules object is available, to - // check that candidate return addresses are in fact inside a module. - // - // TODO(mmentovai): This ignores dynamically-generated code. One possible - // solution is to check the minidump's memory map to see if the candidate - // %eip value comes from a mapped executable page, although this would - // require dumps that contain MINIDUMP_MEMORY_INFO, which the Breakpad - // client doesn't currently write (it would need to call MiniDumpWriteDump - // with the MiniDumpWithFullMemoryInfo type bit set). Even given this - // ability, older OSes (pre-XP SP2) and CPUs (pre-P4) don't enforce - // an independent execute privilege on memory pages. - - u_int32_t eip = dictionary["$eip"]; - if (modules_ && !modules_->GetModuleForAddress(eip)) { - const int kRASearchWords = 15; - - // The instruction pointer at .raSearchStart was invalid, so start - // looking one 32-bit word above that location. - u_int32_t location_start = dictionary[".raSearchStart"] + 4; - - for (u_int32_t location = location_start; - location <= location_start + kRASearchWords * 4; - location += 4) { - if (!memory_->GetMemoryAtAddress(location, &eip)) - break; - - if (modules_->GetModuleForAddress(eip)) { - // This is a better return address that what program string - // evaluation found. Use it, and set %esp to the location above the - // one where the return address was found. - // - // TODO(mmentovai): The return-address check can be made even - // stronger in modules for which debugging data is available. In - // that case, it's possible to check that the candidate return - // address is inside a known function. - - dictionary["$eip"] = eip; - dictionary["$esp"] = location + 4; - offset = location - location_start; - break; - } - } - } - - // When trying to recover the previous value of the frame pointer (%ebp), - // start looking at the lowest possible address in the saved-register - // area, and look at the entire saved register area, increased by the - // size of |offset| to account for additional data that may be on the - // stack. The scan is performed from the highest possible address to - // the lowest, because we expect that the function's prolog would have - // saved %ebp early. - u_int32_t ebp = dictionary["$ebp"]; - u_int32_t value; // throwaway variable to check pointer validity - if (recover_ebp && !memory_->GetMemoryAtAddress(ebp, &value)) { - int fp_search_bytes = last_frame_info->saved_register_size + offset; - u_int32_t location_end = last_frame->context.esp + - last_frame_callee_parameter_size; - - for (u_int32_t location = location_end + fp_search_bytes; - location >= location_end; - location -= 4) { - if (!memory_->GetMemoryAtAddress(location, &ebp)) - break; - - if (memory_->GetMemoryAtAddress(ebp, &value)) { - // The candidate value is a pointer to the same memory region - // (the stack). Prefer it as a recovered %ebp result. - dictionary["$ebp"] = ebp; - break; - } - } - } - } - - // Treat an instruction address of 0 as end-of-stack. Treat incorrect stack - // direction as end-of-stack to enforce progress and avoid infinite loops. - if (dictionary["$eip"] == 0 || - dictionary["$esp"] <= last_frame->context.esp) { - return NULL; - } - - // Create a new stack frame (ownership will be transferred to the caller) - // and fill it in. - StackFrameX86 *frame = new StackFrameX86(); - - frame->context = last_frame->context; - frame->context.eip = dictionary["$eip"]; - frame->context.esp = dictionary["$esp"]; - frame->context.ebp = dictionary["$ebp"]; - frame->context_validity = StackFrameX86::CONTEXT_VALID_EIP | - StackFrameX86::CONTEXT_VALID_ESP | - StackFrameX86::CONTEXT_VALID_EBP; - - // These are nonvolatile (callee-save) registers, and the program string - // may have filled them in. - if (dictionary_validity.find("$ebx") != dictionary_validity.end()) { - frame->context.ebx = dictionary["$ebx"]; - frame->context_validity |= StackFrameX86::CONTEXT_VALID_EBX; - } - if (dictionary_validity.find("$esi") != dictionary_validity.end()) { - frame->context.esi = dictionary["$esi"]; - frame->context_validity |= StackFrameX86::CONTEXT_VALID_ESI; - } - if (dictionary_validity.find("$edi") != dictionary_validity.end()) { - frame->context.edi = dictionary["$edi"]; - frame->context_validity |= StackFrameX86::CONTEXT_VALID_EDI; - } - - // frame->context.eip is the return address, which is one instruction - // past the CALL that caused us to arrive at the callee. Set - // frame->instruction to one less than that. This won't reference the - // beginning of the CALL instruction, but it's guaranteed to be within the - // CALL, which is sufficient to get the source line information to match up - // with the line that contains a function call. Callers that require the - // exact return address value may access the context.eip field of - // StackFrameX86. - frame->instruction = frame->context.eip - 1; - - return frame; -} - - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.h b/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.h deleted file mode 100644 index 14b9e8b9..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/stackwalker_x86.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// stackwalker_x86.h: x86-specific stackwalker. -// -// Provides stack frames given x86 register context and a memory region -// corresponding to an x86 stack. -// -// Author: Mark Mentovai - - -#ifndef PROCESSOR_STACKWALKER_X86_H__ -#define PROCESSOR_STACKWALKER_X86_H__ - - -#include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/common/minidump_format.h" -#include "google_breakpad/processor/stackwalker.h" - -namespace google_breakpad { - -class CodeModules; - - -class StackwalkerX86 : public Stackwalker { - public: - // context is an x86 context object that gives access to x86-specific - // register state corresponding to the innermost called frame to be - // included in the stack. The other arguments are passed directly through - // to the base Stackwalker constructor. - StackwalkerX86(const SystemInfo *system_info, - const MDRawContextX86 *context, - MemoryRegion *memory, - const CodeModules *modules, - SymbolSupplier *supplier, - SourceLineResolverInterface *resolver); - - private: - // Implementation of Stackwalker, using x86 context (%ebp, %esp, %eip) and - // stack conventions (saved %ebp at [%ebp], saved %eip at 4[%ebp], or - // alternate conventions as guided by stack_frame_info_). - virtual StackFrame* GetContextFrame(); - virtual StackFrame* GetCallerFrame( - const CallStack *stack, - const vector< linked_ptr > &stack_frame_info); - - // Stores the CPU context corresponding to the innermost stack frame to - // be returned by GetContextFrame. - const MDRawContextX86 *context_; -}; - - -} // namespace google_breakpad - - -#endif // PROCESSOR_STACKWALKER_X86_H__ diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dmp b/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dmp deleted file mode 100644 index 1a6feee7cc1f6a988c3810c325dc43df70562799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11317 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 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dump.out b/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dump.out deleted file mode 100644 index d8816e5d..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.dump.out +++ /dev/null @@ -1,705 +0,0 @@ -MDRawHeader - signature = 0x504d444d - version = 0x5128a793 - stream_count = 9 - stream_directory_rva = 0x20 - checksum = 0x0 - time_date_stamp = 0x45d35f73 2007-02-14 19:13:55 - flags = 0x0 - -mDirectory[0] -MDRawDirectory - stream_type = 3 - location.data_size = 100 - location.rva = 0x184 - -mDirectory[1] -MDRawDirectory - stream_type = 4 - location.data_size = 1408 - location.rva = 0x1e8 - -mDirectory[2] -MDRawDirectory - stream_type = 5 - location.data_size = 52 - location.rva = 0x1505 - -mDirectory[3] -MDRawDirectory - stream_type = 6 - location.data_size = 168 - location.rva = 0xdc - -mDirectory[4] -MDRawDirectory - stream_type = 7 - location.data_size = 56 - location.rva = 0x8c - -mDirectory[5] -MDRawDirectory - stream_type = 15 - location.data_size = 24 - location.rva = 0xc4 - -mDirectory[6] -MDRawDirectory - stream_type = 1197932545 - location.data_size = 12 - location.rva = 0x14f9 - -mDirectory[7] -MDRawDirectory - stream_type = 0 - location.data_size = 0 - location.rva = 0x0 - -mDirectory[8] -MDRawDirectory - stream_type = 0 - location.data_size = 0 - location.rva = 0x0 - -Streams: - stream type 0x0 at index 8 - stream type 0x3 at index 0 - stream type 0x4 at index 1 - stream type 0x5 at index 2 - stream type 0x6 at index 3 - stream type 0x7 at index 4 - stream type 0xf at index 5 - stream type 0x47670001 at index 6 - -MinidumpThreadList - thread_count = 2 - -thread[0] -MDRawThread - thread_id = 0xbf4 - suspend_count = 0 - priority_class = 0x0 - priority = 0x0 - teb = 0x7ffdf000 - stack.start_of_memory_range = 0x12f31c - stack.memory.data_size = 0xce4 - stack.memory.rva = 0x1639 - thread_context.data_size = 0x2cc - thread_context.rva = 0xd94 - -MDRawContextX86 - context_flags = 0x1003f - dr0 = 0x0 - dr1 = 0x0 - dr2 = 0x0 - dr3 = 0x0 - dr6 = 0x0 - dr7 = 0x0 - float_save.control_word = 0xffff027f - float_save.status_word = 0xffff0000 - float_save.tag_word = 0xffffffff - float_save.error_offset = 0x0 - float_save.error_selector = 0x220000 - float_save.data_offset = 0x0 - float_save.data_selector = 0xffff0000 - float_save.register_area[80] = 0x0000000018b72200000118b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - float_save.cr0_npx_state = 0x0 - gs = 0x0 - fs = 0x3b - es = 0x23 - ds = 0x23 - edi = 0x0 - esi = 0x7b8 - ebx = 0x7c883780 - edx = 0x7c97c0d8 - ecx = 0x7c80b46e - eax = 0x400000 - ebp = 0x12f384 - eip = 0x7c90eb94 - cs = 0x1b - eflags = 0x246 - esp = 0x12f320 - ss = 0x23 - extended_registers[512] = 0x7f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b62200 - -Stack -0x00000000c0e9907ccb25807cb8070000000000000000000034ff1200b0fe12008037887c140000000100000000000000000000001000000027e0907c2e39917c0050fd7f00f0fd7f000000000400000034f312006947c788d4f31200a89a837cf825807c0000000098f312003225807cb8070000ffffffff00000000e4f31200ff1d4000b8070000ffffffffa8fa12008037887c0e1c4000a8fa120000000000ff792a0f64f91200b01b400000004000b0fe12000040020070fa1200084042000000000080fa120080fa12004e30867ca8fa12000000000000000000000000000018000002100000e3ef907c0000000079d900000000000048f41200000014003207917c0500000078071400000014000000000020f412003207917ca05f140018ee907cfa00000074f61200000000009615917ceb06917cf00298000100000000000000384f14009615917ceb06917c7801140008000000404f14000000a659985f1400080000000000000018ee907c90fea700400698003815917c184f1400eb06917c00000000800000000000a65988f69f0090f51200a569917cf8f41200d95c878880f5120043ef907c480485000500000090f5120088fea700a8212400000000000000000080f512002469917cf8fbfd7fa821240008000000f500000000000000384d850078019800a8fa120004000000a05f140096d4917c00000000b0d4917c0000000008069800184f140000000000104f140000000000184f140000004000000000010040020063003a005c0074006500730074005f006100700070002e006500780065000000000000002f00000028000000184f1400780185007801140028000000000000000000140084f3120010000000d8f5120018ee907cf006917cffffffffeb06917ce619917c88e6a7003003000001030000ff1b917c0000980080e6a70080069800400698000000980080e6a70000000000000000000000000080e6a7000818000088e6a700d759927c78019800081800000210000000009800f8f31200280a0000dcf6120018ee907cf006917cffffffffeb06917c0859927c00009800080000005859927c00000000000001000000a659000000005a6202000010000068fe030001000000dffe03000000010000000100fffffe7f0100000001c0c27700008500000000002dc0c27700000000684aaf590000a659241a917c80c0977c0000000000000000cd5c927c0050fd7f0000a65900000100080000004550fd7f0000000000000000000000000050fd7fcd5c927c05000000d4f61200f45c927c80e4977c05000000010000000050fd7f18f712007009917cc0e4977c172e817cff2d817c000000000000a6590000a6590210000000f0fd7f05000000e8f612000806980064f81200a89a837c002e817cffffffffff2d817cc8242400dd8ea75901000000000000004cf712003608a9590000a65901000000000000000100000060f71200e407a9596cf7120000004000000000010040020063003a005c0074006500730074005f006100700070002e0065007800650000006d05917c905f140000000000440d020000000000604f14000c0000007801140000000000a04e1400d84d8700400687004509917c0800000000000000000000004000000078011400a8038700404f14000510907c000000000000000078011400980387000800000008000000c0e4977cd04d8700f835887c7801140010000000a0e7ae591600000030fd1200d39b917c44000000620000000000a65950e9ae59d8eaae59a80387000100000014040000000000000100000002000000f800a659c003870001000000780114009508917c0000a659091b917c020000000900000040000000a2fd12009cfd1200404f1400a2fd1200d04d8700640187000000000000000000d04d870010000000d84d8700384f1400a803870010000000c00300000000870074fb1200404f14006cfe120018ee907cf006917cffffffffeb06917ca09d400000008700000000000400000000000000ffffff3fc04d8700ccfd12009c4d400004000000fa19917cb84d870064018700c04d8700063440000400000018000000c04d870079d90000c0038700fa31400000000000c04d8700c04d87000000000001000000b0fe120082294000c04d87000000000000000000c04d870048fe12008cfe120000000000e224400040fe12008cfe1200c04d8700d84d8700b0fe12008600817c54fa1200d8f9120000000000160018005479420079d90000000000000757917c00000200a4f91200a4f91200a4f91200020000000200000000000000c4f912000000000079d9000014fb12004cfa120014fb1200005a917c00fa1200a0fb120001000000655a917ca405817c74c1977ce705817c00000000f4fd120098fb120000000000a0fb12000000000090fb12000000800070fa120000000000000000000000000016001800547942000000000001000000000000000000000000000000000000003308917ca89a837c0000807c0000807ce800807c2cfa12001fe2907c11fa877cffffffffe06f817c000000006cfa12001c0000000f000000e06f817c8fc60000f0f312000060817cc8fa1200a89a837c7039867cfffffffff0ff1200da36847ca8fa1200099b837cb0fa120000000000b0fa12000000000000000000000000009cfb1200b8fb1200d4fa1200bf37907c9cfb1200e0ff1200b8fb120070fb1200b0ff1200d837907ce0ff120084fb12008b37907c9cfb1200e0ff1200b8fb120070fb1200a89a837c010000009cfb1200e0ff12006078937c9cfb1200e0ff1200b8fb120070fb1200a89a837c280a00009cfb12000200000018ee907c9032917cffffffff8832917c3364917c68fb1200000087003207917c02000000dc31917c1232917c8132917c8832917c1e000000c01e2400080200003807917c54fb12003207917cc4fb120018ee907c9032917c0000130000d01200beb4800088fe1200faea907c00000000b8fb12009cfb1200b8fb1200050000c000000000000000009e4240000200000001000000450000003f0001000000000000000000000000000000000000000000000000007f02ffff0000ffffffffffff0000000000002200000000000000ffff0000000018b72200000118b7220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b0000002300000023000000280a000002000000c1ab807c58bc420094fe12004500000088fe12009e4240001b0000004602010084fe1200230000007f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b622004500000070ff120000424000b8278700dc31917c00000000004c870000000020040000000000000007000000000000004042400000000000000000002e000000000000000cff12007b434100010000000700000084434100004d87002e39917cffffffff24000000240000002700000000000000584d870004000000b1944000244c87002a0000002f000000c0fe1200004d8700584d87000000a659b0b9a859015d400015aa400000000000b4070000784e14000000000001000000f40b00000000000000000000bc070000b8070000f40b0000a8fa120000000000009c4000599c400094b240004f752a0fc0ff1200ec534000010000003039870050398700ff752a0f00002400a02024000050fd7f050000c00100000005000000000000000000240084ff1200acfa1200e0ff1200d06f4000a70b7a0f00000000f0ff1200d76f817c00002400a02024000050fd7f050000c0c8ff1200a8fa1200ffffffffa89a837ce06f817c0000000000000000000000004354400000000000 - -thread[1] -MDRawThread - thread_id = 0x11c0 - suspend_count = 0 - priority_class = 0x0 - priority = 0x0 - teb = 0x7ffde000 - stack.start_of_memory_range = 0x97f6e8 - stack.memory.data_size = 0x918 - stack.memory.rva = 0x231d - thread_context.data_size = 0x2cc - thread_context.rva = 0x1060 - -MDRawContextX86 - context_flags = 0x1003f - dr0 = 0x0 - dr1 = 0x0 - dr2 = 0x0 - dr3 = 0x0 - dr6 = 0x0 - dr7 = 0x0 - float_save.control_word = 0xffff027f - float_save.status_word = 0xffff0000 - float_save.tag_word = 0xffffffff - float_save.error_offset = 0x0 - float_save.error_selector = 0x870000 - float_save.data_offset = 0x0 - float_save.data_selector = 0xffff0000 - float_save.register_area[80] = 0x84fb120000001400320778071400000014000000f4fe1200a0fd120018eeb0fd12003815917c961534ff120034ff12000000e7712a0f2a0000005400ccfb120068514000584d540000002a000000f4fe - float_save.cr0_npx_state = 0x0 - gs = 0x0 - fs = 0x3b - es = 0x23 - ds = 0x23 - edi = 0x145b00 - esi = 0x145aa8 - ebx = 0x145ad0 - edx = 0x7c90eb94 - ecx = 0x7 - eax = 0xa80000 - ebp = 0x97f6fc - eip = 0x7c90eb94 - cs = 0x1b - eflags = 0x246 - esp = 0x97f6ec - ss = 0x23 - extended_registers[512] = 0x7f0200000000870000000000000000000000000000000000801f0000ccfb120084fb1200000014003207917c050000007807140000001400000000005cfb1200f4fe1200a0fd120018ee907c2d020000b0fd12003815917c9615917ceb06917c34ff120034ff12000000000060000000e7712a0f2a0000005400000000000000ccfb120068514000584d870034fc1200540000002a000000f4fe1200f8fe12002c2f4000584d87005e00000034fc12005400000000000000b0fe1200f4fe1200c0fe12005f21400034fc12002a0000003b762a0f91214000303132330000870038393a3b3c3d3e3f4041424300000000070000003bd11e2340061400b858101e5e03e0652e005c00320033003100650064003100780114002d0066003300380034002d0000000000390034002d0062003800350038002d0031003000984e1400350065003000330065003000360035002e0064006d0070000000907c08000000ffffffff8832917cbeb4807c780114001d00f40b784e14000401000044fd120050fd1200c01e240078011400bdb9807ca04e14007c80c2770000000008fd120078011400ecfc1200f0fc1200e6b9807cffffffff7c80c27708fd12001c00000024fd1200e92a867c7c80c277b45a887c8037887c2d0200000080c2770000c17780000000005003000010000020000000780114005cff12001648847c091b917c - -Stack -0x8000108020fa97009fd7907c0000000048f7970005000f0040061400000000004cf7970037b9807c00000000000000003103917c780114000000000061dc907cf1b8807c00000000ffffffff70f79700000000000000000054f797003082140001000000000000000200000000000000000000007cf7970020b9807c0e00000004000000006000000000a80078011400000000000882140092d5907c8b9b807c9c070000d0f89700780114009c07000038821400807f140020dea85910fa9700780114009807000088fb9700e07f14009c0700000000000078011400000000000882140000000000000000000000000078011400ba0300000000000000000000000000000000000000000000000000007801140000000000000000000000000000000000c0030000000000000000000000000000088214005c0057000600000078011400000000005c00730079007300740065006d0033000082140068011400000000000000000000821400d47f1400807f140070f8970061eea859e000a8000000a8001c4e000084f89700bdeea859e000a8000000a8001c4e0000a4f897005fefa8590000a8000000000006000000c4f89700e000a80060fe9700c8f897005abfa8590000a80000000000060000001c000000d47f1400807f1400380000006ce9907c88b9807cffffffff0000a80000000000807f140030fa97007fc3a859a0c4a859b0fb970060fe9700684f1400504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba2000000001400285214000000000034fa97007801140034fa9700910e917c080614006d05917cc84d85005c4e8500684f140000000000b04800002852140078011400e00300003052140000000000000000000000000078011400c403000030821400380000000000000000000000000000000000000000000000000000003882140048050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000140000000000807f140000000000000000000000000000000101a900000060fe9700dcff9700dcff97000050fd7f78fa970054fa9700ad9d917c8cfa9700c2066f7f0e000000000000001c01000078fa9700c84d850068fa970085ae807c78fc970024fc970083dba85978fc97008cfa9700800000008edba85914010000050000000100000096020000b8fc97003815917c9615917ceb06917c60fe970060fe9700c4fd9700d8fa9700000014003207917c21000000b80c14000000140030521400b0fa9700fffffffff4fc970018ee907c3807917cffffffff3207917cab06917ceb06917ccc4f140060fe9700684f1400e0004000e4fa9700a863917c74fb970018ee907c3808917cffffffff3308917c5b2c817c872c817c00000000f4fb9700000000000000000054fd970018ee907c4006140064fd97003815917c00e0fd7feb06917c684f140038821400780114000050fd7facfb970000000000000004000000000090fe97000000000018fb970050531400508b1400a89a837cffe9907cf60d817ca807000000000000ffe9907cf60d817c08000000000000000000000000000000585314003cfc97003882140000000000160e817cc4fd970060fe970058531400208f1400588b1400460f917c50531400208f1400780114003082140000000000b8fc970078011400b8fc9700910e917c080614006d05917c3882140060fe97000000000000000000960200003082140078011400ffe9907c38821400a807000000000000780114005853140058fc9700505314001000000000000000160e817c784e8500c4fd9700388214000000000024010000f00c00001000000044fc970000000000c7e2907ce721807cffffffffe8f69700388214001809000098fc9700acfc9700d2e2a859ffffffffe8f697003882140018090000c4fc97003882140060fe9700c4fd9700ccfc97004ee3a859ffffffffe8f69700000000003882140018090000e0fc9700f4fc970093b2a859ffffffffe8f69700000000003882140018090000c4fd970060fe9700a85a140078fd9700a5b3a85960fe9700c4fd9700684f1400e8f697000000000018090000000000000200000080fd9700c4fd970060fe970000000000f40b000000000000000000000000000000f0fd7f000000001cf3120000000000e40c000039160000cc020000940d00000000000000000000000000000000000002000000ac4f14006010000098fd97005eb7a8593916000000000000684f1400784e85000000000084ff9700d4fe97007bb9a85960fe9700c4fd9700684f14003849140084ff9700010000000000000008ff9700f40b0000090000000000000020000000200000006c0000008c000000380000001e000000c4000000dc000000a80000008401000064000000b801000030000000e801000080050000e8010000680700000000000068070000680700000000000005150000340000002915000039150000fc1600001d23000068070000600300008a070000c80a0000310a00002c130000f91400000c000000352c000000000000ffffffff5c0f0000c84d8500784e8500884e85000000000000000000000000004c010000fc39a6590000000002000000050000000100000000008500280a000001000001cc0200009c0000000b00000050000000040000000010000000000000000000000001000000000000000000000000000034ff970078baa859384914005c0f0000c84d850001000000884e8500684f140008ff970064ff970000000000a8070000b0fe1200f40b00009cfb120000000000b8fb12000000000000000000ae20140000000000884e8500784e8500c84d8500a8fa120011204000ffffffff5c0f0000a80700000000000078ff970064ff970000000000adbf807c2025807cecff97000100000084ff970003000000c0110000f40b0000f40b0000a8fa120000000000010067470c0000006cff9700bc070000ffffffff000000006c1a4000f40b000000fa12000000000000004000a09d4000b0fe120083b6807cb0fe120000004000a09d4000b0fe120000e0fd7f00069c86c0ff9700d8863f86ffffffffa89a837c90b6807c000000000000000000000000301a4000b0fe120000000000 - -MinidumpModuleList - module_count = 13 - -module[0] -MDRawModule - base_of_image = 0x400000 - size_of_image = 0x2d000 - checksum = 0x0 - time_date_stamp = 0x45d35f6c - module_name_rva = 0x78a - version_info.signature = 0x0 - version_info.struct_version = 0x0 - version_info.file_version = 0x0:0x0 - version_info.product_version = 0x0:0x0 - version_info.file_flags_mask = 0x0 - version_info.file_flags = 0x0 - version_info.file_os = 0x0 - version_info.file_type = 0x0 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 40 - cv_record.rva = 0x132c - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "c:\test_app.exe" - (code_identifier) = "45D35F6C2d000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 5a9832e5-2872-41c1-838e-d98914e9b7ff - (cv_record).age = 1 - (cv_record).pdb_file_name = "c:\test_app.pdb" - (misc_record) = (null) - (debug_file) = "c:\test_app.pdb" - (debug_identifier) = "5A9832E5287241C1838ED98914E9B7FF1" - (version) = "" - -module[1] -MDRawModule - base_of_image = 0x7c900000 - size_of_image = 0xb0000 - checksum = 0xaf2f7 - time_date_stamp = 0x411096b4 - module_name_rva = 0x7ae - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 34 - cv_record.rva = 0x1354 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\ntdll.dll" - (code_identifier) = "411096B4b0000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 36515fb5-d043-45e4-91f6-72fa2e2878c0 - (cv_record).age = 2 - (cv_record).pdb_file_name = "ntdll.pdb" - (misc_record) = (null) - (debug_file) = "ntdll.pdb" - (debug_identifier) = "36515FB5D04345E491F672FA2E2878C02" - (version) = "5.1.2600.2180" - -module[2] -MDRawModule - base_of_image = 0x7c800000 - size_of_image = 0xf4000 - checksum = 0xf724d - time_date_stamp = 0x44ab9a84 - module_name_rva = 0x7ee - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280b81 - version_info.product_version = 0x50001:0xa280b81 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 37 - cv_record.rva = 0x1376 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\kernel32.dll" - (code_identifier) = "44AB9A84f4000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = bce8785c-57b4-4245-a669-896b6a19b954 - (cv_record).age = 2 - (cv_record).pdb_file_name = "kernel32.pdb" - (misc_record) = (null) - (debug_file) = "kernel32.pdb" - (debug_identifier) = "BCE8785C57B44245A669896B6A19B9542" - (version) = "5.1.2600.2945" - -module[3] -MDRawModule - base_of_image = 0x774e0000 - size_of_image = 0x13d000 - checksum = 0x13dc6b - time_date_stamp = 0x42e5be93 - module_name_rva = 0x834 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280aa6 - version_info.product_version = 0x50001:0xa280aa6 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 34 - cv_record.rva = 0x139b - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\ole32.dll" - (code_identifier) = "42E5BE9313d000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 683b65b2-46f4-4187-96d2-ee6d4c55eb11 - (cv_record).age = 2 - (cv_record).pdb_file_name = "ole32.pdb" - (misc_record) = (null) - (debug_file) = "ole32.pdb" - (debug_identifier) = "683B65B246F4418796D2EE6D4C55EB112" - (version) = "5.1.2600.2726" - -module[4] -MDRawModule - base_of_image = 0x77dd0000 - size_of_image = 0x9b000 - checksum = 0xa0de4 - time_date_stamp = 0x411096a7 - module_name_rva = 0x874 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 37 - cv_record.rva = 0x13bd - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\advapi32.dll" - (code_identifier) = "411096A79b000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 455d6c5f-184d-45bb-b5c5-f30f82975114 - (cv_record).age = 2 - (cv_record).pdb_file_name = "advapi32.pdb" - (misc_record) = (null) - (debug_file) = "advapi32.pdb" - (debug_identifier) = "455D6C5F184D45BBB5C5F30F829751142" - (version) = "5.1.2600.2180" - -module[5] -MDRawModule - base_of_image = 0x77e70000 - size_of_image = 0x91000 - checksum = 0x9c482 - time_date_stamp = 0x411096ae - module_name_rva = 0x8ba - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 35 - cv_record.rva = 0x13e2 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\rpcrt4.dll" - (code_identifier) = "411096AE91000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = bea45a72-1da1-41da-a3ba-86b3a2031153 - (cv_record).age = 2 - (cv_record).pdb_file_name = "rpcrt4.pdb" - (misc_record) = (null) - (debug_file) = "rpcrt4.pdb" - (debug_identifier) = "BEA45A721DA141DAA3BA86B3A20311532" - (version) = "5.1.2600.2180" - -module[6] -MDRawModule - base_of_image = 0x77f10000 - size_of_image = 0x47000 - checksum = 0x4d0d0 - time_date_stamp = 0x43b34feb - module_name_rva = 0x8fc - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280b02 - version_info.product_version = 0x50001:0xa280b02 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 34 - cv_record.rva = 0x1405 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\gdi32.dll" - (code_identifier) = "43B34FEB47000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = c0ea66be-00a6-4bd7-aef7-9e443a91869c - (cv_record).age = 2 - (cv_record).pdb_file_name = "gdi32.pdb" - (misc_record) = (null) - (debug_file) = "gdi32.pdb" - (debug_identifier) = "C0EA66BE00A64BD7AEF79E443A91869C2" - (version) = "5.1.2600.2818" - -module[7] -MDRawModule - base_of_image = 0x77d40000 - size_of_image = 0x90000 - checksum = 0x9505c - time_date_stamp = 0x42260159 - module_name_rva = 0x93c - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280a3e - version_info.product_version = 0x50001:0xa280a3e - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 35 - cv_record.rva = 0x1427 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\user32.dll" - (code_identifier) = "4226015990000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = ee2b714d-83a3-4c9d-8802-7621272f8326 - (cv_record).age = 2 - (cv_record).pdb_file_name = "user32.pdb" - (misc_record) = (null) - (debug_file) = "user32.pdb" - (debug_identifier) = "EE2B714D83A34C9D88027621272F83262" - (version) = "5.1.2600.2622" - -module[8] -MDRawModule - base_of_image = 0x77c10000 - size_of_image = 0x58000 - checksum = 0x57cd3 - time_date_stamp = 0x41109752 - module_name_rva = 0x97e - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x70000:0xa280884 - version_info.product_version = 0x60001:0x21be0884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x1 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 35 - cv_record.rva = 0x144a - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\msvcrt.dll" - (code_identifier) = "4110975258000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = a678f3c3-0ded-426b-8390-32b996987e38 - (cv_record).age = 1 - (cv_record).pdb_file_name = "msvcrt.pdb" - (misc_record) = (null) - (debug_file) = "msvcrt.pdb" - (debug_identifier) = "A678F3C30DED426B839032B996987E381" - (version) = "7.0.2600.2180" - -module[9] -MDRawModule - base_of_image = 0x76390000 - size_of_image = 0x1d000 - checksum = 0x2a024 - time_date_stamp = 0x411096ae - module_name_rva = 0x9c0 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 34 - cv_record.rva = 0x146d - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\imm32.dll" - (code_identifier) = "411096AE1d000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 2c17a49c-251b-4c8e-b9e2-ad13d7d9ea16 - (cv_record).age = 2 - (cv_record).pdb_file_name = "imm32.pdb" - (misc_record) = (null) - (debug_file) = "imm32.pdb" - (debug_identifier) = "2C17A49C251B4C8EB9E2AD13D7D9EA162" - (version) = "5.1.2600.2180" - -module[10] -MDRawModule - base_of_image = 0x59a60000 - size_of_image = 0xa1000 - checksum = 0xa8824 - time_date_stamp = 0x4110969a - module_name_rva = 0xa00 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 36 - cv_record.rva = 0x148f - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\dbghelp.dll" - (code_identifier) = "4110969Aa1000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 39559573-e21b-46f2-8e28-6923be9e6a76 - (cv_record).age = 1 - (cv_record).pdb_file_name = "dbghelp.pdb" - (misc_record) = (null) - (debug_file) = "dbghelp.pdb" - (debug_identifier) = "39559573E21B46F28E286923BE9E6A761" - (version) = "5.1.2600.2180" - -module[11] -MDRawModule - base_of_image = 0x77c00000 - size_of_image = 0x8000 - checksum = 0x11d78 - time_date_stamp = 0x411096b7 - module_name_rva = 0xa44 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 36 - cv_record.rva = 0x14b3 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\version.dll" - (code_identifier) = "411096B78000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = 180a90c4-0384-463e-82dd-c45b2c8ab76e - (cv_record).age = 2 - (cv_record).pdb_file_name = "version.pdb" - (misc_record) = (null) - (debug_file) = "version.pdb" - (debug_identifier) = "180A90C40384463E82DDC45B2C8AB76E2" - (version) = "5.1.2600.2180" - -module[12] -MDRawModule - base_of_image = 0x76bf0000 - size_of_image = 0xb000 - checksum = 0xa29b - time_date_stamp = 0x411096ca - module_name_rva = 0xa88 - version_info.signature = 0xfeef04bd - version_info.struct_version = 0x10000 - version_info.file_version = 0x50001:0xa280884 - version_info.product_version = 0x50001:0xa280884 - version_info.file_flags_mask = 0x3f - version_info.file_flags = 0x0 - version_info.file_os = 0x40004 - version_info.file_type = 0x2 - version_info.file_subtype = 0x0 - version_info.file_date = 0x0:0x0 - cv_record.data_size = 34 - cv_record.rva = 0x14d7 - misc_record.data_size = 0 - misc_record.rva = 0x0 - (code_file) = "C:\WINDOWS\system32\psapi.dll" - (code_identifier) = "411096CAb000" - (cv_record).cv_signature = 0x53445352 - (cv_record).signature = a5c3a1f9-689f-43d8-ad22-8a0929388970 - (cv_record).age = 2 - (cv_record).pdb_file_name = "psapi.pdb" - (misc_record) = (null) - (debug_file) = "psapi.pdb" - (debug_identifier) = "A5C3A1F9689F43D8AD228A09293889702" - (version) = "5.1.2600.2180" - -MinidumpMemoryList - region_count = 3 - -region[0] -MDMemoryDescriptor - start_of_memory_range = 0x7c90eb14 - memory.data_size = 0x100 - memory.rva = 0x1539 -Memory -0xff83c4ec890424c744240401000000895c2408c74424100000000054e877000000c208009090909090558bec83ec508944240c64a1180000008b80a4010000890424c744240400000000c744240800000000c74424100000000054e8380000008b04248be55dc3908da424000000008d490090909090908bd40f349090909090c38da424000000008d64240090909090908d542408cd2ec3558bec9c81ecd00200008985dcfdffff898dd8fdffff8b45088b4d0489480c8d852cfdffff8988b80000008998a40000008990a800000089b0a000000089b89c0000008d4d0c8988c40000008b4d008988b40000008b4dfc8988c00000008c88bc0000008c989800 - -region[1] -MDMemoryDescriptor - start_of_memory_range = 0x12f31c - memory.data_size = 0xce4 - memory.rva = 0x1639 -Memory -0x00000000c0e9907ccb25807cb8070000000000000000000034ff1200b0fe12008037887c140000000100000000000000000000001000000027e0907c2e39917c0050fd7f00f0fd7f000000000400000034f312006947c788d4f31200a89a837cf825807c0000000098f312003225807cb8070000ffffffff00000000e4f31200ff1d4000b8070000ffffffffa8fa12008037887c0e1c4000a8fa120000000000ff792a0f64f91200b01b400000004000b0fe12000040020070fa1200084042000000000080fa120080fa12004e30867ca8fa12000000000000000000000000000018000002100000e3ef907c0000000079d900000000000048f41200000014003207917c0500000078071400000014000000000020f412003207917ca05f140018ee907cfa00000074f61200000000009615917ceb06917cf00298000100000000000000384f14009615917ceb06917c7801140008000000404f14000000a659985f1400080000000000000018ee907c90fea700400698003815917c184f1400eb06917c00000000800000000000a65988f69f0090f51200a569917cf8f41200d95c878880f5120043ef907c480485000500000090f5120088fea700a8212400000000000000000080f512002469917cf8fbfd7fa821240008000000f500000000000000384d850078019800a8fa120004000000a05f140096d4917c00000000b0d4917c0000000008069800184f140000000000104f140000000000184f140000004000000000010040020063003a005c0074006500730074005f006100700070002e006500780065000000000000002f00000028000000184f1400780185007801140028000000000000000000140084f3120010000000d8f5120018ee907cf006917cffffffffeb06917ce619917c88e6a7003003000001030000ff1b917c0000980080e6a70080069800400698000000980080e6a70000000000000000000000000080e6a7000818000088e6a700d759927c78019800081800000210000000009800f8f31200280a0000dcf6120018ee907cf006917cffffffffeb06917c0859927c00009800080000005859927c00000000000001000000a659000000005a6202000010000068fe030001000000dffe03000000010000000100fffffe7f0100000001c0c27700008500000000002dc0c27700000000684aaf590000a659241a917c80c0977c0000000000000000cd5c927c0050fd7f0000a65900000100080000004550fd7f0000000000000000000000000050fd7fcd5c927c05000000d4f61200f45c927c80e4977c05000000010000000050fd7f18f712007009917cc0e4977c172e817cff2d817c000000000000a6590000a6590210000000f0fd7f05000000e8f612000806980064f81200a89a837c002e817cffffffffff2d817cc8242400dd8ea75901000000000000004cf712003608a9590000a65901000000000000000100000060f71200e407a9596cf7120000004000000000010040020063003a005c0074006500730074005f006100700070002e0065007800650000006d05917c905f140000000000440d020000000000604f14000c0000007801140000000000a04e1400d84d8700400687004509917c0800000000000000000000004000000078011400a8038700404f14000510907c000000000000000078011400980387000800000008000000c0e4977cd04d8700f835887c7801140010000000a0e7ae591600000030fd1200d39b917c44000000620000000000a65950e9ae59d8eaae59a80387000100000014040000000000000100000002000000f800a659c003870001000000780114009508917c0000a659091b917c020000000900000040000000a2fd12009cfd1200404f1400a2fd1200d04d8700640187000000000000000000d04d870010000000d84d8700384f1400a803870010000000c00300000000870074fb1200404f14006cfe120018ee907cf006917cffffffffeb06917ca09d400000008700000000000400000000000000ffffff3fc04d8700ccfd12009c4d400004000000fa19917cb84d870064018700c04d8700063440000400000018000000c04d870079d90000c0038700fa31400000000000c04d8700c04d87000000000001000000b0fe120082294000c04d87000000000000000000c04d870048fe12008cfe120000000000e224400040fe12008cfe1200c04d8700d84d8700b0fe12008600817c54fa1200d8f9120000000000160018005479420079d90000000000000757917c00000200a4f91200a4f91200a4f91200020000000200000000000000c4f912000000000079d9000014fb12004cfa120014fb1200005a917c00fa1200a0fb120001000000655a917ca405817c74c1977ce705817c00000000f4fd120098fb120000000000a0fb12000000000090fb12000000800070fa120000000000000000000000000016001800547942000000000001000000000000000000000000000000000000003308917ca89a837c0000807c0000807ce800807c2cfa12001fe2907c11fa877cffffffffe06f817c000000006cfa12001c0000000f000000e06f817c8fc60000f0f312000060817cc8fa1200a89a837c7039867cfffffffff0ff1200da36847ca8fa1200099b837cb0fa120000000000b0fa12000000000000000000000000009cfb1200b8fb1200d4fa1200bf37907c9cfb1200e0ff1200b8fb120070fb1200b0ff1200d837907ce0ff120084fb12008b37907c9cfb1200e0ff1200b8fb120070fb1200a89a837c010000009cfb1200e0ff12006078937c9cfb1200e0ff1200b8fb120070fb1200a89a837c280a00009cfb12000200000018ee907c9032917cffffffff8832917c3364917c68fb1200000087003207917c02000000dc31917c1232917c8132917c8832917c1e000000c01e2400080200003807917c54fb12003207917cc4fb120018ee907c9032917c0000130000d01200beb4800088fe1200faea907c00000000b8fb12009cfb1200b8fb1200050000c000000000000000009e4240000200000001000000450000003f0001000000000000000000000000000000000000000000000000007f02ffff0000ffffffffffff0000000000002200000000000000ffff0000000018b72200000118b7220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b0000002300000023000000280a000002000000c1ab807c58bc420094fe12004500000088fe12009e4240001b0000004602010084fe1200230000007f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b622004500000070ff120000424000b8278700dc31917c00000000004c870000000020040000000000000007000000000000004042400000000000000000002e000000000000000cff12007b434100010000000700000084434100004d87002e39917cffffffff24000000240000002700000000000000584d870004000000b1944000244c87002a0000002f000000c0fe1200004d8700584d87000000a659b0b9a859015d400015aa400000000000b4070000784e14000000000001000000f40b00000000000000000000bc070000b8070000f40b0000a8fa120000000000009c4000599c400094b240004f752a0fc0ff1200ec534000010000003039870050398700ff752a0f00002400a02024000050fd7f050000c00100000005000000000000000000240084ff1200acfa1200e0ff1200d06f4000a70b7a0f00000000f0ff1200d76f817c00002400a02024000050fd7f050000c0c8ff1200a8fa1200ffffffffa89a837ce06f817c0000000000000000000000004354400000000000 - -region[2] -MDMemoryDescriptor - start_of_memory_range = 0x97f6e8 - memory.data_size = 0x918 - memory.rva = 0x231d -Memory -0x8000108020fa97009fd7907c0000000048f7970005000f0040061400000000004cf7970037b9807c00000000000000003103917c780114000000000061dc907cf1b8807c00000000ffffffff70f79700000000000000000054f797003082140001000000000000000200000000000000000000007cf7970020b9807c0e00000004000000006000000000a80078011400000000000882140092d5907c8b9b807c9c070000d0f89700780114009c07000038821400807f140020dea85910fa9700780114009807000088fb9700e07f14009c0700000000000078011400000000000882140000000000000000000000000078011400ba0300000000000000000000000000000000000000000000000000007801140000000000000000000000000000000000c0030000000000000000000000000000088214005c0057000600000078011400000000005c00730079007300740065006d0033000082140068011400000000000000000000821400d47f1400807f140070f8970061eea859e000a8000000a8001c4e000084f89700bdeea859e000a8000000a8001c4e0000a4f897005fefa8590000a8000000000006000000c4f89700e000a80060fe9700c8f897005abfa8590000a80000000000060000001c000000d47f1400807f1400380000006ce9907c88b9807cffffffff0000a80000000000807f140030fa97007fc3a859a0c4a859b0fb970060fe9700684f1400504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba2000000001400285214000000000034fa97007801140034fa9700910e917c080614006d05917cc84d85005c4e8500684f140000000000b04800002852140078011400e00300003052140000000000000000000000000078011400c403000030821400380000000000000000000000000000000000000000000000000000003882140048050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000140000000000807f140000000000000000000000000000000101a900000060fe9700dcff9700dcff97000050fd7f78fa970054fa9700ad9d917c8cfa9700c2066f7f0e000000000000001c01000078fa9700c84d850068fa970085ae807c78fc970024fc970083dba85978fc97008cfa9700800000008edba85914010000050000000100000096020000b8fc97003815917c9615917ceb06917c60fe970060fe9700c4fd9700d8fa9700000014003207917c21000000b80c14000000140030521400b0fa9700fffffffff4fc970018ee907c3807917cffffffff3207917cab06917ceb06917ccc4f140060fe9700684f1400e0004000e4fa9700a863917c74fb970018ee907c3808917cffffffff3308917c5b2c817c872c817c00000000f4fb9700000000000000000054fd970018ee907c4006140064fd97003815917c00e0fd7feb06917c684f140038821400780114000050fd7facfb970000000000000004000000000090fe97000000000018fb970050531400508b1400a89a837cffe9907cf60d817ca807000000000000ffe9907cf60d817c08000000000000000000000000000000585314003cfc97003882140000000000160e817cc4fd970060fe970058531400208f1400588b1400460f917c50531400208f1400780114003082140000000000b8fc970078011400b8fc9700910e917c080614006d05917c3882140060fe97000000000000000000960200003082140078011400ffe9907c38821400a807000000000000780114005853140058fc9700505314001000000000000000160e817c784e8500c4fd9700388214000000000024010000f00c00001000000044fc970000000000c7e2907ce721807cffffffffe8f69700388214001809000098fc9700acfc9700d2e2a859ffffffffe8f697003882140018090000c4fc97003882140060fe9700c4fd9700ccfc97004ee3a859ffffffffe8f69700000000003882140018090000e0fc9700f4fc970093b2a859ffffffffe8f69700000000003882140018090000c4fd970060fe9700a85a140078fd9700a5b3a85960fe9700c4fd9700684f1400e8f697000000000018090000000000000200000080fd9700c4fd970060fe970000000000f40b000000000000000000000000000000f0fd7f000000001cf3120000000000e40c000039160000cc020000940d00000000000000000000000000000000000002000000ac4f14006010000098fd97005eb7a8593916000000000000684f1400784e85000000000084ff9700d4fe97007bb9a85960fe9700c4fd9700684f14003849140084ff9700010000000000000008ff9700f40b0000090000000000000020000000200000006c0000008c000000380000001e000000c4000000dc000000a80000008401000064000000b801000030000000e801000080050000e8010000680700000000000068070000680700000000000005150000340000002915000039150000fc1600001d23000068070000600300008a070000c80a0000310a00002c130000f91400000c000000352c000000000000ffffffff5c0f0000c84d8500784e8500884e85000000000000000000000000004c010000fc39a6590000000002000000050000000100000000008500280a000001000001cc0200009c0000000b00000050000000040000000010000000000000000000000001000000000000000000000000000034ff970078baa859384914005c0f0000c84d850001000000884e8500684f140008ff970064ff970000000000a8070000b0fe1200f40b00009cfb120000000000b8fb12000000000000000000ae20140000000000884e8500784e8500c84d8500a8fa120011204000ffffffff5c0f0000a80700000000000078ff970064ff970000000000adbf807c2025807cecff97000100000084ff970003000000c0110000f40b0000f40b0000a8fa120000000000010067470c0000006cff9700bc070000ffffffff000000006c1a4000f40b000000fa12000000000000004000a09d4000b0fe120083b6807cb0fe120000004000a09d4000b0fe120000e0fd7f00069c86c0ff9700d8863f86ffffffffa89a837c90b6807c000000000000000000000000301a4000b0fe120000000000 - -MDException - thread_id = 0xbf4 - exception_record.exception_code = 0xc0000005 - exception_record.exception_flags = 0x0 - exception_record.exception_record = 0x0 - exception_record.exception_address = 0x40429e - exception_record.number_parameters = 2 - exception_record.exception_information[ 0] = 0x1 - exception_record.exception_information[ 1] = 0x45 - thread_context.data_size = 716 - thread_context.rva = 0xac8 - -MDRawContextX86 - context_flags = 0x1003f - dr0 = 0x0 - dr1 = 0x0 - dr2 = 0x0 - dr3 = 0x0 - dr6 = 0x0 - dr7 = 0x0 - float_save.control_word = 0xffff027f - float_save.status_word = 0xffff0000 - float_save.tag_word = 0xffffffff - float_save.error_offset = 0x0 - float_save.error_selector = 0x220000 - float_save.data_offset = 0x0 - float_save.data_selector = 0xffff0000 - float_save.register_area[80] = 0x0000000018b72200000118b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - float_save.cr0_npx_state = 0x0 - gs = 0x0 - fs = 0x3b - es = 0x23 - ds = 0x23 - edi = 0xa28 - esi = 0x2 - ebx = 0x7c80abc1 - edx = 0x42bc58 - ecx = 0x12fe94 - eax = 0x45 - ebp = 0x12fe88 - eip = 0x40429e - cs = 0x1b - eflags = 0x10246 - esp = 0x12fe84 - ss = 0x23 - extended_registers[512] = 0x7f0200000000220000000000000000000000000000000000801f0000ffff00000000000018b72200000100000000000018b72200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004509917c4e09917c38b622002400020024b42200020000009041917c0070fd7f0510907cccb22200000000009cb3220018ee907c7009917cc0e4977c6f3e917c623e917c08020000dcb62200b4b622001e000000000000000000000000000000000000002eb42200000000000f000000020000001e00200000fcfd7f2f63796764726976652f632f444f43554d457e312f4d4d454e544f7e312f4c4f43414c537e312f54656d7000000000000000000130b422000000004300000000000000001efcfd7f4509917c4e09917c5ad9000008b32200b4b62200 - -MDRawSystemInfo - processor_architecture = 0 - processor_level = 6 - processor_revision = 0xd08 - number_of_processors = 1 - product_type = 1 - major_version = 5 - minor_version = 1 - build_number = 2600 - platform_id = 2 - csd_version_rva = 0x768 - suite_mask = 0x100 - cpu.x86_cpu_info.vendor_id[0] = 0x756e6547 - cpu.x86_cpu_info.vendor_id[1] = 0x49656e69 - cpu.x86_cpu_info.vendor_id[2] = 0x6c65746e - cpu.x86_cpu_info.version_information = 0x6d8 - cpu.x86_cpu_info.feature_information = 0xafe9fbff - cpu.x86_cpu_info.amd_extended_cpu_features = 0xffffffff - (csd_version) = "Service Pack 2" - (cpu_vendor) = "GenuineIntel" - -MDRawMiscInfo - size_of_info = 24 - flags1 = 0x3 - process_id = 0xf5c - process_create_time = 0x45d35f73 - process_user_time = 0x0 - process_kernel_time = 0x0 - -MDRawBreakpadInfo - validity = 0x3 - dump_thread_id = 0x11c0 - requesting_thread_id = 0xbf4 - diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.machine_readable.out b/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.machine_readable.out deleted file mode 100644 index e1589534..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.machine_readable.out +++ /dev/null @@ -1,21 +0,0 @@ -OS|Windows NT|5.1.2600 Service Pack 2 -CPU|x86|GenuineIntel family 6 model 13 stepping 8|1 -Crash|EXCEPTION_ACCESS_VIOLATION|0x45|0 -Module|test_app.exe||test_app.pdb|5A9832E5287241C1838ED98914E9B7FF1|0x00400000|0x0042cfff|1 -Module|dbghelp.dll|5.1.2600.2180|dbghelp.pdb|39559573E21B46F28E286923BE9E6A761|0x59a60000|0x59b00fff|0 -Module|imm32.dll|5.1.2600.2180|imm32.pdb|2C17A49C251B4C8EB9E2AD13D7D9EA162|0x76390000|0x763acfff|0 -Module|psapi.dll|5.1.2600.2180|psapi.pdb|A5C3A1F9689F43D8AD228A09293889702|0x76bf0000|0x76bfafff|0 -Module|ole32.dll|5.1.2600.2726|ole32.pdb|683B65B246F4418796D2EE6D4C55EB112|0x774e0000|0x7761cfff|0 -Module|version.dll|5.1.2600.2180|version.pdb|180A90C40384463E82DDC45B2C8AB76E2|0x77c00000|0x77c07fff|0 -Module|msvcrt.dll|7.0.2600.2180|msvcrt.pdb|A678F3C30DED426B839032B996987E381|0x77c10000|0x77c67fff|0 -Module|user32.dll|5.1.2600.2622|user32.pdb|EE2B714D83A34C9D88027621272F83262|0x77d40000|0x77dcffff|0 -Module|advapi32.dll|5.1.2600.2180|advapi32.pdb|455D6C5F184D45BBB5C5F30F829751142|0x77dd0000|0x77e6afff|0 -Module|rpcrt4.dll|5.1.2600.2180|rpcrt4.pdb|BEA45A721DA141DAA3BA86B3A20311532|0x77e70000|0x77f00fff|0 -Module|gdi32.dll|5.1.2600.2818|gdi32.pdb|C0EA66BE00A64BD7AEF79E443A91869C2|0x77f10000|0x77f56fff|0 -Module|kernel32.dll|5.1.2600.2945|kernel32.pdb|BCE8785C57B44245A669896B6A19B9542|0x7c800000|0x7c8f3fff|0 -Module|ntdll.dll|5.1.2600.2180|ntdll.pdb|36515FB5D04345E491F672FA2E2878C02|0x7c900000|0x7c9affff|0 - -0|0|test_app.exe|`anonymous namespace'::CrashFunction|c:\test_app.cc|58|0x3 -0|1|test_app.exe|main|c:\test_app.cc|65|0x4 -0|2|test_app.exe|__tmainCRTStartup|f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c|327|0x11 -0|3|kernel32.dll|BaseProcessStart|||0x22 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.out b/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.out deleted file mode 100644 index 21b425de..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/minidump2.stackwalk.out +++ /dev/null @@ -1,35 +0,0 @@ -Operating system: Windows NT - 5.1.2600 Service Pack 2 -CPU: x86 - GenuineIntel family 6 model 13 stepping 8 - 1 CPU - -Crash reason: EXCEPTION_ACCESS_VIOLATION -Crash address: 0x45 - -Thread 0 (crashed) - 0 test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 58 + 0x3] - eip = 0x0040429e esp = 0x0012fe84 ebp = 0x0012fe88 ebx = 0x7c80abc1 - esi = 0x00000002 edi = 0x00000a28 eax = 0x00000045 ecx = 0x0012fe94 - edx = 0x0042bc58 efl = 0x00010246 - 1 test_app.exe!main [test_app.cc : 65 + 0x4] - eip = 0x00404200 esp = 0x0012fe90 ebp = 0x0012ff70 - 2 test_app.exe!__tmainCRTStartup [crt0.c : 327 + 0x11] - eip = 0x004053ec esp = 0x0012ff78 ebp = 0x0012ffc0 - 3 kernel32.dll!BaseProcessStart + 0x22 - eip = 0x7c816fd7 esp = 0x0012ffc8 ebp = 0x0012fff0 - -Loaded modules: -0x00400000 - 0x0042cfff test_app.exe ??? (main) -0x59a60000 - 0x59b00fff dbghelp.dll 5.1.2600.2180 -0x76390000 - 0x763acfff imm32.dll 5.1.2600.2180 -0x76bf0000 - 0x76bfafff psapi.dll 5.1.2600.2180 -0x774e0000 - 0x7761cfff ole32.dll 5.1.2600.2726 -0x77c00000 - 0x77c07fff version.dll 5.1.2600.2180 -0x77c10000 - 0x77c67fff msvcrt.dll 7.0.2600.2180 -0x77d40000 - 0x77dcffff user32.dll 5.1.2600.2622 -0x77dd0000 - 0x77e6afff advapi32.dll 5.1.2600.2180 -0x77e70000 - 0x77f00fff rpcrt4.dll 5.1.2600.2180 -0x77f10000 - 0x77f56fff gdi32.dll 5.1.2600.2818 -0x7c800000 - 0x7c8f3fff kernel32.dll 5.1.2600.2945 -0x7c900000 - 0x7c9affff ntdll.dll 5.1.2600.2180 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/module1.out b/thirdparty/google-breakpad/r318/src/processor/testdata/module1.out deleted file mode 100644 index 85687828..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/module1.out +++ /dev/null @@ -1,19 +0,0 @@ -MODULE windows x86 111111111111111111111111111111111 module1.pdb -FILE 1 file1_1.cc -FILE 2 file1_2.cc -FILE 3 file1_3.cc -FUNC 1000 c 0 Function1_1 -1000 4 44 1 -1004 4 45 1 -1008 4 46 1 -FUNC 1100 8 4 Function1_2 -1100 4 65 2 -1104 4 66 2 -FUNC 1200 100 8 Function1_3 -FUNC 1300 100 c Function1_4 -FUNC 2000 0 0 Test_Zero_Size_Function_Is_Ignored -2000 4 88 2 -STACK WIN 4 1000 c 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = -STACK WIN 4 1100 8 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = -STACK WIN 4 1100 100 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = -STACK WIN 4 1300 100 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/module2.out b/thirdparty/google-breakpad/r318/src/processor/testdata/module2.out deleted file mode 100644 index 265401c1..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/module2.out +++ /dev/null @@ -1,17 +0,0 @@ -MODULE windows x86 222222222 module2.pdb -FILE 1 file2_1.cc -FILE 2 file2_2.cc -FILE 3 file2_3.cc -FUNC 2000 c 4 Function2_1 -1000 4 54 1 -1004 4 55 1 -1008 4 56 1 -PUBLIC 2160 0 Public2_1 -FUNC 2170 14 4 Function2_2 -2170 6 10 2 -2176 4 12 2 -217a 6 13 2 -2180 4 21 2 -PUBLIC 21a0 0 Public2_2 -STACK WIN 4 2000 c 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = -STACK WIN 4 2170 14 1 0 0 0 0 0 1 $eip 4 + ^ = $esp $ebp 8 + = $ebp $ebp ^ = diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/module3_bad.out b/thirdparty/google-breakpad/r318/src/processor/testdata/module3_bad.out deleted file mode 100644 index bb772486..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/module3_bad.out +++ /dev/null @@ -1,3 +0,0 @@ -MODULE windows x86 333333333333333333333333333333333 module3.pdb -FILE 1 file1.cc -FUNC 1000 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/module4_bad.out b/thirdparty/google-breakpad/r318/src/processor/testdata/module4_bad.out deleted file mode 100644 index d01fb2cc..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/module4_bad.out +++ /dev/null @@ -1,5 +0,0 @@ -MODULE windows x86 444444444444444444444444444444444 module4.pdb -FILE 1 file4_1.cc -FILE 2 file4_2.cc -1000 4 44 1 -1004 4 45 1 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym b/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym deleted file mode 100644 index b813dbce..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym +++ /dev/null @@ -1,5787 +0,0 @@ -MODULE windows x86 BCE8785C57B44245A669896B6A19B9542 kernel32.pdb -PUBLIC b5ae c BaseDllInitialize -PUBLIC 9b47 4 CloseHandle -PUBLIC 17826 0 BaseDllInitializeMemoryManager -PUBLIC 55709 10 EnumResourceNamesW -PUBLIC be41 4 BaseDllMapResourceIdA -PUBLIC 98f4 8 BasepMapModuleHandle -PUBLIC 936b 4 BaseSetLastNTError -PUBLIC 92b0 4 SetLastError -PUBLIC 30769 0 GetLastError -PUBLIC b722 0 ConsoleApp -PUBLIC 29d7a 18 SetUpConsoleInfo -PUBLIC 1b069 0 InitExeName -PUBLIC 17860 0 InitializeCtrlHandling -PUBLIC 29f30 4 SetUpHandles -PUBLIC 1dc03 8 SetStdHandle -PUBLIC 12f39 4 GetStdHandle -PUBLIC 17889 4 BaseDllInitializeIniFileMappings -PUBLIC 17923 0 NlsServerInitialize -PUBLIC 180a6 0 NlsProcessInitialize -PUBLIC 1795e 0 AllocTables -PUBLIC 179ea 0 GetUnicodeFileInfo -PUBLIC 16e70 c GetLocaleFileInfo -PUBLIC 18a21 0 GetDefaultSortkeyFileInfo -PUBLIC 17cb5 0 GetDefaultSortTablesFileInfo -PUBLIC 1839b 8 GetSortTablesFileInfo -PUBLIC 998d 8 LocalAlloc -PUBLIC 992f 4 LocalFree -PUBLIC 1625 20 DeviceIoControl -PUBLIC 32eb1 4 LocalUnlock -PUBLIC 32e1d 4 LocalLock -PUBLIC a03b 4 ResetEvent -PUBLIC a017 4 SetEvent -PUBLIC 55921 4 SetLocalTime -PUBLIC a35e 18 CompareStringW -PUBLIC 55a0e 4 LocalFlags -PUBLIC 55b09 4 LocalHandle -PUBLIC 30927 c LocalReAlloc -PUBLIC 30bd3 c InternalFindAtom -PUBLIC 37923 0 wcscpy -PUBLIC 33107 14 InternalGetAtomName -PUBLIC ffb1 c InternalAddAtom -PUBLIC 326c1 4 AddAtomW -PUBLIC ab78 4 BaseDllMapResourceIdW -PUBLIC 2d9b2 0 wcslen -PUBLIC 330e7 c GetAtomNameW -PUBLIC a9cc 8 lstrcmpW -PUBLIC ba64 8 lstrcpyW -PUBLIC bbce c FindResourceW -PUBLIC e6dc 18 SearchPathW -PUBLIC 1021c 10 BaseCreateStack -PUBLIC 55bb1 0 wcscat -PUBLIC 30b7d 8 InternalDeleteAtom -PUBLIC 2c86d 0 CloseProfileUserMapping -PUBLIC ddfe 1c DuplicateHandle -PUBLIC a996 8 lstrcmpiW -PUBLIC b64c 8 BaseThreadStart -PUBLIC 2520 8 WaitForSingleObject -PUBLIC 1042c 1c CreateRemoteThread -PUBLIC 98eb 0 GetCurrentThread -PUBLIC 9766 4 InterlockedIncrement -PUBLIC 977a 4 InterlockedDecrement -PUBLIC 978e 8 InterlockedExchange -PUBLIC 97a2 c InterlockedCompareExchange -PUBLIC 97b6 8 InterlockedExchangeAdd -PUBLIC 97c6 c MulDiv -PUBLIC 10659 8 BaseThreadStartThunk -PUBLIC 10665 8 BaseProcessStartThunk -PUBLIC 10672 4 SwitchToFiber -PUBLIC 106fa 18 _ResourceCallEnumLangRoutine -PUBLIC 1071e 14 _ResourceCallEnumNameRoutine -PUBLIC 1073e 10 _ResourceCallEnumTypeRoutine -PUBLIC 2ff92 0 BaseFiberStart -PUBLIC 103a3 14 BaseInitializeContext -PUBLIC 55bbc 4 ResetAccessDate -PUBLIC 55bee 4 ComputeRemainingSize -PUBLIC 55c24 8 ComputeRequestSize -PUBLIC 55c57 c ReportTransfer -PUBLIC 55c83 8 BackupReadBuffer -PUBLIC 55cd4 c BackupReadStream -PUBLIC 55df2 4 BackupTestRestartStream -PUBLIC 55eb4 8 BasepIsDataAttribute -PUBLIC 55eef 18 BackupSeek -PUBLIC 5604f c BackupWriteHeader -PUBLIC 560f8 c BackupWriteSparse -PUBLIC 561d4 c BackupWriteStream -PUBLIC 5627e c BackupWriteAlternateData -PUBLIC 56381 4 BackupAlloc -PUBLIC 563b1 4 BackupFree -PUBLIC 563d6 8 GrowBuffer -PUBLIC 5643b 4 FreeBuffer -PUBLIC 5645f 4 FreeContext -PUBLIC 564b8 4 AllocContext -PUBLIC 56519 c BackupGetSparseMap -PUBLIC 5669e c BackupReadData -PUBLIC 5676b c BackupReadAlternateData -PUBLIC 569ec c BackupReadEaData -PUBLIC 56ada c BackupReadObjectId -PUBLIC 56b94 c BackupReadReparseData -PUBLIC 56cc7 c BackupReadSecurityData -PUBLIC 56ddf 1c BackupRead -PUBLIC 57012 8 BackupWriteBuffer -PUBLIC 570a4 c BackupWriteEaData -PUBLIC 570ef c BackupWriteReparseData -PUBLIC 5714f c BackupWriteObjectId -PUBLIC 571c9 c BackupWriteSecurityData -PUBLIC 572ae c BackupWriteLinkData -PUBLIC 573fe 1c BackupWrite -PUBLIC 37bfc 0 NotifySoundSentry -PUBLIC 37a77 8 Beep -PUBLIC 575f7 4 BaseValidateNetbiosName -PUBLIC 57665 4 BaseValidateDnsNames -PUBLIC 576da 10 BasepGetMultiValueAddr -PUBLIC 5773b c BaseGetMultiValueIndex -PUBLIC 577c2 c BaseRemoveMultiValue -PUBLIC 5786b c BaseAddMultiValue -PUBLIC 202af 10 BasepGetNameFromReg -PUBLIC 578bb c BaseSetNameInReg -PUBLIC 5795d 10 BaseSetMultiNameInReg -PUBLIC 579f7 c BaseCreateMultiValue -PUBLIC 57aa8 c BaseAddMultiNameInReg -PUBLIC 57bae c BaseRemoveMultiNameFromReg -PUBLIC 57c97 4 BaseSetNetbiosName -PUBLIC 57cd4 4 BaseSetDnsName -PUBLIC 57da5 4 BaseSetDnsDomain -PUBLIC 57e41 4 BaseSetAltNetBiosName -PUBLIC 57e85 4 BaseSetAltDnsFQHostname -PUBLIC 57eb6 4 BaseIsAltDnsFQHostname -PUBLIC 57f59 4 BaseRemoveAltNetBiosName -PUBLIC 57f8a 8 BaseEnumAltDnsFQHostnames -PUBLIC 57fdd 8 BaseParseDnsName -PUBLIC 31893 10 GetNameFromValue -PUBLIC 316c7 8 GetComputerNameW -PUBLIC 5808d 4 SetComputerNameW -PUBLIC 201f1 c GetComputerNameExW -PUBLIC 581b3 8 SetComputerNameExW -PUBLIC 216a4 8 GetComputerNameA -PUBLIC 58234 4 SetComputerNameA -PUBLIC 582a7 c GetComputerNameExA -PUBLIC 5834c 8 SetComputerNameExA -PUBLIC 583a3 10 EnumerateLocalComputerNamesW -PUBLIC 58523 10 EnumerateLocalComputerNamesA -PUBLIC 2ceb2 c DnsHostnameToComputerNameW -PUBLIC 585cf c DnsHostnameToComputerNameA -PUBLIC 5866b 10 BasepGetComputerNameFromNtPath -PUBLIC 58bc3 8 BaseMultiByteToWideCharWithAlloc -PUBLIC 58c3e 4 BaseConvertCharFree -PUBLIC 58c69 4 BaseIsNetBiosNameInUse -PUBLIC 58e0a 8 AddLocalAlternateComputerNameW -PUBLIC 58f26 8 AddLocalAlternateComputerNameA -PUBLIC 58f6f 8 RemoveLocalAlternateComputerNameW -PUBLIC 59050 8 RemoveLocalAlternateComputerNameA -PUBLIC 59099 8 SetLocalPrimaryComputerNameW -PUBLIC 592af 8 SetLocalPrimaryComputerNameA -PUBLIC 592f8 8 LZCopy -PUBLIC 593ae 8 CopyLZFile -PUBLIC b852 10 GetFullPathNameW -PUBLIC b877 8 GetCurrentDirectoryW -PUBLIC 30b14 0 GetLogicalDrives -PUBLIC f272 4 CheckForSameCurdir -PUBLIC 138fc 10 GetFullPathNameA -PUBLIC 34ffe 8 GetCurrentDirectoryA -PUBLIC 360dd 4 SetCurrentDirectoryA -PUBLIC f2ee 4 SetCurrentDirectoryW -PUBLIC 176b 4 GetSystemTime -PUBLIC 17e5 4 GetSystemTimeAsFileTime -PUBLIC 593be 4 SetSystemTime -PUBLIC 929c 0 GetTickCount -PUBLIC e7ec 8 FileTimeToSystemTime -PUBLIC 10b1c 8 SystemTimeToFileTime -PUBLIC e866 8 FileTimeToLocalFileTime -PUBLIC 35524 8 LocalFileTimeToFileTime -PUBLIC 3065d c FileTimeToDosDateTime -PUBLIC 3214e c DosDateTimeToFileTime -PUBLIC 10ad9 8 CompareFileTime -PUBLIC 350bf 4 GetTimeZoneInformation -PUBLIC 5945e 4 SetTimeZoneInformation -PUBLIC 2d36f c GetSystemTimeAdjustment -PUBLIC 59584 8 SetSystemTimeAdjustment -PUBLIC 2e9c1 c SystemTimeToTzSpecificLocalTime -PUBLIC 595c1 c TzSpecificLocalTimeToSystemTime -PUBLIC 5983e 8 CalcClientTimeZoneIdAndBias -PUBLIC a7d4 4 GetLocalTime -PUBLIC 59a31 4 SetClientTimeZoneInformation -PUBLIC 13093 0 IsDebuggerPresent -PUBLIC 59b1e 8 CheckRemoteDebuggerPresent -PUBLIC 59b72 0 DebugBreak -PUBLIC 59b7c 0 CreateDBWinMutex -PUBLIC 59d78 4 OutputDebugStringA -PUBLIC 5a0bd 4 ProcessIdToHandle -PUBLIC 5a123 4 DebugActiveProcess -PUBLIC 5a176 4 DebugBreakProcess -PUBLIC 5a19d 4 DebugSetProcessKillOnExit -PUBLIC 5a1e8 c GetThreadSelectorEntry -PUBLIC 5a231 c SaveThreadHandle -PUBLIC 5a28f 8 SaveProcessHandle -PUBLIC 5a2eb 4 MarkThreadHandle -PUBLIC 5a31b 4 MarkProcessHandle -PUBLIC 5a351 8 RemoveHandles -PUBLIC 5a3c6 4 CloseAllProcessHandles -PUBLIC 5a42d 4 OutputDebugStringW -PUBLIC 5a480 8 WaitForDebugEvent -PUBLIC 5a565 c ContinueDebugEvent -PUBLIC 5a5a9 4 DebugActiveProcessStop -PUBLIC 36f5b 4 RemoveDirectoryW -PUBLIC 323d2 8 CreateDirectoryW -PUBLIC 5a5f2 c CreateDirectoryExW -PUBLIC 5b219 4 RemoveDirectoryA -PUBLIC 217ac 8 CreateDirectoryA -PUBLIC 5b23b c CreateDirectoryExA -PUBLIC 2af8f 4 InitAtomTable -PUBLIC 30cce 0 InternalInitAtomTable -PUBLIC 360a9 4 GlobalAddAtomA -PUBLIC 360c3 4 GlobalFindAtomA -PUBLIC 30bbb 4 GlobalDeleteAtom -PUBLIC 5b28b c GlobalGetAtomNameA -PUBLIC 1006c 4 GlobalAddAtomW -PUBLIC 34e97 4 GlobalFindAtomW -PUBLIC 2c3be c GlobalGetAtomNameW -PUBLIC 354ed 4 AddAtomA -PUBLIC 30cfe 4 FindAtomA -PUBLIC 32695 4 DeleteAtom -PUBLIC 5b2ab c GetAtomNameA -PUBLIC 2f827 4 FindAtomW -PUBLIC f726 c BaseDllGetApplicationName -PUBLIC f763 c BaseDllGetVariableName -PUBLIC 1ee95 10 BaseDllGetVariableValue -PUBLIC f88c 14 BaseDllAppendBufferToResultBuffer -PUBLIC f6da 8 BaseDllIniFileNameLength -PUBLIC f7a0 c BaseDllFindIniFileNameMapping -PUBLIC 1c858 0 BaseDllFlushRegistryCache -PUBLIC 1c8a6 8 BaseDllFindVarNameMapping -PUBLIC 5b2cb 8 BaseDllCheckKeyNotEmpty -PUBLIC 1e361 4 BaseDllOpenIniFileOnDisk -PUBLIC 1e6e1 4 BaseDllCloseIniFileOnDisk -PUBLIC 35889 4 BaseDllCalculateDeleteLength -PUBLIC 1e891 8 BaseDllAdvanceTextPointer -PUBLIC 1f18a 14 BaseDllModifyMappedFile -PUBLIC 5b355 1c BaseDllCheckInitFromIniFile -PUBLIC 3331f 0 OpenProfileUserMapping -PUBLIC f460 28 BaseDllCaptureIniFileParameters -PUBLIC f928 4 BaseDllAppendNullToResultBuffer -PUBLIC f851 10 BaseDllAppendStringToResultBuffer -PUBLIC 1c8db 14 BaseDllOpenMappingTarget -PUBLIC 5b435 4 BaseDllReadApplicationNames -PUBLIC 1b42d 8 BaseDllReadVariableNames -PUBLIC 1cac2 10 BaseDllReadVariableValue -PUBLIC 5b592 8 BaseDllReadApplicationVariables -PUBLIC 2bb93 10 BaseDllWriteVariableValue -PUBLIC 32dd3 4 BaseDllReadSectionNames -PUBLIC 1e793 4 BaseDllFindSection -PUBLIC 1e9c5 4 BaseDllFindKeyword -PUBLIC 5b71c 10 QueryWin31IniFilesMappedToRegistry -PUBLIC 2dc81 8 BaseDllDeleteApplicationVariables -PUBLIC 2dc43 8 BaseDllWriteApplicationVariables -PUBLIC 358ed 4 BaseDllReadKeywordNames -PUBLIC 1ea7d 4 BaseDllReadKeywordValue -PUBLIC 1ecd2 4 BaseDllReadSection -PUBLIC 5b828 4 BaseDllWriteSection -PUBLIC 1f021 8 BaseDllWriteKeywordValue -PUBLIC 1c7f4 4 BaseDllReadWriteIniFileViaMapping -PUBLIC 1e291 4 BaseDllReadWriteIniFileOnDisk -PUBLIC f331 20 BaseDllReadWriteIniFile -PUBLIC 32b56 18 GetPrivateProfileStringA -PUBLIC 35d54 10 WritePrivateProfileStringA -PUBLIC 35f21 10 GetPrivateProfileSectionA -PUBLIC 5ba7c c WritePrivateProfileSectionA -PUBLIC f95d 18 GetPrivateProfileStringW -PUBLIC 1ee4c 10 WritePrivateProfileStringW -PUBLIC 1edbd 10 GetPrivateProfileSectionW -PUBLIC 5bac3 c WritePrivateProfileSectionW -PUBLIC 32da7 c GetPrivateProfileSectionNamesA -PUBLIC 5bb0a c GetPrivateProfileSectionNamesW -PUBLIC 5bb2b 14 GetPrivateProfileStructA -PUBLIC 5bc95 14 GetPrivateProfileStructW -PUBLIC 5be23 14 WritePrivateProfileStructA -PUBLIC 5bf65 14 WritePrivateProfileStructW -PUBLIC 21495 14 GetProfileStringA -PUBLIC 5c0b9 c WriteProfileStringA -PUBLIC 5c0d7 c GetProfileSectionA -PUBLIC 5c0f5 8 WriteProfileSectionA -PUBLIC 213f8 14 GetProfileStringW -PUBLIC 332b1 c WriteProfileStringW -PUBLIC 5c110 c GetProfileSectionW -PUBLIC 5c12e 8 WriteProfileSectionW -PUBLIC 36434 10 GetPrivateProfileIntA -PUBLIC 32730 10 GetPrivateProfileIntW -PUBLIC 364a9 c GetProfileIntA -PUBLIC 2f89a c GetProfileIntW -PUBLIC 21f1e c DefineDosDeviceW -PUBLIC 5c149 8 IsGlobalDeviceMap -PUBLIC 5c269 10 FindSymbolicLinkEntry -PUBLIC 21d8d c QueryDosDeviceW -PUBLIC 5c2c5 c DefineDosDeviceA -PUBLIC 5c36c c QueryDosDeviceA -PUBLIC 31385 10 CreateIoCompletionPort -PUBLIC 126f2 10 PostQueuedCompletionStatus -PUBLIC a71d 14 GetQueuedCompletionStatus -PUBLIC 315c4 10 GetOverlappedResult -PUBLIC ac4d 0 GetErrorMode -PUBLIC ac0f 4 SetErrorMode -PUBLIC ef3a 8 FindNextFileW -PUBLIC edd7 4 FindClose -PUBLIC 5c46c 8 BaseFindFirstDevice -PUBLIC 34bef c FindFirstChangeNotificationW -PUBLIC 32113 4 FindNextChangeNotification -PUBLIC 3162f 20 ReadDirectoryChangesW -PUBLIC ee81 4 BasepInitializeFindFileHandle -PUBLIC 34eb1 8 FindNextFileA -PUBLIC ea7d 18 FindFirstFileExW -PUBLIC 5c4ab c FindFirstChangeNotificationA -PUBLIC 137d9 8 FindFirstFileA -PUBLIC eee1 8 FindFirstFileW -PUBLIC 5c512 18 FindFirstFileExA -PUBLIC 180e 14 ReadFile -PUBLIC 10d87 14 WriteFile -PUBLIC 32044 4 SetEndOfFile -PUBLIC 10b8e 10 SetFilePointer -PUBLIC 21057 14 SetFilePointerEx -PUBLIC 10c6d 8 GetFileInformationByHandle -PUBLIC 31c45 10 GetFileTime -PUBLIC 31cb8 10 SetFileTime -PUBLIC 12641 4 FlushFileBuffers -PUBLIC 32361 14 LockFile -PUBLIC 2f569 18 LockFileEx -PUBLIC 322fb 14 UnlockFileEx -PUBLIC 10a09 8 GetFileSizeEx -PUBLIC 5c64e c BasepIoCompletion -PUBLIC 2bd84 c BasepIoCompletionSimple -PUBLIC 2bcfb 14 ReadFileEx -PUBLIC 5c701 14 WriteFileEx -PUBLIC 300da 4 CancelIo -PUBLIC 2de51 14 ReadFileScatter -PUBLIC 2dda5 14 WriteFileGather -PUBLIC 5c7a1 c SetFileValidData -PUBLIC 5c7f7 8 SetFileShortNameW -PUBLIC 5c8c4 8 SetFileShortNameA -PUBLIC 10e51 4 GetFileType -PUBLIC 322bc 14 UnlockFile -PUBLIC 10a77 8 GetFileSize -PUBLIC bada c OpenFileMappingW -PUBLIC b896 18 MapViewOfFileEx -PUBLIC 35971 8 FlushViewOfFile -PUBLIC b974 4 UnmapViewOfFile -PUBLIC 938e 18 CreateFileMappingW -PUBLIC bb76 c OpenFileMappingA -PUBLIC b905 14 MapViewOfFile -PUBLIC 945c 18 CreateFileMappingA -PUBLIC 110f5 c GetFileAttributesExW -PUBLIC 31f31 4 DeleteFileW -PUBLIC 5c8e9 34 BasepMoveFileCopyProgress -PUBLIC 5c94f 10 BasepNotifyTrackingService -PUBLIC 5cbc1 10 BasepMoveFileDelayed -PUBLIC 5cf6b 20 BasepOpenFileForMove -PUBLIC 5d0e9 c PrivMoveFileIdentityW -PUBLIC 5d371 8 GetCompressedFileSizeW -PUBLIC 314d5 8 SetFileAttributesW -PUBLIC b74c 4 GetFileAttributesW -PUBLIC 137b1 c GetFileAttributesExA -PUBLIC 31eab 4 DeleteFileA -PUBLIC 1f72e 14 MoveFileWithProgressW -PUBLIC 5d499 8 GetCompressedFileSizeA -PUBLIC 12782 8 SetFileAttributesA -PUBLIC 1153c 4 GetFileAttributesA -PUBLIC 35eae 14 MoveFileWithProgressA -PUBLIC 21261 8 MoveFileW -PUBLIC 3565b c MoveFileExW -PUBLIC 35e8f 8 MoveFileA -PUBLIC 5d4c3 c MoveFileExA -PUBLIC 21950 4 BasepOfShareToWin32Share -PUBLIC 5d4e3 14 LoadDuplicateEncryptionInfoFile -PUBLIC 10978 8 BaseIsThisAConsoleName -PUBLIC 5d539 20 CopyNameGraftNow -PUBLIC 284bd 14 BasepProcessNameGrafting -PUBLIC 5d9a1 8 BasepChecksum -PUBLIC 2879d 8 BasepRemoteFile -PUBLIC 5d9e0 8 BasepCreateDispositionToWin32 -PUBLIC 5da30 0 CheckAllowDecryptedRemoteDestinationPolicy -PUBLIC 10760 1c CreateFileW -PUBLIC 3719a 20 BasepCopyFileCallback -PUBLIC 5dadd 8 BaseMarkFileForDelete -PUBLIC 5db55 8 CopyReparsePoint -PUBLIC 5dc16 24 BasepOpenRestartableFile -PUBLIC 5de71 1c BasepCopyCompression -PUBLIC 285c6 38 BasepCopyEncryption -PUBLIC 1a24 1c CreateFileA -PUBLIC 21982 c OpenFile -PUBLIC 5e021 28 BasepCopySecurityInformation -PUBLIC 27bdb 38 BaseCopyStream -PUBLIC 36c3c 18 ReplaceFileW -PUBLIC 27613 24 BasepCopyFileExW -PUBLIC 27b32 18 CopyFileExW -PUBLIC 2005f 18 PrivCopyFileExW -PUBLIC 5e307 18 ReplaceFileA -PUBLIC 286ee c CopyFileA -PUBLIC 2f873 c CopyFileW -PUBLIC 5e3c4 18 CopyFileExA -PUBLIC 5e41d 10 GetFirmwareEnvironmentVariableW -PUBLIC 5e4ac 10 SetFirmwareEnvironmentVariableW -PUBLIC 5e534 10 GetFirmwareEnvironmentVariableA -PUBLIC 5e5c7 10 SetFirmwareEnvironmentVariableA -PUBLIC 5e65a 4 RegisterWowBaseHandlers -PUBLIC fd2d 8 GlobalAlloc -PUBLIC 123b9 c GlobalReAlloc -PUBLIC ff19 4 GlobalLock -PUBLIC 34cb9 4 GlobalHandle -PUBLIC fe82 4 GlobalUnlock -PUBLIC 34da1 4 GlobalSize -PUBLIC 36772 4 GlobalFlags -PUBLIC fc2f 4 GlobalFree -PUBLIC 5e670 4 LocalCompact -PUBLIC 5e686 4 GlobalFix -PUBLIC 5e6a0 4 GlobalUnfix -PUBLIC 5e6ba 4 GlobalWire -PUBLIC 5e6ca 4 GlobalUnWire -PUBLIC 310f2 4 GlobalMemoryStatus -PUBLIC 9a72 14 VirtualAllocEx -PUBLIC 9b02 10 VirtualFreeEx -PUBLIC 1a5d 14 VirtualProtectEx -PUBLIC b9a0 10 VirtualQueryEx -PUBLIC 2b13f 8 VirtualLock -PUBLIC 5e6da 8 VirtualUnlock -PUBLIC 355bc c FlushInstructionCache -PUBLIC 5e712 c AllocateUserPhysicalPages -PUBLIC 5e740 c FreeUserPhysicalPages -PUBLIC 5e76e c MapUserPhysicalPages -PUBLIC 5e79c c MapUserPhysicalPagesScatter -PUBLIC 1f992 4 GlobalMemoryStatusEx -PUBLIC 5e7ca 18 GetWriteWatch -PUBLIC 5e803 8 ResetWriteWatch -PUBLIC 9a51 10 VirtualAlloc -PUBLIC 9ae4 c VirtualFree -PUBLIC 1ad0 10 VirtualProtect -PUBLIC b9d1 c VirtualQuery -PUBLIC 2e18c c SetHandleInformation -PUBLIC 2bdb5 8 GetHandleInformation -PUBLIC 1d07e 0 SetFileApisToOEM -PUBLIC 365f6 0 SetFileApisToANSI -PUBLIC 3594f 0 AreFileApisANSI -PUBLIC 17443 0 BaseProcessInitPostImport -PUBLIC 934b 0 BaseGetNamedObjectDirectory -PUBLIC b5c3 c _BaseDllInitialize -PUBLIC 5e830 8 _lopen -PUBLIC 365a5 8 _lcreat -PUBLIC 353ce c _lread -PUBLIC 38ae7 c _lwrite -PUBLIC 34e64 4 _lclose -PUBLIC 35406 c _llseek -PUBLIC 30d74 8 lstrcmpA -PUBLIC baa1 8 lstrcmpiA -PUBLIC be01 8 lstrcpyA -PUBLIC 10111 c lstrcpynA -PUBLIC 34d41 8 lstrcatA -PUBLIC bdb6 4 lstrlenA -PUBLIC b9ef c lstrcpynW -PUBLIC 10f32 8 lstrcatW -PUBLIC 9a09 4 lstrlenW -PUBLIC 325bc 4 LocalSize -PUBLIC 5e882 8 LocalShrink -PUBLIC 12bb6 c HeapCreate -PUBLIC 10ef8 4 HeapDestroy -PUBLIC 5e898 10 HeapExtend -PUBLIC 5e8c9 10 HeapCreateTagsW -PUBLIC 5e8da 14 HeapQueryTagW -PUBLIC 5e8eb c HeapSummary -PUBLIC 5e947 14 HeapUsage -PUBLIC 5e9bb c HeapValidate -PUBLIC abc1 0 GetProcessHeap -PUBLIC 5e9db 8 GetProcessHeaps -PUBLIC 3611e 8 HeapCompact -PUBLIC 5e9ec 4 HeapLock -PUBLIC 5ea06 4 HeapUnlock -PUBLIC 5ea20 8 HeapWalk -PUBLIC 39469 10 HeapSetInformation -PUBLIC 5eb25 14 HeapQueryInformation -PUBLIC 5eb58 14 GetMailslotInfo -PUBLIC 2cdd8 8 SetMailslotInfo -PUBLIC 2ccdc 10 CreateMailslotW -PUBLIC 2cc8b 10 CreateMailslotA -PUBLIC 34932 c CreateVirtualBuffer -PUBLIC 5ebf4 8 ExtendVirtualBuffer -PUBLIC 5ec4e 4 TrimVirtualBuffer -PUBLIC 34b69 4 FreeVirtualBuffer -PUBLIC 5ec71 c VirtualBufferExceptionHandler -PUBLIC 349d8 20 BaseDllFormatMessage -PUBLIC 2f7a0 1c FormatMessageA -PUBLIC 34b8f 1c FormatMessageW -PUBLIC abde 4 FreeLibrary -PUBLIC c170 8 FreeLibraryAndExitThread -PUBLIC 11296 4 DisableThreadLibraryCalls -PUBLIC 5ecb0 4 SetDllDirectoryW -PUBLIC 5ed46 4 SetDllDirectoryA -PUBLIC 5edd7 8 GetDllDirectoryW -PUBLIC e477 4 GetModuleHandleForUnicodeString -PUBLIC 1fcff c BasepGetModuleHandleExParameterValidation -PUBLIC e4b9 10 BasepGetModuleHandleExW -PUBLIC 111da 0 GetVersion -PUBLIC ae65 4 GetVersionExW -PUBLIC 1fb26 10 VerifyVersionInfoW -PUBLIC 5ee46 10 VerifyVersionInfoA -PUBLIC 9f81 4 BaseDllFreeResourceId -PUBLIC 5eee3 c ReturnMem16Data -PUBLIC 5eef0 1c UTRegister -PUBLIC 14c3c c BasepLoadLibraryAsDataFile -PUBLIC 1af1 c LoadLibraryExW -PUBLIC 5ef47 8 GetDllDirectoryA -PUBLIC b3d5 c GetModuleFileNameW -PUBLIC b4cf c GetModuleFileNameA -PUBLIC e43d 4 GetModuleHandleW -PUBLIC 5efe6 c GetModuleHandleExA -PUBLIC 1fcc1 c GetModuleHandleExW -PUBLIC ada0 8 GetProcAddress -PUBLIC 12ade 4 GetVersionExA -PUBLIC be89 c FindResourceA -PUBLIC 35f78 10 FindResourceExA -PUBLIC 9fb5 8 LoadResource -PUBLIC bc69 8 SizeofResource -PUBLIC 5f03c c EnumResourceTypesA -PUBLIC 5f229 10 EnumResourceNamesA -PUBLIC 2e000 14 EnumResourceLanguagesA -PUBLIC ac88 10 FindResourceExW -PUBLIC 5f449 c EnumResourceTypesW -PUBLIC 5f631 14 EnumResourceLanguagesW -PUBLIC ae4b 4 LoadLibraryW -PUBLIC 1d4f c LoadLibraryExA -PUBLIC b6a1 4 GetModuleHandleA -PUBLIC 1d77 4 LoadLibraryA -PUBLIC 3145b 8 ConnectNamedPipe -PUBLIC 1269f 4 DisconnectNamedPipe -PUBLIC 5f781 c NpGetUserNamep -PUBLIC 313ec 10 SetNamedPipeHandleState -PUBLIC 5f88a 14 GetNamedPipeInfo -PUBLIC 5f90f 18 PeekNamedPipe -PUBLIC 312e5 1c TransactNamedPipe -PUBLIC 2c664 8 WaitNamedPipeW -PUBLIC 2f0d4 20 CreateNamedPipeW -PUBLIC 5fa85 1c GetNamedPipeHandleStateW -PUBLIC 5fb7f 1c CallNamedPipeW -PUBLIC 5fc39 8 WaitNamedPipeA -PUBLIC 5fc74 20 CreateNamedPipeA -PUBLIC 5fceb 1c GetNamedPipeHandleStateA -PUBLIC 5fdce 1c CallNamedPipeA -PUBLIC 5fe41 4 GetNumaHighestNodeNumber -PUBLIC 5fe8c 8 GetNumaProcessorNode -PUBLIC 5ff19 8 GetNumaNodeProcessorMask -PUBLIC 5ff7e c GetNumaProcessorMap -PUBLIC 5ffc4 c GetNumaAvailableMemory -PUBLIC 6000a 8 GetNumaAvailableMemoryNode -PUBLIC 600d2 10 NumaVirtualQueryNode -PUBLIC f182 8 IsThisARootDirectory -PUBLIC 31db9 8 GetSystemDirectoryW -PUBLIC ad29 8 GetSystemWindowsDirectoryW -PUBLIC ad7b 8 GetWindowsDirectoryW -PUBLIC b2d0 4 GetDriveTypeW -PUBLIC 112d5 c BasepGetTempPathW -PUBLIC 359b7 10 GetTempFileNameW -PUBLIC 301af 14 GetDiskFreeSpaceW -PUBLIC 12803 10 GetDiskFreeSpaceExW -PUBLIC f9e5 20 GetVolumeInformationW -PUBLIC 2c2d3 8 GetLogicalDriveStringsA -PUBLIC 603cf 8 GetLogicalDriveStringsW -PUBLIC 60499 8 SetVolumeLabelW -PUBLIC 60811 14 CheckNameLegalDOS8Dot3W -PUBLIC 14eea 8 GetSystemDirectoryA -PUBLIC 212f1 8 GetSystemWindowsDirectoryA -PUBLIC 21363 8 GetWindowsDirectoryA -PUBLIC 214e3 4 GetDriveTypeA -PUBLIC 217ea 18 SearchPathA -PUBLIC 30789 8 GetTempPathW -PUBLIC 608ff 10 GetTempFileNameA -PUBLIC 302ed 14 GetDiskFreeSpaceA -PUBLIC 3039b 10 GetDiskFreeSpaceExA -PUBLIC 21ba5 20 GetVolumeInformationA -PUBLIC 609ed 8 SetVolumeLabelA -PUBLIC 60a51 14 CheckNameLegalDOS8Dot3A -PUBLIC 35dca 8 GetTempPathA -PUBLIC a427 4 QueryPerformanceCounter -PUBLIC 2fa46 4 QueryPerformanceFrequency -PUBLIC 1e0c7 10 CreatePipe -PUBLIC 35340 4 GetSystemPowerStatus -PUBLIC 60aab 8 SetSystemPowerState -PUBLIC 392b5 4 SetThreadExecutionState -PUBLIC 60af4 4 RequestWakeupLatency -PUBLIC 60b1c 8 GetDevicePowerState -PUBLIC 60b60 0 IsSystemResumeAutomatic -PUBLIC 60b6f 4 RequestDeviceWakeup -PUBLIC 60b97 4 CancelDeviceWakeupRequest -PUBLIC 60bbf 8 SetMessageWaitingIndicator -PUBLIC 2f3a4 4 BasepIsSetupInvokedByWinLogon -PUBLIC 1a1cf 8 BasepIsImageVersionOk -PUBLIC 1500c 0 IsShimInfrastructureDisabled -PUBLIC 1930f 1c BasepCheckBadapp -PUBLIC 16f8e 4 RegisterWaitForInputIdle -PUBLIC 2dfa0 c StuffStdHandle -PUBLIC 60bd3 c BasepReplaceProcessThreadTokens -PUBLIC 309e1 c OpenProcess -PUBLIC 1cd34 4 _ExitProcess -PUBLIC 1cdda 4 ExitProcess -PUBLIC 1e16 8 TerminateProcess -PUBLIC 1ae17 8 GetExitCodeProcess -PUBLIC 1e50 4 GetStartupInfoW -PUBLIC 1eee 4 GetStartupInfoA -PUBLIC 12f1d 0 GetCommandLineA -PUBLIC 16f83 0 GetCommandLineW -PUBLIC 1df77 4 FreeEnvironmentStringsA -PUBLIC 12f08 0 GetEnvironmentStringsW -PUBLIC 1cf5b 0 GetEnvironmentStrings -PUBLIC 14af2 c GetEnvironmentVariableA -PUBLIC 33478 8 SetEnvironmentVariableA -PUBLIC f0f4 c GetEnvironmentVariableW -PUBLIC 101be 8 SetEnvironmentVariableW -PUBLIC 329d9 c ExpandEnvironmentStringsA -PUBLIC 305f6 c ExpandEnvironmentStringsW -PUBLIC 9920 0 GetCurrentProcessId -PUBLIC 60c75 4 GetProcessId -PUBLIC 21cc 14 ReadProcessMemory -PUBLIC 220f 14 WriteProcessMemory -PUBLIC 60caa 8 FatalAppExitW -PUBLIC 60cf8 8 FatalAppExitA -PUBLIC 60d46 4 FatalExit -PUBLIC ae2a 4 IsProcessorFeaturePresent -PUBLIC 60d58 10 BuildSubSysCommandLine -PUBLIC 60e13 4 GetPriorityClass -PUBLIC 9e01 8 IsBadReadPtr -PUBLIC 3593f 8 IsBadHugeReadPtr -PUBLIC 9e79 8 IsBadWritePtr -PUBLIC bf9d 8 IsBadHugeWritePtr -PUBLIC bccf 4 IsBadCodePtr -PUBLIC 32259 8 IsBadStringPtrA -PUBLIC a5dc 8 IsBadStringPtrW -PUBLIC 2c8ed 8 SetProcessShutdownParameters -PUBLIC 60e79 8 GetProcessShutdownParameters -PUBLIC 60ee8 4 BasepIsRealtimeAllowed -PUBLIC 60f22 c GetSystemTimes -PUBLIC 352d9 14 GetProcessTimes -PUBLIC 21765 c GetProcessAffinityMask -PUBLIC 61068 c GetProcessWorkingSetSize -PUBLIC 303d0 c SetProcessWorkingSetSize -PUBLIC 12c23 4 GetProcessVersion -PUBLIC 610b0 8 SetProcessAffinityMask -PUBLIC 610e0 8 SetProcessPriorityBoost -PUBLIC 6111b 8 GetProcessPriorityBoost -PUBLIC 61155 8 GetProcessIoCounters -PUBLIC 61186 8 GetProcessHandleCount -PUBLIC 611c0 8 GetSystemRegistryQuota -PUBLIC 6120a c BasepSaveAppCertRegistryValue -PUBLIC 15199 8 IsWow64Process -PUBLIC 194dd 4 BasepIsProcessAllowed -PUBLIC 19805 18 BasepCheckWinSaferRestrictions -PUBLIC 19513 30 CreateProcessInternalW -PUBLIC 2332 28 CreateProcessW -PUBLIC 12cb0 c GetSystemInfoInternal -PUBLIC 12d56 4 GetSystemInfo -PUBLIC 37945 4 GetNativeSystemInfo -PUBLIC 2c338 8 SetPriorityClass -PUBLIC 61351 18 BasepConfigureAppCertDlls -PUBLIC 1ddd6 30 CreateProcessInternalA -PUBLIC 2367 28 CreateProcessA -PUBLIC 6136d 8 WinExec -PUBLIC 6147e 8 LoadModule -PUBLIC 3965a 4 CreateMemoryResourceNotification -PUBLIC 395d8 8 QueryMemoryResourceNotification -PUBLIC 2c1e7 c DosPathToSessionPathW -PUBLIC 12f89 8 ProcessIdToSessionId -PUBLIC 132ee 0 WTSGetActiveConsoleSessionId -PUBLIC 61799 c DosPathToSessionPathA -PUBLIC 92ea c BaseFormatObjectAttributes -PUBLIC 2470 8 BaseFormatTimeOut -PUBLIC 16fb4 4 BaseProcessStart -PUBLIC 61901 c BaseFreeThreadStack -PUBLIC e0df 4 BasepEndOfDirName -PUBLIC 176db c BasepLocateExeLdrEntry -PUBLIC 61933 4 BasepUnicodeStringToOemSize -PUBLIC 6195c 4 BasepUnicodeStringToAnsiSize -PUBLIC 30445 8 BasepAcquirePrivilegeEx -PUBLIC 3053e 4 BasepReleasePrivilege -PUBLIC e275 c BasepComputeProcessPath -PUBLIC df9e 8 BaseComputeProcessDllPath -PUBLIC 31d8e 0 BaseComputeProcessSearchPath -PUBLIC e074 4 Basep8BitStringToStaticUnicodeString -PUBLIC 114f8 8 Basep8BitStringToDynamicUnicodeString -PUBLIC 1a2ce 34 BasePushProcessParameters -PUBLIC 9ef1 4 InitializeCriticalSection -PUBLIC b829 8 InitializeCriticalSectionAndSpinCount -PUBLIC 13140 c OpenEventW -PUBLIC 2c05e 4 PulseEvent -PUBLIC 10086 10 CreateSemaphoreW -PUBLIC 2e30f c OpenSemaphoreW -PUBLIC bfad c ReleaseSemaphore -PUBLIC e8b7 c CreateMutexW -PUBLIC e995 c OpenMutexW -PUBLIC 24a7 4 ReleaseMutex -PUBLIC 2540 c WaitForSingleObjectEx -PUBLIC 36696 10 SignalObjectAndWait -PUBLIC 952a 14 WaitForMultipleObjectsEx -PUBLIC 239c 8 SleepEx -PUBLIC 2fb52 c CreateWaitableTimerW -PUBLIC 61985 c OpenWaitableTimerW -PUBLIC 95f9 18 SetWaitableTimer -PUBLIC 2cc09 4 CancelWaitableTimer -PUBLIC a6a9 10 CreateEventW -PUBLIC 1320c c OpenEventA -PUBLIC 12e1d 10 CreateSemaphoreA -PUBLIC 2ca47 c OpenSemaphoreA -PUBLIC e93f c CreateMutexA -PUBLIC ea1b c OpenMutexA -PUBLIC a05d 10 WaitForMultipleObjects -PUBLIC 2442 4 Sleep -PUBLIC 61a81 c CreateWaitableTimerA -PUBLIC 61af0 c OpenWaitableTimerA -PUBLIC 308ad 10 CreateEventA -PUBLIC 33609 0 StringCopyExWorkerW(unsigned short *,unsigned int,unsigned int,unsigned short const *,unsigned short * *,unsigned int *,unsigned long) -PUBLIC 61b64 0 StringLengthWorkerW(unsigned short const *,unsigned int,unsigned int *) -PUBLIC 1746c 0 IsTerminalServerCompatible -PUBLIC 17499 0 IsTSAppCompatEnabled -PUBLIC f1fa 0 IsSystemLUID -PUBLIC 17459 0 InitializeTermsrvFpns -PUBLIC 1efce 0 TermsrvAppInstallMode -PUBLIC 61ba2 4 SetTermsrvAppInstallMode -PUBLIC 61d3f c TermsrvGetSyncTime -PUBLIC 61ffd c TermsrvPutSyncTime -PUBLIC 6240a 8 TermsrvCheckIniSync -PUBLIC 62473 4 TermsrvDoesFileExist -PUBLIC 624ba c TermsrvIniSyncLoop -PUBLIC 17f41 8 GetPerUserWindowsDirectory -PUBLIC 6277d 18 StringCbCopyExW -PUBLIC 627db 1c StringCatExWorkerW -PUBLIC 6297f 18 StringCbCatExW -PUBLIC 1ebb1 4 TermsrvSyncUserIniFile -PUBLIC 629dd 10 StringVPrintfWorkerW -PUBLIC 12980 c BaseCreateThreadPoolThread -PUBLIC 2fc00 c OpenThread -PUBLIC c108 8 SetThreadPriority -PUBLIC a793 4 GetThreadPriority -PUBLIC 62a30 8 SetThreadPriorityBoost -PUBLIC 62a6b 8 GetThreadPriorityBoost -PUBLIC c058 4 ExitThread -PUBLIC 1ce03 8 TerminateThread -PUBLIC 21435 8 GetExitCodeThread -PUBLIC 9728 0 GetCurrentThreadId -PUBLIC 3970d 8 GetThreadContext -PUBLIC 62aa5 8 SetThreadContext -PUBLIC 39732 4 SuspendThread -PUBLIC 328f7 4 ResumeThread -PUBLIC 12a09 10 RaiseException -PUBLIC 62ad0 8 FillUEFInfo -PUBLIC 4479d 4 SetUnhandledExceptionFilter -PUBLIC 62b4f 4 BasepCheckForReadOnlyResource -PUBLIC 12d9f 0 TlsAlloc -PUBLIC 9740 4 TlsGetValue -PUBLIC 9bc5 8 TlsSetValue -PUBLIC 136d7 4 TlsFree -PUBLIC 62c9c 14 GetThreadTimes -PUBLIC 62d09 8 GetThreadIOPendingFlag -PUBLIC 2fa7a 8 SetThreadAffinityMask -PUBLIC 2c0e6 c BaseDispatchAPC -PUBLIC 2c082 c QueueUserAPC -PUBLIC 62d48 8 SetThreadIdealProcessor -PUBLIC 2ffcf 14 CreateFiberEx -PUBLIC 2fe84 4 DeleteFiber -PUBLIC 2ff16 4 ConvertThreadToFiber -PUBLIC 2fed7 0 ConvertFiberToThread -PUBLIC 32992 0 SwitchToThread -PUBLIC 211cd 18 RegisterWaitForSingleObject -PUBLIC 2b086 14 RegisterWaitForSingleObjectEx -PUBLIC 2bff8 4 UnregisterWait -PUBLIC 30062 8 UnregisterWaitEx -PUBLIC 30a62 c QueueUserWorkItem -PUBLIC 2c02c c BindIoCompletionCallback -PUBLIC 2cba2 0 BasepCreateDefaultTimerQueue -PUBLIC 2bfd6 0 CreateTimerQueue -PUBLIC 2117d 1c CreateTimerQueueTimer -PUBLIC 12723 10 ChangeTimerQueueTimer -PUBLIC 21130 c DeleteTimerQueueTimer -PUBLIC 62d7c 8 DeleteTimerQueueEx -PUBLIC 2b26e 18 SetTimerQueueTimer -PUBLIC 62dc3 4 DeleteTimerQueue -PUBLIC 62df0 8 CancelTimerQueueTimer -PUBLIC 62e34 0 StringCchPrintfW -PUBLIC 10637 18 CreateThread -PUBLIC c1e0 4 BaseExitThreadPoolThread -PUBLIC 62e62 4 UnhandledExceptionFilter -PUBLIC 2ffaf c CreateFiber -PUBLIC 63999 8 Heap32ListFirst -PUBLIC 63a47 8 Heap32ListNext -PUBLIC 63ade c Heap32First -PUBLIC 63bf8 4 Heap32Next -PUBLIC 63d24 14 Toolhelp32ReadProcessMemory -PUBLIC 63d64 8 Process32FirstW -PUBLIC 63e1d 8 Process32First -PUBLIC 63eef 8 Process32NextW -PUBLIC 63f90 8 Process32Next -PUBLIC 64062 8 Thread32First -PUBLIC 64116 8 Thread32Next -PUBLIC 641af 8 Module32FirstW -PUBLIC 64268 8 Module32First -PUBLIC 6434c 8 Module32NextW -PUBLIC 643ed 8 Module32Next -PUBLIC 644c8 14 ThpCreateRawSnap -PUBLIC 64679 18 ThpAllocateSnapshotSection -PUBLIC 6481c c ThpCopyAnsiToUnicode -PUBLIC 64858 18 ThpProcessToSnap -PUBLIC 64b47 8 CreateToolhelp32Snapshot -PUBLIC 64bcf 8 GetExpandedNameA -PUBLIC 64c7c 8 GetExpandedNameW -PUBLIC 64d93 4 ConvertWin32FHToDos -PUBLIC 64e03 4 ConvertDosFHToWin32 -PUBLIC 64e2a 4 LZInit -PUBLIC 64f85 14 LZCreateFileW -PUBLIC 65053 c LZOpenFileA -PUBLIC 65114 c LZOpenFileW -PUBLIC 651ab c LZSeek -PUBLIC 65236 c LZRead -PUBLIC 65444 4 LZCloseFile -PUBLIC 654bb 4 LZClose -PUBLIC 6557c c ClearCommError -PUBLIC 656c7 c SetupComm -PUBLIC 6578e 8 EscapeCommFunction -PUBLIC 6588a 8 GetCommMask -PUBLIC 65913 8 GetCommModemStatus -PUBLIC 6599c 8 GetCommProperties -PUBLIC 65a54 8 GetCommState -PUBLIC 22128 8 GetCommTimeouts -PUBLIC 65d02 8 PurgeComm -PUBLIC 65d8c 4 SetCommBreak -PUBLIC 65da4 8 SetCommMask -PUBLIC 65e43 8 SetCommState -PUBLIC 6614b 8 SetCommTimeouts -PUBLIC 661f6 8 TransmitCommChar -PUBLIC 66280 c WaitCommEvent -PUBLIC 663c8 8 GetFriendlyUi -PUBLIC 6677d c CommConfigDialogW -PUBLIC 66871 c CommConfigDialogA -PUBLIC 66949 c GetDefaultCommConfigW -PUBLIC 66a41 c GetDefaultCommConfigA -PUBLIC 66b19 c SetDefaultCommConfigW -PUBLIC 66c11 c SetDefaultCommConfigA -PUBLIC 66cf1 4 ClearCommBreak -PUBLIC 66d09 c GetCommConfig -PUBLIC 66eab c SetCommConfig -PUBLIC 66f43 4 GetNextVDMCommand -PUBLIC 67695 8 ExitVDM -PUBLIC 67714 8 SetVDMCurrentDirectories -PUBLIC 67849 8 GetVDMCurrentDirectories -PUBLIC 2f609 4 CmdBatNotification -PUBLIC 679a9 4 RegisterWowExec -PUBLIC 67a01 c GetVDMConfigValue -PUBLIC 67a4a 10 BaseUpdateVDMEntry -PUBLIC 28b87 8 BaseIsDosApplication -PUBLIC 1ae5e 8 BaseCheckForVDM -PUBLIC 67b2e 8 BaseDestroyVDMEnvironment -PUBLIC 67b70 8 BaseGetEnvNameType_U -PUBLIC 1143f 4 SkipPathTypeIndicator_U -PUBLIC 1f5a6 8 IsShortName_U -PUBLIC 132f9 8 IsLongName_U -PUBLIC 67bcc 8 GetBinaryTypeW -PUBLIC 67e19 4 VDMOperationStarted -PUBLIC 67e35 14 BaseGetVDMKeyword -PUBLIC 1146a 10 FindLFNorSFN_U -PUBLIC 6802b 8 GetBinaryTypeA -PUBLIC 1f26e c GetShortPathNameW -PUBLIC 680be c BaseCreateVDMEnvironment -PUBLIC 13353 c GetLongPathNameW -PUBLIC 28c38 24 BaseCheckVDMp -PUBLIC 68509 24 BaseCheckVDM -PUBLIC 35bb0 c GetShortPathNameA -PUBLIC 68586 c GetLongPathNameA -PUBLIC 687a1 14 BaseGetVdmConfigInfo -PUBLIC 2cf9b c FindNextVolumeW -PUBLIC 2cf60 4 FindVolumeClose -PUBLIC 68abf 10 FindNextVolumeMountPointHelper -PUBLIC 68db1 c FindFirstVolumeMountPointW -PUBLIC 68f11 8 IsThisAVolumeName -PUBLIC 6905d c FindNextVolumeMountPointW -PUBLIC 357d5 4 FindCloseChangeNotification -PUBLIC 2080d c GetVolumeNameForRoot -PUBLIC 31b99 10 BasepGetVolumeNameFromReparsePoint -PUBLIC 20799 10 BasepGetVolumeNameForVolumeMountPoint -PUBLIC 1fb88 c GetVolumeNameForVolumeMountPointW -PUBLIC 6907b 8 SetVolumeNameForRoot -PUBLIC 69218 c NotifyMountMgr -PUBLIC 69395 8 SetVolumeMountPointW -PUBLIC 69778 4 DeleteVolumeNameForRoot -PUBLIC 69930 4 DeleteVolumeMountPointW -PUBLIC 2e61c c GetVolumePathNameW -PUBLIC 20d14 10 GetVolumePathNamesForVolumeNameW -PUBLIC 2d2af 8 FindFirstVolumeW -PUBLIC 69bff c FindNextVolumeA -PUBLIC 69d19 c FindFirstVolumeMountPointA -PUBLIC 69e49 c FindNextVolumeMountPointA -PUBLIC 69f61 c GetVolumeNameForVolumeMountPointA -PUBLIC 6a091 8 SetVolumeMountPointA -PUBLIC 6a0de 4 DeleteVolumeMountPointA -PUBLIC 2e8b2 c GetVolumePathNameA -PUBLIC 6a100 10 GetVolumePathNamesForVolumeNameA -PUBLIC 6a259 8 FindFirstVolumeA -PUBLIC 6aebf c BuildCommDCBAndTimeoutsA -PUBLIC 6aeed 8 BuildCommDCBA -PUBLIC 6af1f c BuildCommDCBAndTimeoutsW -PUBLIC 6af79 8 BuildCommDCBW -PUBLIC 6afd0 18 BasepDoTapeOperation -PUBLIC 6b046 18 SetTapePosition -PUBLIC 6b08c 14 GetTapePosition -PUBLIC 6b0e8 c PrepareTape -PUBLIC 6b11b c EraseTape -PUBLIC 6b14e 10 CreateTapePartition -PUBLIC 6b188 10 WriteTapemark -PUBLIC 6b1c2 10 GetTapeParameters -PUBLIC 6b21e c SetTapeParameters -PUBLIC 6b25f 4 GetTapeStatus -PUBLIC 2cb03 8 CreateJobObjectW -PUBLIC 6b280 c OpenJobObjectW -PUBLIC 2e44a 8 AssignProcessToJobObject -PUBLIC 6b2f7 8 TerminateJobObject -PUBLIC 2afc9 14 QueryInformationJobObject -PUBLIC 2ca9f 10 SetInformationJobObject -PUBLIC 6b324 c IsProcessInJob -PUBLIC 6b35e c CreateJobSet -PUBLIC 6b38c 8 CreateJobObjectA -PUBLIC 6b3f8 c OpenJobObjectA -PUBLIC 6b46c c CreateHardLinkW -PUBLIC 6b629 c CreateHardLinkA -PUBLIC 6b683 4 GetHandleContext -PUBLIC 2146c 8 GetSystemWow64DirectoryW -PUBLIC 6b694 0 CreateSocketHandle -PUBLIC 1301e 18 BasepSxsActivationContextNotification -PUBLIC 6b6a3 10 BasepSxsSuitableManifestCallback -PUBLIC 17190 c BasepSxsFindSuitableManifestResourceFor -PUBLIC 2bf01 4 AddRefActCtx -PUBLIC 1305f 4 ReleaseActCtx -PUBLIC 6b6fb 4 ZombifyActCtx -PUBLIC a644 8 ActivateActCtx -PUBLIC a675 8 DeactivateActCtx -PUBLIC 300a9 4 GetCurrentActCtx -PUBLIC 967c 10 BasepAllocateActivationContextActivationBlock -PUBLIC 6b723 4 BasepFreeActivationContextActivationBlock -PUBLIC 130a6 4 BasepSxsCloseHandles -PUBLIC 15350 14 BasepSxsCreateResourceStream -PUBLIC 6b761 8 BasepSxsOverrideStreamToMessageStream -PUBLIC 1530d 4 BasepSxsIsStatusFileNotFoundEtc -PUBLIC 19aaa 4 BasepSxsIsStatusResourceNotFound -PUBLIC 1a9d9 8 BasepSxsGetProcessImageBaseAddress -PUBLIC 15229 10 BasepSxsCreateFileStream -PUBLIC 162db 1c QueryActCtxW -PUBLIC 1529b 3c BasepSxsCreateStreams -PUBLIC 1a86f 28 BasepSxsCreateProcessCsrMessage -PUBLIC 15921 c BasepCreateActCtx -PUBLIC 1545c 4 CreateActCtxW -PUBLIC 11210 c BasepProbeForDllManifest -PUBLIC 6b7a5 4 CreateActCtxA -PUBLIC 2fe16 c BasepFindActCtxSection_FillOutReturnData -PUBLIC 30e9a c BasepFindActCtxSection_CheckAndConvertParameters -PUBLIC 2fd92 14 BasepFindActCtxSectionString -PUBLIC 6bb0f 14 FindActCtxSectionStringA -PUBLIC 2fd4c 14 FindActCtxSectionStringW -PUBLIC 30f21 14 FindActCtxSectionGuid -PUBLIC 38653 14 BasepQueryModuleData -PUBLIC 3835a 14 BaseQueryModuleData -PUBLIC 1612f 4 CsrBasepCreateActCtx -PUBLIC 6bb65 4 SetComPlusPackageInstallStatus -PUBLIC 6bba2 0 GetComPlusPackageInstallStatus -PUBLIC 6bbcf 4 BasepShimCacheWrite -PUBLIC 16763 c BasepCheckStringPrefixUnicode -PUBLIC 16602 4 BasepInitUserTempPath -PUBLIC 1aa2c 0 BasepShimCacheInitTempDirs -PUBLIC 169ea c BasepShimCacheQueryFileInformation -PUBLIC 1691d 8 BasepIsRemovableMedia -PUBLIC 2b335 c BasepShimCacheInit -PUBLIC 16473 10 BasepShimCacheSearch -PUBLIC 1697f c BasepShimCacheUpdateLRUIndex -PUBLIC 2c59b c BasepShimCacheRemoveEntry -PUBLIC 2f70b 1c BasepShimCacheAllocateEntry -PUBLIC 2f695 10 BasepShimCacheUpdate -PUBLIC 1642c 8 BasepBitMapCountBits -PUBLIC 168bb c BasepBitMapSetBit -PUBLIC 16396 4 BasepShimCacheCheckIntegrity -PUBLIC 165e9 0 BasepShimCacheUnlock -PUBLIC 16b75 4 BasepCheckCacheExcludeList -PUBLIC 164cd 0 BaseInitAppcompatCache -PUBLIC 2b553 8 BasepShimCacheRead -PUBLIC 16662 14 BasepShimCacheCheckBypass -PUBLIC 16879 10 BasepShimCacheLookup -PUBLIC 16562 8 BasepShimCacheLock -PUBLIC 167d7 10 BaseCheckAppcompatCache -PUBLIC 15120 c BaseUpdateAppcompatCache -PUBLIC 6bc3f 0 BaseFlushAppcompatCache -PUBLIC 6bcc1 0 BaseDumpAppcompatCache -PUBLIC 2b38d 0 BaseInitAppcompatCacheSupport -PUBLIC 6be06 0 BaseCleanupAppcompatCache -PUBLIC 6be8a 4 BaseCleanupAppcompatCacheSupport -PUBLIC 1204d c StringCopyWorkerW -PUBLIC 6bec2 0 FreeOne(_RESNAME *) -PUBLIC 6bf37 0 FreeData(_UPDATEDATA *) -PUBLIC 6c041 0 AddStringOrID(unsigned short const *,_UPDATEDATA *) -PUBLIC 6c1ad 0 DeleteResourceFromList(_UPDATEDATA *,_RESTYPE *,_RESNAME *,int,int,int) -PUBLIC 6c317 0 InsertResourceIntoLangList(_UPDATEDATA *,MY_STRING *,MY_STRING *,_RESTYPE *,_RESNAME *,int,int,int,void *) -PUBLIC 6c414 0 FilePos(int) -PUBLIC 6c42e 0 MuMoveFilePos(int,unsigned long) -PUBLIC 6c449 0 MuWrite(int,void *,unsigned long) -PUBLIC 6c470 0 MuRead(int,unsigned char *,unsigned long) -PUBLIC 6c497 0 MuCopy(int,int,unsigned long) -PUBLIC 6c536 0 SetResdata(_IMAGE_RESOURCE_DATA_ENTRY *,unsigned long,unsigned long) -PUBLIC 6c55d 0 SetRestab(_IMAGE_RESOURCE_DIRECTORY *,long,unsigned short,unsigned short) -PUBLIC 6c592 0 FindSection(_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,char *) -PUBLIC 6c5e7 0 AssignResourceToSection(_RESNAME * *,unsigned long,unsigned long,long,long *) -PUBLIC 6c62a 0 WriteResSection(_UPDATEDATA *,int,unsigned long,unsigned long,_RESNAME *) -PUBLIC 6c7a6 0 PatchDebug<_IMAGE_NT_HEADERS>(int,int,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_NT_HEADERS *,_IMAGE_NT_HEADERS *,unsigned long,unsigned long *) -PUBLIC 6c922 0 PatchDebug<_IMAGE_NT_HEADERS64>(int,int,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_SECTION_HEADER *,_IMAGE_NT_HEADERS64 *,_IMAGE_NT_HEADERS64 *,unsigned long,unsigned long *) -PUBLIC 6ca9e 0 PatchRVAs<_IMAGE_NT_HEADERS>(int,int,_IMAGE_SECTION_HEADER *,unsigned long,_IMAGE_NT_HEADERS *,unsigned long) -PUBLIC 6cc38 0 PatchRVAs<_IMAGE_NT_HEADERS64>(int,int,_IMAGE_SECTION_HEADER *,unsigned long,_IMAGE_NT_HEADERS64 *,unsigned long) -PUBLIC 6cdd5 0 PEWriteResource<_IMAGE_NT_HEADERS>(int,int,unsigned long,_UPDATEDATA *,_IMAGE_NT_HEADERS *) -PUBLIC 6df34 0 PEWriteResource<_IMAGE_NT_HEADERS64>(int,int,unsigned long,_UPDATEDATA *,_IMAGE_NT_HEADERS64 *) -PUBLIC 335b7 0 StringCchCopyW(unsigned short *,unsigned int,unsigned short const *) -PUBLIC 6f093 0 AddResource(MY_STRING *,MY_STRING *,unsigned short,_UPDATEDATA *,void *,unsigned long) -PUBLIC 6f3ef 0 PEWriteResFile(int,int,unsigned long,_UPDATEDATA *) -PUBLIC 6f49a 0 WriteResFile(void *,unsigned short *) -PUBLIC 6f5a3 18 UpdateResourceW -PUBLIC 6f6aa 18 UpdateResourceA -PUBLIC 6f774 8 EndUpdateResourceW -PUBLIC 6f949 8 EndUpdateResourceA -PUBLIC 6f959 0 EnumLangsFunc(void *,unsigned short *,unsigned short *,unsigned short,long) -PUBLIC 6fa8d 0 EnumNamesFunc(void *,unsigned short *,unsigned short *,long) -PUBLIC 6fab4 0 EnumTypesFunc(void *,unsigned short *,long) -PUBLIC 6fad8 8 BeginUpdateResourceW -PUBLIC 6fc7b 8 BeginUpdateResourceA -PUBLIC 6fcdc 0 __report_gsfailure -PUBLIC 6fdca 0 __security_init_cookie_ex -PUBLIC 189fc 0 __security_init_cookie -PUBLIC 9702 0 __security_check_cookie -PUBLIC 6fe51 8 GetCurrentExeName -PUBLIC 6febb c GetExeName -PUBLIC 6ff39 18 GetConsoleAliasInternal -PUBLIC 70086 10 GetConsoleAliasW -PUBLIC 700b2 10 GetConsoleAliasA -PUBLIC 700dc 8 GetConsoleAliasesLengthInternal -PUBLIC 701a1 4 GetConsoleAliasesLengthW -PUBLIC 701b9 4 GetConsoleAliasesLengthA -PUBLIC 701d1 4 GetConsoleAliasExesLengthInternal -PUBLIC 70245 0 GetConsoleAliasExesLengthW -PUBLIC 70252 0 GetConsoleAliasExesLengthA -PUBLIC 7025f 10 GetConsoleAliasesInternal -PUBLIC 703c9 c GetConsoleAliasesW -PUBLIC 703e7 c GetConsoleAliasesA -PUBLIC 70405 c GetConsoleAliasExesInternal -PUBLIC 70531 8 GetConsoleAliasExesW -PUBLIC 7054c 8 GetConsoleAliasExesA -PUBLIC 70567 8 ExpungeConsoleCommandHistoryInternal -PUBLIC 7060f 4 ExpungeConsoleCommandHistoryW -PUBLIC 70627 4 ExpungeConsoleCommandHistoryA -PUBLIC 7063f c SetConsoleNumberOfCommandsInternal -PUBLIC 7070a 8 SetConsoleNumberOfCommandsW -PUBLIC 70725 8 SetConsoleNumberOfCommandsA -PUBLIC 70740 8 GetConsoleCommandHistoryLengthInternal -PUBLIC 707ed 4 GetConsoleCommandHistoryLengthW -PUBLIC 70805 4 GetConsoleCommandHistoryLengthA -PUBLIC 7081d 10 GetConsoleCommandHistoryInternal -PUBLIC 70989 c GetConsoleCommandHistoryW -PUBLIC 709a7 c GetConsoleCommandHistoryA -PUBLIC 709c5 4 SetConsoleCommandHistoryMode -PUBLIC 1ba6a c GetConsoleTitleInternal -PUBLIC 70a39 8 GetConsoleTitleA -PUBLIC 1ba3c 8 GetConsoleTitleW -PUBLIC 2da09 c SetConsoleTitleInternal -PUBLIC 70a61 4 SetConsoleTitleA -PUBLIC 2d9bd 4 SetConsoleTitleW -PUBLIC 70ad1 8 GetConsoleInputExeNameW -PUBLIC 1b355 4 SetConsoleInputExeNameW -PUBLIC 70b61 18 AddConsoleAliasInternal -PUBLIC 70c81 c AddConsoleAliasW -PUBLIC 70cbf c AddConsoleAliasA -PUBLIC 70cfc 8 GetConsoleInputExeNameA -PUBLIC 70da8 4 SetConsoleInputExeNameA -PUBLIC 1b10f 10 SetUpAppName -PUBLIC 29ee3 8 ParseReserved -PUBLIC 1aff3 4 GetConsoleLangId -PUBLIC 1afd5 0 SetTEBLangID -PUBLIC 18c64 c ConnectConsoleInternal -PUBLIC 70e05 2c AllocConsoleInternal -PUBLIC 71011 0 FreeConsoleInternal -PUBLIC 7108d 0 FreeConsole -PUBLIC 710e1 4 PropRoutine -PUBLIC 71191 10 AttachConsoleInternal -PUBLIC b6d7 8 ConDllInitialize -PUBLIC 71311 0 AllocConsole -PUBLIC 714f9 4 AttachConsole -PUBLIC 715f9 0 GetConsoleInputWaitHandle -PUBLIC 1ce32 14 WriteConsoleInternal -PUBLIC 1cf25 14 WriteConsoleA -PUBLIC 35484 14 WriteConsoleW -PUBLIC 1dc7e 4 CloseConsoleHandle -PUBLIC 1dd4d 10 DuplicateConsoleHandle -PUBLIC 71604 8 GetConsoleHandleInformation -PUBLIC 716c9 c SetConsoleHandleInformation -PUBLIC 1aeaa 4 VerifyConsoleIoHandle -PUBLIC 1ff5b 10 OpenConsoleWInternal -PUBLIC 10fe1 10 OpenConsoleW -PUBLIC 71749 20 ReadConsoleInternal -PUBLIC 71a1d 14 ReadConsoleA -PUBLIC 71a6c 14 ReadConsoleW -PUBLIC 71ac2 2c RegisterConsoleVDM -PUBLIC 71c19 c GetConsoleHardwareState -PUBLIC 71ce9 c SetConsoleHardwareState -PUBLIC 37c53 4 GetConsoleDisplayMode -PUBLIC 71d69 10 SetConsoleKeyShortcuts -PUBLIC 71e30 4 SetConsoleMenuClose -PUBLIC 71ea4 10 WriteConsoleInputVDMA -PUBLIC 71ec7 10 WriteConsoleInputVDMW -PUBLIC 71eea 8 SetConsoleCursor -PUBLIC 71f64 8 ShowConsoleCursor -PUBLIC 71fbf c ConsoleMenuControl -PUBLIC 72020 c SetConsolePaletteInternal -PUBLIC 720a0 c SetConsoleDisplayMode -PUBLIC 721c9 c SetConsolePalette -PUBLIC 72269 18 WriteConsoleInputInternal -PUBLIC 723c5 10 WriteConsoleInputA -PUBLIC 723e8 10 WriteConsoleInputW -PUBLIC 7240b 18 CopyRectangle -PUBLIC 7254f 18 ReadConsoleOutputInternal -PUBLIC 727e1 14 ReadConsoleOutputW -PUBLIC 72805 14 ReadConsoleOutputA -PUBLIC 72829 18 WriteConsoleOutputInternal -PUBLIC 72b21 14 WriteConsoleOutputW -PUBLIC 72b45 14 WriteConsoleOutputA -PUBLIC 72b69 1c ReadConsoleOutputString -PUBLIC 72cd9 14 ReadConsoleOutputCharacterA -PUBLIC 72cff 14 ReadConsoleOutputCharacterW -PUBLIC 72d25 14 ReadConsoleOutputAttribute -PUBLIC 72d4b 1c WriteConsoleOutputString -PUBLIC 72ea5 14 WriteConsoleOutputCharacterA -PUBLIC 72ecb 14 WriteConsoleOutputCharacterW -PUBLIC 72ef1 14 WriteConsoleOutputAttribute -PUBLIC 72f17 18 FillConsoleOutput -PUBLIC 72ff9 14 FillConsoleOutputCharacterA -PUBLIC 73020 14 FillConsoleOutputCharacterW -PUBLIC 73044 14 FillConsoleOutputAttribute -PUBLIC 73068 14 CreateConsoleScreenBuffer -PUBLIC 73215 8 InvalidateConsoleDIBits -PUBLIC 732e1 18 GetConsoleInput -PUBLIC 7348d 10 PeekConsoleInputA -PUBLIC 734b0 10 PeekConsoleInputW -PUBLIC 734d3 10 ReadConsoleInputA -PUBLIC 734f6 10 ReadConsoleInputW -PUBLIC 73519 14 ReadConsoleInputExA -PUBLIC 7353d 14 ReadConsoleInputExW -PUBLIC 73561 8 GetConsoleCursorInfo -PUBLIC 73629 4 GetConsoleSelectionInfo -PUBLIC 736e1 4 GetNumberOfConsoleMouseButtons -PUBLIC 73799 10 GetConsoleFontInfo -PUBLIC 738c1 8 GetConsoleFontSize -PUBLIC 7394f c GetCurrentConsoleFont -PUBLIC 1b1f0 8 SetConsoleMode -PUBLIC 73a21 8 GenerateConsoleCtrlEvent -PUBLIC 73aa8 4 SetConsoleActiveScreenBuffer -PUBLIC 73b1c 4 FlushConsoleInputBuffer -PUBLIC 73b90 8 SetConsoleScreenBufferSize -PUBLIC 73c0a 8 SetConsoleCursorPosition -PUBLIC 73c84 8 SetConsoleCursorInfo -PUBLIC 73d51 c SetConsoleWindowInfo -PUBLIC 73e21 18 ScrollConsoleScreenBufferInternal -PUBLIC 73f21 14 ScrollConsoleScreenBufferA -PUBLIC 73f45 14 ScrollConsoleScreenBufferW -PUBLIC 73f69 8 SetConsoleTextAttribute -PUBLIC 73fe5 8 SetConsoleFont -PUBLIC 7405f 4 SetConsoleIcon -PUBLIC 740d3 0 GetConsoleCP -PUBLIC 74143 4 SetConsoleCP -PUBLIC 1b18f 0 GetConsoleOutputCP -PUBLIC 741fe 4 SetConsoleOutputCPInternal -PUBLIC 74261 4 SetConsoleOutputCP -PUBLIC 74294 8 GetConsoleKeyboardLayoutNameWorker -PUBLIC 74329 4 GetConsoleKeyboardLayoutNameA -PUBLIC 74341 4 GetConsoleKeyboardLayoutNameW -PUBLIC 74359 0 GetConsoleWindow -PUBLIC 743c5 8 GetConsoleProcessList -PUBLIC 1af14 8 GetConsoleMode -PUBLIC 74501 0 GetNumberOfConsoleFonts -PUBLIC 7456d 8 GetNumberOfConsoleInputEvents -PUBLIC 74631 4 GetLargestConsoleWindowSize -PUBLIC 1bc2b 8 GetConsoleScreenBufferInfo -PUBLIC 746b9 10 SetConsoleLocalEUDC -PUBLIC 7477f c SetConsoleCursorMode -PUBLIC 747ff c GetConsoleCursorMode -PUBLIC 748c9 4 RegisterConsoleOS2 -PUBLIC 7493d 4 SetConsoleOS2OemFormat -PUBLIC 749b1 14 RegisterConsoleIMEInternal -PUBLIC 74ab9 8 RegisterConsoleIME -PUBLIC 74b12 4 UnregisterConsoleIMEInternal -PUBLIC 74b86 0 UnregisterConsoleIME -PUBLIC 74b97 c MyRegOpenKey -PUBLIC 74be9 10 MyRegQueryValue -PUBLIC 74c8e 8 GetCommandLineString -PUBLIC 74e13 4 ConsoleIMERoutine -PUBLIC 74f87 8 GetConsoleNlsMode -PUBLIC 750d9 8 SetConsoleNlsMode -PUBLIC 751a3 c GetConsoleCharType -PUBLIC 75271 4 DefaultHandler -PUBLIC 1b5c6 4 SetCtrlHandler -PUBLIC 2000c 4 RemoveCtrlHandler -PUBLIC 1b58b 8 SetConsoleCtrlHandler -PUBLIC 75280 4 CtrlRoutine -PUBLIC 75489 0 SetLastConsoleEventActiveInternal -PUBLIC 754d3 0 SetLastConsoleEventActive -PUBLIC 754e4 8 VDMConsoleOperation -PUBLIC 38211 10 EnumCalendarInfoA -PUBLIC 75749 10 EnumCalendarInfoExA -PUBLIC 7576c c EnumTimeFormatsA -PUBLIC 7578a c EnumDateFormatsA -PUBLIC 757aa c EnumDateFormatsExA -PUBLIC 757ca c EnumSystemLanguageGroupsA -PUBLIC 757e8 10 EnumLanguageGroupLocalesA -PUBLIC 75809 c EnumUILanguagesA -PUBLIC 37ce1 8 EnumSystemLocalesA -PUBLIC 75827 8 EnumSystemCodePagesA -PUBLIC 75842 14 GetGeoInfoA -PUBLIC a459 8 NlsGetACPFromLocale -PUBLIC cf52 18 NlsAnsiToUnicode -PUBLIC d239 14 NlsUnicodeToAnsi -PUBLIC 380ef c NlsEnumUnicodeToAnsi -PUBLIC 38063 24 NlsDispatchAnsiEnumProc -PUBLIC d077 18 CompareStringA -PUBLIC 38de8 18 LCMapStringA -PUBLIC d262 10 GetLocaleInfoA -PUBLIC 758cb c SetLocaleInfoA -PUBLIC 7596b 18 GetCalendarInfoA -PUBLIC 75ad6 10 SetCalendarInfoA -PUBLIC 3632d 18 GetTimeFormatA -PUBLIC 361ee 18 GetDateFormatA -PUBLIC 2ec56 18 GetNumberFormatA -PUBLIC 75b79 18 GetCurrencyFormatA -PUBLIC 38a0c 14 GetStringTypeA -PUBLIC 75eb1 14 FoldStringA -PUBLIC 76047 c GetCPInfoExA -PUBLIC 760cf 14 GetStringTypeExA -PUBLIC a490 10 GetStringTypeW -PUBLIC 760df 3c FindJamoDifference -PUBLIC bfef 14 GetStringTypeExW -PUBLIC af4f 1c LongCompareStringW -PUBLIC 763c9 0 NlsResetProcessLocale -PUBLIC 763ef 8 IsValidLanguageGroup -PUBLIC 1c48b 8 IsValidLocale -PUBLIC 764fb 4 IsValidUILanguage -PUBLIC a415 0 GetThreadLocale -PUBLIC 13038 0 GetSystemDefaultUILanguage -PUBLIC 13070 0 GetUserDefaultUILanguage -PUBLIC 127b2 0 GetSystemDefaultLangID -PUBLIC bf3d 0 GetSystemDefaultLCID -PUBLIC 9f10 0 GetUserDefaultLCID -PUBLIC 7668d c SetCurrentUserRegValue -PUBLIC 76734 1c SetMultipleUserInfoInRegistry -PUBLIC 769f2 1c SetMultipleUserInfo -PUBLIC 39200 c GetTwoDigitYearInfo -PUBLIC 76a53 c SetTwoDigitYearInfo -PUBLIC 76c59 10 GetNativeLanguageName -PUBLIC 383cf 4 ConvertDefaultLocale -PUBLIC 1bbba 4 SetThreadLocale -PUBLIC bf64 0 GetUserDefaultLangID -PUBLIC 2f041 c VerLanguageNameW -PUBLIC 2efb9 c VerLanguageNameA -PUBLIC 11562 10 GetLocaleInfoW -PUBLIC 39020 18 GetCalendarInfoW -PUBLIC 76d1b 10 SetCalendarInfoW -PUBLIC 76e34 c SetUserInfo -PUBLIC 1b258 4 SetThreadUILanguage -PUBLIC 76e73 c SetLocaleInfoW -PUBLIC 77cf7 10 CreateRegKey -PUBLIC 1bcfe 10 OpenRegKey -PUBLIC 15047 14 QueryRegValue -PUBLIC 77df0 10 SetRegValue -PUBLIC 1734f 10 MapSection -PUBLIC 77e24 4 UnMapSection -PUBLIC 17f7d 18 GetNlsSectionName -PUBLIC 77e43 c GetCodePageDLLPathName -PUBLIC 2ae21 8 GetNTFileName -PUBLIC 2ac6c c CreateNlsSecurityDescriptor -PUBLIC 2b95b 8 AppendAccessAllowedACE -PUBLIC 2b883 0 CreateNlsObjectDirectory -PUBLIC 172de 14 OpenSection -PUBLIC 2ad98 8 OpenDataFile -PUBLIC 77f87 8 CreateSectionTemp -PUBLIC 77fec 10 Internal_EnumSystemLanguageGroups -PUBLIC 782c6 14 Internal_EnumLanguageGroupLocales -PUBLIC 2a8fa 10 Internal_EnumUILanguages -PUBLIC 37cfc c Internal_EnumSystemLocales -PUBLIC 7849b c Internal_EnumSystemCodePages -PUBLIC 38234 18 Internal_EnumCalendarInfo -PUBLIC 38958 38 EnumDateTime -PUBLIC 786e5 c EnumSystemLanguageGroupsW -PUBLIC 78703 10 EnumLanguageGroupLocalesW -PUBLIC 2a8dc c EnumUILanguagesW -PUBLIC 78724 8 EnumSystemLocalesW -PUBLIC 7873f 8 EnumSystemCodePagesW -PUBLIC 7875a 10 EnumCalendarInfoW -PUBLIC 7877d 10 EnumCalendarInfoExW -PUBLIC 388dc 10 Internal_EnumTimeFormats -PUBLIC 38801 14 Internal_EnumDateFormats -PUBLIC 388be c EnumTimeFormatsW -PUBLIC 387e1 c EnumDateFormatsW -PUBLIC 787a0 c EnumDateFormatsExW -PUBLIC 787c0 8 GetGeoLCID -PUBLIC 78847 14 GetGeoInfoW -PUBLIC 78bd9 c EnumSystemGeoID -PUBLIC 3798e 4 GetUserGeoID -PUBLIC 78c5c 4 SetUserGeoID -PUBLIC 78db1 10 FoldCZone -PUBLIC 78e32 10 FoldDigits -PUBLIC 78eb3 10 FoldCZone_Digits -PUBLIC 78f7b 10 FoldLigatures -PUBLIC 790a7 10 FoldPreComposed -PUBLIC 791d2 10 FoldComposite -PUBLIC ce53 18 MapCase -PUBLIC 2d4ad 1c MapSortKey -PUBLIC 79269 18 MapNormalization -PUBLIC 374eb 18 MapHalfKana -PUBLIC 37787 18 MapFullKana -PUBLIC 794fb 1c MapTraditionalSimplified -PUBLIC 79636 14 FoldStringW -PUBLIC 37693 18 MapKanaWidth -PUBLIC cca8 18 LCMapStringW -PUBLIC 110cb 4 IsValidCodePage -PUBLIC 9915 0 GetACP -PUBLIC 797c3 4 SetCPGlobal -PUBLIC 127a7 0 GetOEMCP -PUBLIC b7dc 4 IsDBCSLeadByte -PUBLIC 2f540 10 GetWCCompSB -PUBLIC 797df 1c GetWCCompMB -PUBLIC 79866 14 GetWCCompSBErr -PUBLIC 798c1 1c GetWCCompMBErr -PUBLIC a1fb 18 GetMBNoDefault -PUBLIC bd19 20 GetMBDefault -PUBLIC 32cf3 1c GetMBCompSB -PUBLIC 7998a 24 GetMBCompMB -PUBLIC 7a064 0 GetMacCodePage -PUBLIC cfd4 18 SpecialMBToWC -PUBLIC 12e76 8 GetCPInfo -PUBLIC 7a1cd c GetCPInfoExW -PUBLIC 7a4ce 8 IsDBCSLeadByteEx -PUBLIC 9bf8 18 MultiByteToWideChar -PUBLIC 32c7b 20 GetMBDefaultComp -PUBLIC a0d4 20 WideCharToMultiByte -PUBLIC 7a6b5 0 GetXPSP2ResModuleHandle -PUBLIC 7a6e2 0 GetXPSP3ResModuleHandle -PUBLIC 35819 0 NlsGetCacheUpdateCount -PUBLIC 34474 c IsValidSeparatorString -PUBLIC 7a712 c IsValidGroupingString -PUBLIC 336f6 8 IsValidCalendarType -PUBLIC 33735 8 IsValidCalendarTypeStr -PUBLIC 7a773 0 GetPreComposedChar -PUBLIC 2f440 4 GetCompositeChars -PUBLIC 7a7f3 4 InsertPreComposedForm -PUBLIC 37834 8 InsertFullWidthPreComposedForm -PUBLIC 2f40d 0 InsertCompositeForm -PUBLIC 7a850 8 NlsConvertIntegerToHexStringW -PUBLIC 124d1 8 NlsConvertStringToIntegerW -PUBLIC 121de 0 NlsStrCpyW -PUBLIC 1bdd2 0 NlsStrCatW -PUBLIC a2d4 0 NlsStrLenW -PUBLIC 7a8b2 0 NlsStrEqualW -PUBLIC 7a962 4 NlsStrNEqualW -PUBLIC 7aa41 4 GetDefaultSortkeySize -PUBLIC 7aa6b 4 GetLinguistLangSize -PUBLIC 7aa95 10 ValidateLCType -PUBLIC 2ee51 14 GetStringTableEntry -PUBLIC 7ad9c 0 NlsIsDll -PUBLIC 2c16a 0 UpdateUserInfoCache -PUBLIC 12544 c NlsStringIsInRange -PUBLIC 2a5c3 10 GetUserInfoFromRegistry -PUBLIC 12090 1c GetUserInfo -PUBLIC 14f5c 14 NlsConvertIntegerToString -PUBLIC 397f8 4 ValidateLocale -PUBLIC 384db c GetCPFileNameFromRegistry -PUBLIC 3440e 4 IsValidNumberFormat -PUBLIC 7adfe 4 IsValidCurrencyFormat -PUBLIC 7ae7f 20 GetRegIntValue -PUBLIC 7af62 8 ConvertGroupingStringToInt -PUBLIC 7afd9 1c GetGroupingValue -PUBLIC 3472b 20 GetNumberString -PUBLIC 3465d 20 ParseNumber -PUBLIC 7b04e 20 ParseCurrency -PUBLIC 344bc 18 GetNumberFormatW -PUBLIC 7b6ca 18 GetCurrencyFormatW -PUBLIC 3414d 4 IsValidTime -PUBLIC 339dc 4 IsValidDate -PUBLIC 7bad3 18 GetCalendarYear -PUBLIC 7bb6e c GetAbsoluteDate -PUBLIC 7bc59 4 GetAdvanceHijriDate -PUBLIC 7be1b 4 DaysUpToHijriYear -PUBLIC 7be83 c IsValidDateForHebrew -PUBLIC 335d4 18 StringCchCopyExW -PUBLIC 33ec8 14 ParseTime -PUBLIC 7bf4d 8 GetHijriDate -PUBLIC 7c04f 8 GetHebrewDate -PUBLIC 7c86f c NumberToHebrewLetter -PUBLIC 33fd3 18 GetTimeFormatW -PUBLIC 33a4a 20 ParseDate -PUBLIC 33775 18 GetDateFormatW -PUBLIC c0ed 0 NlsThreadCleanup -PUBLIC 17fc1 0 InitKoreanWeights -PUBLIC 1805b c NlsDllInitialize -PUBLIC 38617 4 IsCPHashNodeLoaded -PUBLIC 7caa9 0 GetGeoFileInfo -PUBLIC a557 0 GetCTypeFileInfo -PUBLIC 7cb54 8 LoadCodePageAsDLL -PUBLIC 188fc 14 MakeCPHashNode -PUBLIC 16ea9 10 MakeLocHashNode -PUBLIC 336b6 8 GetCalendar -PUBLIC 7cc2b 4 IsValidSortId -PUBLIC 7cd42 0 GetLanguageExceptionInfo -PUBLIC 7cdc6 4 FindLanguageExceptionPointers -PUBLIC 7ce1e 4 CopyLanguageExceptionInfo -PUBLIC 184dc c FindExceptionPointers -PUBLIC 7ceb0 8 CopyExceptionInfo -PUBLIC 7cf53 4 WaitOnEvent -PUBLIC 183fe 8 GetSortkeyFileInfo -PUBLIC 3996f 8 GetCodePageFileInfo -PUBLIC 1831e 10 MakeLangHashNode -PUBLIC d1ae 0 GetCPHashNode -PUBLIC 150c2 0 GetLocHashNode -PUBLIC 7cf85 8 CreateAndCopyLanguageExceptions -PUBLIC 7d1b9 4 GetLinguisticLanguageInfo -PUBLIC 18297 10 GetLanguageFileInfo -PUBLIC 7d246 0 GetLangHashNode -PUBLIC 7d340 c UpdateJamoState -PUBLIC 7d3aa 14 GetJamoComposition -PUBLIC 7d4ae 18 MapOldHangulSortKey -PUBLIC 17210 0 NlsIsInteractiveUserProcess -PUBLIC 7d5b4 0 NlsCheckForInteractiveUser -PUBLIC 2a25d 4 NlsGetCacheBuffer -PUBLIC 2a41a 0 NlsInvalidateCache -PUBLIC 7d659 4 NlsFlushProcessCache -PUBLIC 2a855 10 NlsQueryCurrentUserInfo -PUBLIC 11fff 18 NlsGetCurrentUserNlsInfo -PUBLIC 2a532 4 NlsGetUserLocale -PUBLIC 7d6b7 c CsrBasepNlsSetUserInfo -PUBLIC 16ff1 8 CsrBasepNlsGetUserInfo -PUBLIC 7d765 1c CsrBasepNlsSetMultipleUserInfo -PUBLIC 7d9c9 0 CsrBasepNlsUpdateCacheCount -PUBLIC 7da0e c UTFCPInfo -PUBLIC 7da7f 10 UTF7ToUnicode -PUBLIC 31054 14 UTF8ToUnicode -PUBLIC 7dc45 10 UnicodeToUTF7 -PUBLIC 21523 10 UnicodeToUTF8 -PUBLIC 30f99 18 UTFToUnicode -PUBLIC 215f5 20 UnicodeToUTF -PUBLIC 2ad39 c CsrBasepNlsCreateSection -PUBLIC 7dead 8 DelayLoadFailureHook -PUBLIC 7debd 4 FindDll -PUBLIC 7dfad 8 LookupHandlerByName -PUBLIC 7e036 8 LookupHandlerByOrdinal -PUBLIC 7e07f 8 LookupHandler -PUBLIC 7e0cb 14 GetSSIDForAdapter -PUBLIC 7e0ef 18 GetSignalStrengthForAdapter -PUBLIC ddf5 0 GetCurrentProcess -PUBLIC 7e27b 4 ntohs -PUBLIC 7e299 c WSAEnumProtocolsW -PUBLIC 7e2bd 24 WSAIoctl -PUBLIC 7e313 4 GetActivePwrScheme -PUBLIC 7e34b 28 WinStationSendMessageW -PUBLIC 7e362 8 ReadPwrScheme -PUBLIC 7e39e 18 SdbQueryData -PUBLIC 14ae7 4 FreeEnvironmentStringsW -PUBLIC 7e3a9 c mixerGetID -PUBLIC 7e536 18 SetupDiGetDeviceInterfaceDetailA -PUBLIC cc97 4 LockResource -PUBLIC 7e848 8 DnsRecordCompare -PUBLIC 7e878 10 DnsRecordSetCompare -PUBLIC 260c2 4 DnsApiAlloc -PUBLIC 7e8b2 c DnsRecordSetCopyEx -PUBLIC 7e98d 4 DnsApiFree -PUBLIC 7e9e7 0 LZStart -PUBLIC 7ea57 c SfpInstallCatalog -PUBLIC 7ea62 8 SfpDeleteCatalog -PUBLIC 7eb14 10 pSetupConcatenatePaths -PUBLIC 7eb60 c SetActivePwrScheme -PUBLIC 7ec59 0 IsPwrShutdownAllowed -PUBLIC 7ece6 10 UrlMkSetSessionOption -PUBLIC 7f052 0 ldap_search_init_pageW -PUBLIC 7f078 8 DnsFreeConfigStructure -PUBLIC 7f0c5 c DnsSetConfigDword -PUBLIC 7f1f1 10 WZCProviderDeleteWirelessProfile -PUBLIC 7f1fe 0 LZDone -PUBLIC 7f215 8 SetConsoleMaximumWindowSize -PUBLIC 7f23b 1c MprAdminConnectionEnum -PUBLIC 7f251 8 NPCancelConnectionForCSCAgent -PUBLIC 7f6a5 5c LocalEnrollNoDS -PUBLIC 328ec 0 memmove -PUBLIC 2cf55 c RtlDnsHostNameToComputerName -PUBLIC 11fc7 0 wcsncpy -PUBLIC 7f853 0 wcschr -PUBLIC 29f14 0 wcsstr -PUBLIC a0c9 0 _allmul -PUBLIC 7f85e 0 DbgBreakPoint -PUBLIC 7f869 0 DbgPrint -PUBLIC 24c6 0 _SEH_prolog -PUBLIC 2501 0 _SEH_epilog -PUBLIC 39aa8 0 _except_handler3 -PUBLIC 39b8e 4 _seh_longjmp_unwind -PUBLIC 7f874 4 DbgUiDebugActiveProcess -PUBLIC 7f87f 0 DbgUiConnectToDbg -PUBLIC 7f88a 4 DbgUiIssueRemoteBreakin -PUBLIC 7f895 14 NtSetInformationDebugObject -PUBLIC 7f8a0 0 DbgUiGetThreadDebugObject -PUBLIC 7f8ab 8 DbgUiConvertStateChangeStructure -PUBLIC 7f8b6 8 DbgUiWaitStateChange -PUBLIC 7f8c1 8 DbgUiContinue -PUBLIC 7f8cc 4 DbgUiStopDebugging -PUBLIC 7f8d7 0 strncpy -PUBLIC 7f8e2 8 RtlFlushSecureMemoryCache -PUBLIC de84 0 _global_unwind2 -PUBLIC dedf 0 _local_unwind2 -PUBLIC df3f 0 _NLG_Return2 -PUBLIC df4f 0 _abnormal_termination -PUBLIC df72 0 _NLG_Notify1 -PUBLIC df7b 0 _NLG_Notify -PUBLIC df91 0 _NLG_Dispatch2 -PUBLIC 7f8ed 18 NtQueryVirtualMemory -PUBLIC 18045 4 LdrSetDllManifestProber -PUBLIC 18050 8 RtlSetThreadPoolStartFunc -PUBLIC 1017b 4 RtlEncodePointer -PUBLIC 39493 10 RtlSetHeapInformation -PUBLIC 7f8f8 14 RtlQueryHeapInformation -PUBLIC abd3 4 LdrUnloadDll -PUBLIC 14e44 4 LdrUnloadAlternateResourceModule -PUBLIC 112bb 4 LdrDisableThreadCalloutsForDll -PUBLIC e46c 10 LdrGetDllHandle -PUBLIC b4c4 8 LdrUnlockLoaderLock -PUBLIC 2129a 8 LdrAddRefDll -PUBLIC b3ca c LdrLockLoaderLock -PUBLIC 17779 c LdrEnumerateLoadedModules -PUBLIC 14e0f 8 LdrLoadAlternateResourceModule -PUBLIC e069 10 LdrLoadDll -PUBLIC ad95 10 LdrGetProcedureAddress -PUBLIC 9f9f 10 LdrFindResource_U -PUBLIC 9faa 10 LdrAccessResource -PUBLIC 1126d 10 LdrFindResourceDirectory_U -PUBLIC 1cdf8 0 LdrShutdownProcess -PUBLIC 7f903 8 NtTerminateProcess -PUBLIC 1a204 18 LdrQueryImageFileExecutionOptions -PUBLIC 7f90e 0 wcsncmp -PUBLIC c0d1 0 LdrShutdownThread -PUBLIC 10186 4 RtlDecodePointer -PUBLIC 2c053 c RtlSetIoCompletionCallback -PUBLIC 7f919 28 RtlApplicationVerifierStop -PUBLIC 7f924 0 _alloca_probe -PUBLIC 19a62 0 DbgPrintEx -PUBLIC 15451 4 LdrDestroyOutOfProcessImage -PUBLIC 162a8 14 LdrAccessOutOfProcessResource -PUBLIC 15446 14 LdrFindCreateProcessManifest -PUBLIC 15345 10 LdrCreateOutOfProcessImage -PUBLIC 16912 0 _allshl -PUBLIC 7f92f 4 RtlUnhandledExceptionFilter -PUBLIC 7f93a 0 wcspbrk -PUBLIC 7f945 0 _wcslwr -PUBLIC 37a6c 0 _wtol -PUBLIC 7f950 0 _strlwr -PUBLIC 7f95b 0 _ValidateEH3RN -PUBLIC 7fb82 10 RtlUnwind -PUBLIC 7fb8d c InitGlobalBuffers -PUBLIC 7fc40 0 InitGlobalBuffersEx -PUBLIC 7fc57 4 FreeGlobalBuffers -PUBLIC 7fca5 c lz_CopyFile -PUBLIC 7fd63 c ExpandOrCopyFile -PUBLIC 7fe21 4 ExtractFileNameW -PUBLIC 7fe56 4 ExtractFileName -PUBLIC 7fea2 4 ExtractExtensionW -PUBLIC 7fed7 4 ExtractExtension -PUBLIC 7ff1d 4 MakeCompressedNameW -PUBLIC 7ff89 4 MakeCompressedName -PUBLIC 7fff3 8 MakeExpandedName -PUBLIC 800fc 8 CopyDateTimeStamp -PUBLIC 80146 c GetHdr -PUBLIC 801f9 4 IsCompressed -PUBLIC 80246 18 LZDecode -PUBLIC 804ad c ReadInBuf -PUBLIC 80527 c WriteOutBuf -PUBLIC 80579 4 LZIsCharLowerA -PUBLIC 805dc 4 LZIsCharUpperA -PUBLIC 8063f 4 LZCharNextA -STACK WIN 4 b5ae 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9b47 66 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17826 35 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 55709 1f7 c 0 10 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 558b4 e 0 0 10 8 4c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 be41 c7 c 0 4 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39bc8 e 0 0 4 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 98f4 2b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 936b 1e 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9371 14 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92b0 32 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92b6 28 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92b7 26 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30769 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b722 20 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 29d7a 164 a 0 18 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 29d83 157 1 0 18 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 29d84 155 0 0 18 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 29dc5 8e 0 0 18 c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1b069 a1 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b078 90 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b079 82 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17860 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 29f30 6f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 29f36 65 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1dc03 54 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f39 52 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f3f 48 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17889 5c 1d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1789f 42 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 178a6 38 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17923 98 7 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1792a 8f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 180a6 23c 9 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 180af 231 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 180c5 21a 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1795e 89 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17961 85 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1798a 5a 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 179ea 212 8 0 0 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17a3c 1bd 0 0 0 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17a49 1af 0 0 0 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16e70 85 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18a21 a1 e 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18a2f 91 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18a68 57 0 0 0 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17cb5 257 8 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17e09 89 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1839b d3 1b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 183b2 b8 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 183b6 b3 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 998d 16b c 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39e42 e 0 0 8 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 992f 10b c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39ea2 e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39eca e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1625 129 c 0 20 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1717 4 0 0 20 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32eb1 ba c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39f0b e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32e1d bb c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39f69 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a03b 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a017 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55921 e8 8 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5595c a5 0 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5595d a3 0 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a35e b91 19 0 18 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a36a b81 d 0 18 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ = -STACK WIN 4 a36b b7f c 0 18 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ = -STACK WIN 4 a377 b72 0 0 18 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 132 - ^ = -STACK WIN 4 55a0e e0 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55abf e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55b09 8b c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55b65 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30927 209 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a7c5 e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30bd3 142 c 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a824 e 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a86a 19 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33107 18f f 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33110 182 6 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 33116 17b 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 3312f 14d 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 ffb1 12d c 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a94d e 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a995 19 0 0 c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 326c1 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ab78 ff c 0 4 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3a9c6 e 0 0 4 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 330e7 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a9cc 64 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a9d2 5a 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a9d6 55 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 ba64 39 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3aa01 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bbce b2 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3aa1d e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e6dc 185 c 0 18 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e6e8 175 0 0 18 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 e701 13c 0 0 18 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 e73a ed 0 0 18 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 1021c 1ba 9 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10225 1ad 0 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1026f 15c 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30b7d 3b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c86d 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c87c 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ddfe d3 c 0 1c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3aad0 4 0 0 1c 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a996 65 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a99c 5b 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a9a0 56 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 b64c 63 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3ab10 11 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2520 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1042c 301 17 0 1c 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3abe7 7a 0 0 1c 8 420 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 98eb 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2ff92 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103a3 9e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55bbc 2d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55bee 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55c24 2e 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55c2c 22 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55c57 27 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55c83 4c b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55c89 42 5 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 55c8d 3d 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 55c8e 3b 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 55cd4 119 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55cdc 10d d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 55cdd 10b c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 55ce9 fe 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 55df2 bd 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55df8 b3 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55e53 15 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55eb4 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55eef 15b 12 0 18 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55efb 14b 6 0 18 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 55f01 144 0 0 18 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5604f a4 18 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5605a 95 d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5605e 90 9 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56067 86 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 560f8 d7 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56100 cb 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56101 c9 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5618d 3c 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 561d4 a5 16 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 561dd 98 d 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 561de 94 c 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 561ea 87 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5627e fe 16 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56287 f1 d 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56288 ef c 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56294 e2 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56381 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 563b1 20 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 563d6 60 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 563df 53 7 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 563e6 4b 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 56407 24 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5643b 1f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56441 15 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5645f 54 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56465 4a 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 56469 45 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 56471 3c 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 564b8 5c 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 564be 52 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 564cf 16 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56519 180 e 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56522 173 5 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56523 171 4 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56527 16c 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 5669e c8 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 566a6 bc 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 566a7 ba 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5676b 27b 15 0 c 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56774 26e c 0 c 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 5677f 262 1 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 56780 260 0 0 c c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 569ec e9 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 569f4 dd d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 569f5 db c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56a01 ce 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56ada b5 15 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56ae2 a9 d 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56ae3 a7 c 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56aef 9a 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 56b94 12e 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56b9c 122 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56bba 102 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56cc7 113 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56cdf f6 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56cea ea 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56ddf 22e 19 0 1c 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 56df1 2a 7 0 1c 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 56df2 28 6 0 1c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 56df8 21 0 0 1c c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 57012 8d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57018 83 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5704b 45 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5704f 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 570a4 46 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 570ac 16 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 570ef 5b 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 570f7 16 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57112 2c 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5714f 75 e 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5715d 5e 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57177 35 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 571c9 e0 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 571cf d6 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 571d3 d1 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 572ae 14b 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 572b7 13e 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 572df 115 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 573fe 1f4 1c 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5740d 1b2 d 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 57411 1ad 9 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5741a 1a3 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 37bfc 52 13 0 0 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37a77 1c7 13 0 8 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37a80 1ba a 0 8 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37a8a 1af 0 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 575f7 69 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 575fd 5f 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 575fe 5d 4 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57602 58 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57665 70 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5766b 66 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 576a6 2a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 576da 5c c 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 576e1 51 5 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 576e2 4f 4 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 576e6 4a 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 5773b 82 15 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57748 71 8 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 57749 6f 7 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 57750 67 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 577c2 a4 e 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 577cb 97 5 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 577cc 95 4 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 577d0 90 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5786b 4b 11 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57871 41 b 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57878 37 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5787c 32 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 202af 1e8 22 0 10 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 202c3 1cb e 0 10 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 202c4 1c9 d 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 202d1 1bb 0 0 10 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 578bb 9d 10 0 c 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 578c4 90 7 0 c 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 578cb 88 0 0 c 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5795d 95 a 0 10 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57966 88 1 0 10 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57967 86 0 0 10 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 579f7 ac 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 579fe a1 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 579ff 9d 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 57a00 9b 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 57aa8 101 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57ab0 f5 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57ab1 f3 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57ae7 93 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57bae e4 a 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57bb7 d7 1 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 57bb8 d5 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 57be2 a8 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 57c97 38 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57cd4 b4 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57cdd 54 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57d07 29 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57da5 80 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57dab 76 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57daf 71 1 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57db0 6f 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 57e41 3f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57e85 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57eb6 9e a 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57ebe 92 2 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57ebf 8e 1 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57ec0 8c 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 57f59 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57f8a 4e a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57f90 44 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57f94 3f 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57fdd a7 7 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 57fe4 9c 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 57ff3 8c 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 57ff4 8a 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 31893 136 22 0 10 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 318a7 119 e 0 10 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 318ab 114 a 0 10 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 318b5 109 0 0 10 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 316c7 20b 13 0 8 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 316d8 139 2 0 8 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ = -STACK WIN 4 316d9 137 1 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ = -STACK WIN 4 316da 135 0 0 8 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 68 - ^ = -STACK WIN 4 5808d 121 15 0 4 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5809a 110 8 0 4 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 580a1 108 1 0 4 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 580a2 106 0 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 201f1 25b a 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 201fb 22d 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2020a 210 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 20210 209 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 581b3 7c 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 581b9 72 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 581cc 5e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 216a4 105 a 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 216ad f8 1 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 216ae f6 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 21702 84 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 58234 6e 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5827c 17 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 582a7 a0 b 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 582ad 96 5 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 582ae 94 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 582b2 8f 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5834c 52 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58380 1a 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 583a3 17b 7 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 583aa 170 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 583d0 143 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58523 a7 b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58529 9d 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5852a 9b 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5852e 96 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2ceb2 ae 1c 0 c 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cec0 97 e 0 c 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 2cec4 92 a 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 2cece 87 0 0 c c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 585cf 97 18 0 c 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 585dd 76 a 0 c 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 585e7 6b 0 0 c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5866b 476 1c 0 10 0 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5867c 2f7 b 0 10 4 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ = -STACK WIN 4 58680 2f2 7 0 10 8 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ = -STACK WIN 4 58687 2ea 0 0 10 c 68c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1684 - ^ = -STACK WIN 4 58bc3 76 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58be8 4d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58c3e 26 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58c69 19c b 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58c72 18f 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 58c73 18d 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 58c74 18b 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 58e0a 117 a 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58e12 10b 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 58e13 109 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 58e14 107 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 58f26 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58f3c 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58f6f dc 8 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 58f76 d1 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 58f77 cf 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 58f91 af 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 59050 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59066 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59099 211 d 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 590a2 6d 4 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 590a6 68 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 592af 44 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 592c5 2a 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 592f8 b1 11 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 592fe a7 b 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 592ff a5 a 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 59309 9a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 593ae b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b852 20 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b877 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30b14 3a 8 0 0 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f272 79 9 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f27a 6d 1 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f27b 6b 0 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 138fc 172 d 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13905 165 4 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13909 160 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34ffe 96 12 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35006 8a a 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 35010 7f 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 360dd 63 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 360e3 59 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 360e7 54 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 360f4 46 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 f2ee 40 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 176b 75 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17e5 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 593be 9b 40 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 593ed 68 11 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 593fe 53 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 929c f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e7ec 82 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10b1c 77 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e866 5d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e88c 22 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35524 5d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3554a 22 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3065d 96 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3214e 8e 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10ad9 3b 11 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10aea 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 350bf 166 15 0 4 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 350d0 14c 4 0 4 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 350d4 147 0 0 4 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5945e 121 2c 0 4 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5946f eb 1b 0 4 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5948a cf 0 0 4 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2d36f 46 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59584 38 b 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5958f 29 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e9c1 2e7 1d 0 c 0 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e9d2 29a c 0 c 4 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e9de 28d 0 0 c 8 188 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 595c1 278 15 0 c 0 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 595d2 25e 4 0 c 4 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ = -STACK WIN 4 595d6 259 0 0 c 8 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ = -STACK WIN 4 5961c 20f 0 0 c c 180 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 392 - ^ = -STACK WIN 4 5983e 1ee 13 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59847 1d2 a 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 59848 1d0 9 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 59851 1c6 0 0 8 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 a7d4 b7 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a810 67 0 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a811 61 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59a31 e8 1b 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59a42 ce a 0 4 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 59a4b c4 1 0 4 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 59a4c c2 0 0 4 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 13093 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 59b1e 4f a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59b28 41 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59b72 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 59b7c 1ea 11 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59b8a 1c5 3 0 0 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 59b8d 1c1 0 0 0 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 59c2c fa 0 0 0 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 59d78 2ab 17 0 4 8 244 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59dd6 4 0 0 4 8 244 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 59f9f 14 0 0 4 8 244 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a0bd 61 8 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a0d4 46 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a123 4e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a13c 31 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a14b 21 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a176 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a19d 46 6 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a1e8 44 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a231 59 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a28f 57 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a2eb 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a31b 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a351 70 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a357 66 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a358 64 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a3c6 62 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a3cc 58 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a3cd 56 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a42d 4e 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a436 35 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a480 e0 9 0 8 0 68 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a489 42 0 0 8 4 68 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a565 3f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a56d 33 4 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a571 2e 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a5a9 44 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a5af 3a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a5be 1a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36f5b 460 9 0 4 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36f64 e3 0 0 4 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 36f9d 98 0 0 4 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 36f9e 96 0 0 4 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 323d2 146 a 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 323db 139 1 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 323dc 137 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a5f2 c22 1d 0 c 0 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5a60f bfc 0 0 c 4 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ = -STACK WIN 4 5a689 b7e 0 0 c 8 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ = -STACK WIN 4 5a690 b76 0 0 c c 2c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 716 - ^ = -STACK WIN 4 5b219 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 217ac 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b23b 4b 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b243 3f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2af8f 2c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30cce 1c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 360a9 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 360c3 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30bbb 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b28b 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1006c 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34e97 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c3be 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 354ed 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30cfe 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32695 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b2ab 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f827 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f726 59 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f72c 4f 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f72d 4d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f763 59 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f769 4f 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f76a 4d 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ee95 e2 7 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ee9b d8 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ee9c d6 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f88c 181 13 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f893 176 c 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 f897 171 8 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 f89f 168 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 f6da 63 b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f6e5 54 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 f7a0 124 22 0 c 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f7b1 10a 11 0 c 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 f7b5 105 d 0 c 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 f7c2 f7 0 0 c c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 1c858 6a 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c85b 66 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 331f9 23 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c8a6 35 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c8ac 27 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c8ad 25 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b2cb 85 1b 0 8 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b315 2f 0 0 8 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e361 460 b 0 4 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e36a 453 2 0 4 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1e36b 451 1 0 4 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1e36c 44f 0 0 4 c 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1e6e1 119 d 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e6ed 109 1 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1e6ee 107 0 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1e708 8c 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 35889 29 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e891 362 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e8a8 100 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e8b6 f1 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f18a 112 10 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f193 105 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f19a fd 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b355 db 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b36b c1 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b36c bf 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3331f 98 a 0 0 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33328 8d 1 0 0 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33329 8b 0 0 0 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f460 3a2 12 0 28 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f46c 392 6 0 28 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 f46d 390 5 0 28 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 f472 38a 0 0 28 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 f928 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f851 47 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c8db 3b1 28 0 14 0 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c8fb 388 8 0 14 4 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ = -STACK WIN 4 1c8fc 386 7 0 14 8 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ = -STACK WIN 4 1c903 37e 0 0 14 c 84 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 140 - ^ = -STACK WIN 4 5b435 158 1f 0 4 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b446 44 e 0 4 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 5b44a 3f a 0 4 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 5b454 34 0 0 4 c 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 1b42d 157 1f 0 8 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b43e 46 e 0 8 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 1b442 41 a 0 8 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 1b44c 36 0 0 8 c 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 548 - ^ = -STACK WIN 4 1cac2 217 1e 0 10 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1cad0 200 10 0 10 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 1cad4 1fb c 0 10 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 1cae0 1ee 0 0 10 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 5b592 185 1f 0 8 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b5a3 5e e 0 8 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 5b5a7 59 a 0 8 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 5b5b1 4e 0 0 8 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 2bb93 14d 1e 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bba1 136 10 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 2bba5 131 c 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 2bbb1 124 0 0 10 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 32dd3 40 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32dd9 36 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e793 fa e 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e79c ed 5 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1e79d eb 4 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1e7a1 e6 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1e9c5 fa e 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e9ce ed 5 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1e9cf eb 4 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1e9d3 e6 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 5b71c 107 10 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b72b f4 1 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b72c f1 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2dc81 13a 16 0 8 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2dc92 120 5 0 8 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 2dc96 11b 1 0 8 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 2dc97 119 0 0 8 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 2dc43 3de c 0 8 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3bde2 e 0 0 8 8 5c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 358ed 48 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 358f3 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ea7d 155 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ea83 14b 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ecd2 12f 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ecd8 125 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ecea 112 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b828 24f b 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5b831 242 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5b832 240 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5b833 23e 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1f021 325 e 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f02a 318 5 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1f02b 316 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1f02f 311 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1c7f4 af c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c7fa a5 6 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c800 9e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e291 166 c 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3c06f 15 0 0 4 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f331 225 26 0 20 0 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f34c 201 b 0 20 4 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 f34d 1ff a 0 20 8 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 f357 1f4 0 0 20 c cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 32b56 f5 f 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32b5c eb 9 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32b60 e6 5 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32b65 e0 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 35d54 4b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35f21 7d b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35f27 73 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 35f28 71 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 35f2c 6c 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5ba7c 42 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f95d d2 d 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f963 c8 7 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 f969 c1 1 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 f96a bd 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1ee4c 4b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1edbd 81 b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1edc3 77 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1edc4 75 4 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1edc8 70 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5bac3 42 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32da7 1c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bb0a 1c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bb2b 164 37 0 14 0 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bb62 124 0 0 14 4 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ = -STACK WIN 4 5bb76 10c 0 0 14 8 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ = -STACK WIN 4 5bb77 10a 0 0 14 c 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 292 - ^ = -STACK WIN 4 5bc95 185 2d 0 14 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bcb5 15c d 0 14 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 5bcc2 14e 0 0 14 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 5bcef 11d 0 0 14 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 5be23 13d 18 0 14 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5be3a 11d 1 0 14 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5be3b 11b 0 0 14 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bf65 14f 18 0 14 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bf7c 12f 1 0 14 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5bf7d 12d 0 0 14 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21495 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c0b9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c0d7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c0f5 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 213f8 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 332b1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c110 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c12e 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36434 83 2f 0 10 0 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32730 ce 2f 0 10 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3277e 67 0 0 10 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 364a9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f89a 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21f1e 2b9 39 0 c 0 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21f3c 292 1b 0 c 4 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ = -STACK WIN 4 21f50 27d 7 0 c 8 f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ = -STACK WIN 4 21f57 275 0 0 c c f4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 252 - ^ = -STACK WIN 4 5c149 100 c 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c223 1e 0 0 8 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c269 57 d 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c26f 4d 7 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c275 46 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c276 44 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 21d8d 5b9 f 0 c 8 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3c77a 2c 0 0 c 8 98 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c2c5 a2 11 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c2ce 95 8 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5c2cf 93 7 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5c2d6 8b 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5c36c fb d 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c379 ea 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c3ce 93 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31385 8e 9 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3138e 81 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 126f2 30 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 126f8 26 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a71d 74 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 315c4 67 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 315ca 5d 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ac4d 37 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ac0f 3e 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ac16 33 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ef3a 1bb c 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f049 e 0 0 8 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 edd7 db c 0 4 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3c85e e 0 0 4 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c46c 3a 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c475 2d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34bef ec 9 0 c 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34bf8 df 0 0 c 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34c1f ac 0 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32113 3a 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32119 30 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3162f 107 15 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31638 fa c 0 20 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 31639 f8 b 0 20 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 31644 ec 0 0 20 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 ee81 6d 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ee87 63 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ee88 5f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34eb1 10a 12 0 8 0 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34ec2 f0 1 0 8 4 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 34ec3 ee 0 0 8 8 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 34eea c0 0 0 8 c 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 ea7d 4d7 1d 0 18 0 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ea92 4b9 8 0 18 4 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ = -STACK WIN 4 ea99 4b1 1 0 18 8 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ = -STACK WIN 4 ea9a 4af 0 0 18 c 2cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 724 - ^ = -STACK WIN 4 5c4ab 62 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c4b3 56 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 137d9 139 18 0 8 0 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 137ea 11f 7 0 8 4 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 137f1 117 0 0 8 8 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 eee1 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c512 137 1c 0 18 0 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c523 11d b 0 18 4 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 5c524 11b a 0 18 8 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 5c52e 110 0 0 18 c 268 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 624 - ^ = -STACK WIN 4 180e 1cd c 0 14 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18ef e 0 0 14 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1921 4 0 0 14 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10d87 140 c 0 14 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3cac5 4 0 0 14 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32044 98 9 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3204d 8b 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3207f 4f 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10b8e 122 8 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10bae ef 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10baf ed 0 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21057 e3 9 0 14 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21060 d6 0 0 14 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10c6d 11d 22 0 8 0 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10c7e 103 11 0 8 4 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 10c8f f1 0 0 8 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 10c99 d6 0 0 8 c c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 31c45 7c 8 0 10 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31cb8 88 8 0 10 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31cd2 10 0 0 10 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12641 6d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32361 8a 8 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3237e 5f 0 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f569 aa 8 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f5ad 41 0 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 322fb 6f 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10a09 40 8 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c64e 96 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c6de b 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bd84 33 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bd8a 29 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bcfb 9b 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bd0d 85 1 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 2bd0e 83 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 5c701 9b 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c713 85 1 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 5c714 83 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 300da 29 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2de51 9c c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2dda5 99 c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c7a1 51 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c7f7 c8 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c82d 8d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c82e 8b 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c8c4 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10e51 de 9 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10e5a d1 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 322bc 67 12 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 322ce 51 0 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10a77 3d 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bada c8 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bae3 bb 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bb47 3c 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b896 86 7 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35971 44 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b974 50 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b97a 46 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b981 3e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 938e 153 d 0 18 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 939a 143 1 0 18 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 939b 141 0 0 18 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 9402 1d 0 0 18 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 bb76 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bb82 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b905 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 945c 73 8 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9464 67 0 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 110f5 f3 e 0 c 0 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11102 e2 1 0 c 4 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11103 e0 0 0 c 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31f31 25a 9 0 4 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31f3a 11e 0 0 4 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 31f73 d3 0 0 4 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 31f7a cb 0 0 4 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 5c8e9 61 11 0 34 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5c8ef 57 b 0 34 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c8f3 52 7 0 34 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c8fa 4a 0 0 34 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c94f 258 17 0 10 8 1b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5cbad 1 0 0 10 8 1b8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5cbc1 2a4 22 0 10 0 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5cbd2 28a 11 0 10 4 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 5cbd6 285 d 0 10 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 5cbe3 277 0 0 10 c c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 200 - ^ = -STACK WIN 4 5cf6b 163 c 0 20 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d0d4 1 0 0 20 8 40 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d0e9 267 f 0 c 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d2ff 39 0 0 c 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d371 123 11 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d382 109 0 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d3bb cb 0 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 314d5 151 9 0 8 0 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 314de d0 0 0 8 4 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ = -STACK WIN 4 31513 89 0 0 8 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ = -STACK WIN 4 3151a 81 0 0 8 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 108 - ^ = -STACK WIN 4 b74c ba 9 0 4 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b755 ad 0 0 4 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b77c 79 0 0 4 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 137b1 23 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31eab 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f72e 537 f 0 14 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f951 3c 0 0 14 8 ac 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d499 25 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12782 20 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1153c 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35eae 72 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35ee1 2d 0 0 14 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35ee2 2b 0 0 14 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21261 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3565b 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35e8f 1a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d4c3 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21950 36 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d4e3 33 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10978 109 c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3d377 4 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d539 44d f 0 20 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d93e 4d 0 0 20 8 b0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 284bd 53 8 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 284c5 33 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d9a1 3a 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d9a7 30 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d9b9 14 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2879d 55 d 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 287aa 44 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5d9e0 4b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5da30 85 17 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5da4a 5c 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10760 424 8 0 1c 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10788 3c2 0 0 1c 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1078c 3bd 0 0 1c 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3719a 9f 10 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 371a5 7a 5 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 371a6 78 4 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 371aa 73 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5dadd 73 8 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5db0a 42 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5db13 23 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5db55 bc a 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5db5d b0 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5db5e ae 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5db5f ac 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5dc16 23e c 0 24 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5de3f 1a 0 0 24 8 60 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5de71 198 c 0 1c 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e00f 1 0 0 1c 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 285c6 2c4 c 0 38 8 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3d7a4 10 0 0 38 8 8c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a24 34 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21982 446 17 0 c 8 114 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3d9cf 10 0 0 c 8 114 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e021 292 9 0 28 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e02a 266 0 0 28 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e089 1f5 0 0 28 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 27bdb 1c8d 17 0 38 8 6bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3e895 11 0 0 38 8 6bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3eadf ab 0 0 38 8 6bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36c3c f7e 17 0 18 8 3fc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3f743 134 0 0 18 8 3fc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 27613 d49 17 0 24 8 3c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3ffbd 3e 0 0 24 8 3c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 27b32 6d c 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 27b99 1d 0 0 18 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2005f 89 c 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 200d1 1d 0 0 18 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e307 b8 a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e310 ab 1 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 5e311 a9 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 5e34f 5f 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 286ee 57 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 286f6 4b 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f873 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e3c4 54 8 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e3cc 48 0 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e41d 8a 1a 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e433 6b 4 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 5e437 66 0 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 5e446 25 0 0 10 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 5e4ac 83 1a 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e4c2 64 4 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 5e4c6 5f 0 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 5e4d5 25 0 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 5e534 8e 10 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e53d 81 7 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e544 79 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e5c7 8e 10 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e5d0 81 7 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e5d7 79 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e65a 11 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 fd2d 17d c 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40019 e 0 0 8 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 123b9 319 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 401f7 e 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ff19 d2 c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40258 e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34cb9 8b c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4029c e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 fe82 b1 c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 402de e 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34da1 f6 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40327 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36772 e9 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 403bd e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 fc2f 11b c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40414 e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4043c e 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e670 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e686 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e6a0 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e6ba b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e6ca b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 310f2 1c6 e 0 4 0 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 310fe 1b6 2 0 4 4 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ = -STACK WIN 4 310ff 1b4 1 0 4 8 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ = -STACK WIN 4 31100 1b2 0 0 4 c 18c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 404 - ^ = -STACK WIN 4 9a72 7d c 0 14 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 404b7 e 0 0 14 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9b02 82 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9b18 5e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9b1f 56 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a5d 6e d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a63 64 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a6a 5c 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b9a0 32 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b13f 33 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b148 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e6da 33 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e6e3 26 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 355bc 2b 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 355c2 21 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e712 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e740 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e76e 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e79c 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f992 16f c 0 4 0 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f99e 15f 0 0 4 4 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f9ac 141 0 0 4 8 184 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e7ca 34 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e803 28 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9a51 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9ae4 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ad0 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b9d1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e18c aa 7 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e193 9f 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bdb5 8b 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1d07e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 365f6 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3594f 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17443 11 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 934b d6 e 0 0 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9359 c6 0 0 0 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 177c7 96 0 0 0 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b5c3 409 19 0 c 0 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b5d7 3ec 5 0 c 4 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 b5d8 3ea 4 0 c 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 b5dc 3e5 0 0 c c 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 5e830 4d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e836 43 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 365a5 2e 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 353ce 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38ae7 3d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34e64 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35406 36 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30d74 8b b 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30d7a 81 5 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 30d7e 7c 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 30d7f 7a 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 baa1 6c a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 baa7 62 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 baab 5d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 be01 3e c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 407a9 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10111 65 c 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 407c5 4 0 0 c 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34d41 5a c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 407e1 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bdb6 3e c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 407fd 4 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b9ef 6c c 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40817 4 0 0 c 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10f32 39 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40833 4 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9a09 3b c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4084f 4 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 325bc f6 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40892 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e882 11 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12bb6 69 1d 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12bd3 48 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10ef8 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e898 2c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e8c9 c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e8da c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e8eb 57 9 0 c 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e8f4 4a 0 0 c 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e947 6f 6 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e94d 65 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e976 b 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e9bb 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 abc1 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e9db c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3611e c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5e9ec 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ea06 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ea20 100 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ea29 f3 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ea9d 74 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39469 2b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5eb25 2e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5eb58 97 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5eba8 43 0 0 14 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cdd8 5b 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ccdc 122 8 0 10 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cd12 dd 0 0 10 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cd13 db 0 0 10 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cc8b 66 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cc93 5a 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34932 a4 f 0 c 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3493b 97 6 0 c 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 34941 90 0 0 c 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 34976 5d 0 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5ebf4 55 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ebfd 48 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ebfe 46 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ec4e 1e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34b69 1a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ec71 3a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 349d8 29d c 0 20 8 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40a26 16 0 0 20 8 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f7a0 191 c 0 1c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f7ac 181 0 0 1c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 2f7b9 12c 0 0 1c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 2f7ca 118 0 0 1c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 34b8f 25 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 abde 58 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 abe4 4e 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 abeb 46 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 c170 29 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11296 24 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1129c 1a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ecb0 91 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ecfc 41 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ed46 8c 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ed8d 41 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5edd7 6a 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5eddd 60 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5edde 5e 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5ee15 1d 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 e477 a3 c 0 4 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40b63 e 0 0 4 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1fcff 64 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e4b9 26a 17 0 10 8 46c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40c62 17 0 0 10 8 46c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 111da 31 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae65 4a c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ae6b 21 6 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ae71 1a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1fb26 52 14 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ee46 98 16 0 10 0 120 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9f81 31 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5eee3 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5eef0 3b 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14c3c 1d2 1f 0 c 0 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14c50 1b5 b 0 c 4 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ = -STACK WIN 4 14c5a 1aa 1 0 c 8 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ = -STACK WIN 4 14c5b 1a8 0 0 c c 238 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 576 - ^ = -STACK WIN 4 1af1 1fe c 0 c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c8c e 0 0 c 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ef47 9a e 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ef53 8a 2 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5ef54 88 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 5ef55 86 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 b3d5 146 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40cf3 e 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40d2a e 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b4cf cc 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b4d8 bf 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b503 86 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e43d 34 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5efe6 51 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5efec 47 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1fcc1 39 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1fcc7 2f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ada0 76 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ada8 6a 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 ada9 68 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 12ade 106 1a 0 4 0 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12aef 27 9 0 4 4 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12af8 1d 0 0 4 8 130 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 be89 b2 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40d78 e 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35f78 b6 c 0 10 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40da4 e 0 0 10 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9fb5 5f c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40dd0 e 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bc69 5f c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40e00 e 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f03c 1ce c 0 c 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f1bf e 0 0 c 8 50 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f229 203 c 0 10 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f3e0 e 0 0 10 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e000 136 c 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40e66 e 0 0 14 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ac88 b6 c 0 10 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40e92 e 0 0 10 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f449 1cb c 0 c 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f5c9 e 0 0 c 8 4c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f631 130 c 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f72a e 0 0 14 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ae4b 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1d4f 23 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b6a1 31 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1d77 9a b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1d81 8c 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1d82 8a 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1dcf 3c 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 3145b 88 d 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31463 7c 5 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 31464 7a 4 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 31468 75 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1269f 52 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 126a7 46 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f781 db c 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f78d cb 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f7e8 64 0 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 313ec d5 e 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 313fa c3 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31439 78 0 0 10 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f88a 80 8 0 14 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f90f 13f c 0 18 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5f9fa 4 0 0 18 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fa2d 1e 0 0 18 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 312e5 119 c 0 1c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40faa 4 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 40fe6 4 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c664 30b 8 0 8 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c686 2db 0 0 8 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c6b1 2ad 0 0 8 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f0d4 295 12 0 20 0 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f0e0 285 6 0 20 4 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ = -STACK WIN 4 2f0e5 27f 1 0 20 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ = -STACK WIN 4 2f0e6 27d 0 0 20 c 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 100 - ^ = -STACK WIN 4 5fa85 f5 11 0 1c 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fa8e e8 8 0 1c 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 5fa8f e6 7 0 1c 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 5fa96 de 0 0 1c c 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 5fb7f a1 c 0 1c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fc02 9 0 0 1c 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fc39 36 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fc51 1a 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fc74 72 8 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fc7c 66 0 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fceb de b 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fcf4 d1 2 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5fcf5 cf 1 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5fcf6 cd 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 5fdce 6e 8 0 1c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fdd6 62 0 0 1c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fe41 46 8 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fe8c 88 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5fed6 2f 0 0 8 4 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ff19 60 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ff7e 41 9 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ff87 25 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ffc4 41 9 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 5ffcd 25 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6000a 60 b 0 8 0 8c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6006f 5e 9 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6007b 4e 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6008a 3d 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 600d2 2f8 c 0 10 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 600db 2eb 3 0 10 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 600de 2e7 0 0 10 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 6013a 28a 0 0 10 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 f182 110 1b 0 8 0 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f193 f6 a 0 8 4 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f19d eb 0 0 8 8 654 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31db9 55 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31ddd 2a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ad29 4d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ad46 2a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ad7b 24 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b2d0 3aa 18 0 4 0 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b2e1 37f 7 0 4 4 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ = -STACK WIN 4 b2e7 378 1 0 4 8 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ = -STACK WIN 4 b2e8 376 0 0 4 c 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1160 - ^ = -STACK WIN 4 112d5 1d5 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11419 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 359b7 29d 26 0 10 0 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 359cf 27c e 0 10 4 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ = -STACK WIN 4 359dc 26e 1 0 10 8 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ = -STACK WIN 4 359dd 26c 0 0 10 c ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 244 - ^ = -STACK WIN 4 301af 196 c 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 301bb 186 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 301e5 152 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 12803 1c9 c 0 10 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1280f 1b9 0 0 10 4 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 12839 185 0 0 10 8 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 1283d 180 0 0 10 c 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 84 - ^ = -STACK WIN 4 f9e5 37d c 0 20 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4171b 4 0 0 20 8 6c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41748 48 0 0 20 8 6c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c2d3 8f e 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c2dc 7a 5 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2c2dd 78 4 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2c2e1 73 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 603cf bc 1c 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 603e3 91 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 603ea 89 1 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 603eb 87 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 60499 35e 17 0 8 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 607cb 30 0 0 8 8 274 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60811 e9 1c 0 14 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60822 cf b 0 14 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 60826 ca 7 0 14 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 6082d c2 0 0 14 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 14eea 6e 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 212f1 6e 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21363 24 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 214e3 2b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 217ea 213 a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 217f3 206 1 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 217f4 204 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30789 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 608ff e9 9 0 10 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60908 dc 0 0 10 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 302ed 36 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3039b 33 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21ba5 1d5 c 0 20 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 418d1 3f 0 0 20 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 609ed 5f 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60a02 46 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60a51 55 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35dca 172 11 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35dd6 162 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 35ddb 15c 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 35e0c 11d 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 a427 40 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fa46 42 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fa4e 36 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e0c7 19e 31 0 10 0 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e0df 17d 19 0 10 4 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 1e0e9 172 f 0 10 8 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 1e0f8 162 0 0 10 c 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 35340 bd f 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3534e a6 1 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 3534f a4 0 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 35370 e 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 60aab 44 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 392b5 27 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60af4 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60b1c 3f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60b60 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 60b6f 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60b97 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60bbf f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2f3a4 86 8 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f3aa 7c 2 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2f3ab 7a 1 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2f3ac 78 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1a1cf 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1500c 90 e 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1501a 7b 0 0 0 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ac85 28 0 0 0 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1930f 29e 1a 0 1c 0 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 19376 228 0 0 1c 4 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 19377 226 0 0 1c 8 248 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16f8e 11 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2dfa0 41 6 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60bd3 95 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60bd9 8b 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60bda 87 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 309e1 5f 12 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 309f3 3a 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1cd34 82 17 0 4 8 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41b32 7 0 0 4 8 e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e16 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ae17 4a 9 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ae20 3d 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e50 97 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1eee 2bc c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21af 7 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f1d 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16f83 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1df77 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f08 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1cf5b b6 9 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1cf64 ab 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14af2 1d1 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14afb 1c4 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 14b23 192 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 14b42 177 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 33478 b4 10 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33481 a7 7 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33488 9f 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f0f4 a5 11 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f105 90 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 f132 59 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 101be 59 9 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 101c7 4c 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 329d9 159 15 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 329e2 14c c 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 329e3 14a b 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 329ee 13e 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 305f6 6d 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 305ff 48 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9920 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 60c75 30 8 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21cc 3c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 220f 10c 16 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 221a fd b 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 221e f8 7 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2225 f0 0 0 14 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 60caa 49 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60cf8 49 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60d00 3d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60d46 e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ae2a 1c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60d58 aa 9 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60d61 9d 0 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60dbf 29 0 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60e13 61 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9e01 6f c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41c56 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3593f b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9e79 73 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41c70 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bf9d b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bccf 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32259 57 c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41c8a 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a5dc 5d c 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41ca4 4 0 0 8 8 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c8ed 62 13 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60e79 6a 15 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60e8a 50 4 0 8 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60e8e 4b 0 0 8 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60ee8 35 6 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60f22 141 19 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 60f36 129 5 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 60f37 127 4 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 60f3b 122 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 352d9 68 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21765 48 8 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61068 43 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61071 36 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 303d0 72 f 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 303de 60 1 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 303df 5c 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 303e9 30 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 12c23 13f c 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 41dcc 10 0 0 4 8 60 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 610b0 2b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 610e0 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6111b 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61155 2c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61186 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 611c0 45 8 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6120a 12b 9 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61212 11f 1 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61213 11d 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15199 40 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1519f 36 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 194dd 314 b 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 194e6 307 2 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 194e7 305 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 194e8 303 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 19805 8b9 26 0 18 0 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1981c 899 f 0 18 4 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ = -STACK WIN 4 1981d 897 e 0 18 8 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ = -STACK WIN 4 1982b 888 0 0 18 c 1d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 480 - ^ = -STACK WIN 4 19513 218e 17 0 30 8 a18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 43025 4 0 0 30 8 a18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1e017 2eb 0 0 30 8 a18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2332 30 5 0 28 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12cb0 e7 a 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12cb6 dd 4 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12cba d8 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12d56 44 9 0 4 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12d5f 37 0 0 4 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37945 44 9 0 4 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3794e 37 0 0 4 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c338 91 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c341 84 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2c344 80 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2c373 33 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 61351 17 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ddd6 33f f 0 30 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 43374 14 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 434b2 17 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 434e5 60 0 0 30 8 a8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2367 30 5 0 28 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6136d ec b 0 8 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61376 df 2 0 8 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 61377 dd 1 0 8 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 61378 db 0 0 8 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 6147e 2fa f 0 8 8 b4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61723 e 0 0 8 8 b4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3965a 77 c 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39666 67 0 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 395d8 57 c 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 395e4 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c1e7 127 c 0 c 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 435d2 e 0 0 c 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f89 ac 9 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12f92 9f 0 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 12fa9 7d 0 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 12faa 7b 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 132ee 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 61799 148 c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 617fd e 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92ea 6d c 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92f0 63 6 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 92f6 5c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2470 32 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16fb4 4f c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 436ca 11 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61901 2d 6 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e0df 33 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e0e5 29 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 176db 28 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61933 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6195c 24 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30445 1c1 e 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30450 1b2 3 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 30453 1ae 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 3047d 17d 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 3053e 73 10 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30544 69 a 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 30545 67 9 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 3054e 5d 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 e275 3c7 c 0 c 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 437f5 10 0 0 c 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 438be 4a 0 0 c 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 df9e f2 13 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 dfac db 5 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 dfb0 d6 1 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 dfb1 d4 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 31d8e f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e074 67 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e07c 5b 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 114f8 5c 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a2ce 6aa 17 0 34 8 2d0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a834 36 0 0 34 8 2d0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9ef1 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b829 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b82f 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13140 b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13149 a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c05e 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10086 a7 f 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1008f 9a 6 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10095 93 0 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e30f b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e318 a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bfad 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e8b7 a4 f 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e8c0 97 6 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e8c6 90 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e995 b3 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e99e a6 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 24a7 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2540 e6 c 0 c 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2610 b 0 0 c 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36696 e9 c 0 10 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 36759 b 0 0 10 8 44 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 952a 188 c 0 14 8 74 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 951a b 0 0 14 8 74 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 239c 98 c 0 8 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2432 b 0 0 8 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fb52 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61985 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 619fc 6b c 0 c 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61a61 b 0 0 c 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 95f9 93 f 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9600 88 8 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 9604 83 4 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 9608 7e 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2cc09 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a6a9 ae b 0 10 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a6b2 a1 2 0 10 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 a6b3 9f 1 0 10 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 a6b4 9d 0 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 1320c 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13218 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12e1d 6d 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12e25 61 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ca47 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ca53 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e93f 6a 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 e947 5e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ea1b 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ea27 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a05d 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2442 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61a81 6a 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61a89 5e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61af0 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61afc 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 308ad 6d 8 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 308b5 61 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33609 19f 16 0 1c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33614 190 b 0 1c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 33615 18e a 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 3361f 183 0 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 61b64 39 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61b6a 2f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1746c 23 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17499 ef 15 0 0 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 174a6 e0 8 0 0 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 174a7 de 7 0 0 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 174ae d6 0 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 f1fa 76 18 0 0 0 4c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17459 10e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43ee5 e5 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1efce 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 61ba2 162 11 0 4 0 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61bb3 148 0 0 4 4 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ = -STACK WIN 4 61bec 107 0 0 4 8 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ = -STACK WIN 4 61bed 103 0 0 4 c d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 220 - ^ = -STACK WIN 4 61d3f 2b9 1f 0 c 0 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 61d53 29c b 0 c 4 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ = -STACK WIN 4 61d5e 290 0 0 c 8 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ = -STACK WIN 4 61dee 1c7 0 0 c c 26c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 628 - ^ = -STACK WIN 4 61ffd 408 1a 0 c 0 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62017 3e5 0 0 c 4 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 620a4 353 0 0 c 8 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6240a 64 9 0 8 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62413 3d 0 0 8 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62473 42 8 0 4 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 624ba 2be 27 0 c 0 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 624d1 29e 10 0 c 4 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ = -STACK WIN 4 624d4 29a d 0 c 8 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ = -STACK WIN 4 624e1 28c 0 0 c c 22c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 564 - ^ = -STACK WIN 4 17f41 141 13 0 8 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17f52 127 2 0 8 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 17f53 125 1 0 8 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 17f54 123 0 0 8 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 6277d 59 b 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62788 4a 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 627db 19f b 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 627e4 192 2 0 1c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 627e5 190 1 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 627e6 18e 0 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6297f 59 b 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6298a 4a 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ebb1 4ac 21 0 4 0 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ebc2 492 10 0 4 4 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ = -STACK WIN 4 1ebc3 490 f 0 4 8 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ = -STACK WIN 4 1ebd2 480 0 0 4 c 2c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 720 - ^ = -STACK WIN 4 629dd 4e 9 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 629e6 41 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 629f4 30 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 629f5 2e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 12980 8e c 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 129f9 b 0 0 c 8 34 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fc00 5f 12 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fc12 3a 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 c108 4b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a793 44 8 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62a30 36 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62a6b 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 c058 9f c 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 44733 c 0 0 4 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ce03 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21435 38 8 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9728 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 3970d 26 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62aa5 26 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39732 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 328f7 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12a09 58 16 0 10 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12a1f 3e 0 0 10 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12a4b 6 0 0 10 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62ad0 7a 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62ad9 6d 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62af6 4b 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4479d a2 15 0 4 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 447ae 88 4 0 4 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 447b2 81 0 0 4 8 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62b4f a8 c 0 4 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62be6 4 0 0 4 8 54 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62c19 7e e 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62c25 69 2 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 62c26 67 1 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 62c27 65 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 12d9f 10b c 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 448d9 a 0 0 0 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9740 4f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9bc5 a7 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9bcb 9d 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9bcc 9b 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 136d7 cc c 0 4 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13771 7 0 0 4 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62c9c 68 8 0 14 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62d09 3a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fa7a 53 9 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fa83 46 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c0e6 6f c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c151 14 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c082 71 c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c08e 1e 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62d48 2f 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62d4e 25 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ffcf b8 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ffe2 97 0 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fe84 73 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fe8b 68 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ff16 6f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fed7 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 32992 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 211cd 86 7 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 211d3 6d 1 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 211d4 6b 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b086 82 7 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b08d 68 0 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2bff8 39 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30062 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30a62 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c02c 28 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cba2 8e a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cbaa 6e 2 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2cbab 6c 1 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2cbac 6a 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2bfd6 23 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2117d 56 9 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21186 49 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12723 43 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 21130 4d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62d7c 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b26e 57 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62dc3 28 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62df0 3f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62e34 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10637 22 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 c1e0 e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 62e62 97d 17 0 4 8 684 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63421 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6362b 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 636d3 4 0 0 4 8 684 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ffaf 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63999 a9 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 639a2 9c 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 639a3 9a 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 639a4 98 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 63a47 92 a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63a50 85 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63a51 83 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63ade 115 c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63ae5 10a 5 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 63ae6 108 4 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 63aea 103 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 63bf8 127 d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63bfe 11d 7 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 63bff 11b 6 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 63c05 114 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 63d24 3b 6 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63d2a 31 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63d3d 1d 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63d64 b4 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63d6d a7 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 63d6e a5 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 63d6f a3 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 63e1d cd 11 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63e2e b3 0 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63eef 9c a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63ef8 8f 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63ef9 8d 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63f90 cd 11 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 63fa1 b3 0 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64062 af b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6406b a2 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6406c a0 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6406d 9e 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 64116 94 a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6411f 87 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64120 85 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 641af b4 b 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 641b8 a7 2 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 641b9 a5 1 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 641ba a3 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 64268 df 15 0 8 0 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64279 c5 4 0 8 4 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6427d c0 0 0 8 8 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6434c 9c a 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64355 8f 1 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64356 8d 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 643ed d6 15 0 8 0 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 643fe bc 4 0 8 4 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64402 b7 0 0 8 8 42c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 644c8 195 c 0 14 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6452a e 0 0 14 8 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64679 19e e 0 18 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64685 18e 2 0 18 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 64686 18c 1 0 18 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 64687 18a 0 0 18 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 6481c 37 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64858 2c5 9 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64861 2b8 0 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6489e 24c 0 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64b47 83 9 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64b50 76 0 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64bcf a8 20 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64be7 87 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 64beb 82 4 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 64bef 7d 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 64c7c 112 17 0 8 0 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64c93 f2 0 0 8 4 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64cf5 8c 0 0 8 8 11c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64d93 6b d 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64da0 5a 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64dc2 37 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64e03 22 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64e2a 156 11 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64e38 13f 3 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64e3b 13b 0 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64f85 c9 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 64f8b bf 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 64f8c bd 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 64fba 8e 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 65053 bc 11 0 c 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65064 a2 0 0 c 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 6508f 73 0 0 c 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 65090 71 0 0 c c 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 65114 92 17 0 c 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6512b 72 0 0 c 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 651ab 86 b 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 651b6 77 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 651f5 32 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65236 209 13 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65248 1f3 1 0 c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 65249 1f1 0 0 c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 652a3 9b 0 0 c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 65444 72 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6544a 68 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6547f 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 654bb 72 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 654c1 68 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 654f6 32 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65532 45 10 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6553b 38 7 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65542 2e 0 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6557c 146 a 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65585 139 1 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 65586 137 0 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 655ad 10f 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 656c7 c2 d 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 656d3 b2 1 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 656d4 b0 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6578e f7 11 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65799 c4 6 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6579e be 1 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6579f bc 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6588a 84 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65892 78 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65893 76 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 658aa 5e 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65913 84 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6591b 78 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6591c 76 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65933 5e 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6599c b3 15 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 659a5 a6 c 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 659b0 9a 1 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 659b1 98 0 0 8 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 65a54 2a9 d 0 8 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65a5d 29c 4 0 8 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65a61 297 0 0 8 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 22128 9e a 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 22131 91 1 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 22132 8f 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65d02 85 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65d0a 79 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65d0b 77 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65d22 5f 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 65d8c 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65da4 9a 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65dac 8e 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65dc4 74 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65e43 303 b 0 8 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 65e4c 2ec 2 0 8 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 65e4d 2ea 1 0 8 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 65e4e 2e8 0 0 8 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6614b a6 f 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66159 94 1 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 6615a 92 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 6618c 5f 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 661f6 85 9 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 661fe 79 1 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 661ff 77 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 66216 5f 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 66280 d4 10 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6628b c5 5 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66290 bf 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66359 6a 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6636c 53 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66370 4e 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 663c8 2ec f 0 8 8 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6665c 1c 0 0 8 8 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66682 b 0 0 8 8 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6677d ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66801 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66871 bc c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66918 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66949 ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 669cd 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66a41 bc c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66ae8 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66b19 ba c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66b9d 3b 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66c11 c3 c 0 c 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66cbf 1a 0 0 c 8 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66cf1 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66d09 19d b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66d12 190 2 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 66d13 18e 1 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 66d14 18c 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 66eab 93 a 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 66eb3 87 2 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 66eb4 85 1 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 66eb5 83 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 66f43 71c 17 0 4 8 ec 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67093 11 0 0 4 8 ec 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 675f4 11 0 0 4 8 ec 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67695 7a 13 0 8 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67714 114 17 0 8 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 677e9 11 0 0 8 8 e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67849 145 17 0 8 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67941 11 0 0 8 8 e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f609 58 13 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 679a9 53 13 0 4 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67a01 44 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67a4a df 16 0 10 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67a5b c5 5 0 10 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 67a5c c3 4 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 67a60 be 0 0 10 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 28b87 ad 21 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 28b95 9b 13 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 28ba8 87 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ae5e 85 15 0 8 0 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ae6f 6b 4 0 8 4 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ae73 66 0 0 8 8 cc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67b2e 3d 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67b70 57 c 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67b77 4c 5 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 67b7b 47 1 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 67b7c 45 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1143f 60 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11445 56 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f5a6 197 11 0 8 0 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f5b7 179 0 0 8 4 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f5ca 15f 0 0 8 8 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 132f9 54 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13304 45 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13305 43 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67bcc 231 f 0 8 8 9c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67dd6 2c 0 0 8 8 9c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67e19 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67e35 17e c 0 14 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67e3e 171 3 0 14 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 67e41 16d 0 0 14 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1146a 90 a 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11470 86 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11474 81 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6802b 8e 9 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68034 81 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f26e 432 17 0 c 8 2b4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1f571 50 0 0 c 8 2b4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 680be 42e c 0 c 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68496 4a 0 0 c 8 50 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 13353 406 17 0 c 8 2ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1366c 45 0 0 c 8 2ac 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 28c38 1099 17 0 24 8 2e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 29b93 127 0 0 24 8 2e4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68509 78 6 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6850f 6c 0 0 24 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68538 3b 0 0 24 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35bb0 1fe 17 0 c 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 44db3 55 0 0 c 8 254 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68586 1fe 17 0 c 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68734 55 0 0 c 8 254 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 687a1 2ab 1c 0 14 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 687bd 286 0 0 14 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ = -STACK WIN 4 68828 217 0 0 14 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ = -STACK WIN 4 68867 1d7 0 0 14 c 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 288 - ^ = -STACK WIN 4 2cf9b 28d f 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cfa8 27c 2 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2cfa9 27a 1 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2cfaa 278 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2cf60 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68abf 2ed 11 0 10 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68ac8 2e0 8 0 10 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 68acf 2d8 1 0 10 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 68ad0 2d6 0 0 10 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 68db1 10d 9 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68dba 100 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68e39 80 0 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68f11 148 8 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68f3e 115 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 68f75 dd 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6905d 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 357d5 b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2080d 5f7 11 0 c 0 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2081e 5dd 0 0 c 4 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2083d 5b0 0 0 c 8 24c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31b99 1f2 7 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31ba0 1e7 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 31bcf 1ac 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 31bd0 1aa 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 20799 e2 e 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 207a1 d6 6 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 207a7 cf 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 207d8 7d 0 0 10 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1fb88 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6907b 199 9 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69084 18c 0 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 690b9 156 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 690ba 154 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 69218 17a 9 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69221 16d 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 692b0 da 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69395 3de 16 0 8 0 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 693a6 3c4 5 0 8 4 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ = -STACK WIN 4 693aa 3bf 1 0 8 8 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ = -STACK WIN 4 693ab 3bd 0 0 8 c 230 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 568 - ^ = -STACK WIN 4 69778 1b3 9 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69781 1a6 0 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 697b6 170 0 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 697b7 16e 0 0 4 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 69930 2ca 9 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69939 2bd 0 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69983 271 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e61c 39d a 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e625 390 1 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2e626 38e 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2e63e 372 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 20d14 3ab b 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 20d1d 39e 2 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 20d1e 39c 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 20d1f 39a 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2d2af 13d 9 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2d2b8 130 0 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2d2de 106 0 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2d2df 104 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 69bff fd c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69ce0 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69d19 111 c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69e0e 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69e49 fd c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69f2a 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 69f61 10f c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a054 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a091 48 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a099 3c 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a0de 1d 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e8b2 10f c 0 c 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 453fe 21 0 0 c 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a100 13c c 0 10 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a220 21 0 0 10 8 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a259 fc c 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a339 21 0 0 8 8 38 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a371 172 a 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a37a 167 1 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 6a37b 165 0 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 6a4e8 11 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6a4fe c7 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6a5ca 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6a60d a4 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a613 9a a 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a614 98 9 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a61b 90 2 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a6b6 d0 10 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a6bc c6 a 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a6bd c4 9 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a6c4 bc 2 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6a78b 66 8 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a7b8 33 0 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a7fb 60c e 0 8 0 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6a807 5fc 2 0 8 4 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 6a808 5fa 1 0 8 8 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 6a809 5f8 0 0 8 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 6aebf 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6aeed 2d 8 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6af1f 55 8 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6af53 1d 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6af79 52 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6afad 1a 0 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6afd0 71 9 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6afd8 65 1 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6afd9 63 0 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6aff2 49 0 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 6b046 41 8 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b08c 57 8 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b0e8 2e 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b11b 2e 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b14e 35 8 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b188 35 8 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b1c2 57 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b21e 3c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b25f 1c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2cb03 69 8 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b280 72 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e44a 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2e450 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b2f7 28 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b2fd 1e 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2afc9 cc e 0 14 0 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2afd6 bb 1 0 14 4 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2afd7 b9 0 0 14 8 70 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ca9f 111 f 0 10 0 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2caac 100 2 0 10 4 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 2caad fe 1 0 10 8 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 2caae fc 0 0 10 c 78 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 6b324 35 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b35e 29 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b38c 67 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b394 5b 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b3f8 6f c 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b404 5f 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b46c 19d c 0 c 8 5c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b5b5 48 0 0 c 8 5c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b629 55 8 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b631 49 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b683 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2146c c 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6b694 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1301e 22 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b6a3 53 6 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b6a9 49 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17190 c4 13 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1719f b1 4 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 171a2 ad 1 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 171a3 a9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 2bf01 c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1305f c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b6fb 23 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a644 35 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a675 38 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 300a9 33 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 300af 29 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 967c 12f c 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9684 123 4 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9688 11e 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b723 39 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b729 2f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 130a6 42 e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 130ac 38 8 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 130b4 2f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15350 124 16 0 14 0 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1535e 10d 8 0 14 4 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 15362 108 4 0 14 8 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 15366 103 0 0 14 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 6b761 3f 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b76a 32 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1530d 47 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 19aaa 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a9d9 3a 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15229 170 e 0 10 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15232 163 5 0 10 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 15233 15f 4 0 10 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 15237 15a 0 0 10 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 162db ef b 0 1c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 162e2 e4 4 0 1c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 162e6 df 0 0 1c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1529b af 8 0 3c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 152a1 a5 2 0 3c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 152a2 a3 1 0 3c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 152a3 a1 0 0 3c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1a86f 227 21 0 28 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1a878 21a 18 0 28 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1a879 216 17 0 28 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1a890 1fe 0 0 28 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 15921 ab5 45 0 c 0 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15958 a75 e 0 c 4 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ = -STACK WIN 4 15965 a67 1 0 c 8 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ = -STACK WIN 4 15966 a65 0 0 c c 3dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 996 - ^ = -STACK WIN 4 1545c 910 17 0 4 8 2e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 45f23 e 0 0 4 8 2e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11210 83 9 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11219 76 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1123b 57 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b7a5 32f 1d 0 4 0 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6b7bd 2c9 5 0 4 4 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 6b7be 2c7 4 0 4 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 6b7c2 2c2 0 0 4 c 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 2fe16 84 3e 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fe54 1f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30e9a a7 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30ea1 9c 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 30ea2 9a 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 30ea3 98 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2fd92 73 9 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fd9b 66 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fdb4 2a 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bb0f 51 9 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bb17 45 1 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bb18 43 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fd4c 41 8 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2fd54 35 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30f21 73 9 0 14 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30f2a 66 0 0 14 4 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30f43 2a 0 0 14 8 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38653 18e 2e 0 14 0 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38667 171 1a 0 14 4 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ = -STACK WIN 4 3866b 16c 16 0 14 8 e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ = -STACK WIN 4 38681 155 0 0 14 c e4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 236 - ^ = -STACK WIN 4 3835a 3f 6 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1612f 113 1f 0 4 0 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16147 f2 7 0 4 4 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1614e e8 0 0 4 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bb65 38 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bba2 28 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bbcf 6b 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bbd7 5f 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bc0c 29 0 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16763 87 16 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16772 74 7 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16778 6d 1 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16779 6b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16602 5b 13 0 4 0 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16613 41 2 0 4 4 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ = -STACK WIN 4 16614 3d 1 0 4 8 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ = -STACK WIN 4 16615 3b 0 0 4 c 20c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 532 - ^ = -STACK WIN 4 1aa2c ff 13 0 0 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1aa3d e7 2 0 0 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 1aa3e e4 1 0 0 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 1aa3f e0 0 0 0 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 169ea 5c 9 0 c 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 169f3 4f 0 0 c 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1691d 5c 8 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b335 67 e 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b33e 5a 5 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2b33f 57 4 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2b343 50 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16473 5f 10 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16479 47 a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1647a 45 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16483 3b 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1697f 66 7 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16996 47 0 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1699b 39 0 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c59b 87 c 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2c5a6 78 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2c5a7 76 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2c5be 5a 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2f70b 90 6 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f711 86 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f737 5f 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f695 bd 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f6ca 81 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f6ce 7b 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1642c 42 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1643c 2d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16440 28 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 168bb 52 11 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 168c3 46 9 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 168c4 44 8 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 168cc 3b 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 16396 91 a 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1639f 5c 1 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 163a0 5a 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 163bf 3a 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 165e9 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16b75 415 21 0 4 0 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16b8c 3f5 a 0 4 4 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ = -STACK WIN 4 16b95 3eb 1 0 4 8 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ = -STACK WIN 4 16b96 3e9 0 0 4 c 4a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1200 - ^ = -STACK WIN 4 164cd c4 c 0 0 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 46631 e 0 0 0 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b553 b8 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b55b ac 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2b57d 86 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2b57e 82 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 16662 f2 b 0 14 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1666b e5 2 0 14 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 1666c e3 1 0 14 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 1666d e1 0 0 14 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 16879 b7 f 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16884 a8 4 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 16888 a3 0 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 16a5c 79 0 0 10 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 16562 8d c 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 46678 4 0 0 8 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 167d7 9a c 0 10 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 466a9 4 0 0 10 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 15120 a1 c 0 c 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 466d4 4 0 0 c 8 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bc3f 63 c 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bc8a 4 0 0 0 8 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bcc1 a9 8 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bcc9 9f 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bcf0 77 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b38d 214 e 0 0 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b39b 1ff 0 0 0 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2b3dd 1b6 0 0 0 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 2b3de 1b4 0 0 0 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 6be06 7f 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6be09 7b 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6be41 42 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6be8a 33 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1204d 44 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12061 1c 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bec2 70 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bec8 66 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bec9 64 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bf37 105 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6bf3d fb 5 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6bf3e f9 4 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6bf42 f4 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6c041 167 10 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c04f 155 2 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c050 153 1 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c051 151 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c1ad 165 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c1c9 df 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c1cd da 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c317 f8 6 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c31d ee 0 0 24 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6c34d bd 0 0 24 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6c351 b6 0 0 24 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 6c414 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c42e 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c449 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c470 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c497 9a c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c4a2 83 1 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c4a3 81 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c4d1 52 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6c536 22 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c55d 30 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c592 50 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c598 42 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c599 40 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c5e7 3e 1a 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c601 20 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c62a 17b 15 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c639 168 6 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 6c63e 162 1 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 6c63f 15e 0 0 14 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 6c7a6 177 d 0 28 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c7ad 16c 6 0 28 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c7b3 165 0 0 28 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c922 177 d 0 28 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c929 16c 6 0 28 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6c92f 165 0 0 28 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6ca9e 195 10 0 18 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6caa7 188 7 0 18 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6caae 180 0 0 18 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6cabd 170 0 0 18 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6cc38 198 10 0 18 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6cc41 18b 7 0 18 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6cc48 183 0 0 18 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6cc57 173 0 0 18 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 80 - ^ = -STACK WIN 4 6cdd5 115c 1b 0 14 0 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6cde9 1144 7 0 14 4 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 6cded 113f 3 0 14 8 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 6cdf0 113b 0 0 14 c 254 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 604 - ^ = -STACK WIN 4 6df34 115c 1b 0 14 0 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6df48 1144 7 0 14 4 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 6df4c 113f 3 0 14 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 6df4f 113b 0 0 14 c 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 335b7 1d 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f093 357 13 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f09f 347 7 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6f0a2 343 4 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6f0a6 33e 0 0 18 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 6f3ef a6 c 0 10 0 f8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f3fb 96 0 0 10 4 f8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f49a 104 19 0 8 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f4a8 ed b 0 8 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 6f4a9 eb a 0 8 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 6f4b3 e0 0 0 8 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 6f5a3 102 8 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f5aa f7 1 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6f5ab f5 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6f602 9d 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 6f6aa c5 1a 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f6bc af 8 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 6f6bd ad 7 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 6f6c4 a5 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 6f774 1c7 16 0 8 0 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f785 1ad 5 0 8 4 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 6f786 1ab 4 0 8 8 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 6f78a 1a6 0 0 8 c 220 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 552 - ^ = -STACK WIN 4 6f949 b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f959 12f 7 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f97d 107 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6f9f0 92 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fa8d 22 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fab4 1f 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fad8 19e 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fae0 192 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fb1d 153 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fc7b 61 8 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fc83 55 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fcdc e9 c 0 0 4 330 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fdca 66 c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fe04 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 189fc 28 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6fe51 65 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fe6d 44 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6fe6e 42 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6febb 5f c 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6ff09 4 0 0 c 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6ff39 148 15 0 18 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6ff4a 12e 4 0 18 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 6ff4e 129 0 0 18 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70086 27 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 700b2 25 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 700dc c0 13 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 700ed a6 2 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 700ee a4 1 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 700ef a2 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 701a1 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 701b9 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 701d1 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70245 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 70252 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7025f 149 17 0 10 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70362 4 0 0 10 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 703c9 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 703e7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70405 10c 17 0 c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 704cb 4 0 0 c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70531 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7054c 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70567 a3 19 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70578 89 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70579 87 7 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70580 7f 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 7060f 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70627 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7063f c6 13 0 c 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70650 ac 2 0 c 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70651 aa 1 0 c 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70652 a8 0 0 c c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 7070a 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70725 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70740 a8 19 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70751 8e 8 0 8 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70752 8c 7 0 8 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70759 84 0 0 8 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 707ed 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70805 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7081d 150 17 0 10 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70927 4 0 0 10 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70989 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 709a7 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 709c5 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ba6a 111 17 0 c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4677c 4 0 0 c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70a39 23 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70a42 16 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ba3c 29 9 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ba45 1c 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2da09 a0 12 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2da1a 86 1 0 c 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2da1b 84 0 0 c 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70a61 4f c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70a99 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2d9bd 4b c 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 467de 4 0 0 4 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70ad1 75 c 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70b3f c 0 0 8 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b355 6e c 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b3c1 c 0 0 4 8 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70b61 11b 1c 0 18 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70b72 101 b 0 18 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70b73 ff a 0 18 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70b7d f4 0 0 18 c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 70c81 39 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70cbf 38 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70cfc a7 13 0 8 0 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70d0d 8d 2 0 8 4 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 70d0e 8b 1 0 8 8 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 70d0f 89 0 0 8 c 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 70da8 58 8 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70db0 4c 0 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b10f 77 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b132 4f 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b13a 46 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 29ee3 70 d 0 8 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 29ef0 5f 0 0 8 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 46833 26 0 0 8 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1aff3 81 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 4687c 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1afd5 1f 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18c64 9a b 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18c6b 8f 4 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18c6f 8a 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70e05 1ef 17 0 2c 8 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 70fe7 12 0 0 2c 8 e0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71011 77 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7108d 4f 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 71090 4b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 71091 49 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 710e1 93 7 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 710e8 88 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71107 68 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71191 164 17 0 10 8 d0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 712e3 17 0 0 10 8 d0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b6d7 228 16 0 8 0 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 b6ec 20a 1 0 8 4 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1608 - ^ = -STACK WIN 4 b6ed 208 0 0 8 8 640 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1608 - ^ = -STACK WIN 4 71311 1cd 17 0 0 8 480 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 714d7 c 0 0 0 8 480 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 714f9 e9 17 0 4 8 128 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 715db c 0 0 4 8 128 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 715f9 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1ce32 125 17 0 14 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 468d9 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 468e9 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1cf25 1c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 35484 1c 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1dc7e 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1dd4d 9b 1c 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71604 a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71674 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 716c9 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1aeaa 73 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1ff5b 82 13 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 10fe1 95 c 0 10 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 46968 4 0 0 10 8 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71749 29c 17 0 20 8 d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7189d 11 0 0 20 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7199c 4 0 0 20 8 d8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71a1d 4a 16 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71a2b 33 8 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 71a2f 2e 4 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 71a33 29 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 92 - ^ = -STACK WIN 4 71a6c 51 1c 0 14 0 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71a7a 3a e 0 14 4 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 71a7e 35 a 0 14 8 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 71a88 2a 0 0 14 c 58 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 96 - ^ = -STACK WIN 4 71ac2 139 17 0 2c 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71be9 4 0 0 2c 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71c19 ae 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71ca8 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71ce9 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37c53 9a 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 469a3 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71d69 c2 19 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71d7a a8 8 0 10 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 71d7e a3 4 0 10 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 71d82 9e 0 0 10 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 71e30 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71ea4 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71ec7 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71eea 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71f64 56 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 71fbf 5c 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72020 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 720a0 107 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72188 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 721c9 78 8 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72269 12b 17 0 18 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7236f 4 0 0 18 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7237f 4 0 0 18 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 723c5 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 723e8 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7240b 13f 26 0 18 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72420 126 11 0 18 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 72421 124 10 0 18 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 72431 113 0 0 18 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 7254f 272 17 0 18 8 d4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72787 4 0 0 18 8 d4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 727e1 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72805 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72829 2d8 17 0 18 8 e8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72aa3 4 0 0 18 8 e8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72b21 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72b45 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72b69 151 17 0 1c 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72c86 4 0 0 1c 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72cd9 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72cff 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72d25 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72d4b 126 17 0 1c 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72e4c 4 0 0 1c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72e5c 4 0 0 1c 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72ea5 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72ecb 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72ef1 21 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72f17 c3 17 0 18 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72fbb 4 0 0 18 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 72ff9 22 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73020 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73044 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73068 172 17 0 14 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7314a 4 0 0 14 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 731c9 4 0 0 14 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73215 af 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 732a4 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 732e1 17b 17 0 18 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73326 4 0 0 18 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73432 4 0 0 18 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7348d 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 734b0 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 734d3 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 734f6 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73519 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7353d 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73561 ad 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 735db 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73629 9c 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73692 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 736e1 9a 17 0 4 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73748 4 0 0 4 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73799 107 17 0 10 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73854 4 0 0 10 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 738c1 89 13 0 8 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7394f b5 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 739d1 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b1f0 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73a21 82 18 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73aa8 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73b1c 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73b90 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73c0a 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73c84 ac 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73d11 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73d51 b5 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73de7 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73e21 e1 17 0 18 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73ee3 4 0 0 18 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73f21 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73f45 1f 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73f69 77 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 73fe5 75 13 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7405f 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 740d3 6b 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74143 b6 15 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74154 9c 4 0 4 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74158 97 0 0 4 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b18f 6e 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 741fe 5e 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74261 2e 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74294 90 12 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 742a5 76 1 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 742a6 74 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74329 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74341 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74359 67 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 743c5 11c 17 0 8 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74497 4 0 0 8 8 c4 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1af14 a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 469dd 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74501 67 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7456d a3 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 745dd 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74631 83 13 0 4 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1bc2b e4 17 0 8 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 469fe 4 0 0 8 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 746b9 c1 19 0 10 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 746ca a7 8 0 10 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 746ce a2 4 0 10 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 746d2 9d 0 0 10 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 7477f 7b 13 0 c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 747ff ae 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7487a 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 748c9 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7493d 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 749b1 e8 17 0 14 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74a7a 4 0 0 14 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74ab9 54 8 0 8 0 44 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74b12 6f 13 0 4 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74b86 c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 74b97 4d 8 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74be9 a0 b 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74bf2 93 2 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 74bf3 91 1 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 74bf4 8f 0 0 10 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 74c8e bd 11 0 8 0 408 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74c9f a3 0 0 8 4 408 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74e13 13d 11 0 4 0 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74e24 123 0 0 4 4 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74e74 79 0 0 4 8 4b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 74f87 135 17 0 8 8 c0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7507d 4 0 0 8 8 c0 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 750d9 c5 15 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 750ea ab 4 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 750ee a6 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 751a3 ac 17 0 c 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7521c 4 0 0 c 8 bc 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75271 b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b5c6 ca 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b616 17 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b61d f 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2000c 78 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 20012 3d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b58b 39 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b591 2f 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b592 2d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75280 1cc c 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75348 4 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 753b9 c 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75454 c 0 0 4 8 7c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75489 45 13 0 0 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 754d3 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 754e4 242 17 0 8 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 756a5 4 0 0 8 8 c8 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $ebp = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38211 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75749 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7576c 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7578a 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 757aa 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 757ca 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 757e8 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75809 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37ce1 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75827 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75842 84 16 0 14 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75853 6a 5 0 14 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 75857 65 1 0 14 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 75858 63 0 0 14 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 a459 b3 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d21d 15 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 cf52 136 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 cf63 111 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 cf7e f4 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d239 24 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 380ef d7 c 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 380f9 c9 2 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 380fa c7 1 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 380fb c5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 38063 f7 a 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3806c ea 1 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 3806d e8 0 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 380a9 65 0 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 d077 1a3 1e 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d088 189 d 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 d08f 181 6 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 d095 17a 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 38de8 204 19 0 18 0 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38df9 1ea 8 0 18 4 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 38dfd 1e5 4 0 18 8 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 38e01 1e0 0 0 18 c 214 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 540 - ^ = -STACK WIN 4 d262 16c 1d 0 10 0 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d277 14e 8 0 10 4 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ = -STACK WIN 4 d27e 146 1 0 10 8 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ = -STACK WIN 4 d27f 144 0 0 10 c 108 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 272 - ^ = -STACK WIN 4 758cb 9b 11 0 c 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 758dc 81 0 0 c 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75925 34 0 0 c 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7596b 166 21 0 18 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75981 47 b 0 18 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 7598b 3c 1 0 18 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 7598c 3a 0 0 18 c 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 276 - ^ = -STACK WIN 4 75ad6 9e 11 0 10 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75ae7 84 0 0 10 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75b30 37 0 0 10 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3632d 1a7 19 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3633e 18d 8 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 36342 188 4 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 36346 183 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 361ee 1ea 19 0 18 0 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 361ff 1d0 8 0 18 4 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 36203 1cb 4 0 18 8 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 36207 1c6 0 0 18 c 218 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 544 - ^ = -STACK WIN 4 2ec56 2cc 16 0 18 0 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ec67 2b2 5 0 18 4 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ = -STACK WIN 4 2ec68 2b0 4 0 18 8 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ = -STACK WIN 4 2ec6c 2ab 0 0 18 c 234 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 572 - ^ = -STACK WIN 4 75b79 333 16 0 18 0 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75b8a 319 5 0 18 4 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ = -STACK WIN 4 75b8b 317 4 0 18 8 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ = -STACK WIN 4 75b8f 312 0 0 18 c 23c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 580 - ^ = -STACK WIN 4 38a0c ad 15 0 14 0 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38a1d 93 4 0 14 4 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38a21 8e 0 0 14 8 10c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75eb1 191 21 0 14 0 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 75ec5 174 d 0 14 4 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 75ec6 172 c 0 14 8 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 75ed2 165 0 0 14 c 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 76047 83 11 0 c 0 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76058 69 0 0 c 4 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7606e 4f 0 0 c 8 224 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 760cf b 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a490 196 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a496 18c 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a497 18a 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a498 188 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 760df 2e5 11 0 3c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 760eb 2d5 5 0 3c 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 760ef 2cb 1 0 3c 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 760f0 2c9 0 0 3c c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 bfef 93 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 af4f 12e7 1d 0 1c 0 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 af64 12ce 8 0 1c 4 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ = -STACK WIN 4 af68 12c9 4 0 1c 8 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ = -STACK WIN 4 af6c 12c4 0 0 1c c 98 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 160 - ^ = -STACK WIN 4 763c9 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 763ef 107 1e 0 8 0 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76400 6b d 0 8 4 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1068 - ^ = -STACK WIN 4 7640d 5d 0 0 8 8 424 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1068 - ^ = -STACK WIN 4 1c48b 263 26 0 8 0 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1c4a3 ad e 0 8 4 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ = -STACK WIN 4 1c4ad a2 4 0 8 8 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ = -STACK WIN 4 1c4b1 9d 0 0 8 c 648 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1616 - ^ = -STACK WIN 4 764fb fe 18 0 4 0 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7650c e4 7 0 4 4 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76513 dc 0 0 4 8 140 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a415 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13038 2d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13070 2a 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 127b2 7 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 bf3d 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9f10 e2 6 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7668d a2 9 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76696 95 0 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76734 2b9 6 0 1c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7676f 27a 0 0 1c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 769f2 5c 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39200 157 15 0 c 0 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39211 13d 4 0 c 4 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39215 138 0 0 c 8 43c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76a53 195 1d 0 c 0 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76a6b 174 5 0 c 4 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 76a6f 16f 1 0 c 8 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 76a70 16d 0 0 c c 210 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 536 - ^ = -STACK WIN 4 76c59 b2 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76c5f a8 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 76c60 a6 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 76c61 a4 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 383cf 49 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1bbba ac b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1bbc5 9d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bf64 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2f041 131 11 0 c 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f052 117 0 0 c 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 2f06a ef 0 0 c 8 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 2f06b eb 0 0 c c a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 176 - ^ = -STACK WIN 4 2efb9 83 f 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2efc2 76 6 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2efc8 6f 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11562 17bb 2f 0 10 0 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1157f ee5 12 0 10 4 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 11582 19a f 0 10 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 11591 18a 0 0 10 c bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 39020 385 39 0 18 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39045 c8 14 0 18 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 39046 c6 13 0 18 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 39059 b2 0 0 18 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 76d1b 114 13 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76d2d fe 1 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76d2e fc 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76e34 3a 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76e3a 30 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b258 159 f 0 4 0 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b266 142 1 0 4 4 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1b267 140 0 0 4 8 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76e73 e22 23 0 c 0 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 76e84 d6c 12 0 c 4 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ = -STACK WIN 4 76e92 9ea 4 0 c 8 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ = -STACK WIN 4 76e96 9e5 0 0 c c 570 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1400 - ^ = -STACK WIN 4 77cf7 f4 1d 0 10 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77d0b d7 9 0 10 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 77d0f d2 5 0 10 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 77d14 cc 0 0 10 c 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 1bcfe f4 1c 0 10 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1bd12 d7 8 0 10 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 1bd16 d2 4 0 10 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 1bd1a cd 0 0 10 c 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1072 - ^ = -STACK WIN 4 15047 f9 7 0 14 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1505b e1 0 0 14 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1505c df 0 0 14 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77df0 2f 7 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1734f 4a a 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17358 3d 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17359 3b 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77e24 1a 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17f7d 3f 9 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17f86 32 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77e43 13f 16 0 c 0 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77e54 125 5 0 c 4 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ = -STACK WIN 4 77e58 120 1 0 c 8 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ = -STACK WIN 4 77e59 11e 0 0 c c 2a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 684 - ^ = -STACK WIN 4 2ae21 8d 1d 0 8 0 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ae3a 64 4 0 8 4 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ae3e 5f 0 0 8 8 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ac6c c8 10 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ac7a b1 2 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2ac7b af 1 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2ac7c ab 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2b95b af 10 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b969 98 2 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2b96a 96 1 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2b96b 94 0 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 2b883 c6 15 0 0 0 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2b8c4 7b 0 0 0 4 a8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 172de 74 10 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 172ea 64 4 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 172ee 5f 0 0 14 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ad98 b5 9 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ada1 a8 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2adb4 90 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77f87 60 9 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77f90 53 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77fec 2d5 1d 0 10 0 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 77ffd 2bb c 0 10 4 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ = -STACK WIN 4 78008 2af 1 0 10 8 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ = -STACK WIN 4 78009 2ad 0 0 10 c 440 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1096 - ^ = -STACK WIN 4 782c6 19a 15 0 14 0 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 782d7 15b 4 0 14 4 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ = -STACK WIN 4 782db 156 0 0 14 8 e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ = -STACK WIN 4 7838b a2 0 0 14 c e3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3652 - ^ = -STACK WIN 4 2a8fa 221 12 0 10 0 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a90b 1f9 1 0 10 4 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a90c 1f7 0 0 10 8 430 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37cfc 3ad 22 0 c 0 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37d14 38c a 0 c 4 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ = -STACK WIN 4 37d1d 382 1 0 c 8 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ = -STACK WIN 4 37d1e 380 0 0 c c 468 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1136 - ^ = -STACK WIN 4 7849b 22b 1d 0 c 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 784ac 211 c 0 c 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 784ad 20f b 0 c 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 784b8 203 0 0 c c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 38234 726 22 0 18 0 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38248 709 e 0 18 4 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 38249 707 d 0 18 8 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 38256 6f9 0 0 18 c dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 38958 2ac 33 0 38 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38970 28b 1b 0 38 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 3897a 280 11 0 38 8 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 3898b 26c 0 0 38 c c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 204 - ^ = -STACK WIN 4 786e5 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78703 1c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a8dc 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78724 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7873f 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7875a 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7877d 1e 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 388dc df f 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 388e7 d0 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 388eb cb 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38801 15f c 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3880c 150 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 3880d 14e 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 388be 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 387e1 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 787a0 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 787c0 82 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 787e7 29 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 787f2 1d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78847 389 16 0 14 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78858 343 5 0 14 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 78859 341 4 0 14 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 7885d 33c 0 0 14 c ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 78bd9 7e 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78bdf 74 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78c22 30 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3798e da 18 0 4 0 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3799f c0 7 0 4 4 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 379a6 b8 0 0 4 8 280 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78c5c 150 12 0 4 0 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78c6d 136 1 0 4 4 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 78c6e 134 0 0 4 8 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 78cb4 ea 0 0 4 c 148 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 336 - ^ = -STACK WIN 4 78db1 7c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78dd9 4c 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78ddd 47 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78e32 7c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78e5a 4c 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78e5e 47 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78eb3 c3 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78ef0 7e 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78ef3 7a 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78f7b 127 e 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 78f88 116 1 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 78f89 114 0 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 78fac f0 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 790a7 126 11 0 10 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 790b5 114 3 0 10 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 790b8 110 0 0 10 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 791d2 92 18 0 10 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 791e0 7b a 0 10 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 791e4 76 6 0 10 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 791ea 6f 0 0 10 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 ce53 73 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ce77 40 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ce7b 3b 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2d4ad 1ced 29 0 1c 0 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2d4c1 1cd0 15 0 1c 4 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ = -STACK WIN 4 2d4d5 1cbb 1 0 1c 8 de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ = -STACK WIN 4 2d4d6 1cb9 0 0 1c c de4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 3564 - ^ = -STACK WIN 4 79269 289 7 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79270 27e 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7928e 25e 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 374eb 220 1f 0 18 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 374fc 206 e 0 18 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3750a 1f7 0 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37787 e9 23 0 18 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3779d ca d 0 18 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 377aa bc 0 0 18 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 377d2 55 0 0 18 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 794fb 136 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7952d ff 0 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7952e fd 0 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79636 188 d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79641 179 2 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 79642 177 1 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 79643 175 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 37693 2ef a 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3769c 2e2 1 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 3769d 2e0 0 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 4acfb 1c3 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 cca8 3d3 13 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 ccb4 3c3 7 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 ccba 3bc 1 0 18 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 ccbb 3ba 0 0 18 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 110cb 48 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 110d1 3e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9915 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 797c3 17 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 127a7 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b7dc 39 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f540 24 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 797df 82 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79866 56 c 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79872 46 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 798c1 c4 13 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 798cf 67 5 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 798d0 65 4 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 798d4 60 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a1fb 2a0 13 0 18 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a20c 2c 2 0 18 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 a20d 2a 1 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 a20e 28 0 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 bd19 4ee 19 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 bd30 70 2 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 bd31 6e 1 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 bd32 48d 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 32cf3 1c3 1b 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32d04 1ae a 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32d07 1aa 7 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32d0e 1a2 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7998a 6d1 c 0 24 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 79991 6c6 5 0 24 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 79992 6c4 4 0 24 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 79996 6bf 0 0 24 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7a064 158 19 0 0 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a07d 138 0 0 0 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a095 11b 0 0 0 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 cfd4 281 1c 0 18 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 cfe8 264 8 0 18 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 cfec 25f 4 0 18 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 cff0 25a 0 0 18 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 12e76 244 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12e7c 23a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12e96 212 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a1cd 2fc 10 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a1d3 2f2 a 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7a1dd 2e7 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7a21d 2a6 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7a4ce 1e2 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a4d4 1d8 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a58b 81 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9bf8 87b 15 0 18 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 9c0c 85e 1 0 18 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 9c0d 85c 0 0 18 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 9c38 81d 0 0 18 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 32c7b 10b f 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 32c84 41 6 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32c85 3f 5 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 32c8a 39 0 0 20 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 a0d4 3c5 6 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a0da 3bb 0 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a0f1 387 0 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a6b5 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a6e2 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 35819 c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 34474 45 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a712 5c 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 336f6 3a 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33735 3b 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a773 7b e 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a779 74 8 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 7a77a 72 7 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 7a781 6a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 2f440 58 1c 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f44b 3b 11 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f45c 29 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a7f3 58 9 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a7fa 4d 2 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a81b 23 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 37834 11f 15 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3783c 113 d 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 3783d 111 c 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 3783e 10f b 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2f40d 7a d 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2f416 6f 4 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2f417 6d 3 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2f418 6b 2 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 7a850 5d 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a856 53 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a874 2c 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 124d1 109 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 124d7 ff 6 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 124dc f9 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 124dd f7 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 121de fc 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 121e1 f8 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bdd2 1bc 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bdd5 1b8 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bddb 1b1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a2d4 85 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a2dc 7c 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a8b2 ab 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a8b5 a7 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a962 da 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a968 cc 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7a969 ca 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7aa41 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7aa6b 25 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7aa95 302 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ee51 3c6 d 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ee57 3bc 7 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2ee5d 3b5 1 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2ee5e 3b3 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7ad9c 5d 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ad9f 59 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ada0 57 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c16a 58 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c16d 54 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2c16e 52 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12544 32 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a5c3 13c 15 0 10 0 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a5d4 bf 4 0 10 4 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 2a5d8 ba 0 0 10 8 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 2a615 6f 0 0 10 c 228 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 560 - ^ = -STACK WIN 4 12090 cb b 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12096 c1 5 0 1c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1209a bc 1 0 1c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1209b ba 0 0 1c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 14f5c 92 27 0 14 0 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14f83 62 0 0 14 4 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 14fbe 16 0 0 14 8 40c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 397f8 1e2 19 0 4 0 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39826 1a4 0 0 4 4 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39827 1a2 0 0 4 8 644 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 384db f1 15 0 c 0 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 384ec d7 4 0 c 4 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ = -STACK WIN 4 384f0 d2 0 0 c 8 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ = -STACK WIN 4 38518 a3 0 0 c c 29c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 676 - ^ = -STACK WIN 4 3440e 61 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34414 57 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7adfe 7c 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ae04 72 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ae7f de 2d 0 20 0 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ae9b b9 11 0 20 4 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 7ae9f b4 d 0 20 8 b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 7aeac a6 0 0 20 c b0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 7af62 72 7 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7afd9 70 1b 0 1c 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7aff4 4c 0 0 1c 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3472b 390 15 0 20 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34740 377 0 0 20 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34777 347 0 0 20 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3465d 1d3 43 0 20 0 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 34695 182 b 0 20 4 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ = -STACK WIN 4 3469c 17a 4 0 20 8 b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ = -STACK WIN 4 346a0 175 0 0 20 c b8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 192 - ^ = -STACK WIN 4 7b04e 66c 43 0 20 0 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7b086 1c3 b 0 20 4 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 7b08d 3aa 4 0 20 8 bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 7b091 1b6 0 0 20 c bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 196 - ^ = -STACK WIN 4 344bc 388 3c 0 18 0 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 344ea fe e 0 18 4 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ = -STACK WIN 4 344f7 f0 1 0 18 8 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ = -STACK WIN 4 344f8 ee 0 0 18 c 378 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 896 - ^ = -STACK WIN 4 7b6ca 404 3c 0 18 0 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7b6f8 fe e 0 18 4 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 7b705 f0 1 0 18 8 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 7b706 ee 0 0 18 c 420 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1064 - ^ = -STACK WIN 4 3414d 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 339dc 69 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 339e5 5c 0 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bad3 96 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bb13 4e 0 0 18 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bb6e e6 f 0 c 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bb7b d5 2 0 c 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7bb7c d3 1 0 c 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7bb7d cf 0 0 c c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7bc59 17d e 0 4 0 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bc65 168 2 0 4 4 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 7bc66 166 1 0 4 8 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 7bc67 164 0 0 4 c 274 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 7be1b 63 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7be24 56 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7be25 52 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7be83 c5 1d 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bef3 35 0 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 335d4 33 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33ec8 a54 4c 0 14 0 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33eef a20 25 0 14 4 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ = -STACK WIN 4 33efe a10 16 0 14 8 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ = -STACK WIN 4 33f14 9f9 0 0 14 c 508 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1296 - ^ = -STACK WIN 4 7bf4d fd 18 0 8 0 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7bf56 f0 f 0 8 4 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7bf64 dd 1 0 8 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7bf65 d7 0 0 8 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 7c04f 1d2 11 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7c058 1c5 8 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 7c059 1c3 7 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 7c060 1bb 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 7c86f 235 18 0 c 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7c887 1f0 0 0 c 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 7c8a5 1ce 0 0 c 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 7c8a6 1cc 0 0 c c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 44 - ^ = -STACK WIN 4 33fd3 1f2 25 0 18 0 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33fea 17a e 0 18 4 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ = -STACK WIN 4 33ff4 16f 4 0 18 8 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ = -STACK WIN 4 33ff8 16a 0 0 18 c 2bc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 708 - ^ = -STACK WIN 4 33a4a 8c9 30 0 20 0 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 33a6c 50 e 0 20 4 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ = -STACK WIN 4 33a70 4b a 0 20 8 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ = -STACK WIN 4 33a7a 578 0 0 20 c 258 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 608 - ^ = -STACK WIN 4 33775 3fb 38 0 18 0 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 3379f 308 e 0 18 4 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ = -STACK WIN 4 337a3 303 a 0 18 8 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ = -STACK WIN 4 337ad 2f8 0 0 18 c 2d8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 736 - ^ = -STACK WIN 4 c0ed 74 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17fc1 82 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 17fc8 7a 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 17fc9 78 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 17fca 76 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1805b 46 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38617 37 9 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 38620 13 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7caa9 a6 9 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cab1 9c 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cab2 98 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a557 9b e 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 a565 8b 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17395 78 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cb54 b5 1a 0 8 0 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cb6d 93 1 0 8 4 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ = -STACK WIN 4 7cb6e 8f 0 0 8 8 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ = -STACK WIN 4 7cba2 57 0 0 8 c 404 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 1036 - ^ = -STACK WIN 4 188fc 146 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18902 13c 1 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 18903 13a 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1892c 10c 0 0 14 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16ea9 130 f 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 16eb6 11f 2 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16eb7 11d 1 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 16eb8 11b 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 336b6 9d e 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 336c4 8b 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 336d0 7d 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 336dd 6f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cc2b 112 17 0 4 0 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cc42 f2 0 0 4 4 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cc60 d0 0 0 4 8 428 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cd42 7f 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cdc6 53 17 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cdcc 49 11 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cdd4 40 9 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cddd 36 0 0 4 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7ce1e 8d e 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ce30 76 0 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ce35 70 0 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 184dc db 12 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 184e6 cd 8 0 c 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 184e9 c9 5 0 c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 18504 ad 0 0 c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 7ceb0 9e d 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cebb 8f 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cebc 8d 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cebd 8b 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7cf53 2d 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 183fe 1fb 15 0 8 0 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1840f 1e1 4 0 8 4 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 18413 1dc 0 0 8 8 a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 1844e 196 0 0 8 c a4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 172 - ^ = -STACK WIN 4 3996f 176 1c 0 8 0 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 39980 15c b 0 8 4 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 39984 157 7 0 8 8 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 3998b 14f 0 0 8 c a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 1831e 16a b 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18328 15c 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18329 15a 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d1ae 89 1e 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d1b6 7f 16 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 d1c9 69 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 150c2 d6 20 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 150ca 9c 18 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 150cb 9a 17 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 150df 85 3 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 7cf85 204 16 0 8 0 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7cf96 1ea 5 0 8 4 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 7cf9a 1e5 1 0 8 8 a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 7cf9b 1e3 0 0 8 c a0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 168 - ^ = -STACK WIN 4 7d1b9 88 8 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 18297 9a e 0 10 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 182a5 88 0 0 10 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d246 f5 24 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d24f a2 1b 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 7d250 a0 1a 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 7d267 88 3 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 7d340 65 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d3aa ff 1d 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d3bd e8 a 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7d3be e6 9 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7d3c7 dc 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7d4ae 101 e 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d4b7 f4 5 0 18 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 7d4b8 f2 4 0 18 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 7d4bc ed 0 0 18 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 17210 6e a 0 0 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17219 63 1 0 0 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 1721a 5f 0 0 0 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d5b4 a0 a 0 0 0 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d5bd 95 1 0 0 4 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 7d5be 93 0 0 0 8 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 7d615 23 0 0 0 c 40 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 72 - ^ = -STACK WIN 4 2a25d 2a9 b 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a268 26e 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a41a 113 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7d659 5a 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d65f 50 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d690 1c 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a855 82 14 0 10 0 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a869 65 0 0 10 4 21c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 11fff 23f 9 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 12006 234 2 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 12007 232 1 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 12008 230 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2a532 8e 13 0 4 0 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2a543 74 2 0 4 4 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 2a544 70 1 0 4 8 ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 2a545 6e 0 0 4 c ac 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 180 - ^ = -STACK WIN 4 7d6b7 a9 15 0 c 0 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d6c8 8f 4 0 c 4 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 7d6cc 8a 0 0 c 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 7d700 40 0 0 c c c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 16ff1 9a 16 0 8 0 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 17002 80 5 0 8 4 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 17003 7e 4 0 8 8 c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 17007 79 0 0 8 c c8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 208 - ^ = -STACK WIN 4 7d765 25f 2b 0 1c 0 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7d77f 12f 11 0 1c 4 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 7d78c 121 4 0 1c 8 dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 7d790 11c 0 0 1c c dc 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 228 - ^ = -STACK WIN 4 7d9c9 40 21 0 0 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7da0e 6c 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7da14 62 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7da47 15 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7da7f 13e b 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7da86 12e 4 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7da89 12a 1 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7da8a 128 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 31054 21d 13 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 31060 20d 7 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 31064 208 3 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 31067 204 0 0 14 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 7dc45 196 16 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7dc4c 17a f 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7dc52 173 9 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 7dc5b 169 0 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 21523 2c6 d 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2152e 2b7 2 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2152f 2b5 1 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 21530 2b3 0 0 10 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 30f99 bb 9 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 30fa0 b0 2 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 30fa1 ae 1 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 30fa2 ac 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 215f5 a1 13 0 20 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 215fc 96 c 0 20 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 215fd 94 b 0 20 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 21608 88 0 0 20 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2ad39 5a 17 0 c 0 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 2ad50 3a 0 0 c 4 c4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7dead b 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7debd e1 1a 0 4 0 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7df16 75 0 0 4 4 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7df17 73 0 0 4 8 118 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7dfad 84 13 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7dfc0 6d 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7dfcd 5b 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e036 44 c 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e041 35 1 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7e042 31 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7e04a 28 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7e07f 47 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e085 3d 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e0cb 1f e 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e0ef 1f e 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e113 1f e 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e137 1f e 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e15b b 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e16b f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e17f f 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e193 f 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1a7 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1bb f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1cf f 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ddf5 4 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1e3 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1ec 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e1f9 15 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e213 15 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e22d 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e247 2f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e27b 19 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e299 d 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e2ab d 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e2bd d 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e2cf 14 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e2e8 4 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e2f1 10 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e306 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e313 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e31d 18 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e33a c 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e34b 5 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e355 8 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e362 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e36c c 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e37d 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e388 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e393 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e39e 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ae7 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e3a9 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e3b4 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e3bf 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e3ca 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e3e8 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e3f5 21 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e41b 1b 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e43b 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e446 11 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e45c 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e469 c 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e47a a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e489 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e496 5 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4a0 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4b1 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4be c 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4cf c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4e0 c 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e4f1 1d 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e513 1e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e536 c 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e547 e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e55a c 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e56b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e593 8 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e5a0 17 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e5bc 8 0 0 34 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e5c9 5 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e5d3 5 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e5dd 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e5f5 a 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e604 c 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e615 d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e627 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e640 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e659 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e666 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e67f 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e69c 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e6a9 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e6b6 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e6c3 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e6ed 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e728 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 cc97 c 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e735 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e742 c 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e753 f 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e767 10 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e77c 12 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e793 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e7ac c 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e7bd 1b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e7dd 10 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e7f2 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e7fd 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e808 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e821 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e83b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e848 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e878 5 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e88d 5 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 260c2 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e897 c 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e8a8 5 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e8b2 5 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e8bc 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e8d5 14 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e8ee 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e907 15 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e90d b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e921 1f 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e945 c 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e956 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e96f 19 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e975 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e98d 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e995 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e9ae 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e9bb 1a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7e9da 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e9e7 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7e9f0 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ea09 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ea22 19 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ea40 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea4d 5 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea57 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea62 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea6d 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea78 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea83 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea8e 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ea99 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eaa4 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eaaf 12 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7eac6 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eacf c 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eae0 d 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eaf2 d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb04 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb14 23 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7eb3c d 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb4e d 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb60 5 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb6a 8 0 0 38 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb77 5 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb81 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eb8c 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebbe 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebcb 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebd8 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebe5 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebf2 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ebff 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec0c 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec19 3 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec21 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec2e 19 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ec34 f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ec4c 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec59 3 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ec61 15 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ec7b 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ec98 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eca1 19 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ecbf 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eccc 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ecd9 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ece6 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ed3f 3 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ed47 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ed54 5 0 0 38 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ed69 10 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ed7e 15 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ed98 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eda5 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7edb2 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7edbf 8 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7edcc 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7edd9 8 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ede6 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7edf3 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee0c 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee25 19 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee2b f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee43 19 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee49 f 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ee61 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ee6c 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ee79 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ee86 8 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ee93 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eea0 8 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eead 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eeb8 8 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eec5 8 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eed2 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eedf 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eeec 14 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef05 14 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef1e 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ef29 14 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef42 14 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef5b 1b 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef61 11 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef7b 14 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ef94 7 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efa0 7 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efac 7 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efb8 7 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efc4 7 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efd0 7 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efdc 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7efe7 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7eff2 12 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f009 12 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f020 19 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f03e f 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f052 3 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f05a 3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f062 6 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f06d 6 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f078 3 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f093 18 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f0b0 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f0bb 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f0c5 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f0f5 3 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f0fd 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f108 18 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f125 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f132 5 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f13c 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f147 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f152 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f17e 18 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f19b c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1ac 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1d0 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1db 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1e6 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1f1 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f1fe 1 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f204 c 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f215 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f220 16 5 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f23b 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f246 6 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f251 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f25c 18 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f279 18 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f296 27 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f2c2 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f2cd 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f2da 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f2e5 8 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f309 30 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f317 1b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f31a 15 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f33e 3a 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f356 1b 0 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f359 15 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f37d 3e 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f399 1b 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f39c 15 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f3c0 7 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f3cc 7 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f3d8 1b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f3f8 1b 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f418 16 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f433 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f44e 16 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f469 16 5 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f484 16 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f49f 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f4aa 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f4b5 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f4c0 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f4cb 16 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f4e6 17 5 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f502 6 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f50d 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f518 19 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f51e f 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f536 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f541 16 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f55c 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f567 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f582 16 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f59d c 0 0 24 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5ae 6 0 0 1c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5b9 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5c4 6 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5cf 6 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5da 6 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5e5 6 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5f0 6 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f5fb 6 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f606 f 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f61a f 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f62e d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f640 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f655 f 0 0 18 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f669 f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f67d f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f691 f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6a5 8 0 0 5c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6b2 c 0 0 2c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6c3 6 0 0 28 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6ce 6 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6d9 5 0 0 30 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f6e3 13 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f6fb 12 5 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f712 1a 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f731 8 0 0 20 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f73e 22 5 0 30 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f765 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f782 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f78f 20 5 0 24 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f7b4 16 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f7cf 20 5 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f7f4 16 5 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f80f 15 5 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f829 18 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f846 8 0 0 14 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f95b 222 a 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7f964 217 1 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 7f965 215 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 7f994 1e5 0 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 7fb8d ae 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fb93 a0 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fbdd 55 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fc40 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7fc57 49 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fc5d 3f 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fca5 b9 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fcab af 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7fcdd 7c 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7fceb 6d 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7fd63 b9 13 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fd71 a2 5 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 7fd72 a0 4 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 7fd76 9b 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 7fe21 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fe56 47 a 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fe5c 3d 4 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fe60 38 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fea2 30 5 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fed7 41 6 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fedd 37 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ff1d 5a 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ff23 50 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ff24 4e 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ff89 65 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7ff8f 5b 1 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7ff90 57 0 0 4 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 7fff3 104 a 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fff9 fa 4 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 7fffd f5 0 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 800fc 45 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80146 ae 16 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80154 97 8 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 80158 92 4 0 c 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 8015c 8d 0 0 c c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 801f9 3f 12 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80207 28 4 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8020b 22 0 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80246 262 c 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8024d 257 5 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 8024e 255 4 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 80252 250 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 804ad 75 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 804b3 6b 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80527 4d 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8052d 43 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8052e 41 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 80579 5e 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 805dc 5e 7 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8063f 2f e 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 4 8064d 1d 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 4 + .cbParams + = -STACK WIN 0 17826 35 0 0 0 0 0 0 0 0 -STACK WIN 0 558b4 e 0 0 0 0 0 0 0 0 -STACK WIN 0 39bc8 e 0 0 0 0 0 0 0 0 -STACK WIN 0 30769 a 0 0 0 0 0 0 0 0 -STACK WIN 0 b722 20 0 0 0 0 0 0 0 0 -STACK WIN 0 1b069 a1 0 0 0 0 0 0 0 0 -STACK WIN 0 17860 24 0 0 0 0 0 0 0 0 -STACK WIN 0 1795e 89 3 0 0 0 0 0 0 0 -STACK WIN 0 39e42 e 0 0 0 0 0 0 0 0 -STACK WIN 0 39ea2 e 0 0 0 0 0 0 0 0 -STACK WIN 0 39eca e 0 0 0 0 0 0 0 0 -STACK WIN 0 1717 4 0 0 0 0 0 0 0 0 -STACK WIN 0 39f0b e 0 0 0 0 0 0 0 0 -STACK WIN 0 39f69 e 0 0 0 0 0 0 0 0 -STACK WIN 0 55abf e 0 0 0 0 0 0 0 0 -STACK WIN 0 55b65 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3a7c5 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3a824 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3a86a 19 0 0 0 0 0 0 0 0 -STACK WIN 0 3a94d e 0 0 0 0 0 0 0 0 -STACK WIN 0 3a995 19 0 0 0 0 0 0 0 0 -STACK WIN 0 3a9c6 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3aa01 4 0 0 0 0 0 0 0 0 -STACK WIN 0 3aa1d e 0 0 0 0 0 0 0 0 -STACK WIN 0 2c86d 29 0 0 0 0 0 0 0 0 -STACK WIN 0 3aad0 4 0 0 0 0 0 0 0 0 -STACK WIN 0 3ab10 11 0 0 0 0 0 0 0 0 -STACK WIN 0 3abe7 7a 0 0 0 0 0 0 0 0 -STACK WIN 0 98eb 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9766 11 0 0 4 0 0 0 0 0 -STACK WIN 0 977a 11 0 0 4 0 0 0 0 0 -STACK WIN 0 978e 13 0 0 8 0 0 0 0 0 -STACK WIN 0 97a2 13 0 0 c 0 0 0 0 0 -STACK WIN 0 97b6 f 0 0 8 0 0 0 0 0 -STACK WIN 0 97c6 120 0 0 c 0 0 0 0 0 -STACK WIN 0 2ff92 18 0 0 0 0 0 0 0 0 -STACK WIN 0 929c f 0 0 0 0 0 0 0 0 -STACK WIN 0 13093 e 0 0 0 0 0 0 0 0 -STACK WIN 0 59b72 5 0 0 0 0 0 0 0 0 -STACK WIN 0 59dd6 4 0 0 0 0 0 0 0 0 -STACK WIN 0 59f9f 14 0 0 0 0 0 0 0 0 -STACK WIN 0 30cce 1c 0 0 0 0 0 0 0 0 -STACK WIN 0 1c858 6a 3 0 0 0 0 0 0 0 -STACK WIN 0 3bde2 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3c06f 15 0 0 0 0 0 0 0 0 -STACK WIN 0 5c223 1e 0 0 0 0 0 0 0 0 -STACK WIN 0 3c77a 2c 0 0 0 0 0 0 0 0 -STACK WIN 0 f049 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3c85e e 0 0 0 0 0 0 0 0 -STACK WIN 0 18ef e 0 0 0 0 0 0 0 0 -STACK WIN 0 1921 4 0 0 0 0 0 0 0 0 -STACK WIN 0 3cac5 4 0 0 0 0 0 0 0 0 -STACK WIN 0 5c6de b 0 0 0 0 0 0 0 0 -STACK WIN 0 5cbad 1 0 0 0 0 0 0 0 0 -STACK WIN 0 5d0d4 1 0 0 0 0 0 0 0 0 -STACK WIN 0 5d2ff 39 0 0 0 0 0 0 0 0 -STACK WIN 0 1f951 3c 0 0 0 0 0 0 0 0 -STACK WIN 0 3d377 4 0 0 0 0 0 0 0 0 -STACK WIN 0 5d93e 4d 0 0 0 0 0 0 0 0 -STACK WIN 0 5de3f 1a 0 0 0 0 0 0 0 0 -STACK WIN 0 5e00f 1 0 0 0 0 0 0 0 0 -STACK WIN 0 3d7a4 10 0 0 0 0 0 0 0 0 -STACK WIN 0 3d9cf 10 0 0 0 0 0 0 0 0 -STACK WIN 0 3e895 11 0 0 0 0 0 0 0 0 -STACK WIN 0 3eadf ab 0 0 0 0 0 0 0 0 -STACK WIN 0 3f743 134 0 0 0 0 0 0 0 0 -STACK WIN 0 3ffbd 3e 0 0 0 0 0 0 0 0 -STACK WIN 0 27b99 1d 0 0 0 0 0 0 0 0 -STACK WIN 0 200d1 1d 0 0 0 0 0 0 0 0 -STACK WIN 0 40019 e 0 0 0 0 0 0 0 0 -STACK WIN 0 401f7 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40258 e 0 0 0 0 0 0 0 0 -STACK WIN 0 4029c e 0 0 0 0 0 0 0 0 -STACK WIN 0 402de e 0 0 0 0 0 0 0 0 -STACK WIN 0 40327 e 0 0 0 0 0 0 0 0 -STACK WIN 0 403bd e 0 0 0 0 0 0 0 0 -STACK WIN 0 40414 e 0 0 0 0 0 0 0 0 -STACK WIN 0 4043c e 0 0 0 0 0 0 0 0 -STACK WIN 0 5e670 11 0 0 4 0 0 0 0 0 -STACK WIN 0 404b7 e 0 0 0 0 0 0 0 0 -STACK WIN 0 1d07e 8 0 0 0 0 0 0 0 0 -STACK WIN 0 365f6 b 0 0 0 0 0 0 0 0 -STACK WIN 0 3594f 6 0 0 0 0 0 0 0 0 -STACK WIN 0 17443 11 0 0 0 0 0 0 0 0 -STACK WIN 0 407a9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 407c5 4 0 0 0 0 0 0 0 0 -STACK WIN 0 407e1 4 0 0 0 0 0 0 0 0 -STACK WIN 0 407fd 4 0 0 0 0 0 0 0 0 -STACK WIN 0 40817 4 0 0 0 0 0 0 0 0 -STACK WIN 0 40833 4 0 0 0 0 0 0 0 0 -STACK WIN 0 4084f 4 0 0 0 0 0 0 0 0 -STACK WIN 0 40892 e 0 0 0 0 0 0 0 0 -STACK WIN 0 5e882 11 0 0 8 0 0 0 0 0 -STACK WIN 0 abc1 d 0 0 0 0 0 0 0 0 -STACK WIN 0 40a26 16 0 0 0 0 0 0 0 0 -STACK WIN 0 40b63 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40c62 17 0 0 0 0 0 0 0 0 -STACK WIN 0 111da 31 0 0 0 0 0 0 0 0 -STACK WIN 0 5eee3 8 0 0 c 0 0 0 0 0 -STACK WIN 0 1c8c e 0 0 0 0 0 0 0 0 -STACK WIN 0 40cf3 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40d2a e 0 0 0 0 0 0 0 0 -STACK WIN 0 40d78 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40da4 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40dd0 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40e00 e 0 0 0 0 0 0 0 0 -STACK WIN 0 5f1bf e 0 0 0 0 0 0 0 0 -STACK WIN 0 5f3e0 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40e66 e 0 0 0 0 0 0 0 0 -STACK WIN 0 40e92 e 0 0 0 0 0 0 0 0 -STACK WIN 0 5f5c9 e 0 0 0 0 0 0 0 0 -STACK WIN 0 5f72a e 0 0 0 0 0 0 0 0 -STACK WIN 0 5f9fa 4 0 0 0 0 0 0 0 0 -STACK WIN 0 5fa2d 1e 0 0 0 0 0 0 0 0 -STACK WIN 0 40faa 4 0 0 0 0 0 0 0 0 -STACK WIN 0 40fe6 4 0 0 0 0 0 0 0 0 -STACK WIN 0 5fc02 9 0 0 0 0 0 0 0 0 -STACK WIN 0 11419 21 0 0 0 0 0 0 0 0 -STACK WIN 0 4171b 4 0 0 0 0 0 0 0 0 -STACK WIN 0 41748 48 0 0 0 0 0 0 0 0 -STACK WIN 0 607cb 30 0 0 0 0 0 0 0 0 -STACK WIN 0 418d1 3f 0 0 0 0 0 0 0 0 -STACK WIN 0 60b60 a 0 0 0 0 0 0 0 0 -STACK WIN 0 60bbf f 0 0 8 0 0 0 0 0 -STACK WIN 0 41b32 7 0 0 0 0 0 0 0 0 -STACK WIN 0 21af 7 0 0 0 0 0 0 0 0 -STACK WIN 0 12f1d 6 0 0 0 0 0 0 0 0 -STACK WIN 0 16f83 6 0 0 0 0 0 0 0 0 -STACK WIN 0 12f08 10 0 0 0 0 0 0 0 0 -STACK WIN 0 9920 a 0 0 0 0 0 0 0 0 -STACK WIN 0 41c56 4 0 0 0 0 0 0 0 0 -STACK WIN 0 41c70 4 0 0 0 0 0 0 0 0 -STACK WIN 0 41c8a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 41ca4 4 0 0 0 0 0 0 0 0 -STACK WIN 0 41dcc 10 0 0 0 0 0 0 0 0 -STACK WIN 0 43025 4 0 0 0 0 0 0 0 0 -STACK WIN 0 1e017 2eb 0 0 0 0 0 0 0 0 -STACK WIN 0 43374 14 0 0 0 0 0 0 0 0 -STACK WIN 0 434b2 17 0 0 0 0 0 0 0 0 -STACK WIN 0 434e5 60 0 0 0 0 0 0 0 0 -STACK WIN 0 61723 e 0 0 0 0 0 0 0 0 -STACK WIN 0 435d2 e 0 0 0 0 0 0 0 0 -STACK WIN 0 132ee 6 0 0 0 0 0 0 0 0 -STACK WIN 0 617fd e 0 0 0 0 0 0 0 0 -STACK WIN 0 436ca 11 0 0 0 0 0 0 0 0 -STACK WIN 0 437f5 10 0 0 0 0 0 0 0 0 -STACK WIN 0 438be 4a 0 0 0 0 0 0 0 0 -STACK WIN 0 31d8e f 0 0 0 0 0 0 0 0 -STACK WIN 0 1a834 36 0 0 0 0 0 0 0 0 -STACK WIN 0 2610 b 0 0 0 0 0 0 0 0 -STACK WIN 0 36759 b 0 0 0 0 0 0 0 0 -STACK WIN 0 951a b 0 0 0 0 0 0 0 0 -STACK WIN 0 2432 b 0 0 0 0 0 0 0 0 -STACK WIN 0 61a61 b 0 0 0 0 0 0 0 0 -STACK WIN 0 1746c 23 0 0 0 0 0 0 0 0 -STACK WIN 0 17459 10e 0 0 0 0 0 0 0 0 -STACK WIN 0 1efce 12 0 0 0 0 0 0 0 0 -STACK WIN 0 129f9 b 0 0 0 0 0 0 0 0 -STACK WIN 0 44733 c 0 0 0 0 0 0 0 0 -STACK WIN 0 9728 a 0 0 0 0 0 0 0 0 -STACK WIN 0 62be6 4 0 0 0 0 0 0 0 0 -STACK WIN 0 448d9 a 0 0 0 0 0 0 0 0 -STACK WIN 0 13771 7 0 0 0 0 0 0 0 0 -STACK WIN 0 2c151 14 0 0 0 0 0 0 0 0 -STACK WIN 0 2fed7 40 0 0 0 0 0 0 0 0 -STACK WIN 0 32992 13 0 0 0 0 0 0 0 0 -STACK WIN 0 63421 4 0 0 0 0 0 0 0 0 -STACK WIN 0 6362b 4 0 0 0 0 0 0 0 0 -STACK WIN 0 636d3 4 0 0 0 0 0 0 0 0 -STACK WIN 0 6452a e 0 0 0 0 0 0 0 0 -STACK WIN 0 6665c 1c 0 0 0 0 0 0 0 0 -STACK WIN 0 66682 b 0 0 0 0 0 0 0 0 -STACK WIN 0 66801 3b 0 0 0 0 0 0 0 0 -STACK WIN 0 66918 1a 0 0 0 0 0 0 0 0 -STACK WIN 0 669cd 3b 0 0 0 0 0 0 0 0 -STACK WIN 0 66ae8 1a 0 0 0 0 0 0 0 0 -STACK WIN 0 66b9d 3b 0 0 0 0 0 0 0 0 -STACK WIN 0 66cbf 1a 0 0 0 0 0 0 0 0 -STACK WIN 0 67093 11 0 0 0 0 0 0 0 0 -STACK WIN 0 675f4 11 0 0 0 0 0 0 0 0 -STACK WIN 0 677e9 11 0 0 0 0 0 0 0 0 -STACK WIN 0 67941 11 0 0 0 0 0 0 0 0 -STACK WIN 0 67dd6 2c 0 0 0 0 0 0 0 0 -STACK WIN 0 1f571 50 0 0 0 0 0 0 0 0 -STACK WIN 0 68496 4a 0 0 0 0 0 0 0 0 -STACK WIN 0 1366c 45 0 0 0 0 0 0 0 0 -STACK WIN 0 29b93 127 0 0 0 0 0 0 0 0 -STACK WIN 0 44db3 55 0 0 0 0 0 0 0 0 -STACK WIN 0 68734 55 0 0 0 0 0 0 0 0 -STACK WIN 0 69ce0 21 0 0 0 0 0 0 0 0 -STACK WIN 0 69e0e 21 0 0 0 0 0 0 0 0 -STACK WIN 0 69f2a 21 0 0 0 0 0 0 0 0 -STACK WIN 0 6a054 21 0 0 0 0 0 0 0 0 -STACK WIN 0 453fe 21 0 0 0 0 0 0 0 0 -STACK WIN 0 6a220 21 0 0 0 0 0 0 0 0 -STACK WIN 0 6a339 21 0 0 0 0 0 0 0 0 -STACK WIN 0 6a4e8 11 0 0 0 0 0 0 0 0 -STACK WIN 0 6a4fe c7 0 0 0 0 0 0 0 0 -STACK WIN 0 6a5ca 3e 0 0 0 0 0 0 0 0 -STACK WIN 0 6b5b5 48 0 0 0 0 0 0 0 0 -STACK WIN 0 6b683 c 0 0 4 0 0 0 0 0 -STACK WIN 0 2146c c 0 0 8 0 0 0 0 0 -STACK WIN 0 6b694 a 0 0 0 0 0 0 0 0 -STACK WIN 0 45f23 e 0 0 0 0 0 0 0 0 -STACK WIN 0 165e9 13 0 0 0 0 0 0 0 0 -STACK WIN 0 46631 e 0 0 0 0 0 0 0 0 -STACK WIN 0 46678 4 0 0 0 0 0 0 0 0 -STACK WIN 0 466a9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 466d4 4 0 0 0 0 0 0 0 0 -STACK WIN 0 6bc8a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 6be06 7f 3 0 0 0 0 0 0 0 -STACK WIN 0 6fe04 4 0 0 0 0 0 0 0 0 -STACK WIN 0 189fc 28 0 0 0 0 0 0 0 0 -STACK WIN 0 6ff09 4 0 0 0 0 0 0 0 0 -STACK WIN 0 70245 8 0 0 0 0 0 0 0 0 -STACK WIN 0 70252 8 0 0 0 0 0 0 0 0 -STACK WIN 0 70362 4 0 0 0 0 0 0 0 0 -STACK WIN 0 704cb 4 0 0 0 0 0 0 0 0 -STACK WIN 0 70927 4 0 0 0 0 0 0 0 0 -STACK WIN 0 4677c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 70a99 4 0 0 0 0 0 0 0 0 -STACK WIN 0 467de 4 0 0 0 0 0 0 0 0 -STACK WIN 0 70b3f c 0 0 0 0 0 0 0 0 -STACK WIN 0 1b3c1 c 0 0 0 0 0 0 0 0 -STACK WIN 0 4687c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 70fe7 12 0 0 0 0 0 0 0 0 -STACK WIN 0 7108d 4f 4 0 0 0 0 0 0 0 -STACK WIN 0 712e3 17 0 0 0 0 0 0 0 0 -STACK WIN 0 714d7 c 0 0 0 0 0 0 0 0 -STACK WIN 0 715db c 0 0 0 0 0 0 0 0 -STACK WIN 0 715f9 6 0 0 0 0 0 0 0 0 -STACK WIN 0 468d9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 468e9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 71674 4 0 0 0 0 0 0 0 0 -STACK WIN 0 46968 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7189d 11 0 0 0 0 0 0 0 0 -STACK WIN 0 7199c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 71be9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 71ca8 4 0 0 0 0 0 0 0 0 -STACK WIN 0 469a3 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72188 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7236f 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7237f 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72787 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72aa3 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72c86 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72e4c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72e5c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 72fbb 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7314a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 731c9 4 0 0 0 0 0 0 0 0 -STACK WIN 0 732a4 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73326 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73432 4 0 0 0 0 0 0 0 0 -STACK WIN 0 735db 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73692 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73748 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73854 4 0 0 0 0 0 0 0 0 -STACK WIN 0 739d1 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73d11 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73de7 4 0 0 0 0 0 0 0 0 -STACK WIN 0 73ee3 4 0 0 0 0 0 0 0 0 -STACK WIN 0 74497 4 0 0 0 0 0 0 0 0 -STACK WIN 0 469dd 4 0 0 0 0 0 0 0 0 -STACK WIN 0 745dd 4 0 0 0 0 0 0 0 0 -STACK WIN 0 469fe 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7487a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 74a7a 4 0 0 0 0 0 0 0 0 -STACK WIN 0 74b86 c 0 0 0 0 0 0 0 0 -STACK WIN 0 7507d 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7521c 4 0 0 0 0 0 0 0 0 -STACK WIN 0 75271 b 0 0 4 0 0 0 0 0 -STACK WIN 0 75348 4 0 0 0 0 0 0 0 0 -STACK WIN 0 753b9 c 0 0 0 0 0 0 0 0 -STACK WIN 0 75454 c 0 0 0 0 0 0 0 0 -STACK WIN 0 754d3 f 0 0 0 0 0 0 0 0 -STACK WIN 0 756a5 4 0 0 0 0 0 0 0 0 -STACK WIN 0 763c9 21 0 0 0 0 0 0 0 0 -STACK WIN 0 a415 d 0 0 0 0 0 0 0 0 -STACK WIN 0 13038 2d 0 0 0 0 0 0 0 0 -STACK WIN 0 127b2 7 0 0 0 0 0 0 0 0 -STACK WIN 0 bf3d 6 0 0 0 0 0 0 0 0 -STACK WIN 0 bf64 5 0 0 0 0 0 0 0 0 -STACK WIN 0 9915 6 0 0 0 0 0 0 0 0 -STACK WIN 0 127a7 6 0 0 0 0 0 0 0 0 -STACK WIN 0 7a6b5 1b 0 0 0 0 0 0 0 0 -STACK WIN 0 7a6e2 1b 0 0 0 0 0 0 0 0 -STACK WIN 0 35819 c 0 0 0 0 0 0 0 0 -STACK WIN 0 7a773 7b e 0 0 0 0 0 0 0 -STACK WIN 0 121de fc 3 0 0 0 0 0 0 0 -STACK WIN 0 1bdd2 1bc 9 0 0 0 0 0 0 0 -STACK WIN 0 a2d4 85 2 0 0 0 0 0 0 0 -STACK WIN 0 7a8b2 ab 3 0 0 0 0 0 0 0 -STACK WIN 0 7ad9c 5d 6 0 0 0 0 0 0 0 -STACK WIN 0 2c16a 58 4 0 0 0 0 0 0 0 -STACK WIN 0 c0ed 74 0 0 0 0 0 0 0 0 -STACK WIN 0 17fc1 82 9 0 0 0 0 0 0 0 -STACK WIN 0 2a41a 113 0 0 0 0 0 0 0 0 -STACK WIN 0 7e16b f 0 0 c 0 0 0 0 0 -STACK WIN 0 7e17f f 0 0 14 0 0 0 0 0 -STACK WIN 0 7e193 f 0 0 28 0 0 0 0 0 -STACK WIN 0 7e1a7 f 0 0 4 0 0 0 0 0 -STACK WIN 0 7e1bb f 0 0 8 0 0 0 0 0 -STACK WIN 0 7e1cf f 0 0 10 0 0 0 0 0 -STACK WIN 0 ddf5 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7e1e3 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7e1ec 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7e299 d 0 0 c 0 0 0 0 0 -STACK WIN 0 7e2ab d 0 0 18 0 0 0 0 0 -STACK WIN 0 7e2bd d 0 0 24 0 0 0 0 0 -STACK WIN 0 7e2e8 4 0 0 10 0 0 0 0 0 -STACK WIN 0 7e306 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7e313 5 0 0 4 0 0 0 0 0 -STACK WIN 0 7e33a c 0 0 18 0 0 0 0 0 -STACK WIN 0 7e34b 5 0 0 28 0 0 0 0 0 -STACK WIN 0 7e355 8 0 0 28 0 0 0 0 0 -STACK WIN 0 7e362 5 0 0 8 0 0 0 0 0 -STACK WIN 0 7e36c c 0 0 14 0 0 0 0 0 -STACK WIN 0 7e37d 6 0 0 18 0 0 0 0 0 -STACK WIN 0 7e388 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7e393 6 0 0 20 0 0 0 0 0 -STACK WIN 0 7e39e 6 0 0 18 0 0 0 0 0 -STACK WIN 0 14ae7 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7e3a9 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7e3b4 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7e3bf 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7e3e8 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7e43b 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7e45c 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7e469 c 0 0 1c 0 0 0 0 0 -STACK WIN 0 7e47a a 0 0 0 0 0 0 0 0 -STACK WIN 0 7e489 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7e496 5 0 0 20 0 0 0 0 0 -STACK WIN 0 7e4a0 c 0 0 4 0 0 0 0 0 -STACK WIN 0 7e4b1 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7e4be c 0 0 8 0 0 0 0 0 -STACK WIN 0 7e4cf c 0 0 c 0 0 0 0 0 -STACK WIN 0 7e4e0 c 0 0 14 0 0 0 0 0 -STACK WIN 0 7e536 c 0 0 18 0 0 0 0 0 -STACK WIN 0 7e547 e 0 0 8 0 0 0 0 0 -STACK WIN 0 7e55a c 0 0 28 0 0 0 0 0 -STACK WIN 0 7e56b 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7e593 8 0 0 28 0 0 0 0 0 -STACK WIN 0 7e5bc 8 0 0 34 0 0 0 0 0 -STACK WIN 0 7e5c9 5 0 0 28 0 0 0 0 0 -STACK WIN 0 7e5d3 5 0 0 24 0 0 0 0 0 -STACK WIN 0 7e5f5 a 0 0 14 0 0 0 0 0 -STACK WIN 0 7e604 c 0 0 30 0 0 0 0 0 -STACK WIN 0 7e615 d 0 0 4 0 0 0 0 0 -STACK WIN 0 7e659 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7e69c 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7e6a9 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7e6b6 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7e6c3 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7e728 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7e735 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7e7f2 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7e7fd 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7e83b 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7e848 5 0 0 8 0 0 0 0 0 -STACK WIN 0 7e878 5 0 0 10 0 0 0 0 0 -STACK WIN 0 7e88d 5 0 0 18 0 0 0 0 0 -STACK WIN 0 260c2 5 0 0 4 0 0 0 0 0 -STACK WIN 0 7e8a8 5 0 0 14 0 0 0 0 0 -STACK WIN 0 7e8b2 5 0 0 c 0 0 0 0 0 -STACK WIN 0 7e98d 3 0 0 4 0 0 0 0 0 -STACK WIN 0 7e9ae 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7e9da 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7e9e7 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7ea40 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7ea4d 5 0 0 1c 0 0 0 0 0 -STACK WIN 0 7ea57 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7ea62 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7ea6d 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7ea78 6 0 0 18 0 0 0 0 0 -STACK WIN 0 7ea83 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7ea8e 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7ea99 6 0 0 1c 0 0 0 0 0 -STACK WIN 0 7eaa4 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7eac6 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7eacf c 0 0 20 0 0 0 0 0 -STACK WIN 0 7eae0 d 0 0 1c 0 0 0 0 0 -STACK WIN 0 7eaf2 d 0 0 10 0 0 0 0 0 -STACK WIN 0 7eb04 b 0 0 0 0 0 0 0 0 -STACK WIN 0 7eb3c d 0 0 14 0 0 0 0 0 -STACK WIN 0 7eb4e d 0 0 c 0 0 0 0 0 -STACK WIN 0 7eb60 5 0 0 c 0 0 0 0 0 -STACK WIN 0 7eb6a 8 0 0 38 0 0 0 0 0 -STACK WIN 0 7eb77 5 0 0 14 0 0 0 0 0 -STACK WIN 0 7eb81 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7eb8c 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7ebbe 8 0 0 18 0 0 0 0 0 -STACK WIN 0 7ebcb 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7ebd8 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7ebe5 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7ebf2 8 0 0 24 0 0 0 0 0 -STACK WIN 0 7ebff 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7ec0c 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7ec19 3 0 0 18 0 0 0 0 0 -STACK WIN 0 7ec21 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7ec4c 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7ec59 3 0 0 0 0 0 0 0 0 -STACK WIN 0 7ec98 4 0 0 0 0 0 0 0 0 -STACK WIN 0 7ecbf 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7eccc 8 0 0 18 0 0 0 0 0 -STACK WIN 0 7ecd9 8 0 0 24 0 0 0 0 0 -STACK WIN 0 7ece6 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7ed3f 3 0 0 10 0 0 0 0 0 -STACK WIN 0 7ed47 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7ed54 5 0 0 38 0 0 0 0 0 -STACK WIN 0 7ed98 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7eda5 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7edb2 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7edbf 8 0 0 2c 0 0 0 0 0 -STACK WIN 0 7edcc 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7edd9 8 0 0 8 0 0 0 0 0 -STACK WIN 0 7ede6 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7ee61 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7ee6c 8 0 0 20 0 0 0 0 0 -STACK WIN 0 7ee79 8 0 0 20 0 0 0 0 0 -STACK WIN 0 7ee86 8 0 0 10 0 0 0 0 0 -STACK WIN 0 7ee93 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7eea0 8 0 0 1c 0 0 0 0 0 -STACK WIN 0 7eead 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7eeb8 8 0 0 24 0 0 0 0 0 -STACK WIN 0 7eec5 8 0 0 18 0 0 0 0 0 -STACK WIN 0 7eed2 8 0 0 14 0 0 0 0 0 -STACK WIN 0 7eedf 8 0 0 20 0 0 0 0 0 -STACK WIN 0 7ef1e 6 0 0 0 0 0 0 0 0 -STACK WIN 0 7ef94 7 0 0 4 0 0 0 0 0 -STACK WIN 0 7efa0 7 0 0 c 0 0 0 0 0 -STACK WIN 0 7efac 7 0 0 8 0 0 0 0 0 -STACK WIN 0 7efb8 7 0 0 10 0 0 0 0 0 -STACK WIN 0 7efc4 7 0 0 28 0 0 0 0 0 -STACK WIN 0 7efd0 7 0 0 20 0 0 0 0 0 -STACK WIN 0 7efdc 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7efe7 6 0 0 18 0 0 0 0 0 -STACK WIN 0 7f052 3 0 0 0 0 0 0 0 0 -STACK WIN 0 7f05a 3 0 0 c 0 0 0 0 0 -STACK WIN 0 7f062 6 0 0 2c 0 0 0 0 0 -STACK WIN 0 7f06d 6 0 0 30 0 0 0 0 0 -STACK WIN 0 7f078 3 0 0 8 0 0 0 0 0 -STACK WIN 0 7f0b0 6 0 0 20 0 0 0 0 0 -STACK WIN 0 7f0bb 5 0 0 4 0 0 0 0 0 -STACK WIN 0 7f0c5 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7f0f5 3 0 0 14 0 0 0 0 0 -STACK WIN 0 7f0fd 6 0 0 0 0 0 0 0 0 -STACK WIN 0 7f125 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7f132 5 0 0 2c 0 0 0 0 0 -STACK WIN 0 7f13c 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f147 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7f152 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7f19b c 0 0 4 0 0 0 0 0 -STACK WIN 0 7f1ac 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7f1d0 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7f1db 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7f1e6 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7f1f1 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f1fe 1 0 0 0 0 0 0 0 0 -STACK WIN 0 7f204 c 0 0 10 0 0 0 0 0 -STACK WIN 0 7f215 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7f23b 6 0 0 1c 0 0 0 0 0 -STACK WIN 0 7f246 6 0 0 24 0 0 0 0 0 -STACK WIN 0 7f251 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7f2c2 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f2cd 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7f2da 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f2e5 8 0 0 c 0 0 0 0 0 -STACK WIN 0 7f3c0 7 0 0 1c 0 0 0 0 0 -STACK WIN 0 7f3cc 7 0 0 24 0 0 0 0 0 -STACK WIN 0 7f49f 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7f4aa 6 0 0 18 0 0 0 0 0 -STACK WIN 0 7f4b5 6 0 0 1c 0 0 0 0 0 -STACK WIN 0 7f4c0 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7f502 6 0 0 24 0 0 0 0 0 -STACK WIN 0 7f50d 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7f536 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7f55c 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f59d c 0 0 24 0 0 0 0 0 -STACK WIN 0 7f5ae 6 0 0 1c 0 0 0 0 0 -STACK WIN 0 7f5b9 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7f5c4 6 0 0 10 0 0 0 0 0 -STACK WIN 0 7f5cf 6 0 0 4 0 0 0 0 0 -STACK WIN 0 7f5da 6 0 0 8 0 0 0 0 0 -STACK WIN 0 7f5e5 6 0 0 14 0 0 0 0 0 -STACK WIN 0 7f5f0 6 0 0 18 0 0 0 0 0 -STACK WIN 0 7f5fb 6 0 0 20 0 0 0 0 0 -STACK WIN 0 7f606 f 0 0 10 0 0 0 0 0 -STACK WIN 0 7f61a f 0 0 14 0 0 0 0 0 -STACK WIN 0 7f62e d 0 0 0 0 0 0 0 0 -STACK WIN 0 7f640 10 0 0 4 0 0 0 0 0 -STACK WIN 0 7f655 f 0 0 18 0 0 0 0 0 -STACK WIN 0 7f669 f 0 0 c 0 0 0 0 0 -STACK WIN 0 7f67d f 0 0 4 0 0 0 0 0 -STACK WIN 0 7f691 f 0 0 8 0 0 0 0 0 -STACK WIN 0 7f6a5 8 0 0 5c 0 0 0 0 0 -STACK WIN 0 7f6b2 c 0 0 2c 0 0 0 0 0 -STACK WIN 0 7f6c3 6 0 0 28 0 0 0 0 0 -STACK WIN 0 7f6ce 6 0 0 c 0 0 0 0 0 -STACK WIN 0 7f6d9 5 0 0 30 0 0 0 0 0 -STACK WIN 0 7f731 8 0 0 20 0 0 0 0 0 -STACK WIN 0 7f782 8 0 0 4 0 0 0 0 0 -STACK WIN 0 7f846 8 0 0 14 0 0 0 0 0 -STACK WIN 0 39aa8 e6 a 0 c 1c 0 0 0 1 -STACK WIN 0 dedf 70 3 0 8 c 0 0 0 0 -STACK WIN 0 df4f 23 0 0 0 0 0 0 0 0 -STACK WIN 0 7fc40 12 0 0 0 0 0 0 0 0 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym b/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym deleted file mode 100644 index 72fb4daa..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym +++ /dev/null @@ -1,22151 +0,0 @@ -MODULE windows x86 5A9832E5287241C1838ED98914E9B7FF1 test_app.pdb -FILE 1 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h -FILE 2 c:\program files\microsoft visual studio 8\vc\include\typeinfo -FILE 3 c:\breakpad\trunk\src\common\windows\guid_string.h -FILE 4 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h -FILE 5 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h -FILE 6 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h -FILE 7 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h -FILE 8 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h -FILE 9 c:\program files\microsoft visual studio 8\vc\include\malloc.h -FILE 10 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h -FILE 11 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h -FILE 12 c:\breakpad\trunk\src\client\windows\handler\exception_handler.cc -FILE 13 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h -FILE 14 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h -FILE 15 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h -FILE 16 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h -FILE 17 c:\program files\microsoft visual studio 8\vc\include\xstring -FILE 18 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h -FILE 19 c:\program files\microsoft visual studio 8\vc\include\xmemory -FILE 20 c:\program files\microsoft visual studio 8\vc\include\new -FILE 21 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h -FILE 22 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h -FILE 23 c:\program files\microsoft visual studio 8\vc\include\vector -FILE 24 c:\program files\microsoft visual studio 8\vc\include\memory -FILE 25 c:\program files\microsoft visual studio 8\vc\include\wtime.inl -FILE 26 c:\program files\microsoft visual studio 8\vc\include\iterator -FILE 27 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h -FILE 28 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h -FILE 29 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h -FILE 30 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h -FILE 31 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h -FILE 32 c:\program files\microsoft visual studio 8\vc\include\assert.h -FILE 33 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h -FILE 34 c:\program files\microsoft visual studio 8\vc\include\cstdio -FILE 35 c:\program files\microsoft visual studio 8\vc\include\stdio.h -FILE 36 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h -FILE 37 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h -FILE 38 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h -FILE 39 c:\program files\microsoft visual studio 8\vc\include\stdlib.h -FILE 40 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h -FILE 41 c:\program files\microsoft visual studio 8\vc\include\limits.h -FILE 42 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h -FILE 43 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h -FILE 44 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h -FILE 45 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h -FILE 46 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h -FILE 47 c:\program files\microsoft visual studio 8\vc\include\share.h -FILE 48 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h -FILE 49 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h -FILE 50 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h -FILE 51 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h -FILE 52 c:\program files\microsoft visual studio 8\vc\include\xdebug -FILE 53 c:\program files\microsoft visual studio 8\vc\include\stdarg.h -FILE 54 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h -FILE 55 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h -FILE 56 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h -FILE 57 c:\program files\microsoft visual studio 8\vc\include\xlocinfo -FILE 58 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h -FILE 59 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h -FILE 60 c:\program files\microsoft visual studio 8\vc\include\locale.h -FILE 61 c:\program files\microsoft visual studio 8\vc\include\string -FILE 62 c:\program files\microsoft visual studio 8\vc\include\istream -FILE 63 c:\breakpad\trunk\src\common\windows\string_utils-inl.h -FILE 64 c:\program files\microsoft visual studio 8\vc\include\ostream -FILE 65 c:\program files\microsoft visual studio 8\vc\include\xutility -FILE 66 c:\program files\microsoft visual studio 8\vc\include\wchar.h -FILE 67 c:\program files\microsoft visual studio 8\vc\include\utility -FILE 68 c:\program files\microsoft visual studio 8\vc\include\ios -FILE 69 c:\program files\microsoft visual studio 8\vc\include\xlocnum -FILE 70 c:\program files\microsoft visual studio 8\vc\include\iosfwd -FILE 71 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl -FILE 72 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h -FILE 73 c:\program files\microsoft visual studio 8\vc\include\cwchar -FILE 74 c:\program files\microsoft visual studio 8\vc\include\climits -FILE 75 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h -FILE 76 c:\program files\microsoft visual studio 8\vc\include\cstdlib -FILE 77 c:\program files\microsoft visual studio 8\vc\include\streambuf -FILE 78 c:\program files\microsoft visual studio 8\vc\include\xiosbase -FILE 79 c:\program files\microsoft visual studio 8\vc\include\xlocale -FILE 80 c:\program files\microsoft visual studio 8\vc\include\cstring -FILE 81 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h -FILE 82 c:\program files\microsoft visual studio 8\vc\include\stdexcept -FILE 83 c:\program files\microsoft visual studio 8\vc\include\exception -FILE 84 c:\program files\microsoft visual studio 8\vc\include\xstddef -FILE 85 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h -FILE 86 c:\program files\microsoft visual studio 8\vc\include\cstddef -FILE 87 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h -FILE 88 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h -FILE 89 c:\program files\microsoft visual studio 8\vc\include\stddef.h -FILE 90 c:\program files\microsoft visual studio 8\vc\include\cassert -FILE 91 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h -FILE 92 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h -FILE 93 c:\program files\microsoft visual studio 8\vc\include\yvals.h -FILE 94 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h -FILE 95 c:\program files\microsoft visual studio 8\vc\include\excpt.h -FILE 96 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h -FILE 97 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h -FILE 98 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h -FILE 99 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h -FILE 100 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h -FILE 101 c:\program files\microsoft visual studio 8\vc\include\sal.h -FILE 102 c:\program files\microsoft visual studio 8\vc\include\vadefs.h -FILE 103 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h -FILE 104 c:\program files\microsoft visual studio 8\vc\include\ctype.h -FILE 105 c:\program files\microsoft visual studio 8\vc\include\eh.h -FILE 106 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h -FILE 107 c:\program files\microsoft visual studio 8\vc\include\string.h -FILE 108 c:\program files\microsoft visual studio 8\vc\include\ctype.h -FILE 109 c:\program files\microsoft visual studio 8\vc\include\xutility -FILE 110 c:\program files\microsoft visual studio 8\vc\include\utility -FILE 111 c:\program files\microsoft visual studio 8\vc\include\iosfwd -FILE 112 c:\program files\microsoft visual studio 8\vc\include\cwchar -FILE 113 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h -FILE 114 c:\program files\microsoft visual studio 8\vc\include\stdexcept -FILE 115 c:\program files\microsoft visual studio 8\vc\include\exception -FILE 116 c:\program files\microsoft visual studio 8\vc\include\xstddef -FILE 117 c:\program files\microsoft visual studio 8\vc\include\cstddef -FILE 118 c:\program files\microsoft visual studio 8\vc\include\stddef.h -FILE 119 c:\program files\microsoft visual studio 8\vc\include\eh.h -FILE 120 c:\program files\microsoft visual studio 8\vc\include\streambuf -FILE 121 c:\program files\microsoft visual studio 8\vc\include\xiosbase -FILE 122 c:\program files\microsoft visual studio 8\vc\include\xlocale -FILE 123 c:\program files\microsoft visual studio 8\vc\include\cstring -FILE 124 c:\program files\microsoft visual studio 8\vc\include\string.h -FILE 125 c:\program files\microsoft visual studio 8\vc\include\typeinfo -FILE 126 c:\breakpad\trunk\src\common\windows\guid_string.cc -FILE 127 c:\breakpad\trunk\src\common\windows\string_utils-inl.h -FILE 128 c:\program files\microsoft visual studio 8\vc\include\stdarg.h -FILE 129 c:\program files\microsoft visual studio 8\vc\include\string -FILE 130 c:\program files\microsoft visual studio 8\vc\include\istream -FILE 131 c:\program files\microsoft visual studio 8\vc\include\ostream -FILE 132 c:\program files\microsoft visual studio 8\vc\include\ios -FILE 133 c:\program files\microsoft visual studio 8\vc\include\xlocnum -FILE 134 c:\program files\microsoft visual studio 8\vc\include\climits -FILE 135 c:\program files\microsoft visual studio 8\vc\include\yvals.h -FILE 136 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h -FILE 137 c:\program files\microsoft visual studio 8\vc\include\cstdlib -FILE 138 c:\program files\microsoft visual studio 8\vc\include\stdlib.h -FILE 139 c:\program files\microsoft visual studio 8\vc\include\malloc.h -FILE 140 c:\breakpad\trunk\src\common\windows\guid_string.h -FILE 141 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h -FILE 142 c:\program files\microsoft visual studio 8\vc\include\share.h -FILE 143 c:\program files\microsoft visual studio 8\vc\include\xstring -FILE 144 c:\program files\microsoft visual studio 8\vc\include\xmemory -FILE 145 c:\program files\microsoft visual studio 8\vc\include\new -FILE 146 c:\program files\microsoft visual studio 8\vc\include\locale.h -FILE 147 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl -FILE 148 c:\program files\microsoft visual studio 8\vc\include\limits.h -FILE 149 c:\program files\microsoft visual studio 8\vc\include\wchar.h -FILE 150 c:\program files\microsoft visual studio 8\vc\include\cstdio -FILE 151 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h -FILE 152 c:\program files\microsoft visual studio 8\vc\include\stdio.h -FILE 153 c:\program files\microsoft visual studio 8\vc\include\wtime.inl -FILE 154 c:\program files\microsoft visual studio 8\vc\include\sal.h -FILE 155 c:\program files\microsoft visual studio 8\vc\include\xdebug -FILE 156 c:\program files\microsoft visual studio 8\vc\include\vadefs.h -FILE 157 c:\program files\microsoft visual studio 8\vc\include\xlocinfo -FILE 158 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h -FILE 159 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnetwk.h -FILE 160 c:\program files\microsoft visual studio 8\vc\platformsdk\include\urlmon.h -FILE 161 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack8.h -FILE 162 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cderr.h -FILE 163 c:\program files\microsoft visual studio 8\vc\platformsdk\include\shellapi.h -FILE 164 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dde.h -FILE 165 c:\program files\microsoft visual studio 8\vc\include\vector -FILE 166 c:\program files\microsoft visual studio 8\vc\include\stdio.h -FILE 167 c:\program files\microsoft visual studio 8\vc\include\memory -FILE 168 c:\program files\microsoft visual studio 8\vc\include\iterator -FILE 169 c:\program files\microsoft visual studio 8\vc\include\malloc.h -FILE 170 c:\program files\microsoft visual studio 8\vc\include\stdarg.h -FILE 171 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windef.h -FILE 172 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h -FILE 173 c:\program files\microsoft visual studio 8\vc\platformsdk\include\imm.h -FILE 174 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmsystem.h -FILE 175 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winioctl.h -FILE 176 c:\program files\microsoft visual studio 8\vc\platformsdk\include\guiddef.h -FILE 177 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsmcrd.h -FILE 178 c:\test_app.cc -FILE 179 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oaidl.h -FILE 180 c:\program files\microsoft visual studio 8\vc\platformsdk\include\nb30.h -FILE 181 c:\program files\microsoft visual studio 8\vc\include\xstring -FILE 182 c:\program files\microsoft visual studio 8\vc\include\xmemory -FILE 183 c:\program files\microsoft visual studio 8\vc\include\new -FILE 184 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleidl.h -FILE 185 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnls.h -FILE 186 c:\breakpad\trunk\src\google_breakpad\common\minidump_format.h -FILE 187 c:\program files\microsoft visual studio 8\vc\include\string.h -FILE 188 c:\breakpad\trunk\src\google_breakpad\common\breakpad_types.h -FILE 189 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winnt.h -FILE 190 c:\program files\microsoft visual studio 8\vc\include\ctype.h -FILE 191 c:\program files\microsoft visual studio 8\vc\include\wtime.inl -FILE 192 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h -FILE 193 c:\program files\microsoft visual studio 8\vc\platformsdk\include\propidl.h -FILE 194 c:\breakpad\trunk\src\client\windows\handler\exception_handler.h -FILE 195 c:\program files\microsoft visual studio 8\vc\include\stdlib.h -FILE 196 c:\program files\microsoft visual studio 8\vc\include\swprintf.inl -FILE 197 c:\program files\microsoft visual studio 8\vc\include\limits.h -FILE 198 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winreg.h -FILE 199 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpc.h -FILE 200 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ole2.h -FILE 201 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winscard.h -FILE 202 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objbase.h -FILE 203 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wtypes.h -FILE 204 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcndr.h -FILE 205 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdce.h -FILE 206 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsip.h -FILE 207 c:\program files\microsoft visual studio 8\vc\include\share.h -FILE 208 c:\program files\microsoft visual studio 8\vc\platformsdk\include\tvout.h -FILE 209 c:\program files\microsoft visual studio 8\vc\include\use_ansi.h -FILE 210 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winefs.h -FILE 211 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack2.h -FILE 212 c:\program files\microsoft visual studio 8\vc\platformsdk\include\commdlg.h -FILE 213 c:\program files\microsoft visual studio 8\vc\platformsdk\include\unknwn.h -FILE 214 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsock.h -FILE 215 c:\program files\microsoft visual studio 8\vc\platformsdk\include\stralign.h -FILE 216 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h -FILE 217 c:\program files\microsoft visual studio 8\vc\platformsdk\include\servprov.h -FILE 218 c:\program files\microsoft visual studio 8\vc\include\xdebug -FILE 219 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsvc.h -FILE 220 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h -FILE 221 c:\program files\microsoft visual studio 8\vc\include\xlocinfo -FILE 222 c:\program files\microsoft visual studio 8\vc\include\xlocinfo.h -FILE 223 c:\program files\microsoft visual studio 8\vc\include\locale.h -FILE 224 c:\program files\microsoft visual studio 8\vc\platformsdk\include\cguid.h -FILE 225 c:\program files\microsoft visual studio 8\vc\include\string -FILE 226 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winver.h -FILE 227 c:\program files\microsoft visual studio 8\vc\include\istream -FILE 228 c:\program files\microsoft visual studio 8\vc\include\ostream -FILE 229 c:\program files\microsoft visual studio 8\vc\include\xutility -FILE 230 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winperf.h -FILE 231 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack4.h -FILE 232 c:\program files\microsoft visual studio 8\vc\include\utility -FILE 233 c:\program files\microsoft visual studio 8\vc\include\ios -FILE 234 c:\program files\microsoft visual studio 8\vc\include\xlocnum -FILE 235 c:\program files\microsoft visual studio 8\vc\include\crtdbg.h -FILE 236 c:\program files\microsoft visual studio 8\vc\include\iosfwd -FILE 237 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcdcep.h -FILE 238 c:\program files\microsoft visual studio 8\vc\include\cwchar -FILE 239 c:\program files\microsoft visual studio 8\vc\include\climits -FILE 240 c:\program files\microsoft visual studio 8\vc\include\wchar.h -FILE 241 c:\program files\microsoft visual studio 8\vc\include\cstdlib -FILE 242 c:\program files\microsoft visual studio 8\vc\platformsdk\include\mcx.h -FILE 243 c:\program files\microsoft visual studio 8\vc\include\streambuf -FILE 244 c:\program files\microsoft visual studio 8\vc\include\xiosbase -FILE 245 c:\program files\microsoft visual studio 8\vc\platformsdk\include\reason.h -FILE 246 c:\program files\microsoft visual studio 8\vc\include\xlocale -FILE 247 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dlgs.h -FILE 248 c:\program files\microsoft visual studio 8\vc\include\cstring -FILE 249 c:\program files\microsoft visual studio 8\vc\include\stdexcept -FILE 250 c:\program files\microsoft visual studio 8\vc\platformsdk\include\pshpack1.h -FILE 251 c:\program files\microsoft visual studio 8\vc\include\exception -FILE 252 c:\program files\microsoft visual studio 8\vc\include\xstddef -FILE 253 c:\program files\microsoft visual studio 8\vc\platformsdk\include\specstrings.h -FILE 254 c:\program files\microsoft visual studio 8\vc\include\cstddef -FILE 255 c:\program files\microsoft visual studio 8\vc\platformsdk\include\basetsd.h -FILE 256 c:\program files\microsoft visual studio 8\vc\include\stddef.h -FILE 257 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winerror.h -FILE 258 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincrypt.h -FILE 259 c:\program files\microsoft visual studio 8\vc\platformsdk\include\poppack.h -FILE 260 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winspool.h -FILE 261 c:\program files\microsoft visual studio 8\vc\platformsdk\include\oleauto.h -FILE 262 c:\program files\microsoft visual studio 8\vc\platformsdk\include\prsht.h -FILE 263 c:\program files\microsoft visual studio 8\vc\platformsdk\include\objidl.h -FILE 264 c:\program files\microsoft visual studio 8\vc\include\cstdio -FILE 265 c:\program files\microsoft visual studio 8\vc\include\yvals.h -FILE 266 c:\program files\microsoft visual studio 8\vc\include\eh.h -FILE 267 c:\program files\microsoft visual studio 8\vc\platformsdk\include\lzexpand.h -FILE 268 c:\program files\microsoft visual studio 8\vc\platformsdk\include\ddeml.h -FILE 269 c:\program files\microsoft visual studio 8\vc\include\crtdefs.h -FILE 270 c:\program files\microsoft visual studio 8\vc\include\sal.h -FILE 271 c:\program files\microsoft visual studio 8\vc\include\vadefs.h -FILE 272 c:\program files\microsoft visual studio 8\vc\platformsdk\include\dbghelp.h -FILE 273 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnterr.h -FILE 274 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcasync.h -FILE 275 c:\program files\microsoft visual studio 8\vc\platformsdk\include\rpcnsi.h -FILE 276 c:\program files\microsoft visual studio 8\vc\include\typeinfo -FILE 277 c:\program files\microsoft visual studio 8\vc\platformsdk\include\windows.h -FILE 278 c:\program files\microsoft visual studio 8\vc\include\excpt.h -FILE 279 c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h -FILE 280 f:\sp\vctools\crt_bld\self_x86\crt\src\xdebug -FILE 281 f:\sp\vctools\crt_bld\self_x86\crt\src\streambuf -FILE 282 f:\sp\vctools\crt_bld\self_x86\crt\src\xiosbase -FILE 283 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocale -FILE 284 f:\sp\vctools\crt_bld\self_x86\crt\src\cstring -FILE 285 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 286 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo -FILE 287 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocinfo.h -FILE 288 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 289 f:\sp\vctools\crt_bld\self_x86\crt\src\share.h -FILE 290 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h -FILE 291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.cpp -FILE 292 f:\sp\vctools\crt_bld\self_x86\crt\src\typeinfo -FILE 293 f:\sp\vctools\crt_bld\self_x86\crt\src\xutility -FILE 294 f:\sp\vctools\crt_bld\self_x86\crt\src\utility -FILE 295 f:\sp\vctools\crt_bld\self_x86\crt\src\iosfwd -FILE 296 f:\sp\vctools\crt_bld\self_x86\crt\src\cwchar -FILE 297 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 298 f:\sp\vctools\crt_bld\self_x86\crt\src\stdexcept -FILE 299 f:\sp\vctools\crt_bld\self_x86\crt\src\exception -FILE 300 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef -FILE 301 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef -FILE 302 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 303 f:\sp\vctools\crt_bld\self_x86\crt\src\istream -FILE 304 f:\sp\vctools\crt_bld\self_x86\crt\src\ostream -FILE 305 f:\sp\vctools\crt_bld\self_x86\crt\src\ios -FILE 306 f:\sp\vctools\crt_bld\self_x86\crt\src\xlocnum -FILE 307 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h -FILE 308 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib -FILE 309 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 310 f:\sp\vctools\crt_bld\self_x86\crt\src\climits -FILE 311 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h -FILE 312 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 313 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 314 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 315 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 316 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 317 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdio -FILE 318 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 319 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 320 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 321 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 322 f:\sp\public\sdk\inc\ddbanned.h -FILE 323 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 324 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 325 f:\sp\vctools\crt_bld\self_x86\crt\src\xstring -FILE 326 f:\sp\vctools\crt_bld\self_x86\crt\src\xmemory -FILE 327 f:\sp\vctools\crt_bld\self_x86\crt\src\new -FILE 328 f:\sp\public\sdk\inc\reason.h -FILE 329 f:\sp\public\sdk\inc\wincon.h -FILE 330 f:\sp\public\sdk\inc\pshpack2.h -FILE 331 f:\sp\public\sdk\inc\mcx.h -FILE 332 f:\sp\public\sdk\inc\winuser.h -FILE 333 f:\sp\public\sdk\inc\winnls.h -FILE 334 f:\sp\public\sdk\inc\guiddef.h -FILE 335 f:\sp\public\sdk\inc\specstrings.h -FILE 336 f:\sp\public\sdk\inc\basetsd.h -FILE 337 f:\sp\public\sdk\inc\stralign.h -FILE 338 f:\sp\public\sdk\inc\tvout.h -FILE 339 f:\sp\public\sdk\inc\winsvc.h -FILE 340 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 341 f:\sp\public\sdk\inc\wingdi.h -FILE 342 f:\sp\public\sdk\inc\pshpack4.h -FILE 343 f:\sp\public\sdk\inc\poppack.h -FILE 344 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 345 f:\sp\public\sdk\inc\winnetwk.h -FILE 346 f:\sp\public\sdk\inc\imm.h -FILE 347 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 348 f:\sp\public\sdk\inc\windef.h -FILE 349 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 350 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\cpu_disp.c -FILE 351 f:\sp\public\sdk\inc\pshpack1.h -FILE 352 f:\sp\public\sdk\inc\winver.h -FILE 353 f:\sp\public\sdk\inc\windows.h -FILE 354 f:\sp\public\sdk\inc\winnt.h -FILE 355 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 356 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 357 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 358 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 359 f:\sp\public\sdk\inc\ddbanned.h -FILE 360 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 361 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 362 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 363 f:\sp\public\sdk\inc\winreg.h -FILE 364 f:\sp\public\sdk\inc\winbase.h -FILE 365 f:\sp\public\sdk\inc\winerror.h -FILE 366 f:\sp\public\sdk\inc\pshpack8.h -FILE 367 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 368 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 369 f:\sp\public\sdk\inc\reason.h -FILE 370 f:\sp\public\sdk\inc\wincon.h -FILE 371 f:\sp\public\sdk\inc\pshpack2.h -FILE 372 f:\sp\public\sdk\inc\mcx.h -FILE 373 f:\sp\public\sdk\inc\winuser.h -FILE 374 f:\sp\public\sdk\inc\winnls.h -FILE 375 f:\sp\public\sdk\inc\guiddef.h -FILE 376 f:\sp\public\sdk\inc\specstrings.h -FILE 377 f:\sp\public\sdk\inc\basetsd.h -FILE 378 f:\sp\public\sdk\inc\stralign.h -FILE 379 f:\sp\public\sdk\inc\tvout.h -FILE 380 f:\sp\public\sdk\inc\winsvc.h -FILE 381 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 382 f:\sp\public\sdk\inc\wingdi.h -FILE 383 f:\sp\public\sdk\inc\pshpack4.h -FILE 384 f:\sp\public\sdk\inc\poppack.h -FILE 385 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 386 f:\sp\public\sdk\inc\winnetwk.h -FILE 387 f:\sp\public\sdk\inc\imm.h -FILE 388 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 389 f:\sp\public\sdk\inc\windef.h -FILE 390 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 391 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\tran\i386\mathfcns.c -FILE 392 f:\sp\public\sdk\inc\pshpack1.h -FILE 393 f:\sp\public\sdk\inc\winver.h -FILE 394 f:\sp\public\sdk\inc\windows.h -FILE 395 f:\sp\public\sdk\inc\winnt.h -FILE 396 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 397 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 398 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 399 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 400 f:\sp\public\sdk\inc\ddbanned.h -FILE 401 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 402 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 403 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 404 f:\sp\public\sdk\inc\winreg.h -FILE 405 f:\sp\public\sdk\inc\winbase.h -FILE 406 f:\sp\public\sdk\inc\winerror.h -FILE 407 f:\sp\public\sdk\inc\pshpack8.h -FILE 408 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 409 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 410 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 411 f:\sp\public\sdk\inc\winreg.h -FILE 412 f:\sp\public\sdk\inc\winbase.h -FILE 413 f:\sp\public\sdk\inc\winerror.h -FILE 414 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 415 f:\sp\public\sdk\inc\windef.h -FILE 416 f:\sp\vctools\crt_bld\self_x86\crt\src\ctime.h -FILE 417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 418 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 419 f:\sp\public\sdk\inc\pshpack8.h -FILE 420 f:\sp\public\sdk\inc\reason.h -FILE 421 f:\sp\public\sdk\inc\wincon.h -FILE 422 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 423 f:\sp\public\sdk\inc\pshpack2.h -FILE 424 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 425 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 426 f:\sp\public\sdk\inc\mcx.h -FILE 427 f:\sp\public\sdk\inc\winuser.h -FILE 428 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 429 f:\sp\public\sdk\inc\winnls.h -FILE 430 f:\sp\public\sdk\inc\guiddef.h -FILE 431 f:\sp\public\sdk\inc\stralign.h -FILE 432 f:\sp\public\sdk\inc\winnt.h -FILE 433 f:\sp\public\sdk\inc\specstrings.h -FILE 434 f:\sp\public\sdk\inc\basetsd.h -FILE 435 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 436 f:\sp\public\sdk\inc\tvout.h -FILE 437 f:\sp\public\sdk\inc\winsvc.h -FILE 438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 439 f:\sp\public\sdk\inc\wingdi.h -FILE 440 f:\sp\vctools\crt_bld\self_x86\crt\src\tzset.c -FILE 441 f:\sp\public\sdk\inc\pshpack4.h -FILE 442 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 443 f:\sp\public\sdk\inc\poppack.h -FILE 444 f:\sp\public\sdk\inc\winnetwk.h -FILE 445 f:\sp\public\sdk\inc\imm.h -FILE 446 f:\sp\public\sdk\inc\ddbanned.h -FILE 447 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 448 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 449 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 450 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 451 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 452 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 453 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 455 f:\sp\public\sdk\inc\windows.h -FILE 456 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 457 f:\sp\public\sdk\inc\pshpack1.h -FILE 458 f:\sp\public\sdk\inc\winver.h -FILE 459 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 460 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 461 f:\sp\public\sdk\inc\winnt.h -FILE 462 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 463 f:\sp\public\sdk\inc\winreg.h -FILE 464 f:\sp\public\sdk\inc\winbase.h -FILE 465 f:\sp\public\sdk\inc\winerror.h -FILE 466 f:\sp\public\sdk\inc\pshpack8.h -FILE 467 f:\sp\public\sdk\inc\reason.h -FILE 468 f:\sp\public\sdk\inc\wincon.h -FILE 469 f:\sp\public\sdk\inc\pshpack2.h -FILE 470 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 471 f:\sp\public\sdk\inc\mcx.h -FILE 472 f:\sp\public\sdk\inc\winuser.h -FILE 473 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 474 f:\sp\public\sdk\inc\winnls.h -FILE 475 f:\sp\public\sdk\inc\guiddef.h -FILE 476 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 477 f:\sp\public\sdk\inc\stralign.h -FILE 478 f:\sp\public\sdk\inc\specstrings.h -FILE 479 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 480 f:\sp\public\sdk\inc\basetsd.h -FILE 481 f:\sp\public\sdk\inc\windows.h -FILE 482 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 483 f:\sp\public\sdk\inc\tvout.h -FILE 484 f:\sp\public\sdk\inc\winsvc.h -FILE 485 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 486 f:\sp\public\sdk\inc\wingdi.h -FILE 487 f:\sp\vctools\crt_bld\self_x86\crt\src\timeset.c -FILE 488 f:\sp\public\sdk\inc\pshpack4.h -FILE 489 f:\sp\public\sdk\inc\poppack.h -FILE 490 f:\sp\public\sdk\inc\winnetwk.h -FILE 491 f:\sp\public\sdk\inc\imm.h -FILE 492 f:\sp\public\sdk\inc\ddbanned.h -FILE 493 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 494 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 495 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 496 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 498 f:\sp\public\sdk\inc\windef.h -FILE 499 f:\sp\public\sdk\inc\pshpack1.h -FILE 500 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 501 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 502 f:\sp\public\sdk\inc\winver.h -FILE 503 f:\sp\public\sdk\inc\wincon.h -FILE 504 f:\sp\vctools\crt_bld\self_x86\crt\src\time.h -FILE 505 f:\sp\public\sdk\inc\imm.h -FILE 506 f:\sp\public\sdk\inc\winbase.h -FILE 507 f:\sp\public\sdk\inc\wingdi.h -FILE 508 f:\sp\public\sdk\inc\winver.h -FILE 509 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 510 f:\sp\public\sdk\inc\windows.h -FILE 511 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 512 f:\sp\public\sdk\inc\pshpack2.h -FILE 513 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 514 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 515 f:\sp\public\sdk\inc\reason.h -FILE 516 f:\sp\vctools\crt_bld\self_x86\crt\src\strftime.c -FILE 517 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 518 f:\sp\public\sdk\inc\specstrings.h -FILE 519 f:\sp\public\sdk\inc\basetsd.h -FILE 520 f:\sp\public\sdk\inc\pshpack4.h -FILE 521 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 522 f:\sp\public\sdk\inc\winnetwk.h -FILE 523 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 524 f:\sp\public\sdk\inc\stralign.h -FILE 525 f:\sp\vctools\crt_bld\self_x86\crt\src\time.inl -FILE 526 f:\sp\public\sdk\inc\poppack.h -FILE 527 f:\sp\public\sdk\inc\winsvc.h -FILE 528 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 529 f:\sp\public\sdk\inc\windef.h -FILE 530 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 531 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 532 f:\sp\public\sdk\inc\winuser.h -FILE 533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 534 f:\sp\public\sdk\inc\mcx.h -FILE 535 f:\sp\public\sdk\inc\pshpack8.h -FILE 536 f:\sp\public\sdk\inc\guiddef.h -FILE 537 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 538 f:\sp\public\sdk\inc\winnt.h -FILE 539 f:\sp\public\sdk\inc\winnls.h -FILE 540 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 541 f:\sp\public\sdk\inc\pshpack1.h -FILE 542 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 543 f:\sp\public\sdk\inc\winerror.h -FILE 544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 545 f:\sp\public\sdk\inc\winreg.h -FILE 546 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 547 f:\sp\public\sdk\inc\ddbanned.h -FILE 548 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 549 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 550 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 551 f:\sp\public\sdk\inc\tvout.h -FILE 552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 553 f:\sp\public\sdk\inc\poppack.h -FILE 554 f:\sp\public\sdk\inc\winnetwk.h -FILE 555 f:\sp\public\sdk\inc\imm.h -FILE 556 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 557 f:\sp\public\sdk\inc\windef.h -FILE 558 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 559 f:\sp\public\sdk\inc\pshpack1.h -FILE 560 f:\sp\public\sdk\inc\winver.h -FILE 561 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 562 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 563 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 564 f:\sp\public\sdk\inc\winnt.h -FILE 565 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 566 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 567 f:\sp\public\sdk\inc\winreg.h -FILE 568 f:\sp\vctools\crt_bld\self_x86\crt\src\days.c -FILE 569 f:\sp\public\sdk\inc\winbase.h -FILE 570 f:\sp\public\sdk\inc\winerror.h -FILE 571 f:\sp\public\sdk\inc\pshpack8.h -FILE 572 f:\sp\public\sdk\inc\reason.h -FILE 573 f:\sp\public\sdk\inc\wincon.h -FILE 574 f:\sp\public\sdk\inc\ddbanned.h -FILE 575 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 576 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 577 f:\sp\public\sdk\inc\pshpack2.h -FILE 578 f:\sp\public\sdk\inc\mcx.h -FILE 579 f:\sp\public\sdk\inc\winuser.h -FILE 580 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 581 f:\sp\public\sdk\inc\winnls.h -FILE 582 f:\sp\public\sdk\inc\guiddef.h -FILE 583 f:\sp\public\sdk\inc\windows.h -FILE 584 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 585 f:\sp\public\sdk\inc\specstrings.h -FILE 586 f:\sp\public\sdk\inc\basetsd.h -FILE 587 f:\sp\public\sdk\inc\stralign.h -FILE 588 f:\sp\public\sdk\inc\tvout.h -FILE 589 f:\sp\public\sdk\inc\winsvc.h -FILE 590 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 591 f:\sp\public\sdk\inc\wingdi.h -FILE 592 f:\sp\public\sdk\inc\pshpack4.h -FILE 593 f:\sp\public\sdk\inc\wincon.h -FILE 594 f:\sp\public\sdk\inc\imm.h -FILE 595 f:\sp\public\sdk\inc\winbase.h -FILE 596 f:\sp\public\sdk\inc\wingdi.h -FILE 597 f:\sp\public\sdk\inc\winver.h -FILE 598 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 599 f:\sp\public\sdk\inc\windows.h -FILE 600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 601 f:\sp\public\sdk\inc\pshpack2.h -FILE 602 f:\sp\public\sdk\inc\reason.h -FILE 603 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicol.c -FILE 604 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 605 f:\sp\public\sdk\inc\specstrings.h -FILE 606 f:\sp\public\sdk\inc\basetsd.h -FILE 607 f:\sp\public\sdk\inc\pshpack4.h -FILE 608 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 609 f:\sp\public\sdk\inc\winnetwk.h -FILE 610 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 611 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 612 f:\sp\public\sdk\inc\stralign.h -FILE 613 f:\sp\public\sdk\inc\poppack.h -FILE 614 f:\sp\public\sdk\inc\winsvc.h -FILE 615 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 616 f:\sp\public\sdk\inc\windef.h -FILE 617 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 618 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 619 f:\sp\public\sdk\inc\winuser.h -FILE 620 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 621 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 622 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 623 f:\sp\public\sdk\inc\mcx.h -FILE 624 f:\sp\public\sdk\inc\pshpack8.h -FILE 625 f:\sp\public\sdk\inc\guiddef.h -FILE 626 f:\sp\public\sdk\inc\winnt.h -FILE 627 f:\sp\public\sdk\inc\winnls.h -FILE 628 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 629 f:\sp\public\sdk\inc\pshpack1.h -FILE 630 f:\sp\public\sdk\inc\winerror.h -FILE 631 f:\sp\public\sdk\inc\winreg.h -FILE 632 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 633 f:\sp\public\sdk\inc\ddbanned.h -FILE 634 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 635 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 636 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 638 f:\sp\public\sdk\inc\tvout.h -FILE 639 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 640 f:\sp\public\sdk\inc\mcx.h -FILE 641 f:\sp\public\sdk\inc\pshpack8.h -FILE 642 f:\sp\public\sdk\inc\winnt.h -FILE 643 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 644 f:\sp\public\sdk\inc\specstrings.h -FILE 645 f:\sp\public\sdk\inc\basetsd.h -FILE 646 f:\sp\public\sdk\inc\winnls.h -FILE 647 f:\sp\public\sdk\inc\pshpack1.h -FILE 648 f:\sp\public\sdk\inc\winerror.h -FILE 649 f:\sp\public\sdk\inc\winreg.h -FILE 650 f:\sp\vctools\crt_bld\self_x86\crt\src\strnicmp.c -FILE 651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 652 f:\sp\public\sdk\inc\tvout.h -FILE 653 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 654 f:\sp\public\sdk\inc\wincon.h -FILE 655 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 656 f:\sp\public\sdk\inc\imm.h -FILE 657 f:\sp\public\sdk\inc\guiddef.h -FILE 658 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 659 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 660 f:\sp\public\sdk\inc\winbase.h -FILE 661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 662 f:\sp\public\sdk\inc\wingdi.h -FILE 663 f:\sp\public\sdk\inc\windows.h -FILE 664 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 665 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 666 f:\sp\public\sdk\inc\winver.h -FILE 667 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 668 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 669 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 670 f:\sp\public\sdk\inc\pshpack2.h -FILE 671 f:\sp\public\sdk\inc\reason.h -FILE 672 f:\sp\public\sdk\inc\pshpack4.h -FILE 673 f:\sp\public\sdk\inc\winnetwk.h -FILE 674 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 675 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 676 f:\sp\public\sdk\inc\stralign.h -FILE 677 f:\sp\public\sdk\inc\windef.h -FILE 678 f:\sp\public\sdk\inc\poppack.h -FILE 679 f:\sp\public\sdk\inc\winsvc.h -FILE 680 f:\sp\public\sdk\inc\ddbanned.h -FILE 681 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 682 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 683 f:\sp\public\sdk\inc\winuser.h -FILE 684 f:\sp\public\sdk\inc\mcx.h -FILE 685 f:\sp\public\sdk\inc\pshpack8.h -FILE 686 f:\sp\public\sdk\inc\winnt.h -FILE 687 f:\sp\public\sdk\inc\specstrings.h -FILE 688 f:\sp\public\sdk\inc\basetsd.h -FILE 689 f:\sp\public\sdk\inc\winnls.h -FILE 690 f:\sp\public\sdk\inc\pshpack1.h -FILE 691 f:\sp\public\sdk\inc\winerror.h -FILE 692 f:\sp\public\sdk\inc\winreg.h -FILE 693 f:\sp\vctools\crt_bld\self_x86\crt\src\stricmp.c -FILE 694 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 695 f:\sp\public\sdk\inc\tvout.h -FILE 696 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 697 f:\sp\public\sdk\inc\wincon.h -FILE 698 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 699 f:\sp\public\sdk\inc\imm.h -FILE 700 f:\sp\public\sdk\inc\guiddef.h -FILE 701 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 703 f:\sp\public\sdk\inc\winbase.h -FILE 704 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 705 f:\sp\public\sdk\inc\wingdi.h -FILE 706 f:\sp\public\sdk\inc\windows.h -FILE 707 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 708 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 709 f:\sp\public\sdk\inc\winver.h -FILE 710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 712 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 713 f:\sp\public\sdk\inc\pshpack2.h -FILE 714 f:\sp\public\sdk\inc\reason.h -FILE 715 f:\sp\public\sdk\inc\pshpack4.h -FILE 716 f:\sp\public\sdk\inc\winnetwk.h -FILE 717 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 718 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 719 f:\sp\public\sdk\inc\stralign.h -FILE 720 f:\sp\public\sdk\inc\windef.h -FILE 721 f:\sp\public\sdk\inc\poppack.h -FILE 722 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 723 f:\sp\public\sdk\inc\winsvc.h -FILE 724 f:\sp\public\sdk\inc\ddbanned.h -FILE 725 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 726 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 727 f:\sp\public\sdk\inc\winuser.h -FILE 728 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 729 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 730 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 731 f:\sp\vctools\crt_bld\self_x86\crt\src\wcslen.c -FILE 732 f:\sp\public\sdk\inc\ddbanned.h -FILE 733 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 734 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 735 f:\sp\public\sdk\inc\winnt.h -FILE 736 f:\sp\public\sdk\inc\pshpack4.h -FILE 737 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 738 f:\sp\public\sdk\inc\poppack.h -FILE 739 f:\sp\vctools\crt_bld\self_x86\crt\src\tcsncpy_s.inl -FILE 740 f:\sp\public\sdk\inc\winnetwk.h -FILE 741 f:\sp\public\sdk\inc\imm.h -FILE 742 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 743 f:\sp\public\sdk\inc\pshpack1.h -FILE 744 f:\sp\public\sdk\inc\winver.h -FILE 745 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 746 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 747 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 748 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 749 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 750 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 751 f:\sp\public\sdk\inc\guiddef.h -FILE 752 f:\sp\public\sdk\inc\windows.h -FILE 753 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 754 f:\sp\public\sdk\inc\specstrings.h -FILE 755 f:\sp\public\sdk\inc\basetsd.h -FILE 756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 757 f:\sp\public\sdk\inc\winreg.h -FILE 758 f:\sp\vctools\crt_bld\self_x86\crt\src\strncpy_s.c -FILE 759 f:\sp\public\sdk\inc\winbase.h -FILE 760 f:\sp\public\sdk\inc\winerror.h -FILE 761 f:\sp\public\sdk\inc\pshpack8.h -FILE 762 f:\sp\public\sdk\inc\reason.h -FILE 763 f:\sp\public\sdk\inc\wincon.h -FILE 764 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 765 f:\sp\public\sdk\inc\ddbanned.h -FILE 766 f:\sp\public\sdk\inc\windef.h -FILE 767 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 768 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 769 f:\sp\public\sdk\inc\pshpack2.h -FILE 770 f:\sp\public\sdk\inc\mcx.h -FILE 771 f:\sp\public\sdk\inc\winuser.h -FILE 772 f:\sp\public\sdk\inc\winnls.h -FILE 773 f:\sp\public\sdk\inc\stralign.h -FILE 774 f:\sp\public\sdk\inc\tvout.h -FILE 775 f:\sp\public\sdk\inc\winsvc.h -FILE 776 f:\sp\public\sdk\inc\wingdi.h -FILE 777 f:\sp\public\sdk\inc\winnt.h -FILE 778 f:\sp\public\sdk\inc\pshpack4.h -FILE 779 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 780 f:\sp\public\sdk\inc\poppack.h -FILE 781 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscpy_s.inl -FILE 782 f:\sp\public\sdk\inc\winnetwk.h -FILE 783 f:\sp\public\sdk\inc\imm.h -FILE 784 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 785 f:\sp\public\sdk\inc\pshpack1.h -FILE 786 f:\sp\public\sdk\inc\winver.h -FILE 787 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 788 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 790 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 791 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 792 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 793 f:\sp\public\sdk\inc\guiddef.h -FILE 794 f:\sp\public\sdk\inc\windows.h -FILE 795 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 796 f:\sp\public\sdk\inc\specstrings.h -FILE 797 f:\sp\public\sdk\inc\basetsd.h -FILE 798 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 799 f:\sp\public\sdk\inc\winreg.h -FILE 800 f:\sp\vctools\crt_bld\self_x86\crt\src\strcpy_s.c -FILE 801 f:\sp\public\sdk\inc\winbase.h -FILE 802 f:\sp\public\sdk\inc\winerror.h -FILE 803 f:\sp\public\sdk\inc\pshpack8.h -FILE 804 f:\sp\public\sdk\inc\reason.h -FILE 805 f:\sp\public\sdk\inc\wincon.h -FILE 806 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 807 f:\sp\public\sdk\inc\ddbanned.h -FILE 808 f:\sp\public\sdk\inc\windef.h -FILE 809 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 810 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 811 f:\sp\public\sdk\inc\pshpack2.h -FILE 812 f:\sp\public\sdk\inc\mcx.h -FILE 813 f:\sp\public\sdk\inc\winuser.h -FILE 814 f:\sp\public\sdk\inc\winnls.h -FILE 815 f:\sp\public\sdk\inc\stralign.h -FILE 816 f:\sp\public\sdk\inc\tvout.h -FILE 817 f:\sp\public\sdk\inc\winsvc.h -FILE 818 f:\sp\public\sdk\inc\wingdi.h -FILE 819 f:\sp\public\sdk\inc\winnt.h -FILE 820 f:\sp\public\sdk\inc\pshpack4.h -FILE 821 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 822 f:\sp\public\sdk\inc\poppack.h -FILE 823 f:\sp\vctools\crt_bld\self_x86\crt\src\tcscat_s.inl -FILE 824 f:\sp\public\sdk\inc\winnetwk.h -FILE 825 f:\sp\public\sdk\inc\imm.h -FILE 826 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 827 f:\sp\public\sdk\inc\pshpack1.h -FILE 828 f:\sp\public\sdk\inc\winver.h -FILE 829 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 830 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 831 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 832 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 833 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 834 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 835 f:\sp\public\sdk\inc\guiddef.h -FILE 836 f:\sp\public\sdk\inc\windows.h -FILE 837 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 838 f:\sp\public\sdk\inc\specstrings.h -FILE 839 f:\sp\public\sdk\inc\basetsd.h -FILE 840 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 841 f:\sp\public\sdk\inc\winreg.h -FILE 842 f:\sp\vctools\crt_bld\self_x86\crt\src\strcat_s.c -FILE 843 f:\sp\public\sdk\inc\winbase.h -FILE 844 f:\sp\public\sdk\inc\winerror.h -FILE 845 f:\sp\public\sdk\inc\pshpack8.h -FILE 846 f:\sp\public\sdk\inc\reason.h -FILE 847 f:\sp\public\sdk\inc\wincon.h -FILE 848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 849 f:\sp\public\sdk\inc\ddbanned.h -FILE 850 f:\sp\public\sdk\inc\windef.h -FILE 851 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 852 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 853 f:\sp\public\sdk\inc\pshpack2.h -FILE 854 f:\sp\public\sdk\inc\mcx.h -FILE 855 f:\sp\public\sdk\inc\winuser.h -FILE 856 f:\sp\public\sdk\inc\winnls.h -FILE 857 f:\sp\public\sdk\inc\stralign.h -FILE 858 f:\sp\public\sdk\inc\tvout.h -FILE 859 f:\sp\public\sdk\inc\winsvc.h -FILE 860 f:\sp\public\sdk\inc\wingdi.h -FILE 861 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 862 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 863 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 864 f:\sp\vctools\crt_bld\self_x86\crt\src\strlen_s.c -FILE 865 f:\sp\public\sdk\inc\ddbanned.h -FILE 866 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 867 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 868 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strpbrk.asm -FILE 869 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM -FILE 870 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 871 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\_strnicm.asm -FILE 872 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 873 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 874 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 875 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 876 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\strncmp.c -FILE 877 f:\sp\public\sdk\inc\ddbanned.h -FILE 878 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 879 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 880 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strlen.asm -FILE 881 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 882 f:\sp\public\sdk\inc\pshpack2.h -FILE 883 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 884 f:\sp\public\sdk\inc\mcx.h -FILE 885 f:\sp\public\sdk\inc\winuser.h -FILE 886 f:\sp\public\sdk\inc\winnls.h -FILE 887 f:\sp\public\sdk\inc\stralign.h -FILE 888 f:\sp\public\sdk\inc\tvout.h -FILE 889 f:\sp\public\sdk\inc\winsvc.h -FILE 890 f:\sp\public\sdk\inc\wingdi.h -FILE 891 f:\sp\public\sdk\inc\winnt.h -FILE 892 f:\sp\public\sdk\inc\pshpack4.h -FILE 893 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 894 f:\sp\public\sdk\inc\poppack.h -FILE 895 f:\sp\public\sdk\inc\winnetwk.h -FILE 896 f:\sp\public\sdk\inc\imm.h -FILE 897 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 898 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 899 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 900 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 901 f:\sp\vctools\crt_bld\self_x86\crt\src\strdup.c -FILE 902 f:\sp\public\sdk\inc\pshpack1.h -FILE 903 f:\sp\public\sdk\inc\winver.h -FILE 904 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 905 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 906 f:\sp\public\sdk\inc\guiddef.h -FILE 907 f:\sp\public\sdk\inc\windows.h -FILE 908 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 909 f:\sp\public\sdk\inc\specstrings.h -FILE 910 f:\sp\public\sdk\inc\basetsd.h -FILE 911 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 912 f:\sp\public\sdk\inc\winreg.h -FILE 913 f:\sp\public\sdk\inc\ddbanned.h -FILE 914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 916 f:\sp\public\sdk\inc\winbase.h -FILE 917 f:\sp\public\sdk\inc\winerror.h -FILE 918 f:\sp\public\sdk\inc\pshpack8.h -FILE 919 f:\sp\public\sdk\inc\reason.h -FILE 920 f:\sp\public\sdk\inc\wincon.h -FILE 921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 922 f:\sp\public\sdk\inc\windef.h -FILE 923 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcspn.asm -FILE 924 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\STRSPN.ASM -FILE 925 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 926 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strcmp.asm -FILE 927 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 928 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\strchr.asm -FILE 929 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 930 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memset.c -FILE 931 f:\sp\public\sdk\inc\ddbanned.h -FILE 932 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 933 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 934 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memset.asm -FILE 935 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 936 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 937 f:\sp\public\sdk\inc\poppack.h -FILE 938 f:\sp\public\sdk\inc\winnetwk.h -FILE 939 f:\sp\public\sdk\inc\imm.h -FILE 940 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 941 f:\sp\public\sdk\inc\pshpack1.h -FILE 942 f:\sp\public\sdk\inc\winver.h -FILE 943 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 944 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 945 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 946 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 947 f:\sp\public\sdk\inc\guiddef.h -FILE 948 f:\sp\public\sdk\inc\windows.h -FILE 949 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 950 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 951 f:\sp\public\sdk\inc\specstrings.h -FILE 952 f:\sp\public\sdk\inc\basetsd.h -FILE 953 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 954 f:\sp\public\sdk\inc\winreg.h -FILE 955 f:\sp\vctools\crt_bld\self_x86\crt\src\memmove_s.c -FILE 956 f:\sp\public\sdk\inc\winbase.h -FILE 957 f:\sp\public\sdk\inc\winerror.h -FILE 958 f:\sp\public\sdk\inc\pshpack8.h -FILE 959 f:\sp\public\sdk\inc\reason.h -FILE 960 f:\sp\public\sdk\inc\wincon.h -FILE 961 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 962 f:\sp\public\sdk\inc\windef.h -FILE 963 f:\sp\public\sdk\inc\ddbanned.h -FILE 964 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 965 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 966 f:\sp\public\sdk\inc\pshpack2.h -FILE 967 f:\sp\public\sdk\inc\mcx.h -FILE 968 f:\sp\public\sdk\inc\winuser.h -FILE 969 f:\sp\public\sdk\inc\winnls.h -FILE 970 f:\sp\public\sdk\inc\stralign.h -FILE 971 f:\sp\public\sdk\inc\tvout.h -FILE 972 f:\sp\public\sdk\inc\winsvc.h -FILE 973 f:\sp\public\sdk\inc\wingdi.h -FILE 974 f:\sp\public\sdk\inc\winnt.h -FILE 975 f:\sp\public\sdk\inc\pshpack4.h -FILE 976 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memmove.asm -FILE 977 F:\SP\vctools\crt_bld\SELF_X86\crt\src\Intel\MEMCPY.ASM -FILE 978 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 979 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\memcmp.c -FILE 980 f:\sp\public\sdk\inc\ddbanned.h -FILE 981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 982 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 983 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 984 f:\sp\public\sdk\inc\poppack.h -FILE 985 f:\sp\public\sdk\inc\winnetwk.h -FILE 986 f:\sp\public\sdk\inc\imm.h -FILE 987 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 988 f:\sp\public\sdk\inc\pshpack1.h -FILE 989 f:\sp\public\sdk\inc\winver.h -FILE 990 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 991 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 992 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 993 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 994 f:\sp\public\sdk\inc\guiddef.h -FILE 995 f:\sp\public\sdk\inc\windows.h -FILE 996 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 997 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 998 f:\sp\public\sdk\inc\specstrings.h -FILE 999 f:\sp\public\sdk\inc\basetsd.h -FILE 1000 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1001 f:\sp\public\sdk\inc\winreg.h -FILE 1002 f:\sp\vctools\crt_bld\self_x86\crt\src\memcpy_s.c -FILE 1003 f:\sp\public\sdk\inc\winbase.h -FILE 1004 f:\sp\public\sdk\inc\winerror.h -FILE 1005 f:\sp\public\sdk\inc\pshpack8.h -FILE 1006 f:\sp\public\sdk\inc\reason.h -FILE 1007 f:\sp\public\sdk\inc\wincon.h -FILE 1008 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1009 f:\sp\public\sdk\inc\windef.h -FILE 1010 f:\sp\public\sdk\inc\ddbanned.h -FILE 1011 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1012 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1013 f:\sp\public\sdk\inc\pshpack2.h -FILE 1014 f:\sp\public\sdk\inc\mcx.h -FILE 1015 f:\sp\public\sdk\inc\winuser.h -FILE 1016 f:\sp\public\sdk\inc\winnls.h -FILE 1017 f:\sp\public\sdk\inc\stralign.h -FILE 1018 f:\sp\public\sdk\inc\tvout.h -FILE 1019 f:\sp\public\sdk\inc\winsvc.h -FILE 1020 f:\sp\public\sdk\inc\wingdi.h -FILE 1021 f:\sp\public\sdk\inc\winnt.h -FILE 1022 f:\sp\public\sdk\inc\pshpack4.h -FILE 1023 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\string\i386\p4_memcpy.c -FILE 1024 f:\sp\public\sdk\inc\ddbanned.h -FILE 1025 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 1026 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 1027 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\memcpy.asm -FILE 1028 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 1029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1030 f:\sp\public\sdk\inc\wincon.h -FILE 1031 f:\sp\public\sdk\inc\imm.h -FILE 1032 f:\sp\public\sdk\inc\winbase.h -FILE 1033 f:\sp\public\sdk\inc\wingdi.h -FILE 1034 f:\sp\public\sdk\inc\winver.h -FILE 1035 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1036 f:\sp\public\sdk\inc\windows.h -FILE 1037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1038 f:\sp\public\sdk\inc\pshpack2.h -FILE 1039 f:\sp\public\sdk\inc\reason.h -FILE 1040 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputs.c -FILE 1041 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1042 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1043 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1044 f:\sp\public\sdk\inc\specstrings.h -FILE 1045 f:\sp\public\sdk\inc\basetsd.h -FILE 1046 f:\sp\public\sdk\inc\pshpack4.h -FILE 1047 f:\sp\public\sdk\inc\winnetwk.h -FILE 1048 f:\sp\public\sdk\inc\stralign.h -FILE 1049 f:\sp\public\sdk\inc\poppack.h -FILE 1050 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1051 f:\sp\public\sdk\inc\winsvc.h -FILE 1052 f:\sp\public\sdk\inc\windef.h -FILE 1053 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1054 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1055 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1056 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1057 f:\sp\public\sdk\inc\winuser.h -FILE 1058 f:\sp\public\sdk\inc\mcx.h -FILE 1059 f:\sp\public\sdk\inc\pshpack8.h -FILE 1060 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1061 f:\sp\public\sdk\inc\guiddef.h -FILE 1062 f:\sp\public\sdk\inc\winnt.h -FILE 1063 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1064 f:\sp\public\sdk\inc\winnls.h -FILE 1065 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1066 f:\sp\public\sdk\inc\pshpack1.h -FILE 1067 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1068 f:\sp\public\sdk\inc\winerror.h -FILE 1069 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1070 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1071 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1072 f:\sp\public\sdk\inc\winreg.h -FILE 1073 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1074 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1075 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1076 f:\sp\public\sdk\inc\ddbanned.h -FILE 1077 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1078 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1079 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1080 f:\sp\public\sdk\inc\tvout.h -FILE 1081 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1082 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1083 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1084 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1085 f:\sp\public\sdk\inc\wincon.h -FILE 1086 f:\sp\public\sdk\inc\imm.h -FILE 1087 f:\sp\public\sdk\inc\winbase.h -FILE 1088 f:\sp\public\sdk\inc\wingdi.h -FILE 1089 f:\sp\public\sdk\inc\winver.h -FILE 1090 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1091 f:\sp\public\sdk\inc\windows.h -FILE 1092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1093 f:\sp\public\sdk\inc\pshpack2.h -FILE 1094 f:\sp\public\sdk\inc\reason.h -FILE 1095 f:\sp\vctools\crt_bld\self_x86\crt\src\woutputp.c -FILE 1096 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1097 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1098 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1099 f:\sp\public\sdk\inc\specstrings.h -FILE 1100 f:\sp\public\sdk\inc\basetsd.h -FILE 1101 f:\sp\public\sdk\inc\pshpack4.h -FILE 1102 f:\sp\public\sdk\inc\winnetwk.h -FILE 1103 f:\sp\public\sdk\inc\stralign.h -FILE 1104 f:\sp\public\sdk\inc\poppack.h -FILE 1105 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1106 f:\sp\public\sdk\inc\winsvc.h -FILE 1107 f:\sp\public\sdk\inc\windef.h -FILE 1108 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1109 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1111 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1112 f:\sp\public\sdk\inc\winuser.h -FILE 1113 f:\sp\public\sdk\inc\mcx.h -FILE 1114 f:\sp\public\sdk\inc\pshpack8.h -FILE 1115 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1116 f:\sp\public\sdk\inc\guiddef.h -FILE 1117 f:\sp\public\sdk\inc\winnt.h -FILE 1118 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1119 f:\sp\public\sdk\inc\winnls.h -FILE 1120 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1121 f:\sp\public\sdk\inc\pshpack1.h -FILE 1122 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1123 f:\sp\public\sdk\inc\winerror.h -FILE 1124 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1125 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1126 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1127 f:\sp\public\sdk\inc\winreg.h -FILE 1128 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1129 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1130 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1131 f:\sp\public\sdk\inc\ddbanned.h -FILE 1132 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1133 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1134 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1135 f:\sp\public\sdk\inc\tvout.h -FILE 1136 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1137 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1138 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1139 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1140 f:\sp\public\sdk\inc\wincon.h -FILE 1141 f:\sp\public\sdk\inc\imm.h -FILE 1142 f:\sp\public\sdk\inc\winbase.h -FILE 1143 f:\sp\public\sdk\inc\wingdi.h -FILE 1144 f:\sp\public\sdk\inc\winver.h -FILE 1145 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1146 f:\sp\public\sdk\inc\windows.h -FILE 1147 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1148 f:\sp\public\sdk\inc\pshpack2.h -FILE 1149 f:\sp\public\sdk\inc\reason.h -FILE 1150 f:\sp\vctools\crt_bld\self_x86\crt\src\woutput.c -FILE 1151 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1152 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1154 f:\sp\public\sdk\inc\specstrings.h -FILE 1155 f:\sp\public\sdk\inc\basetsd.h -FILE 1156 f:\sp\public\sdk\inc\pshpack4.h -FILE 1157 f:\sp\public\sdk\inc\winnetwk.h -FILE 1158 f:\sp\public\sdk\inc\stralign.h -FILE 1159 f:\sp\public\sdk\inc\poppack.h -FILE 1160 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1161 f:\sp\public\sdk\inc\winsvc.h -FILE 1162 f:\sp\public\sdk\inc\windef.h -FILE 1163 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1164 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1165 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1166 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1167 f:\sp\public\sdk\inc\winuser.h -FILE 1168 f:\sp\public\sdk\inc\mcx.h -FILE 1169 f:\sp\public\sdk\inc\pshpack8.h -FILE 1170 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1171 f:\sp\public\sdk\inc\guiddef.h -FILE 1172 f:\sp\public\sdk\inc\winnt.h -FILE 1173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1174 f:\sp\public\sdk\inc\winnls.h -FILE 1175 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1176 f:\sp\public\sdk\inc\pshpack1.h -FILE 1177 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1178 f:\sp\public\sdk\inc\winerror.h -FILE 1179 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1180 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1181 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1182 f:\sp\public\sdk\inc\winreg.h -FILE 1183 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1184 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1185 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1186 f:\sp\public\sdk\inc\ddbanned.h -FILE 1187 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1188 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1189 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1190 f:\sp\public\sdk\inc\tvout.h -FILE 1191 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1192 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1193 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1194 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1195 f:\sp\public\sdk\inc\wincon.h -FILE 1196 f:\sp\public\sdk\inc\imm.h -FILE 1197 f:\sp\public\sdk\inc\winbase.h -FILE 1198 f:\sp\public\sdk\inc\wingdi.h -FILE 1199 f:\sp\public\sdk\inc\winver.h -FILE 1200 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1201 f:\sp\public\sdk\inc\windows.h -FILE 1202 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1203 f:\sp\public\sdk\inc\pshpack2.h -FILE 1204 f:\sp\public\sdk\inc\reason.h -FILE 1205 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1206 f:\sp\vctools\crt_bld\self_x86\crt\src\outputs.c -FILE 1207 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1208 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1209 f:\sp\public\sdk\inc\specstrings.h -FILE 1210 f:\sp\public\sdk\inc\basetsd.h -FILE 1211 f:\sp\public\sdk\inc\pshpack4.h -FILE 1212 f:\sp\public\sdk\inc\winnetwk.h -FILE 1213 f:\sp\public\sdk\inc\stralign.h -FILE 1214 f:\sp\public\sdk\inc\poppack.h -FILE 1215 f:\sp\public\sdk\inc\winsvc.h -FILE 1216 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1217 f:\sp\public\sdk\inc\windef.h -FILE 1218 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1220 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1221 f:\sp\public\sdk\inc\winuser.h -FILE 1222 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1223 f:\sp\public\sdk\inc\mcx.h -FILE 1224 f:\sp\public\sdk\inc\pshpack8.h -FILE 1225 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1226 f:\sp\public\sdk\inc\guiddef.h -FILE 1227 f:\sp\public\sdk\inc\winnt.h -FILE 1228 f:\sp\public\sdk\inc\winnls.h -FILE 1229 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1230 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1231 f:\sp\public\sdk\inc\pshpack1.h -FILE 1232 f:\sp\public\sdk\inc\winerror.h -FILE 1233 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1234 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1235 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1236 f:\sp\public\sdk\inc\winreg.h -FILE 1237 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1238 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1240 f:\sp\public\sdk\inc\ddbanned.h -FILE 1241 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1242 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1243 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1244 f:\sp\public\sdk\inc\tvout.h -FILE 1245 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1246 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1247 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1248 f:\sp\public\sdk\inc\wincon.h -FILE 1249 f:\sp\public\sdk\inc\imm.h -FILE 1250 f:\sp\public\sdk\inc\winbase.h -FILE 1251 f:\sp\public\sdk\inc\wingdi.h -FILE 1252 f:\sp\public\sdk\inc\winver.h -FILE 1253 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1254 f:\sp\public\sdk\inc\windows.h -FILE 1255 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1256 f:\sp\public\sdk\inc\pshpack2.h -FILE 1257 f:\sp\public\sdk\inc\reason.h -FILE 1258 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1259 f:\sp\vctools\crt_bld\self_x86\crt\src\outputp.c -FILE 1260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1261 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1262 f:\sp\public\sdk\inc\specstrings.h -FILE 1263 f:\sp\public\sdk\inc\basetsd.h -FILE 1264 f:\sp\public\sdk\inc\pshpack4.h -FILE 1265 f:\sp\public\sdk\inc\winnetwk.h -FILE 1266 f:\sp\public\sdk\inc\stralign.h -FILE 1267 f:\sp\public\sdk\inc\poppack.h -FILE 1268 f:\sp\public\sdk\inc\winsvc.h -FILE 1269 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1270 f:\sp\public\sdk\inc\windef.h -FILE 1271 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1272 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1274 f:\sp\public\sdk\inc\winuser.h -FILE 1275 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1276 f:\sp\public\sdk\inc\mcx.h -FILE 1277 f:\sp\public\sdk\inc\pshpack8.h -FILE 1278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1279 f:\sp\public\sdk\inc\guiddef.h -FILE 1280 f:\sp\public\sdk\inc\winnt.h -FILE 1281 f:\sp\public\sdk\inc\winnls.h -FILE 1282 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1283 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1284 f:\sp\public\sdk\inc\pshpack1.h -FILE 1285 f:\sp\public\sdk\inc\winerror.h -FILE 1286 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1287 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1288 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1289 f:\sp\public\sdk\inc\winreg.h -FILE 1290 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1291 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1292 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1293 f:\sp\public\sdk\inc\ddbanned.h -FILE 1294 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1296 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1297 f:\sp\public\sdk\inc\tvout.h -FILE 1298 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1299 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1300 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1301 f:\sp\public\sdk\inc\wincon.h -FILE 1302 f:\sp\public\sdk\inc\imm.h -FILE 1303 f:\sp\public\sdk\inc\winbase.h -FILE 1304 f:\sp\public\sdk\inc\wingdi.h -FILE 1305 f:\sp\public\sdk\inc\winver.h -FILE 1306 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1307 f:\sp\public\sdk\inc\windows.h -FILE 1308 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1309 f:\sp\public\sdk\inc\pshpack2.h -FILE 1310 f:\sp\public\sdk\inc\reason.h -FILE 1311 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 1312 f:\sp\vctools\crt_bld\self_x86\crt\src\output.c -FILE 1313 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1314 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1315 f:\sp\public\sdk\inc\specstrings.h -FILE 1316 f:\sp\public\sdk\inc\basetsd.h -FILE 1317 f:\sp\public\sdk\inc\pshpack4.h -FILE 1318 f:\sp\public\sdk\inc\winnetwk.h -FILE 1319 f:\sp\public\sdk\inc\stralign.h -FILE 1320 f:\sp\public\sdk\inc\poppack.h -FILE 1321 f:\sp\public\sdk\inc\winsvc.h -FILE 1322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1323 f:\sp\public\sdk\inc\windef.h -FILE 1324 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1325 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1326 f:\sp\public\sdk\inc\winuser.h -FILE 1327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1328 f:\sp\public\sdk\inc\mcx.h -FILE 1329 f:\sp\public\sdk\inc\pshpack8.h -FILE 1330 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1331 f:\sp\public\sdk\inc\guiddef.h -FILE 1332 f:\sp\public\sdk\inc\winnt.h -FILE 1333 f:\sp\public\sdk\inc\winnls.h -FILE 1334 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1335 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1336 f:\sp\public\sdk\inc\pshpack1.h -FILE 1337 f:\sp\public\sdk\inc\winerror.h -FILE 1338 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1339 f:\sp\vctools\crt_bld\self_x86\crt\src\cvt.h -FILE 1340 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 1341 f:\sp\public\sdk\inc\winreg.h -FILE 1342 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1343 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 1344 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 1345 f:\sp\public\sdk\inc\ddbanned.h -FILE 1346 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1347 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1348 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1349 f:\sp\public\sdk\inc\tvout.h -FILE 1350 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1351 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1352 f:\sp\public\sdk\inc\stralign.h -FILE 1353 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1354 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1355 f:\sp\public\sdk\inc\tvout.h -FILE 1356 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1357 f:\sp\public\sdk\inc\windows.h -FILE 1358 f:\sp\public\sdk\inc\winsvc.h -FILE 1359 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1360 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1361 f:\sp\public\sdk\inc\wingdi.h -FILE 1362 f:\sp\public\sdk\inc\pshpack4.h -FILE 1363 f:\sp\public\sdk\inc\poppack.h -FILE 1364 f:\sp\public\sdk\inc\winnetwk.h -FILE 1365 f:\sp\public\sdk\inc\imm.h -FILE 1366 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1367 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1368 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1369 f:\sp\public\sdk\inc\windef.h -FILE 1370 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1371 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1372 f:\sp\public\sdk\inc\pshpack1.h -FILE 1373 f:\sp\public\sdk\inc\winver.h -FILE 1374 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprnc.c -FILE 1375 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1377 f:\sp\public\sdk\inc\winnt.h -FILE 1378 f:\sp\public\sdk\inc\winreg.h -FILE 1379 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1380 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c -FILE 1381 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1382 f:\sp\public\sdk\inc\winbase.h -FILE 1383 f:\sp\public\sdk\inc\winerror.h -FILE 1384 f:\sp\public\sdk\inc\ddbanned.h -FILE 1385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1387 f:\sp\public\sdk\inc\pshpack8.h -FILE 1388 f:\sp\public\sdk\inc\guiddef.h -FILE 1389 f:\sp\public\sdk\inc\specstrings.h -FILE 1390 f:\sp\public\sdk\inc\basetsd.h -FILE 1391 f:\sp\public\sdk\inc\reason.h -FILE 1392 f:\sp\public\sdk\inc\wincon.h -FILE 1393 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1394 f:\sp\public\sdk\inc\pshpack2.h -FILE 1395 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1396 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1397 f:\sp\public\sdk\inc\mcx.h -FILE 1398 f:\sp\public\sdk\inc\winuser.h -FILE 1399 f:\sp\public\sdk\inc\winnls.h -FILE 1400 f:\sp\public\sdk\inc\pshpack1.h -FILE 1401 f:\sp\public\sdk\inc\winver.h -FILE 1402 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1403 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1404 f:\sp\public\sdk\inc\winnt.h -FILE 1405 f:\sp\public\sdk\inc\winreg.h -FILE 1406 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1407 f:\sp\public\sdk\inc\winbase.h -FILE 1408 f:\sp\public\sdk\inc\winerror.h -FILE 1409 f:\sp\public\sdk\inc\pshpack8.h -FILE 1410 f:\sp\public\sdk\inc\guiddef.h -FILE 1411 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1412 f:\sp\public\sdk\inc\specstrings.h -FILE 1413 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1414 f:\sp\public\sdk\inc\basetsd.h -FILE 1415 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1416 f:\sp\public\sdk\inc\reason.h -FILE 1417 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1418 f:\sp\public\sdk\inc\wincon.h -FILE 1419 f:\sp\public\sdk\inc\pshpack2.h -FILE 1420 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1421 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1422 f:\sp\public\sdk\inc\mcx.h -FILE 1423 f:\sp\public\sdk\inc\winuser.h -FILE 1424 f:\sp\public\sdk\inc\winnls.h -FILE 1425 f:\sp\vctools\crt_bld\self_x86\crt\src\vswprint.c -FILE 1426 f:\sp\public\sdk\inc\stralign.h -FILE 1427 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1428 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1429 f:\sp\public\sdk\inc\tvout.h -FILE 1430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1431 f:\sp\public\sdk\inc\windows.h -FILE 1432 f:\sp\public\sdk\inc\winsvc.h -FILE 1433 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1434 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1435 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1436 f:\sp\public\sdk\inc\wingdi.h -FILE 1437 f:\sp\public\sdk\inc\pshpack4.h -FILE 1438 f:\sp\public\sdk\inc\poppack.h -FILE 1439 f:\sp\public\sdk\inc\ddbanned.h -FILE 1440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1441 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1442 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1443 f:\sp\public\sdk\inc\winnetwk.h -FILE 1444 f:\sp\public\sdk\inc\imm.h -FILE 1445 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1446 f:\sp\public\sdk\inc\windef.h -FILE 1447 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1448 f:\sp\public\sdk\inc\windef.h -FILE 1449 f:\sp\public\sdk\inc\pshpack1.h -FILE 1450 f:\sp\public\sdk\inc\winver.h -FILE 1451 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1452 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1453 f:\sp\public\sdk\inc\winnt.h -FILE 1454 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1455 f:\sp\public\sdk\inc\winreg.h -FILE 1456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1457 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1458 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1459 f:\sp\public\sdk\inc\winbase.h -FILE 1460 f:\sp\public\sdk\inc\winerror.h -FILE 1461 f:\sp\public\sdk\inc\pshpack8.h -FILE 1462 f:\sp\vctools\crt_bld\self_x86\crt\src\vfprintf.c -FILE 1463 f:\sp\public\sdk\inc\reason.h -FILE 1464 f:\sp\public\sdk\inc\wincon.h -FILE 1465 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1466 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1467 f:\sp\public\sdk\inc\pshpack2.h -FILE 1468 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1469 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1470 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1471 f:\sp\public\sdk\inc\mcx.h -FILE 1472 f:\sp\public\sdk\inc\winuser.h -FILE 1473 f:\sp\public\sdk\inc\winnls.h -FILE 1474 f:\sp\public\sdk\inc\guiddef.h -FILE 1475 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1476 f:\sp\public\sdk\inc\windows.h -FILE 1477 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1478 f:\sp\public\sdk\inc\specstrings.h -FILE 1479 f:\sp\public\sdk\inc\basetsd.h -FILE 1480 f:\sp\public\sdk\inc\stralign.h -FILE 1481 f:\sp\public\sdk\inc\tvout.h -FILE 1482 f:\sp\public\sdk\inc\ddbanned.h -FILE 1483 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1484 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1485 f:\sp\public\sdk\inc\winsvc.h -FILE 1486 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1487 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1488 f:\sp\public\sdk\inc\wingdi.h -FILE 1489 f:\sp\public\sdk\inc\pshpack4.h -FILE 1490 f:\sp\public\sdk\inc\poppack.h -FILE 1491 f:\sp\public\sdk\inc\winnetwk.h -FILE 1492 f:\sp\public\sdk\inc\imm.h -FILE 1493 f:\sp\public\sdk\inc\windef.h -FILE 1494 f:\sp\public\sdk\inc\pshpack1.h -FILE 1495 f:\sp\public\sdk\inc\winver.h -FILE 1496 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1498 f:\sp\public\sdk\inc\winnt.h -FILE 1499 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1500 f:\sp\public\sdk\inc\winreg.h -FILE 1501 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1502 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1503 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1504 f:\sp\public\sdk\inc\winbase.h -FILE 1505 f:\sp\public\sdk\inc\winerror.h -FILE 1506 f:\sp\public\sdk\inc\pshpack8.h -FILE 1507 f:\sp\vctools\crt_bld\self_x86\crt\src\vprintf.c -FILE 1508 f:\sp\public\sdk\inc\reason.h -FILE 1509 f:\sp\public\sdk\inc\wincon.h -FILE 1510 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1511 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1512 f:\sp\public\sdk\inc\pshpack2.h -FILE 1513 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1514 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1515 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1516 f:\sp\public\sdk\inc\mcx.h -FILE 1517 f:\sp\public\sdk\inc\winuser.h -FILE 1518 f:\sp\public\sdk\inc\winnls.h -FILE 1519 f:\sp\public\sdk\inc\guiddef.h -FILE 1520 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1521 f:\sp\public\sdk\inc\windows.h -FILE 1522 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1523 f:\sp\public\sdk\inc\specstrings.h -FILE 1524 f:\sp\public\sdk\inc\basetsd.h -FILE 1525 f:\sp\public\sdk\inc\stralign.h -FILE 1526 f:\sp\public\sdk\inc\tvout.h -FILE 1527 f:\sp\public\sdk\inc\ddbanned.h -FILE 1528 f:\sp\public\sdk\inc\winsvc.h -FILE 1529 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1530 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1531 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1532 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1533 f:\sp\public\sdk\inc\wingdi.h -FILE 1534 f:\sp\public\sdk\inc\pshpack4.h -FILE 1535 f:\sp\public\sdk\inc\poppack.h -FILE 1536 f:\sp\public\sdk\inc\winnetwk.h -FILE 1537 f:\sp\public\sdk\inc\imm.h -FILE 1538 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1539 f:\sp\public\sdk\inc\pshpack1.h -FILE 1540 f:\sp\public\sdk\inc\winver.h -FILE 1541 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1542 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1543 f:\sp\public\sdk\inc\winnt.h -FILE 1544 f:\sp\public\sdk\inc\winreg.h -FILE 1545 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1546 f:\sp\public\sdk\inc\winbase.h -FILE 1547 f:\sp\public\sdk\inc\winerror.h -FILE 1548 f:\sp\public\sdk\inc\pshpack8.h -FILE 1549 f:\sp\public\sdk\inc\guiddef.h -FILE 1550 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1551 f:\sp\public\sdk\inc\specstrings.h -FILE 1552 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1553 f:\sp\public\sdk\inc\basetsd.h -FILE 1554 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1555 f:\sp\public\sdk\inc\reason.h -FILE 1556 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1557 f:\sp\public\sdk\inc\wincon.h -FILE 1558 f:\sp\public\sdk\inc\pshpack2.h -FILE 1559 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1560 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1561 f:\sp\public\sdk\inc\mcx.h -FILE 1562 f:\sp\public\sdk\inc\winuser.h -FILE 1563 f:\sp\public\sdk\inc\winnls.h -FILE 1564 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.c -FILE 1565 f:\sp\public\sdk\inc\stralign.h -FILE 1566 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1567 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1568 f:\sp\public\sdk\inc\tvout.h -FILE 1569 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1570 f:\sp\public\sdk\inc\windows.h -FILE 1571 f:\sp\public\sdk\inc\winsvc.h -FILE 1572 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1573 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1574 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1575 f:\sp\public\sdk\inc\wingdi.h -FILE 1576 f:\sp\public\sdk\inc\pshpack4.h -FILE 1577 f:\sp\public\sdk\inc\poppack.h -FILE 1578 f:\sp\public\sdk\inc\ddbanned.h -FILE 1579 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1580 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1581 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 1582 f:\sp\public\sdk\inc\winnetwk.h -FILE 1583 f:\sp\public\sdk\inc\imm.h -FILE 1584 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1585 f:\sp\public\sdk\inc\windef.h -FILE 1586 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1587 f:\sp\public\sdk\inc\windef.h -FILE 1588 f:\sp\public\sdk\inc\pshpack1.h -FILE 1589 f:\sp\public\sdk\inc\winver.h -FILE 1590 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1591 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1592 f:\sp\public\sdk\inc\winnt.h -FILE 1593 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1594 f:\sp\public\sdk\inc\winreg.h -FILE 1595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1596 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1597 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1598 f:\sp\public\sdk\inc\winbase.h -FILE 1599 f:\sp\public\sdk\inc\winerror.h -FILE 1600 f:\sp\public\sdk\inc\pshpack8.h -FILE 1601 f:\sp\vctools\crt_bld\self_x86\crt\src\printf.c -FILE 1602 f:\sp\public\sdk\inc\reason.h -FILE 1603 f:\sp\public\sdk\inc\wincon.h -FILE 1604 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1605 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1606 f:\sp\public\sdk\inc\pshpack2.h -FILE 1607 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1608 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1609 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1610 f:\sp\public\sdk\inc\mcx.h -FILE 1611 f:\sp\public\sdk\inc\winuser.h -FILE 1612 f:\sp\public\sdk\inc\winnls.h -FILE 1613 f:\sp\public\sdk\inc\guiddef.h -FILE 1614 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1615 f:\sp\public\sdk\inc\windows.h -FILE 1616 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1617 f:\sp\public\sdk\inc\specstrings.h -FILE 1618 f:\sp\public\sdk\inc\basetsd.h -FILE 1619 f:\sp\public\sdk\inc\stralign.h -FILE 1620 f:\sp\public\sdk\inc\tvout.h -FILE 1621 f:\sp\public\sdk\inc\ddbanned.h -FILE 1622 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1623 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1624 f:\sp\public\sdk\inc\winsvc.h -FILE 1625 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1626 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1627 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 1628 f:\sp\public\sdk\inc\wingdi.h -FILE 1629 f:\sp\public\sdk\inc\pshpack4.h -FILE 1630 f:\sp\public\sdk\inc\poppack.h -FILE 1631 f:\sp\public\sdk\inc\winnetwk.h -FILE 1632 f:\sp\public\sdk\inc\imm.h -FILE 1633 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1634 f:\sp\public\sdk\inc\windef.h -FILE 1635 f:\sp\public\sdk\inc\pshpack1.h -FILE 1636 f:\sp\public\sdk\inc\winver.h -FILE 1637 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1638 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1639 f:\sp\public\sdk\inc\winnt.h -FILE 1640 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1641 f:\sp\public\sdk\inc\winreg.h -FILE 1642 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1643 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1644 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1645 f:\sp\public\sdk\inc\winbase.h -FILE 1646 f:\sp\public\sdk\inc\winerror.h -FILE 1647 f:\sp\public\sdk\inc\pshpack8.h -FILE 1648 f:\sp\vctools\crt_bld\self_x86\crt\src\fprintf.c -FILE 1649 f:\sp\public\sdk\inc\reason.h -FILE 1650 f:\sp\public\sdk\inc\wincon.h -FILE 1651 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1652 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1653 f:\sp\public\sdk\inc\pshpack2.h -FILE 1654 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1655 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1656 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1657 f:\sp\public\sdk\inc\mcx.h -FILE 1658 f:\sp\public\sdk\inc\winuser.h -FILE 1659 f:\sp\public\sdk\inc\winnls.h -FILE 1660 f:\sp\public\sdk\inc\guiddef.h -FILE 1661 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1662 f:\sp\public\sdk\inc\windows.h -FILE 1663 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1664 f:\sp\public\sdk\inc\specstrings.h -FILE 1665 f:\sp\public\sdk\inc\basetsd.h -FILE 1666 f:\sp\public\sdk\inc\stralign.h -FILE 1667 f:\sp\public\sdk\inc\tvout.h -FILE 1668 f:\sp\public\sdk\inc\ddbanned.h -FILE 1669 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1670 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 1671 f:\sp\public\sdk\inc\winsvc.h -FILE 1672 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1673 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1674 f:\sp\public\sdk\inc\wingdi.h -FILE 1675 f:\sp\public\sdk\inc\pshpack4.h -FILE 1676 f:\sp\public\sdk\inc\poppack.h -FILE 1677 f:\sp\public\sdk\inc\winnetwk.h -FILE 1678 f:\sp\public\sdk\inc\imm.h -FILE 1679 f:\sp\public\sdk\inc\pshpack1.h -FILE 1680 f:\sp\public\sdk\inc\winver.h -FILE 1681 f:\sp\public\sdk\inc\winnt.h -FILE 1682 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1683 f:\sp\public\sdk\inc\winreg.h -FILE 1684 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1685 f:\sp\public\sdk\inc\winbase.h -FILE 1686 f:\sp\public\sdk\inc\winerror.h -FILE 1687 f:\sp\public\sdk\inc\pshpack8.h -FILE 1688 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 1689 f:\sp\public\sdk\inc\reason.h -FILE 1690 f:\sp\public\sdk\inc\wincon.h -FILE 1691 f:\sp\public\sdk\inc\pshpack2.h -FILE 1692 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1693 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1694 f:\sp\public\sdk\inc\mcx.h -FILE 1695 f:\sp\public\sdk\inc\winuser.h -FILE 1696 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1697 f:\sp\public\sdk\inc\winnls.h -FILE 1698 f:\sp\public\sdk\inc\guiddef.h -FILE 1699 f:\sp\public\sdk\inc\windows.h -FILE 1700 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1701 f:\sp\public\sdk\inc\specstrings.h -FILE 1702 f:\sp\public\sdk\inc\basetsd.h -FILE 1703 f:\sp\public\sdk\inc\stralign.h -FILE 1704 f:\sp\vctools\crt_bld\self_x86\crt\src\fflush.c -FILE 1705 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1706 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 1707 f:\sp\public\sdk\inc\tvout.h -FILE 1708 f:\sp\public\sdk\inc\winsvc.h -FILE 1709 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1710 f:\sp\public\sdk\inc\wingdi.h -FILE 1711 f:\sp\public\sdk\inc\pshpack4.h -FILE 1712 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1713 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1714 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1715 f:\sp\public\sdk\inc\poppack.h -FILE 1716 f:\sp\public\sdk\inc\ddbanned.h -FILE 1717 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1718 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1719 f:\sp\public\sdk\inc\winnetwk.h -FILE 1720 f:\sp\public\sdk\inc\imm.h -FILE 1721 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1722 f:\sp\public\sdk\inc\windef.h -FILE 1723 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1724 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1725 f:\sp\public\sdk\inc\pshpack8.h -FILE 1726 f:\sp\public\sdk\inc\reason.h -FILE 1727 f:\sp\public\sdk\inc\wincon.h -FILE 1728 f:\sp\public\sdk\inc\pshpack2.h -FILE 1729 f:\sp\public\sdk\inc\mcx.h -FILE 1730 f:\sp\public\sdk\inc\winuser.h -FILE 1731 f:\sp\public\sdk\inc\winnls.h -FILE 1732 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1733 f:\sp\public\sdk\inc\windef.h -FILE 1734 f:\sp\public\sdk\inc\stralign.h -FILE 1735 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1736 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1737 f:\sp\public\sdk\inc\tvout.h -FILE 1738 f:\sp\public\sdk\inc\winsvc.h -FILE 1739 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1740 f:\sp\public\sdk\inc\wingdi.h -FILE 1741 f:\sp\public\sdk\inc\pshpack4.h -FILE 1742 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1743 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1744 f:\sp\public\sdk\inc\poppack.h -FILE 1745 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1746 f:\sp\public\sdk\inc\winnt.h -FILE 1747 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1748 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1749 f:\sp\public\sdk\inc\winnetwk.h -FILE 1750 f:\sp\public\sdk\inc\imm.h -FILE 1751 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1752 f:\sp\vctools\crt_bld\self_x86\crt\src\fclose.c -FILE 1753 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1754 f:\sp\public\sdk\inc\pshpack1.h -FILE 1755 f:\sp\public\sdk\inc\winver.h -FILE 1756 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1758 f:\sp\public\sdk\inc\guiddef.h -FILE 1759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1760 f:\sp\public\sdk\inc\ddbanned.h -FILE 1761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1763 f:\sp\public\sdk\inc\specstrings.h -FILE 1764 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1765 f:\sp\public\sdk\inc\basetsd.h -FILE 1766 f:\sp\public\sdk\inc\windows.h -FILE 1767 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1768 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 1769 f:\sp\public\sdk\inc\winreg.h -FILE 1770 f:\sp\public\sdk\inc\winbase.h -FILE 1771 f:\sp\public\sdk\inc\winerror.h -FILE 1772 f:\sp\public\sdk\inc\poppack.h -FILE 1773 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1774 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1775 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1776 f:\sp\public\sdk\inc\winnetwk.h -FILE 1777 f:\sp\public\sdk\inc\imm.h -FILE 1778 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1779 f:\sp\public\sdk\inc\windef.h -FILE 1780 f:\sp\public\sdk\inc\pshpack1.h -FILE 1781 f:\sp\public\sdk\inc\winver.h -FILE 1782 f:\sp\public\sdk\inc\windows.h -FILE 1783 f:\sp\public\sdk\inc\winnt.h -FILE 1784 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1785 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1786 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1787 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1788 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1789 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1790 f:\sp\public\sdk\inc\winreg.h -FILE 1791 f:\sp\public\sdk\inc\winbase.h -FILE 1792 f:\sp\vctools\crt_bld\self_x86\crt\src\closeall.c -FILE 1793 f:\sp\public\sdk\inc\winerror.h -FILE 1794 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1795 f:\sp\public\sdk\inc\pshpack8.h -FILE 1796 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1797 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1798 f:\sp\public\sdk\inc\reason.h -FILE 1799 f:\sp\public\sdk\inc\wincon.h -FILE 1800 f:\sp\public\sdk\inc\ddbanned.h -FILE 1801 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1802 f:\sp\public\sdk\inc\pshpack2.h -FILE 1803 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1804 f:\sp\public\sdk\inc\mcx.h -FILE 1805 f:\sp\public\sdk\inc\winuser.h -FILE 1806 f:\sp\public\sdk\inc\winnls.h -FILE 1807 f:\sp\public\sdk\inc\guiddef.h -FILE 1808 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1809 f:\sp\public\sdk\inc\specstrings.h -FILE 1810 f:\sp\public\sdk\inc\basetsd.h -FILE 1811 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1812 f:\sp\public\sdk\inc\stralign.h -FILE 1813 f:\sp\public\sdk\inc\tvout.h -FILE 1814 f:\sp\public\sdk\inc\winsvc.h -FILE 1815 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1816 f:\sp\public\sdk\inc\wingdi.h -FILE 1817 f:\sp\public\sdk\inc\pshpack4.h -FILE 1818 f:\sp\public\sdk\inc\pshpack8.h -FILE 1819 f:\sp\public\sdk\inc\reason.h -FILE 1820 f:\sp\public\sdk\inc\wincon.h -FILE 1821 f:\sp\public\sdk\inc\pshpack2.h -FILE 1822 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1823 f:\sp\public\sdk\inc\mcx.h -FILE 1824 f:\sp\public\sdk\inc\winuser.h -FILE 1825 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1826 f:\sp\public\sdk\inc\winnls.h -FILE 1827 f:\sp\public\sdk\inc\guiddef.h -FILE 1828 f:\sp\public\sdk\inc\windows.h -FILE 1829 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1830 f:\sp\public\sdk\inc\specstrings.h -FILE 1831 f:\sp\public\sdk\inc\basetsd.h -FILE 1832 f:\sp\public\sdk\inc\stralign.h -FILE 1833 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1834 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 1835 f:\sp\public\sdk\inc\tvout.h -FILE 1836 f:\sp\public\sdk\inc\winsvc.h -FILE 1837 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1838 f:\sp\public\sdk\inc\wingdi.h -FILE 1839 f:\sp\public\sdk\inc\pshpack4.h -FILE 1840 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1841 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1842 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1844 f:\sp\public\sdk\inc\poppack.h -FILE 1845 f:\sp\public\sdk\inc\winnetwk.h -FILE 1846 f:\sp\public\sdk\inc\imm.h -FILE 1847 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1848 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1849 f:\sp\public\sdk\inc\windef.h -FILE 1850 f:\sp\vctools\crt_bld\self_x86\crt\src\_sftbuf.c -FILE 1851 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1852 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1853 f:\sp\public\sdk\inc\pshpack1.h -FILE 1854 f:\sp\public\sdk\inc\winver.h -FILE 1855 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1856 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1857 f:\sp\public\sdk\inc\ddbanned.h -FILE 1858 f:\sp\public\sdk\inc\winnt.h -FILE 1859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1860 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1861 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1862 f:\sp\public\sdk\inc\winreg.h -FILE 1863 f:\sp\public\sdk\inc\winbase.h -FILE 1864 f:\sp\public\sdk\inc\winerror.h -FILE 1865 f:\sp\public\sdk\inc\pshpack1.h -FILE 1866 f:\sp\public\sdk\inc\winver.h -FILE 1867 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1868 f:\sp\public\sdk\inc\winnt.h -FILE 1869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1870 f:\sp\public\sdk\inc\winreg.h -FILE 1871 f:\sp\public\sdk\inc\winbase.h -FILE 1872 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1873 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1874 f:\sp\public\sdk\inc\winerror.h -FILE 1875 f:\sp\public\sdk\inc\pshpack8.h -FILE 1876 f:\sp\public\sdk\inc\reason.h -FILE 1877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1878 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1879 f:\sp\public\sdk\inc\wincon.h -FILE 1880 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1881 f:\sp\public\sdk\inc\pshpack2.h -FILE 1882 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1883 f:\sp\public\sdk\inc\mcx.h -FILE 1884 f:\sp\public\sdk\inc\winuser.h -FILE 1885 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1886 f:\sp\public\sdk\inc\winnls.h -FILE 1887 f:\sp\public\sdk\inc\guiddef.h -FILE 1888 f:\sp\public\sdk\inc\windows.h -FILE 1889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1890 f:\sp\public\sdk\inc\specstrings.h -FILE 1891 f:\sp\public\sdk\inc\basetsd.h -FILE 1892 f:\sp\public\sdk\inc\stralign.h -FILE 1893 f:\sp\vctools\crt_bld\self_x86\crt\src\_getbuf.c -FILE 1894 f:\sp\public\sdk\inc\tvout.h -FILE 1895 f:\sp\public\sdk\inc\winsvc.h -FILE 1896 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1897 f:\sp\public\sdk\inc\wingdi.h -FILE 1898 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1899 f:\sp\public\sdk\inc\pshpack4.h -FILE 1900 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1901 f:\sp\public\sdk\inc\poppack.h -FILE 1902 f:\sp\public\sdk\inc\ddbanned.h -FILE 1903 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1904 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1905 f:\sp\public\sdk\inc\winnetwk.h -FILE 1906 f:\sp\public\sdk\inc\imm.h -FILE 1907 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1908 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1909 f:\sp\public\sdk\inc\windef.h -FILE 1910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1911 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1912 f:\sp\public\sdk\inc\windef.h -FILE 1913 f:\sp\public\sdk\inc\pshpack1.h -FILE 1914 f:\sp\public\sdk\inc\winver.h -FILE 1915 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1916 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1917 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1918 f:\sp\public\sdk\inc\winnt.h -FILE 1919 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 1920 f:\sp\public\sdk\inc\winreg.h -FILE 1921 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1922 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1923 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1924 f:\sp\public\sdk\inc\winbase.h -FILE 1925 f:\sp\public\sdk\inc\winerror.h -FILE 1926 f:\sp\public\sdk\inc\pshpack8.h -FILE 1927 f:\sp\vctools\crt_bld\self_x86\crt\src\_freebuf.c -FILE 1928 f:\sp\public\sdk\inc\reason.h -FILE 1929 f:\sp\public\sdk\inc\wincon.h -FILE 1930 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 1931 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1932 f:\sp\public\sdk\inc\pshpack2.h -FILE 1933 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1934 f:\sp\public\sdk\inc\mcx.h -FILE 1935 f:\sp\public\sdk\inc\winuser.h -FILE 1936 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1937 f:\sp\public\sdk\inc\winnls.h -FILE 1938 f:\sp\public\sdk\inc\guiddef.h -FILE 1939 f:\sp\public\sdk\inc\windows.h -FILE 1940 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1941 f:\sp\public\sdk\inc\specstrings.h -FILE 1942 f:\sp\public\sdk\inc\basetsd.h -FILE 1943 f:\sp\public\sdk\inc\stralign.h -FILE 1944 f:\sp\public\sdk\inc\tvout.h -FILE 1945 f:\sp\public\sdk\inc\ddbanned.h -FILE 1946 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1947 f:\sp\public\sdk\inc\winsvc.h -FILE 1948 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1949 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1950 f:\sp\public\sdk\inc\wingdi.h -FILE 1951 f:\sp\public\sdk\inc\pshpack4.h -FILE 1952 f:\sp\public\sdk\inc\poppack.h -FILE 1953 f:\sp\public\sdk\inc\winnetwk.h -FILE 1954 f:\sp\public\sdk\inc\imm.h -FILE 1955 f:\sp\public\sdk\inc\specstrings.h -FILE 1956 f:\sp\public\sdk\inc\basetsd.h -FILE 1957 f:\sp\public\sdk\inc\reason.h -FILE 1958 f:\sp\public\sdk\inc\wincon.h -FILE 1959 f:\sp\public\sdk\inc\pshpack2.h -FILE 1960 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 1961 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 1962 f:\sp\public\sdk\inc\mcx.h -FILE 1963 f:\sp\public\sdk\inc\winuser.h -FILE 1964 f:\sp\public\sdk\inc\winnls.h -FILE 1965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 1966 f:\sp\public\sdk\inc\stralign.h -FILE 1967 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 1968 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 1969 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 1970 f:\sp\public\sdk\inc\windows.h -FILE 1971 f:\sp\public\sdk\inc\tvout.h -FILE 1972 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 1973 f:\sp\public\sdk\inc\winsvc.h -FILE 1974 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 1975 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 1976 f:\sp\public\sdk\inc\wingdi.h -FILE 1977 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 1978 f:\sp\public\sdk\inc\pshpack4.h -FILE 1979 f:\sp\public\sdk\inc\poppack.h -FILE 1980 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c -FILE 1981 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 1982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 1983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 1984 f:\sp\public\sdk\inc\winnetwk.h -FILE 1985 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 1986 f:\sp\public\sdk\inc\imm.h -FILE 1987 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 1988 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 1989 f:\sp\vctools\crt_bld\self_x86\crt\src\_flswbuf.c -FILE 1990 f:\sp\public\sdk\inc\windef.h -FILE 1991 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 1992 f:\sp\public\sdk\inc\pshpack1.h -FILE 1993 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 1994 f:\sp\public\sdk\inc\winver.h -FILE 1995 f:\sp\public\sdk\inc\ddbanned.h -FILE 1996 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 1997 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 1998 f:\sp\public\sdk\inc\winnt.h -FILE 1999 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2000 f:\sp\public\sdk\inc\winreg.h -FILE 2001 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 2002 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 2003 f:\sp\public\sdk\inc\winbase.h -FILE 2004 f:\sp\public\sdk\inc\winerror.h -FILE 2005 f:\sp\public\sdk\inc\pshpack8.h -FILE 2006 f:\sp\public\sdk\inc\guiddef.h -FILE 2007 f:\sp\public\sdk\inc\basetsd.h -FILE 2008 f:\sp\public\sdk\inc\reason.h -FILE 2009 f:\sp\public\sdk\inc\wincon.h -FILE 2010 f:\sp\public\sdk\inc\pshpack2.h -FILE 2011 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2012 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2013 f:\sp\public\sdk\inc\mcx.h -FILE 2014 f:\sp\public\sdk\inc\winuser.h -FILE 2015 f:\sp\public\sdk\inc\winnls.h -FILE 2016 f:\sp\public\sdk\inc\stralign.h -FILE 2017 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2018 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2019 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2020 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2021 f:\sp\public\sdk\inc\tvout.h -FILE 2022 f:\sp\public\sdk\inc\windows.h -FILE 2023 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2024 f:\sp\public\sdk\inc\winsvc.h -FILE 2025 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2026 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2027 f:\sp\public\sdk\inc\wingdi.h -FILE 2028 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 2029 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 2030 f:\sp\public\sdk\inc\pshpack4.h -FILE 2031 f:\sp\public\sdk\inc\poppack.h -FILE 2032 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2034 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2035 f:\sp\public\sdk\inc\winnetwk.h -FILE 2036 f:\sp\public\sdk\inc\imm.h -FILE 2037 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 2038 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2039 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2040 f:\sp\public\sdk\inc\windef.h -FILE 2041 f:\sp\vctools\crt_bld\self_x86\crt\src\_flsbuf.c -FILE 2042 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2043 f:\sp\public\sdk\inc\pshpack1.h -FILE 2044 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2045 f:\sp\public\sdk\inc\winver.h -FILE 2046 f:\sp\public\sdk\inc\ddbanned.h -FILE 2047 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2048 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2049 f:\sp\public\sdk\inc\winnt.h -FILE 2050 f:\sp\public\sdk\inc\winreg.h -FILE 2051 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2052 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 2053 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 2054 f:\sp\public\sdk\inc\winbase.h -FILE 2055 f:\sp\public\sdk\inc\winerror.h -FILE 2056 f:\sp\public\sdk\inc\pshpack8.h -FILE 2057 f:\sp\public\sdk\inc\guiddef.h -FILE 2058 f:\sp\public\sdk\inc\specstrings.h -FILE 2059 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2060 f:\sp\public\sdk\inc\reason.h -FILE 2061 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2062 f:\sp\public\sdk\inc\wincon.h -FILE 2063 f:\sp\public\sdk\inc\pshpack2.h -FILE 2064 f:\sp\public\sdk\inc\mcx.h -FILE 2065 f:\sp\public\sdk\inc\winuser.h -FILE 2066 f:\sp\public\sdk\inc\winnls.h -FILE 2067 f:\sp\public\sdk\inc\guiddef.h -FILE 2068 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2069 f:\sp\public\sdk\inc\specstrings.h -FILE 2070 f:\sp\public\sdk\inc\basetsd.h -FILE 2071 f:\sp\public\sdk\inc\stralign.h -FILE 2072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2073 f:\sp\public\sdk\inc\tvout.h -FILE 2074 f:\sp\public\sdk\inc\winsvc.h -FILE 2075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2076 f:\sp\public\sdk\inc\wingdi.h -FILE 2077 f:\sp\public\sdk\inc\pshpack4.h -FILE 2078 f:\sp\public\sdk\inc\poppack.h -FILE 2079 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2080 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 2081 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2083 f:\sp\public\sdk\inc\winnetwk.h -FILE 2084 f:\sp\public\sdk\inc\imm.h -FILE 2085 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2086 f:\sp\public\sdk\inc\windef.h -FILE 2087 f:\sp\vctools\crt_bld\self_x86\crt\src\_file.c -FILE 2088 f:\sp\public\sdk\inc\pshpack1.h -FILE 2089 f:\sp\public\sdk\inc\winver.h -FILE 2090 f:\sp\public\sdk\inc\windows.h -FILE 2091 f:\sp\public\sdk\inc\winnt.h -FILE 2092 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2093 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2094 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2095 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2096 f:\sp\public\sdk\inc\ddbanned.h -FILE 2097 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2098 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2099 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2100 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2101 f:\sp\public\sdk\inc\winreg.h -FILE 2102 f:\sp\public\sdk\inc\winbase.h -FILE 2103 f:\sp\public\sdk\inc\winerror.h -FILE 2104 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2105 f:\sp\public\sdk\inc\pshpack8.h -FILE 2106 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2108 f:\sp\public\sdk\inc\windef.h -FILE 2109 f:\sp\public\sdk\inc\pshpack1.h -FILE 2110 f:\sp\public\sdk\inc\winver.h -FILE 2111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2112 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2113 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2114 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2115 f:\sp\public\sdk\inc\winnt.h -FILE 2116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2117 f:\sp\public\sdk\inc\winreg.h -FILE 2118 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2119 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2120 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2121 f:\sp\public\sdk\inc\winbase.h -FILE 2122 f:\sp\public\sdk\inc\winerror.h -FILE 2123 f:\sp\public\sdk\inc\pshpack8.h -FILE 2124 f:\sp\vctools\crt_bld\self_x86\crt\src\fputwc.c -FILE 2125 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2126 f:\sp\public\sdk\inc\reason.h -FILE 2127 f:\sp\public\sdk\inc\wincon.h -FILE 2128 f:\sp\public\sdk\inc\pshpack2.h -FILE 2129 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2130 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2131 f:\sp\public\sdk\inc\mcx.h -FILE 2132 f:\sp\public\sdk\inc\winuser.h -FILE 2133 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2134 f:\sp\public\sdk\inc\winnls.h -FILE 2135 f:\sp\public\sdk\inc\guiddef.h -FILE 2136 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 2137 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 2138 f:\sp\public\sdk\inc\stralign.h -FILE 2139 f:\sp\public\sdk\inc\specstrings.h -FILE 2140 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 2141 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2142 f:\sp\public\sdk\inc\basetsd.h -FILE 2143 f:\sp\public\sdk\inc\windows.h -FILE 2144 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2145 f:\sp\public\sdk\inc\tvout.h -FILE 2146 f:\sp\public\sdk\inc\ddbanned.h -FILE 2147 f:\sp\public\sdk\inc\winsvc.h -FILE 2148 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2149 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2151 f:\sp\public\sdk\inc\wingdi.h -FILE 2152 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2153 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2154 f:\sp\public\sdk\inc\pshpack4.h -FILE 2155 f:\sp\public\sdk\inc\poppack.h -FILE 2156 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 2157 f:\sp\public\sdk\inc\winnetwk.h -FILE 2158 f:\sp\public\sdk\inc\imm.h -FILE 2159 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2160 f:\sp\public\sdk\inc\poppack.h -FILE 2161 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2162 f:\sp\public\sdk\inc\winnetwk.h -FILE 2163 f:\sp\public\sdk\inc\imm.h -FILE 2164 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2165 f:\sp\public\sdk\inc\windef.h -FILE 2166 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2167 f:\sp\public\sdk\inc\pshpack1.h -FILE 2168 f:\sp\public\sdk\inc\winver.h -FILE 2169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2170 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2171 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2172 f:\sp\public\sdk\inc\winnt.h -FILE 2173 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2174 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2175 f:\sp\public\sdk\inc\winreg.h -FILE 2176 f:\sp\vctools\crt_bld\self_x86\crt\src\fileno.c -FILE 2177 f:\sp\public\sdk\inc\winbase.h -FILE 2178 f:\sp\public\sdk\inc\winerror.h -FILE 2179 f:\sp\public\sdk\inc\pshpack8.h -FILE 2180 f:\sp\public\sdk\inc\reason.h -FILE 2181 f:\sp\public\sdk\inc\wincon.h -FILE 2182 f:\sp\public\sdk\inc\ddbanned.h -FILE 2183 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2184 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2185 f:\sp\public\sdk\inc\pshpack2.h -FILE 2186 f:\sp\public\sdk\inc\mcx.h -FILE 2187 f:\sp\public\sdk\inc\winuser.h -FILE 2188 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2189 f:\sp\public\sdk\inc\winnls.h -FILE 2190 f:\sp\public\sdk\inc\guiddef.h -FILE 2191 f:\sp\public\sdk\inc\windows.h -FILE 2192 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2193 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2194 f:\sp\public\sdk\inc\specstrings.h -FILE 2195 f:\sp\public\sdk\inc\basetsd.h -FILE 2196 f:\sp\public\sdk\inc\stralign.h -FILE 2197 f:\sp\public\sdk\inc\tvout.h -FILE 2198 f:\sp\public\sdk\inc\winsvc.h -FILE 2199 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2200 f:\sp\public\sdk\inc\wingdi.h -FILE 2201 f:\sp\public\sdk\inc\pshpack4.h -FILE 2202 f:\sp\public\sdk\inc\pshpack2.h -FILE 2203 f:\sp\public\sdk\inc\winreg.h -FILE 2204 f:\sp\public\sdk\inc\guiddef.h -FILE 2205 f:\sp\public\sdk\inc\windows.h -FILE 2206 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2207 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2208 f:\sp\public\sdk\inc\specstrings.h -FILE 2209 f:\sp\public\sdk\inc\basetsd.h -FILE 2210 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2211 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2212 f:\sp\public\sdk\inc\pshpack4.h -FILE 2213 f:\sp\public\sdk\inc\reason.h -FILE 2214 f:\sp\public\sdk\inc\wincon.h -FILE 2215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2216 f:\sp\public\sdk\inc\poppack.h -FILE 2217 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2218 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2219 f:\sp\public\sdk\inc\mcx.h -FILE 2220 f:\sp\public\sdk\inc\winuser.h -FILE 2221 f:\sp\public\sdk\inc\winnls.h -FILE 2222 f:\sp\public\sdk\inc\stralign.h -FILE 2223 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2224 f:\sp\public\sdk\inc\windef.h -FILE 2225 f:\sp\public\sdk\inc\tvout.h -FILE 2226 f:\sp\public\sdk\inc\winsvc.h -FILE 2227 f:\sp\vctools\crt_bld\self_x86\crt\src\tidtable.c -FILE 2228 f:\sp\public\sdk\inc\wingdi.h -FILE 2229 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2230 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2231 f:\sp\public\sdk\inc\winnt.h -FILE 2232 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2233 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2234 f:\sp\public\sdk\inc\winnetwk.h -FILE 2235 f:\sp\public\sdk\inc\imm.h -FILE 2236 f:\sp\public\sdk\inc\ddbanned.h -FILE 2237 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2238 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2239 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2240 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2241 f:\sp\public\sdk\inc\winbase.h -FILE 2242 f:\sp\public\sdk\inc\winerror.h -FILE 2243 f:\sp\public\sdk\inc\pshpack1.h -FILE 2244 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2245 f:\sp\vctools\crt_bld\self_x86\crt\src\memory.h -FILE 2246 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2247 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 2248 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2249 f:\sp\public\sdk\inc\pshpack8.h -FILE 2250 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2252 f:\sp\public\sdk\inc\winver.h -FILE 2253 f:\sp\public\sdk\inc\pshpack4.h -FILE 2254 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2255 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2256 f:\sp\public\sdk\inc\poppack.h -FILE 2257 f:\sp\public\sdk\inc\winnt.h -FILE 2258 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2259 f:\sp\public\sdk\inc\winnetwk.h -FILE 2260 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2261 f:\sp\public\sdk\inc\imm.h -FILE 2262 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2264 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2265 f:\sp\public\sdk\inc\pshpack1.h -FILE 2266 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2267 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2268 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2269 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2270 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2271 f:\sp\public\sdk\inc\winver.h -FILE 2272 f:\sp\public\sdk\inc\guiddef.h -FILE 2273 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2274 f:\sp\public\sdk\inc\specstrings.h -FILE 2275 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2276 f:\sp\public\sdk\inc\basetsd.h -FILE 2277 f:\sp\public\sdk\inc\windows.h -FILE 2278 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2279 f:\sp\public\sdk\inc\winreg.h -FILE 2280 f:\sp\vctools\crt_bld\self_x86\crt\src\stdenvp.c -FILE 2281 f:\sp\public\sdk\inc\winbase.h -FILE 2282 f:\sp\public\sdk\inc\winerror.h -FILE 2283 f:\sp\public\sdk\inc\pshpack8.h -FILE 2284 f:\sp\public\sdk\inc\reason.h -FILE 2285 f:\sp\public\sdk\inc\ddbanned.h -FILE 2286 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2287 f:\sp\public\sdk\inc\wincon.h -FILE 2288 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2289 f:\sp\public\sdk\inc\pshpack2.h -FILE 2290 f:\sp\public\sdk\inc\mcx.h -FILE 2291 f:\sp\public\sdk\inc\winuser.h -FILE 2292 f:\sp\public\sdk\inc\winnls.h -FILE 2293 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2294 f:\sp\public\sdk\inc\windef.h -FILE 2295 f:\sp\public\sdk\inc\stralign.h -FILE 2296 f:\sp\public\sdk\inc\tvout.h -FILE 2297 f:\sp\public\sdk\inc\winsvc.h -FILE 2298 f:\sp\public\sdk\inc\wingdi.h -FILE 2299 f:\sp\public\sdk\inc\poppack.h -FILE 2300 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 2301 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2302 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2303 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2304 f:\sp\public\sdk\inc\winnetwk.h -FILE 2305 f:\sp\public\sdk\inc\imm.h -FILE 2306 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2307 f:\sp\public\sdk\inc\windef.h -FILE 2308 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2309 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2310 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2311 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2312 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 2313 f:\sp\public\sdk\inc\pshpack1.h -FILE 2314 f:\sp\public\sdk\inc\winver.h -FILE 2315 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2317 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2318 f:\sp\public\sdk\inc\winnt.h -FILE 2319 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2320 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2321 f:\sp\public\sdk\inc\winreg.h -FILE 2322 f:\sp\vctools\crt_bld\self_x86\crt\src\stdargv.c -FILE 2323 f:\sp\public\sdk\inc\winbase.h -FILE 2324 f:\sp\public\sdk\inc\winerror.h -FILE 2325 f:\sp\public\sdk\inc\pshpack8.h -FILE 2326 f:\sp\public\sdk\inc\reason.h -FILE 2327 f:\sp\public\sdk\inc\wincon.h -FILE 2328 f:\sp\public\sdk\inc\ddbanned.h -FILE 2329 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2330 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2331 f:\sp\public\sdk\inc\pshpack2.h -FILE 2332 f:\sp\public\sdk\inc\mcx.h -FILE 2333 f:\sp\public\sdk\inc\winuser.h -FILE 2334 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2335 f:\sp\public\sdk\inc\winnls.h -FILE 2336 f:\sp\public\sdk\inc\guiddef.h -FILE 2337 f:\sp\public\sdk\inc\windows.h -FILE 2338 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2339 f:\sp\public\sdk\inc\specstrings.h -FILE 2340 f:\sp\public\sdk\inc\basetsd.h -FILE 2341 f:\sp\public\sdk\inc\stralign.h -FILE 2342 f:\sp\public\sdk\inc\tvout.h -FILE 2343 f:\sp\public\sdk\inc\winsvc.h -FILE 2344 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2345 f:\sp\public\sdk\inc\wingdi.h -FILE 2346 f:\sp\public\sdk\inc\pshpack4.h -FILE 2347 f:\sp\public\sdk\inc\reason.h -FILE 2348 f:\sp\public\sdk\inc\wincon.h -FILE 2349 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2350 f:\sp\public\sdk\inc\poppack.h -FILE 2351 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2352 f:\sp\public\sdk\inc\mcx.h -FILE 2353 f:\sp\public\sdk\inc\winuser.h -FILE 2354 f:\sp\public\sdk\inc\winnls.h -FILE 2355 f:\sp\public\sdk\inc\stralign.h -FILE 2356 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2357 f:\sp\public\sdk\inc\windef.h -FILE 2358 f:\sp\public\sdk\inc\tvout.h -FILE 2359 f:\sp\public\sdk\inc\winsvc.h -FILE 2360 f:\sp\public\sdk\inc\wingdi.h -FILE 2361 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2362 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2363 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2364 f:\sp\public\sdk\inc\winnt.h -FILE 2365 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2366 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2367 f:\sp\public\sdk\inc\winnetwk.h -FILE 2368 f:\sp\public\sdk\inc\imm.h -FILE 2369 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 2370 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2371 f:\sp\vctools\crt_bld\self_x86\crt\src\mlock.c -FILE 2372 f:\sp\public\sdk\inc\winbase.h -FILE 2373 f:\sp\public\sdk\inc\winerror.h -FILE 2374 f:\sp\public\sdk\inc\pshpack1.h -FILE 2375 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2376 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2377 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2378 f:\sp\public\sdk\inc\pshpack8.h -FILE 2379 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2380 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2381 f:\sp\public\sdk\inc\winver.h -FILE 2382 f:\sp\public\sdk\inc\ddbanned.h -FILE 2383 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2384 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2385 f:\sp\public\sdk\inc\pshpack2.h -FILE 2386 f:\sp\public\sdk\inc\winreg.h -FILE 2387 f:\sp\public\sdk\inc\guiddef.h -FILE 2388 f:\sp\public\sdk\inc\windows.h -FILE 2389 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2390 f:\sp\public\sdk\inc\specstrings.h -FILE 2391 f:\sp\public\sdk\inc\basetsd.h -FILE 2392 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2393 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2394 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2395 f:\sp\public\sdk\inc\pshpack4.h -FILE 2396 f:\sp\public\sdk\inc\poppack.h -FILE 2397 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2398 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2399 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2400 f:\sp\public\sdk\inc\winnetwk.h -FILE 2401 f:\sp\public\sdk\inc\imm.h -FILE 2402 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2403 f:\sp\public\sdk\inc\windef.h -FILE 2404 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2405 f:\sp\public\sdk\inc\pshpack1.h -FILE 2406 f:\sp\public\sdk\inc\winver.h -FILE 2407 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2408 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2409 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2410 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2411 f:\sp\public\sdk\inc\winnt.h -FILE 2412 f:\sp\vctools\crt_bld\self_x86\crt\src\cmsgs.h -FILE 2413 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2414 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2415 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2416 f:\sp\public\sdk\inc\winreg.h -FILE 2417 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2418 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0msg.c -FILE 2419 f:\sp\public\sdk\inc\winbase.h -FILE 2420 f:\sp\public\sdk\inc\winerror.h -FILE 2421 f:\sp\public\sdk\inc\pshpack8.h -FILE 2422 f:\sp\public\sdk\inc\reason.h -FILE 2423 f:\sp\public\sdk\inc\wincon.h -FILE 2424 f:\sp\public\sdk\inc\ddbanned.h -FILE 2425 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2426 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2427 f:\sp\public\sdk\inc\pshpack2.h -FILE 2428 f:\sp\public\sdk\inc\mcx.h -FILE 2429 f:\sp\public\sdk\inc\winuser.h -FILE 2430 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2431 f:\sp\public\sdk\inc\winnls.h -FILE 2432 f:\sp\public\sdk\inc\guiddef.h -FILE 2433 f:\sp\public\sdk\inc\windows.h -FILE 2434 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2435 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2436 f:\sp\public\sdk\inc\specstrings.h -FILE 2437 f:\sp\public\sdk\inc\basetsd.h -FILE 2438 f:\sp\public\sdk\inc\stralign.h -FILE 2439 f:\sp\public\sdk\inc\tvout.h -FILE 2440 f:\sp\public\sdk\inc\winsvc.h -FILE 2441 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2442 f:\sp\public\sdk\inc\wingdi.h -FILE 2443 f:\sp\public\sdk\inc\pshpack4.h -FILE 2444 f:\sp\public\sdk\inc\pshpack1.h -FILE 2445 f:\sp\public\sdk\inc\winver.h -FILE 2446 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2447 f:\sp\public\sdk\inc\winnt.h -FILE 2448 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2449 f:\sp\public\sdk\inc\winreg.h -FILE 2450 f:\sp\public\sdk\inc\winbase.h -FILE 2451 f:\sp\public\sdk\inc\winerror.h -FILE 2452 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2453 f:\sp\public\sdk\inc\pshpack8.h -FILE 2454 f:\sp\public\sdk\inc\reason.h -FILE 2455 f:\sp\public\sdk\inc\wincon.h -FILE 2456 f:\sp\public\sdk\inc\pshpack2.h -FILE 2457 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0init.c -FILE 2458 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2459 f:\sp\public\sdk\inc\mcx.h -FILE 2460 f:\sp\public\sdk\inc\winuser.h -FILE 2461 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2462 f:\sp\public\sdk\inc\winnls.h -FILE 2463 f:\sp\public\sdk\inc\guiddef.h -FILE 2464 f:\sp\public\sdk\inc\windows.h -FILE 2465 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2466 f:\sp\public\sdk\inc\specstrings.h -FILE 2467 f:\sp\public\sdk\inc\basetsd.h -FILE 2468 f:\sp\public\sdk\inc\stralign.h -FILE 2469 f:\sp\public\sdk\inc\tvout.h -FILE 2470 f:\sp\public\sdk\inc\winsvc.h -FILE 2471 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2472 f:\sp\public\sdk\inc\wingdi.h -FILE 2473 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2474 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2475 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2476 f:\sp\public\sdk\inc\pshpack4.h -FILE 2477 f:\sp\public\sdk\inc\ddbanned.h -FILE 2478 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2479 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2480 f:\sp\public\sdk\inc\poppack.h -FILE 2481 f:\sp\public\sdk\inc\winnetwk.h -FILE 2482 f:\sp\public\sdk\inc\imm.h -FILE 2483 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2484 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2485 f:\sp\public\sdk\inc\windef.h -FILE 2486 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2487 f:\sp\public\sdk\inc\poppack.h -FILE 2488 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2489 f:\sp\public\sdk\inc\winnetwk.h -FILE 2490 f:\sp\public\sdk\inc\imm.h -FILE 2491 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2492 f:\sp\public\sdk\inc\windef.h -FILE 2493 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2494 f:\sp\public\sdk\inc\pshpack1.h -FILE 2495 f:\sp\public\sdk\inc\winver.h -FILE 2496 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2497 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2498 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2499 f:\sp\public\sdk\inc\winnt.h -FILE 2500 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2501 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2502 f:\sp\public\sdk\inc\winreg.h -FILE 2503 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0fp.c -FILE 2504 f:\sp\public\sdk\inc\winbase.h -FILE 2505 f:\sp\public\sdk\inc\winerror.h -FILE 2506 f:\sp\public\sdk\inc\pshpack8.h -FILE 2507 f:\sp\public\sdk\inc\reason.h -FILE 2508 f:\sp\public\sdk\inc\wincon.h -FILE 2509 f:\sp\public\sdk\inc\ddbanned.h -FILE 2510 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2511 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2512 f:\sp\public\sdk\inc\pshpack2.h -FILE 2513 f:\sp\public\sdk\inc\mcx.h -FILE 2514 f:\sp\public\sdk\inc\winuser.h -FILE 2515 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2516 f:\sp\public\sdk\inc\winnls.h -FILE 2517 f:\sp\public\sdk\inc\guiddef.h -FILE 2518 f:\sp\public\sdk\inc\windows.h -FILE 2519 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2520 f:\sp\public\sdk\inc\specstrings.h -FILE 2521 f:\sp\public\sdk\inc\basetsd.h -FILE 2522 f:\sp\public\sdk\inc\stralign.h -FILE 2523 f:\sp\public\sdk\inc\tvout.h -FILE 2524 f:\sp\public\sdk\inc\winsvc.h -FILE 2525 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2526 f:\sp\public\sdk\inc\wingdi.h -FILE 2527 f:\sp\public\sdk\inc\pshpack4.h -FILE 2528 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 2529 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2531 f:\sp\public\sdk\inc\pshpack4.h -FILE 2532 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2533 f:\sp\public\sdk\inc\reason.h -FILE 2534 f:\sp\public\sdk\inc\wincon.h -FILE 2535 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2536 f:\sp\public\sdk\inc\poppack.h -FILE 2537 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2539 f:\sp\public\sdk\inc\mcx.h -FILE 2540 f:\sp\public\sdk\inc\winuser.h -FILE 2541 f:\sp\public\sdk\inc\winnls.h -FILE 2542 f:\sp\public\sdk\inc\stralign.h -FILE 2543 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2544 f:\sp\public\sdk\inc\windef.h -FILE 2545 f:\sp\public\sdk\inc\tvout.h -FILE 2546 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2547 f:\sp\public\sdk\inc\winsvc.h -FILE 2548 f:\sp\public\sdk\inc\wingdi.h -FILE 2549 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 2550 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 2551 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2552 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2553 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 2554 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 2555 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2556 f:\sp\public\sdk\inc\winnt.h -FILE 2557 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2558 f:\sp\public\sdk\inc\winnetwk.h -FILE 2559 f:\sp\public\sdk\inc\imm.h -FILE 2560 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0dat.c -FILE 2561 f:\sp\public\sdk\inc\winbase.h -FILE 2562 f:\sp\public\sdk\inc\winerror.h -FILE 2563 f:\sp\public\sdk\inc\pshpack1.h -FILE 2564 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 2565 f:\sp\public\sdk\inc\pshpack8.h -FILE 2566 f:\sp\public\sdk\inc\winver.h -FILE 2567 f:\sp\public\sdk\inc\ddbanned.h -FILE 2568 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2569 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2570 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 2571 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2572 f:\sp\public\sdk\inc\pshpack2.h -FILE 2573 f:\sp\public\sdk\inc\winreg.h -FILE 2574 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2575 f:\sp\public\sdk\inc\guiddef.h -FILE 2576 f:\sp\public\sdk\inc\windows.h -FILE 2577 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2578 f:\sp\public\sdk\inc\specstrings.h -FILE 2579 f:\sp\public\sdk\inc\basetsd.h -FILE 2580 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2581 f:\sp\public\sdk\inc\tvout.h -FILE 2582 f:\sp\public\sdk\inc\winsvc.h -FILE 2583 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2584 f:\sp\public\sdk\inc\wingdi.h -FILE 2585 f:\sp\public\sdk\inc\pshpack4.h -FILE 2586 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2587 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2588 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 2589 f:\sp\public\sdk\inc\poppack.h -FILE 2590 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 2591 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 2592 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 2593 f:\sp\public\sdk\inc\winnetwk.h -FILE 2594 f:\sp\public\sdk\inc\imm.h -FILE 2595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2596 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2597 f:\sp\public\sdk\inc\windef.h -FILE 2598 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2599 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2600 f:\sp\vctools\crt_bld\self_x86\crt\src\dos.h -FILE 2601 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2602 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2603 f:\sp\public\sdk\inc\pshpack1.h -FILE 2604 f:\sp\public\sdk\inc\winver.h -FILE 2605 f:\sp\public\sdk\inc\winnt.h -FILE 2606 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2607 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2608 f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c -FILE 2609 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2610 f:\sp\public\sdk\inc\winreg.h -FILE 2611 f:\sp\public\sdk\inc\winbase.h -FILE 2612 f:\sp\public\sdk\inc\winerror.h -FILE 2613 f:\sp\public\sdk\inc\ddbanned.h -FILE 2614 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2615 f:\sp\public\sdk\inc\pshpack8.h -FILE 2616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2617 f:\sp\public\sdk\inc\reason.h -FILE 2618 f:\sp\public\sdk\inc\wincon.h -FILE 2619 f:\sp\public\sdk\inc\pshpack2.h -FILE 2620 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2621 f:\sp\public\sdk\inc\mcx.h -FILE 2622 f:\sp\public\sdk\inc\winuser.h -FILE 2623 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2624 f:\sp\public\sdk\inc\winnls.h -FILE 2625 f:\sp\public\sdk\inc\guiddef.h -FILE 2626 f:\sp\public\sdk\inc\windows.h -FILE 2627 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2628 f:\sp\public\sdk\inc\specstrings.h -FILE 2629 f:\sp\public\sdk\inc\basetsd.h -FILE 2630 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 2631 f:\sp\public\sdk\inc\stralign.h -FILE 2632 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\alloca16.asm -FILE 2633 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 2634 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\chkstk.asm -FILE 2635 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 2636 f:\sp\public\sdk\inc\wincon.h -FILE 2637 f:\sp\public\sdk\inc\imm.h -FILE 2638 f:\sp\public\sdk\inc\winbase.h -FILE 2639 f:\sp\public\sdk\inc\wingdi.h -FILE 2640 f:\sp\public\sdk\inc\winver.h -FILE 2641 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 2642 f:\sp\public\sdk\inc\windows.h -FILE 2643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 2644 f:\sp\public\sdk\inc\pshpack2.h -FILE 2645 f:\sp\public\sdk\inc\reason.h -FILE 2646 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\rtc\initsect.cpp -FILE 2647 f:\sp\public\sdk\inc\specstrings.h -FILE 2648 f:\sp\public\sdk\inc\basetsd.h -FILE 2649 f:\sp\public\sdk\inc\pshpack4.h -FILE 2650 f:\sp\public\sdk\inc\winnetwk.h -FILE 2651 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 2652 f:\sp\public\sdk\inc\stralign.h -FILE 2653 f:\sp\public\sdk\inc\poppack.h -FILE 2654 f:\sp\public\sdk\inc\winsvc.h -FILE 2655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 2656 f:\sp\public\sdk\inc\windef.h -FILE 2657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 2658 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 2659 f:\sp\public\sdk\inc\winuser.h -FILE 2660 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 2661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 2662 f:\sp\public\sdk\inc\mcx.h -FILE 2663 f:\sp\public\sdk\inc\pshpack8.h -FILE 2664 f:\sp\public\sdk\inc\guiddef.h -FILE 2665 f:\sp\public\sdk\inc\winnt.h -FILE 2666 f:\sp\public\sdk\inc\winnls.h -FILE 2667 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 2668 f:\sp\public\sdk\inc\pshpack1.h -FILE 2669 f:\sp\public\sdk\inc\winerror.h -FILE 2670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcapi.h -FILE 2671 f:\sp\public\sdk\inc\winreg.h -FILE 2672 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 2673 f:\sp\public\sdk\inc\ddbanned.h -FILE 2674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 2675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 2676 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\rtcpriv.h -FILE 2677 f:\sp\public\sdk\inc\tvout.h -FILE 2678 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 2679 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 2680 f:\sp\public\sdk\inc\poppack.h -FILE 2681 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2682 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2683 f:\sp\public\sdk\inc\winnetwk.h -FILE 2684 f:\sp\public\sdk\inc\imm.h -FILE 2685 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2686 f:\sp\public\sdk\inc\windef.h -FILE 2687 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2688 f:\sp\public\sdk\inc\pshpack1.h -FILE 2689 f:\sp\public\sdk\inc\winver.h -FILE 2690 f:\sp\public\sdk\inc\windows.h -FILE 2691 f:\sp\public\sdk\inc\winnt.h -FILE 2692 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2693 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2694 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2695 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2696 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2697 f:\sp\public\sdk\inc\winreg.h -FILE 2698 f:\sp\public\sdk\inc\winbase.h -FILE 2699 f:\sp\vctools\crt_bld\self_x86\crt\src\wtombenv.c -FILE 2700 f:\sp\public\sdk\inc\winerror.h -FILE 2701 f:\sp\public\sdk\inc\pshpack8.h -FILE 2702 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2703 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2704 f:\sp\public\sdk\inc\reason.h -FILE 2705 f:\sp\public\sdk\inc\wincon.h -FILE 2706 f:\sp\public\sdk\inc\ddbanned.h -FILE 2707 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2708 f:\sp\public\sdk\inc\pshpack2.h -FILE 2709 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2710 f:\sp\public\sdk\inc\mcx.h -FILE 2711 f:\sp\public\sdk\inc\winuser.h -FILE 2712 f:\sp\public\sdk\inc\winnls.h -FILE 2713 f:\sp\public\sdk\inc\guiddef.h -FILE 2714 f:\sp\public\sdk\inc\specstrings.h -FILE 2715 f:\sp\public\sdk\inc\basetsd.h -FILE 2716 f:\sp\public\sdk\inc\stralign.h -FILE 2717 f:\sp\public\sdk\inc\tvout.h -FILE 2718 f:\sp\public\sdk\inc\winsvc.h -FILE 2719 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2720 f:\sp\public\sdk\inc\wingdi.h -FILE 2721 f:\sp\public\sdk\inc\pshpack4.h -FILE 2722 f:\sp\public\sdk\inc\winnt.h -FILE 2723 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2724 f:\sp\public\sdk\inc\winreg.h -FILE 2725 f:\sp\public\sdk\inc\winbase.h -FILE 2726 f:\sp\public\sdk\inc\winerror.h -FILE 2727 f:\sp\public\sdk\inc\pshpack8.h -FILE 2728 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2729 f:\sp\public\sdk\inc\reason.h -FILE 2730 f:\sp\public\sdk\inc\wincon.h -FILE 2731 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h -FILE 2732 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2733 f:\sp\public\sdk\inc\pshpack2.h -FILE 2734 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2735 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2736 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2737 f:\sp\public\sdk\inc\mcx.h -FILE 2738 f:\sp\public\sdk\inc\winuser.h -FILE 2739 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2740 f:\sp\public\sdk\inc\winnls.h -FILE 2741 f:\sp\public\sdk\inc\guiddef.h -FILE 2742 f:\sp\public\sdk\inc\windows.h -FILE 2743 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2744 f:\sp\public\sdk\inc\specstrings.h -FILE 2745 f:\sp\public\sdk\inc\basetsd.h -FILE 2746 f:\sp\public\sdk\inc\stralign.h -FILE 2747 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2748 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 2749 f:\sp\public\sdk\inc\tvout.h -FILE 2750 f:\sp\public\sdk\inc\winsvc.h -FILE 2751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2752 f:\sp\vctools\crt_bld\self_x86\crt\src\winxfltr.c -FILE 2753 f:\sp\public\sdk\inc\wingdi.h -FILE 2754 f:\sp\public\sdk\inc\pshpack4.h -FILE 2755 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2756 f:\sp\public\sdk\inc\poppack.h -FILE 2757 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2758 f:\sp\public\sdk\inc\winnetwk.h -FILE 2759 f:\sp\public\sdk\inc\imm.h -FILE 2760 f:\sp\public\sdk\inc\ddbanned.h -FILE 2761 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2762 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2763 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2764 f:\sp\public\sdk\inc\windef.h -FILE 2765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h -FILE 2766 f:\sp\public\sdk\inc\pshpack1.h -FILE 2767 f:\sp\public\sdk\inc\winver.h -FILE 2768 f:\sp\public\sdk\inc\winnetwk.h -FILE 2769 f:\sp\public\sdk\inc\imm.h -FILE 2770 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2771 f:\sp\public\sdk\inc\windef.h -FILE 2772 f:\sp\public\sdk\inc\pshpack1.h -FILE 2773 f:\sp\public\sdk\inc\winver.h -FILE 2774 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2775 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2776 f:\sp\public\sdk\inc\winnt.h -FILE 2777 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2778 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2779 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2780 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2781 f:\sp\public\sdk\inc\winreg.h -FILE 2782 f:\sp\public\sdk\inc\winbase.h -FILE 2783 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2784 f:\sp\public\sdk\inc\winerror.h -FILE 2785 f:\sp\vctools\crt_bld\self_x86\crt\src\winsig.c -FILE 2786 f:\sp\public\sdk\inc\pshpack8.h -FILE 2787 f:\sp\public\sdk\inc\reason.h -FILE 2788 f:\sp\public\sdk\inc\wincon.h -FILE 2789 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2790 f:\sp\public\sdk\inc\pshpack2.h -FILE 2791 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2792 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2793 f:\sp\public\sdk\inc\mcx.h -FILE 2794 f:\sp\public\sdk\inc\winuser.h -FILE 2795 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2796 f:\sp\public\sdk\inc\winnls.h -FILE 2797 f:\sp\public\sdk\inc\guiddef.h -FILE 2798 f:\sp\public\sdk\inc\windows.h -FILE 2799 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2800 f:\sp\public\sdk\inc\specstrings.h -FILE 2801 f:\sp\public\sdk\inc\ddbanned.h -FILE 2802 f:\sp\public\sdk\inc\basetsd.h -FILE 2803 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2804 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2805 f:\sp\public\sdk\inc\stralign.h -FILE 2806 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 2807 f:\sp\public\sdk\inc\tvout.h -FILE 2808 f:\sp\public\sdk\inc\winsvc.h -FILE 2809 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2810 f:\sp\public\sdk\inc\wingdi.h -FILE 2811 f:\sp\vctools\crt_bld\self_x86\crt\src\float.h -FILE 2812 f:\sp\vctools\crt_bld\self_x86\crt\src\crtwrn.h -FILE 2813 f:\sp\public\sdk\inc\pshpack4.h -FILE 2814 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 2815 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2816 f:\sp\public\sdk\inc\poppack.h -FILE 2817 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2818 f:\sp\public\sdk\inc\wincon.h -FILE 2819 f:\sp\public\sdk\inc\imm.h -FILE 2820 f:\sp\public\sdk\inc\winbase.h -FILE 2821 f:\sp\public\sdk\inc\wingdi.h -FILE 2822 f:\sp\public\sdk\inc\winver.h -FILE 2823 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2824 f:\sp\public\sdk\inc\windows.h -FILE 2825 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2826 f:\sp\public\sdk\inc\pshpack2.h -FILE 2827 f:\sp\public\sdk\inc\reason.h -FILE 2828 f:\sp\vctools\crt_bld\self_x86\crt\src\w_str.c -FILE 2829 f:\sp\public\sdk\inc\specstrings.h -FILE 2830 f:\sp\public\sdk\inc\basetsd.h -FILE 2831 f:\sp\public\sdk\inc\pshpack4.h -FILE 2832 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2833 f:\sp\public\sdk\inc\winnetwk.h -FILE 2834 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2835 f:\sp\public\sdk\inc\stralign.h -FILE 2836 f:\sp\public\sdk\inc\poppack.h -FILE 2837 f:\sp\public\sdk\inc\winsvc.h -FILE 2838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2839 f:\sp\public\sdk\inc\windef.h -FILE 2840 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2841 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2842 f:\sp\public\sdk\inc\winuser.h -FILE 2843 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2844 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2845 f:\sp\public\sdk\inc\mcx.h -FILE 2846 f:\sp\public\sdk\inc\pshpack8.h -FILE 2847 f:\sp\public\sdk\inc\guiddef.h -FILE 2848 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2849 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2850 f:\sp\public\sdk\inc\winnt.h -FILE 2851 f:\sp\public\sdk\inc\winnls.h -FILE 2852 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2853 f:\sp\public\sdk\inc\pshpack1.h -FILE 2854 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2855 f:\sp\public\sdk\inc\winerror.h -FILE 2856 f:\sp\public\sdk\inc\winreg.h -FILE 2857 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2858 f:\sp\public\sdk\inc\ddbanned.h -FILE 2859 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2860 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2861 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2862 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2863 f:\sp\public\sdk\inc\tvout.h -FILE 2864 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2865 f:\sp\public\sdk\inc\wincon.h -FILE 2866 f:\sp\public\sdk\inc\imm.h -FILE 2867 f:\sp\public\sdk\inc\winbase.h -FILE 2868 f:\sp\public\sdk\inc\wingdi.h -FILE 2869 f:\sp\public\sdk\inc\winver.h -FILE 2870 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2871 f:\sp\public\sdk\inc\windows.h -FILE 2872 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2873 f:\sp\public\sdk\inc\pshpack2.h -FILE 2874 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2875 f:\sp\public\sdk\inc\reason.h -FILE 2876 f:\sp\vctools\crt_bld\self_x86\crt\src\w_loc.c -FILE 2877 f:\sp\public\sdk\inc\specstrings.h -FILE 2878 f:\sp\public\sdk\inc\basetsd.h -FILE 2879 f:\sp\public\sdk\inc\pshpack4.h -FILE 2880 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2881 f:\sp\public\sdk\inc\winnetwk.h -FILE 2882 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2883 f:\sp\public\sdk\inc\stralign.h -FILE 2884 f:\sp\public\sdk\inc\poppack.h -FILE 2885 f:\sp\public\sdk\inc\winsvc.h -FILE 2886 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2887 f:\sp\public\sdk\inc\windef.h -FILE 2888 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2889 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2890 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2891 f:\sp\public\sdk\inc\winuser.h -FILE 2892 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2893 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2894 f:\sp\public\sdk\inc\mcx.h -FILE 2895 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2896 f:\sp\public\sdk\inc\pshpack8.h -FILE 2897 f:\sp\public\sdk\inc\guiddef.h -FILE 2898 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2899 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2900 f:\sp\public\sdk\inc\winnt.h -FILE 2901 f:\sp\public\sdk\inc\winnls.h -FILE 2902 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2903 f:\sp\public\sdk\inc\pshpack1.h -FILE 2904 f:\sp\public\sdk\inc\winerror.h -FILE 2905 f:\sp\public\sdk\inc\winreg.h -FILE 2906 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2907 f:\sp\public\sdk\inc\ddbanned.h -FILE 2908 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2909 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2910 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2911 f:\sp\public\sdk\inc\tvout.h -FILE 2912 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2913 f:\sp\public\sdk\inc\poppack.h -FILE 2914 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2915 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2916 f:\sp\public\sdk\inc\winnetwk.h -FILE 2917 f:\sp\public\sdk\inc\imm.h -FILE 2918 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2919 f:\sp\public\sdk\inc\windef.h -FILE 2920 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 2921 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 2922 f:\sp\public\sdk\inc\pshpack1.h -FILE 2923 f:\sp\public\sdk\inc\winver.h -FILE 2924 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2925 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2926 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2927 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2928 f:\sp\public\sdk\inc\winnt.h -FILE 2929 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 2930 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 2931 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 2932 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 2933 f:\sp\public\sdk\inc\winreg.h -FILE 2934 f:\sp\vctools\crt_bld\self_x86\crt\src\convrtcp.c -FILE 2935 f:\sp\public\sdk\inc\winbase.h -FILE 2936 f:\sp\public\sdk\inc\winerror.h -FILE 2937 f:\sp\public\sdk\inc\pshpack8.h -FILE 2938 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2939 f:\sp\public\sdk\inc\reason.h -FILE 2940 f:\sp\public\sdk\inc\wincon.h -FILE 2941 f:\sp\public\sdk\inc\ddbanned.h -FILE 2942 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 2943 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 2944 f:\sp\public\sdk\inc\pshpack2.h -FILE 2945 f:\sp\public\sdk\inc\mcx.h -FILE 2946 f:\sp\public\sdk\inc\winuser.h -FILE 2947 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2948 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 2949 f:\sp\public\sdk\inc\winnls.h -FILE 2950 f:\sp\public\sdk\inc\guiddef.h -FILE 2951 f:\sp\public\sdk\inc\windows.h -FILE 2952 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2953 f:\sp\public\sdk\inc\specstrings.h -FILE 2954 f:\sp\public\sdk\inc\basetsd.h -FILE 2955 f:\sp\public\sdk\inc\stralign.h -FILE 2956 f:\sp\public\sdk\inc\tvout.h -FILE 2957 f:\sp\public\sdk\inc\winsvc.h -FILE 2958 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 2959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2960 f:\sp\public\sdk\inc\wingdi.h -FILE 2961 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2962 f:\sp\public\sdk\inc\pshpack4.h -FILE 2963 f:\sp\public\sdk\inc\winerror.h -FILE 2964 f:\sp\public\sdk\inc\pshpack8.h -FILE 2965 f:\sp\public\sdk\inc\reason.h -FILE 2966 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 2967 f:\sp\public\sdk\inc\wincon.h -FILE 2968 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 2969 f:\sp\public\sdk\inc\pshpack2.h -FILE 2970 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 2971 f:\sp\public\sdk\inc\mcx.h -FILE 2972 f:\sp\public\sdk\inc\winuser.h -FILE 2973 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 2974 f:\sp\public\sdk\inc\winnls.h -FILE 2975 f:\sp\public\sdk\inc\guiddef.h -FILE 2976 f:\sp\public\sdk\inc\windows.h -FILE 2977 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 2978 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 2979 f:\sp\public\sdk\inc\specstrings.h -FILE 2980 f:\sp\public\sdk\inc\basetsd.h -FILE 2981 f:\sp\public\sdk\inc\stralign.h -FILE 2982 f:\sp\public\sdk\inc\tvout.h -FILE 2983 f:\sp\public\sdk\inc\winsvc.h -FILE 2984 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 2985 f:\sp\public\sdk\inc\wingdi.h -FILE 2986 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 2987 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 2988 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 2989 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 2990 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 2991 f:\sp\public\sdk\inc\pshpack4.h -FILE 2992 f:\sp\public\sdk\inc\poppack.h -FILE 2993 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 2994 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 2995 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.c -FILE 2996 f:\sp\public\sdk\inc\winnetwk.h -FILE 2997 f:\sp\public\sdk\inc\imm.h -FILE 2998 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 2999 f:\sp\public\sdk\inc\windef.h -FILE 3000 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3001 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3002 f:\sp\public\sdk\inc\pshpack1.h -FILE 3003 f:\sp\public\sdk\inc\ddbanned.h -FILE 3004 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3005 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3006 f:\sp\public\sdk\inc\winver.h -FILE 3007 f:\sp\public\sdk\inc\winnt.h -FILE 3008 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3009 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3010 f:\sp\public\sdk\inc\winreg.h -FILE 3011 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3012 f:\sp\public\sdk\inc\winbase.h -FILE 3013 f:\sp\public\sdk\inc\poppack.h -FILE 3014 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 3015 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 3016 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3017 f:\sp\public\sdk\inc\winnetwk.h -FILE 3018 f:\sp\public\sdk\inc\imm.h -FILE 3019 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3020 f:\sp\public\sdk\inc\windef.h -FILE 3021 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3022 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3023 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3024 f:\sp\public\sdk\inc\pshpack1.h -FILE 3025 f:\sp\public\sdk\inc\winver.h -FILE 3026 f:\sp\public\sdk\inc\windows.h -FILE 3027 f:\sp\public\sdk\inc\winnt.h -FILE 3028 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3029 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3030 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3032 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3033 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3034 f:\sp\public\sdk\inc\winreg.h -FILE 3035 f:\sp\public\sdk\inc\winbase.h -FILE 3036 f:\sp\vctools\crt_bld\self_x86\crt\src\setenv.c -FILE 3037 f:\sp\public\sdk\inc\winerror.h -FILE 3038 f:\sp\public\sdk\inc\pshpack8.h -FILE 3039 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3040 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3041 f:\sp\public\sdk\inc\reason.h -FILE 3042 f:\sp\public\sdk\inc\wincon.h -FILE 3043 f:\sp\public\sdk\inc\ddbanned.h -FILE 3044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3045 f:\sp\public\sdk\inc\pshpack2.h -FILE 3046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3047 f:\sp\public\sdk\inc\mcx.h -FILE 3048 f:\sp\public\sdk\inc\winuser.h -FILE 3049 f:\sp\public\sdk\inc\winnls.h -FILE 3050 f:\sp\public\sdk\inc\guiddef.h -FILE 3051 f:\sp\public\sdk\inc\specstrings.h -FILE 3052 f:\sp\public\sdk\inc\basetsd.h -FILE 3053 f:\sp\public\sdk\inc\stralign.h -FILE 3054 f:\sp\public\sdk\inc\tvout.h -FILE 3055 f:\sp\public\sdk\inc\winsvc.h -FILE 3056 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3057 f:\sp\public\sdk\inc\wingdi.h -FILE 3058 f:\sp\public\sdk\inc\pshpack4.h -FILE 3059 f:\sp\public\sdk\inc\poppack.h -FILE 3060 f:\sp\public\sdk\inc\winnetwk.h -FILE 3061 f:\sp\public\sdk\inc\imm.h -FILE 3062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3063 f:\sp\public\sdk\inc\windef.h -FILE 3064 f:\sp\public\sdk\inc\pshpack1.h -FILE 3065 f:\sp\public\sdk\inc\winver.h -FILE 3066 f:\sp\public\sdk\inc\windows.h -FILE 3067 f:\sp\public\sdk\inc\winnt.h -FILE 3068 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3069 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3070 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3071 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3072 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3073 f:\sp\public\sdk\inc\winreg.h -FILE 3074 f:\sp\public\sdk\inc\winbase.h -FILE 3075 f:\sp\vctools\crt_bld\self_x86\crt\src\rand_s.c -FILE 3076 f:\sp\public\sdk\inc\winerror.h -FILE 3077 f:\sp\public\sdk\inc\pshpack8.h -FILE 3078 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3079 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3080 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3081 f:\sp\public\sdk\inc\reason.h -FILE 3082 f:\sp\public\sdk\inc\wincon.h -FILE 3083 f:\sp\public\sdk\inc\ddbanned.h -FILE 3084 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3085 f:\sp\public\sdk\inc\pshpack2.h -FILE 3086 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3087 f:\sp\public\sdk\inc\mcx.h -FILE 3088 f:\sp\public\sdk\inc\winuser.h -FILE 3089 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3090 f:\sp\public\sdk\inc\winnls.h -FILE 3091 f:\sp\public\sdk\inc\guiddef.h -FILE 3092 f:\sp\public\sdk\inc\specstrings.h -FILE 3093 f:\sp\public\sdk\inc\basetsd.h -FILE 3094 f:\sp\public\sdk\inc\stralign.h -FILE 3095 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3096 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3097 f:\sp\public\sdk\inc\tvout.h -FILE 3098 f:\sp\public\sdk\inc\winsvc.h -FILE 3099 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3100 f:\sp\public\sdk\inc\wingdi.h -FILE 3101 f:\sp\public\sdk\inc\pshpack4.h -FILE 3102 f:\sp\public\sdk\inc\poppack.h -FILE 3103 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3104 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3105 f:\sp\public\sdk\inc\winnetwk.h -FILE 3106 f:\sp\public\sdk\inc\imm.h -FILE 3107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3108 f:\sp\public\sdk\inc\windef.h -FILE 3109 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3110 f:\sp\public\sdk\inc\pshpack1.h -FILE 3111 f:\sp\public\sdk\inc\winver.h -FILE 3112 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3113 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3114 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3115 f:\sp\public\sdk\inc\winnt.h -FILE 3116 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3117 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3118 f:\sp\public\sdk\inc\winreg.h -FILE 3119 f:\sp\vctools\crt_bld\self_x86\crt\src\purevirt.c -FILE 3120 f:\sp\public\sdk\inc\winbase.h -FILE 3121 f:\sp\public\sdk\inc\winerror.h -FILE 3122 f:\sp\public\sdk\inc\pshpack8.h -FILE 3123 f:\sp\public\sdk\inc\reason.h -FILE 3124 f:\sp\public\sdk\inc\wincon.h -FILE 3125 f:\sp\public\sdk\inc\ddbanned.h -FILE 3126 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3128 f:\sp\public\sdk\inc\pshpack2.h -FILE 3129 f:\sp\public\sdk\inc\mcx.h -FILE 3130 f:\sp\public\sdk\inc\winuser.h -FILE 3131 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3132 f:\sp\public\sdk\inc\winnls.h -FILE 3133 f:\sp\public\sdk\inc\guiddef.h -FILE 3134 f:\sp\public\sdk\inc\windows.h -FILE 3135 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3136 f:\sp\public\sdk\inc\specstrings.h -FILE 3137 f:\sp\public\sdk\inc\basetsd.h -FILE 3138 f:\sp\public\sdk\inc\stralign.h -FILE 3139 f:\sp\public\sdk\inc\tvout.h -FILE 3140 f:\sp\public\sdk\inc\winsvc.h -FILE 3141 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3142 f:\sp\public\sdk\inc\wingdi.h -FILE 3143 f:\sp\public\sdk\inc\pshpack4.h -FILE 3144 f:\sp\public\sdk\inc\poppack.h -FILE 3145 f:\sp\public\sdk\inc\winnetwk.h -FILE 3146 f:\sp\public\sdk\inc\imm.h -FILE 3147 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3148 f:\sp\public\sdk\inc\windef.h -FILE 3149 f:\sp\public\sdk\inc\pshpack1.h -FILE 3150 f:\sp\public\sdk\inc\winver.h -FILE 3151 f:\sp\public\sdk\inc\windows.h -FILE 3152 f:\sp\public\sdk\inc\winnt.h -FILE 3153 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3154 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3155 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3156 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3157 f:\sp\public\sdk\inc\winreg.h -FILE 3158 f:\sp\public\sdk\inc\winbase.h -FILE 3159 f:\sp\vctools\crt_bld\self_x86\crt\src\pesect.c -FILE 3160 f:\sp\public\sdk\inc\winerror.h -FILE 3161 f:\sp\public\sdk\inc\pshpack8.h -FILE 3162 f:\sp\public\sdk\inc\reason.h -FILE 3163 f:\sp\public\sdk\inc\wincon.h -FILE 3164 f:\sp\public\sdk\inc\ddbanned.h -FILE 3165 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3166 f:\sp\public\sdk\inc\pshpack2.h -FILE 3167 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3168 f:\sp\public\sdk\inc\mcx.h -FILE 3169 f:\sp\public\sdk\inc\winuser.h -FILE 3170 f:\sp\public\sdk\inc\winnls.h -FILE 3171 f:\sp\public\sdk\inc\guiddef.h -FILE 3172 f:\sp\public\sdk\inc\specstrings.h -FILE 3173 f:\sp\public\sdk\inc\basetsd.h -FILE 3174 f:\sp\public\sdk\inc\stralign.h -FILE 3175 f:\sp\public\sdk\inc\tvout.h -FILE 3176 f:\sp\public\sdk\inc\winsvc.h -FILE 3177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3178 f:\sp\public\sdk\inc\wingdi.h -FILE 3179 f:\sp\public\sdk\inc\pshpack4.h -FILE 3180 f:\sp\public\sdk\inc\winerror.h -FILE 3181 f:\sp\public\sdk\inc\pshpack1.h -FILE 3182 f:\sp\public\sdk\inc\pshpack8.h -FILE 3183 f:\sp\public\sdk\inc\winver.h -FILE 3184 f:\sp\public\sdk\inc\pshpack2.h -FILE 3185 f:\sp\public\sdk\inc\winreg.h -FILE 3186 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3187 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3188 f:\sp\public\sdk\inc\guiddef.h -FILE 3189 f:\sp\public\sdk\inc\windows.h -FILE 3190 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3191 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 3192 f:\sp\public\sdk\inc\specstrings.h -FILE 3193 f:\sp\public\sdk\inc\basetsd.h -FILE 3194 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3195 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3196 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3197 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3198 f:\sp\public\sdk\inc\pshpack4.h -FILE 3199 f:\sp\public\sdk\inc\reason.h -FILE 3200 f:\sp\public\sdk\inc\wincon.h -FILE 3201 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3202 f:\sp\public\sdk\inc\poppack.h -FILE 3203 f:\sp\public\sdk\inc\mcx.h -FILE 3204 f:\sp\public\sdk\inc\winuser.h -FILE 3205 f:\sp\public\sdk\inc\winnls.h -FILE 3206 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata2.c -FILE 3207 f:\sp\public\sdk\inc\stralign.h -FILE 3208 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3209 f:\sp\public\sdk\inc\windef.h -FILE 3210 f:\sp\public\sdk\inc\tvout.h -FILE 3211 f:\sp\public\sdk\inc\winsvc.h -FILE 3212 f:\sp\public\sdk\inc\wingdi.h -FILE 3213 f:\sp\public\sdk\inc\ddbanned.h -FILE 3214 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3215 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3216 f:\sp\public\sdk\inc\winnt.h -FILE 3217 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3218 f:\sp\public\sdk\inc\winnetwk.h -FILE 3219 f:\sp\public\sdk\inc\imm.h -FILE 3220 f:\sp\public\sdk\inc\winbase.h -FILE 3221 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3222 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3223 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3224 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsdata1.c -FILE 3225 f:\sp\public\sdk\inc\ddbanned.h -FILE 3226 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3227 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3228 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3229 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h -FILE 3230 f:\sp\public\sdk\inc\reason.h -FILE 3231 f:\sp\public\sdk\inc\wincon.h -FILE 3232 f:\sp\public\sdk\inc\pshpack2.h -FILE 3233 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3234 f:\sp\public\sdk\inc\mcx.h -FILE 3235 f:\sp\public\sdk\inc\winuser.h -FILE 3236 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3237 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3238 f:\sp\public\sdk\inc\winnls.h -FILE 3239 f:\sp\public\sdk\inc\guiddef.h -FILE 3240 f:\sp\public\sdk\inc\windows.h -FILE 3241 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3242 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3243 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3244 f:\sp\public\sdk\inc\specstrings.h -FILE 3245 f:\sp\public\sdk\inc\basetsd.h -FILE 3246 f:\sp\public\sdk\inc\stralign.h -FILE 3247 f:\sp\public\sdk\inc\tvout.h -FILE 3248 f:\sp\public\sdk\inc\winsvc.h -FILE 3249 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3250 f:\sp\public\sdk\inc\wingdi.h -FILE 3251 f:\sp\public\sdk\inc\pshpack4.h -FILE 3252 f:\sp\public\sdk\inc\poppack.h -FILE 3253 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 3254 f:\sp\public\sdk\inc\winnetwk.h -FILE 3255 f:\sp\public\sdk\inc\imm.h -FILE 3256 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3257 f:\sp\public\sdk\inc\windef.h -FILE 3258 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3259 f:\sp\vctools\crt_bld\self_x86\crt\src\onexit.c -FILE 3260 f:\sp\public\sdk\inc\pshpack1.h -FILE 3261 f:\sp\public\sdk\inc\winver.h -FILE 3262 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3263 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3264 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3265 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3266 f:\sp\public\sdk\inc\winnt.h -FILE 3267 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3268 f:\sp\public\sdk\inc\ddbanned.h -FILE 3269 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3270 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3271 f:\sp\public\sdk\inc\winreg.h -FILE 3272 f:\sp\public\sdk\inc\winbase.h -FILE 3273 f:\sp\public\sdk\inc\winerror.h -FILE 3274 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3275 f:\sp\public\sdk\inc\pshpack8.h -FILE 3276 f:\sp\public\sdk\inc\winbase.h -FILE 3277 f:\sp\public\sdk\inc\winerror.h -FILE 3278 f:\sp\public\sdk\inc\pshpack1.h -FILE 3279 f:\sp\public\sdk\inc\pshpack8.h -FILE 3280 f:\sp\public\sdk\inc\winver.h -FILE 3281 f:\sp\public\sdk\inc\pshpack2.h -FILE 3282 f:\sp\public\sdk\inc\winreg.h -FILE 3283 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3284 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3285 f:\sp\public\sdk\inc\guiddef.h -FILE 3286 f:\sp\public\sdk\inc\windows.h -FILE 3287 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3288 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3289 f:\sp\public\sdk\inc\specstrings.h -FILE 3290 f:\sp\public\sdk\inc\basetsd.h -FILE 3291 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3292 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3293 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3294 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3295 f:\sp\public\sdk\inc\pshpack4.h -FILE 3296 f:\sp\public\sdk\inc\reason.h -FILE 3297 f:\sp\public\sdk\inc\wincon.h -FILE 3298 f:\sp\public\sdk\inc\poppack.h -FILE 3299 f:\sp\public\sdk\inc\mcx.h -FILE 3300 f:\sp\public\sdk\inc\winuser.h -FILE 3301 f:\sp\public\sdk\inc\winnls.h -FILE 3302 f:\sp\vctools\crt_bld\self_x86\crt\src\lconv.c -FILE 3303 f:\sp\public\sdk\inc\stralign.h -FILE 3304 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3305 f:\sp\public\sdk\inc\windef.h -FILE 3306 f:\sp\public\sdk\inc\tvout.h -FILE 3307 f:\sp\public\sdk\inc\winsvc.h -FILE 3308 f:\sp\public\sdk\inc\wingdi.h -FILE 3309 f:\sp\public\sdk\inc\ddbanned.h -FILE 3310 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3311 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3312 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3313 f:\sp\public\sdk\inc\winnt.h -FILE 3314 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3315 f:\sp\public\sdk\inc\winnetwk.h -FILE 3316 f:\sp\public\sdk\inc\imm.h -FILE 3317 f:\sp\public\sdk\inc\guiddef.h -FILE 3318 f:\sp\public\sdk\inc\winnt.h -FILE 3319 f:\sp\public\sdk\inc\winnls.h -FILE 3320 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3321 f:\sp\public\sdk\inc\pshpack1.h -FILE 3322 f:\sp\public\sdk\inc\winerror.h -FILE 3323 f:\sp\public\sdk\inc\winreg.h -FILE 3324 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3325 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3326 f:\sp\public\sdk\inc\tvout.h -FILE 3327 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3328 f:\sp\vctools\crt_bld\self_x86\crt\src\invarg.c -FILE 3329 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3330 f:\sp\public\sdk\inc\wincon.h -FILE 3331 f:\sp\public\sdk\inc\imm.h -FILE 3332 f:\sp\public\sdk\inc\winbase.h -FILE 3333 f:\sp\public\sdk\inc\wingdi.h -FILE 3334 f:\sp\public\sdk\inc\winver.h -FILE 3335 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3336 f:\sp\public\sdk\inc\windows.h -FILE 3337 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3338 f:\sp\public\sdk\inc\pshpack2.h -FILE 3339 f:\sp\public\sdk\inc\reason.h -FILE 3340 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 3341 f:\sp\public\sdk\inc\specstrings.h -FILE 3342 f:\sp\public\sdk\inc\basetsd.h -FILE 3343 f:\sp\public\sdk\inc\pshpack4.h -FILE 3344 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3345 f:\sp\public\sdk\inc\winnetwk.h -FILE 3346 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3347 f:\sp\public\sdk\inc\stralign.h -FILE 3348 f:\sp\public\sdk\inc\poppack.h -FILE 3349 f:\sp\public\sdk\inc\winsvc.h -FILE 3350 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3351 f:\sp\public\sdk\inc\windef.h -FILE 3352 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3353 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3354 f:\sp\public\sdk\inc\winuser.h -FILE 3355 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3356 f:\sp\public\sdk\inc\ddbanned.h -FILE 3357 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3358 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3359 f:\sp\public\sdk\inc\mcx.h -FILE 3360 f:\sp\public\sdk\inc\pshpack8.h -FILE 3361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3362 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3363 f:\sp\public\sdk\inc\pshpack4.h -FILE 3364 f:\sp\public\sdk\inc\poppack.h -FILE 3365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3367 f:\sp\public\sdk\inc\winnetwk.h -FILE 3368 f:\sp\public\sdk\inc\imm.h -FILE 3369 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3370 f:\sp\public\sdk\inc\windef.h -FILE 3371 f:\sp\public\sdk\inc\pshpack1.h -FILE 3372 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3373 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3374 f:\sp\public\sdk\inc\winver.h -FILE 3375 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3376 f:\sp\public\sdk\inc\winnt.h -FILE 3377 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3378 f:\sp\public\sdk\inc\winreg.h -FILE 3379 f:\sp\vctools\crt_bld\self_x86\crt\src\inittime.c -FILE 3380 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3381 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3382 f:\sp\public\sdk\inc\winbase.h -FILE 3383 f:\sp\public\sdk\inc\winerror.h -FILE 3384 f:\sp\public\sdk\inc\pshpack8.h -FILE 3385 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3386 f:\sp\public\sdk\inc\reason.h -FILE 3387 f:\sp\public\sdk\inc\ddbanned.h -FILE 3388 f:\sp\public\sdk\inc\wincon.h -FILE 3389 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3390 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3391 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3392 f:\sp\public\sdk\inc\pshpack2.h -FILE 3393 f:\sp\public\sdk\inc\mcx.h -FILE 3394 f:\sp\public\sdk\inc\winuser.h -FILE 3395 f:\sp\public\sdk\inc\winnls.h -FILE 3396 f:\sp\public\sdk\inc\guiddef.h -FILE 3397 f:\sp\public\sdk\inc\stralign.h -FILE 3398 f:\sp\public\sdk\inc\specstrings.h -FILE 3399 f:\sp\public\sdk\inc\basetsd.h -FILE 3400 f:\sp\public\sdk\inc\windows.h -FILE 3401 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3402 f:\sp\public\sdk\inc\tvout.h -FILE 3403 f:\sp\public\sdk\inc\winsvc.h -FILE 3404 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3405 f:\sp\public\sdk\inc\wingdi.h -FILE 3406 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3407 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3408 f:\sp\public\sdk\inc\pshpack4.h -FILE 3409 f:\sp\public\sdk\inc\poppack.h -FILE 3410 f:\sp\public\sdk\inc\winnt.h -FILE 3411 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3412 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3413 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3414 f:\sp\public\sdk\inc\winnetwk.h -FILE 3415 f:\sp\public\sdk\inc\imm.h -FILE 3416 f:\sp\public\sdk\inc\pshpack1.h -FILE 3417 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3418 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3419 f:\sp\public\sdk\inc\winver.h -FILE 3420 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3421 f:\sp\public\sdk\inc\guiddef.h -FILE 3422 f:\sp\public\sdk\inc\specstrings.h -FILE 3423 f:\sp\public\sdk\inc\basetsd.h -FILE 3424 f:\sp\public\sdk\inc\windows.h -FILE 3425 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3426 f:\sp\public\sdk\inc\winreg.h -FILE 3427 f:\sp\vctools\crt_bld\self_x86\crt\src\initnum.c -FILE 3428 f:\sp\vctools\crt_bld\self_x86\crt\src\nlsint.h -FILE 3429 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3430 f:\sp\public\sdk\inc\winbase.h -FILE 3431 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3432 f:\sp\public\sdk\inc\winerror.h -FILE 3433 f:\sp\public\sdk\inc\pshpack8.h -FILE 3434 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3435 f:\sp\public\sdk\inc\reason.h -FILE 3436 f:\sp\public\sdk\inc\ddbanned.h -FILE 3437 f:\sp\public\sdk\inc\wincon.h -FILE 3438 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3439 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3440 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3441 f:\sp\public\sdk\inc\pshpack2.h -FILE 3442 f:\sp\public\sdk\inc\mcx.h -FILE 3443 f:\sp\public\sdk\inc\winuser.h -FILE 3444 f:\sp\public\sdk\inc\winnls.h -FILE 3445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3446 f:\sp\public\sdk\inc\windef.h -FILE 3447 f:\sp\public\sdk\inc\stralign.h -FILE 3448 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3449 f:\sp\public\sdk\inc\tvout.h -FILE 3450 f:\sp\public\sdk\inc\winsvc.h -FILE 3451 f:\sp\public\sdk\inc\wingdi.h -FILE 3452 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3453 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3454 f:\sp\public\sdk\inc\pshpack4.h -FILE 3455 f:\sp\public\sdk\inc\poppack.h -FILE 3456 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3457 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3458 f:\sp\public\sdk\inc\winnetwk.h -FILE 3459 f:\sp\public\sdk\inc\imm.h -FILE 3460 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3461 f:\sp\public\sdk\inc\windef.h -FILE 3462 f:\sp\public\sdk\inc\pshpack1.h -FILE 3463 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3464 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3465 f:\sp\public\sdk\inc\winver.h -FILE 3466 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3467 f:\sp\public\sdk\inc\winnt.h -FILE 3468 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3469 f:\sp\public\sdk\inc\winreg.h -FILE 3470 f:\sp\vctools\crt_bld\self_x86\crt\src\initmon.c -FILE 3471 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3472 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3473 f:\sp\public\sdk\inc\winbase.h -FILE 3474 f:\sp\public\sdk\inc\winerror.h -FILE 3475 f:\sp\public\sdk\inc\pshpack8.h -FILE 3476 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3477 f:\sp\public\sdk\inc\reason.h -FILE 3478 f:\sp\public\sdk\inc\ddbanned.h -FILE 3479 f:\sp\public\sdk\inc\wincon.h -FILE 3480 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3481 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3482 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3483 f:\sp\public\sdk\inc\pshpack2.h -FILE 3484 f:\sp\public\sdk\inc\mcx.h -FILE 3485 f:\sp\public\sdk\inc\winuser.h -FILE 3486 f:\sp\public\sdk\inc\winnls.h -FILE 3487 f:\sp\public\sdk\inc\guiddef.h -FILE 3488 f:\sp\public\sdk\inc\stralign.h -FILE 3489 f:\sp\public\sdk\inc\specstrings.h -FILE 3490 f:\sp\public\sdk\inc\basetsd.h -FILE 3491 f:\sp\public\sdk\inc\windows.h -FILE 3492 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3493 f:\sp\public\sdk\inc\tvout.h -FILE 3494 f:\sp\public\sdk\inc\winsvc.h -FILE 3495 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3496 f:\sp\public\sdk\inc\wingdi.h -FILE 3497 f:\sp\public\sdk\inc\winbase.h -FILE 3498 f:\sp\public\sdk\inc\winerror.h -FILE 3499 f:\sp\public\sdk\inc\pshpack1.h -FILE 3500 f:\sp\public\sdk\inc\pshpack8.h -FILE 3501 f:\sp\public\sdk\inc\winver.h -FILE 3502 f:\sp\public\sdk\inc\pshpack2.h -FILE 3503 f:\sp\public\sdk\inc\winreg.h -FILE 3504 f:\sp\public\sdk\inc\guiddef.h -FILE 3505 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3506 f:\sp\public\sdk\inc\specstrings.h -FILE 3507 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3508 f:\sp\public\sdk\inc\basetsd.h -FILE 3509 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3510 f:\sp\public\sdk\inc\windows.h -FILE 3511 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3512 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3513 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3514 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3515 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3516 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3518 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3519 f:\sp\public\sdk\inc\pshpack4.h -FILE 3520 f:\sp\public\sdk\inc\reason.h -FILE 3521 f:\sp\public\sdk\inc\wincon.h -FILE 3522 f:\sp\public\sdk\inc\poppack.h -FILE 3523 f:\sp\vctools\crt_bld\self_x86\crt\src\inithelp.c -FILE 3524 f:\sp\public\sdk\inc\mcx.h -FILE 3525 f:\sp\public\sdk\inc\winuser.h -FILE 3526 f:\sp\public\sdk\inc\winnls.h -FILE 3527 f:\sp\public\sdk\inc\stralign.h -FILE 3528 f:\sp\public\sdk\inc\tvout.h -FILE 3529 f:\sp\public\sdk\inc\winsvc.h -FILE 3530 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3531 f:\sp\public\sdk\inc\wingdi.h -FILE 3532 f:\sp\public\sdk\inc\windef.h -FILE 3533 f:\sp\public\sdk\inc\ddbanned.h -FILE 3534 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3535 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3536 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3537 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3538 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3539 f:\sp\public\sdk\inc\winnetwk.h -FILE 3540 f:\sp\public\sdk\inc\imm.h -FILE 3541 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3542 f:\sp\public\sdk\inc\winnt.h -FILE 3543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3544 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3545 f:\sp\public\sdk\inc\pshpack4.h -FILE 3546 f:\sp\public\sdk\inc\poppack.h -FILE 3547 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3548 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3549 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3550 f:\sp\public\sdk\inc\winnetwk.h -FILE 3551 f:\sp\public\sdk\inc\imm.h -FILE 3552 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3553 f:\sp\public\sdk\inc\windef.h -FILE 3554 f:\sp\public\sdk\inc\pshpack1.h -FILE 3555 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3556 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3557 f:\sp\public\sdk\inc\winver.h -FILE 3558 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3559 f:\sp\public\sdk\inc\winnt.h -FILE 3560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3561 f:\sp\public\sdk\inc\winreg.h -FILE 3562 f:\sp\vctools\crt_bld\self_x86\crt\src\initctyp.c -FILE 3563 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3564 f:\sp\public\sdk\inc\winbase.h -FILE 3565 f:\sp\public\sdk\inc\winerror.h -FILE 3566 f:\sp\public\sdk\inc\pshpack8.h -FILE 3567 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3568 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3569 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3570 f:\sp\public\sdk\inc\reason.h -FILE 3571 f:\sp\public\sdk\inc\ddbanned.h -FILE 3572 f:\sp\public\sdk\inc\wincon.h -FILE 3573 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3574 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3575 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3576 f:\sp\public\sdk\inc\pshpack2.h -FILE 3577 f:\sp\public\sdk\inc\mcx.h -FILE 3578 f:\sp\public\sdk\inc\winuser.h -FILE 3579 f:\sp\public\sdk\inc\winnls.h -FILE 3580 f:\sp\public\sdk\inc\guiddef.h -FILE 3581 f:\sp\public\sdk\inc\stralign.h -FILE 3582 f:\sp\public\sdk\inc\specstrings.h -FILE 3583 f:\sp\public\sdk\inc\basetsd.h -FILE 3584 f:\sp\public\sdk\inc\windows.h -FILE 3585 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3586 f:\sp\public\sdk\inc\tvout.h -FILE 3587 f:\sp\public\sdk\inc\winsvc.h -FILE 3588 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3589 f:\sp\public\sdk\inc\wingdi.h -FILE 3590 f:\sp\public\sdk\inc\poppack.h -FILE 3591 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 3592 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3593 f:\sp\public\sdk\inc\winnetwk.h -FILE 3594 f:\sp\public\sdk\inc\imm.h -FILE 3595 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3596 f:\sp\public\sdk\inc\windef.h -FILE 3597 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3598 f:\sp\public\sdk\inc\pshpack1.h -FILE 3599 f:\sp\public\sdk\inc\winver.h -FILE 3600 f:\sp\public\sdk\inc\windows.h -FILE 3601 f:\sp\public\sdk\inc\winnt.h -FILE 3602 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3603 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3604 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3605 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3606 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3607 f:\sp\public\sdk\inc\winreg.h -FILE 3608 f:\sp\public\sdk\inc\winbase.h -FILE 3609 f:\sp\vctools\crt_bld\self_x86\crt\src\initcrit.c -FILE 3610 f:\sp\public\sdk\inc\winerror.h -FILE 3611 f:\sp\public\sdk\inc\pshpack8.h -FILE 3612 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3613 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3614 f:\sp\public\sdk\inc\reason.h -FILE 3615 f:\sp\public\sdk\inc\wincon.h -FILE 3616 f:\sp\public\sdk\inc\ddbanned.h -FILE 3617 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3618 f:\sp\public\sdk\inc\pshpack2.h -FILE 3619 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3620 f:\sp\public\sdk\inc\mcx.h -FILE 3621 f:\sp\public\sdk\inc\winuser.h -FILE 3622 f:\sp\public\sdk\inc\winnls.h -FILE 3623 f:\sp\public\sdk\inc\guiddef.h -FILE 3624 f:\sp\public\sdk\inc\specstrings.h -FILE 3625 f:\sp\public\sdk\inc\basetsd.h -FILE 3626 f:\sp\public\sdk\inc\stralign.h -FILE 3627 f:\sp\public\sdk\inc\tvout.h -FILE 3628 f:\sp\public\sdk\inc\winsvc.h -FILE 3629 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3630 f:\sp\public\sdk\inc\wingdi.h -FILE 3631 f:\sp\public\sdk\inc\pshpack4.h -FILE 3632 f:\sp\public\sdk\inc\poppack.h -FILE 3633 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3634 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3635 f:\sp\public\sdk\inc\winnetwk.h -FILE 3636 f:\sp\public\sdk\inc\imm.h -FILE 3637 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3638 f:\sp\public\sdk\inc\windef.h -FILE 3639 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3640 f:\sp\public\sdk\inc\pshpack1.h -FILE 3641 f:\sp\public\sdk\inc\winver.h -FILE 3642 f:\sp\public\sdk\inc\windows.h -FILE 3643 f:\sp\public\sdk\inc\winnt.h -FILE 3644 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3645 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3646 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3647 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3648 f:\sp\public\sdk\inc\winreg.h -FILE 3649 f:\sp\public\sdk\inc\winbase.h -FILE 3650 f:\sp\vctools\crt_bld\self_x86\crt\src\initcoll.c -FILE 3651 f:\sp\public\sdk\inc\winerror.h -FILE 3652 f:\sp\public\sdk\inc\pshpack8.h -FILE 3653 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3654 f:\sp\public\sdk\inc\reason.h -FILE 3655 f:\sp\public\sdk\inc\wincon.h -FILE 3656 f:\sp\public\sdk\inc\ddbanned.h -FILE 3657 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3658 f:\sp\public\sdk\inc\pshpack2.h -FILE 3659 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3660 f:\sp\public\sdk\inc\mcx.h -FILE 3661 f:\sp\public\sdk\inc\winuser.h -FILE 3662 f:\sp\public\sdk\inc\winnls.h -FILE 3663 f:\sp\public\sdk\inc\guiddef.h -FILE 3664 f:\sp\public\sdk\inc\specstrings.h -FILE 3665 f:\sp\public\sdk\inc\basetsd.h -FILE 3666 f:\sp\public\sdk\inc\stralign.h -FILE 3667 f:\sp\public\sdk\inc\tvout.h -FILE 3668 f:\sp\public\sdk\inc\winsvc.h -FILE 3669 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3670 f:\sp\public\sdk\inc\wingdi.h -FILE 3671 f:\sp\public\sdk\inc\pshpack4.h -FILE 3672 f:\sp\public\sdk\inc\poppack.h -FILE 3673 f:\sp\public\sdk\inc\winnetwk.h -FILE 3674 f:\sp\public\sdk\inc\imm.h -FILE 3675 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3676 f:\sp\public\sdk\inc\windef.h -FILE 3677 f:\binaries.x86ret\vcboot\inc\mm3dnow.h -FILE 3678 f:\sp\public\sdk\inc\pshpack1.h -FILE 3679 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 3680 f:\sp\public\sdk\inc\winver.h -FILE 3681 f:\sp\public\sdk\inc\windows.h -FILE 3682 f:\sp\public\sdk\inc\winnt.h -FILE 3683 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3684 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3685 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3686 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3687 f:\sp\public\sdk\inc\winreg.h -FILE 3688 f:\sp\public\sdk\inc\winbase.h -FILE 3689 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_support.c -FILE 3690 f:\sp\public\sdk\inc\winerror.h -FILE 3691 f:\sp\public\sdk\inc\pshpack8.h -FILE 3692 f:\sp\vctools\crt_bld\self_x86\crt\src\intrin.h -FILE 3693 f:\sp\vctools\crt_bld\self_x86\crt\src\setjmp.h -FILE 3694 f:\sp\public\sdk\inc\reason.h -FILE 3695 f:\sp\public\sdk\inc\wincon.h -FILE 3696 f:\sp\public\sdk\inc\ddbanned.h -FILE 3697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3698 f:\sp\public\sdk\inc\pshpack2.h -FILE 3699 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3700 f:\sp\public\sdk\inc\mcx.h -FILE 3701 f:\sp\public\sdk\inc\winuser.h -FILE 3702 f:\sp\public\sdk\inc\winnls.h -FILE 3703 f:\sp\public\sdk\inc\guiddef.h -FILE 3704 f:\sp\public\sdk\inc\specstrings.h -FILE 3705 f:\sp\public\sdk\inc\basetsd.h -FILE 3706 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 3707 f:\sp\public\sdk\inc\stralign.h -FILE 3708 f:\sp\public\sdk\inc\tvout.h -FILE 3709 f:\sp\public\sdk\inc\winsvc.h -FILE 3710 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3711 f:\sp\public\sdk\inc\wingdi.h -FILE 3712 f:\binaries.x86ret\vcboot\inc\emmintrin.h -FILE 3713 f:\binaries.x86ret\vcboot\inc\xmmintrin.h -FILE 3714 f:\binaries.x86ret\vcboot\inc\mmintrin.h -FILE 3715 f:\sp\public\sdk\inc\pshpack4.h -FILE 3716 f:\sp\public\sdk\inc\poppack.h -FILE 3717 f:\sp\public\sdk\inc\winnetwk.h -FILE 3718 f:\sp\public\sdk\inc\imm.h -FILE 3719 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3720 f:\sp\public\sdk\inc\windef.h -FILE 3721 f:\sp\public\sdk\inc\pshpack1.h -FILE 3722 f:\sp\public\sdk\inc\winver.h -FILE 3723 f:\sp\public\sdk\inc\windows.h -FILE 3724 f:\sp\public\sdk\inc\winnt.h -FILE 3725 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3726 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3727 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3728 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3729 f:\sp\public\sdk\inc\winreg.h -FILE 3730 f:\sp\public\sdk\inc\winbase.h -FILE 3731 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_report.c -FILE 3732 f:\sp\public\sdk\inc\winerror.h -FILE 3733 f:\sp\public\sdk\inc\pshpack8.h -FILE 3734 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3735 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3736 f:\sp\public\sdk\inc\reason.h -FILE 3737 f:\sp\public\sdk\inc\wincon.h -FILE 3738 f:\sp\public\sdk\inc\ddbanned.h -FILE 3739 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3740 f:\sp\public\sdk\inc\pshpack2.h -FILE 3741 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3742 f:\sp\public\sdk\inc\mcx.h -FILE 3743 f:\sp\public\sdk\inc\winuser.h -FILE 3744 f:\sp\public\sdk\inc\winnls.h -FILE 3745 f:\sp\public\sdk\inc\guiddef.h -FILE 3746 f:\sp\public\sdk\inc\specstrings.h -FILE 3747 f:\sp\public\sdk\inc\basetsd.h -FILE 3748 f:\sp\public\sdk\inc\stralign.h -FILE 3749 f:\sp\public\sdk\inc\tvout.h -FILE 3750 f:\sp\public\sdk\inc\winsvc.h -FILE 3751 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3752 f:\sp\public\sdk\inc\wingdi.h -FILE 3753 f:\sp\public\sdk\inc\pshpack4.h -FILE 3754 f:\sp\public\sdk\inc\poppack.h -FILE 3755 f:\sp\public\sdk\inc\winnetwk.h -FILE 3756 f:\sp\public\sdk\inc\imm.h -FILE 3757 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3758 f:\sp\public\sdk\inc\windef.h -FILE 3759 f:\sp\public\sdk\inc\pshpack1.h -FILE 3760 f:\sp\public\sdk\inc\winver.h -FILE 3761 f:\sp\public\sdk\inc\windows.h -FILE 3762 f:\sp\public\sdk\inc\winnt.h -FILE 3763 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3764 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3765 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3766 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3767 f:\sp\public\sdk\inc\winreg.h -FILE 3768 f:\sp\public\sdk\inc\winbase.h -FILE 3769 f:\sp\vctools\crt_bld\self_x86\crt\src\gs_cookie.c -FILE 3770 f:\sp\public\sdk\inc\winerror.h -FILE 3771 f:\sp\public\sdk\inc\pshpack8.h -FILE 3772 f:\sp\public\sdk\inc\reason.h -FILE 3773 f:\sp\public\sdk\inc\wincon.h -FILE 3774 f:\sp\public\sdk\inc\ddbanned.h -FILE 3775 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3776 f:\sp\public\sdk\inc\pshpack2.h -FILE 3777 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3778 f:\sp\public\sdk\inc\mcx.h -FILE 3779 f:\sp\public\sdk\inc\winuser.h -FILE 3780 f:\sp\public\sdk\inc\winnls.h -FILE 3781 f:\sp\public\sdk\inc\guiddef.h -FILE 3782 f:\sp\public\sdk\inc\specstrings.h -FILE 3783 f:\sp\public\sdk\inc\basetsd.h -FILE 3784 f:\sp\public\sdk\inc\stralign.h -FILE 3785 f:\sp\public\sdk\inc\tvout.h -FILE 3786 f:\sp\public\sdk\inc\winsvc.h -FILE 3787 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3788 f:\sp\public\sdk\inc\wingdi.h -FILE 3789 f:\sp\public\sdk\inc\pshpack4.h -FILE 3790 f:\sp\public\sdk\inc\winerror.h -FILE 3791 f:\sp\public\sdk\inc\pshpack1.h -FILE 3792 f:\sp\public\sdk\inc\pshpack8.h -FILE 3793 f:\sp\public\sdk\inc\winver.h -FILE 3794 f:\sp\public\sdk\inc\pshpack2.h -FILE 3795 f:\sp\public\sdk\inc\winreg.h -FILE 3796 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3797 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3798 f:\sp\public\sdk\inc\guiddef.h -FILE 3799 f:\sp\public\sdk\inc\windows.h -FILE 3800 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3801 f:\sp\public\sdk\inc\specstrings.h -FILE 3802 f:\sp\public\sdk\inc\basetsd.h -FILE 3803 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3804 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 3805 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3806 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3807 f:\sp\public\sdk\inc\pshpack4.h -FILE 3808 f:\sp\public\sdk\inc\reason.h -FILE 3809 f:\sp\public\sdk\inc\wincon.h -FILE 3810 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3811 f:\sp\public\sdk\inc\poppack.h -FILE 3812 f:\sp\public\sdk\inc\mcx.h -FILE 3813 f:\sp\public\sdk\inc\winuser.h -FILE 3814 f:\sp\public\sdk\inc\winnls.h -FILE 3815 f:\sp\vctools\crt_bld\self_x86\crt\src\glstatus.c -FILE 3816 f:\sp\public\sdk\inc\stralign.h -FILE 3817 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3818 f:\sp\public\sdk\inc\windef.h -FILE 3819 f:\sp\public\sdk\inc\tvout.h -FILE 3820 f:\sp\public\sdk\inc\winsvc.h -FILE 3821 f:\sp\public\sdk\inc\wingdi.h -FILE 3822 f:\sp\public\sdk\inc\ddbanned.h -FILE 3823 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3824 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3825 f:\sp\public\sdk\inc\winnt.h -FILE 3826 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3827 f:\sp\public\sdk\inc\winnetwk.h -FILE 3828 f:\sp\public\sdk\inc\imm.h -FILE 3829 f:\sp\public\sdk\inc\winbase.h -FILE 3830 f:\sp\public\sdk\inc\pshpack4.h -FILE 3831 f:\sp\public\sdk\inc\poppack.h -FILE 3832 f:\sp\public\sdk\inc\winnt.h -FILE 3833 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3834 f:\sp\public\sdk\inc\winnetwk.h -FILE 3835 f:\sp\public\sdk\inc\imm.h -FILE 3836 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3837 f:\sp\public\sdk\inc\pshpack1.h -FILE 3838 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3839 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3840 f:\sp\public\sdk\inc\winver.h -FILE 3841 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3842 f:\sp\public\sdk\inc\guiddef.h -FILE 3843 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3844 f:\sp\public\sdk\inc\specstrings.h -FILE 3845 f:\sp\public\sdk\inc\basetsd.h -FILE 3846 f:\sp\public\sdk\inc\windows.h -FILE 3847 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3848 f:\sp\public\sdk\inc\winreg.h -FILE 3849 f:\sp\vctools\crt_bld\self_x86\crt\src\getqloc.c -FILE 3850 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3851 f:\sp\public\sdk\inc\winbase.h -FILE 3852 f:\sp\public\sdk\inc\winerror.h -FILE 3853 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3854 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3855 f:\sp\public\sdk\inc\pshpack8.h -FILE 3856 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3857 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3858 f:\sp\public\sdk\inc\reason.h -FILE 3859 f:\sp\public\sdk\inc\ddbanned.h -FILE 3860 f:\sp\public\sdk\inc\wincon.h -FILE 3861 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3862 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3863 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3864 f:\sp\public\sdk\inc\pshpack2.h -FILE 3865 f:\sp\public\sdk\inc\mcx.h -FILE 3866 f:\sp\public\sdk\inc\winuser.h -FILE 3867 f:\sp\public\sdk\inc\winnls.h -FILE 3868 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3869 f:\sp\public\sdk\inc\windef.h -FILE 3870 f:\sp\public\sdk\inc\stralign.h -FILE 3871 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3872 f:\sp\public\sdk\inc\tvout.h -FILE 3873 f:\sp\public\sdk\inc\winsvc.h -FILE 3874 f:\sp\public\sdk\inc\wingdi.h -FILE 3875 f:\sp\public\sdk\inc\reason.h -FILE 3876 f:\sp\public\sdk\inc\wincon.h -FILE 3877 f:\sp\public\sdk\inc\pshpack2.h -FILE 3878 f:\sp\public\sdk\inc\mcx.h -FILE 3879 f:\sp\public\sdk\inc\winuser.h -FILE 3880 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3881 f:\sp\public\sdk\inc\winnls.h -FILE 3882 f:\sp\public\sdk\inc\guiddef.h -FILE 3883 f:\sp\public\sdk\inc\windows.h -FILE 3884 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3885 f:\sp\public\sdk\inc\specstrings.h -FILE 3886 f:\sp\public\sdk\inc\basetsd.h -FILE 3887 f:\sp\public\sdk\inc\stralign.h -FILE 3888 f:\sp\public\sdk\inc\tvout.h -FILE 3889 f:\sp\public\sdk\inc\winsvc.h -FILE 3890 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3891 f:\sp\public\sdk\inc\wingdi.h -FILE 3892 f:\sp\public\sdk\inc\pshpack4.h -FILE 3893 f:\sp\public\sdk\inc\poppack.h -FILE 3894 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 3895 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3896 f:\sp\public\sdk\inc\winnetwk.h -FILE 3897 f:\sp\public\sdk\inc\imm.h -FILE 3898 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3899 f:\sp\public\sdk\inc\windef.h -FILE 3900 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 3901 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 3902 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3903 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3904 f:\sp\vctools\crt_bld\self_x86\crt\src\getenv.c -FILE 3905 f:\sp\public\sdk\inc\pshpack1.h -FILE 3906 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 3907 f:\sp\public\sdk\inc\winver.h -FILE 3908 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3909 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3910 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3911 f:\sp\public\sdk\inc\winnt.h -FILE 3912 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3913 f:\sp\public\sdk\inc\ddbanned.h -FILE 3914 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3915 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3916 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3917 f:\sp\public\sdk\inc\winreg.h -FILE 3918 f:\sp\public\sdk\inc\winbase.h -FILE 3919 f:\sp\public\sdk\inc\winerror.h -FILE 3920 f:\sp\public\sdk\inc\pshpack8.h -FILE 3921 f:\sp\public\sdk\inc\poppack.h -FILE 3922 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 3923 f:\sp\public\sdk\inc\winnetwk.h -FILE 3924 f:\sp\public\sdk\inc\imm.h -FILE 3925 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3926 f:\sp\public\sdk\inc\windef.h -FILE 3927 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3928 f:\sp\public\sdk\inc\pshpack1.h -FILE 3929 f:\sp\public\sdk\inc\winver.h -FILE 3930 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 3931 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3932 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3933 f:\sp\public\sdk\inc\winnt.h -FILE 3934 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3935 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 3936 f:\sp\public\sdk\inc\winreg.h -FILE 3937 f:\sp\vctools\crt_bld\self_x86\crt\src\errmode.c -FILE 3938 f:\sp\public\sdk\inc\winbase.h -FILE 3939 f:\sp\public\sdk\inc\winerror.h -FILE 3940 f:\sp\public\sdk\inc\pshpack8.h -FILE 3941 f:\sp\public\sdk\inc\reason.h -FILE 3942 f:\sp\public\sdk\inc\wincon.h -FILE 3943 f:\sp\public\sdk\inc\ddbanned.h -FILE 3944 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3945 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3946 f:\sp\public\sdk\inc\pshpack2.h -FILE 3947 f:\sp\public\sdk\inc\mcx.h -FILE 3948 f:\sp\public\sdk\inc\winuser.h -FILE 3949 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3950 f:\sp\public\sdk\inc\winnls.h -FILE 3951 f:\sp\public\sdk\inc\guiddef.h -FILE 3952 f:\sp\public\sdk\inc\windows.h -FILE 3953 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3954 f:\sp\public\sdk\inc\specstrings.h -FILE 3955 f:\sp\public\sdk\inc\basetsd.h -FILE 3956 f:\sp\public\sdk\inc\stralign.h -FILE 3957 f:\sp\public\sdk\inc\tvout.h -FILE 3958 f:\sp\public\sdk\inc\winsvc.h -FILE 3959 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 3960 f:\sp\public\sdk\inc\wingdi.h -FILE 3961 f:\sp\public\sdk\inc\pshpack4.h -FILE 3962 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 3963 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 3964 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3965 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3966 f:\sp\vctools\crt_bld\self_x86\crt\src\dbghook.c -FILE 3967 f:\sp\public\sdk\inc\ddbanned.h -FILE 3968 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 3970 f:\sp\public\sdk\inc\poppack.h -FILE 3971 f:\sp\public\sdk\inc\winnetwk.h -FILE 3972 f:\sp\public\sdk\inc\imm.h -FILE 3973 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 3974 f:\sp\public\sdk\inc\windef.h -FILE 3975 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 3976 f:\sp\public\sdk\inc\pshpack1.h -FILE 3977 f:\sp\public\sdk\inc\winver.h -FILE 3978 f:\sp\public\sdk\inc\windows.h -FILE 3979 f:\sp\public\sdk\inc\winnt.h -FILE 3980 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 3981 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 3982 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 3983 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 3984 f:\sp\public\sdk\inc\winreg.h -FILE 3985 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 3986 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.c -FILE 3987 f:\sp\public\sdk\inc\winbase.h -FILE 3988 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 3989 f:\sp\public\sdk\inc\winerror.h -FILE 3990 f:\sp\public\sdk\inc\pshpack8.h -FILE 3991 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 3992 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 3993 f:\sp\public\sdk\inc\reason.h -FILE 3994 f:\sp\public\sdk\inc\wincon.h -FILE 3995 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 3996 f:\sp\public\sdk\inc\ddbanned.h -FILE 3997 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 3998 f:\sp\public\sdk\inc\pshpack2.h -FILE 3999 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4000 f:\sp\public\sdk\inc\mcx.h -FILE 4001 f:\sp\public\sdk\inc\winuser.h -FILE 4002 f:\sp\public\sdk\inc\winnls.h -FILE 4003 f:\sp\public\sdk\inc\guiddef.h -FILE 4004 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4005 f:\sp\public\sdk\inc\specstrings.h -FILE 4006 f:\sp\public\sdk\inc\basetsd.h -FILE 4007 f:\sp\public\sdk\inc\stralign.h -FILE 4008 f:\sp\public\sdk\inc\tvout.h -FILE 4009 f:\sp\public\sdk\inc\winsvc.h -FILE 4010 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4011 f:\sp\public\sdk\inc\wingdi.h -FILE 4012 f:\sp\public\sdk\inc\pshpack4.h -FILE 4013 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4014 f:\sp\public\sdk\inc\mcx.h -FILE 4015 f:\sp\public\sdk\inc\winuser.h -FILE 4016 f:\sp\public\sdk\inc\winnls.h -FILE 4017 f:\sp\public\sdk\inc\stralign.h -FILE 4018 f:\sp\public\sdk\inc\tvout.h -FILE 4019 f:\sp\public\sdk\inc\winsvc.h -FILE 4020 f:\sp\public\sdk\inc\wingdi.h -FILE 4021 f:\sp\public\sdk\inc\pshpack4.h -FILE 4022 f:\sp\public\sdk\inc\winnt.h -FILE 4023 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4024 f:\sp\public\sdk\inc\poppack.h -FILE 4025 f:\sp\public\sdk\inc\winnetwk.h -FILE 4026 f:\sp\public\sdk\inc\imm.h -FILE 4027 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 4028 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4029 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4030 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4031 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4032 f:\sp\public\sdk\inc\pshpack1.h -FILE 4033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtmbox.c -FILE 4034 f:\sp\public\sdk\inc\winver.h -FILE 4035 f:\sp\public\sdk\inc\guiddef.h -FILE 4036 f:\sp\public\sdk\inc\windows.h -FILE 4037 f:\sp\public\sdk\inc\specstrings.h -FILE 4038 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4039 f:\sp\public\sdk\inc\basetsd.h -FILE 4040 f:\sp\public\sdk\inc\winreg.h -FILE 4041 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4042 f:\sp\public\sdk\inc\winbase.h -FILE 4043 f:\sp\public\sdk\inc\ddbanned.h -FILE 4044 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4045 f:\sp\public\sdk\inc\winerror.h -FILE 4046 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4047 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4048 f:\sp\public\sdk\inc\pshpack8.h -FILE 4049 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4050 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4051 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4052 f:\sp\public\sdk\inc\reason.h -FILE 4053 f:\sp\public\sdk\inc\wincon.h -FILE 4054 f:\sp\public\sdk\inc\pshpack2.h -FILE 4055 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4056 f:\sp\public\sdk\inc\windef.h -FILE 4057 f:\sp\public\sdk\inc\poppack.h -FILE 4058 f:\sp\vctools\crt_bld\self_x86\crt\src\fltintrn.h -FILE 4059 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4060 f:\sp\public\sdk\inc\winnetwk.h -FILE 4061 f:\sp\public\sdk\inc\imm.h -FILE 4062 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4063 f:\sp\public\sdk\inc\windef.h -FILE 4064 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4065 f:\sp\public\sdk\inc\pshpack1.h -FILE 4066 f:\sp\public\sdk\inc\winver.h -FILE 4067 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4068 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4069 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4070 f:\sp\public\sdk\inc\winnt.h -FILE 4071 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4072 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4073 f:\sp\public\sdk\inc\winreg.h -FILE 4074 f:\sp\vctools\crt_bld\self_x86\crt\src\cmiscdat.c -FILE 4075 f:\sp\public\sdk\inc\winbase.h -FILE 4076 f:\sp\public\sdk\inc\winerror.h -FILE 4077 f:\sp\public\sdk\inc\pshpack8.h -FILE 4078 f:\sp\public\sdk\inc\reason.h -FILE 4079 f:\sp\public\sdk\inc\wincon.h -FILE 4080 f:\sp\public\sdk\inc\ddbanned.h -FILE 4081 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4082 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4083 f:\sp\public\sdk\inc\pshpack2.h -FILE 4084 f:\sp\public\sdk\inc\mcx.h -FILE 4085 f:\sp\public\sdk\inc\winuser.h -FILE 4086 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4087 f:\sp\public\sdk\inc\winnls.h -FILE 4088 f:\sp\public\sdk\inc\guiddef.h -FILE 4089 f:\sp\public\sdk\inc\windows.h -FILE 4090 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4091 f:\sp\public\sdk\inc\specstrings.h -FILE 4092 f:\sp\public\sdk\inc\basetsd.h -FILE 4093 f:\sp\public\sdk\inc\stralign.h -FILE 4094 f:\sp\public\sdk\inc\tvout.h -FILE 4095 f:\sp\public\sdk\inc\winsvc.h -FILE 4096 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4097 f:\sp\public\sdk\inc\wingdi.h -FILE 4098 f:\sp\public\sdk\inc\pshpack4.h -FILE 4099 f:\sp\public\sdk\inc\pshpack4.h -FILE 4100 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 4101 f:\sp\vctools\crt_bld\self_x86\crt\src\signal.h -FILE 4102 f:\sp\public\sdk\inc\poppack.h -FILE 4103 f:\sp\public\sdk\inc\winnetwk.h -FILE 4104 f:\sp\public\sdk\inc\imm.h -FILE 4105 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4106 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4107 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4108 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4109 f:\sp\public\sdk\inc\windef.h -FILE 4110 f:\sp\public\sdk\inc\pshpack1.h -FILE 4111 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4112 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4113 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4114 f:\sp\public\sdk\inc\winver.h -FILE 4115 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4116 f:\sp\public\sdk\inc\winnt.h -FILE 4117 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4118 f:\sp\public\sdk\inc\winreg.h -FILE 4119 f:\sp\vctools\crt_bld\self_x86\crt\src\abort.c -FILE 4120 f:\sp\public\sdk\inc\winbase.h -FILE 4121 f:\sp\public\sdk\inc\winerror.h -FILE 4122 f:\sp\public\sdk\inc\pshpack8.h -FILE 4123 f:\sp\public\sdk\inc\reason.h -FILE 4124 f:\sp\public\sdk\inc\ddbanned.h -FILE 4125 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4126 f:\sp\public\sdk\inc\wincon.h -FILE 4127 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4128 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4129 f:\sp\public\sdk\inc\pshpack2.h -FILE 4130 f:\sp\public\sdk\inc\mcx.h -FILE 4131 f:\sp\public\sdk\inc\winuser.h -FILE 4132 f:\sp\public\sdk\inc\winnls.h -FILE 4133 f:\sp\public\sdk\inc\guiddef.h -FILE 4134 f:\sp\public\sdk\inc\stralign.h -FILE 4135 f:\sp\public\sdk\inc\specstrings.h -FILE 4136 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4137 f:\sp\public\sdk\inc\basetsd.h -FILE 4138 f:\sp\public\sdk\inc\windows.h -FILE 4139 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4140 f:\sp\public\sdk\inc\tvout.h -FILE 4141 f:\sp\public\sdk\inc\winsvc.h -FILE 4142 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4143 f:\sp\public\sdk\inc\wingdi.h -FILE 4144 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4145 f:\sp\public\sdk\inc\wincon.h -FILE 4146 f:\sp\public\sdk\inc\imm.h -FILE 4147 f:\sp\public\sdk\inc\winbase.h -FILE 4148 f:\sp\public\sdk\inc\wingdi.h -FILE 4149 f:\sp\public\sdk\inc\winver.h -FILE 4150 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4151 f:\sp\public\sdk\inc\windows.h -FILE 4152 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4153 f:\sp\public\sdk\inc\pshpack2.h -FILE 4154 f:\sp\public\sdk\inc\reason.h -FILE 4155 f:\sp\vctools\crt_bld\self_x86\crt\src\a_str.c -FILE 4156 f:\sp\public\sdk\inc\specstrings.h -FILE 4157 f:\sp\public\sdk\inc\basetsd.h -FILE 4158 f:\sp\public\sdk\inc\pshpack4.h -FILE 4159 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4160 f:\sp\public\sdk\inc\winnetwk.h -FILE 4161 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4162 f:\sp\public\sdk\inc\stralign.h -FILE 4163 f:\sp\public\sdk\inc\poppack.h -FILE 4164 f:\sp\public\sdk\inc\winsvc.h -FILE 4165 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4166 f:\sp\public\sdk\inc\windef.h -FILE 4167 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4168 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4169 f:\sp\public\sdk\inc\winuser.h -FILE 4170 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4171 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4172 f:\sp\public\sdk\inc\mcx.h -FILE 4173 f:\sp\public\sdk\inc\pshpack8.h -FILE 4174 f:\sp\public\sdk\inc\guiddef.h -FILE 4175 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4176 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4177 f:\sp\public\sdk\inc\winnt.h -FILE 4178 f:\sp\public\sdk\inc\winnls.h -FILE 4179 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4180 f:\sp\public\sdk\inc\pshpack1.h -FILE 4181 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4182 f:\sp\public\sdk\inc\winerror.h -FILE 4183 f:\sp\public\sdk\inc\winreg.h -FILE 4184 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4185 f:\sp\public\sdk\inc\ddbanned.h -FILE 4186 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4187 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4188 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4189 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4190 f:\sp\public\sdk\inc\tvout.h -FILE 4191 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4192 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4193 f:\sp\public\sdk\inc\wincon.h -FILE 4194 f:\sp\public\sdk\inc\imm.h -FILE 4195 f:\sp\public\sdk\inc\winbase.h -FILE 4196 f:\sp\public\sdk\inc\wingdi.h -FILE 4197 f:\sp\public\sdk\inc\winver.h -FILE 4198 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4199 f:\sp\public\sdk\inc\windows.h -FILE 4200 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4201 f:\sp\public\sdk\inc\pshpack2.h -FILE 4202 f:\sp\public\sdk\inc\reason.h -FILE 4203 f:\sp\vctools\crt_bld\self_x86\crt\src\a_map.c -FILE 4204 f:\sp\public\sdk\inc\specstrings.h -FILE 4205 f:\sp\public\sdk\inc\basetsd.h -FILE 4206 f:\sp\public\sdk\inc\pshpack4.h -FILE 4207 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4208 f:\sp\public\sdk\inc\winnetwk.h -FILE 4209 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4210 f:\sp\public\sdk\inc\stralign.h -FILE 4211 f:\sp\public\sdk\inc\poppack.h -FILE 4212 f:\sp\public\sdk\inc\winsvc.h -FILE 4213 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4214 f:\sp\public\sdk\inc\windef.h -FILE 4215 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4216 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4217 f:\sp\public\sdk\inc\winuser.h -FILE 4218 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4219 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4220 f:\sp\public\sdk\inc\mcx.h -FILE 4221 f:\sp\public\sdk\inc\pshpack8.h -FILE 4222 f:\sp\public\sdk\inc\guiddef.h -FILE 4223 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4224 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4225 f:\sp\public\sdk\inc\winnt.h -FILE 4226 f:\sp\public\sdk\inc\winnls.h -FILE 4227 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4228 f:\sp\public\sdk\inc\pshpack1.h -FILE 4229 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4230 f:\sp\public\sdk\inc\winerror.h -FILE 4231 f:\sp\public\sdk\inc\winreg.h -FILE 4232 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4233 f:\sp\public\sdk\inc\ddbanned.h -FILE 4234 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4235 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4236 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4237 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4238 f:\sp\public\sdk\inc\tvout.h -FILE 4239 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4240 f:\sp\public\sdk\inc\wincon.h -FILE 4241 f:\sp\public\sdk\inc\imm.h -FILE 4242 f:\sp\public\sdk\inc\winbase.h -FILE 4243 f:\sp\public\sdk\inc\wingdi.h -FILE 4244 f:\sp\public\sdk\inc\winver.h -FILE 4245 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4246 f:\sp\public\sdk\inc\windows.h -FILE 4247 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4248 f:\sp\public\sdk\inc\pshpack2.h -FILE 4249 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4250 f:\sp\public\sdk\inc\reason.h -FILE 4251 f:\sp\vctools\crt_bld\self_x86\crt\src\a_loc.c -FILE 4252 f:\sp\public\sdk\inc\specstrings.h -FILE 4253 f:\sp\public\sdk\inc\basetsd.h -FILE 4254 f:\sp\public\sdk\inc\pshpack4.h -FILE 4255 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4256 f:\sp\public\sdk\inc\winnetwk.h -FILE 4257 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4258 f:\sp\public\sdk\inc\stralign.h -FILE 4259 f:\sp\public\sdk\inc\poppack.h -FILE 4260 f:\sp\public\sdk\inc\winsvc.h -FILE 4261 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4262 f:\sp\public\sdk\inc\windef.h -FILE 4263 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4264 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4265 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4266 f:\sp\public\sdk\inc\winuser.h -FILE 4267 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4268 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4269 f:\sp\public\sdk\inc\mcx.h -FILE 4270 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4271 f:\sp\public\sdk\inc\pshpack8.h -FILE 4272 f:\sp\public\sdk\inc\guiddef.h -FILE 4273 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4274 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4275 f:\sp\public\sdk\inc\winnt.h -FILE 4276 f:\sp\public\sdk\inc\winnls.h -FILE 4277 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4278 f:\sp\public\sdk\inc\pshpack1.h -FILE 4279 f:\sp\public\sdk\inc\winerror.h -FILE 4280 f:\sp\public\sdk\inc\winreg.h -FILE 4281 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4282 f:\sp\public\sdk\inc\ddbanned.h -FILE 4283 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4284 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4285 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4286 f:\sp\public\sdk\inc\tvout.h -FILE 4287 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4288 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4289 f:\sp\public\sdk\inc\poppack.h -FILE 4290 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4291 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4292 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4293 f:\sp\public\sdk\inc\winnetwk.h -FILE 4294 f:\sp\public\sdk\inc\imm.h -FILE 4295 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4296 f:\sp\public\sdk\inc\windef.h -FILE 4297 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4298 f:\sp\public\sdk\inc\pshpack1.h -FILE 4299 f:\sp\public\sdk\inc\winver.h -FILE 4300 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4301 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4302 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4303 f:\sp\public\sdk\inc\winnt.h -FILE 4304 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4305 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4306 f:\sp\public\sdk\inc\winreg.h -FILE 4307 f:\sp\vctools\crt_bld\self_x86\crt\src\a_env.c -FILE 4308 f:\sp\public\sdk\inc\winbase.h -FILE 4309 f:\sp\public\sdk\inc\winerror.h -FILE 4310 f:\sp\public\sdk\inc\pshpack8.h -FILE 4311 f:\sp\public\sdk\inc\reason.h -FILE 4312 f:\sp\public\sdk\inc\wincon.h -FILE 4313 f:\sp\public\sdk\inc\ddbanned.h -FILE 4314 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4315 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4316 f:\sp\public\sdk\inc\pshpack2.h -FILE 4317 f:\sp\public\sdk\inc\mcx.h -FILE 4318 f:\sp\public\sdk\inc\winuser.h -FILE 4319 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4320 f:\sp\public\sdk\inc\winnls.h -FILE 4321 f:\sp\public\sdk\inc\guiddef.h -FILE 4322 f:\sp\public\sdk\inc\windows.h -FILE 4323 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4324 f:\sp\public\sdk\inc\specstrings.h -FILE 4325 f:\sp\public\sdk\inc\basetsd.h -FILE 4326 f:\sp\public\sdk\inc\stralign.h -FILE 4327 f:\sp\public\sdk\inc\tvout.h -FILE 4328 f:\sp\public\sdk\inc\winsvc.h -FILE 4329 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4330 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4331 f:\sp\public\sdk\inc\wingdi.h -FILE 4332 f:\sp\public\sdk\inc\pshpack4.h -FILE 4333 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4334 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4335 f:\sp\public\sdk\inc\wincon.h -FILE 4336 f:\sp\public\sdk\inc\imm.h -FILE 4337 f:\sp\public\sdk\inc\winbase.h -FILE 4338 f:\sp\public\sdk\inc\wingdi.h -FILE 4339 f:\sp\public\sdk\inc\winver.h -FILE 4340 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4341 f:\sp\public\sdk\inc\windows.h -FILE 4342 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4343 f:\sp\public\sdk\inc\pshpack2.h -FILE 4344 f:\sp\public\sdk\inc\reason.h -FILE 4345 f:\sp\vctools\crt_bld\self_x86\crt\src\a_cmp.c -FILE 4346 f:\sp\public\sdk\inc\specstrings.h -FILE 4347 f:\sp\public\sdk\inc\basetsd.h -FILE 4348 f:\sp\public\sdk\inc\pshpack4.h -FILE 4349 f:\sp\public\sdk\inc\winnetwk.h -FILE 4350 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4351 f:\sp\public\sdk\inc\stralign.h -FILE 4352 f:\sp\public\sdk\inc\poppack.h -FILE 4353 f:\sp\public\sdk\inc\winsvc.h -FILE 4354 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4355 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4356 f:\sp\public\sdk\inc\windef.h -FILE 4357 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4358 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4359 f:\sp\public\sdk\inc\winuser.h -FILE 4360 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4361 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4362 f:\sp\public\sdk\inc\mcx.h -FILE 4363 f:\sp\public\sdk\inc\pshpack8.h -FILE 4364 f:\sp\public\sdk\inc\guiddef.h -FILE 4365 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4366 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4367 f:\sp\public\sdk\inc\winnt.h -FILE 4368 f:\sp\public\sdk\inc\winnls.h -FILE 4369 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4370 f:\sp\public\sdk\inc\pshpack1.h -FILE 4371 f:\sp\public\sdk\inc\winerror.h -FILE 4372 f:\sp\public\sdk\inc\winreg.h -FILE 4373 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4374 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4375 f:\sp\public\sdk\inc\ddbanned.h -FILE 4376 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4377 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4378 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4379 f:\sp\public\sdk\inc\tvout.h -FILE 4380 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4381 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\sehprolg4.asm -FILE 4382 f:\sp\public\sdk\inc\poppack.h -FILE 4383 f:\sp\public\sdk\inc\winnetwk.h -FILE 4384 f:\sp\public\sdk\inc\imm.h -FILE 4385 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4386 f:\sp\public\sdk\inc\windef.h -FILE 4387 f:\sp\public\sdk\inc\pshpack1.h -FILE 4388 f:\sp\public\sdk\inc\winver.h -FILE 4389 f:\sp\public\sdk\inc\windows.h -FILE 4390 f:\sp\public\sdk\inc\winnt.h -FILE 4391 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4392 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4393 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4394 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4395 f:\sp\public\sdk\inc\winreg.h -FILE 4396 f:\sp\public\sdk\inc\winbase.h -FILE 4397 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\secchk.c -FILE 4398 f:\sp\public\sdk\inc\winerror.h -FILE 4399 f:\sp\public\sdk\inc\pshpack8.h -FILE 4400 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 4401 f:\sp\public\sdk\inc\reason.h -FILE 4402 f:\sp\public\sdk\inc\wincon.h -FILE 4403 f:\sp\public\sdk\inc\ddbanned.h -FILE 4404 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4405 f:\sp\public\sdk\inc\pshpack2.h -FILE 4406 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4407 f:\sp\public\sdk\inc\mcx.h -FILE 4408 f:\sp\public\sdk\inc\winuser.h -FILE 4409 f:\sp\public\sdk\inc\winnls.h -FILE 4410 f:\sp\public\sdk\inc\guiddef.h -FILE 4411 f:\sp\public\sdk\inc\specstrings.h -FILE 4412 f:\sp\public\sdk\inc\basetsd.h -FILE 4413 f:\sp\public\sdk\inc\stralign.h -FILE 4414 f:\sp\public\sdk\inc\tvout.h -FILE 4415 f:\sp\public\sdk\inc\winsvc.h -FILE 4416 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4417 f:\sp\public\sdk\inc\wingdi.h -FILE 4418 f:\sp\public\sdk\inc\pshpack4.h -FILE 4419 f:\sp\public\sdk\inc\poppack.h -FILE 4420 f:\sp\public\sdk\inc\winnetwk.h -FILE 4421 f:\sp\public\sdk\inc\imm.h -FILE 4422 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4423 f:\sp\public\sdk\inc\windef.h -FILE 4424 f:\sp\public\sdk\inc\pshpack1.h -FILE 4425 f:\sp\public\sdk\inc\winver.h -FILE 4426 f:\sp\public\sdk\inc\windows.h -FILE 4427 f:\sp\public\sdk\inc\winnt.h -FILE 4428 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4429 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4430 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4431 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4432 f:\sp\public\sdk\inc\winreg.h -FILE 4433 f:\sp\public\sdk\inc\winbase.h -FILE 4434 f:\sp\vctools\crt_bld\self_x86\crt\src\intel\loadcfg.c -FILE 4435 f:\sp\public\sdk\inc\winerror.h -FILE 4436 f:\sp\public\sdk\inc\pshpack8.h -FILE 4437 f:\sp\public\sdk\inc\reason.h -FILE 4438 f:\sp\public\sdk\inc\wincon.h -FILE 4439 f:\sp\public\sdk\inc\ddbanned.h -FILE 4440 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4441 f:\sp\public\sdk\inc\pshpack2.h -FILE 4442 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4443 f:\sp\public\sdk\inc\mcx.h -FILE 4444 f:\sp\public\sdk\inc\winuser.h -FILE 4445 f:\sp\public\sdk\inc\winnls.h -FILE 4446 f:\sp\public\sdk\inc\guiddef.h -FILE 4447 f:\sp\public\sdk\inc\specstrings.h -FILE 4448 f:\sp\public\sdk\inc\basetsd.h -FILE 4449 f:\sp\public\sdk\inc\stralign.h -FILE 4450 f:\sp\public\sdk\inc\tvout.h -FILE 4451 f:\sp\public\sdk\inc\winsvc.h -FILE 4452 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4453 f:\sp\public\sdk\inc\wingdi.h -FILE 4454 f:\sp\public\sdk\inc\pshpack4.h -FILE 4455 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup4.asm -FILE 4456 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc -FILE 4457 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\exsup.asm -FILE 4458 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\pversion.inc -FILE 4459 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cmacros.inc -FILE 4460 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc -FILE 4461 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\misc\i386\nlgsupp.asm -FILE 4462 f:\sp\public\sdk\inc\ntldr.h -FILE 4463 f:\sp\public\sdk\inc\ntpoapi.h -FILE 4464 f:\sp\public\sdk\inc\ntexapi.h -FILE 4465 f:\sp\public\sdk\inc\pshpack1.h -FILE 4466 f:\sp\public\sdk\inc\pshpack8.h -FILE 4467 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 4468 f:\sp\public\sdk\inc\ntdef.h -FILE 4469 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 4470 f:\sp\public\sdk\inc\mce.h -FILE 4471 f:\sp\public\sdk\inc\poppack.h -FILE 4472 f:\sp\public\sdk\inc\ntimage.h -FILE 4473 f:\sp\public\sdk\inc\pshpack2.h -FILE 4474 f:\sp\public\sdk\inc\ntpsapi.h -FILE 4475 f:\sp\public\sdk\inc\nti386.h -FILE 4476 f:\sp\public\sdk\inc\nt.h -FILE 4477 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 4478 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 4479 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 4480 f:\sp\public\sdk\inc\specstrings.h -FILE 4481 f:\sp\public\sdk\inc\basetsd.h -FILE 4482 f:\sp\public\sdk\inc\ntxcapi.h -FILE 4483 f:\sp\public\sdk\inc\guiddef.h -FILE 4484 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\misc\i386\chandler4.c -FILE 4485 f:\sp\public\sdk\inc\ntstatus.h -FILE 4486 f:\sp\public\sdk\inc\ntkeapi.h -FILE 4487 f:\sp\public\sdk\inc\ntconfig.h -FILE 4488 f:\sp\public\sdk\inc\ntregapi.h -FILE 4489 f:\sp\public\sdk\inc\ntmmapi.h -FILE 4490 f:\sp\public\sdk\inc\ntobapi.h -FILE 4491 f:\sp\public\sdk\inc\nxi386.h -FILE 4492 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h -FILE 4493 f:\sp\public\sdk\inc\ntioapi.h -FILE 4494 f:\sp\public\sdk\inc\devioctl.h -FILE 4495 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 4496 f:\sp\public\sdk\inc\ntseapi.h -FILE 4497 f:\sp\public\sdk\inc\ddbanned.h -FILE 4498 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 4499 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 4500 f:\sp\public\sdk\inc\ntnls.h -FILE 4501 f:\sp\public\sdk\inc\ntelfapi.h -FILE 4502 f:\sp\public\sdk\inc\pshpack4.h -FILE 4503 f:\sp\public\sdk\inc\ntiolog.h -FILE 4504 f:\sp\public\sdk\inc\ntlpcapi.h -FILE 4505 f:\sp\public\sdk\inc\ntpnpapi.h -FILE 4506 f:\sp\public\sdk\inc\cfg.h -FILE 4507 f:\sp\public\sdk\inc\pebteb.h -FILE 4508 f:\sp\public\sdk\inc\wincon.h -FILE 4509 f:\sp\public\sdk\inc\imm.h -FILE 4510 f:\sp\public\sdk\inc\winbase.h -FILE 4511 f:\sp\public\sdk\inc\wingdi.h -FILE 4512 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4513 f:\sp\public\sdk\inc\winver.h -FILE 4514 f:\sp\public\sdk\inc\pshpack2.h -FILE 4515 f:\sp\public\sdk\inc\reason.h -FILE 4516 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 4517 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4518 f:\sp\vctools\crt_bld\self_x86\crt\src\mbsnbico.c -FILE 4519 f:\sp\public\sdk\inc\specstrings.h -FILE 4520 f:\sp\public\sdk\inc\basetsd.h -FILE 4521 f:\sp\public\sdk\inc\pshpack4.h -FILE 4522 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4523 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4524 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4525 f:\sp\public\sdk\inc\winnetwk.h -FILE 4526 f:\sp\public\sdk\inc\stralign.h -FILE 4527 f:\sp\public\sdk\inc\poppack.h -FILE 4528 f:\sp\public\sdk\inc\winsvc.h -FILE 4529 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4530 f:\sp\public\sdk\inc\windef.h -FILE 4531 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4532 f:\sp\public\sdk\inc\winuser.h -FILE 4533 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4534 f:\sp\public\sdk\inc\windows.h -FILE 4535 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4536 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4537 f:\sp\public\sdk\inc\mcx.h -FILE 4538 f:\sp\public\sdk\inc\pshpack8.h -FILE 4539 f:\sp\public\sdk\inc\guiddef.h -FILE 4540 f:\sp\public\sdk\inc\winnt.h -FILE 4541 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4542 f:\sp\public\sdk\inc\winnls.h -FILE 4543 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4544 f:\sp\public\sdk\inc\pshpack1.h -FILE 4545 f:\sp\public\sdk\inc\winerror.h -FILE 4546 f:\sp\public\sdk\inc\winreg.h -FILE 4547 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4548 f:\sp\public\sdk\inc\ddbanned.h -FILE 4549 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4550 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4551 f:\sp\public\sdk\inc\tvout.h -FILE 4552 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4553 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4554 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4555 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4556 f:\sp\public\sdk\inc\wincon.h -FILE 4557 f:\sp\public\sdk\inc\imm.h -FILE 4558 f:\sp\public\sdk\inc\winbase.h -FILE 4559 f:\sp\public\sdk\inc\wingdi.h -FILE 4560 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4561 f:\sp\public\sdk\inc\winver.h -FILE 4562 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4563 f:\sp\public\sdk\inc\windows.h -FILE 4564 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4565 f:\sp\public\sdk\inc\pshpack2.h -FILE 4566 f:\sp\public\sdk\inc\reason.h -FILE 4567 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4568 f:\sp\vctools\crt_bld\self_x86\crt\src\mbschr.c -FILE 4569 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4570 f:\sp\public\sdk\inc\specstrings.h -FILE 4571 f:\sp\public\sdk\inc\basetsd.h -FILE 4572 f:\sp\public\sdk\inc\pshpack4.h -FILE 4573 f:\sp\public\sdk\inc\winnetwk.h -FILE 4574 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4575 f:\sp\public\sdk\inc\stralign.h -FILE 4576 f:\sp\public\sdk\inc\poppack.h -FILE 4577 f:\sp\public\sdk\inc\winsvc.h -FILE 4578 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4579 f:\sp\public\sdk\inc\windef.h -FILE 4580 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4581 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4582 f:\sp\public\sdk\inc\winuser.h -FILE 4583 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4584 f:\sp\public\sdk\inc\mcx.h -FILE 4585 f:\sp\public\sdk\inc\pshpack8.h -FILE 4586 f:\sp\public\sdk\inc\guiddef.h -FILE 4587 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4588 f:\sp\public\sdk\inc\winnt.h -FILE 4589 f:\sp\public\sdk\inc\winnls.h -FILE 4590 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4591 f:\sp\public\sdk\inc\pshpack1.h -FILE 4592 f:\sp\public\sdk\inc\winerror.h -FILE 4593 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 4594 f:\sp\public\sdk\inc\winreg.h -FILE 4595 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4596 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4597 f:\sp\public\sdk\inc\ddbanned.h -FILE 4598 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4600 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4601 f:\sp\public\sdk\inc\tvout.h -FILE 4602 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4603 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 4604 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4605 f:\sp\public\sdk\inc\wincon.h -FILE 4606 f:\sp\public\sdk\inc\imm.h -FILE 4607 f:\sp\public\sdk\inc\winbase.h -FILE 4608 f:\sp\public\sdk\inc\wingdi.h -FILE 4609 f:\sp\public\sdk\inc\winver.h -FILE 4610 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4612 f:\sp\public\sdk\inc\pshpack2.h -FILE 4613 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 4614 f:\sp\public\sdk\inc\reason.h -FILE 4615 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.c -FILE 4616 f:\sp\public\sdk\inc\specstrings.h -FILE 4617 f:\sp\public\sdk\inc\basetsd.h -FILE 4618 f:\sp\public\sdk\inc\pshpack4.h -FILE 4619 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4620 f:\sp\public\sdk\inc\winnetwk.h -FILE 4621 f:\sp\public\sdk\inc\stralign.h -FILE 4622 f:\sp\public\sdk\inc\poppack.h -FILE 4623 f:\sp\public\sdk\inc\winsvc.h -FILE 4624 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4625 f:\sp\public\sdk\inc\windef.h -FILE 4626 f:\sp\public\sdk\inc\winuser.h -FILE 4627 f:\sp\public\sdk\inc\windows.h -FILE 4628 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4629 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4630 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4631 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4632 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4633 f:\sp\public\sdk\inc\mcx.h -FILE 4634 f:\sp\public\sdk\inc\pshpack8.h -FILE 4635 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4636 f:\sp\public\sdk\inc\guiddef.h -FILE 4637 f:\sp\public\sdk\inc\winnt.h -FILE 4638 f:\sp\public\sdk\inc\winnls.h -FILE 4639 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4640 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 4641 f:\sp\public\sdk\inc\pshpack1.h -FILE 4642 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 4643 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4644 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4645 f:\sp\public\sdk\inc\winerror.h -FILE 4646 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 4647 f:\sp\public\sdk\inc\winreg.h -FILE 4648 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4649 f:\sp\public\sdk\inc\ddbanned.h -FILE 4650 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 4651 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4652 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4653 f:\sp\public\sdk\inc\tvout.h -FILE 4654 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4655 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4656 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4657 f:\sp\public\sdk\inc\wincon.h -FILE 4658 f:\sp\public\sdk\inc\imm.h -FILE 4659 f:\sp\public\sdk\inc\winbase.h -FILE 4660 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4661 f:\sp\public\sdk\inc\wingdi.h -FILE 4662 f:\sp\public\sdk\inc\windef.h -FILE 4663 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 4664 f:\sp\public\sdk\inc\winver.h -FILE 4665 f:\sp\public\sdk\inc\pshpack2.h -FILE 4666 f:\sp\public\sdk\inc\reason.h -FILE 4667 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4668 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4669 f:\sp\vctools\crt_bld\self_x86\crt\src\ismbbyte.c -FILE 4670 f:\sp\public\sdk\inc\winnt.h -FILE 4671 f:\sp\public\sdk\inc\specstrings.h -FILE 4672 f:\sp\public\sdk\inc\basetsd.h -FILE 4673 f:\sp\public\sdk\inc\pshpack4.h -FILE 4674 f:\sp\public\sdk\inc\winnetwk.h -FILE 4675 f:\sp\public\sdk\inc\stralign.h -FILE 4676 f:\sp\public\sdk\inc\poppack.h -FILE 4677 f:\sp\public\sdk\inc\winsvc.h -FILE 4678 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4679 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4680 f:\sp\public\sdk\inc\winuser.h -FILE 4681 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4682 f:\sp\public\sdk\inc\mcx.h -FILE 4683 f:\sp\public\sdk\inc\pshpack8.h -FILE 4684 f:\sp\public\sdk\inc\guiddef.h -FILE 4685 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4686 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 4687 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4688 f:\sp\public\sdk\inc\windows.h -FILE 4689 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4690 f:\sp\public\sdk\inc\winnls.h -FILE 4691 f:\sp\public\sdk\inc\pshpack1.h -FILE 4692 f:\sp\public\sdk\inc\winerror.h -FILE 4693 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4694 f:\sp\public\sdk\inc\winreg.h -FILE 4695 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4696 f:\sp\public\sdk\inc\ddbanned.h -FILE 4697 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4698 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4699 f:\sp\public\sdk\inc\tvout.h -FILE 4700 f:\sp\vctools\crt_bld\self_x86\crt\src\mbdata.h -FILE 4701 f:\sp\public\sdk\inc\winnetwk.h -FILE 4702 f:\sp\public\sdk\inc\imm.h -FILE 4703 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 4704 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4705 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 4706 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4707 f:\sp\public\sdk\inc\windef.h -FILE 4708 f:\sp\public\sdk\inc\pshpack1.h -FILE 4709 f:\sp\public\sdk\inc\winver.h -FILE 4710 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4711 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4712 f:\sp\public\sdk\inc\winnt.h -FILE 4713 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4714 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4715 f:\sp\public\sdk\inc\winreg.h -FILE 4716 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4717 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4718 f:\sp\public\sdk\inc\winbase.h -FILE 4719 f:\sp\public\sdk\inc\winerror.h -FILE 4720 f:\sp\public\sdk\inc\pshpack8.h -FILE 4721 f:\sp\vctools\crt_bld\self_x86\crt\src\putwch.c -FILE 4722 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4723 f:\sp\public\sdk\inc\reason.h -FILE 4724 f:\sp\public\sdk\inc\wincon.h -FILE 4725 f:\sp\public\sdk\inc\pshpack2.h -FILE 4726 f:\sp\public\sdk\inc\mcx.h -FILE 4727 f:\sp\public\sdk\inc\winuser.h -FILE 4728 f:\sp\public\sdk\inc\winnls.h -FILE 4729 f:\sp\public\sdk\inc\guiddef.h -FILE 4730 f:\sp\public\sdk\inc\stralign.h -FILE 4731 f:\sp\public\sdk\inc\ddbanned.h -FILE 4732 f:\sp\public\sdk\inc\specstrings.h -FILE 4733 f:\sp\vctools\crt_bld\self_x86\crt\src\file2.h -FILE 4734 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4735 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4736 f:\sp\public\sdk\inc\basetsd.h -FILE 4737 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4738 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4739 f:\sp\public\sdk\inc\windows.h -FILE 4740 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4741 f:\sp\public\sdk\inc\tvout.h -FILE 4742 f:\sp\public\sdk\inc\winsvc.h -FILE 4743 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4744 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4745 f:\sp\public\sdk\inc\wingdi.h -FILE 4746 f:\sp\public\sdk\inc\pshpack4.h -FILE 4747 f:\sp\vctools\crt_bld\self_x86\crt\src\conio.h -FILE 4748 f:\sp\public\sdk\inc\poppack.h -FILE 4749 f:\sp\public\sdk\inc\reason.h -FILE 4750 f:\sp\public\sdk\inc\wincon.h -FILE 4751 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 4752 f:\sp\public\sdk\inc\poppack.h -FILE 4753 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4754 f:\sp\public\sdk\inc\mcx.h -FILE 4755 f:\sp\public\sdk\inc\winuser.h -FILE 4756 f:\sp\public\sdk\inc\winnls.h -FILE 4757 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 4758 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4759 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4760 f:\sp\public\sdk\inc\stralign.h -FILE 4761 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4762 f:\sp\public\sdk\inc\windef.h -FILE 4763 f:\sp\public\sdk\inc\tvout.h -FILE 4764 f:\sp\public\sdk\inc\winsvc.h -FILE 4765 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 4766 f:\sp\public\sdk\inc\wingdi.h -FILE 4767 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 4768 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4769 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4770 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4771 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4772 f:\sp\public\sdk\inc\winnt.h -FILE 4773 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4774 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4775 f:\sp\public\sdk\inc\winnetwk.h -FILE 4776 f:\sp\public\sdk\inc\imm.h -FILE 4777 f:\sp\vctools\crt_bld\self_x86\crt\src\write.c -FILE 4778 f:\sp\public\sdk\inc\winbase.h -FILE 4779 f:\sp\public\sdk\inc\winerror.h -FILE 4780 f:\sp\public\sdk\inc\pshpack1.h -FILE 4781 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 4782 f:\sp\public\sdk\inc\pshpack8.h -FILE 4783 f:\sp\public\sdk\inc\winver.h -FILE 4784 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 4785 f:\sp\public\sdk\inc\ddbanned.h -FILE 4786 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4787 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4788 f:\sp\public\sdk\inc\pshpack2.h -FILE 4789 f:\sp\public\sdk\inc\winreg.h -FILE 4790 f:\sp\public\sdk\inc\guiddef.h -FILE 4791 f:\sp\public\sdk\inc\windows.h -FILE 4792 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4793 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4794 f:\sp\public\sdk\inc\specstrings.h -FILE 4795 f:\sp\public\sdk\inc\basetsd.h -FILE 4796 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4797 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4798 f:\sp\public\sdk\inc\pshpack4.h -FILE 4799 f:\sp\public\sdk\inc\reason.h -FILE 4800 f:\sp\public\sdk\inc\wincon.h -FILE 4801 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4802 f:\sp\public\sdk\inc\poppack.h -FILE 4803 f:\sp\public\sdk\inc\mcx.h -FILE 4804 f:\sp\public\sdk\inc\winuser.h -FILE 4805 f:\sp\public\sdk\inc\winnls.h -FILE 4806 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4807 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4808 f:\sp\public\sdk\inc\stralign.h -FILE 4809 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4810 f:\sp\public\sdk\inc\windef.h -FILE 4811 f:\sp\public\sdk\inc\tvout.h -FILE 4812 f:\sp\public\sdk\inc\winsvc.h -FILE 4813 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4814 f:\sp\public\sdk\inc\wingdi.h -FILE 4815 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4816 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4817 f:\sp\public\sdk\inc\winnt.h -FILE 4818 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4819 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4820 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 4821 f:\sp\public\sdk\inc\winnetwk.h -FILE 4822 f:\sp\public\sdk\inc\imm.h -FILE 4823 f:\sp\vctools\crt_bld\self_x86\crt\src\fcntl.h -FILE 4824 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4825 f:\sp\vctools\crt_bld\self_x86\crt\src\osfinfo.c -FILE 4826 f:\sp\public\sdk\inc\winbase.h -FILE 4827 f:\sp\public\sdk\inc\winerror.h -FILE 4828 f:\sp\public\sdk\inc\pshpack1.h -FILE 4829 f:\sp\public\sdk\inc\pshpack8.h -FILE 4830 f:\sp\public\sdk\inc\winver.h -FILE 4831 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4832 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 4833 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4834 f:\sp\public\sdk\inc\ddbanned.h -FILE 4835 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4836 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4837 f:\sp\public\sdk\inc\pshpack2.h -FILE 4838 f:\sp\public\sdk\inc\winreg.h -FILE 4839 f:\sp\public\sdk\inc\guiddef.h -FILE 4840 f:\sp\public\sdk\inc\windows.h -FILE 4841 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4842 f:\sp\public\sdk\inc\specstrings.h -FILE 4843 f:\sp\public\sdk\inc\basetsd.h -FILE 4844 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4845 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4846 f:\sp\public\sdk\inc\pshpack4.h -FILE 4847 f:\sp\public\sdk\inc\reason.h -FILE 4848 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4849 f:\sp\public\sdk\inc\wincon.h -FILE 4850 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 4851 f:\sp\public\sdk\inc\poppack.h -FILE 4852 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4853 f:\sp\public\sdk\inc\mcx.h -FILE 4854 f:\sp\public\sdk\inc\winuser.h -FILE 4855 f:\sp\public\sdk\inc\winnls.h -FILE 4856 f:\sp\public\sdk\inc\stralign.h -FILE 4857 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4858 f:\sp\public\sdk\inc\windef.h -FILE 4859 f:\sp\public\sdk\inc\tvout.h -FILE 4860 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 4861 f:\sp\public\sdk\inc\winsvc.h -FILE 4862 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4863 f:\sp\public\sdk\inc\wingdi.h -FILE 4864 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 4865 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 4866 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4867 f:\sp\public\sdk\inc\winnt.h -FILE 4868 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4869 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4870 f:\sp\public\sdk\inc\winnetwk.h -FILE 4871 f:\sp\public\sdk\inc\imm.h -FILE 4872 f:\sp\vctools\crt_bld\self_x86\crt\src\lseeki64.c -FILE 4873 f:\sp\public\sdk\inc\winbase.h -FILE 4874 f:\sp\public\sdk\inc\winerror.h -FILE 4875 f:\sp\public\sdk\inc\pshpack1.h -FILE 4876 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 4877 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 4878 f:\sp\public\sdk\inc\pshpack8.h -FILE 4879 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4880 f:\sp\public\sdk\inc\winver.h -FILE 4881 f:\sp\public\sdk\inc\ddbanned.h -FILE 4882 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4883 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4884 f:\sp\public\sdk\inc\pshpack2.h -FILE 4885 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4886 f:\sp\public\sdk\inc\winreg.h -FILE 4887 f:\sp\public\sdk\inc\guiddef.h -FILE 4888 f:\sp\public\sdk\inc\windows.h -FILE 4889 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4890 f:\sp\public\sdk\inc\specstrings.h -FILE 4891 f:\sp\public\sdk\inc\basetsd.h -FILE 4892 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4893 f:\sp\public\sdk\inc\pshpack4.h -FILE 4894 f:\sp\public\sdk\inc\pshpack4.h -FILE 4895 f:\sp\public\sdk\inc\poppack.h -FILE 4896 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 4897 f:\sp\public\sdk\inc\winnetwk.h -FILE 4898 f:\sp\public\sdk\inc\imm.h -FILE 4899 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4900 f:\sp\public\sdk\inc\windef.h -FILE 4901 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4902 f:\sp\public\sdk\inc\pshpack1.h -FILE 4903 f:\sp\public\sdk\inc\winver.h -FILE 4904 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 4905 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4906 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4907 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4908 f:\sp\public\sdk\inc\winnt.h -FILE 4909 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4910 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4911 f:\sp\public\sdk\inc\winreg.h -FILE 4912 f:\sp\vctools\crt_bld\self_x86\crt\src\isatty.c -FILE 4913 f:\sp\public\sdk\inc\winbase.h -FILE 4914 f:\sp\public\sdk\inc\winerror.h -FILE 4915 f:\sp\public\sdk\inc\pshpack8.h -FILE 4916 f:\sp\public\sdk\inc\reason.h -FILE 4917 f:\sp\public\sdk\inc\wincon.h -FILE 4918 f:\sp\public\sdk\inc\ddbanned.h -FILE 4919 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4920 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4921 f:\sp\public\sdk\inc\pshpack2.h -FILE 4922 f:\sp\public\sdk\inc\mcx.h -FILE 4923 f:\sp\public\sdk\inc\winuser.h -FILE 4924 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4925 f:\sp\public\sdk\inc\winnls.h -FILE 4926 f:\sp\public\sdk\inc\guiddef.h -FILE 4927 f:\sp\public\sdk\inc\windows.h -FILE 4928 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4929 f:\sp\public\sdk\inc\specstrings.h -FILE 4930 f:\sp\public\sdk\inc\basetsd.h -FILE 4931 f:\sp\public\sdk\inc\stralign.h -FILE 4932 f:\sp\public\sdk\inc\tvout.h -FILE 4933 f:\sp\public\sdk\inc\winsvc.h -FILE 4934 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4935 f:\sp\public\sdk\inc\wingdi.h -FILE 4936 f:\sp\public\sdk\inc\poppack.h -FILE 4937 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 4938 f:\sp\public\sdk\inc\winnetwk.h -FILE 4939 f:\sp\public\sdk\inc\imm.h -FILE 4940 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 4941 f:\sp\public\sdk\inc\windef.h -FILE 4942 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 4943 f:\sp\public\sdk\inc\pshpack1.h -FILE 4944 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 4945 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 4946 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 4947 f:\sp\public\sdk\inc\winver.h -FILE 4948 f:\sp\public\sdk\inc\windows.h -FILE 4949 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 4950 f:\sp\public\sdk\inc\winnt.h -FILE 4951 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4952 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 4953 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 4954 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 4955 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 4956 f:\sp\public\sdk\inc\winreg.h -FILE 4957 f:\sp\public\sdk\inc\winbase.h -FILE 4958 f:\sp\vctools\crt_bld\self_x86\crt\src\ioinit.c -FILE 4959 f:\sp\public\sdk\inc\winerror.h -FILE 4960 f:\sp\public\sdk\inc\pshpack8.h -FILE 4961 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 4962 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4963 f:\sp\public\sdk\inc\reason.h -FILE 4964 f:\sp\public\sdk\inc\wincon.h -FILE 4965 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 4966 f:\sp\public\sdk\inc\ddbanned.h -FILE 4967 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 4968 f:\sp\public\sdk\inc\pshpack2.h -FILE 4969 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 4970 f:\sp\public\sdk\inc\mcx.h -FILE 4971 f:\sp\public\sdk\inc\winuser.h -FILE 4972 f:\sp\public\sdk\inc\winnls.h -FILE 4973 f:\sp\public\sdk\inc\guiddef.h -FILE 4974 f:\sp\public\sdk\inc\specstrings.h -FILE 4975 f:\sp\public\sdk\inc\basetsd.h -FILE 4976 f:\sp\public\sdk\inc\stralign.h -FILE 4977 f:\sp\public\sdk\inc\tvout.h -FILE 4978 f:\sp\public\sdk\inc\winsvc.h -FILE 4979 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4980 f:\sp\public\sdk\inc\wingdi.h -FILE 4981 f:\sp\public\sdk\inc\pshpack4.h -FILE 4982 f:\sp\public\sdk\inc\reason.h -FILE 4983 f:\sp\public\sdk\inc\wincon.h -FILE 4984 f:\sp\public\sdk\inc\pshpack2.h -FILE 4985 f:\sp\public\sdk\inc\mcx.h -FILE 4986 f:\sp\public\sdk\inc\winuser.h -FILE 4987 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 4988 f:\sp\public\sdk\inc\winnls.h -FILE 4989 f:\sp\public\sdk\inc\guiddef.h -FILE 4990 f:\sp\public\sdk\inc\windows.h -FILE 4991 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 4992 f:\sp\public\sdk\inc\specstrings.h -FILE 4993 f:\sp\public\sdk\inc\basetsd.h -FILE 4994 f:\sp\public\sdk\inc\stralign.h -FILE 4995 f:\sp\public\sdk\inc\tvout.h -FILE 4996 f:\sp\public\sdk\inc\winsvc.h -FILE 4997 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 4998 f:\sp\public\sdk\inc\wingdi.h -FILE 4999 f:\sp\public\sdk\inc\pshpack4.h -FILE 5000 f:\sp\public\sdk\inc\poppack.h -FILE 5001 f:\sp\vctools\crt_bld\self_x86\crt\src\sect_attribs.h -FILE 5002 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 5003 f:\sp\public\sdk\inc\winnetwk.h -FILE 5004 f:\sp\public\sdk\inc\imm.h -FILE 5005 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5006 f:\sp\public\sdk\inc\windef.h -FILE 5007 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5008 f:\sp\vctools\crt_bld\self_x86\crt\src\initcon.c -FILE 5009 f:\sp\public\sdk\inc\pshpack1.h -FILE 5010 f:\sp\public\sdk\inc\winver.h -FILE 5011 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5012 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5013 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5014 f:\sp\public\sdk\inc\winnt.h -FILE 5015 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5016 f:\sp\public\sdk\inc\ddbanned.h -FILE 5017 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5018 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5019 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5020 f:\sp\public\sdk\inc\winreg.h -FILE 5021 f:\sp\public\sdk\inc\winbase.h -FILE 5022 f:\sp\public\sdk\inc\winerror.h -FILE 5023 f:\sp\public\sdk\inc\pshpack8.h -FILE 5024 f:\sp\public\sdk\inc\poppack.h -FILE 5025 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 5026 f:\sp\public\sdk\inc\winnetwk.h -FILE 5027 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5028 f:\sp\public\sdk\inc\imm.h -FILE 5029 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5030 f:\sp\public\sdk\inc\windef.h -FILE 5031 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5032 f:\sp\public\sdk\inc\pshpack1.h -FILE 5033 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5034 f:\sp\public\sdk\inc\winver.h -FILE 5035 f:\sp\public\sdk\inc\windows.h -FILE 5036 f:\sp\public\sdk\inc\winnt.h -FILE 5037 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5038 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5039 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5040 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5041 f:\sp\public\sdk\inc\winreg.h -FILE 5042 f:\sp\public\sdk\inc\winbase.h -FILE 5043 f:\sp\vctools\crt_bld\self_x86\crt\src\commit.c -FILE 5044 f:\sp\public\sdk\inc\winerror.h -FILE 5045 f:\sp\public\sdk\inc\pshpack8.h -FILE 5046 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5047 f:\sp\public\sdk\inc\reason.h -FILE 5048 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 5049 f:\sp\public\sdk\inc\wincon.h -FILE 5050 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5051 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5052 f:\sp\public\sdk\inc\ddbanned.h -FILE 5053 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5054 f:\sp\public\sdk\inc\pshpack2.h -FILE 5055 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5056 f:\sp\public\sdk\inc\mcx.h -FILE 5057 f:\sp\public\sdk\inc\winuser.h -FILE 5058 f:\sp\public\sdk\inc\winnls.h -FILE 5059 f:\sp\public\sdk\inc\guiddef.h -FILE 5060 f:\sp\public\sdk\inc\specstrings.h -FILE 5061 f:\sp\public\sdk\inc\basetsd.h -FILE 5062 f:\sp\public\sdk\inc\stralign.h -FILE 5063 f:\sp\public\sdk\inc\tvout.h -FILE 5064 f:\sp\public\sdk\inc\winsvc.h -FILE 5065 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5066 f:\sp\public\sdk\inc\wingdi.h -FILE 5067 f:\sp\public\sdk\inc\pshpack4.h -FILE 5068 f:\sp\public\sdk\inc\reason.h -FILE 5069 f:\sp\public\sdk\inc\wincon.h -FILE 5070 f:\sp\vctools\crt_bld\self_x86\crt\src\io.h -FILE 5071 f:\sp\public\sdk\inc\poppack.h -FILE 5072 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5073 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5074 f:\sp\public\sdk\inc\mcx.h -FILE 5075 f:\sp\public\sdk\inc\winuser.h -FILE 5076 f:\sp\public\sdk\inc\winnls.h -FILE 5077 f:\sp\public\sdk\inc\stralign.h -FILE 5078 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5079 f:\sp\public\sdk\inc\windef.h -FILE 5080 f:\sp\public\sdk\inc\tvout.h -FILE 5081 f:\sp\public\sdk\inc\winsvc.h -FILE 5082 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5083 f:\sp\public\sdk\inc\wingdi.h -FILE 5084 f:\sp\vctools\crt_bld\self_x86\crt\src\msdos.h -FILE 5085 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5086 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5087 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 5088 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5089 f:\sp\public\sdk\inc\winnt.h -FILE 5090 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5091 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5092 f:\sp\public\sdk\inc\winnetwk.h -FILE 5093 f:\sp\public\sdk\inc\imm.h -FILE 5094 f:\sp\vctools\crt_bld\self_x86\crt\src\close.c -FILE 5095 f:\sp\public\sdk\inc\winbase.h -FILE 5096 f:\sp\public\sdk\inc\winerror.h -FILE 5097 f:\sp\public\sdk\inc\pshpack1.h -FILE 5098 f:\sp\public\sdk\inc\pshpack8.h -FILE 5099 f:\sp\public\sdk\inc\winver.h -FILE 5100 f:\sp\public\sdk\inc\ddbanned.h -FILE 5101 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5102 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5103 f:\sp\public\sdk\inc\pshpack2.h -FILE 5104 f:\sp\public\sdk\inc\winreg.h -FILE 5105 f:\sp\public\sdk\inc\guiddef.h -FILE 5106 f:\sp\public\sdk\inc\windows.h -FILE 5107 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5108 f:\sp\public\sdk\inc\specstrings.h -FILE 5109 f:\sp\public\sdk\inc\basetsd.h -FILE 5110 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5111 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5112 f:\sp\public\sdk\inc\pshpack4.h -FILE 5113 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\ulldvrm.asm -FILE 5114 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 5115 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc -FILE 5116 F:\SP\vctools\crt_bld\SELF_X86\crt\src\intel\llmul.asm -FILE 5117 F:\SP\vctools\crt_bld\SELF_X86\crt\src\cruntime.inc -FILE 5118 F:\SP\vctools\crt_bld\SELF_X86\crt\src\mm.inc -FILE 5119 f:\sp\vctools\crt_bld\self_x86\crt\src\use_ansi.h -FILE 5120 f:\sp\vctools\crt_bld\self_x86\crt\src\new -FILE 5121 f:\sp\vctools\crt_bld\self_x86\crt\src\exception -FILE 5122 f:\sp\vctools\crt_bld\self_x86\crt\src\xstddef -FILE 5123 f:\sp\vctools\crt_bld\self_x86\crt\src\new.cpp -FILE 5124 f:\sp\vctools\crt_bld\self_x86\crt\src\cstddef -FILE 5125 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 5126 f:\sp\vctools\crt_bld\self_x86\crt\src\eh.h -FILE 5127 f:\sp\vctools\crt_bld\self_x86\crt\src\cstdlib -FILE 5128 f:\sp\vctools\crt_bld\self_x86\crt\src\yvals.h -FILE 5129 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5130 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5131 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5132 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5133 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5134 f:\sp\public\sdk\inc\ddbanned.h -FILE 5135 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5136 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5137 f:\sp\public\sdk\inc\poppack.h -FILE 5138 f:\sp\public\sdk\inc\winnetwk.h -FILE 5139 f:\sp\public\sdk\inc\imm.h -FILE 5140 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5141 f:\sp\public\sdk\inc\windef.h -FILE 5142 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5143 f:\sp\public\sdk\inc\pshpack1.h -FILE 5144 f:\sp\public\sdk\inc\winver.h -FILE 5145 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5146 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5147 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5148 f:\sp\public\sdk\inc\winnt.h -FILE 5149 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5150 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5151 f:\sp\public\sdk\inc\winreg.h -FILE 5152 f:\sp\vctools\crt_bld\self_x86\crt\src\_newmode.c -FILE 5153 f:\sp\public\sdk\inc\winbase.h -FILE 5154 f:\sp\public\sdk\inc\winerror.h -FILE 5155 f:\sp\public\sdk\inc\pshpack8.h -FILE 5156 f:\sp\public\sdk\inc\reason.h -FILE 5157 f:\sp\public\sdk\inc\wincon.h -FILE 5158 f:\sp\public\sdk\inc\ddbanned.h -FILE 5159 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5160 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5161 f:\sp\public\sdk\inc\pshpack2.h -FILE 5162 f:\sp\public\sdk\inc\mcx.h -FILE 5163 f:\sp\public\sdk\inc\winuser.h -FILE 5164 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5165 f:\sp\public\sdk\inc\winnls.h -FILE 5166 f:\sp\public\sdk\inc\guiddef.h -FILE 5167 f:\sp\public\sdk\inc\windows.h -FILE 5168 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5169 f:\sp\public\sdk\inc\specstrings.h -FILE 5170 f:\sp\public\sdk\inc\basetsd.h -FILE 5171 f:\sp\public\sdk\inc\stralign.h -FILE 5172 f:\sp\public\sdk\inc\tvout.h -FILE 5173 f:\sp\public\sdk\inc\winsvc.h -FILE 5174 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5175 f:\sp\public\sdk\inc\wingdi.h -FILE 5176 f:\sp\public\sdk\inc\pshpack4.h -FILE 5177 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h -FILE 5178 f:\sp\public\sdk\inc\winerror.h -FILE 5179 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 5180 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 5181 f:\sp\public\sdk\inc\winreg.h -FILE 5182 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5183 f:\sp\public\sdk\inc\tvout.h -FILE 5184 f:\sp\vctools\crt_bld\self_x86\crt\src\delete.cpp -FILE 5185 f:\sp\public\sdk\inc\wincon.h -FILE 5186 f:\sp\public\sdk\inc\imm.h -FILE 5187 f:\sp\public\sdk\inc\winbase.h -FILE 5188 f:\sp\public\sdk\inc\wingdi.h -FILE 5189 f:\sp\public\sdk\inc\winver.h -FILE 5190 f:\sp\public\sdk\inc\windows.h -FILE 5191 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5192 f:\sp\public\sdk\inc\pshpack2.h -FILE 5193 f:\sp\public\sdk\inc\reason.h -FILE 5194 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5195 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5196 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5197 f:\sp\public\sdk\inc\specstrings.h -FILE 5198 f:\sp\public\sdk\inc\basetsd.h -FILE 5199 f:\sp\public\sdk\inc\pshpack4.h -FILE 5200 f:\sp\public\sdk\inc\winnetwk.h -FILE 5201 f:\sp\public\sdk\inc\stralign.h -FILE 5202 f:\sp\public\sdk\inc\poppack.h -FILE 5203 f:\sp\public\sdk\inc\winsvc.h -FILE 5204 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5205 f:\sp\public\sdk\inc\windef.h -FILE 5206 f:\sp\public\sdk\inc\winuser.h -FILE 5207 f:\sp\public\sdk\inc\mcx.h -FILE 5208 f:\sp\public\sdk\inc\pshpack8.h -FILE 5209 f:\sp\public\sdk\inc\ddbanned.h -FILE 5210 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5211 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5212 f:\sp\public\sdk\inc\guiddef.h -FILE 5213 f:\sp\public\sdk\inc\winnt.h -FILE 5214 f:\sp\public\sdk\inc\winnls.h -FILE 5215 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5216 f:\sp\public\sdk\inc\pshpack1.h -FILE 5217 f:\sp\public\sdk\inc\tvout.h -FILE 5218 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5219 f:\sp\vctools\crt_bld\self_x86\crt\src\process.h -FILE 5220 f:\sp\public\sdk\inc\wincon.h -FILE 5221 f:\sp\public\sdk\inc\imm.h -FILE 5222 f:\sp\public\sdk\inc\winbase.h -FILE 5223 f:\sp\public\sdk\inc\wingdi.h -FILE 5224 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5225 f:\sp\public\sdk\inc\winver.h -FILE 5226 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5227 f:\sp\public\sdk\inc\windows.h -FILE 5228 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5229 f:\sp\public\sdk\inc\pshpack2.h -FILE 5230 f:\sp\vctools\crt_bld\self_x86\crt\src\handler.cpp -FILE 5231 f:\sp\public\sdk\inc\reason.h -FILE 5232 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5233 f:\sp\public\sdk\inc\specstrings.h -FILE 5234 f:\sp\public\sdk\inc\basetsd.h -FILE 5235 f:\sp\public\sdk\inc\pshpack4.h -FILE 5236 f:\sp\public\sdk\inc\winnetwk.h -FILE 5237 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 5238 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5239 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5240 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5241 f:\sp\public\sdk\inc\stralign.h -FILE 5242 f:\sp\public\sdk\inc\poppack.h -FILE 5243 f:\sp\public\sdk\inc\winsvc.h -FILE 5244 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5245 f:\sp\public\sdk\inc\windef.h -FILE 5246 f:\sp\public\sdk\inc\winuser.h -FILE 5247 f:\sp\public\sdk\inc\mcx.h -FILE 5248 f:\sp\public\sdk\inc\pshpack8.h -FILE 5249 f:\sp\public\sdk\inc\guiddef.h -FILE 5250 f:\sp\public\sdk\inc\winnt.h -FILE 5251 f:\sp\public\sdk\inc\winnls.h -FILE 5252 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5253 f:\sp\public\sdk\inc\pshpack1.h -FILE 5254 f:\sp\public\sdk\inc\winerror.h -FILE 5255 f:\sp\public\sdk\inc\ddbanned.h -FILE 5256 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5257 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5258 f:\sp\public\sdk\inc\winreg.h -FILE 5259 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5260 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5261 f:\sp\vctools\crt_bld\self_x86\crt\src\new.h -FILE 5262 f:\sp\public\sdk\inc\winsvc.h -FILE 5263 f:\sp\public\sdk\inc\wingdi.h -FILE 5264 f:\sp\public\sdk\inc\pshpack4.h -FILE 5265 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5266 f:\sp\public\sdk\inc\poppack.h -FILE 5267 f:\sp\public\sdk\inc\winnt.h -FILE 5268 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5269 f:\sp\public\sdk\inc\winnetwk.h -FILE 5270 f:\sp\public\sdk\inc\imm.h -FILE 5271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5272 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 5273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5275 f:\sp\public\sdk\inc\pshpack1.h -FILE 5276 f:\sp\public\sdk\inc\winver.h -FILE 5277 f:\sp\public\sdk\inc\guiddef.h -FILE 5278 f:\sp\public\sdk\inc\specstrings.h -FILE 5279 f:\sp\public\sdk\inc\basetsd.h -FILE 5280 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5281 f:\sp\vctools\crt_bld\self_x86\crt\src\sbheap.c -FILE 5282 f:\sp\public\sdk\inc\windows.h -FILE 5283 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5284 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5285 f:\sp\public\sdk\inc\winreg.h -FILE 5286 f:\sp\public\sdk\inc\winbase.h -FILE 5287 f:\sp\public\sdk\inc\winerror.h -FILE 5288 f:\sp\public\sdk\inc\pshpack8.h -FILE 5289 f:\sp\public\sdk\inc\ddbanned.h -FILE 5290 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5291 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5292 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5293 f:\sp\public\sdk\inc\reason.h -FILE 5294 f:\sp\public\sdk\inc\wincon.h -FILE 5295 f:\sp\public\sdk\inc\pshpack2.h -FILE 5296 f:\sp\public\sdk\inc\mcx.h -FILE 5297 f:\sp\public\sdk\inc\winuser.h -FILE 5298 f:\sp\public\sdk\inc\winnls.h -FILE 5299 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5300 f:\sp\public\sdk\inc\windef.h -FILE 5301 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5302 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5303 f:\sp\public\sdk\inc\stralign.h -FILE 5304 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5305 f:\sp\public\sdk\inc\tvout.h -FILE 5306 f:\sp\public\sdk\inc\winver.h -FILE 5307 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 5308 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 5309 f:\sp\public\sdk\inc\guiddef.h -FILE 5310 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5311 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5312 f:\sp\public\sdk\inc\specstrings.h -FILE 5313 f:\sp\public\sdk\inc\basetsd.h -FILE 5314 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5315 f:\sp\public\sdk\inc\windows.h -FILE 5316 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5317 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5318 f:\sp\public\sdk\inc\winreg.h -FILE 5319 f:\sp\public\sdk\inc\winbase.h -FILE 5320 f:\sp\public\sdk\inc\winerror.h -FILE 5321 f:\sp\public\sdk\inc\pshpack8.h -FILE 5322 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5323 f:\sp\public\sdk\inc\reason.h -FILE 5324 f:\sp\public\sdk\inc\wincon.h -FILE 5325 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5326 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5327 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5328 f:\sp\public\sdk\inc\pshpack2.h -FILE 5329 f:\sp\public\sdk\inc\mcx.h -FILE 5330 f:\sp\public\sdk\inc\winuser.h -FILE 5331 f:\sp\public\sdk\inc\winnls.h -FILE 5332 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5333 f:\sp\public\sdk\inc\windef.h -FILE 5334 f:\sp\public\sdk\inc\stralign.h -FILE 5335 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5336 f:\sp\public\sdk\inc\tvout.h -FILE 5337 f:\sp\public\sdk\inc\winsvc.h -FILE 5338 f:\sp\vctools\crt_bld\self_x86\crt\src\realloc.c -FILE 5339 f:\sp\public\sdk\inc\wingdi.h -FILE 5340 f:\sp\public\sdk\inc\pshpack4.h -FILE 5341 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5342 f:\sp\public\sdk\inc\poppack.h -FILE 5343 f:\sp\public\sdk\inc\winnt.h -FILE 5344 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5345 f:\sp\public\sdk\inc\winnetwk.h -FILE 5346 f:\sp\public\sdk\inc\ddbanned.h -FILE 5347 f:\sp\public\sdk\inc\imm.h -FILE 5348 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5349 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5350 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5351 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5352 f:\sp\public\sdk\inc\pshpack1.h -FILE 5353 f:\sp\public\sdk\inc\pshpack2.h -FILE 5354 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5355 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5356 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5357 f:\sp\public\sdk\inc\mcx.h -FILE 5358 f:\sp\public\sdk\inc\winuser.h -FILE 5359 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5360 f:\sp\public\sdk\inc\winnls.h -FILE 5361 f:\sp\public\sdk\inc\guiddef.h -FILE 5362 f:\sp\public\sdk\inc\windows.h -FILE 5363 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5364 f:\sp\public\sdk\inc\specstrings.h -FILE 5365 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5366 f:\sp\public\sdk\inc\basetsd.h -FILE 5367 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5368 f:\sp\public\sdk\inc\stralign.h -FILE 5369 f:\sp\public\sdk\inc\tvout.h -FILE 5370 f:\sp\public\sdk\inc\winsvc.h -FILE 5371 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5372 f:\sp\public\sdk\inc\wingdi.h -FILE 5373 f:\sp\public\sdk\inc\pshpack4.h -FILE 5374 f:\sp\public\sdk\inc\poppack.h -FILE 5375 f:\sp\public\sdk\inc\winnetwk.h -FILE 5376 f:\sp\public\sdk\inc\imm.h -FILE 5377 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5378 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5379 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5380 f:\sp\public\sdk\inc\windef.h -FILE 5381 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5382 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5383 f:\sp\vctools\crt_bld\self_x86\crt\src\msize.c -FILE 5384 f:\sp\public\sdk\inc\pshpack1.h -FILE 5385 f:\sp\public\sdk\inc\winver.h -FILE 5386 f:\sp\public\sdk\inc\winnt.h -FILE 5387 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5388 f:\sp\public\sdk\inc\winreg.h -FILE 5389 f:\sp\public\sdk\inc\ddbanned.h -FILE 5390 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5391 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5392 f:\sp\public\sdk\inc\winbase.h -FILE 5393 f:\sp\public\sdk\inc\winerror.h -FILE 5394 f:\sp\public\sdk\inc\pshpack8.h -FILE 5395 f:\sp\public\sdk\inc\reason.h -FILE 5396 f:\sp\public\sdk\inc\wincon.h -FILE 5397 f:\sp\public\sdk\inc\pshpack2.h -FILE 5398 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5399 f:\sp\public\sdk\inc\mcx.h -FILE 5400 f:\sp\public\sdk\inc\winuser.h -FILE 5401 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5402 f:\sp\public\sdk\inc\winnls.h -FILE 5403 f:\sp\public\sdk\inc\guiddef.h -FILE 5404 f:\sp\public\sdk\inc\windows.h -FILE 5405 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5406 f:\sp\public\sdk\inc\specstrings.h -FILE 5407 f:\sp\public\sdk\inc\basetsd.h -FILE 5408 f:\sp\public\sdk\inc\stralign.h -FILE 5409 f:\sp\public\sdk\inc\tvout.h -FILE 5410 f:\sp\public\sdk\inc\winsvc.h -FILE 5411 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5412 f:\sp\public\sdk\inc\wingdi.h -FILE 5413 f:\sp\public\sdk\inc\pshpack4.h -FILE 5414 f:\sp\public\sdk\inc\poppack.h -FILE 5415 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5416 f:\sp\public\sdk\inc\winnetwk.h -FILE 5417 f:\sp\public\sdk\inc\imm.h -FILE 5418 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5419 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5420 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5421 f:\sp\public\sdk\inc\windef.h -FILE 5422 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5423 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5424 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5425 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.c -FILE 5426 f:\sp\public\sdk\inc\pshpack1.h -FILE 5427 f:\sp\public\sdk\inc\winver.h -FILE 5428 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 5429 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 5430 f:\sp\vctools\crt_bld\self_x86\crt\src\rterr.h -FILE 5431 f:\sp\public\sdk\inc\winnt.h -FILE 5432 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5434 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5435 f:\sp\public\sdk\inc\winreg.h -FILE 5436 f:\sp\public\sdk\inc\ddbanned.h -FILE 5437 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5438 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5439 f:\sp\public\sdk\inc\winbase.h -FILE 5440 f:\sp\public\sdk\inc\winerror.h -FILE 5441 f:\sp\public\sdk\inc\pshpack8.h -FILE 5442 f:\sp\public\sdk\inc\reason.h -FILE 5443 f:\sp\public\sdk\inc\wincon.h -FILE 5444 f:\sp\public\sdk\inc\winver.h -FILE 5445 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 5446 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5447 f:\sp\public\sdk\inc\winnt.h -FILE 5448 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5449 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5450 f:\sp\public\sdk\inc\winreg.h -FILE 5451 f:\sp\public\sdk\inc\winbase.h -FILE 5452 f:\sp\public\sdk\inc\winerror.h -FILE 5453 f:\sp\public\sdk\inc\pshpack8.h -FILE 5454 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5455 f:\sp\public\sdk\inc\reason.h -FILE 5456 f:\sp\public\sdk\inc\wincon.h -FILE 5457 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5460 f:\sp\public\sdk\inc\pshpack2.h -FILE 5461 f:\sp\public\sdk\inc\mcx.h -FILE 5462 f:\sp\public\sdk\inc\winuser.h -FILE 5463 f:\sp\public\sdk\inc\winnls.h -FILE 5464 f:\sp\public\sdk\inc\guiddef.h -FILE 5465 f:\sp\public\sdk\inc\stralign.h -FILE 5466 f:\sp\public\sdk\inc\specstrings.h -FILE 5467 f:\sp\public\sdk\inc\basetsd.h -FILE 5468 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5469 f:\sp\public\sdk\inc\windows.h -FILE 5470 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5471 f:\sp\public\sdk\inc\tvout.h -FILE 5472 f:\sp\public\sdk\inc\winsvc.h -FILE 5473 f:\sp\vctools\crt_bld\self_x86\crt\src\heapinit.c -FILE 5474 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5475 f:\sp\public\sdk\inc\wingdi.h -FILE 5476 f:\sp\public\sdk\inc\pshpack4.h -FILE 5477 f:\sp\public\sdk\inc\poppack.h -FILE 5478 f:\sp\public\sdk\inc\winnetwk.h -FILE 5479 f:\sp\public\sdk\inc\ddbanned.h -FILE 5480 f:\sp\public\sdk\inc\imm.h -FILE 5481 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5482 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5483 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5484 f:\sp\public\sdk\inc\windef.h -FILE 5485 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5486 f:\sp\public\sdk\inc\pshpack1.h -FILE 5487 f:\sp\public\sdk\inc\pshpack2.h -FILE 5488 f:\sp\public\sdk\inc\mcx.h -FILE 5489 f:\sp\public\sdk\inc\winuser.h -FILE 5490 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5491 f:\sp\public\sdk\inc\winnls.h -FILE 5492 f:\sp\public\sdk\inc\guiddef.h -FILE 5493 f:\sp\public\sdk\inc\windows.h -FILE 5494 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5495 f:\sp\public\sdk\inc\specstrings.h -FILE 5496 f:\sp\public\sdk\inc\basetsd.h -FILE 5497 f:\sp\public\sdk\inc\stralign.h -FILE 5498 f:\sp\public\sdk\inc\tvout.h -FILE 5499 f:\sp\public\sdk\inc\winsvc.h -FILE 5500 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5501 f:\sp\public\sdk\inc\wingdi.h -FILE 5502 f:\sp\public\sdk\inc\pshpack4.h -FILE 5503 f:\sp\public\sdk\inc\poppack.h -FILE 5504 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5505 f:\sp\public\sdk\inc\winnetwk.h -FILE 5506 f:\sp\public\sdk\inc\imm.h -FILE 5507 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5508 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5509 f:\sp\public\sdk\inc\windef.h -FILE 5510 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5511 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5512 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5513 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5514 f:\sp\public\sdk\inc\pshpack1.h -FILE 5515 f:\sp\vctools\crt_bld\self_x86\crt\src\free.c -FILE 5516 f:\sp\public\sdk\inc\winver.h -FILE 5517 f:\sp\public\sdk\inc\winnt.h -FILE 5518 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5519 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 5520 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 5521 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5522 f:\sp\public\sdk\inc\winreg.h -FILE 5523 f:\sp\public\sdk\inc\ddbanned.h -FILE 5524 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5525 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5526 f:\sp\public\sdk\inc\winbase.h -FILE 5527 f:\sp\public\sdk\inc\winerror.h -FILE 5528 f:\sp\public\sdk\inc\pshpack8.h -FILE 5529 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5530 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5531 f:\sp\public\sdk\inc\reason.h -FILE 5532 f:\sp\public\sdk\inc\wincon.h -FILE 5533 f:\sp\public\sdk\inc\pshpack2.h -FILE 5534 f:\sp\public\sdk\inc\mcx.h -FILE 5535 f:\sp\public\sdk\inc\winuser.h -FILE 5536 f:\sp\public\sdk\inc\winnls.h -FILE 5537 f:\sp\public\sdk\inc\guiddef.h -FILE 5538 f:\sp\public\sdk\inc\windows.h -FILE 5539 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5540 f:\sp\public\sdk\inc\specstrings.h -FILE 5541 f:\sp\public\sdk\inc\basetsd.h -FILE 5542 f:\sp\public\sdk\inc\stralign.h -FILE 5543 f:\sp\public\sdk\inc\tvout.h -FILE 5544 f:\sp\public\sdk\inc\winsvc.h -FILE 5545 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5546 f:\sp\public\sdk\inc\wingdi.h -FILE 5547 f:\sp\public\sdk\inc\pshpack4.h -FILE 5548 f:\sp\public\sdk\inc\poppack.h -FILE 5549 f:\sp\public\sdk\inc\winnetwk.h -FILE 5550 f:\sp\public\sdk\inc\imm.h -FILE 5551 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5552 f:\sp\public\sdk\inc\windef.h -FILE 5553 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5554 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5555 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5556 f:\sp\public\sdk\inc\pshpack1.h -FILE 5557 f:\sp\vctools\crt_bld\self_x86\crt\src\crtheap.c -FILE 5558 f:\sp\public\sdk\inc\winver.h -FILE 5559 f:\sp\public\sdk\inc\winnt.h -FILE 5560 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5561 f:\sp\public\sdk\inc\winreg.h -FILE 5562 f:\sp\public\sdk\inc\ddbanned.h -FILE 5563 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5564 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5565 f:\sp\public\sdk\inc\winbase.h -FILE 5566 f:\sp\public\sdk\inc\winerror.h -FILE 5567 f:\sp\public\sdk\inc\pshpack8.h -FILE 5568 f:\sp\public\sdk\inc\reason.h -FILE 5569 f:\sp\public\sdk\inc\wincon.h -FILE 5570 f:\sp\public\sdk\inc\pshpack2.h -FILE 5571 f:\sp\public\sdk\inc\mcx.h -FILE 5572 f:\sp\public\sdk\inc\winuser.h -FILE 5573 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 5574 f:\sp\public\sdk\inc\winnls.h -FILE 5575 f:\sp\public\sdk\inc\stralign.h -FILE 5576 f:\sp\public\sdk\inc\tvout.h -FILE 5577 f:\sp\public\sdk\inc\winsvc.h -FILE 5578 f:\sp\public\sdk\inc\wingdi.h -FILE 5579 f:\sp\public\sdk\inc\winnt.h -FILE 5580 f:\sp\public\sdk\inc\pshpack4.h -FILE 5581 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 5582 f:\sp\public\sdk\inc\poppack.h -FILE 5583 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 5584 f:\sp\public\sdk\inc\winnetwk.h -FILE 5585 f:\sp\public\sdk\inc\imm.h -FILE 5586 f:\sp\vctools\crt_bld\self_x86\crt\src\malloc.h -FILE 5587 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 5588 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 5589 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 5590 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 5591 f:\sp\public\sdk\inc\pshpack1.h -FILE 5592 f:\sp\vctools\crt_bld\self_x86\crt\src\calloc.c -FILE 5593 f:\sp\public\sdk\inc\winver.h -FILE 5594 f:\sp\vctools\crt_bld\self_x86\crt\src\winheap.h -FILE 5595 f:\sp\public\sdk\inc\guiddef.h -FILE 5596 f:\sp\public\sdk\inc\windows.h -FILE 5597 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 5598 f:\sp\public\sdk\inc\specstrings.h -FILE 5599 f:\sp\public\sdk\inc\basetsd.h -FILE 5600 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcsup.h -FILE 5601 f:\sp\vctools\crt_bld\self_x86\crt\src\rtcapi.h -FILE 5602 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 5603 f:\sp\public\sdk\inc\winreg.h -FILE 5604 f:\sp\public\sdk\inc\ddbanned.h -FILE 5605 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 5606 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 5607 f:\sp\public\sdk\inc\winbase.h -FILE 5608 f:\sp\public\sdk\inc\winerror.h -FILE 5609 f:\sp\public\sdk\inc\pshpack8.h -FILE 5610 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 5611 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 5612 f:\sp\public\sdk\inc\reason.h -FILE 5613 f:\sp\public\sdk\inc\wincon.h -FILE 5614 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 5615 f:\sp\public\sdk\inc\windef.h -FILE 5616 f:\sp\public\sdk\inc\wincon.h -FILE 5617 f:\sp\public\sdk\inc\imm.h -FILE 5618 f:\sp\public\sdk\inc\winbase.h -FILE 5619 f:\sp\public\sdk\inc\wingdi.h -FILE 5620 f:\sp\public\sdk\inc\winver.h -FILE 5621 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 5622 f:\sp\public\sdk\inc\pshpack2.h -FILE 5623 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 5624 f:\sp\public\sdk\inc\reason.h -FILE 5625 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 5626 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\setjmp.h -FILE 5627 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\trnsctrl.cpp -FILE 5628 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h -FILE 5629 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 5630 f:\sp\public\sdk\inc\specstrings.h -FILE 5631 f:\sp\public\sdk\inc\basetsd.h -FILE 5632 f:\sp\public\sdk\inc\pshpack4.h -FILE 5633 f:\sp\public\sdk\inc\winnetwk.h -FILE 5634 f:\sp\public\sdk\inc\stralign.h -FILE 5635 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h -FILE 5636 f:\sp\public\sdk\inc\poppack.h -FILE 5637 f:\sp\public\sdk\inc\winsvc.h -FILE 5638 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5639 f:\sp\public\sdk\inc\windef.h -FILE 5640 f:\sp\public\sdk\inc\winuser.h -FILE 5641 f:\sp\public\sdk\inc\windows.h -FILE 5642 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5643 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5644 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5645 f:\sp\public\sdk\inc\mcx.h -FILE 5646 f:\sp\public\sdk\inc\pshpack8.h -FILE 5647 f:\sp\public\sdk\inc\guiddef.h -FILE 5648 f:\sp\public\sdk\inc\winnt.h -FILE 5649 f:\sp\public\sdk\inc\winnls.h -FILE 5650 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5651 f:\sp\public\sdk\inc\pshpack1.h -FILE 5652 f:\sp\public\sdk\inc\winerror.h -FILE 5653 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5654 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5655 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 5656 f:\sp\public\sdk\inc\winreg.h -FILE 5657 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5658 f:\sp\public\sdk\inc\ddbanned.h -FILE 5659 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5660 f:\sp\public\sdk\inc\tvout.h -FILE 5661 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5662 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5663 f:\sp\vctools\langapi\include\ehdata.h -FILE 5664 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5665 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\eh\i386\lowhelpr.asm -FILE 5666 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\cruntime.inc -FILE 5667 F:\SP\vctools\crt_bld\SELF_X86\crt\prebuild\h\exsup.inc -FILE 5668 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\process.h -FILE 5669 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5670 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5671 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\i386\ehprolg3.c -FILE 5672 f:\sp\public\sdk\inc\ddbanned.h -FILE 5673 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5674 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5675 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 5676 f:\sp\public\sdk\inc\wincon.h -FILE 5677 f:\sp\public\sdk\inc\imm.h -FILE 5678 f:\sp\public\sdk\inc\winbase.h -FILE 5679 f:\sp\public\sdk\inc\wingdi.h -FILE 5680 f:\sp\public\sdk\inc\winver.h -FILE 5681 f:\sp\public\sdk\inc\pshpack2.h -FILE 5682 f:\sp\public\sdk\inc\reason.h -FILE 5683 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\validate.cpp -FILE 5684 f:\sp\public\sdk\inc\specstrings.h -FILE 5685 f:\sp\public\sdk\inc\basetsd.h -FILE 5686 f:\sp\public\sdk\inc\pshpack4.h -FILE 5687 f:\sp\public\sdk\inc\winnetwk.h -FILE 5688 f:\sp\public\sdk\inc\stralign.h -FILE 5689 f:\sp\public\sdk\inc\poppack.h -FILE 5690 f:\sp\public\sdk\inc\winsvc.h -FILE 5691 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5692 f:\sp\public\sdk\inc\windef.h -FILE 5693 f:\sp\public\sdk\inc\winuser.h -FILE 5694 f:\sp\public\sdk\inc\windows.h -FILE 5695 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5696 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5697 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5698 f:\sp\public\sdk\inc\mcx.h -FILE 5699 f:\sp\public\sdk\inc\pshpack8.h -FILE 5700 f:\sp\public\sdk\inc\guiddef.h -FILE 5701 f:\sp\public\sdk\inc\winnt.h -FILE 5702 f:\sp\public\sdk\inc\winnls.h -FILE 5703 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5704 f:\sp\public\sdk\inc\pshpack1.h -FILE 5705 f:\sp\public\sdk\inc\winerror.h -FILE 5706 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5707 f:\sp\public\sdk\inc\winreg.h -FILE 5708 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5709 f:\sp\public\sdk\inc\ddbanned.h -FILE 5710 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5711 f:\sp\public\sdk\inc\tvout.h -FILE 5712 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5713 f:\sp\public\sdk\inc\wincon.h -FILE 5714 f:\sp\public\sdk\inc\imm.h -FILE 5715 f:\sp\public\sdk\inc\winbase.h -FILE 5716 f:\sp\public\sdk\inc\wingdi.h -FILE 5717 f:\sp\public\sdk\inc\winver.h -FILE 5718 f:\sp\public\sdk\inc\pshpack2.h -FILE 5719 f:\sp\public\sdk\inc\reason.h -FILE 5720 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 5721 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\unhandld.cpp -FILE 5722 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5723 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 5724 f:\sp\public\sdk\inc\specstrings.h -FILE 5725 f:\sp\public\sdk\inc\basetsd.h -FILE 5726 f:\sp\public\sdk\inc\pshpack4.h -FILE 5727 f:\sp\public\sdk\inc\winnetwk.h -FILE 5728 f:\sp\public\sdk\inc\stralign.h -FILE 5729 f:\sp\public\sdk\inc\poppack.h -FILE 5730 f:\sp\public\sdk\inc\winsvc.h -FILE 5731 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5732 f:\sp\public\sdk\inc\windef.h -FILE 5733 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 5734 f:\sp\public\sdk\inc\winuser.h -FILE 5735 f:\sp\public\sdk\inc\windows.h -FILE 5736 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5737 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5738 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5739 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 5740 f:\sp\public\sdk\inc\mcx.h -FILE 5741 f:\sp\public\sdk\inc\pshpack8.h -FILE 5742 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 5743 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5744 f:\sp\public\sdk\inc\guiddef.h -FILE 5745 f:\sp\public\sdk\inc\winnt.h -FILE 5746 f:\sp\public\sdk\inc\winnls.h -FILE 5747 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5748 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5749 f:\sp\public\sdk\inc\pshpack1.h -FILE 5750 f:\sp\public\sdk\inc\winerror.h -FILE 5751 f:\sp\vctools\langapi\include\ehdata.h -FILE 5752 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5753 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 5754 f:\sp\public\sdk\inc\winreg.h -FILE 5755 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5756 f:\sp\public\sdk\inc\ddbanned.h -FILE 5757 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5758 f:\sp\public\sdk\inc\tvout.h -FILE 5759 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5760 f:\sp\public\sdk\inc\specstrings.h -FILE 5761 f:\sp\public\sdk\inc\basetsd.h -FILE 5762 f:\sp\public\sdk\inc\pshpack4.h -FILE 5763 f:\sp\public\sdk\inc\winnetwk.h -FILE 5764 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5765 f:\sp\public\sdk\inc\stralign.h -FILE 5766 f:\sp\public\sdk\inc\poppack.h -FILE 5767 f:\sp\public\sdk\inc\winsvc.h -FILE 5768 f:\sp\public\sdk\inc\winuser.h -FILE 5769 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5770 f:\sp\public\sdk\inc\windef.h -FILE 5771 f:\sp\vctools\langapi\undname\undname.cxx -FILE 5772 f:\sp\public\sdk\inc\mcx.h -FILE 5773 f:\sp\public\sdk\inc\pshpack8.h -FILE 5774 f:\sp\public\sdk\inc\guiddef.h -FILE 5775 f:\sp\vctools\langapi\undname\utf8.h -FILE 5776 f:\sp\public\sdk\inc\winnls.h -FILE 5777 f:\sp\public\sdk\inc\pshpack1.h -FILE 5778 f:\sp\public\sdk\inc\winnt.h -FILE 5779 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5780 f:\sp\public\sdk\inc\winerror.h -FILE 5781 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\swprintf.inl -FILE 5782 f:\sp\vctools\langapi\undname\undname.hxx -FILE 5783 f:\sp\vctools\langapi\undname\undname.h -FILE 5784 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5785 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5786 f:\sp\public\sdk\inc\winreg.h -FILE 5787 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5788 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5789 f:\sp\public\sdk\inc\tvout.h -FILE 5790 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdio.h -FILE 5791 f:\sp\public\sdk\inc\wincon.h -FILE 5792 f:\sp\public\sdk\inc\imm.h -FILE 5793 f:\sp\public\sdk\inc\winbase.h -FILE 5794 f:\sp\public\sdk\inc\wingdi.h -FILE 5795 f:\sp\public\sdk\inc\winver.h -FILE 5796 f:\sp\public\sdk\inc\pshpack2.h -FILE 5797 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5798 f:\sp\public\sdk\inc\windows.h -FILE 5799 f:\sp\public\sdk\inc\reason.h -FILE 5800 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5801 f:\sp\public\sdk\inc\ddbanned.h -FILE 5802 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5803 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5804 f:\sp\vctools\langapi\undname\undname.inl -FILE 5805 f:\sp\public\sdk\inc\guiddef.h -FILE 5806 f:\sp\public\sdk\inc\winnt.h -FILE 5807 f:\sp\public\sdk\inc\winnls.h -FILE 5808 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5809 f:\sp\public\sdk\inc\pshpack1.h -FILE 5810 f:\sp\public\sdk\inc\winerror.h -FILE 5811 f:\sp\public\sdk\inc\winreg.h -FILE 5812 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5813 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5814 f:\sp\public\sdk\inc\tvout.h -FILE 5815 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typname.cpp -FILE 5816 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 5817 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 5818 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5819 f:\sp\public\sdk\inc\wincon.h -FILE 5820 f:\sp\public\sdk\inc\imm.h -FILE 5821 f:\sp\public\sdk\inc\winbase.h -FILE 5822 f:\sp\public\sdk\inc\wingdi.h -FILE 5823 f:\sp\public\sdk\inc\winver.h -FILE 5824 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5825 f:\sp\public\sdk\inc\windows.h -FILE 5826 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5827 f:\sp\public\sdk\inc\pshpack2.h -FILE 5828 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5829 f:\sp\public\sdk\inc\reason.h -FILE 5830 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sect_attribs.h -FILE 5831 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h -FILE 5832 f:\sp\public\sdk\inc\specstrings.h -FILE 5833 f:\sp\public\sdk\inc\basetsd.h -FILE 5834 f:\sp\public\sdk\inc\pshpack4.h -FILE 5835 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h -FILE 5836 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 5837 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 5838 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 5839 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5840 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 5841 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 5842 f:\sp\public\sdk\inc\winnetwk.h -FILE 5843 f:\sp\vctools\langapi\undname\undname.h -FILE 5844 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 5845 f:\sp\public\sdk\inc\stralign.h -FILE 5846 f:\sp\public\sdk\inc\poppack.h -FILE 5847 f:\sp\public\sdk\inc\winsvc.h -FILE 5848 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5849 f:\sp\public\sdk\inc\windef.h -FILE 5850 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 5851 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5852 f:\sp\public\sdk\inc\winuser.h -FILE 5853 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5854 f:\sp\public\sdk\inc\ddbanned.h -FILE 5855 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5856 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5857 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 5858 f:\sp\public\sdk\inc\mcx.h -FILE 5859 f:\sp\public\sdk\inc\pshpack8.h -FILE 5860 f:\sp\public\sdk\inc\winnls.h -FILE 5861 f:\sp\public\sdk\inc\pshpack1.h -FILE 5862 f:\sp\public\sdk\inc\winnt.h -FILE 5863 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5864 f:\sp\public\sdk\inc\winerror.h -FILE 5865 f:\sp\public\sdk\inc\winreg.h -FILE 5866 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5867 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5868 f:\sp\public\sdk\inc\tvout.h -FILE 5869 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\dbgint.h -FILE 5870 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 5871 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 5872 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5873 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\typinfo.cpp -FILE 5874 f:\sp\public\sdk\inc\wincon.h -FILE 5875 f:\sp\public\sdk\inc\imm.h -FILE 5876 f:\sp\public\sdk\inc\winbase.h -FILE 5877 f:\sp\public\sdk\inc\wingdi.h -FILE 5878 f:\sp\public\sdk\inc\winver.h -FILE 5879 f:\sp\public\sdk\inc\pshpack2.h -FILE 5880 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5881 f:\sp\public\sdk\inc\reason.h -FILE 5882 f:\sp\public\sdk\inc\windows.h -FILE 5883 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5884 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5885 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5886 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5887 f:\sp\public\sdk\inc\specstrings.h -FILE 5888 f:\sp\public\sdk\inc\basetsd.h -FILE 5889 f:\sp\public\sdk\inc\pshpack4.h -FILE 5890 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 5891 f:\sp\public\sdk\inc\winnetwk.h -FILE 5892 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 5893 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 5894 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5895 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 5896 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 5897 f:\sp\public\sdk\inc\stralign.h -FILE 5898 f:\sp\public\sdk\inc\poppack.h -FILE 5899 f:\sp\public\sdk\inc\winsvc.h -FILE 5900 f:\sp\public\sdk\inc\winuser.h -FILE 5901 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5902 f:\sp\public\sdk\inc\windef.h -FILE 5903 f:\sp\vctools\langapi\undname\undname.h -FILE 5904 f:\sp\public\sdk\inc\ddbanned.h -FILE 5905 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 5906 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5907 f:\sp\public\sdk\inc\mcx.h -FILE 5908 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5909 f:\sp\public\sdk\inc\pshpack8.h -FILE 5910 f:\sp\public\sdk\inc\guiddef.h -FILE 5911 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5912 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 5913 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5914 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 5915 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 5916 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\stdexcpt.cpp -FILE 5917 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 5918 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 5919 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5920 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5921 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5922 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5923 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 5924 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5925 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 5926 f:\sp\public\sdk\inc\ddbanned.h -FILE 5927 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5928 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5929 f:\sp\vctools\langapi\include\ehdata.h -FILE 5930 f:\sp\public\sdk\inc\wincon.h -FILE 5931 f:\sp\public\sdk\inc\imm.h -FILE 5932 f:\sp\public\sdk\inc\winbase.h -FILE 5933 f:\sp\public\sdk\inc\wingdi.h -FILE 5934 f:\sp\public\sdk\inc\winver.h -FILE 5935 f:\sp\public\sdk\inc\windows.h -FILE 5936 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 5937 f:\sp\public\sdk\inc\pshpack2.h -FILE 5938 f:\sp\public\sdk\inc\reason.h -FILE 5939 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp -FILE 5940 f:\sp\public\sdk\inc\specstrings.h -FILE 5941 f:\sp\public\sdk\inc\basetsd.h -FILE 5942 f:\sp\public\sdk\inc\pshpack4.h -FILE 5943 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5944 f:\sp\public\sdk\inc\winnetwk.h -FILE 5945 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5946 f:\sp\public\sdk\inc\stralign.h -FILE 5947 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5948 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5949 f:\sp\public\sdk\inc\poppack.h -FILE 5950 f:\sp\public\sdk\inc\winsvc.h -FILE 5951 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5952 f:\sp\public\sdk\inc\windef.h -FILE 5953 f:\sp\public\sdk\inc\winuser.h -FILE 5954 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 5955 f:\sp\public\sdk\inc\mcx.h -FILE 5956 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 5957 f:\sp\public\sdk\inc\pshpack8.h -FILE 5958 f:\sp\public\sdk\inc\guiddef.h -FILE 5959 f:\sp\public\sdk\inc\winnt.h -FILE 5960 f:\sp\public\sdk\inc\winnls.h -FILE 5961 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5962 f:\sp\public\sdk\inc\pshpack1.h -FILE 5963 f:\sp\public\sdk\inc\winerror.h -FILE 5964 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5965 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5966 f:\sp\public\sdk\inc\ddbanned.h -FILE 5967 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 5968 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 5969 f:\sp\public\sdk\inc\winreg.h -FILE 5970 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5971 f:\sp\public\sdk\inc\tvout.h -FILE 5972 f:\sp\public\sdk\inc\poppack.h -FILE 5973 f:\sp\public\sdk\inc\winsvc.h -FILE 5974 f:\sp\public\sdk\inc\windows.h -FILE 5975 f:\sp\public\sdk\inc\winuser.h -FILE 5976 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 5977 f:\sp\public\sdk\inc\windef.h -FILE 5978 f:\sp\public\sdk\inc\mcx.h -FILE 5979 f:\sp\public\sdk\inc\pshpack8.h -FILE 5980 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 5981 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 5982 f:\sp\public\sdk\inc\guiddef.h -FILE 5983 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\hooks.cpp -FILE 5984 f:\sp\public\sdk\inc\winnls.h -FILE 5985 f:\sp\public\sdk\inc\pshpack1.h -FILE 5986 f:\sp\public\sdk\inc\winnt.h -FILE 5987 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 5988 f:\sp\public\sdk\inc\winerror.h -FILE 5989 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 5990 f:\sp\public\sdk\inc\winreg.h -FILE 5991 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 5992 f:\sp\public\sdk\inc\tvout.h -FILE 5993 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 5994 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 5995 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 5996 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 5997 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 5998 f:\sp\public\sdk\inc\wincon.h -FILE 5999 f:\sp\public\sdk\inc\imm.h -FILE 6000 f:\sp\public\sdk\inc\winbase.h -FILE 6001 f:\sp\public\sdk\inc\wingdi.h -FILE 6002 f:\sp\public\sdk\inc\winver.h -FILE 6003 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 6004 f:\sp\public\sdk\inc\pshpack2.h -FILE 6005 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 6006 f:\sp\public\sdk\inc\reason.h -FILE 6007 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 6008 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 6009 f:\sp\public\sdk\inc\specstrings.h -FILE 6010 f:\sp\public\sdk\inc\basetsd.h -FILE 6011 f:\sp\public\sdk\inc\pshpack4.h -FILE 6012 f:\sp\public\sdk\inc\ddbanned.h -FILE 6013 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 6014 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 6015 f:\sp\public\sdk\inc\winnetwk.h -FILE 6016 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 6017 f:\sp\public\sdk\inc\stralign.h -FILE 6018 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdbg.h -FILE 6019 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehassert.h -FILE 6020 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\malloc.h -FILE 6021 f:\sp\public\sdk\inc\wincon.h -FILE 6022 f:\sp\public\sdk\inc\imm.h -FILE 6023 f:\sp\public\sdk\inc\guiddef.h -FILE 6024 f:\sp\public\sdk\inc\winbase.h -FILE 6025 f:\sp\public\sdk\inc\wingdi.h -FILE 6026 f:\sp\vctools\langapi\include\ehdata.h -FILE 6027 f:\sp\public\sdk\inc\winver.h -FILE 6028 f:\sp\public\sdk\inc\winnt.h -FILE 6029 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ctype.h -FILE 6030 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdlib.h -FILE 6031 f:\sp\public\sdk\inc\pshpack2.h -FILE 6032 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\limits.h -FILE 6033 f:\sp\public\sdk\inc\reason.h -FILE 6034 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\frame.cpp -FILE 6035 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\exception -FILE 6036 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\typeinfo.h -FILE 6037 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\typeinfo -FILE 6038 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\xstddef -FILE 6039 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\yvals.h -FILE 6040 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\use_ansi.h -FILE 6041 f:\sp\public\sdk\inc\pshpack4.h -FILE 6042 f:\sp\public\sdk\inc\winnetwk.h -FILE 6043 f:\sp\public\sdk\inc\stralign.h -FILE 6044 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\errno.h -FILE 6045 f:\sp\public\sdk\inc\poppack.h -FILE 6046 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stddef.h -FILE 6047 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\crtdefs.h -FILE 6048 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\sal.h -FILE 6049 f:\sp\public\sdk\inc\winsvc.h -FILE 6050 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehstate.h -FILE 6051 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\eh.h -FILE 6052 f:\sp\public\sdk\inc\winuser.h -FILE 6053 f:\sp\public\sdk\inc\windows.h -FILE 6054 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\excpt.h -FILE 6055 f:\sp\public\sdk\inc\mcx.h -FILE 6056 f:\sp\public\sdk\inc\pshpack8.h -FILE 6057 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\string.h -FILE 6058 f:\sp\public\sdk\inc\specstrings.h -FILE 6059 f:\sp\public\sdk\inc\basetsd.h -FILE 6060 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\ehhooks.h -FILE 6061 f:\sp\public\sdk\inc\winnls.h -FILE 6062 f:\sp\public\sdk\inc\pshpack1.h -FILE 6063 f:\sp\public\sdk\inc\winerror.h -FILE 6064 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\trnsctrl.h -FILE 6065 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\internal.h -FILE 6066 f:\sp\public\sdk\inc\winreg.h -FILE 6067 f:\sp\public\sdk\inc\ddbanned.h -FILE 6068 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\vadefs.h -FILE 6069 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\stdhpp\cstddef -FILE 6070 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\cruntime.h -FILE 6071 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\mtdll.h -FILE 6072 f:\sp\vctools\crt_bld\self_x86\crt\prebuild\h\stdarg.h -FILE 6073 f:\sp\public\sdk\inc\windef.h -FILE 6074 f:\sp\public\sdk\inc\tvout.h -FILE 6075 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6076 f:\sp\public\sdk\inc\pshpack4.h -FILE 6077 f:\sp\public\sdk\inc\reason.h -FILE 6078 f:\sp\public\sdk\inc\wincon.h -FILE 6079 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6080 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6081 f:\sp\public\sdk\inc\poppack.h -FILE 6082 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6083 f:\sp\public\sdk\inc\mcx.h -FILE 6084 f:\sp\public\sdk\inc\winuser.h -FILE 6085 f:\sp\public\sdk\inc\winnls.h -FILE 6086 f:\sp\public\sdk\inc\stralign.h -FILE 6087 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6088 f:\sp\public\sdk\inc\windef.h -FILE 6089 f:\sp\public\sdk\inc\tvout.h -FILE 6090 f:\sp\public\sdk\inc\winsvc.h -FILE 6091 f:\sp\public\sdk\inc\wingdi.h -FILE 6092 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6093 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6094 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6095 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6096 f:\sp\public\sdk\inc\winnt.h -FILE 6097 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6098 f:\sp\public\sdk\inc\winnetwk.h -FILE 6099 f:\sp\public\sdk\inc\imm.h -FILE 6100 f:\sp\vctools\crt_bld\self_x86\crt\src\dosmap.c -FILE 6101 f:\sp\public\sdk\inc\winbase.h -FILE 6102 f:\sp\public\sdk\inc\winerror.h -FILE 6103 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6104 f:\sp\public\sdk\inc\pshpack1.h -FILE 6105 f:\sp\public\sdk\inc\pshpack8.h -FILE 6106 f:\sp\public\sdk\inc\winver.h -FILE 6107 f:\sp\public\sdk\inc\ddbanned.h -FILE 6108 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6109 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6110 f:\sp\public\sdk\inc\pshpack2.h -FILE 6111 f:\sp\public\sdk\inc\winreg.h -FILE 6112 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6113 f:\sp\public\sdk\inc\guiddef.h -FILE 6114 f:\sp\public\sdk\inc\windows.h -FILE 6115 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6116 f:\sp\public\sdk\inc\specstrings.h -FILE 6117 f:\sp\public\sdk\inc\basetsd.h -FILE 6118 f:\sp\public\sdk\inc\winver.h -FILE 6119 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6120 f:\sp\public\sdk\inc\pshpack2.h -FILE 6121 f:\sp\public\sdk\inc\windows.h -FILE 6122 f:\sp\public\sdk\inc\reason.h -FILE 6123 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6124 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6125 f:\sp\public\sdk\inc\specstrings.h -FILE 6126 f:\sp\public\sdk\inc\basetsd.h -FILE 6127 f:\sp\public\sdk\inc\pshpack4.h -FILE 6128 f:\sp\vctools\crt_bld\self_x86\crt\src\wctomb.c -FILE 6129 f:\sp\public\sdk\inc\winnetwk.h -FILE 6130 f:\sp\public\sdk\inc\stralign.h -FILE 6131 f:\sp\public\sdk\inc\poppack.h -FILE 6132 f:\sp\public\sdk\inc\winsvc.h -FILE 6133 f:\sp\public\sdk\inc\winuser.h -FILE 6134 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6135 f:\sp\public\sdk\inc\windef.h -FILE 6136 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6137 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6138 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6139 f:\sp\public\sdk\inc\mcx.h -FILE 6140 f:\sp\public\sdk\inc\pshpack8.h -FILE 6141 f:\sp\public\sdk\inc\guiddef.h -FILE 6142 f:\sp\public\sdk\inc\winnls.h -FILE 6143 f:\sp\public\sdk\inc\pshpack1.h -FILE 6144 f:\sp\public\sdk\inc\winnt.h -FILE 6145 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6146 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6147 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6148 f:\sp\public\sdk\inc\winerror.h -FILE 6149 f:\sp\public\sdk\inc\winreg.h -FILE 6150 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6151 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6152 f:\sp\public\sdk\inc\tvout.h -FILE 6153 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6154 f:\sp\public\sdk\inc\ddbanned.h -FILE 6155 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6156 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6157 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6158 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6159 f:\sp\public\sdk\inc\wincon.h -FILE 6160 f:\sp\public\sdk\inc\imm.h -FILE 6161 f:\sp\public\sdk\inc\winbase.h -FILE 6162 f:\sp\public\sdk\inc\wingdi.h -FILE 6163 f:\sp\public\sdk\inc\winsvc.h -FILE 6164 f:\sp\public\sdk\inc\winuser.h -FILE 6165 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6166 f:\sp\public\sdk\inc\mcx.h -FILE 6167 f:\sp\public\sdk\inc\pshpack8.h -FILE 6168 f:\sp\public\sdk\inc\guiddef.h -FILE 6169 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6170 f:\sp\public\sdk\inc\windows.h -FILE 6171 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6172 f:\sp\public\sdk\inc\winnls.h -FILE 6173 f:\sp\vctools\crt_bld\self_x86\crt\src\wcstol.c -FILE 6174 f:\sp\public\sdk\inc\pshpack1.h -FILE 6175 f:\sp\public\sdk\inc\winerror.h -FILE 6176 f:\sp\public\sdk\inc\winreg.h -FILE 6177 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6178 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6179 f:\sp\public\sdk\inc\tvout.h -FILE 6180 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6181 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6182 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6183 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6184 f:\sp\public\sdk\inc\wincon.h -FILE 6185 f:\sp\public\sdk\inc\imm.h -FILE 6186 f:\sp\public\sdk\inc\winbase.h -FILE 6187 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6188 f:\sp\public\sdk\inc\wingdi.h -FILE 6189 f:\sp\public\sdk\inc\windef.h -FILE 6190 f:\sp\public\sdk\inc\winver.h -FILE 6191 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6192 f:\sp\public\sdk\inc\pshpack2.h -FILE 6193 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6194 f:\sp\public\sdk\inc\reason.h -FILE 6195 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6196 f:\sp\public\sdk\inc\winnt.h -FILE 6197 f:\sp\public\sdk\inc\specstrings.h -FILE 6198 f:\sp\public\sdk\inc\basetsd.h -FILE 6199 f:\sp\public\sdk\inc\pshpack4.h -FILE 6200 f:\sp\public\sdk\inc\ddbanned.h -FILE 6201 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6202 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6203 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6204 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6205 f:\sp\public\sdk\inc\winnetwk.h -FILE 6206 f:\sp\public\sdk\inc\stralign.h -FILE 6207 f:\sp\public\sdk\inc\poppack.h -FILE 6208 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6209 f:\sp\public\sdk\inc\mcx.h -FILE 6210 f:\sp\public\sdk\inc\pshpack8.h -FILE 6211 f:\sp\public\sdk\inc\guiddef.h -FILE 6212 f:\sp\public\sdk\inc\winnt.h -FILE 6213 f:\sp\public\sdk\inc\winnls.h -FILE 6214 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6215 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6216 f:\sp\public\sdk\inc\pshpack1.h -FILE 6217 f:\sp\public\sdk\inc\winerror.h -FILE 6218 f:\sp\vctools\crt_bld\self_x86\crt\src\tolower.c -FILE 6219 f:\sp\public\sdk\inc\winreg.h -FILE 6220 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6221 f:\sp\public\sdk\inc\tvout.h -FILE 6222 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6223 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6224 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6225 f:\sp\public\sdk\inc\wincon.h -FILE 6226 f:\sp\vctools\crt_bld\self_x86\crt\src\stddef.h -FILE 6227 f:\sp\public\sdk\inc\imm.h -FILE 6228 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6229 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6230 f:\sp\public\sdk\inc\winbase.h -FILE 6231 f:\sp\public\sdk\inc\wingdi.h -FILE 6232 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6233 f:\sp\public\sdk\inc\winver.h -FILE 6234 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 6235 f:\sp\public\sdk\inc\windows.h -FILE 6236 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6237 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6238 f:\sp\public\sdk\inc\pshpack2.h -FILE 6239 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6240 f:\sp\public\sdk\inc\reason.h -FILE 6241 f:\sp\public\sdk\inc\specstrings.h -FILE 6242 f:\sp\public\sdk\inc\basetsd.h -FILE 6243 f:\sp\public\sdk\inc\pshpack4.h -FILE 6244 f:\sp\public\sdk\inc\winnetwk.h -FILE 6245 f:\sp\public\sdk\inc\ddbanned.h -FILE 6246 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6247 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6248 f:\sp\public\sdk\inc\stralign.h -FILE 6249 f:\sp\public\sdk\inc\poppack.h -FILE 6250 f:\sp\public\sdk\inc\winsvc.h -FILE 6251 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6252 f:\sp\public\sdk\inc\windef.h -FILE 6253 f:\sp\public\sdk\inc\winuser.h -FILE 6254 f:\sp\public\sdk\inc\winsvc.h -FILE 6255 f:\sp\public\sdk\inc\winuser.h -FILE 6256 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6257 f:\sp\public\sdk\inc\mcx.h -FILE 6258 f:\sp\public\sdk\inc\pshpack8.h -FILE 6259 f:\sp\public\sdk\inc\guiddef.h -FILE 6260 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6261 f:\sp\public\sdk\inc\windows.h -FILE 6262 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6263 f:\sp\public\sdk\inc\winnls.h -FILE 6264 f:\sp\vctools\crt_bld\self_x86\crt\src\strtoq.c -FILE 6265 f:\sp\public\sdk\inc\pshpack1.h -FILE 6266 f:\sp\public\sdk\inc\winerror.h -FILE 6267 f:\sp\public\sdk\inc\winreg.h -FILE 6268 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6269 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6270 f:\sp\public\sdk\inc\tvout.h -FILE 6271 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6272 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6273 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6274 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6275 f:\sp\public\sdk\inc\wincon.h -FILE 6276 f:\sp\public\sdk\inc\imm.h -FILE 6277 f:\sp\public\sdk\inc\winbase.h -FILE 6278 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6279 f:\sp\public\sdk\inc\wingdi.h -FILE 6280 f:\sp\public\sdk\inc\windef.h -FILE 6281 f:\sp\public\sdk\inc\winver.h -FILE 6282 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6283 f:\sp\public\sdk\inc\pshpack2.h -FILE 6284 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6285 f:\sp\public\sdk\inc\reason.h -FILE 6286 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6287 f:\sp\public\sdk\inc\winnt.h -FILE 6288 f:\sp\public\sdk\inc\specstrings.h -FILE 6289 f:\sp\public\sdk\inc\basetsd.h -FILE 6290 f:\sp\public\sdk\inc\pshpack4.h -FILE 6291 f:\sp\public\sdk\inc\ddbanned.h -FILE 6292 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6293 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6294 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6295 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6296 f:\sp\public\sdk\inc\winnetwk.h -FILE 6297 f:\sp\public\sdk\inc\stralign.h -FILE 6298 f:\sp\public\sdk\inc\poppack.h -FILE 6299 f:\sp\public\sdk\inc\winsvc.h -FILE 6300 f:\sp\public\sdk\inc\winuser.h -FILE 6301 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6302 f:\sp\public\sdk\inc\mcx.h -FILE 6303 f:\sp\public\sdk\inc\pshpack8.h -FILE 6304 f:\sp\public\sdk\inc\guiddef.h -FILE 6305 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6306 f:\sp\public\sdk\inc\windows.h -FILE 6307 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6308 f:\sp\public\sdk\inc\winnls.h -FILE 6309 f:\sp\vctools\crt_bld\self_x86\crt\src\strtol.c -FILE 6310 f:\sp\public\sdk\inc\pshpack1.h -FILE 6311 f:\sp\public\sdk\inc\winerror.h -FILE 6312 f:\sp\public\sdk\inc\winreg.h -FILE 6313 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6314 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6315 f:\sp\public\sdk\inc\tvout.h -FILE 6316 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6317 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6318 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6319 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6320 f:\sp\public\sdk\inc\wincon.h -FILE 6321 f:\sp\public\sdk\inc\imm.h -FILE 6322 f:\sp\public\sdk\inc\winbase.h -FILE 6323 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6324 f:\sp\public\sdk\inc\wingdi.h -FILE 6325 f:\sp\public\sdk\inc\windef.h -FILE 6326 f:\sp\public\sdk\inc\winver.h -FILE 6327 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6328 f:\sp\public\sdk\inc\pshpack2.h -FILE 6329 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6330 f:\sp\public\sdk\inc\reason.h -FILE 6331 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6332 f:\sp\public\sdk\inc\winnt.h -FILE 6333 f:\sp\public\sdk\inc\specstrings.h -FILE 6334 f:\sp\public\sdk\inc\basetsd.h -FILE 6335 f:\sp\public\sdk\inc\pshpack4.h -FILE 6336 f:\sp\public\sdk\inc\ddbanned.h -FILE 6337 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6338 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6339 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6340 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6341 f:\sp\public\sdk\inc\winnetwk.h -FILE 6342 f:\sp\public\sdk\inc\stralign.h -FILE 6343 f:\sp\public\sdk\inc\poppack.h -FILE 6344 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6345 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6346 f:\sp\public\sdk\inc\tvout.h -FILE 6347 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6348 f:\sp\public\sdk\inc\wincon.h -FILE 6349 f:\sp\public\sdk\inc\imm.h -FILE 6350 f:\sp\public\sdk\inc\winbase.h -FILE 6351 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6352 f:\sp\public\sdk\inc\wingdi.h -FILE 6353 f:\sp\public\sdk\inc\windef.h -FILE 6354 f:\sp\public\sdk\inc\winver.h -FILE 6355 f:\sp\vctools\crt_bld\self_x86\crt\src\mbtowc.c -FILE 6356 f:\sp\public\sdk\inc\pshpack2.h -FILE 6357 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6358 f:\sp\public\sdk\inc\reason.h -FILE 6359 f:\sp\public\sdk\inc\winnt.h -FILE 6360 f:\sp\public\sdk\inc\specstrings.h -FILE 6361 f:\sp\public\sdk\inc\basetsd.h -FILE 6362 f:\sp\public\sdk\inc\pshpack4.h -FILE 6363 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6364 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6365 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6366 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6367 f:\sp\public\sdk\inc\winnetwk.h -FILE 6368 f:\sp\public\sdk\inc\stralign.h -FILE 6369 f:\sp\public\sdk\inc\poppack.h -FILE 6370 f:\sp\public\sdk\inc\winsvc.h -FILE 6371 f:\sp\public\sdk\inc\winuser.h -FILE 6372 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6373 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 6374 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6375 f:\sp\public\sdk\inc\mcx.h -FILE 6376 f:\sp\public\sdk\inc\pshpack8.h -FILE 6377 f:\sp\public\sdk\inc\guiddef.h -FILE 6378 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6379 f:\sp\public\sdk\inc\windows.h -FILE 6380 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6381 f:\sp\public\sdk\inc\winnls.h -FILE 6382 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6383 f:\sp\public\sdk\inc\pshpack1.h -FILE 6384 f:\sp\public\sdk\inc\ddbanned.h -FILE 6385 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6386 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6387 f:\sp\public\sdk\inc\winerror.h -FILE 6388 f:\sp\public\sdk\inc\winreg.h -FILE 6389 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6390 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 6391 f:\sp\public\sdk\inc\winreg.h -FILE 6392 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6393 f:\sp\public\sdk\inc\tvout.h -FILE 6394 f:\sp\vctools\crt_bld\self_x86\crt\src\dbgint.h -FILE 6395 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6396 f:\sp\public\sdk\inc\wincon.h -FILE 6397 f:\sp\public\sdk\inc\imm.h -FILE 6398 f:\sp\public\sdk\inc\winbase.h -FILE 6399 f:\sp\vctools\crt_bld\self_x86\crt\src\isctype.c -FILE 6400 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6401 f:\sp\public\sdk\inc\wingdi.h -FILE 6402 f:\sp\public\sdk\inc\windef.h -FILE 6403 f:\sp\public\sdk\inc\winver.h -FILE 6404 f:\sp\public\sdk\inc\pshpack2.h -FILE 6405 f:\sp\public\sdk\inc\reason.h -FILE 6406 f:\sp\public\sdk\inc\winnt.h -FILE 6407 f:\sp\public\sdk\inc\specstrings.h -FILE 6408 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6409 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 6410 f:\sp\public\sdk\inc\basetsd.h -FILE 6411 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6412 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6413 f:\sp\public\sdk\inc\pshpack4.h -FILE 6414 f:\sp\public\sdk\inc\winnetwk.h -FILE 6415 f:\sp\public\sdk\inc\stralign.h -FILE 6416 f:\sp\public\sdk\inc\poppack.h -FILE 6417 f:\sp\public\sdk\inc\winsvc.h -FILE 6418 f:\sp\public\sdk\inc\winuser.h -FILE 6419 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6420 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6421 f:\sp\public\sdk\inc\mcx.h -FILE 6422 f:\sp\public\sdk\inc\pshpack8.h -FILE 6423 f:\sp\public\sdk\inc\guiddef.h -FILE 6424 f:\sp\public\sdk\inc\ddbanned.h -FILE 6425 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6426 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 6427 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6428 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6429 f:\sp\public\sdk\inc\windows.h -FILE 6430 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6431 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6432 f:\sp\public\sdk\inc\winnls.h -FILE 6433 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6434 f:\sp\public\sdk\inc\pshpack1.h -FILE 6435 f:\sp\public\sdk\inc\winerror.h -FILE 6436 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 6437 f:\sp\public\sdk\inc\winreg.h -FILE 6438 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6439 f:\sp\public\sdk\inc\tvout.h -FILE 6440 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6441 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6442 f:\sp\public\sdk\inc\wincon.h -FILE 6443 f:\sp\public\sdk\inc\imm.h -FILE 6444 f:\sp\public\sdk\inc\winbase.h -FILE 6445 f:\sp\vctools\crt_bld\self_x86\crt\src\iswctype.c -FILE 6446 f:\sp\public\sdk\inc\wingdi.h -FILE 6447 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6448 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6449 f:\sp\public\sdk\inc\winver.h -FILE 6450 f:\sp\vctools\crt_bld\self_x86\crt\src\awint.h -FILE 6451 f:\sp\public\sdk\inc\windows.h -FILE 6452 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6453 f:\sp\public\sdk\inc\pshpack2.h -FILE 6454 f:\sp\public\sdk\inc\reason.h -FILE 6455 f:\sp\public\sdk\inc\specstrings.h -FILE 6456 f:\sp\vctools\crt_bld\self_x86\crt\src\stdio.h -FILE 6457 f:\sp\public\sdk\inc\basetsd.h -FILE 6458 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6459 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6460 f:\sp\public\sdk\inc\pshpack4.h -FILE 6461 f:\sp\public\sdk\inc\winnetwk.h -FILE 6462 f:\sp\public\sdk\inc\stralign.h -FILE 6463 f:\sp\public\sdk\inc\poppack.h -FILE 6464 f:\sp\public\sdk\inc\winsvc.h -FILE 6465 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6466 f:\sp\public\sdk\inc\windef.h -FILE 6467 f:\sp\public\sdk\inc\winuser.h -FILE 6468 f:\sp\public\sdk\inc\mcx.h -FILE 6469 f:\sp\public\sdk\inc\pshpack8.h -FILE 6470 f:\sp\public\sdk\inc\guiddef.h -FILE 6471 f:\sp\public\sdk\inc\ddbanned.h -FILE 6472 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6473 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6474 f:\sp\public\sdk\inc\winnt.h -FILE 6475 f:\sp\public\sdk\inc\winnls.h -FILE 6476 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6477 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6478 f:\sp\public\sdk\inc\pshpack1.h -FILE 6479 f:\sp\public\sdk\inc\winerror.h -FILE 6480 f:\sp\public\sdk\inc\winsvc.h -FILE 6481 f:\sp\public\sdk\inc\winuser.h -FILE 6482 f:\sp\public\sdk\inc\mcx.h -FILE 6483 f:\sp\public\sdk\inc\pshpack8.h -FILE 6484 f:\sp\public\sdk\inc\guiddef.h -FILE 6485 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6486 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6487 f:\sp\public\sdk\inc\windows.h -FILE 6488 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6489 f:\sp\public\sdk\inc\winnls.h -FILE 6490 f:\sp\vctools\crt_bld\self_x86\crt\src\_wctype.c -FILE 6491 f:\sp\public\sdk\inc\pshpack1.h -FILE 6492 f:\sp\public\sdk\inc\winerror.h -FILE 6493 f:\sp\public\sdk\inc\winreg.h -FILE 6494 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6495 f:\sp\public\sdk\inc\tvout.h -FILE 6496 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6497 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6498 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6499 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6500 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6501 f:\sp\public\sdk\inc\wincon.h -FILE 6502 f:\sp\public\sdk\inc\imm.h -FILE 6503 f:\sp\public\sdk\inc\winbase.h -FILE 6504 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6505 f:\sp\public\sdk\inc\wingdi.h -FILE 6506 f:\sp\public\sdk\inc\windef.h -FILE 6507 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 6508 f:\sp\public\sdk\inc\winver.h -FILE 6509 f:\sp\public\sdk\inc\pshpack2.h -FILE 6510 f:\sp\public\sdk\inc\reason.h -FILE 6511 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6512 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6513 f:\sp\public\sdk\inc\winnt.h -FILE 6514 f:\sp\public\sdk\inc\specstrings.h -FILE 6515 f:\sp\public\sdk\inc\basetsd.h -FILE 6516 f:\sp\public\sdk\inc\pshpack4.h -FILE 6517 f:\sp\public\sdk\inc\ddbanned.h -FILE 6518 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6519 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6520 f:\sp\public\sdk\inc\winnetwk.h -FILE 6521 f:\sp\public\sdk\inc\stralign.h -FILE 6522 f:\sp\public\sdk\inc\poppack.h -FILE 6523 f:\sp\public\sdk\inc\mcx.h -FILE 6524 f:\sp\public\sdk\inc\pshpack8.h -FILE 6525 f:\sp\public\sdk\inc\guiddef.h -FILE 6526 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6527 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6528 f:\sp\public\sdk\inc\windows.h -FILE 6529 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6530 f:\sp\public\sdk\inc\winnls.h -FILE 6531 f:\sp\public\sdk\inc\pshpack1.h -FILE 6532 f:\sp\public\sdk\inc\winerror.h -FILE 6533 f:\sp\public\sdk\inc\winreg.h -FILE 6534 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6535 f:\sp\vctools\crt_bld\self_x86\crt\src\_ctype.c -FILE 6536 f:\sp\public\sdk\inc\tvout.h -FILE 6537 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6538 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6539 f:\sp\public\sdk\inc\wincon.h -FILE 6540 f:\sp\public\sdk\inc\imm.h -FILE 6541 f:\sp\public\sdk\inc\winbase.h -FILE 6542 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6543 f:\sp\public\sdk\inc\wingdi.h -FILE 6544 f:\sp\public\sdk\inc\windef.h -FILE 6545 f:\sp\public\sdk\inc\winver.h -FILE 6546 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6547 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6548 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6549 f:\sp\public\sdk\inc\pshpack2.h -FILE 6550 f:\sp\public\sdk\inc\reason.h -FILE 6551 f:\sp\public\sdk\inc\winnt.h -FILE 6552 f:\sp\vctools\crt_bld\self_x86\crt\src\locale.h -FILE 6553 f:\sp\public\sdk\inc\specstrings.h -FILE 6554 f:\sp\public\sdk\inc\basetsd.h -FILE 6555 f:\sp\public\sdk\inc\pshpack4.h -FILE 6556 f:\sp\public\sdk\inc\winnetwk.h -FILE 6557 f:\sp\public\sdk\inc\stralign.h -FILE 6558 f:\sp\public\sdk\inc\poppack.h -FILE 6559 f:\sp\public\sdk\inc\winsvc.h -FILE 6560 f:\sp\public\sdk\inc\ddbanned.h -FILE 6561 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6562 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6563 f:\sp\public\sdk\inc\winuser.h -FILE 6564 f:\sp\public\sdk\inc\pshpack2.h -FILE 6565 f:\sp\public\sdk\inc\mcx.h -FILE 6566 f:\sp\public\sdk\inc\winuser.h -FILE 6567 f:\sp\public\sdk\inc\winnls.h -FILE 6568 f:\sp\public\sdk\inc\stralign.h -FILE 6569 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6570 f:\sp\public\sdk\inc\windef.h -FILE 6571 f:\sp\public\sdk\inc\tvout.h -FILE 6572 f:\sp\public\sdk\inc\winsvc.h -FILE 6573 f:\sp\vctools\crt_bld\self_x86\crt\src\internal_securecrt.h -FILE 6574 f:\sp\public\sdk\inc\wingdi.h -FILE 6575 f:\sp\public\sdk\inc\pshpack4.h -FILE 6576 f:\sp\public\sdk\inc\poppack.h -FILE 6577 f:\sp\public\sdk\inc\winnt.h -FILE 6578 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6579 f:\sp\public\sdk\inc\winnetwk.h -FILE 6580 f:\sp\public\sdk\inc\imm.h -FILE 6581 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoa.c -FILE 6582 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6583 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdbg.h -FILE 6584 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6585 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6586 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 6587 f:\sp\vctools\crt_bld\self_x86\crt\src\xtoas.c -FILE 6588 f:\sp\public\sdk\inc\pshpack1.h -FILE 6589 f:\sp\public\sdk\inc\winver.h -FILE 6590 f:\sp\vctools\crt_bld\self_x86\crt\src\errno.h -FILE 6591 f:\sp\public\sdk\inc\guiddef.h -FILE 6592 f:\sp\public\sdk\inc\specstrings.h -FILE 6593 f:\sp\public\sdk\inc\basetsd.h -FILE 6594 f:\sp\public\sdk\inc\winreg.h -FILE 6595 f:\sp\public\sdk\inc\ddbanned.h -FILE 6596 f:\sp\vctools\crt_bld\self_x86\crt\src\internal.h -FILE 6597 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6598 f:\sp\public\sdk\inc\windows.h -FILE 6599 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6600 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6601 f:\sp\public\sdk\inc\winbase.h -FILE 6602 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6603 f:\sp\public\sdk\inc\winerror.h -FILE 6604 f:\sp\public\sdk\inc\pshpack8.h -FILE 6605 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 6606 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6607 f:\sp\public\sdk\inc\reason.h -FILE 6608 f:\sp\public\sdk\inc\wincon.h -FILE 6609 f:\sp\vctools\crt_bld\self_x86\crt\src\swprintf.inl -FILE 6610 f:\sp\vctools\crt_bld\self_x86\crt\src\wchar.h -FILE 6611 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6612 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6613 f:\sp\vctools\crt_bld\self_x86\crt\src\wchtodig.c -FILE 6614 f:\sp\public\sdk\inc\ddbanned.h -FILE 6615 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6616 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6617 f:\sp\vctools\crt_bld\self_x86\crt\src\wtime.inl -FILE 6618 f:\sp\public\sdk\inc\poppack.h -FILE 6619 f:\sp\public\sdk\inc\winnetwk.h -FILE 6620 f:\sp\public\sdk\inc\imm.h -FILE 6621 f:\sp\vctools\crt_bld\self_x86\crt\src\stdarg.h -FILE 6622 f:\sp\public\sdk\inc\windef.h -FILE 6623 f:\sp\public\sdk\inc\pshpack1.h -FILE 6624 f:\sp\public\sdk\inc\winver.h -FILE 6625 f:\sp\vctools\crt_bld\self_x86\crt\src\mtdll.h -FILE 6626 f:\sp\vctools\crt_bld\self_x86\crt\src\crtdefs.h -FILE 6627 f:\sp\vctools\crt_bld\self_x86\crt\src\sal.h -FILE 6628 f:\sp\public\sdk\inc\winnt.h -FILE 6629 f:\sp\vctools\crt_bld\self_x86\crt\src\ctype.h -FILE 6630 f:\sp\public\sdk\inc\winreg.h -FILE 6631 f:\sp\vctools\crt_bld\self_x86\crt\src\atox.c -FILE 6632 f:\sp\public\sdk\inc\winbase.h -FILE 6633 f:\sp\public\sdk\inc\winerror.h -FILE 6634 f:\sp\public\sdk\inc\pshpack8.h -FILE 6635 f:\sp\vctools\crt_bld\self_x86\crt\src\setlocal.h -FILE 6636 f:\sp\vctools\crt_bld\self_x86\crt\src\oscalls.h -FILE 6637 f:\sp\public\sdk\inc\reason.h -FILE 6638 f:\sp\public\sdk\inc\wincon.h -FILE 6639 f:\sp\public\sdk\inc\ddbanned.h -FILE 6640 f:\sp\vctools\crt_bld\self_x86\crt\src\vadefs.h -FILE 6641 f:\sp\vctools\crt_bld\self_x86\crt\src\cruntime.h -FILE 6642 f:\sp\public\sdk\inc\pshpack2.h -FILE 6643 f:\sp\vctools\crt_bld\self_x86\crt\src\tchar.h -FILE 6644 f:\sp\vctools\crt_bld\self_x86\crt\src\stdlib.h -FILE 6645 f:\sp\vctools\crt_bld\self_x86\crt\src\mbstring.h -FILE 6646 f:\sp\public\sdk\inc\mcx.h -FILE 6647 f:\sp\public\sdk\inc\winuser.h -FILE 6648 f:\sp\vctools\crt_bld\self_x86\crt\src\limits.h -FILE 6649 f:\sp\public\sdk\inc\winnls.h -FILE 6650 f:\sp\public\sdk\inc\guiddef.h -FILE 6651 f:\sp\public\sdk\inc\windows.h -FILE 6652 f:\sp\vctools\crt_bld\self_x86\crt\src\excpt.h -FILE 6653 f:\sp\vctools\crt_bld\self_x86\crt\src\mbctype.h -FILE 6654 f:\sp\public\sdk\inc\specstrings.h -FILE 6655 f:\sp\public\sdk\inc\basetsd.h -FILE 6656 f:\sp\public\sdk\inc\stralign.h -FILE 6657 f:\sp\public\sdk\inc\tvout.h -FILE 6658 f:\sp\public\sdk\inc\winsvc.h -FILE 6659 f:\sp\vctools\crt_bld\self_x86\crt\src\string.h -FILE 6660 f:\sp\public\sdk\inc\wingdi.h -FILE 6661 f:\sp\public\sdk\inc\pshpack4.h -FUNC 1000 13 4 vswprintf -1000 0 50 71 -1000 12 51 71 -1012 1 52 71 -FUNC 1020 1b 10 wmemcpy_s -1020 0 1230 66 -1020 1b 1233 66 -FUNC 1040 1b 10 wmemmove_s -1040 0 1250 66 -1040 1b 1253 66 -FUNC 1060 19 4 std::bad_alloc::bad_alloc(char const *) -1060 13 371 83 -1073 6 372 83 -FUNC 1080 b 0 std::bad_alloc::~bad_alloc() -1080 6 380 83 -1086 5 381 83 -FUNC 1090 24 0 std::bad_alloc::`vector deleting destructor'(unsigned int) -FUNC 10c0 f 8 std::char_traits::assign(wchar_t &,wchar_t const &) -10c0 0 302 70 -10c0 e 303 70 -10ce 1 304 70 -FUNC 10d0 17 4 std::char_traits::length(wchar_t const *) -10d0 0 325 70 -10d0 16 327 70 -10e6 1 328 70 -FUNC 10f0 27 10 std::char_traits::_Copy_s(wchar_t *,unsigned int,wchar_t const *,unsigned int) -10f0 0 340 70 -10f0 23 343 70 -1113 3 344 70 -1116 1 345 70 -FUNC 1120 27 10 std::char_traits::_Move_s(wchar_t *,unsigned int,wchar_t const *,unsigned int) -1120 0 364 70 -1120 23 367 70 -1143 3 368 70 -1146 1 369 70 -FUNC 1150 d 8 std::char_traits::assign(char &,char const &) -1150 0 417 70 -1150 c 418 70 -115c 1 419 70 -FUNC 1160 13 4 std::char_traits::length(char const *) -1160 0 440 70 -1160 12 442 70 -1172 1 443 70 -FUNC 1180 21 10 std::char_traits::_Copy_s(char *,unsigned int,char const *,unsigned int) -1180 0 455 70 -1180 1d 458 70 -119d 3 459 70 -11a0 1 460 70 -FUNC 11b0 21 10 std::char_traits::_Move_s(char *,unsigned int,char const *,unsigned int) -11b0 0 479 70 -11b0 1d 482 70 -11cd 3 483 70 -11d0 1 484 70 -FUNC 11e0 7 0 std::_Iterator_base::_Iterator_base() -11e0 6 441 65 -11e6 1 442 65 -FUNC 11f0 6b 4 std::logic_error::logic_error(std::basic_string,std::allocator > const &) -11f0 56 27 82 -1246 15 28 82 -FUNC 1260 32 0 std::logic_error::~logic_error() -1260 9 31 82 -1269 29 32 82 -FUNC 12a0 e 0 std::logic_error::what() -12a0 0 35 82 -12a0 9 36 82 -12a9 1 37 82 -12aa 3 36 82 -12ad 1 37 82 -FUNC 12b0 47 0 std::logic_error::`scalar deleting destructor'(unsigned int) -FUNC 1300 19 4 std::length_error::length_error(std::basic_string,std::allocator > const &) -1300 13 106 82 -1313 6 107 82 -FUNC 1320 32 0 std::length_error::~length_error() -1320 3 110 82 -1323 2f 111 82 -FUNC 1360 47 0 std::length_error::`vector deleting destructor'(unsigned int) -FUNC 13b0 19 4 std::out_of_range::out_of_range(std::basic_string,std::allocator > const &) -13b0 13 130 82 -13c3 6 131 82 -FUNC 13d0 32 0 std::out_of_range::~out_of_range() -13d0 3 134 82 -13d3 2f 135 82 -FUNC 1410 47 0 std::out_of_range::`vector deleting destructor'(unsigned int) -FUNC 1460 19 4 std::out_of_range::out_of_range(std::out_of_range const &) -FUNC 1480 71 4 std::logic_error::logic_error(std::logic_error const &) -FUNC 1500 1b 8 google_breakpad::WindowsStringUtils::safe_swprintf(wchar_t *,unsigned int,wchar_t const *,...) -1500 0 94 63 -1500 1a 97 63 -151a 1 105 63 -FUNC 1520 35 0 google_breakpad::ExceptionHandler::set_dump_path(std::basic_string,std::allocator > const &) -1520 4 137 43 -1524 f 138 43 -1533 c 139 43 -153f 7 140 43 -1546 1 141 43 -1547 6 139 43 -154d 7 140 43 -1554 1 141 43 -FUNC 1560 20b 14 google_breakpad::ExceptionHandler::ExceptionHandler(std::basic_string,std::allocator > const &,bool (*)(void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *),bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *,bool) -1560 6d 75 12 -15cd 90 78 12 -165d 9 86 12 -1666 d 87 12 -1673 d 88 12 -1680 1e 96 12 -169e 11 98 12 -16af 7 99 12 -16b6 f 101 12 -16c5 a 104 12 -16cf 8 105 12 -16d7 7 106 12 -16de 7 107 12 -16e5 b 110 12 -16f0 8 114 12 -16f8 25 115 12 -171d d 117 12 -172a b 118 12 -1735 10 121 12 -1745 e 124 12 -1753 18 126 12 -FUNC 1770 274 0 google_breakpad::ExceptionHandler::~ExceptionHandler() -1770 e 128 12 -177e a 129 12 -1788 7 130 12 -178f a 133 12 -1799 b 134 12 -17a4 a 136 12 -17ae 9 139 12 -17b7 63 142 12 -181a 23 143 12 -183d 5 144 12 -1842 13 147 12 -1855 2b 149 12 -1880 2a 151 12 -18aa 17 152 12 -18c1 2c 153 12 -18ed 19 151 12 -1906 11 158 12 -1917 23 161 12 -193a 6 162 12 -1940 d 165 12 -194d f 169 12 -195c d 170 12 -1969 f 171 12 -1978 9 172 12 -1981 63 173 12 -FUNC 19f0 31 0 std::vector >::`scalar deleting destructor'(unsigned int) -FUNC 1a30 51 4 google_breakpad::ExceptionHandler::ExceptionHandlerThreadMain(void *) -1a30 13 176 12 -1a43 f 182 12 -1a52 1a 185 12 -1a6c 13 188 12 -1a7f 2 190 12 -FUNC 1a90 c7 4 google_breakpad::AutoExceptionHandler::AutoExceptionHandler() -1a90 7 204 12 -1a97 b 221 12 -1aa2 82 224 12 -1b24 d 225 12 -1b31 c 229 12 -1b3d e 231 12 -1b4b c 233 12 -FUNC 1b60 36 0 google_breakpad::AutoExceptionHandler::~AutoExceptionHandler() -1b60 0 235 12 -1b60 b 237 12 -1b6b d 239 12 -1b78 b 242 12 -1b83 7 243 12 -1b8a b 244 12 -1b95 1 245 12 -FUNC 1ba0 3 0 google_breakpad::AutoExceptionHandler::get_handler() -1ba0 3 247 12 -FUNC 1bb0 c4 4 google_breakpad::ExceptionHandler::HandleException(_EXCEPTION_POINTERS *) -1bb0 2b 254 12 -1bdb a 255 12 -1be5 f 262 12 -1bf4 1e 265 12 -1c12 5 273 12 -1c17 2 274 12 -1c19 7 283 12 -1c20 5 284 12 -1c25 2 285 12 -1c27 2 286 12 -1c29 37 290 12 -1c60 14 291 12 -FUNC 1c80 121 14 google_breakpad::ExceptionHandler::HandleInvalidParameter(wchar_t const *,wchar_t const *,wchar_t const *,unsigned int,unsigned int) -1c80 40 299 12 -1cc0 b7 319 12 -1d77 7 320 12 -1d7e 14 323 12 -1d92 2 324 12 -1d94 5 337 12 -1d99 8 345 12 -FUNC 1db0 81 8 google_breakpad::ExceptionHandler::WriteMinidumpOnHandlerThread(_EXCEPTION_POINTERS *,MDRawAssertionInfo *) -1db0 2 350 12 -1db2 d 351 12 -1dbf 6 354 12 -1dc5 2b 359 12 -1df0 f 362 12 -1dff 6 363 12 -1e05 26 370 12 -1e2b 3 372 12 -1e2e 3 373 12 -FUNC 1e40 1d 0 google_breakpad::ExceptionHandler::WriteMinidump() -1e40 3 375 12 -1e43 b 376 12 -1e4e b 377 12 -1e59 3 378 12 -1e5c 1 379 12 -FUNC 1e60 a2 4 google_breakpad::ExceptionHandler::WriteMinidump(std::basic_string,std::allocator > const &,bool (*)(wchar_t const *,wchar_t const *,void *,_EXCEPTION_POINTERS *,MDRawAssertionInfo *,bool),void *) -1e60 41 384 12 -1ea1 10 385 12 -1eb1 2a 386 12 -1edb 27 387 12 -FUNC 1f10 142 c google_breakpad::ExceptionHandler::WriteMinidumpWithException(unsigned long,_EXCEPTION_POINTERS *,MDRawAssertionInfo *) -1f10 0 392 12 -1f10 22 399 12 -1f32 7 466 12 -1f39 2 403 12 -1f3b e 404 12 -1f49 1f 411 12 -1f68 9 412 12 -1f71 8 414 12 -1f79 4 415 12 -1f7d 8 416 12 -1f85 8 426 12 -1f8d a 427 12 -1f97 34 440 12 -1fcb 8 441 12 -1fd3 8 442 12 -1fdb 4 443 12 -1fdf 8 444 12 -1fe7 30 454 12 -2017 c 456 12 -2023 7 460 12 -202a 1e 462 12 -2048 4 465 12 -204c 6 466 12 -FUNC 2060 138 0 google_breakpad::ExceptionHandler::UpdateNextID() -2060 38 468 12 -2098 b 470 12 -20a3 4a 471 12 -20ed 25 472 12 -2112 1c 477 12 -212e 31 478 12 -215f 14 479 12 -2173 25 480 12 -FUNC 21a0 3b 4 std::basic_string,std::allocator >::basic_string,std::allocator >(char const *) -21a0 0 650 17 -21a0 35 652 17 -21d5 6 653 17 -FUNC 21e0 25 4 std::basic_string,std::allocator >::basic_string,std::allocator >(std::basic_string,std::allocator > const &) -21e0 1 720 17 -21e1 4 721 17 -21e5 1a 722 17 -21ff 6 723 17 -FUNC 2210 26 0 std::basic_string,std::allocator >::~basic_string,std::allocator >() -2210 3 904 17 -2213 22 905 17 -2235 1 906 17 -FUNC 2240 e 0 std::basic_string,std::allocator >::c_str() -2240 0 1621 17 -2240 9 1622 17 -2249 1 1623 17 -224a 3 1622 17 -224d 1 1623 17 -FUNC 2250 4 0 std::basic_string,std::allocator >::size() -2250 0 1636 17 -2250 3 1637 17 -2253 1 1638 17 -FUNC 2260 11 0 std::basic_string,std::allocator >::basic_string,std::allocator >() -2260 0 564 17 -2260 10 565 17 -2270 1 566 17 -FUNC 2280 27 0 std::basic_string,std::allocator >::~basic_string,std::allocator >() -2280 3 904 17 -2283 23 905 17 -22a6 1 906 17 -FUNC 22b0 b 0 std::basic_string,std::allocator >::operator=(std::basic_string,std::allocator > const &) -22b0 0 914 17 -22b0 a 915 17 -22ba 1 916 17 -FUNC 22c0 24 4 std::basic_string,std::allocator >::operator=(wchar_t const *) -22c0 0 919 17 -22c0 21 920 17 -22e1 3 921 17 -FUNC 22f0 e 0 std::basic_string,std::allocator >::c_str() -22f0 0 1621 17 -22f0 9 1622 17 -22f9 1 1623 17 -22fa 3 1622 17 -22fd 1 1623 17 -FUNC 2300 c 0 std::vector >::vector >() -2300 0 457 23 -2300 b 458 23 -230b 1 459 23 -FUNC 2310 26 0 std::vector >::~vector >() -2310 0 545 23 -2310 25 546 23 -2335 1 547 23 -FUNC 2340 1d 0 std::vector >::begin() -2340 1 627 23 -2341 1b 628 23 -235c 1 629 23 -FUNC 2360 1d 0 std::vector >::end() -2360 1 637 23 -2361 1b 638 23 -237c 1 639 23 -FUNC 2380 13 0 std::vector >::size() -2380 0 702 23 -2380 9 703 23 -2389 1 704 23 -238a 8 703 23 -2392 1 704 23 -FUNC 23a0 23 0 std::vector >::empty() -23a0 0 712 23 -23a0 10 713 23 -23b0 1 714 23 -23b1 11 713 23 -23c2 1 714 23 -FUNC 23d0 56 0 std::vector >::at(unsigned int) -23d0 b 729 23 -23db 15 730 23 -23f0 5 731 23 -23f5 29 732 23 -241e 8 733 23 -FUNC 2430 47 0 std::vector >::back() -2430 c 776 23 -243c 32 777 23 -246e 9 778 23 -FUNC 2480 68 0 std::vector >::push_back(google_breakpad::ExceptionHandler * const &) -2480 10 786 23 -2490 24 787 23 -24b4 d 796 23 -24c1 6 801 23 -24c7 1b 800 23 -24e2 6 801 23 -FUNC 24f0 23 0 std::vector >::pop_back() -24f0 6 818 23 -24f6 15 819 23 -250b 6 822 23 -2511 2 824 23 -FUNC 2520 3f 8 std::vector >::erase(std::_Vector_iterator >) -2520 7 996 23 -2527 24 998 23 -254b 11 1001 23 -255c 3 1002 23 -FUNC 2560 20 0 std::_Vector_iterator >::operator*() -2560 0 325 23 -2560 1c 326 23 -257c 1 327 23 -257d 2 326 23 -257f 1 327 23 -FUNC 2580 20 0 std::_Vector_iterator >::operator++() -2580 0 335 23 -2580 1d 336 23 -259d 2 337 23 -259f 1 338 23 -FUNC 25a0 1d 0 std::_Vector_const_iterator >::operator!=(std::_Vector_const_iterator > const &) -25a0 0 202 23 -25a0 1c 203 23 -25bc 1 204 23 -FUNC 25c0 da c std::basic_string,std::allocator >::assign(std::basic_string,std::allocator > const &,unsigned int,unsigned int) -25c0 1 1038 17 -25c1 12 1039 17 -25d3 5 1040 17 -25d8 3 1041 17 -25db a 1042 17 -25e5 2 1043 17 -25e7 4 1045 17 -25eb 17 1046 17 -2602 5 1052 17 -2607 3 1053 17 -260a 21 1047 17 -262b b 1049 17 -2636 13 1047 17 -2649 5 1052 17 -264e 3 1053 17 -2651 7 1047 17 -2658 5 1052 17 -265d 3 1053 17 -2660 22 1049 17 -2682 10 1050 17 -2692 5 1052 17 -2697 3 1053 17 -FUNC 26a0 27 4 std::basic_string,std::allocator >::assign(char const *) -26a0 1 1069 17 -26a1 23 1070 17 -26c4 3 1071 17 -FUNC 26d0 4a 8 std::basic_string,std::allocator >::_Tidy(bool,unsigned int) -26d0 0 2066 17 -26d0 f 2067 17 -26df 6 2069 17 -26e5 a 2072 17 -26ef d 2073 17 -26fc a 2074 17 -2706 11 2077 17 -2717 3 2078 17 -FUNC 2720 e 0 std::basic_string,std::allocator >::_Myptr() -2720 0 2092 17 -2720 9 2093 17 -2729 1 2094 17 -272a 3 2093 17 -272d 1 2094 17 -FUNC 2730 5 4 std::_String_val >::_String_val >(std::allocator) -2730 2 471 17 -2732 3 472 17 -FUNC 2740 5 4 std::_String_val >::_String_val >(std::_String_val > const &) -2740 2 477 17 -2742 3 484 17 -FUNC 2750 3 0 std::allocator::allocator() -2750 2 120 19 -2752 1 122 19 -FUNC 2760 b 0 std::basic_string,std::allocator >::assign(std::basic_string,std::allocator > const &) -2760 0 1032 17 -2760 a 1033 17 -276a 1 1034 17 -FUNC 2770 ef c std::basic_string,std::allocator >::assign(std::basic_string,std::allocator > const &,unsigned int,unsigned int) -2770 1 1038 17 -2771 12 1039 17 -2783 5 1040 17 -2788 3 1041 17 -278b a 1042 17 -2795 2 1043 17 -2797 4 1045 17 -279b 17 1046 17 -27b2 5 1052 17 -27b7 3 1053 17 -27ba 24 1047 17 -27de b 1049 17 -27e9 13 1047 17 -27fc 5 1052 17 -2801 3 1053 17 -2804 9 1047 17 -280d 5 1052 17 -2812 3 1053 17 -2815 2f 1049 17 -2844 13 1050 17 -2857 5 1052 17 -285c 3 1053 17 -FUNC 2860 2b 4 std::basic_string,std::allocator >::assign(wchar_t const *) -2860 1 1069 17 -2861 27 1070 17 -2888 3 1071 17 -FUNC 2890 4f 8 std::basic_string,std::allocator >::_Tidy(bool,unsigned int) -2890 0 2066 17 -2890 f 2067 17 -289f 6 2069 17 -28a5 a 2072 17 -28af 10 2073 17 -28bf a 2074 17 -28c9 13 2077 17 -28dc 3 2078 17 -FUNC 28e0 e 0 std::basic_string,std::allocator >::_Myptr() -28e0 0 2092 17 -28e0 9 2093 17 -28e9 1 2094 17 -28ea 3 2093 17 -28ed 1 2094 17 -FUNC 28f0 5 4 std::_String_val >::_String_val >(std::allocator) -28f0 2 471 17 -28f2 3 472 17 -FUNC 2900 3 0 std::allocator::allocator() -2900 2 120 19 -2902 1 122 19 -FUNC 2910 13 0 std::vector >::capacity() -2910 0 621 23 -2910 9 622 23 -2919 1 623 23 -291a 8 622 23 -2922 1 623 23 -FUNC 2930 86 c std::vector >::insert(std::_Vector_iterator >,google_breakpad::ExceptionHandler * const &) -2930 3 852 23 -2933 3e 853 23 -2971 11 854 23 -2982 2a 855 23 -29ac a 856 23 -FUNC 29c0 23 0 std::vector >::_Buy(unsigned int) -29c0 0 1066 23 -29c0 8 1070 23 -29c8 5 1071 23 -29cd a 1074 23 -29d7 3 1075 23 -29da 6 1076 23 -29e0 2 1078 23 -29e2 1 1079 23 -FUNC 29f0 1 0 std::vector >::_Destroy(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *) -29f0 0 1082 23 -29f0 1 1084 23 -FUNC 2a00 26 0 std::vector >::_Tidy() -2a00 0 1087 23 -2a00 7 1088 23 -2a07 9 1096 23 -2a10 15 1098 23 -2a25 1 1099 23 -FUNC 2a30 23 0 std::vector >::_Ufill(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &) -2a30 0 1207 23 -2a30 1f 1208 23 -2a4f 3 1209 23 -2a52 1 1210 23 -FUNC 2a60 76 0 std::vector >::_Xran() -2a60 23 1218 23 -2a83 53 1219 23 -FUNC 2ae0 3 4 std::_Vector_val >::_Vector_val >(std::allocator) -2ae0 0 412 23 -2ae0 3 413 23 -FUNC 2af0 1 0 std::allocator::allocator() -2af0 0 120 19 -2af0 1 122 19 -FUNC 2b00 21 0 std::_Vector_iterator >::_Vector_iterator >(google_breakpad::ExceptionHandler * *,std::_Container_base const *) -2b00 1e 314 23 -2b1e 3 315 23 -FUNC 2b30 32 4 std::_Vector_iterator >::operator+(int) -2b30 1 367 23 -2b31 2 368 23 -2b33 26 369 23 -2b59 9 370 23 -FUNC 2b70 2f 0 std::_Vector_iterator >::operator-(int) -2b70 1 378 23 -2b71 2 379 23 -2b73 25 380 23 -2b98 7 381 23 -FUNC 2ba0 20 0 std::_Vector_const_iterator >::operator*() -2ba0 0 92 23 -2ba0 a 103 23 -2baa f 104 23 -2bb9 3 107 23 -2bbc 1 108 23 -2bbd 2 107 23 -2bbf 1 108 23 -FUNC 2bc0 20 0 std::_Vector_const_iterator >::operator++() -2bc0 0 116 23 -2bc0 a 117 23 -2bca f 118 23 -2bd9 4 119 23 -2bdd 2 120 23 -2bdf 1 121 23 -FUNC 2be0 1d 0 std::_Vector_const_iterator >::operator==(std::_Vector_const_iterator > const &) -2be0 0 190 23 -2be0 f 195 23 -2bef d 198 23 -2bfc 1 199 23 -FUNC 2c00 c1 8 std::basic_string,std::allocator >::assign(char const *,unsigned int) -2c00 5 1056 17 -2c05 2d 1057 17 -2c32 1a 1058 17 -2c4c 4 1066 17 -2c50 25 1060 17 -2c75 c 1062 17 -2c81 f 1060 17 -2c90 8 1065 17 -2c98 3 1066 17 -2c9b e 1062 17 -2ca9 10 1063 17 -2cb9 5 1065 17 -2cbe 3 1066 17 -FUNC 2cd0 83 8 std::basic_string,std::allocator >::erase(unsigned int,unsigned int) -2cd0 1 1240 17 -2cd1 d 1241 17 -2cde 5 1242 17 -2ce3 d 1243 17 -2cf0 2 1244 17 -2cf2 4 1245 17 -2cf6 3c 1248 17 -2d32 8 1249 17 -2d3a 12 1250 17 -2d4c 4 1252 17 -2d50 3 1253 17 -FUNC 2d60 1f 4 std::basic_string,std::allocator >::_Eos(unsigned int) -2d60 0 2030 17 -2d60 14 2031 17 -2d74 3 2032 17 -2d77 5 2031 17 -2d7c 3 2032 17 -FUNC 2d80 bc 8 std::basic_string,std::allocator >::_Grow(unsigned int,bool) -2d80 1 2036 17 -2d81 c 2037 17 -2d8d 5 2038 17 -2d92 7 2039 17 -2d99 c 2040 17 -2da5 a 2046 17 -2daf 3 2047 17 -2db2 d 2041 17 -2dbf 39 2043 17 -2df8 10 2046 17 -2e08 3 2047 17 -2e0b 4 2044 17 -2e0f b 2045 17 -2e1a c 2046 17 -2e26 3 2047 17 -2e29 6 2045 17 -2e2f a 2046 17 -2e39 3 2047 17 -FUNC 2e40 e 0 std::basic_string,std::allocator >::_Myptr() -2e40 0 2087 17 -2e40 9 2088 17 -2e49 1 2089 17 -2e4a 3 2088 17 -2e4d 1 2089 17 -FUNC 2e50 5 4 std::allocator::allocator(std::allocator const &) -2e50 2 124 19 -2e52 3 126 19 -FUNC 2e60 e 8 std::allocator::deallocate(char *,unsigned int) -2e60 0 140 19 -2e60 b 141 19 -2e6b 3 142 19 -FUNC 2e70 da 8 std::basic_string,std::allocator >::assign(wchar_t const *,unsigned int) -2e70 4 1056 17 -2e74 31 1057 17 -2ea5 1d 1058 17 -2ec2 3 1066 17 -2ec5 28 1060 17 -2eed d 1062 17 -2efa 10 1060 17 -2f0a a 1065 17 -2f14 3 1066 17 -2f17 18 1062 17 -2f2f 14 1063 17 -2f43 4 1065 17 -2f47 3 1066 17 -FUNC 2f50 97 8 std::basic_string,std::allocator >::erase(unsigned int,unsigned int) -2f50 1 1240 17 -2f51 d 1241 17 -2f5e 5 1242 17 -2f63 d 1243 17 -2f70 2 1244 17 -2f72 4 1245 17 -2f76 4d 1248 17 -2fc3 8 1249 17 -2fcb 15 1250 17 -2fe0 4 1252 17 -2fe4 3 1253 17 -FUNC 2ff0 4 0 std::basic_string,std::allocator >::size() -2ff0 0 1636 17 -2ff0 3 1637 17 -2ff3 1 1638 17 -FUNC 3000 23 4 std::basic_string,std::allocator >::_Eos(unsigned int) -3000 0 2030 17 -3000 16 2031 17 -3016 3 2032 17 -3019 7 2031 17 -3020 3 2032 17 -FUNC 3030 c7 8 std::basic_string,std::allocator >::_Grow(unsigned int,bool) -3030 1 2036 17 -3031 f 2037 17 -3040 5 2038 17 -3045 7 2039 17 -304c c 2040 17 -3058 a 2046 17 -3062 3 2047 17 -3065 d 2041 17 -3072 3c 2043 17 -30ae 12 2046 17 -30c0 3 2047 17 -30c3 4 2044 17 -30c7 b 2045 17 -30d2 d 2046 17 -30df 3 2047 17 -30e2 8 2045 17 -30ea a 2046 17 -30f4 3 2047 17 -FUNC 3100 e 0 std::basic_string,std::allocator >::_Myptr() -3100 0 2087 17 -3100 9 2088 17 -3109 1 2089 17 -310a 3 2088 17 -310d 1 2089 17 -FUNC 3110 5 4 std::allocator::allocator(std::allocator const &) -3110 2 124 19 -3112 3 126 19 -FUNC 3120 e 8 std::allocator::deallocate(wchar_t *,unsigned int) -3120 0 140 19 -3120 b 141 19 -312b 3 142 19 -FUNC 3130 6 0 std::vector >::max_size() -3130 0 707 23 -3130 5 708 23 -3135 1 709 23 -FUNC 3140 208 8 std::vector >::_Insert_n(std::_Vector_iterator >,unsigned int,google_breakpad::ExceptionHandler * const &) -3140 6 1117 23 -3146 2 1125 23 -3148 1c 1126 23 -3164 1c 1130 23 -3180 5 1131 23 -3185 1b 1132 23 -31a0 23 1135 23 -31c3 17 1136 23 -31da 19 1137 23 -31f3 7 1138 23 -31fa 25 1143 23 -321f 7 1144 23 -3226 1e 1145 23 -3244 13 1152 23 -3257 4 1153 23 -325b 9 1156 23 -3264 7 1163 23 -326b a 1164 23 -3275 3 1165 23 -3278 a 1204 23 -3282 13 1167 23 -3295 17 1170 23 -32ac 1a 1174 23 -32c6 7 1180 23 -32cd 16 1187 23 -32e3 a 1204 23 -32ed 2a 1193 23 -3317 e 1200 23 -3325 19 1202 23 -333e a 1204 23 -FUNC 3350 7c 0 std::vector >::_Xlen() -3350 29 1213 23 -3379 53 1214 23 -FUNC 33d0 1 0 std::allocator::allocator(std::allocator const &) -33d0 0 124 19 -33d0 1 126 19 -FUNC 33e0 8 0 std::allocator::deallocate(google_breakpad::ExceptionHandler * *,unsigned int) -33e0 0 140 19 -33e0 7 141 19 -33e7 1 142 19 -FUNC 33f0 56 0 std::allocator::allocate(unsigned int) -33f0 3 145 19 -33f3 16 146 19 -3409 4 147 19 -340d 39 146 19 -FUNC 3450 32 4 std::_Vector_iterator >::operator+=(int) -3450 0 361 23 -3450 2c 362 23 -347c 3 363 23 -347f 3 364 23 -FUNC 3490 28 0 std::_Vector_iterator >::operator-=(int) -3490 0 373 23 -3490 27 374 23 -34b7 1 375 23 -FUNC 34c0 19 0 std::_Vector_iterator >::operator-(std::_Vector_const_iterator > const &) -34c0 0 384 23 -34c0 18 385 23 -34d8 1 386 23 -FUNC 34e0 21 0 std::_Vector_const_iterator >::_Vector_const_iterator >(google_breakpad::ExceptionHandler * *,std::_Container_base const *) -34e0 0 77 23 -34e0 19 79 23 -34f9 2 80 23 -34fb 3 81 23 -34fe 3 82 23 -FUNC 3510 19 4 std::length_error::length_error(std::length_error const &) -FUNC 3530 7 0 std::_Ranit::_Ranit() -FUNC 3540 6 0 std::basic_string,std::allocator >::max_size() -3540 0 1641 17 -3540 5 1643 17 -3545 1 1644 17 -FUNC 3550 171 8 std::basic_string,std::allocator >::_Copy(unsigned int,unsigned int) -3550 30 2000 17 -3580 8 2001 17 -3588 5 2002 17 -358d 2 2003 17 -358f 2 2004 17 -3591 1f 2005 17 -35b0 3 2006 17 -35b3 2 2009 17 -35b5 18 2010 17 -35cd 2 2019 17 -35cf 30 2010 17 -35ff 3 2012 17 -3602 19 2014 17 -361b c 2019 17 -3627 7 2021 17 -362e 20 2022 17 -364e 12 2023 17 -3660 1c 2026 17 -367c 14 2027 17 -3690 15 2016 17 -36a5 1c 2017 17 -FUNC 36d0 39 4 std::basic_string,std::allocator >::_Inside(char const *) -36d0 1 2050 17 -36d1 2b 2052 17 -36fc 3 2055 17 -36ff 4 2056 17 -3703 3 2053 17 -3706 3 2056 17 -FUNC 3710 6 0 std::basic_string,std::allocator >::max_size() -3710 0 1641 17 -3710 5 1643 17 -3715 1 1644 17 -FUNC 3720 17b 8 std::basic_string,std::allocator >::_Copy(unsigned int,unsigned int) -3720 30 2000 17 -3750 8 2001 17 -3758 8 2002 17 -3760 2 2003 17 -3762 2 2004 17 -3764 1f 2005 17 -3783 3 2006 17 -3786 2 2009 17 -3788 1b 2010 17 -37a3 2 2019 17 -37a5 30 2010 17 -37d5 3 2012 17 -37d8 19 2014 17 -37f1 c 2019 17 -37fd 7 2021 17 -3804 24 2022 17 -3828 12 2023 17 -383a 20 2026 17 -385a 14 2027 17 -386e 17 2016 17 -3885 16 2017 17 -FUNC 38a0 3a 4 std::basic_string,std::allocator >::_Inside(wchar_t const *) -38a0 1 2050 17 -38a1 2c 2052 17 -38cd 3 2055 17 -38d0 4 2056 17 -38d4 3 2053 17 -38d7 3 2056 17 -FUNC 38e0 6 0 std::allocator::max_size() -38e0 0 165 19 -38e0 5 167 19 -38e5 1 168 19 -FUNC 38f0 32 4 std::_Vector_const_iterator >::operator+=(int) -38f0 0 146 23 -38f0 a 147 23 -38fa 1a 148 23 -3914 5 150 23 -3919 3 151 23 -391c 3 152 23 -391f 3 153 23 -FUNC 3930 19 0 std::_Vector_const_iterator >::operator-(std::_Vector_const_iterator > const &) -3930 0 173 23 -3930 f 178 23 -393f 9 181 23 -3948 1 182 23 -FUNC 3950 56 4 std::allocator::allocate(unsigned int) -3950 0 145 19 -3950 16 146 19 -3966 6 147 19 -396c 3a 146 19 -FUNC 39b0 4 0 std::allocator::max_size() -39b0 0 165 19 -39b0 3 167 19 -39b3 1 168 19 -FUNC 39c0 59 4 std::allocator::allocate(unsigned int) -39c0 0 145 19 -39c0 19 146 19 -39d9 6 147 19 -39df 3a 146 19 -FUNC 3a20 6 0 std::allocator::max_size() -3a20 0 165 19 -3a20 5 167 19 -3a25 1 168 19 -FUNC 3a30 21 10 std::_Traits_helper::copy_s >(char *,unsigned int,char const *,unsigned int) -3a30 0 581 70 -3a30 20 582 70 -3a50 1 583 70 -FUNC 3a60 27 10 std::_Traits_helper::copy_s >(wchar_t *,unsigned int,wchar_t const *,unsigned int) -3a60 0 581 70 -3a60 26 582 70 -3a86 1 583 70 -FUNC 3a90 24 0 stdext::unchecked_copy(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *) -3a90 0 3407 65 -3a90 23 3409 65 -3ab3 1 3410 65 -FUNC 3ac0 1 0 std::_Destroy_range >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &) -3ac0 0 225 19 -3ac0 1 227 19 -FUNC 3ad0 15 0 stdext::unchecked_uninitialized_fill_n >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator &) -3ad0 0 914 24 -3ad0 14 916 24 -3ae4 1 917 24 -FUNC 3af0 21 10 std::_Traits_helper::move_s >(char *,unsigned int,char const *,unsigned int) -3af0 0 608 70 -3af0 20 609 70 -3b10 1 610 70 -FUNC 3b20 27 10 std::_Traits_helper::move_s >(wchar_t *,unsigned int,wchar_t const *,unsigned int) -3b20 0 608 70 -3b20 26 609 70 -3b46 1 610 70 -FUNC 3b50 22 0 std::vector >::_Umove(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *) -3b50 0 1109 23 -3b50 21 1112 23 -3b71 1 1113 23 -FUNC 3b80 10 0 std::fill(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &) -3b80 0 2976 65 -3b80 f 2977 65 -3b8f 1 2978 65 -FUNC 3b90 25 0 stdext::_Unchecked_move_backward(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *) -3b90 0 3497 65 -3b90 24 3499 65 -3bb4 1 3500 65 -FUNC 3bc0 4f 0 std::_Allocate(unsigned int,google_breakpad::ExceptionHandler * *) -3bc0 0 37 19 -3bc0 f 40 19 -3bcf 2c 41 19 -3bfb 10 44 19 -3c0b 4 45 19 -FUNC 3c10 54 8 std::_Allocate(unsigned int,char *) -3c10 0 37 19 -3c10 b 38 19 -3c1b 2 39 19 -3c1d 9 44 19 -3c26 4 45 19 -3c2a c 40 19 -3c36 2e 41 19 -FUNC 3c70 57 8 std::_Allocate(unsigned int,wchar_t *) -3c70 0 37 19 -3c70 b 38 19 -3c7b 2 39 19 -3c7d c 44 19 -3c89 4 45 19 -3c8d c 40 19 -3c99 2e 41 19 -FUNC 3cd0 19 4 std::bad_alloc::bad_alloc(std::bad_alloc const &) -FUNC 3cf0 7 0 std::_Char_traits_cat >() -3cf0 1 568 70 -3cf1 4 570 70 -3cf5 2 571 70 -FUNC 3d00 21 14 std::_Traits_helper::copy_s >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag) -3d00 0 589 70 -3d00 20 590 70 -3d20 1 591 70 -FUNC 3d30 7 0 std::_Char_traits_cat >() -3d30 1 568 70 -3d31 4 570 70 -3d35 2 571 70 -FUNC 3d40 27 14 std::_Traits_helper::copy_s >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag) -3d40 0 589 70 -3d40 26 590 70 -3d66 1 591 70 -FUNC 3d70 3 0 std::_Checked_base(google_breakpad::ExceptionHandler * * &) -3d70 0 1009 65 -3d70 2 1011 65 -3d72 1 1012 65 -FUNC 3d80 1 0 std::_Iter_random(google_breakpad::ExceptionHandler * * const &,google_breakpad::ExceptionHandler * * const &) -3d80 0 839 65 -3d80 1 844 65 -FUNC 3d90 7 0 std::_Ptr_cat(google_breakpad::ExceptionHandler * * &,google_breakpad::ExceptionHandler * * &) -3d90 1 1329 65 -3d91 4 1331 65 -3d95 2 1332 65 -FUNC 3da0 15 4 std::_Copy_opt(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag) -3da0 0 2288 65 -3da0 d 2300 65 -3dad 7 2301 65 -3db4 1 2302 65 -FUNC 3dc0 1 4 std::_Destroy_range >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &,std::_Scalar_ptr_iterator_tag) -3dc0 0 242 19 -3dc0 1 243 19 -FUNC 3dd0 15 8 std::_Uninit_fill_n >(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::allocator &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag) -3dd0 0 415 24 -3dd0 14 416 24 -3de4 1 417 24 -FUNC 3df0 21 14 std::_Traits_helper::move_s >(char *,unsigned int,char const *,unsigned int,std::_Secure_char_traits_tag) -3df0 0 616 70 -3df0 20 617 70 -3e10 1 618 70 -FUNC 3e20 27 14 std::_Traits_helper::move_s >(wchar_t *,unsigned int,wchar_t const *,unsigned int,std::_Secure_char_traits_tag) -3e20 0 616 70 -3e20 26 617 70 -3e46 1 618 70 -FUNC 3e50 22 0 stdext::_Unchecked_uninitialized_move >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &) -3e50 0 843 24 -3e50 21 845 24 -3e71 1 846 24 -FUNC 3e80 10 0 std::_Fill(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * const &) -3e80 0 2946 65 -3e80 6 2948 65 -3e86 9 2949 65 -3e8f 1 2950 65 -FUNC 3e90 7 0 std::_Move_cat(google_breakpad::ExceptionHandler * * const &) -3e90 1 1046 65 -3e91 4 1048 65 -3e95 2 1049 65 -FUNC 3ea0 25 c std::_Move_backward_opt(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Undefined_move_tag,std::_Range_checked_iterator_tag) -3ea0 0 2546 65 -3ea0 24 2548 65 -3ec4 1 2549 65 -FUNC 3ed0 3 4 std::_Checked_base(google_breakpad::ExceptionHandler * * &,std::_Unchanged_checked_iterator_base_type_tag) -3ed0 0 992 65 -3ed0 2 993 65 -3ed2 1 994 65 -FUNC 3ee0 15 0 stdext::unchecked_fill_n(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &) -3ee0 0 3523 65 -3ee0 14 3524 65 -3ef4 1 3525 65 -FUNC 3f00 22 8 std::_Uninit_move,std::_Undefined_move_tag>(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &,std::_Undefined_move_tag,std::_Range_checked_iterator_tag) -3f00 0 205 24 -3f00 21 206 24 -3f21 1 207 24 -FUNC 3f30 13 0 std::_Copy_backward_opt(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::random_access_iterator_tag,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag) -3f30 0 2492 65 -3f30 10 2506 65 -3f40 2 2507 65 -3f42 1 2508 65 -FUNC 3f50 1 0 std::_Iter_cat(google_breakpad::ExceptionHandler * * const &) -3f50 0 798 65 -3f50 1 801 65 -FUNC 3f60 15 8 std::_Fill_n(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::random_access_iterator_tag,std::_Range_checked_iterator_tag) -3f60 0 3040 65 -3f60 14 3044 65 -3f74 1 3045 65 -FUNC 3f80 22 0 stdext::unchecked_uninitialized_copy >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &) -3f80 0 803 24 -3f80 21 805 24 -3fa1 1 806 24 -FUNC 3fb0 15 4 std::_Fill_n(google_breakpad::ExceptionHandler * *,unsigned int,google_breakpad::ExceptionHandler * const &,std::_Range_checked_iterator_tag) -3fb0 0 2986 65 -3fb0 5 2987 65 -3fb5 f 2988 65 -3fc4 1 2989 65 -FUNC 3fd0 15 4 std::_Uninit_copy >(google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,google_breakpad::ExceptionHandler * *,std::allocator &,std::_Scalar_ptr_iterator_tag,std::_Range_checked_iterator_tag) -3fd0 0 144 24 -3fd0 d 150 24 -3fdd 7 151 24 -3fe4 1 152 24 -FUNC 3ff0 13 4 vswprintf -3ff0 0 50 147 -3ff0 12 51 147 -4002 1 52 147 -FUNC 4010 ae 4 google_breakpad::GUIDString::GUIDToWString(_GUID *) -4010 12 43 126 -4022 51 51 126 -4073 3a 52 126 -40ad 11 53 126 -FUNC 40c0 ae 4 google_breakpad::GUIDString::GUIDToSymbolServerWString(_GUID *) -40c0 12 56 126 -40d2 51 64 126 -4123 3a 65 126 -415d 11 66 126 -FUNC 4170 40 4 std::basic_string,std::allocator >::basic_string,std::allocator >(wchar_t const *) -4170 0 650 143 -4170 3a 652 143 -41aa 6 653 143 -FUNC 41b0 86 8 main -41b0 13 63 178 -41c3 38 64 178 -41fb 5 65 178 -4200 d 66 178 -420d 1b 67 178 -4228 e 68 178 -FUNC 4240 41 18 `anonymous namespace'::callback -4240 3 45 178 -4243 8 46 178 -424b 11 47 178 -425c 2 48 178 -425e d 49 178 -426b 11 51 178 -427c 3 53 178 -427f 2 54 178 -FUNC 4290 18 0 `anonymous namespace'::CrashFunction -4290 4 56 178 -4294 7 57 178 -429b 9 58 178 -42a4 4 59 178 -FUNC 42ae 18 4 std::invalid_argument::invalid_argument(std::basic_string,std::allocator > const &) -42ae 12 82 298 -42c0 6 83 298 -FUNC 42c6 b 0 std::invalid_argument::~invalid_argument() -42c6 6 86 298 -42cc 5 87 298 -FUNC 42d1 22 0 std::invalid_argument::`vector deleting destructor'(unsigned int) -FUNC 42f3 3f 0 std::_String_base::_Xlen() -42f3 c 12 291 -42ff 33 13 291 -FUNC 4332 3f 0 std::_String_base::_Xran() -4332 c 17 291 -433e 33 18 291 -FUNC 4371 3f 0 std::_String_base::_Xinvarg() -4371 c 22 291 -437d 33 23 291 -FUNC 43b0 18 4 std::invalid_argument::invalid_argument(std::invalid_argument const &) -FUNC 43c8 af 4 printf -43c8 c 49 1601 -43d4 2b 54 1601 -43ff 14 58 1601 -4413 3 59 1601 -4416 10 61 1601 -4426 18 63 1601 -443e 11 65 1601 -444f c 68 1601 -445b 3 72 1601 -445e 6 73 1601 -4464 13 69 1601 -FUNC 4477 16 8 _printf_l -4477 0 80 1601 -4477 15 85 1601 -448c 1 86 1601 -FUNC 448d 16 8 _printf_s_l -448d 0 94 1601 -448d 15 99 1601 -44a2 1 100 1601 -FUNC 44a3 14 4 printf_s -44a3 0 106 1601 -44a3 13 111 1601 -44b6 1 112 1601 -FUNC 44b7 16 8 _printf_p_l -44b7 0 119 1601 -44b7 15 124 1601 -44cc 1 125 1601 -FUNC 44cd 14 4 _printf_p -44cd 0 131 1601 -44cd 13 136 1601 -44e0 1 137 1601 -FUNC 44e1 25 4 _set_printf_count_output -44e1 0 154 1601 -44e1 6 155 1601 -44e7 1e 156 1601 -4505 1 158 1601 -FUNC 4506 16 0 _get_printf_count_output -4506 0 167 1601 -4506 15 168 1601 -451b 1 169 1601 -FUNC 451c f 0 __security_check_cookie -451c 0 52 4397 -451c 6 55 4397 -4522 2 56 4397 -4524 2 57 4397 -4526 5 59 4397 -FUNC 452b 62 4 _flush -452b 2 142 1704 -452d 25 152 1704 -4552 16 154 1704 -4568 7 158 1704 -456f 6 159 1704 -4575 2 161 1704 -4577 4 162 1704 -457b 4 163 1704 -457f 3 167 1704 -4582 7 168 1704 -4589 3 170 1704 -458c 1 171 1704 -FUNC 458d 42 4 _fflush_nolock -458d 1 98 1704 -458e 8 102 1704 -4596 8 103 1704 -459e 1 116 1704 -459f b 106 1704 -45aa 4 108 1704 -45ae 1 116 1704 -45af 8 112 1704 -45b7 13 113 1704 -45ca 1 116 1704 -45cb 3 115 1704 -45ce 1 116 1704 -FUNC 45cf da 4 flsall -45cf c 228 1704 -45db 5 230 1704 -45e0 3 231 1704 -45e3 8 233 1704 -45eb 3 234 1704 -45ee 11 236 1704 -45ff 14 238 1704 -4613 9 246 1704 -461c 6 248 1704 -4622 10 254 1704 -4632 5 256 1704 -4637 c 262 1704 -4643 3 266 1704 -4646 2 268 1704 -4648 a 269 1704 -4652 c 275 1704 -465e 3 276 1704 -4661 8 281 1704 -4669 3 236 1704 -466c 5 281 1704 -4671 11 282 1704 -4682 c 288 1704 -468e 4 292 1704 -4692 3 293 1704 -4695 2 292 1704 -4697 3 295 1704 -469a 6 296 1704 -46a0 9 289 1704 -FUNC 46a9 53 4 fflush -46a9 c 57 1704 -46b5 7 62 1704 -46bc 9 63 1704 -46c5 9 65 1704 -46ce 3 67 1704 -46d1 c 68 1704 -46dd c 70 1704 -46e9 3 74 1704 -46ec 6 75 1704 -46f2 a 71 1704 -FUNC 46fc 9 0 _flushall -46fc 0 193 1704 -46fc 8 194 1704 -4704 1 195 1704 -FUNC 4705 6 0 __iob_func -4705 0 53 2087 -4705 5 54 2087 -470a 1 55 2087 -FUNC 470b b1 0 __initstdio -470b 0 113 2087 -470b d 122 2087 -4718 7 123 2087 -471f 4 124 2087 -4723 7 125 2087 -472a 13 134 2087 -473d 19 137 2087 -4756 4 138 2087 -475a 1 163 2087 -475b e 145 2087 -4769 11 146 2087 -477a b 148 2087 -4785 24 151 2087 -47a9 2 158 2087 -47ab d 148 2087 -47b8 3 162 2087 -47bb 1 163 2087 -FUNC 47bc 20 0 __endstdio -47bc 0 191 2087 -47bc 5 193 2087 -47c1 9 196 2087 -47ca 5 197 2087 -47cf c 198 2087 -47db 1 199 2087 -FUNC 47dc 3c 4 _lock_file -47dc 1 221 2087 -47dd 15 226 2087 -47f2 10 231 2087 -4802 9 233 2087 -480b 1 242 2087 -480c b 241 2087 -4817 1 242 2087 -FUNC 4818 2e 8 _lock_file2 -4818 0 264 2087 -4818 9 269 2087 -4821 9 274 2087 -482a c 276 2087 -4836 1 285 2087 -4837 e 284 2087 -4845 1 285 2087 -FUNC 4846 36 4 _unlock_file -4846 0 306 2087 -4846 14 311 2087 -485a 7 317 2087 -4861 f 318 2087 -4870 1 327 2087 -4871 a 326 2087 -487b 1 327 2087 -FUNC 487c 2a 8 _unlock_file2 -487c 0 349 2087 -487c 7 354 2087 -4883 d 360 2087 -4890 a 361 2087 -489a 1 370 2087 -489b a 369 2087 -48a5 1 370 2087 -FUNC 48a6 16 4 wcslen -48a6 0 41 731 -48a6 4 42 731 -48aa a 44 731 -48b4 7 46 731 -48bb 1 47 731 -FUNC 48bc 5 4 operator delete(void *) -48bc 0 20 5184 -48bc 5 23 5184 -FUNC 48c1 30 8 _JumpToContinuation(void *,EHRegistrationNode *) -48c1 5 77 5627 -48c6 9 84 5627 -48cf 7 93 5627 -48d6 2 94 5627 -48d8 6 95 5627 -48de 3 100 5627 -48e1 3 101 5627 -48e4 3 102 5627 -48e7 3 103 5627 -48ea 2 104 5627 -48ec 5 106 5627 -FUNC 48f1 7 8 _CallMemberFunction0(void *,void *) -48f1 0 118 5627 -48f1 1 120 5627 -48f2 1 121 5627 -48f3 3 122 5627 -48f6 2 123 5627 -FUNC 48f8 7 c _CallMemberFunction1(void *,void *,void *) -48f8 0 139 5627 -48f8 1 141 5627 -48f9 1 142 5627 -48fa 3 143 5627 -48fd 2 144 5627 -FUNC 48ff 7 10 _CallMemberFunction2(void *,void *,void *,int) -48ff 0 161 5627 -48ff 1 163 5627 -4900 1 164 5627 -4901 3 165 5627 -4904 2 166 5627 -FUNC 4906 52 8 _UnwindNestedFrames(EHRegistrationNode *,EHExceptionRecord *) -4906 8 218 5627 -490e 7 232 5627 -4915 3 233 5627 -4918 7 236 5627 -491f 10 237 5627 -492f f 241 5627 -493e 7 247 5627 -4945 3 248 5627 -4948 2 249 5627 -494a 7 250 5627 -4951 7 256 5627 -FUNC 4958 36 10 __CxxFrameHandler -4958 0 287 5627 -4958 1 295 5627 -4959 2 296 5627 -495b 3 297 5627 -495e 1 298 5627 -495f 1 299 5627 -4960 1 300 5627 -4961 1 301 5627 -4962 3 306 5627 -4965 1f 311 5627 -4984 1 316 5627 -4985 1 317 5627 -4986 1 318 5627 -4987 3 319 5627 -498a 2 320 5627 -498c 1 321 5627 -498d 1 322 5627 -FUNC 498e 36 10 __CxxFrameHandler3 -498e 0 341 5627 -498e 1 349 5627 -498f 2 350 5627 -4991 3 351 5627 -4994 1 352 5627 -4995 1 353 5627 -4996 1 354 5627 -4997 1 355 5627 -4998 3 360 5627 -499b 1f 365 5627 -49ba 1 370 5627 -49bb 1 371 5627 -49bc 1 372 5627 -49bd 3 373 5627 -49c0 2 374 5627 -49c2 1 375 5627 -49c3 1 376 5627 -FUNC 49c4 36 10 __CxxFrameHandler2 -49c4 0 391 5627 -49c4 1 399 5627 -49c5 2 400 5627 -49c7 3 401 5627 -49ca 1 402 5627 -49cb 1 403 5627 -49cc 1 404 5627 -49cd 1 405 5627 -49ce 3 410 5627 -49d1 1f 415 5627 -49f0 1 420 5627 -49f1 1 421 5627 -49f2 1 422 5627 -49f3 3 423 5627 -49f6 2 424 5627 -49f8 1 425 5627 -49f9 1 426 5627 -FUNC 49fa 1a 4 __CxxLongjmpUnwind -49fa 0 443 5627 -49fa 17 449 5627 -4a11 3 452 5627 -FUNC 4a14 30 10 CatchGuardHandler -4a14 1 545 5627 -4a15 1 551 5627 -4a16 e 557 5627 -4a24 1f 567 5627 -4a43 1 572 5627 -FUNC 4a44 d5 1c _CallSETranslator(EHExceptionRecord *,EHRegistrationNode *,void *,void *,_s_FuncInfo const *,int,EHRegistrationNode *) -4a44 7 637 5627 -4a4b 9 642 5627 -4a54 5 644 5627 -4a59 3 645 5627 -4a5c 2 646 5627 -4a5e 8 648 5627 -4a66 4 656 5627 -4a6a 7 657 5627 -4a71 d 658 5627 -4a7e 6 659 5627 -4a84 6 660 5627 -4a8a 6 661 5627 -4a90 6 662 5627 -4a96 4 663 5627 -4a9a 4 664 5627 -4a9e 4 669 5627 -4aa2 3 675 5627 -4aa5 3 676 5627 -4aa8 6 681 5627 -4aae 3 682 5627 -4ab1 3 683 5627 -4ab4 6 684 5627 -4aba 7 690 5627 -4ac1 6 692 5627 -4ac7 6 693 5627 -4acd e 697 5627 -4adb e 701 5627 -4ae9 4 707 5627 -4aed 6 715 5627 -4af3 7 724 5627 -4afa 2 725 5627 -4afc 3 726 5627 -4aff 2 727 5627 -4b01 7 728 5627 -4b08 2 731 5627 -4b0a 3 737 5627 -4b0d 6 738 5627 -4b13 3 744 5627 -4b16 3 745 5627 -FUNC 4b19 9d 10 TranslatorGuardHandler -4b19 5 770 5627 -4b1e 1 776 5627 -4b1f e 782 5627 -4b2d b 784 5627 -4b38 a 786 5627 -4b42 5 790 5627 -4b47 2 792 5627 -4b49 2a 796 5627 -4b73 9 798 5627 -4b7c b 802 5627 -4b87 1b 811 5627 -4ba2 3 818 5627 -4ba5 3 819 5627 -4ba8 3 820 5627 -4bab 3 821 5627 -4bae 2 822 5627 -4bb0 3 826 5627 -4bb3 3 828 5627 -FUNC 4bb6 73 14 _GetRangeOfTrysToCheck(_s_FuncInfo const *,int,int,unsigned int *,unsigned int *) -4bb6 7 848 5627 -4bbd 6 849 5627 -4bc3 6 850 5627 -4bc9 2 851 5627 -4bcb 2 852 5627 -4bcd a 855 5627 -4bd7 1d 859 5627 -4bf4 3 860 5627 -4bf7 3 861 5627 -4bfa 3 862 5627 -4bfd 6 854 5627 -4c03 6 866 5627 -4c09 5 867 5627 -4c0e e 869 5627 -4c1c b 871 5627 -4c27 2 872 5627 -FUNC 4c29 28 8 _CreateFrameInfo -4c29 0 889 5627 -4c29 b 890 5627 -4c34 e 891 5627 -4c42 b 892 5627 -4c4d 3 893 5627 -4c50 1 894 5627 -FUNC 4c51 21 4 _IsExceptionObjectToBeDestroyed -4c51 0 907 5627 -4c51 d 910 5627 -4c5e 8 911 5627 -4c66 7 910 5627 -4c6d 1 915 5627 -4c6e 1 916 5627 -4c6f 2 912 5627 -4c71 1 916 5627 -FUNC 4c72 4c 4 _FindAndUnlinkFrame -4c72 1 926 5627 -4c73 11 927 5627 -4c84 f 928 5627 -4c93 1 944 5627 -4c94 d 931 5627 -4ca1 7 935 5627 -4ca8 9 933 5627 -4cb1 5 943 5627 -4cb6 7 936 5627 -4cbd 1 944 5627 -FUNC 4cbe 5e 14 _CallCatchBlock2(EHRegistrationNode *,_s_FuncInfo const *,void *,int,unsigned long) -4cbe 6 485 5627 -4cc4 e 493 5627 -4cd2 c 495 5627 -4cde 11 500 5627 -4cef 6 503 5627 -4cf5 3 504 5627 -4cf8 3 505 5627 -4cfb 6 506 5627 -4d01 e 512 5627 -4d0f 3 518 5627 -4d12 6 519 5627 -4d18 2 524 5627 -4d1a 2 525 5627 -FUNC 4d1c 4a 8 _CxxThrowException -4d1c 6 95 5939 -4d22 15 117 5939 -4d37 3 118 5939 -4d3a 9 134 5939 -4d43 5 136 5939 -4d48 7 138 5939 -4d4f 13 159 5939 -4d62 4 161 5939 -FUNC 4d66 19 0 std::bad_alloc::bad_alloc() -4d66 15 382 5121 -4d7b 4 383 5121 -FUNC 4d7f 6a 4 operator new(unsigned int) -4d7f 6 57 5123 -4d85 2 59 5123 -4d87 d 60 5123 -4d94 d 59 5123 -4da1 2 67 5123 -4da3 27 62 5123 -4dca 1f 63 5123 -FUNC 4de9 f 4 type_info::name(__type_info_node *) -4de9 0 44 5873 -4de9 c 45 5873 -4df5 3 46 5873 -FUNC 4df8 e 0 type_info::~type_info() -4df8 0 49 5873 -4df8 d 50 5873 -4e05 1 51 5873 -FUNC 4e06 1c 0 type_info::`scalar deleting destructor'(unsigned int) -FUNC 4e22 f 4 type_info::_name_internal_method(__type_info_node *) -4e22 0 54 5873 -4e22 c 55 5873 -4e2e 3 56 5873 -FUNC 4e31 8 0 type_info::_type_info_dtor_internal_method() -4e31 0 59 5873 -4e31 7 60 5873 -4e38 1 61 5873 -FUNC 4e39 1b 4 type_info::operator==(type_info const &) -4e39 0 89 5873 -4e39 18 90 5873 -4e51 3 91 5873 -FUNC 4e54 1c 4 type_info::operator!=(type_info const &) -4e54 0 98 5873 -4e54 19 99 5873 -4e6d 3 100 5873 -FUNC 4e70 1f 4 type_info::before(type_info const &) -4e70 0 103 5873 -4e70 1c 104 5873 -4e8c 3 105 5873 -FUNC 4e8f 4 0 type_info::raw_name() -4e8f 0 108 5873 -4e8f 3 109 5873 -4e92 1 110 5873 -FUNC 4e93 b 4 type_info::type_info(type_info const &) -4e93 8 113 5873 -4e9b 3 123 5873 -FUNC 4e9e 5 4 type_info::operator=(type_info const &) -4e9e 2 127 5873 -4ea0 3 135 5873 -FUNC 4ea3 11 0 std::exception::exception() -4ea3 2 68 5916 -4ea5 4 69 5916 -4ea9 a 70 5916 -4eb3 1 71 5916 -FUNC 4eb4 4e 4 std::exception::exception(char const * const &) -4eb4 1 77 5916 -4eb5 14 78 5916 -4ec9 9 80 5916 -4ed2 6 81 5916 -4ed8 9 82 5916 -4ee1 c 84 5916 -4eed 2 87 5916 -4eef 4 89 5916 -4ef3 7 91 5916 -4efa 8 92 5916 -FUNC 4f02 18 8 std::exception::exception(char const * const &,int) -4f02 2 98 5916 -4f04 c 99 5916 -4f10 7 100 5916 -4f17 3 101 5916 -FUNC 4f1a 58 4 std::exception::exception(std::exception const &) -4f1a 1 107 5916 -4f1b 13 108 5916 -4f2e 2 109 5916 -4f30 a 111 5916 -4f3a 9 113 5916 -4f43 6 114 5916 -4f49 9 115 5916 -4f52 d 117 5916 -4f5f 2 120 5916 -4f61 4 122 5916 -4f65 2 125 5916 -4f67 4 126 5916 -4f6b 7 127 5916 -FUNC 4f72 56 4 std::exception::operator=(std::exception const &) -4f72 1 133 5916 -4f73 c 134 5916 -4f7f 6 136 5916 -4f85 2 137 5916 -4f87 9 139 5916 -4f90 9 141 5916 -4f99 6 144 5916 -4f9f 9 146 5916 -4fa8 d 148 5916 -4fb5 2 151 5916 -4fb7 4 153 5916 -4fbb 2 156 5916 -4fbd 3 157 5916 -4fc0 5 159 5916 -4fc5 3 160 5916 -FUNC 4fc8 16 0 std::exception::~exception() -4fc8 0 167 5916 -4fc8 c 168 5916 -4fd4 9 169 5916 -4fdd 1 170 5916 -FUNC 4fde d 0 std::exception::what() -4fde 0 180 5916 -4fde 5 181 5916 -4fe3 2 182 5916 -4fe5 5 184 5916 -4fea 1 185 5916 -FUNC 4feb 19 4 std::bad_cast::bad_cast(char const *) -4feb 13 194 5916 -4ffe 6 195 5916 -FUNC 5004 18 4 std::bad_cast::bad_cast(std::bad_cast const &) -5004 12 199 5916 -5016 6 200 5916 -FUNC 501c b 0 std::bad_cast::~bad_cast() -501c 6 203 5916 -5022 5 204 5916 -FUNC 5027 19 4 std::bad_typeid::bad_typeid(char const *) -5027 13 229 5916 -503a 6 230 5916 -FUNC 5040 18 4 std::bad_typeid::bad_typeid(std::bad_typeid const &) -5040 12 234 5916 -5052 6 235 5916 -FUNC 5058 b 0 std::bad_typeid::~bad_typeid() -5058 6 238 5916 -505e 5 239 5916 -FUNC 5063 18 4 std::__non_rtti_object::__non_rtti_object(char const *) -5063 12 248 5916 -5075 6 249 5916 -FUNC 507b 18 4 std::__non_rtti_object::__non_rtti_object(std::__non_rtti_object const &) -507b 12 253 5916 -508d 6 254 5916 -FUNC 5093 b 0 std::__non_rtti_object::~__non_rtti_object() -5093 0 257 5916 -5093 b 258 5916 -FUNC 509e 1c 0 std::exception::`vector deleting destructor'(unsigned int) -FUNC 50ba 22 0 std::bad_cast::`vector deleting destructor'(unsigned int) -FUNC 50dc 22 0 std::bad_typeid::`scalar deleting destructor'(unsigned int) -FUNC 50fe 22 0 std::__non_rtti_object::`scalar deleting destructor'(unsigned int) -FUNC 5120 7b 10 memcpy_s -5120 4 47 1002 -5124 a 48 1002 -512e 4 51 1002 -5132 20 55 1002 -5152 a 56 1002 -515c f 67 1002 -516b 2 68 1002 -516d f 59 1002 -517c 5 61 1002 -5181 13 62 1002 -5194 5 64 1002 -5199 2 69 1002 -FUNC 519b 5b 10 memmove_s -519b 3 46 955 -519e 9 47 955 -51a7 2 50 955 -51a9 20 54 955 -51c9 5 55 955 -51ce 13 56 955 -51e1 f 58 955 -51f0 4 59 955 -51f4 2 60 955 -FUNC 51f6 a 4 _set_osplatform -51f6 a 385 2595 -FUNC 5200 a 4 _set_osver -5200 a 386 2595 -FUNC 520a a 4 _set_winver -520a a 387 2595 -FUNC 5214 a 4 _set_winmajor -5214 a 388 2595 -FUNC 521e a 4 _set_winminor -521e a 389 2595 -FUNC 5228 24 4 fast_error_exit -5228 0 375 2608 -5228 9 384 2608 -5231 5 386 2608 -5236 9 388 2608 -523f c 389 2608 -524b 1 390 2608 -FUNC 524c 41 0 check_managed_app -524c 0 413 2608 -524c b 418 2608 -5257 5 422 2608 -525c a 424 2608 -5266 2 425 2608 -5268 9 427 2608 -5271 2 428 2608 -5273 7 433 2608 -527a 2 434 2608 -527c d 437 2608 -5289 1 438 2608 -528a 2 419 2608 -528c 1 438 2608 -FUNC 528d 1b6 0 __tmainCRTStartup -528d c 203 2608 -5299 19 233 2608 -52b2 4 234 2608 -52b6 8 235 2608 -52be a 236 2608 -52c8 2 242 2608 -52ca 7 243 2608 -52d1 3 244 2608 -52d4 4 243 2608 -52d8 9 244 2608 -52e1 2 245 2608 -52e3 6 248 2608 -52e9 6 249 2608 -52ef 6 250 2608 -52f5 9 256 2608 -52fe 9 257 2608 -5307 8 258 2608 -530f 6 259 2608 -5315 d 260 2608 -5322 6 262 2608 -5328 5 263 2608 -532d 6 264 2608 -5333 6 265 2608 -5339 6 266 2608 -533f 8 271 2608 -5347 c 273 2608 -5353 8 274 2608 -535b 9 276 2608 -5364 8 277 2608 -536c 5 286 2608 -5371 4 294 2608 -5375 9 296 2608 -537e 8 297 2608 -5386 b 300 2608 -5391 a 303 2608 -539b 9 305 2608 -53a4 8 306 2608 -53ac 9 307 2608 -53b5 8 308 2608 -53bd 8 310 2608 -53c5 4 311 2608 -53c9 7 312 2608 -53d0 a 326 2608 -53da 18 327 2608 -53f2 6 330 2608 -53f8 6 331 2608 -53fe 5 333 2608 -5403 2 335 2608 -5405 17 336 2608 -541c 6 342 2608 -5422 6 344 2608 -5428 6 345 2608 -542e 5 347 2608 -5433 7 349 2608 -543a 3 351 2608 -543d 6 352 2608 -FUNC 5443 a 0 mainCRTStartup -5443 0 186 2608 -5443 5 193 2608 -5448 5 195 2608 -FUNC 544d a 4 _initp_misc_invarg -544d 0 38 3328 -544d 9 39 3328 -5456 1 40 3328 -FUNC 5457 fc 14 _invoke_watson -5457 1c 111 3328 -5473 6 128 3328 -5479 6 129 3328 -547f 6 130 3328 -5485 3 131 3328 -5488 3 132 3328 -548b 3 133 3328 -548e 7 134 3328 -5495 7 135 3328 -549c 4 136 3328 -54a0 4 137 3328 -54a4 4 138 3328 -54a8 4 139 3328 -54ac 1 140 3328 -54ad 6 141 3328 -54b3 6 147 3328 -54b9 19 148 3328 -54d2 3 150 3328 -54d5 13 163 3328 -54e8 6 168 3328 -54ee 13 169 3328 -5501 6 171 3328 -5507 a 174 3328 -5511 a 176 3328 -551b 8 180 3328 -5523 8 181 3328 -552b 12 184 3328 -553d 16 185 3328 -FUNC 5553 22 4 _set_invalid_parameter_handler -5553 1 207 3328 -5554 b 211 3328 -555f d 212 3328 -556c 5 214 3328 -5571 3 216 3328 -5574 1 217 3328 -FUNC 5575 d 0 _get_invalid_parameter_handler -5575 0 221 3328 -5575 c 225 3328 -5581 1 228 3328 -FUNC 5582 9 14 _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int) -5582 3 266 3328 -5585 1 274 3328 -5586 5 273 3328 -FUNC 558b 24 14 _invalid_parameter -558b 3 70 3328 -558e b 77 3328 -5599 5 78 3328 -559e 1 89 3328 -559f 2 80 3328 -55a1 8 86 3328 -55a9 1 89 3328 -55aa 5 88 3328 -FUNC 55af 10 0 _invalid_parameter_noinfo -55af 0 98 3328 -55af f 99 3328 -55be 1 100 3328 -FUNC 55bf 9 14 _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int) -55bf 3 249 3328 -55c2 1 257 3328 -55c3 5 256 3328 -FUNC 55c8 96 8 _swprintf -55c8 7 122 1564 -55cf 24 128 1564 -55f3 8 133 1564 -55fb 6 138 1564 -5601 22 153 1564 -5623 1d 160 1564 -5640 18 161 1564 -5658 4 163 1564 -565c 2 171 1564 -FUNC 565e 1a c __swprintf_l -565e 0 181 1564 -565e 19 186 1564 -5677 1 188 1564 -FUNC 5678 1c c swprintf_s -5678 0 238 1564 -5678 1b 243 1564 -5693 1 244 1564 -FUNC 5694 1f 10 _snwprintf_s -5694 3 253 1564 -5697 1a 258 1564 -56b1 2 259 1564 -FUNC 56b3 1c c _swprintf_p -56b3 0 267 1564 -56b3 1b 272 1564 -56ce 1 273 1564 -FUNC 56cf 1d 10 _swprintf_s_l -56cf 3 282 1564 -56d2 18 287 1564 -56ea 2 288 1564 -FUNC 56ec 20 14 _snwprintf_s_l -56ec 3 298 1564 -56ef 1b 303 1564 -570a 2 304 1564 -FUNC 570c 1d 10 _swprintf_p_l -570c 3 313 1564 -570f 18 318 1564 -5727 2 319 1564 -FUNC 5729 11 4 _scwprintf -5729 0 347 1564 -5729 10 352 1564 -5739 1 353 1564 -FUNC 573a 11 4 _scwprintf_p -573a 0 359 1564 -573a 10 364 1564 -574a 1 365 1564 -FUNC 574b 16 8 _scwprintf_l -574b 0 372 1564 -574b 15 376 1564 -5760 1 377 1564 -FUNC 5761 16 8 _scwprintf_p_l -5761 0 384 1564 -5761 15 389 1564 -5776 1 390 1564 -FUNC 5777 14f 8 fprintf -5777 c 49 1648 -5783 5 53 1648 -5788 2e 55 1648 -57b6 c 56 1648 -57c2 3 61 1648 -57c5 7 63 1648 -57cc 3 64 1648 -57cf b0 66 1648 -587f 5 67 1648 -5884 8 69 1648 -588c 11 70 1648 -589d a 71 1648 -58a7 c 75 1648 -58b3 3 79 1648 -58b6 6 80 1648 -58bc a 76 1648 -FUNC 58c6 1a c _fprintf_l -58c6 0 88 1648 -58c6 19 93 1648 -58df 1 94 1648 -FUNC 58e0 1a c _fprintf_s_l -58e0 0 102 1648 -58e0 19 107 1648 -58f9 1 108 1648 -FUNC 58fa 18 8 fprintf_s -58fa 0 115 1648 -58fa 17 120 1648 -5911 1 121 1648 -FUNC 5912 1a c _fprintf_p_l -5912 0 129 1648 -5912 19 134 1648 -592b 1 135 1648 -FUNC 592c 18 8 _fprintf_p -592c 0 142 1648 -592c 17 147 1648 -5943 1 148 1648 -FUNC 5944 f6 18 _vswprintf_helper -5944 7 125 1380 -594b 28 130 1380 -5973 2f 133 1380 -59a2 15 143 1380 -59b7 7 146 1380 -59be 2 148 1380 -59c0 6 150 1380 -59c6 13 157 1380 -59d9 5 160 1380 -59de 2 162 1380 -59e0 41 171 1380 -5a21 5 172 1380 -5a26 12 175 1380 -5a38 2 183 1380 -FUNC 5a3a 27 10 _vswprintf_c -5a3a 0 241 1380 -5a3a 1f 242 1380 -5a59 7 243 1380 -5a60 1 244 1380 -FUNC 5a61 28 14 _vswprintf_c_l -5a61 3 253 1380 -5a64 1c 254 1380 -5a80 7 255 1380 -5a87 2 256 1380 -FUNC 5a89 87 14 _vswprintf_s_l -5a89 4 265 1380 -5a8d 25 269 1380 -5ab2 19 270 1380 -5acb 1a 272 1380 -5ae5 4 273 1380 -5ae9 3 275 1380 -5aec 5 278 1380 -5af1 1d 280 1380 -5b0e 2 288 1380 -FUNC 5b10 1b 10 vswprintf_s -5b10 0 296 1380 -5b10 1a 297 1380 -5b2a 1 298 1380 -FUNC 5b2b 107 18 _vsnwprintf_s_l -5b2b 5 308 1380 -5b30 27 313 1380 -5b57 13 314 1380 -5b6a 7 317 1380 -5b71 1b 319 1380 -5b8c 8 323 1380 -5b94 20 324 1380 -5bb4 5 325 1380 -5bb9 a 329 1380 -5bc3 7 331 1380 -5bca 2 333 1380 -5bcc 2 338 1380 -5bce 12 339 1380 -5be0 10 342 1380 -5bf0 a 344 1380 -5bfa a 346 1380 -5c04 2 348 1380 -5c06 4 352 1380 -5c0a 8 356 1380 -5c12 18 358 1380 -5c2a 6 360 1380 -5c30 2 366 1380 -FUNC 5c32 1e 14 _vsnwprintf_s -5c32 3 375 1380 -5c35 19 376 1380 -5c4e 2 377 1380 -FUNC 5c50 27 10 _vswprintf_p -5c50 0 385 1380 -5c50 1f 386 1380 -5c6f 7 387 1380 -5c76 1 388 1380 -FUNC 5c77 28 14 _vswprintf_p_l -5c77 3 397 1380 -5c7a 1c 398 1380 -5c96 7 399 1380 -5c9d 2 400 1380 -FUNC 5c9f 24 4 _amsg_exit -5c9f 0 446 2560 -5c9f 5 449 2560 -5ca4 9 450 2560 -5cad b 451 2560 -5cb8 a 452 2560 -5cc2 1 453 2560 -FUNC 5cc3 26 4 __crtCorExitProcess -5cc3 0 650 2560 -5cc3 b 654 2560 -5cce 4 655 2560 -5cd2 c 656 2560 -5cde 4 657 2560 -5ce2 6 658 2560 -5ce8 1 668 2560 -FUNC 5ce9 15 4 __crtExitProcess -5ce9 0 673 2560 -5ce9 a 674 2560 -5cf3 b 683 2560 -FUNC 5cfe 9 0 _lockexit -5cfe 0 733 2560 -5cfe 8 734 2560 -5d06 1 735 2560 -FUNC 5d07 9 0 _unlockexit -5d07 0 759 2560 -5d07 8 760 2560 -5d0f 1 761 2560 -FUNC 5d10 18 4 _initterm -5d10 3 841 2560 -5d13 2 855 2560 -5d15 6 853 2560 -5d1b 2 854 2560 -5d1d 3 855 2560 -5d20 7 848 2560 -5d27 1 857 2560 -FUNC 5d28 20 8 _initterm_e -5d28 1 890 2560 -5d29 c 899 2560 -5d35 6 904 2560 -5d3b 2 905 2560 -5d3d 3 906 2560 -5d40 7 899 2560 -5d47 1 910 2560 -FUNC 5d48 37 4 _get_osplatform -5d48 0 929 2560 -5d48 27 931 2560 -5d6f 1 939 2560 -5d70 9 934 2560 -5d79 2 936 2560 -5d7b 3 938 2560 -5d7e 1 939 2560 -FUNC 5d7f 3c 4 _get_osver -5d7f 0 958 2560 -5d7f 27 960 2560 -5da6 1 968 2560 -5da7 8 963 2560 -5daf 8 965 2560 -5db7 3 967 2560 -5dba 1 968 2560 -FUNC 5dbb 3c 4 _get_winver -5dbb 0 987 2560 -5dbb 27 989 2560 -5de2 1 997 2560 -5de3 8 992 2560 -5deb 8 994 2560 -5df3 3 996 2560 -5df6 1 997 2560 -FUNC 5df7 3c 4 _get_winmajor -5df7 0 1016 2560 -5df7 27 1018 2560 -5e1e 1 1026 2560 -5e1f 8 1021 2560 -5e27 8 1023 2560 -5e2f 3 1025 2560 -5e32 1 1026 2560 -FUNC 5e33 3c 4 _get_winminor -5e33 0 1045 2560 -5e33 27 1047 2560 -5e5a 1 1055 2560 -5e5b 8 1050 2560 -5e63 8 1052 2560 -5e6b 3 1054 2560 -5e6e 1 1055 2560 -FUNC 5e6f 37 4 _get_wpgmptr -5e6f 0 1074 2560 -5e6f 27 1076 2560 -5e96 1 1085 2560 -5e97 9 1080 2560 -5ea0 2 1082 2560 -5ea2 3 1084 2560 -5ea5 1 1085 2560 -FUNC 5ea6 37 4 _get_pgmptr -5ea6 0 1104 2560 -5ea6 27 1106 2560 -5ecd 1 1115 2560 -5ece 9 1110 2560 -5ed7 2 1112 2560 -5ed9 3 1114 2560 -5edc 1 1115 2560 -FUNC 5edd 92 4 _cinit -5edd 0 263 2560 -5edd 18 273 2560 -5ef5 b 275 2560 -5f00 5 277 2560 -5f05 f 283 2560 -5f14 4 284 2560 -5f18 4 285 2560 -5f1c a 288 2560 -5f26 20 293 2560 -5f46 1a 306 2560 -5f60 c 308 2560 -5f6c 2 312 2560 -5f6e 1 313 2560 -FUNC 5f6f e2 c doexit -5f6f c 499 2560 -5f7b 8 517 2560 -5f83 5 518 2560 -5f88 b 520 2560 -5f93 6 521 2560 -5f99 8 524 2560 -5fa1 5 526 2560 -5fa6 e 542 2560 -5fb4 12 543 2560 -5fc6 5 545 2560 -5fcb b 546 2560 -5fd6 10 551 2560 -5fe6 9 552 2560 -5fef 2 553 2560 -5ff1 10 558 2560 -6001 10 566 2560 -6011 c 584 2560 -601d 6 588 2560 -6023 6 592 2560 -6029 8 594 2560 -6031 8 596 2560 -6039 3 584 2560 -603c 6 585 2560 -6042 9 586 2560 -604b 6 597 2560 -FUNC 6051 11 4 exit -6051 0 397 2560 -6051 10 398 2560 -6061 1 399 2560 -FUNC 6062 11 4 _exit -6062 0 405 2560 -6062 10 406 2560 -6072 1 407 2560 -FUNC 6073 f 0 _cexit -6073 0 412 2560 -6073 e 413 2560 -6081 1 414 2560 -FUNC 6082 f 0 _c_exit -6082 0 419 2560 -6082 e 420 2560 -6090 1 421 2560 -FUNC 6091 4c 0 _init_pointers -6091 1 786 2560 -6092 7 787 2560 -6099 6 789 2560 -609f 6 790 2560 -60a5 6 791 2560 -60ab 6 792 2560 -60b1 6 793 2560 -60b7 6 794 2560 -60bd 6 795 2560 -60c3 6 796 2560 -60c9 13 799 2560 -60dc 1 800 2560 -FUNC 60e0 8b 4 strlen -60e0 0 54 880 -60e0 4 63 880 -60e4 6 64 880 -60ea 2 65 880 -60ec 2 69 880 -60ee 3 70 880 -60f1 2 71 880 -60f3 2 72 880 -60f5 6 73 880 -60fb 2 74 880 -60fd 13 76 880 -6110 2 81 880 -6112 5 82 880 -6117 2 83 880 -6119 3 84 880 -611c 2 85 880 -611e 3 86 880 -6121 5 87 880 -6126 2 88 880 -6128 3 90 880 -612b 2 91 880 -612d 2 92 880 -612f 2 93 880 -6131 2 94 880 -6133 5 95 880 -6138 2 96 880 -613a 5 97 880 -613f 2 98 880 -6141 2 99 880 -6143 3 103 880 -6146 4 104 880 -614a 2 105 880 -614c 1 106 880 -614d 3 108 880 -6150 4 109 880 -6154 2 110 880 -6156 1 111 880 -6157 3 113 880 -615a 4 114 880 -615e 2 115 880 -6160 1 116 880 -6161 3 118 880 -6164 4 119 880 -6168 2 120 880 -616a 1 121 880 -FUNC 616b 33 4 _EH_prolog3 -616b 0 93 5671 -616b 1 101 5671 -616c 7 103 5671 -6173 4 112 5671 -6177 4 113 5671 -617b 1 114 5671 -617c 1 115 5671 -617d 1 116 5671 -617e 2 117 5671 -6180 2 118 5671 -6182 5 131 5671 -6187 2 132 5671 -6189 1 133 5671 -618a 3 134 5671 -618d 7 135 5671 -6194 3 150 5671 -6197 6 151 5671 -619d 1 153 5671 -FUNC 619e 36 4 _EH_prolog3_catch -619e 0 206 5671 -619e 1 214 5671 -619f 7 216 5671 -61a6 4 225 5671 -61aa 4 226 5671 -61ae 1 228 5671 -61af 1 229 5671 -61b0 1 230 5671 -61b1 2 231 5671 -61b3 2 232 5671 -61b5 5 246 5671 -61ba 2 247 5671 -61bc 1 248 5671 -61bd 3 249 5671 -61c0 3 250 5671 -61c3 7 251 5671 -61ca 3 267 5671 -61cd 6 268 5671 -61d3 1 270 5671 -FUNC 61d4 36 4 _EH_prolog3_GS -61d4 0 322 5671 -61d4 1 330 5671 -61d5 7 332 5671 -61dc 4 341 5671 -61e0 4 342 5671 -61e4 1 344 5671 -61e5 1 345 5671 -61e6 1 346 5671 -61e7 2 347 5671 -61e9 2 348 5671 -61eb 5 362 5671 -61f0 2 363 5671 -61f2 1 364 5671 -61f3 3 365 5671 -61f6 3 366 5671 -61f9 7 367 5671 -6200 3 384 5671 -6203 6 385 5671 -6209 1 387 5671 -FUNC 620a 39 4 _EH_prolog3_catch_GS -620a 0 441 5671 -620a 1 449 5671 -620b 7 451 5671 -6212 4 460 5671 -6216 4 461 5671 -621a 1 463 5671 -621b 1 464 5671 -621c 1 465 5671 -621d 2 466 5671 -621f 2 467 5671 -6221 5 482 5671 -6226 2 483 5671 -6228 1 484 5671 -6229 3 485 5671 -622c 3 486 5671 -622f 3 487 5671 -6232 7 488 5671 -6239 3 505 5671 -623c 6 506 5671 -6242 1 508 5671 -FUNC 6243 14 0 _EH_epilog3 -6243 0 534 5671 -6243 3 537 5671 -6246 7 538 5671 -624d 1 539 5671 -624e 1 540 5671 -624f 1 541 5671 -6250 1 542 5671 -6251 1 543 5671 -6252 2 544 5671 -6254 1 545 5671 -6255 1 546 5671 -6256 1 547 5671 -FUNC 6257 f 0 _EH_epilog3_GS -6257 0 575 5671 -6257 3 578 5671 -625a 2 579 5671 -625c 5 580 5671 -6261 5 581 5671 -FUNC 6266 f 0 _EH_epilog3_catch_GS -6266 0 609 5671 -6266 3 612 5671 -6269 2 613 5671 -626b 5 614 5671 -6270 5 615 5671 -FUNC 6275 96 4 _stbuf -6275 1 59 1850 -6276 14 69 1850 -628a 2 70 1850 -628c c 73 1850 -6298 4 74 1850 -629c c 75 1850 -62a8 3 76 1850 -62ab 6 82 1850 -62b1 6 86 1850 -62b7 4 87 1850 -62bb 1e 91 1850 -62d9 3 93 1850 -62dc e 94 1850 -62ea 2 96 1850 -62ec 7 98 1850 -62f3 6 99 1850 -62f9 8 102 1850 -6301 5 104 1850 -6306 1 105 1850 -6307 3 78 1850 -630a 1 105 1850 -FUNC 630b 2f 8 _ftbuf -630b 0 138 1850 -630b 8 146 1850 -6313 c 148 1850 -631f 6 151 1850 -6325 7 152 1850 -632c 4 153 1850 -6330 9 154 1850 -6339 1 166 1850 -FUNC 633a 82 4 _LocaleUpdate::_LocaleUpdate(localeinfo_struct *) -633a 0 261 1343 -633a f 262 1343 -6349 8 264 1343 -6351 5 265 1343 -6356 6 266 1343 -635c 1c 268 1343 -6378 21 269 1343 -6399 9 270 1343 -63a2 4 272 1343 -63a6 4 273 1343 -63aa 2 276 1343 -63ac a 278 1343 -63b6 6 280 1343 -FUNC 63bc e 0 _LocaleUpdate::~_LocaleUpdate() -63bc 0 282 1343 -63bc 6 283 1343 -63c2 7 284 1343 -63c9 1 285 1343 -FUNC 63ca 3 0 _LocaleUpdate::GetLocaleT() -63ca 2 287 1343 -63cc 1 289 1343 -FUNC 63cd 33 0 write_char -63cd 0 2433 1312 -63cd a 2434 1312 -63d7 2 2437 1312 -63d9 21 2442 1312 -63fa 2 2444 1312 -63fc 1 2447 1312 -63fd 2 2446 1312 -63ff 1 2447 1312 -FUNC 6400 24 c write_multi_char -6400 6 2498 1312 -6406 2 2501 1312 -6408 e 2500 1312 -6416 5 2501 1312 -641b 7 2499 1312 -6422 2 2504 1312 -FUNC 6424 4a 4 write_string -6424 0 2563 1312 -6424 12 2564 1312 -6436 6 2566 1312 -643c 2 2567 1312 -643e e 2570 1312 -644c 5 2571 1312 -6451 a 2573 1312 -645b 9 2574 1312 -6464 9 2569 1312 -646d 1 2579 1312 -FUNC 646e d 4 get_int_arg -646e 0 2602 1312 -646e c 2603 1312 -647a 1 2604 1312 -FUNC 647b 10 4 get_int64_arg -647b 0 2644 1312 -647b f 2645 1312 -648a 1 2646 1312 -FUNC 648b e 4 get_short_arg -648b 0 2671 1312 -648b d 2672 1312 -6498 1 2673 1312 -FUNC 6499 994 10 _output_l -6499 1b 975 1312 -64b4 45 1036 1312 -64f9 2d 1031 1312 -6526 b1 1033 1312 -65d7 8 1036 1312 -65df 26 1073 1312 -6605 1d 1075 1312 -6622 8 1076 1312 -662a 18 1131 1312 -6642 13 1173 1312 -6655 3 1174 1312 -6658 5 1175 1312 -665d 1f 1179 1312 -667c 4 1193 1312 -6680 5 1194 1312 -6685 4 1181 1312 -6689 5 1182 1312 -668e 4 1184 1312 -6692 5 1185 1312 -6697 7 1190 1312 -669e 5 1191 1312 -66a3 4 1187 1312 -66a7 5 1196 1312 -66ac 5 1200 1312 -66b1 9 1206 1312 -66ba b 1233 1312 -66c5 4 1235 1312 -66c9 3 1236 1312 -66cc 5 1239 1312 -66d1 10 1241 1312 -66e1 5 1243 1312 -66e6 3 1248 1312 -66e9 5 1249 1312 -66ee 5 1253 1312 -66f3 9 1259 1312 -66fc b 1284 1312 -6707 4 1285 1312 -670b 5 1287 1312 -6710 10 1289 1312 -6720 5 1291 1312 -6725 18 1295 1312 -673d 7 1362 1312 -6744 5 1363 1312 -6749 5 1301 1312 -674e 1 1303 1312 -674f a 1304 1312 -6759 5 1306 1312 -675e 4 1308 1312 -6762 5 1310 1312 -6767 4 1358 1312 -676b 5 1359 1312 -6770 c 1322 1312 -677c 2 1324 1312 -677e f 1325 1312 -678d a 1327 1312 -6797 2 1329 1312 -6799 a 1330 1312 -67a3 5 1332 1312 -67a8 30 1337 1312 -67d8 3 1352 1312 -67db 13 1158 1312 -67ee 11 1160 1312 -67ff 3 1161 1312 -6802 b 1163 1312 -680d b 1166 1312 -6818 5 1167 1312 -681d 32 1378 1312 -684f d 1716 1312 -685c 4 1724 1312 -6860 17 1749 1312 -6877 c 1750 1312 -6883 8 1381 1312 -688b 9 1385 1312 -6894 8 1561 1312 -689c 7 1562 1312 -68a3 d 1584 1312 -68b0 3 1589 1312 -68b3 15 1635 1312 -68c8 4 1636 1312 -68cc 8 1637 1312 -68d4 f 1639 1312 -68e3 1d 1378 1312 -6900 12 1448 1312 -6912 16 1467 1312 -6928 4 1470 1312 -692c 7 1471 1312 -6933 2 1472 1312 -6935 6 1499 1312 -693b 7 1500 1312 -6942 6 1503 1312 -6948 5 1506 1312 -694d 5 1523 1312 -6952 e 1541 1312 -6960 6 1546 1312 -6966 d 1548 1312 -6973 7 1549 1312 -697a 5 1550 1312 -697f 3 1551 1312 -6982 5 1553 1312 -6987 8 1543 1312 -698f 7 1544 1312 -6996 5 1557 1312 -699b 34 1378 1312 -69cf d 1908 1312 -69dc 9 1910 1312 -69e5 8 1668 1312 -69ed d 1688 1312 -69fa 6 1702 1312 -6a00 7 1703 1312 -6a07 2 1704 1312 -6a09 5 1706 1312 -6a0e 7 1708 1312 -6a15 5 1710 1312 -6a1a 4 1864 1312 -6a1e 7 1869 1312 -6a25 c 1933 1312 -6a31 8 1939 1312 -6a39 5 1958 1312 -6a3e 7 1751 1312 -6a45 9 1752 1312 -6a4e 5 1753 1312 -6a53 3 1754 1312 -6a56 9 1756 1312 -6a5f f 1759 1312 -6a6e 2 1760 1312 -6a70 13 1765 1312 -6a83 9 1767 1312 -6a8c e 1809 1312 -6a9a 27 1828 1312 -6ac1 13 1838 1312 -6ad4 15 1840 1312 -6ae9 a 1844 1312 -6af3 15 1846 1312 -6b08 5 1852 1312 -6b0d 7 1853 1312 -6b14 4 1854 1312 -6b18 1 1857 1312 -6b19 5 1859 1312 -6b1e 7 1877 1312 -6b25 3 1887 1312 -6b28 2 1888 1312 -6b2a 1a 1378 1312 -6b44 7 1892 1312 -6b4b 11 1897 1312 -6b5c c 1900 1312 -6b68 7 1901 1312 -6b6f 5 1903 1312 -6b74 5 1961 1312 -6b79 6 1987 1312 -6b7f 14 2026 1312 -6b93 2 2045 1312 -6b95 5 2051 1312 -6b9a 2 2071 1312 -6b9c 3 2074 1312 -6b9f 6 2080 1312 -6ba5 2 2099 1312 -6ba7 5 2105 1312 -6bac f 2128 1312 -6bbb 7 2129 1312 -6bc2 7 2130 1312 -6bc9 c 2136 1312 -6bd5 2 2142 1312 -6bd7 6 2148 1312 -6bdd 7 2149 1312 -6be4 2 2150 1312 -6be6 4 2151 1312 -6bea a 2152 1312 -6bf4 3 2153 1312 -6bf7 6 2157 1312 -6bfd 3 2158 1312 -6c00 6 2163 1312 -6c06 10 2165 1312 -6c16 10 2166 1312 -6c26 c 2168 1312 -6c32 3 2170 1312 -6c35 3 2172 1312 -6c38 2 2173 1312 -6c3a 8 2175 1312 -6c42 1 2176 1312 -6c43 19 2180 1312 -6c5c 9 2181 1312 -6c65 1 2182 1312 -6c66 2 2185 1312 -6c68 6 1640 1312 -6c6e 2 1641 1312 -6c70 4 1640 1312 -6c74 5 1642 1312 -6c79 2 1644 1312 -6c7b 4 1645 1312 -6c7f 8 1646 1312 -6c87 5 1647 1312 -6c8c 6 1648 1312 -6c92 1 1649 1312 -6c93 4 1648 1312 -6c97 6 1650 1312 -6c9d a 2201 1312 -6ca7 7 2204 1312 -6cae 6 2205 1312 -6cb4 4 2207 1312 -6cb8 2 2208 1312 -6cba 4 2210 1312 -6cbe 4 2212 1312 -6cc2 2 2213 1312 -6cc4 4 2215 1312 -6cc8 4 2217 1312 -6ccc 7 2218 1312 -6cd3 9 2224 1312 -6cdc 6 2228 1312 -6ce2 11 2230 1312 -6cf3 11 2234 1312 -6d04 d 2236 1312 -6d11 f 2238 1312 -6d20 d 2243 1312 -6d2d 3 2249 1312 -6d30 3 2250 1312 -6d33 1e 2252 1312 -6d51 9 2253 1312 -6d5a 18 2257 1312 -6d72 2 1690 1312 -6d74 4 2254 1312 -6d78 2 2259 1312 -6d7a d 2260 1312 -6d87 c 2290 1312 -6d93 f 2292 1312 -6da2 6 2297 1312 -6da8 8 2298 1312 -6db0 1e 2299 1312 -6dce 17 1163 1312 -6de5 10 2376 1312 -6df5 38 2377 1312 -FUNC 6e2d 3b 4 _get_errno_from_oserr -6e2d 0 119 6100 -6e2d 6 123 6100 -6e33 f 124 6100 -6e42 8 133 6100 -6e4a 3 134 6100 -6e4d 1 139 6100 -6e4e 7 125 6100 -6e55 1 139 6100 -6e56 11 135 6100 -6e67 1 139 6100 -FUNC 6e68 13 0 _errno -6e68 0 280 6100 -6e68 5 281 6100 -6e6d 4 282 6100 -6e71 5 283 6100 -6e76 1 288 6100 -6e77 3 285 6100 -6e7a 1 288 6100 -FUNC 6e7b 13 0 __doserrno -6e7b 0 293 6100 -6e7b 5 294 6100 -6e80 4 295 6100 -6e84 5 296 6100 -6e89 1 300 6100 -6e8a 3 298 6100 -6e8d 1 300 6100 -FUNC 6e8e 1e 4 _dosmaperr -6e8e 1 110 6100 -6e8f 9 111 6100 -6e98 13 113 6100 -6eab 1 114 6100 -FUNC 6eac 1b 4 _set_errno -6eac 0 157 6100 -6eac 5 158 6100 -6eb1 4 159 6100 -6eb5 3 161 6100 -6eb8 1 168 6100 -6eb9 b 165 6100 -6ec4 2 166 6100 -6ec6 1 168 6100 -FUNC 6ec7 2a 4 _get_errno -6ec7 1 187 6100 -6ec8 1b 189 6100 -6ee3 1 195 6100 -6ee4 9 193 6100 -6eed 3 194 6100 -6ef0 1 195 6100 -FUNC 6ef1 1b 4 _set_doserrno -6ef1 0 213 6100 -6ef1 5 214 6100 -6ef6 4 215 6100 -6efa 3 217 6100 -6efd 1 224 6100 -6efe b 221 6100 -6f09 2 222 6100 -6f0b 1 224 6100 -FUNC 6f0c 2a 4 _get_doserrno -6f0c 1 243 6100 -6f0d 1b 245 6100 -6f28 1 251 6100 -6f29 9 249 6100 -6f32 3 250 6100 -6f35 1 251 6100 -FUNC 6f38 45 0 _SEH_prolog4 -FUNC 6f7d 14 0 _SEH_epilog4 -FUNC 6fa0 24 0 ValidateLocalCookies -FUNC 6fd0 196 10 _except_handler4 -FUNC 7166 90 10 vprintf_helper -7166 c 47 1507 -7172 d 48 1507 -717f 2b 52 1507 -71aa 7 55 1507 -71b1 3 56 1507 -71b4 8 58 1507 -71bc 10 59 1507 -71cc a 60 1507 -71d6 c 63 1507 -71e2 3 67 1507 -71e5 6 68 1507 -71eb 3 63 1507 -71ee 8 64 1507 -FUNC 71f6 1a c _vprintf_l -71f6 0 75 1507 -71f6 19 76 1507 -720f 1 77 1507 -FUNC 7210 1a c _vprintf_s_l -7210 0 84 1507 -7210 19 85 1507 -7229 1 86 1507 -FUNC 722a 1a c _vprintf_p_l -722a 0 93 1507 -722a 19 94 1507 -7243 1 95 1507 -FUNC 7244 18 8 vprintf -7244 0 101 1507 -7244 17 102 1507 -725b 1 103 1507 -FUNC 725c 18 8 vprintf_s -725c 0 109 1507 -725c 17 110 1507 -7273 1 111 1507 -FUNC 7274 18 8 _vprintf_p -7274 0 117 1507 -7274 17 118 1507 -728b 1 119 1507 -FUNC 728c 104 0 __report_gsfailure -728c 9 140 3731 -7295 5 170 3731 -729a 6 171 3731 -72a0 6 172 3731 -72a6 6 173 3731 -72ac 6 174 3731 -72b2 6 175 3731 -72b8 7 176 3731 -72bf 7 177 3731 -72c6 7 178 3731 -72cd 7 179 3731 -72d4 7 180 3731 -72db 7 181 3731 -72e2 1 182 3731 -72e3 6 183 3731 -72e9 3 190 3731 -72ec 5 191 3731 -72f1 3 192 3731 -72f4 5 193 3731 -72f9 3 194 3731 -72fc 5 195 3731 -7301 6 201 3731 -7307 a 204 3731 -7311 a 206 3731 -731b a 285 3731 -7325 a 286 3731 -732f b 293 3731 -733a b 294 3731 -7345 b 297 3731 -7350 8 298 3731 -7358 8 302 3731 -7360 b 304 3731 -736b 9 313 3731 -7374 8 315 3731 -737c 12 319 3731 -738e 2 320 3731 -FUNC 7390 5c6 c _write_nolock -7390 22 95 4777 -73b2 2 106 4777 -73b4 11 108 4777 -73c5 7 109 4777 -73cc 2b 111 4777 -73f7 27 113 4777 -741e 10 116 4777 -742e 33 119 4777 -7461 6 122 4777 -7467 f 126 4777 -7476 1c 143 4777 -7492 5 146 4777 -7497 8 147 4777 -749f 14 148 4777 -74b3 16 152 4777 -74c9 6 153 4777 -74cf 4 157 4777 -74d3 16 160 4777 -74e9 9 153 4777 -74f2 b 163 4777 -74fd 9 164 4777 -7506 11 170 4777 -7517 18 171 4777 -752f 2 173 4777 -7531 14 174 4777 -7545 18 175 4777 -755d 4 181 4777 -7561 2e 205 4777 -758f 21 212 4777 -75b0 6 213 4777 -75b6 8 214 4777 -75be a 222 4777 -75c8 29 229 4777 -75f1 a 230 4777 -75fb 3 232 4777 -75fe 3 233 4777 -7601 2 238 4777 -7603 8 186 4777 -760b 3 191 4777 -760e 9 192 4777 -7617 f 193 4777 -7626 8 240 4777 -762e 13 242 4777 -7641 3 244 4777 -7644 6 251 4777 -764a 3 254 4777 -764d 14 255 4777 -7661 3 257 4777 -7664 12 258 4777 -7676 5 236 4777 -767b e 268 4777 -7689 12 277 4777 -769b f 278 4777 -76aa d 279 4777 -76b7 8 283 4777 -76bf 9 284 4777 -76c8 5 285 4777 -76cd 3 286 4777 -76d0 7 287 4777 -76d7 f 289 4777 -76e6 25 297 4777 -770b 6 299 4777 -7711 16 300 4777 -7727 f 308 4777 -7736 f 314 4777 -7745 b 315 4777 -7750 8 319 4777 -7758 c 320 4777 -7764 6 321 4777 -776a 4 322 4777 -776e c 323 4777 -777a f 325 4777 -7789 25 333 4777 -77ae 6 335 4777 -77b4 1a 336 4777 -77ce 5 344 4777 -77d3 f 359 4777 -77e2 13 361 4777 -77f5 8 365 4777 -77fd b 366 4777 -7808 6 367 4777 -780e a 369 4777 -7818 11 371 4777 -7829 2f 382 4777 -7858 4 384 4777 -785c 25 406 4777 -7881 3 407 4777 -7884 6 412 4777 -788a 9 409 4777 -7893 4 419 4777 -7897 15 423 4777 -78ac 2 428 4777 -78ae 1b 434 4777 -78c9 a 437 4777 -78d3 2 439 4777 -78d5 9 440 4777 -78de a 443 4777 -78e8 7 447 4777 -78ef 8 449 4777 -78f7 b 452 4777 -7902 2 455 4777 -7904 9 456 4777 -790d 2 457 4777 -790f 11 459 4777 -7920 4 460 4777 -7924 b 462 4777 -792f 7 463 4777 -7936 5 464 4777 -793b 5 469 4777 -7940 16 470 4777 -FUNC 7956 dc c _write -7956 c 61 4777 -7962 23 66 4777 -7985 2f 67 4777 -79b4 20 68 4777 -79d4 7 70 4777 -79db 3 72 4777 -79de 9 73 4777 -79e7 14 74 4777 -79fb 2 75 4777 -79fd b 76 4777 -7a08 7 77 4777 -7a0f 4 78 4777 -7a13 c 82 4777 -7a1f 3 86 4777 -7a22 6 87 4777 -7a28 a 83 4777 -FUNC 7a32 2d 4 _fileno -7a32 0 40 2176 -7a32 27 41 2176 -7a59 1 43 2176 -7a5a 4 42 2176 -7a5e 1 43 2176 -FUNC 7a5f e1 4 _commit -7a5f c 39 5043 -7a6b 1b 43 5043 -7a86 28 44 5043 -7aae 20 45 5043 -7ace 7 47 5043 -7ad5 3 48 5043 -7ad8 9 49 5043 -7ae1 14 51 5043 -7af5 9 52 5043 -7afe 2 54 5043 -7b00 3 55 5043 -7b03 5 59 5043 -7b08 a 62 5043 -7b12 b 66 5043 -7b1d 4 67 5043 -7b21 c 72 5043 -7b2d 3 75 5043 -7b30 6 76 5043 -7b36 a 73 5043 -FUNC 7b40 49 0 _mtinitlocks -7b40 2 137 2371 -7b42 7 144 2371 -7b49 11 145 2371 -7b5a 2 146 2371 -7b5c 15 148 2371 -7b71 6 144 2371 -7b77 5 157 2371 -7b7c d 158 2371 -FUNC 7b89 55 0 _mtdeletelocks -7b89 1 188 2371 -7b8a d 194 2371 -7b97 c 196 2371 -7ba3 3 200 2371 -7ba6 6 206 2371 -7bac f 207 2371 -7bbb 6 215 2371 -7bc1 c 217 2371 -7bcd 10 221 2371 -7bdd 1 224 2371 -FUNC 7bde 15 4 _unlock -7bde 3 371 2371 -7be1 10 375 2371 -7bf1 2 376 2371 -FUNC 7bf3 18 4 _lockerr_exit -7bf3 0 403 2371 -7bf3 c 404 2371 -7bff b 405 2371 -7c0a 1 406 2371 -FUNC 7c0b c3 4 _mtinitlocknum -7c0b c 259 2371 -7c17 6 261 2371 -7c1d a 269 2371 -7c27 5 270 2371 -7c2c 7 271 2371 -7c33 c 272 2371 -7c3f e 276 2371 -7c4d 4 277 2371 -7c51 e 279 2371 -7c5f b 280 2371 -7c6a 4 281 2371 -7c6e 8 284 2371 -7c76 3 285 2371 -7c79 4 287 2371 -7c7d 11 288 2371 -7c8e 7 289 2371 -7c95 b 290 2371 -7ca0 3 291 2371 -7ca3 2 292 2371 -7ca5 2 293 2371 -7ca7 2 296 2371 -7ca9 7 297 2371 -7cb0 c 300 2371 -7cbc 3 304 2371 -7cbf 6 305 2371 -7cc5 9 301 2371 -FUNC 7cce 31 4 _lock -7cce 3 333 2371 -7cd1 10 338 2371 -7ce1 b 340 2371 -7cec 8 341 2371 -7cf4 9 348 2371 -7cfd 2 349 2371 -FUNC 7cff 240 0 _ioinit -7cff c 111 4958 -7d0b 5 122 4958 -7d10 a 127 4958 -7d1a 7 128 4958 -7d21 f 137 4958 -7d30 6 139 4958 -7d36 5 142 4958 -7d3b 6 143 4958 -7d41 8 145 4958 -7d49 4 146 4958 -7d4d 3 147 4958 -7d50 4 148 4958 -7d54 3 149 4958 -7d57 4 151 4958 -7d5b 4 152 4958 -7d5f 4 153 4958 -7d63 13 145 4958 -7d76 15 161 4958 -7d8b 2 166 4958 -7d8d 3 172 4958 -7d90 6 173 4958 -7d96 b 179 4958 -7da1 5 185 4958 -7da6 f 191 4958 -7db5 9 204 4958 -7dbe 7 205 4958 -7dc5 8 207 4958 -7dcd 4 208 4958 -7dd1 3 209 4958 -7dd4 4 210 4958 -7dd8 4 211 4958 -7ddc 4 212 4958 -7de0 4 213 4958 -7de4 4 214 4958 -7de8 f 207 4958 -7df7 9 185 4958 -7e00 2 284 4958 -7e02 6 197 4958 -7e08 8 221 4958 -7e10 24 234 4958 -7e34 15 236 4958 -7e49 7 237 4958 -7e50 5 238 4958 -7e55 18 241 4958 -7e6d 3 243 4958 -7e70 d 221 4958 -7e7d 2 253 4958 -7e7f b 255 4958 -7e8a c 258 4958 -7e96 6 306 4958 -7e9c 4 262 4958 -7ea0 30 266 4958 -7ed0 2 271 4958 -7ed2 a 277 4958 -7edc 6 278 4958 -7ee2 5 279 4958 -7ee7 4 280 4958 -7eeb 14 284 4958 -7eff 3 286 4958 -7f02 2 288 4958 -7f04 4 297 4958 -7f08 6 298 4958 -7f0e a 253 4958 -7f18 c 313 4958 -7f24 4 315 4958 -7f28 7 128 4958 -7f2f a 129 4958 -7f39 6 316 4958 -FUNC 7f3f 4c 0 _ioterm -7f3f 2 341 4958 -7f41 5 345 4958 -7f46 6 347 4958 -7f4c 8 353 4958 -7f54 9 355 4958 -7f5d 11 356 4958 -7f6e 4 353 4958 -7f72 7 361 4958 -7f79 11 362 4958 -7f8a 1 365 4958 -FUNC 7f8b 21 4 wait_a_bit -7f8b 1 18 5557 -7f8c b 19 5557 -7f97 6 20 5557 -7f9d 8 21 5557 -7fa5 3 22 5557 -7fa8 3 23 5557 -7fab 1 24 5557 -FUNC 7fac 10 4 _set_malloc_crt_max_wait -7fac 0 32 5557 -7fac f 34 5557 -7fbb 1 36 5557 -FUNC 7fbc 40 4 _malloc_crt -7fbc 2 39 5557 -7fbe 2 40 5557 -7fc0 b 44 5557 -7fcb d 45 5557 -7fd8 18 46 5557 -7ff0 7 47 5557 -7ff7 4 50 5557 -7ffb 1 51 5557 -FUNC 7ffc 48 8 _calloc_crt -7ffc 2 54 5557 -7ffe 2 55 5557 -8000 14 61 5557 -8014 c 62 5557 -8020 18 63 5557 -8038 7 64 5557 -803f 4 67 5557 -8043 1 68 5557 -FUNC 8044 4b 8 _realloc_crt -8044 2 71 5557 -8046 2 72 5557 -8048 f 76 5557 -8057 14 77 5557 -806b 18 78 5557 -8083 7 79 5557 -808a 4 82 5557 -808e 1 83 5557 -FUNC 808f 50 c _recalloc_crt -808f 2 86 5557 -8091 2 87 5557 -8093 16 91 5557 -80a9 12 92 5557 -80bb 18 94 5557 -80d3 7 95 5557 -80da 4 100 5557 -80de 1 101 5557 -FUNC 80df 8 0 _malloc_crt_fastcall -80df 0 105 5557 -80df 7 106 5557 -80e6 1 107 5557 -FUNC 80e7 a 0 _calloc_crt_fastcall -80e7 0 110 5557 -80e7 9 111 5557 -80f0 1 112 5557 -FUNC 80f1 a 0 _realloc_crt_fastcall -80f1 0 115 5557 -80f1 9 116 5557 -80fa 1 117 5557 -FUNC 80fb 8e 4 free -80fb c 42 5515 -8107 7 47 5515 -810e 9 53 5515 -8117 8 57 5515 -811f 4 58 5515 -8123 e 60 5515 -8131 9 61 5515 -813a c 64 5515 -8146 6 68 5515 -814c 3 70 5515 -814f 2 106 5515 -8151 9 65 5515 -815a f 109 5515 -8169 4 110 5515 -816d 16 112 5515 -8183 6 115 5515 -FUNC 8189 9f 0 _fcloseall -8189 c 43 1792 -8195 5 44 1792 -819a 8 47 1792 -81a2 3 48 1792 -81a5 e 50 1792 -81b3 10 52 1792 -81c3 14 57 1792 -81d7 3 58 1792 -81da 5 63 1792 -81df 12 65 1792 -81f1 e 66 1792 -81ff 8 67 1792 -8207 3 50 1792 -820a c 73 1792 -8216 3 77 1792 -8219 6 78 1792 -821f 9 74 1792 -FUNC 8228 19 4 std::bad_exception::bad_exception(char const *) -8228 13 351 6035 -823b 6 352 6035 -FUNC 8241 b 0 std::bad_exception::~bad_exception() -8241 6 355 6035 -8247 5 356 6035 -FUNC 824c 22 0 std::bad_exception::`vector deleting destructor'(unsigned int) -FUNC 826e 5c c __TypeMatch -826e 2 999 6034 -8270 13 1001 6034 -8283 1b 1008 6034 -829e 4 1009 6034 -82a2 22 1023 6034 -82c4 5 1002 6034 -82c9 1 1024 6034 -FUNC 82ca 44 4 __FrameUnwindFilter -82ca 0 1035 6034 -82ca 6 1038 6034 -82d0 e 1040 6034 -82de 13 1076 6034 -82f1 e 1068 6034 -82ff c 1070 6034 -830b 2 1072 6034 -830d 1 1078 6034 -FUNC 830e e1 10 __FrameUnwindToState -830e c 1105 6034 -831a 1b 1112 6034 -8335 c 1114 6034 -8341 4 1115 6034 -8345 5 1119 6034 -834a f 1123 6034 -8359 f 1126 6034 -8368 7 1128 6034 -836f 6 1131 6034 -8375 3 1138 6034 -8378 12 1145 6034 -838a 6 1149 6034 -8390 d 1151 6034 -839d d 1153 6034 -83aa 3 1155 6034 -83ad 2 1156 6034 -83af c 1157 6034 -83bb a 1169 6034 -83c5 3 1176 6034 -83c8 6 1180 6034 -83ce 6 1157 6034 -83d4 e 1158 6034 -83e2 d 1159 6034 -FUNC 83ef 45 0 ExFilterRethrow -83ef 0 1533 6034 -83ef 2 1535 6034 -83f1 2f 1538 6034 -8420 e 1542 6034 -842e 2 1543 6034 -8430 1 1547 6034 -8431 2 1545 6034 -8433 1 1547 6034 -FUNC 8434 54 8 __DestructExceptionObject -8434 c 1791 6034 -8440 f 1794 6034 -844f e 1801 6034 -845d 4 1803 6034 -8461 9 1810 6034 -846a 7 1814 6034 -8471 6 1824 6034 -8477 c 1815 6034 -8483 5 1819 6034 -FUNC 8488 25 8 __AdjustPointer -8488 0 1842 6034 -8488 d 1843 6034 -8495 6 1845 6034 -849b 3 1850 6034 -849e e 1852 6034 -84ac 1 1856 6034 -FUNC 84ad 13 0 __uncaught_exception() -84ad 0 1867 6034 -84ad 12 1868 6034 -84bf 1 1869 6034 -FUNC 84c0 b3 8 __CxxRegisterExceptionObject -84c0 0 2077 6034 -84c0 14 2085 6034 -84d4 26 2087 6034 -84fa 6 2088 6034 -8500 b 2090 6034 -850b b 2093 6034 -8516 e 2094 6034 -8524 e 2095 6034 -8532 b 2096 6034 -853d 2 2097 6034 -853f 4 2098 6034 -8543 4 2099 6034 -8547 c 2101 6034 -8553 10 2102 6034 -8563 c 2103 6034 -856f 3 2104 6034 -8572 1 2105 6034 -FUNC 8573 4c 4 __CxxDetectRethrow -8573 0 2117 6034 -8573 6 2119 6034 -8579 2 2120 6034 -857b 2 2121 6034 -857d 2f 2122 6034 -85ac c 2123 6034 -85b8 3 2124 6034 -85bb 1 2127 6034 -85bc 2 2126 6034 -85be 1 2127 6034 -FUNC 85bf 139 8 __CxxUnregisterExceptionObject -85bf 1 2139 6034 -85c0 4 2143 6034 -85c4 d 2145 6034 -85d1 6 2146 6034 -85d7 85 2149 6034 -865c 14 2150 6034 -8670 5b 2152 6034 -86cb c 2153 6034 -86d7 e 2154 6034 -86e5 12 2155 6034 -86f7 1 2157 6034 -FUNC 86f8 4 0 __CxxQueryExceptionSize -86f8 0 2167 6034 -86f8 3 2168 6034 -86fb 1 2169 6034 -FUNC 86fc 32 8 __CxxCallUnwindDtor -86fc c 2189 6034 -8708 4 2190 6034 -870c 6 2192 6034 -8712 2 2193 6034 -8714 d 2194 6034 -8721 7 2197 6034 -8728 6 2198 6034 -FUNC 872e 33 8 __CxxCallUnwindDelDtor -872e c 2218 6034 -873a 4 2219 6034 -873e 7 2221 6034 -8745 2 2222 6034 -8747 d 2223 6034 -8754 7 2226 6034 -875b 6 2227 6034 -FUNC 8761 32 8 __CxxCallUnwindStdDelDtor -8761 c 2247 6034 -876d 4 2248 6034 -8771 6 2250 6034 -8777 2 2251 6034 -8779 d 2252 6034 -8786 7 2255 6034 -878d 6 2256 6034 -FUNC 8793 3b 14 __CxxCallUnwindVecDtor -8793 c 2282 6034 -879f 4 2283 6034 -87a3 f 2285 6034 -87b2 2 2286 6034 -87b4 d 2287 6034 -87c1 7 2290 6034 -87c8 6 2291 6034 -FUNC 87ce 79 4 IsInExceptionSpec -87ce 6 2302 6034 -87d4 9 2303 6034 -87dd 5 2307 6034 -87e2 f 2323 6034 -87f1 9 2326 6034 -87fa 2 2327 6034 -87fc 10 2328 6034 -880c 26 2335 6034 -8832 4 2337 6034 -8836 c 2323 6034 -8842 3 2343 6034 -8845 2 2344 6034 -FUNC 8847 49 4 CallUnexpected -8847 c 2379 6034 -8853 13 2380 6034 -8866 4 2383 6034 -886a 5 2384 6034 -886f 4 2391 6034 -8873 5 2392 6034 -8878 8 2388 6034 -8880 10 2390 6034 -FUNC 8890 30 0 Is_bad_exception_allowed -8890 2 2399 6034 -8892 8 2400 6034 -889a 1d 2402 6034 -88b7 4 2408 6034 -88bb 1 2409 6034 -88bc 4 2404 6034 -FUNC 88c0 82 8 _is_exception_typeof(type_info const &,_EXCEPTION_POINTERS *) -88c0 1 2416 6034 -88c1 e 2417 6034 -88cf 2 2419 6034 -88d1 9 2422 6034 -88da 2b 2423 6034 -8905 6 2432 6034 -890b 7 2433 6034 -8912 2 2445 6034 -8914 20 2446 6034 -8934 4 2439 6034 -8938 4 2454 6034 -893c 6 2455 6034 -FUNC 8942 19c 18 CallCatchBlock -8942 14 1431 6034 -8956 3 1437 6034 -8959 4 1439 6034 -895d 6 1443 6034 -8963 11 1447 6034 -8974 e 1451 6034 -8982 e 1452 6034 -8990 b 1454 6034 -899b e 1455 6034 -89a9 a 1457 6034 -89b3 3 1458 6034 -89b6 16 1463 6034 -89cc 12 1464 6034 -89de c 1465 6034 -89ea 3 1470 6034 -89ed 15 1471 6034 -8a02 3 1472 6034 -8a05 c 1474 6034 -8a11 11 1476 6034 -8a22 7 1478 6034 -8a29 d 1482 6034 -8a36 b 1486 6034 -8a41 13 1488 6034 -8a54 3 1517 6034 -8a57 6 1518 6034 -8a5d 5 1474 6034 -8a62 6 1488 6034 -8a68 6 1494 6034 -8a6e 9 1497 6034 -8a77 e 1500 6034 -8a85 e 1501 6034 -8a93 3f 1510 6034 -8ad2 c 1511 6034 -FUNC 8ade 17f 10 __BuildCatchObjectHelper -8ade c 1575 6034 -8aea 5 1576 6034 -8aef 2a 1582 6034 -8b19 2 1588 6034 -8b1b 3 1590 6034 -8b1e 2 1588 6034 -8b20 2 1592 6034 -8b22 4 1611 6034 -8b26 3 1614 6034 -8b29 4 1622 6034 -8b2d 4 1615 6034 -8b31 26 1622 6034 -8b57 5 1623 6034 -8b5c 11 1625 6034 -8b6d 5 1628 6034 -8b72 3 1629 6034 -8b75 6 1636 6034 -8b7b 4 1629 6034 -8b7f 20 1636 6034 -8b9f 12 1637 6034 -8bb1 10 1639 6034 -8bc1 4 1641 6034 -8bc5 2 1646 6034 -8bc7 5 1649 6034 -8bcc 18 1654 6034 -8be4 1e 1656 6034 -8c02 2 1660 6034 -8c04 25 1668 6034 -8c29 d 1672 6034 -8c36 2 1677 6034 -8c38 5 1678 6034 -8c3d 7 1681 6034 -8c44 5 1688 6034 -8c49 7 1682 6034 -8c50 5 1684 6034 -8c55 2 1584 6034 -8c57 6 1689 6034 -FUNC 8c5d 91 10 __BuildCatchObject -8c5d c 1712 6034 -8c69 b 1716 6034 -8c74 3 1718 6034 -8c77 2 1720 6034 -8c79 a 1739 6034 -8c83 4 1743 6034 -8c87 1a 1744 6034 -8ca1 1a 1756 6034 -8cbb 2 1757 6034 -8cbd 18 1750 6034 -8cd5 7 1762 6034 -8cdc 6 1769 6034 -8ce2 7 1763 6034 -8ce9 5 1765 6034 -FUNC 8cee 143 10 __CxxExceptionFilter -8cee 3 1973 6034 -8cf1 a 1985 6034 -8cfb 3 2065 6034 -8cfe 2a 1993 6034 -8d28 32 2008 6034 -8d5a 6 2010 6034 -8d60 c 2011 6034 -8d6c 6 2012 6034 -8d72 b 2013 6034 -8d7d f 2040 6034 -8d8c a 2041 6034 -8d96 2 2047 6034 -8d98 1b 2050 6034 -8db3 4 2042 6034 -8db7 2 2050 6034 -8db9 c 2052 6034 -8dc5 6 2053 6034 -8dcb 13 2054 6034 -8dde 2 2055 6034 -8de0 25 1995 6034 -8e05 6 1997 6034 -8e0b e 1999 6034 -8e19 4 2000 6034 -8e1d c 2004 6034 -8e29 6 2005 6034 -8e2f 2 2065 6034 -FUNC 8e31 6c 20 CatchIt -8e31 3 1217 6034 -8e34 6 1233 6034 -8e3a 10 1234 6034 -8e4a 4 1253 6034 -8e4e 6 1254 6034 -8e54 2 1255 6034 -8e56 8 1256 6034 -8e5e e 1259 6034 -8e6c 3 1265 6034 -8e6f 21 1273 6034 -8e90 4 1278 6034 -8e94 7 1280 6034 -8e9b 2 1286 6034 -FUNC 8e9d f2 20 FindHandlerForForeignException -8e9d 6 913 6034 -8ea3 10 920 6034 -8eb3 2a 926 6034 -8edd 23 934 6034 -8f00 e 940 6034 -8f0e 17 945 6034 -8f25 c 948 6034 -8f31 29 954 6034 -8f5a 33 974 6034 -8f8d 2 984 6034 -FUNC 8f8f 356 20 FindHandler -8f8f 6 569 6034 -8f95 20 632 6034 -8fb5 11 634 6034 -8fc6 42 637 6034 -9008 12 639 6034 -901a e 645 6034 -9028 b 646 6034 -9033 16 652 6034 -9049 2a 653 6034 -9073 12 659 6034 -9085 b 661 6034 -9090 5 662 6034 -9095 15 666 6034 -90aa 23 676 6034 -90cd 5 692 6034 -90d2 c 686 6034 -90de 30 688 6034 -910e 2b 698 6034 -9139 d 707 6034 -9146 19 715 6034 -915f c 718 6034 -916b 10 729 6034 -917b 6 735 6034 -9181 3 736 6034 -9184 7 737 6034 -918b 9 740 6034 -9194 2 741 6034 -9196 7 742 6034 -919d 23 750 6034 -91c0 d 737 6034 -91cd 2 676 6034 -91cf 33 774 6034 -9202 3 718 6034 -9205 6 795 6034 -920b a 804 6034 -9215 27 812 6034 -923c f 814 6034 -924b 5 840 6034 -9250 5 841 6034 -9255 b 843 6034 -9260 5 844 6034 -9265 d 846 6034 -9272 6 847 6034 -9278 2 848 6034 -927a 8 849 6034 -9282 14 851 6034 -9296 b 853 6034 -92a1 6 863 6034 -92a7 a 864 6034 -92b1 1c 866 6034 -92cd 16 877 6034 -92e3 2 880 6034 -FUNC 92e5 18 4 std::bad_exception::bad_exception(std::bad_exception const &) -FUNC 92fd e4 20 __InternalCxxFrameHandler -92fd 6 412 6034 -9303 3d 426 6034 -9340 6 432 6034 -9346 6 435 6034 -934c 10 440 6034 -935c 11 479 6034 -936d 2 482 6034 -936f 18 489 6034 -9387 19 499 6034 -93a0 1d 513 6034 -93bd 1c 524 6034 -93d9 6 533 6034 -93df 2 535 6034 -FUNC 93e1 6c 0 _use_encode_pointer -93e1 7 66 2227 -93e8 2 72 2227 -93ea 12 75 2227 -93fc 7 76 2227 -9403 5 78 2227 -9408 7 82 2227 -940f 5 85 2227 -9414 e 91 2227 -9422 1f 93 2227 -9441 4 95 2227 -9445 6 100 2227 -944b 2 101 2227 -FUNC 944d 6e 4 _encode_pointer -944d 1 120 2227 -944e 2b 129 2227 -9479 8 145 2227 -9481 d 133 2227 -948e d 135 2227 -949b c 138 2227 -94a7 4 148 2227 -94ab a 150 2227 -94b5 5 153 2227 -94ba 1 154 2227 -FUNC 94bb 9 0 _encoded_null -94bb 0 173 2227 -94bb 8 174 2227 -94c3 1 175 2227 -FUNC 94c4 6e 4 _decode_pointer -94c4 1 194 2227 -94c5 2b 203 2227 -94f0 8 219 2227 -94f8 d 207 2227 -9505 d 209 2227 -9512 c 212 2227 -951e 4 222 2227 -9522 a 224 2227 -952c 5 227 2227 -9531 1 228 2227 -FUNC 9532 9 4 __crtTlsAlloc -9532 0 240 2227 -9532 6 241 2227 -9538 3 242 2227 -FUNC 953b 15 4 __fls_getvalue -953b 0 258 2227 -953b 12 259 2227 -954d 3 260 2227 -FUNC 9550 6 0 __get_flsindex -9550 0 272 2227 -9550 5 273 2227 -9555 1 274 2227 -FUNC 9556 32 0 __set_flsgetvalue -9556 1 286 2227 -9557 e 288 2227 -9565 4 289 2227 -9569 e 291 2227 -9577 d 292 2227 -9584 3 294 2227 -9587 1 298 2227 -FUNC 9588 19 8 __fls_setvalue -9588 0 315 2227 -9588 16 316 2227 -959e 3 317 2227 -FUNC 95a1 3d 0 _mtterm -95a1 0 473 2227 -95a1 a 480 2227 -95ab f 481 2227 -95ba 7 482 2227 -95c1 a 485 2227 -95cb 7 486 2227 -95d2 7 487 2227 -95d9 5 494 2227 -FUNC 95de bf 8 _initptd -95de c 521 2227 -95ea e 522 2227 -95f8 a 524 2227 -9602 6 525 2227 -9608 4 527 2227 -960c 9 529 2227 -9615 16 532 2227 -962b 10 533 2227 -963b 3 540 2227 -963e 7 544 2227 -9645 7 545 2227 -964c 8 546 2227 -9654 7 547 2227 -965b 8 551 2227 -9663 4 552 2227 -9667 6 553 2227 -966d 4 561 2227 -9671 8 562 2227 -9679 9 563 2227 -9682 c 565 2227 -968e 6 568 2227 -9694 9 566 2227 -FUNC 969d 77 0 _getptd_noexit -969d 2 588 2227 -969f 6 592 2227 -96a5 15 600 2227 -96ba 14 608 2227 -96ce 19 610 2227 -96e7 a 616 2227 -96f1 6 618 2227 -96f7 6 619 2227 -96fd 2 621 2227 -96ff 7 627 2227 -9706 2 628 2227 -9708 8 633 2227 -9710 3 635 2227 -9713 1 636 2227 -FUNC 9714 18 0 _getptd -9714 1 657 2227 -9715 7 658 2227 -971c 4 659 2227 -9720 8 660 2227 -9728 3 662 2227 -972b 1 663 2227 -FUNC 972c 121 4 _freefls -972c c 691 2227 -9738 b 702 2227 -9743 7 703 2227 -974a 7 704 2227 -9751 7 706 2227 -9758 7 707 2227 -975f 7 709 2227 -9766 7 710 2227 -976d 7 712 2227 -9774 7 713 2227 -977b 7 715 2227 -9782 7 716 2227 -9789 7 718 2227 -9790 7 719 2227 -9797 a 721 2227 -97a1 7 722 2227 -97a8 8 724 2227 -97b0 4 725 2227 -97b4 1a 728 2227 -97ce 7 729 2227 -97d5 c 731 2227 -97e1 8 735 2227 -97e9 7 737 2227 -97f0 7 738 2227 -97f7 7 740 2227 -97fe 15 743 2227 -9813 7 744 2227 -981a c 747 2227 -9826 7 751 2227 -982d 8 754 2227 -9835 3 731 2227 -9838 9 732 2227 -9841 3 747 2227 -9844 9 748 2227 -FUNC 984d 69 4 _freeptd -984d 0 778 2227 -984d a 783 2227 -9857 1b 795 2227 -9872 13 796 2227 -9885 16 802 2227 -989b 7 804 2227 -98a2 a 807 2227 -98ac 9 811 2227 -98b5 1 813 2227 -FUNC 98b6 6 0 __threadid -98b6 0 837 2227 -98b6 6 838 2227 -FUNC 98bc 6 0 __threadhandle -98bc 0 844 2227 -98bc 6 845 2227 -FUNC 98c2 184 0 _mtinit -98c2 1 346 2227 -98c3 d 355 2227 -98d0 4 356 2227 -98d4 5 357 2227 -98d9 3 358 2227 -98dc 2 444 2227 -98de e 362 2227 -98ec d 365 2227 -98f9 d 368 2227 -9906 d 371 2227 -9913 2a 372 2227 -993d a 375 2227 -9947 1a 379 2227 -9961 25 388 2227 -9986 5 393 2227 -998b b 400 2227 -9996 10 401 2227 -99a6 10 402 2227 -99b6 18 403 2227 -99ce 7 410 2227 -99d5 2 412 2227 -99d7 1b 418 2227 -99f2 2 420 2227 -99f4 2d 428 2227 -9a21 a 438 2227 -9a2b 6 440 2227 -9a31 6 441 2227 -9a37 5 443 2227 -9a3c 5 430 2227 -9a41 4 389 2227 -9a45 1 444 2227 -FUNC 9a46 39 0 terminate() -9a46 c 94 5983 -9a52 8 107 5983 -9a5a 4 111 5983 -9a5e 4 116 5983 -9a62 2 120 5983 -9a64 2 121 5983 -9a66 7 122 5983 -9a6d 7 127 5983 -9a74 5 135 5983 -9a79 6 136 5983 -FUNC 9a7f 13 0 unexpected() -9a7f 0 149 5983 -9a7f 8 159 5983 -9a87 4 163 5983 -9a8b 2 167 5983 -9a8d 5 173 5983 -FUNC 9a92 37 0 _inconsistency() -9a92 c 187 5983 -9a9e c 196 5983 -9aaa 4 197 5983 -9aae 4 202 5983 -9ab2 2 203 5983 -9ab4 2 204 5983 -9ab6 7 205 5983 -9abd 7 211 5983 -9ac4 5 217 5983 -FUNC 9ac9 11 4 _initp_eh_hooks -9ac9 0 74 5983 -9ac9 10 80 5983 -9ad9 1 81 5983 -FUNC 9ae0 4c c _CallSettingFrame -9ae0 3 48 5665 -9ae3 3 57 5665 -9ae6 1 58 5665 -9ae7 1 59 5665 -9ae8 3 60 5665 -9aeb 3 61 5665 -9aee 3 62 5665 -9af1 3 63 5665 -9af4 1 64 5665 -9af5 3 65 5665 -9af8 3 66 5665 -9afb 3 67 5665 -9afe 5 68 5665 -9b03 1 69 5665 -9b04 1 70 5665 -9b05 2 71 5665 -9b07 1 73 5665 -9b08 1 74 5665 -9b09 2 75 5665 -9b0b 1 76 5665 -9b0c 3 77 5665 -9b0f 1 78 5665 -9b10 2 79 5665 -9b12 6 80 5665 -9b18 2 81 5665 -9b1a 5 82 5665 -9b1f 1 84 5665 -9b20 5 85 5665 -9b25 1 86 5665 -9b26 1 87 5665 -9b27 1 88 5665 -9b28 4 89 5665 -PUBLIC 9b07 0 _NLG_Return -FUNC 9b2c b9 4 _onexit_nolock -9b2c 5 104 3259 -9b31 b 107 3259 -9b3c 13 108 3259 -9b4f 16 112 3259 -9b65 d 122 3259 -9b72 d 127 3259 -9b7f 14 129 3259 -9b93 3 134 3259 -9b96 14 136 3259 -9baa 3 147 3259 -9bad f 149 3259 -9bbc e 156 3259 -9bca c 157 3259 -9bd6 7 159 3259 -9bdd 6 114 3259 -9be3 2 160 3259 -FUNC 9be5 2f 0 __onexitinit -9be5 1 205 3259 -9be6 b 208 3259 -9bf1 9 209 3259 -9bfa e 211 3259 -9c08 4 216 3259 -9c0c 1 221 3259 -9c0d 3 218 3259 -9c10 3 220 3259 -9c13 1 221 3259 -FUNC 9c14 3c 4 _onexit -9c14 c 85 3259 -9c20 5 88 3259 -9c25 4 90 3259 -9c29 c 91 3259 -9c35 c 93 3259 -9c41 3 97 3259 -9c44 6 98 3259 -9c4a 6 94 3259 -FUNC 9c50 12 4 atexit -9c50 0 165 3259 -9c50 11 166 3259 -9c61 1 167 3259 -FUNC 9c62 4f 4 V6_HeapAlloc -9c62 c 27 5425 -9c6e 4 28 5425 -9c72 b 29 5425 -9c7d 8 31 5425 -9c85 4 32 5425 -9c89 a 33 5425 -9c93 c 35 5425 -9c9f 3 39 5425 -9ca2 6 40 5425 -9ca8 9 36 5425 -FUNC 9cb1 75 4 _heap_alloc -9cb1 0 90 5425 -9cb1 9 95 5425 -9cba 5 96 5425 -9cbf 7 97 5425 -9cc6 c 98 5425 -9cd2 a 104 5425 -9cdc 18 105 5425 -9cf4 1 129 5425 -9cf5 a 107 5425 -9cff 9 108 5425 -9d08 2 109 5425 -9d0a 4 121 5425 -9d0e 1 122 5425 -9d0f 6 124 5425 -9d15 10 126 5425 -9d25 1 129 5425 -FUNC 9d26 c3 4 malloc -9d26 1 155 5425 -9d27 16 159 5425 -9d3d 65 163 5425 -9da2 4 168 5425 -9da6 b 172 5425 -9db1 b 179 5425 -9dbc 2 183 5425 -9dbe 7 174 5425 -9dc5 8 193 5425 -9dcd 5 195 5425 -9dd2 1 196 5425 -9dd3 7 185 5425 -9dda b 186 5425 -9de5 3 187 5425 -9de8 1 196 5425 -FUNC 9de9 a 4 _initp_heap_handler -9de9 0 31 5230 -9de9 9 32 5230 -9df2 1 33 5230 -FUNC 9df3 31 4 _set_new_handler(int (*)(unsigned int)) -9df3 1 53 5230 -9df4 7 57 5230 -9dfb b 59 5230 -9e06 b 60 5230 -9e11 f 63 5230 -9e20 3 65 5230 -9e23 1 66 5230 -FUNC 9e24 9 4 _set_new_handler(int) -9e24 0 86 5230 -9e24 8 89 5230 -9e2c 1 90 5230 -FUNC 9e2d d 0 _query_new_handler() -9e2d 0 110 5230 -9e2d c 111 5230 -9e39 1 112 5230 -FUNC 9e3a 22 4 _callnewh -9e3a 0 131 5230 -9e3a b 133 5230 -9e45 10 135 5230 -9e55 3 138 5230 -9e58 1 139 5230 -9e59 2 136 5230 -9e5b 1 139 5230 -FUNC 9e5c 22 18 _invoke_watson_if_error -9e5c 3 754 5850 -9e5f 6 755 5850 -9e65 17 759 5850 -9e7c 2 760 5850 -FUNC 9e7e 70 4 type_info::_Type_info_dtor(type_info *) -9e7e c 62 5815 -9e8a 8 63 5815 -9e92 4 64 5815 -9e96 a 65 5815 -9ea0 d 70 5815 -9ead 4 72 5815 -9eb1 4 74 5815 -9eb5 6 79 5815 -9ebb 7 80 5815 -9ec2 9 94 5815 -9ecb 4 101 5815 -9ecf c 103 5815 -9edb 6 107 5815 -9ee1 2 83 5815 -9ee3 2 72 5815 -9ee5 9 104 5815 -FUNC 9eee f5 8 type_info::_Name_base(type_info const *,__type_info_node *) -9eee c 109 5815 -9efa e 113 5815 -9f08 24 124 5815 -9f2c 7 125 5815 -9f33 16 132 5815 -9f49 2 133 5815 -9f4b 5 132 5815 -9f50 b 136 5815 -9f5b 5 142 5815 -9f60 a 149 5815 -9f6a 4 150 5815 -9f6e 11 157 5815 -9f7f 20 158 5815 -9f9f 5 159 5815 -9fa4 9 165 5815 -9fad 3 166 5815 -9fb0 2 167 5815 -9fb2 7 173 5815 -9fb9 9 180 5815 -9fc2 c 181 5815 -9fce 3 188 5815 -9fd1 6 189 5815 -9fd7 3 181 5815 -9fda 9 182 5815 -FUNC 9fe3 70 4 type_info::_Type_info_dtor_internal(type_info *) -9fe3 c 197 5815 -9fef 8 198 5815 -9ff7 4 199 5815 -9ffb a 200 5815 -a005 d 205 5815 -a012 4 207 5815 -a016 4 209 5815 -a01a 6 214 5815 -a020 7 215 5815 -a027 9 229 5815 -a030 4 236 5815 -a034 c 238 5815 -a040 6 242 5815 -a046 2 218 5815 -a048 2 207 5815 -a04a 9 239 5815 -FUNC a053 31 10 __unDNameHelper -a053 3 249 5815 -a056 7 250 5815 -a05d 7 252 5815 -a064 1e 260 5815 -a082 2 261 5815 -FUNC a084 eb 8 type_info::_Name_base_internal(type_info const *,__type_info_node *) -a084 c 265 5815 -a090 e 269 5815 -a09e 1a 273 5815 -a0b8 7 274 5815 -a0bf 16 281 5815 -a0d5 2 282 5815 -a0d7 5 281 5815 -a0dc b 285 5815 -a0e7 5 291 5815 -a0ec a 298 5815 -a0f6 4 299 5815 -a0fa 11 306 5815 -a10b 20 307 5815 -a12b 5 308 5815 -a130 9 314 5815 -a139 3 315 5815 -a13c 2 316 5815 -a13e 7 322 5815 -a145 9 329 5815 -a14e c 330 5815 -a15a 3 337 5815 -a15d 6 338 5815 -a163 3 330 5815 -a166 9 331 5815 -FUNC a16f 53 4 __clean_type_info_names_internal -a16f c 346 5815 -a17b 8 347 5815 -a183 4 348 5815 -a187 6 352 5815 -a18d 4 354 5815 -a191 3 356 5815 -a194 7 357 5815 -a19b 8 358 5815 -a1a3 4 354 5815 -a1a7 c 359 5815 -a1b3 6 363 5815 -a1b9 9 361 5815 -FUNC a1d0 88 8 strcmp -a1d0 0 65 926 -a1d0 4 73 926 -a1d4 4 74 926 -a1d8 6 76 926 -a1de 2 77 926 -a1e0 2 81 926 -a1e2 2 83 926 -a1e4 2 84 926 -a1e6 2 85 926 -a1e8 2 86 926 -a1ea 3 87 926 -a1ed 2 88 926 -a1ef 2 89 926 -a1f1 2 90 926 -a1f3 3 92 926 -a1f6 3 94 926 -a1f9 2 95 926 -a1fb 2 96 926 -a1fd 2 97 926 -a1ff 3 98 926 -a202 2 99 926 -a204 3 100 926 -a207 3 101 926 -a20a 2 102 926 -a20c 4 103 926 -a210 2 107 926 -a212 2 108 926 -a214 2 115 926 -a216 2 116 926 -a218 3 117 926 -a21b 1 118 926 -a21c 6 122 926 -a222 2 123 926 -a224 2 125 926 -a226 3 126 926 -a229 2 127 926 -a22b 2 128 926 -a22d 3 129 926 -a230 2 130 926 -a232 2 131 926 -a234 6 133 926 -a23a 2 134 926 -a23c 3 139 926 -a23f 3 140 926 -a242 2 141 926 -a244 2 142 926 -a246 2 143 926 -a248 2 144 926 -a24a 3 145 926 -a24d 2 146 926 -a24f 2 147 926 -a251 2 148 926 -a253 3 149 926 -a256 2 150 926 -FUNC a258 65 c strcpy_s -a258 0 13 781 -a258 30 18 781 -a288 c 19 781 -a294 2 21 781 -a296 d 23 781 -a2a3 4 27 781 -a2a7 2 29 781 -a2a9 e 30 781 -a2b7 5 33 781 -a2bc 1 34 781 -FUNC a2c0 7a c memset -a2c0 0 59 934 -a2c0 4 68 934 -a2c4 4 69 934 -a2c8 2 71 934 -a2ca 2 72 934 -a2cc 2 74 934 -a2ce 4 75 934 -a2d2 2 78 934 -a2d4 2 79 934 -a2d6 6 80 934 -a2dc 2 81 934 -a2de 7 82 934 -a2e5 2 83 934 -a2e7 5 85 934 -a2ec 1 91 934 -a2ed 2 92 934 -a2ef 3 94 934 -a2f2 2 95 934 -a2f4 2 97 934 -a2f6 3 98 934 -a2f9 2 99 934 -a2fb 2 101 934 -a2fd 2 103 934 -a2ff 3 104 934 -a302 3 105 934 -a305 2 106 934 -a307 2 110 934 -a309 3 111 934 -a30c 2 113 934 -a30e 2 115 934 -a310 3 117 934 -a313 2 119 934 -a315 2 122 934 -a317 3 123 934 -a31a 3 124 934 -a31d 2 125 934 -a31f 2 127 934 -a321 2 129 934 -a323 2 130 934 -a325 2 134 934 -a327 3 135 934 -a32a 3 137 934 -a32d 2 138 934 -a32f 4 142 934 -a333 1 143 934 -a334 1 145 934 -a335 4 148 934 -a339 1 150 934 -FUNC a340 365 c memcpy -a340 3 101 1027 -a343 1 113 1027 -a344 1 114 1027 -a345 3 116 1027 -a348 3 117 1027 -a34b 3 119 1027 -a34e 2 129 1027 -a350 2 131 1027 -a352 2 132 1027 -a354 2 134 1027 -a356 2 135 1027 -a358 2 137 1027 -a35a 6 138 1027 -a360 6 147 1027 -a366 2 148 1027 -a368 7 150 1027 -a36f 2 151 1027 -a371 1 153 1027 -a372 1 154 1027 -a373 3 155 1027 -a376 3 156 1027 -a379 2 157 1027 -a37b 1 158 1027 -a37c 1 159 1027 -a37d 2 160 1027 -a37f 1 163 1027 -a380 1 164 1027 -a381 1 165 1027 -a382 5 166 1027 -a387 6 179 1027 -a38d 2 180 1027 -a38f 3 182 1027 -a392 3 183 1027 -a395 3 185 1027 -a398 2 186 1027 -a39a 2 188 1027 -a39c 8 190 1027 -a3a4 2 208 1027 -a3a6 5 209 1027 -a3ab 3 211 1027 -a3ae 2 212 1027 -a3b0 3 214 1027 -a3b3 2 215 1027 -a3b5 7 217 1027 -a3bc 8 221 1027 -a3c4 14 225 1027 -a3d8 2 232 1027 -a3da 2 233 1027 -a3dc 2 235 1027 -a3de 3 236 1027 -a3e1 3 238 1027 -a3e4 3 239 1027 -a3e7 3 241 1027 -a3ea 3 242 1027 -a3ed 3 244 1027 -a3f0 3 245 1027 -a3f3 3 247 1027 -a3f6 2 248 1027 -a3f8 2 250 1027 -a3fa a 252 1027 -a404 2 256 1027 -a406 2 257 1027 -a408 2 259 1027 -a40a 3 260 1027 -a40d 3 262 1027 -a410 3 263 1027 -a413 3 265 1027 -a416 3 266 1027 -a419 3 268 1027 -a41c 2 269 1027 -a41e 2 271 1027 -a420 8 273 1027 -a428 2 277 1027 -a42a 2 278 1027 -a42c 2 280 1027 -a42e 3 281 1027 -a431 3 283 1027 -a434 3 284 1027 -a437 3 286 1027 -a43a 2 287 1027 -a43c 2 289 1027 -a43e 2a 291 1027 -a468 4 298 1027 -a46c 4 300 1027 -a470 4 302 1027 -a474 4 304 1027 -a478 4 306 1027 -a47c 4 308 1027 -a480 4 310 1027 -a484 4 312 1027 -a488 4 314 1027 -a48c 4 316 1027 -a490 4 318 1027 -a494 4 320 1027 -a498 4 322 1027 -a49c 4 324 1027 -a4a0 7 326 1027 -a4a7 2 328 1027 -a4a9 2 329 1027 -a4ab 19 331 1027 -a4c4 3 340 1027 -a4c7 1 341 1027 -a4c8 1 342 1027 -a4c9 3 344 1027 -a4cc 2 348 1027 -a4ce 2 350 1027 -a4d0 3 351 1027 -a4d3 1 352 1027 -a4d4 1 353 1027 -a4d5 3 354 1027 -a4d8 2 358 1027 -a4da 2 360 1027 -a4dc 3 361 1027 -a4df 3 362 1027 -a4e2 3 363 1027 -a4e5 1 364 1027 -a4e6 1 365 1027 -a4e7 5 366 1027 -a4ec 2 370 1027 -a4ee 2 372 1027 -a4f0 3 373 1027 -a4f3 3 374 1027 -a4f6 3 375 1027 -a4f9 3 376 1027 -a4fc 3 377 1027 -a4ff 1 378 1027 -a500 1 379 1027 -a501 3 380 1027 -a504 4 391 1027 -a508 4 392 1027 -a50c 6 397 1027 -a512 2 398 1027 -a514 3 400 1027 -a517 3 401 1027 -a51a 3 403 1027 -a51d 2 404 1027 -a51f 1 406 1027 -a520 2 407 1027 -a522 1 408 1027 -a523 9 410 1027 -a52c 2 414 1027 -a52e a 417 1027 -a538 2 422 1027 -a53a 5 423 1027 -a53f 3 425 1027 -a542 2 426 1027 -a544 3 428 1027 -a547 2 429 1027 -a549 7 431 1027 -a550 14 435 1027 -a564 3 442 1027 -a567 2 443 1027 -a569 3 445 1027 -a56c 3 446 1027 -a56f 3 448 1027 -a572 3 449 1027 -a575 3 451 1027 -a578 2 452 1027 -a57a 1 454 1027 -a57b 2 455 1027 -a57d 1 456 1027 -a57e a 458 1027 -a588 3 462 1027 -a58b 2 463 1027 -a58d 3 465 1027 -a590 3 466 1027 -a593 3 468 1027 -a596 3 469 1027 -a599 3 471 1027 -a59c 3 472 1027 -a59f 3 474 1027 -a5a2 2 475 1027 -a5a4 1 477 1027 -a5a5 2 478 1027 -a5a7 1 479 1027 -a5a8 8 481 1027 -a5b0 3 485 1027 -a5b3 2 486 1027 -a5b5 3 488 1027 -a5b8 3 489 1027 -a5bb 3 491 1027 -a5be 3 492 1027 -a5c1 3 494 1027 -a5c4 3 495 1027 -a5c7 3 497 1027 -a5ca 3 498 1027 -a5cd 3 500 1027 -a5d0 6 501 1027 -a5d6 1 503 1027 -a5d7 2 504 1027 -a5d9 1 505 1027 -a5da 2a 507 1027 -a604 4 516 1027 -a608 4 518 1027 -a60c 4 520 1027 -a610 4 522 1027 -a614 4 524 1027 -a618 4 526 1027 -a61c 4 528 1027 -a620 4 530 1027 -a624 4 532 1027 -a628 4 534 1027 -a62c 4 536 1027 -a630 4 538 1027 -a634 4 540 1027 -a638 4 542 1027 -a63c 7 544 1027 -a643 2 546 1027 -a645 2 547 1027 -a647 19 549 1027 -a660 3 558 1027 -a663 1 560 1027 -a664 1 561 1027 -a665 3 562 1027 -a668 3 566 1027 -a66b 3 568 1027 -a66e 3 569 1027 -a671 1 570 1027 -a672 1 571 1027 -a673 5 572 1027 -a678 3 576 1027 -a67b 3 578 1027 -a67e 3 579 1027 -a681 3 580 1027 -a684 3 581 1027 -a687 1 582 1027 -a688 1 583 1027 -a689 3 584 1027 -a68c 3 588 1027 -a68f 3 590 1027 -a692 3 591 1027 -a695 3 592 1027 -a698 3 593 1027 -a69b 3 594 1027 -a69e 3 595 1027 -a6a1 1 596 1027 -a6a2 1 597 1027 -a6a3 2 598 1027 -FUNC a6b0 365 c memmove -a6b0 3 101 977 -a6b3 1 113 977 -a6b4 1 114 977 -a6b5 3 116 977 -a6b8 3 117 977 -a6bb 3 119 977 -a6be 2 129 977 -a6c0 2 131 977 -a6c2 2 132 977 -a6c4 2 134 977 -a6c6 2 135 977 -a6c8 2 137 977 -a6ca 6 138 977 -a6d0 6 147 977 -a6d6 2 148 977 -a6d8 7 150 977 -a6df 2 151 977 -a6e1 1 153 977 -a6e2 1 154 977 -a6e3 3 155 977 -a6e6 3 156 977 -a6e9 2 157 977 -a6eb 1 158 977 -a6ec 1 159 977 -a6ed 2 160 977 -a6ef 1 163 977 -a6f0 1 164 977 -a6f1 1 165 977 -a6f2 5 166 977 -a6f7 6 179 977 -a6fd 2 180 977 -a6ff 3 182 977 -a702 3 183 977 -a705 3 185 977 -a708 2 186 977 -a70a 2 188 977 -a70c 8 190 977 -a714 2 208 977 -a716 5 209 977 -a71b 3 211 977 -a71e 2 212 977 -a720 3 214 977 -a723 2 215 977 -a725 7 217 977 -a72c 8 221 977 -a734 14 225 977 -a748 2 232 977 -a74a 2 233 977 -a74c 2 235 977 -a74e 3 236 977 -a751 3 238 977 -a754 3 239 977 -a757 3 241 977 -a75a 3 242 977 -a75d 3 244 977 -a760 3 245 977 -a763 3 247 977 -a766 2 248 977 -a768 2 250 977 -a76a a 252 977 -a774 2 256 977 -a776 2 257 977 -a778 2 259 977 -a77a 3 260 977 -a77d 3 262 977 -a780 3 263 977 -a783 3 265 977 -a786 3 266 977 -a789 3 268 977 -a78c 2 269 977 -a78e 2 271 977 -a790 8 273 977 -a798 2 277 977 -a79a 2 278 977 -a79c 2 280 977 -a79e 3 281 977 -a7a1 3 283 977 -a7a4 3 284 977 -a7a7 3 286 977 -a7aa 2 287 977 -a7ac 2 289 977 -a7ae 2a 291 977 -a7d8 4 298 977 -a7dc 4 300 977 -a7e0 4 302 977 -a7e4 4 304 977 -a7e8 4 306 977 -a7ec 4 308 977 -a7f0 4 310 977 -a7f4 4 312 977 -a7f8 4 314 977 -a7fc 4 316 977 -a800 4 318 977 -a804 4 320 977 -a808 4 322 977 -a80c 4 324 977 -a810 7 326 977 -a817 2 328 977 -a819 2 329 977 -a81b 19 331 977 -a834 3 340 977 -a837 1 341 977 -a838 1 342 977 -a839 3 344 977 -a83c 2 348 977 -a83e 2 350 977 -a840 3 351 977 -a843 1 352 977 -a844 1 353 977 -a845 3 354 977 -a848 2 358 977 -a84a 2 360 977 -a84c 3 361 977 -a84f 3 362 977 -a852 3 363 977 -a855 1 364 977 -a856 1 365 977 -a857 5 366 977 -a85c 2 370 977 -a85e 2 372 977 -a860 3 373 977 -a863 3 374 977 -a866 3 375 977 -a869 3 376 977 -a86c 3 377 977 -a86f 1 378 977 -a870 1 379 977 -a871 3 380 977 -a874 4 391 977 -a878 4 392 977 -a87c 6 397 977 -a882 2 398 977 -a884 3 400 977 -a887 3 401 977 -a88a 3 403 977 -a88d 2 404 977 -a88f 1 406 977 -a890 2 407 977 -a892 1 408 977 -a893 9 410 977 -a89c 2 414 977 -a89e a 417 977 -a8a8 2 422 977 -a8aa 5 423 977 -a8af 3 425 977 -a8b2 2 426 977 -a8b4 3 428 977 -a8b7 2 429 977 -a8b9 7 431 977 -a8c0 14 435 977 -a8d4 3 442 977 -a8d7 2 443 977 -a8d9 3 445 977 -a8dc 3 446 977 -a8df 3 448 977 -a8e2 3 449 977 -a8e5 3 451 977 -a8e8 2 452 977 -a8ea 1 454 977 -a8eb 2 455 977 -a8ed 1 456 977 -a8ee a 458 977 -a8f8 3 462 977 -a8fb 2 463 977 -a8fd 3 465 977 -a900 3 466 977 -a903 3 468 977 -a906 3 469 977 -a909 3 471 977 -a90c 3 472 977 -a90f 3 474 977 -a912 2 475 977 -a914 1 477 977 -a915 2 478 977 -a917 1 479 977 -a918 8 481 977 -a920 3 485 977 -a923 2 486 977 -a925 3 488 977 -a928 3 489 977 -a92b 3 491 977 -a92e 3 492 977 -a931 3 494 977 -a934 3 495 977 -a937 3 497 977 -a93a 3 498 977 -a93d 3 500 977 -a940 6 501 977 -a946 1 503 977 -a947 2 504 977 -a949 1 505 977 -a94a 2a 507 977 -a974 4 516 977 -a978 4 518 977 -a97c 4 520 977 -a980 4 522 977 -a984 4 524 977 -a988 4 526 977 -a98c 4 528 977 -a990 4 530 977 -a994 4 532 977 -a998 4 534 977 -a99c 4 536 977 -a9a0 4 538 977 -a9a4 4 540 977 -a9a8 4 542 977 -a9ac 7 544 977 -a9b3 2 546 977 -a9b5 2 547 977 -a9b7 19 549 977 -a9d0 3 558 977 -a9d3 1 560 977 -a9d4 1 561 977 -a9d5 3 562 977 -a9d8 3 566 977 -a9db 3 568 977 -a9de 3 569 977 -a9e1 1 570 977 -a9e2 1 571 977 -a9e3 5 572 977 -a9e8 3 576 977 -a9eb 3 578 977 -a9ee 3 579 977 -a9f1 3 580 977 -a9f4 3 581 977 -a9f7 1 582 977 -a9f8 1 583 977 -a9f9 3 584 977 -a9fc 3 588 977 -a9ff 3 590 977 -aa02 3 591 977 -aa05 3 592 977 -aa08 3 593 977 -aa0b 3 594 977 -aa0e 3 595 977 -aa11 1 596 977 -aa12 1 597 977 -aa13 2 598 977 -FUNC aa15 3d 4 __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *) -aa15 0 67 5721 -aa15 33 68 5721 -aa48 5 69 5721 -aa4d 2 72 5721 -aa4f 3 73 5721 -FUNC aa52 e 0 __CxxSetUnhandledExceptionFilter -aa52 0 86 5721 -aa52 b 89 5721 -aa5d 2 90 5721 -aa5f 1 91 5721 -FUNC aa60 1a0 4 _NMSG_WRITE -aa60 2 174 2418 -aa62 a 178 2418 -aa6c f 179 2418 -aa7b a 182 2418 -aa85 2a 203 2418 -aaaf c 215 2418 -aabb 2a 224 2418 -aae5 1e 227 2418 -ab03 26 228 2418 -ab29 d 231 2418 -ab36 b 233 2418 -ab41 2f 234 2418 -ab70 20 237 2418 -ab90 22 238 2418 -abb2 15 242 2418 -abc7 a 205 2418 -abd1 9 206 2418 -abda 24 212 2418 -abfe 2 245 2418 -FUNC ac00 20 4 _GET_RTERRMSG -ac00 0 268 2418 -ac00 2 271 2418 -ac02 13 272 2418 -ac15 2 275 2418 -ac17 1 276 2418 -ac18 7 273 2418 -ac1f 1 276 2418 -FUNC ac20 39 0 _FF_MSGBANNER -ac20 0 141 2418 -ac20 22 145 2418 -ac42 a 147 2418 -ac4c c 148 2418 -ac58 1 150 2418 -FUNC ac59 1 4 _initp_misc_winxfltr -ac59 0 105 2752 -ac59 1 106 2752 -FUNC ac5a 32 4 xcptlookup -ac5a 0 410 2752 -ac5a b 411 2752 -ac65 14 418 2752 -ac79 e 425 2752 -ac87 2 428 2752 -ac89 2 426 2752 -ac8b 1 429 2752 -FUNC ac8c 15e 8 _XcptFilter -ac8c 6 206 2752 -ac92 7 213 2752 -ac99 8 214 2752 -aca1 34 219 2752 -acd5 2 221 2752 -acd7 2 225 2752 -acd9 3 227 2752 -acdc 7 234 2752 -ace3 7 235 2752 -acea 5 243 2752 -acef 4 248 2752 -acf3 8 249 2752 -acfb 3 255 2752 -acfe 6 259 2752 -ad04 6 273 2752 -ad0a 6 274 2752 -ad10 c 283 2752 -ad1c 17 291 2752 -ad33 1e 294 2752 -ad51 3 291 2752 -ad54 c 321 2752 -ad60 9 323 2752 -ad69 7 325 2752 -ad70 9 327 2752 -ad79 7 329 2752 -ad80 9 331 2752 -ad89 7 333 2752 -ad90 9 335 2752 -ad99 7 337 2752 -ada0 9 339 2752 -ada9 7 341 2752 -adb0 9 343 2752 -adb9 7 345 2752 -adc0 7 347 2752 -adc7 8 356 2752 -adcf 3 361 2752 -add2 2 363 2752 -add4 4 368 2752 -add8 3 369 2752 -addb 7 375 2752 -ade2 6 377 2752 -ade8 2 379 2752 -FUNC adea 1b 8 __CppXcptFilter -adea 0 145 2752 -adea b 146 2752 -adf5 c 147 2752 -ae01 1 151 2752 -ae02 2 149 2752 -ae04 1 151 2752 -FUNC ae05 db 0 _setenvp -ae05 1 77 2280 -ae06 c 85 2280 -ae12 5 86 2280 -ae17 8 91 2280 -ae1f 4 98 2280 -ae23 8 99 2280 -ae2b 4 110 2280 -ae2f 1 111 2280 -ae30 11 112 2280 -ae41 15 117 2280 -ae56 2 118 2280 -ae58 9 121 2280 -ae61 9 123 2280 -ae6a 6 125 2280 -ae70 10 127 2280 -ae80 1c 133 2280 -ae9c 3 134 2280 -ae9f 6 121 2280 -aea5 b 138 2280 -aeb0 6 139 2280 -aeb6 2 142 2280 -aeb8 a 149 2280 -aec2 7 152 2280 -aec9 17 153 2280 -FUNC aee0 a 4 _set_pgmptr -aee0 a 334 2303 -FUNC aeea 198 c parse_cmdline -aeea 4 218 2322 -aeee 6 226 2322 -aef4 8 230 2322 -aefc 14 231 2322 -af10 3 250 2322 -af13 5 252 2322 -af18 5 254 2322 -af1d 9 255 2322 -af26 2 256 2322 -af28 2 258 2322 -af2a 4 259 2322 -af2e 8 260 2322 -af36 2 262 2322 -af38 f 264 2322 -af47 2 265 2322 -af49 6 266 2322 -af4f a 267 2322 -af59 1 268 2322 -af5a 1a 272 2322 -af74 4 277 2322 -af78 4 278 2322 -af7c 4 281 2322 -af80 9 286 2322 -af89 a 287 2322 -af93 3 288 2322 -af96 1 275 2322 -af97 2 276 2322 -af99 9 291 2322 -afa2 6 295 2322 -afa8 9 296 2322 -afb1 2 297 2322 -afb3 3 311 2322 -afb6 4 315 2322 -afba 1 318 2322 -afbb 1 319 2322 -afbc 5 316 2322 -afc1 5 321 2322 -afc6 5 324 2322 -afcb e 325 2322 -afd9 2 326 2322 -afdb 2 327 2322 -afdd d 329 2322 -afea 2 332 2322 -afec 5 336 2322 -aff1 4 337 2322 -aff5 4 338 2322 -aff9 6 339 2322 -afff 3 338 2322 -b002 14 343 2322 -b016 4 348 2322 -b01a 2 349 2322 -b01c 10 350 2322 -b02c b 351 2322 -b037 2 352 2322 -b039 a 354 2322 -b043 2 355 2322 -b045 a 356 2322 -b04f 1 357 2322 -b050 2 358 2322 -b052 5 361 2322 -b057 1 363 2322 -b058 5 372 2322 -b05d 4 376 2322 -b061 7 377 2322 -b068 2 378 2322 -b06a 8 379 2322 -b072 9 382 2322 -b07b 3 383 2322 -b07e 2 384 2322 -b080 2 385 2322 -FUNC b082 b9 0 _setargv -b082 7 88 2322 -b089 c 97 2322 -b095 5 98 2322 -b09a 18 104 2322 -b0b2 19 120 2322 -b0cb 11 127 2322 -b0dc 15 132 2322 -b0f1 a 136 2322 -b0fb 2 138 2322 -b0fd 8 140 2322 -b105 3 141 2322 -b108 2 142 2322 -b10a 13 149 2322 -b11d c 153 2322 -b129 6 157 2322 -b12f 4 172 2322 -b133 6 134 2322 -b139 2 173 2322 -FUNC b13b 135 0 __crtGetEnvironmentStringsA -b13b 2 43 4307 -b13d 1a 57 4307 -b157 8 59 4307 -b15f c 60 4307 -b16b b 62 4307 -b176 e 63 4307 -b184 9 68 4307 -b18d 4 71 4307 -b191 8 72 4307 -b199 7 73 4307 -b1a0 7 77 4307 -b1a7 7 78 4307 -b1ae 7 79 4307 -b1b5 1b 93 4307 -b1d0 13 97 4307 -b1e3 11 111 4307 -b1f4 a 113 4307 -b1fe 8 114 4307 -b206 7 99 4307 -b20d 4 100 4307 -b211 6 123 4307 -b217 2 152 4307 -b219 a 126 4307 -b223 6 127 4307 -b229 4 133 4307 -b22d 5 134 4307 -b232 5 135 4307 -b237 5 138 4307 -b23c d 140 4307 -b249 7 141 4307 -b250 5 142 4307 -b255 b 145 4307 -b260 7 147 4307 -b267 6 149 4307 -b26d 3 153 4307 -FUNC b270 24 0 _RTC_Initialize -FUNC b294 24 0 _RTC_Terminate -FUNC b2b8 5b 0 __heap_select -b2b8 6 70 5473 -b2be 23 143 5473 -b2e1 1b 144 5473 -b2fc d 145 5473 -b309 3 146 5473 -b30c 2 164 5473 -b30e 3 161 5473 -b311 2 164 5473 -FUNC b313 5a 4 _heap_init -b313 0 192 5473 -b313 20 199 5473 -b333 2 200 5473 -b335 1 240 5473 -b336 5 204 5473 -b33b a 206 5473 -b345 f 209 5473 -b354 c 211 5473 -b360 7 212 5473 -b367 2 213 5473 -b369 3 239 5473 -b36c 1 240 5473 -FUNC b36d 74 0 _heap_term -b36d 1 261 5473 -b36e c 264 5473 -b37a 1b 270 5473 -b395 f 273 5473 -b3a4 b 276 5473 -b3af d 278 5473 -b3bc 11 281 5473 -b3cd c 300 5473 -b3d9 7 301 5473 -b3e0 1 302 5473 -FUNC b3e1 6 0 _get_heap_handle -b3e1 0 320 5473 -b3e1 5 322 5473 -b3e6 1 323 5473 -FUNC b3e7 94 0 __security_init_cookie -b3e7 6 97 3689 -b3ed 21 114 3689 -b40e 7 116 3689 -b415 3 117 3689 -b418 a 127 3689 -b422 6 132 3689 -b428 8 135 3689 -b430 8 136 3689 -b438 8 137 3689 -b440 10 139 3689 -b450 2 144 3689 -b452 4 161 3689 -b456 7 163 3689 -b45d 4 166 3689 -b461 7 168 3689 -b468 6 172 3689 -b46e b 173 3689 -b479 2 175 3689 -FUNC b47b 8 4 _crt_debugger_hook -b47b 0 62 3966 -b47b 7 65 3966 -b482 1 66 3966 -FUNC b483 160 8 _flsbuf -b483 5 93 2041 -b488 c 104 2041 -b494 8 106 2041 -b49c b 107 2041 -b4a7 4 108 2041 -b4ab 8 109 2041 -b4b3 4 110 2041 -b4b7 b 111 2041 -b4c2 3 113 2041 -b4c5 6 124 2041 -b4cb b 126 2041 -b4d6 3 127 2041 -b4d9 8 128 2041 -b4e1 9 137 2041 -b4ea f 141 2041 -b4f9 25 151 2041 -b51e 7 153 2041 -b525 d 158 2041 -b532 5 162 2041 -b537 5 163 2041 -b53c 6 164 2041 -b542 7 166 2041 -b549 10 167 2041 -b559 2 168 2041 -b55b 6 131 2041 -b561 5 132 2041 -b566 2e 169 2041 -b594 12 171 2041 -b5a6 2 174 2041 -b5a8 8 179 2041 -b5b0 2 186 2041 -b5b2 3 187 2041 -b5b5 13 189 2041 -b5c8 5 201 2041 -b5cd 4 202 2041 -b5d1 5 203 2041 -b5d6 b 207 2041 -b5e1 2 212 2041 -FUNC b5e3 25 4 write_char -b5e3 0 2433 1163 -b5e3 a 2434 1163 -b5ed 2 2437 1163 -b5ef 12 2440 1163 -b601 3 2444 1163 -b604 1 2447 1163 -b605 2 2446 1163 -b607 1 2447 1163 -FUNC b608 25 c write_multi_char -b608 6 2498 1163 -b60e 2 2501 1163 -b610 e 2500 1163 -b61e 6 2501 1163 -b624 7 2499 1163 -b62b 2 2504 1163 -FUNC b62d 4f 4 write_string -b62d 0 2563 1163 -b62d 12 2564 1163 -b63f 6 2566 1163 -b645 2 2567 1163 -b647 11 2570 1163 -b658 6 2571 1163 -b65e a 2573 1163 -b668 a 2574 1163 -b672 9 2569 1163 -b67b 1 2579 1163 -FUNC b67c 910 10 _woutput_l -b67c 1b 975 1163 -b697 72 1031 1163 -b709 4 1036 1163 -b70d 2c 1073 1163 -b739 1a 1075 1163 -b753 8 1076 1163 -b75b 18 1131 1163 -b773 2 1171 1163 -b775 13 1173 1163 -b788 3 1174 1163 -b78b 5 1175 1163 -b790 1f 1179 1163 -b7af 4 1193 1163 -b7b3 5 1194 1163 -b7b8 4 1181 1163 -b7bc 5 1182 1163 -b7c1 4 1184 1163 -b7c5 5 1185 1163 -b7ca 7 1190 1163 -b7d1 5 1191 1163 -b7d6 3 1187 1163 -b7d9 5 1196 1163 -b7de 6 1200 1163 -b7e4 9 1206 1163 -b7ed b 1233 1163 -b7f8 4 1235 1163 -b7fc 3 1236 1163 -b7ff 5 1239 1163 -b804 10 1241 1163 -b814 5 1243 1163 -b819 4 1248 1163 -b81d 5 1249 1163 -b822 6 1253 1163 -b828 9 1259 1163 -b831 b 1284 1163 -b83c 4 1285 1163 -b840 5 1287 1163 -b845 10 1289 1163 -b855 5 1291 1163 -b85a 1b 1295 1163 -b875 7 1362 1163 -b87c 5 1363 1163 -b881 6 1301 1163 -b887 2 1303 1163 -b889 a 1304 1163 -b893 5 1306 1163 -b898 4 1308 1163 -b89c 5 1310 1163 -b8a1 4 1358 1163 -b8a5 5 1359 1163 -b8aa 10 1322 1163 -b8ba 3 1324 1163 -b8bd f 1325 1163 -b8cc d 1327 1163 -b8d9 3 1329 1163 -b8dc a 1330 1163 -b8e6 5 1332 1163 -b8eb 3c 1337 1163 -b927 4 1352 1163 -b92b 13 1166 1163 -b93e 5 1167 1163 -b943 32 1378 1163 -b975 d 1716 1163 -b982 4 1724 1163 -b986 18 1749 1163 -b99e c 1750 1163 -b9aa c 1381 1163 -b9b6 9 1383 1163 -b9bf 8 1564 1163 -b9c7 4 1565 1163 -b9cb d 1584 1163 -b9d8 3 1589 1163 -b9db 13 1610 1163 -b9ee 4 1611 1163 -b9f2 8 1612 1163 -b9fa 19 1614 1163 -ba13 13 1618 1163 -ba26 1 1620 1163 -ba27 9 1621 1163 -ba30 5 1622 1163 -ba35 1d 1378 1163 -ba52 9 1397 1163 -ba5b f 1415 1163 -ba6a 3 1420 1163 -ba6d 25 1430 1163 -ba92 3 1434 1163 -ba95 2 1436 1163 -ba97 4 1437 1163 -ba9b 6 1439 1163 -baa1 3 1440 1163 -baa4 5 1506 1163 -baa9 5 1523 1163 -baae e 1541 1163 -babc 6 1546 1163 -bac2 b 1548 1163 -bacd 7 1549 1163 -bad4 5 1550 1163 -bad9 4 1551 1163 -badd 5 1553 1163 -bae2 8 1543 1163 -baea 7 1544 1163 -baf1 5 1557 1163 -baf6 34 1378 1163 -bb2a d 1908 1163 -bb37 9 1910 1163 -bb40 8 1668 1163 -bb48 d 1688 1163 -bb55 6 1702 1163 -bb5b 7 1703 1163 -bb62 2 1704 1163 -bb64 5 1706 1163 -bb69 7 1708 1163 -bb70 5 1710 1163 -bb75 4 1864 1163 -bb79 7 1869 1163 -bb80 c 1933 1163 -bb8c 8 1939 1163 -bb94 5 1958 1163 -bb99 8 1751 1163 -bba1 9 1752 1163 -bbaa 5 1753 1163 -bbaf 3 1754 1163 -bbb2 9 1756 1163 -bbbb f 1759 1163 -bbca 2 1760 1163 -bbcc 13 1765 1163 -bbdf 7 1767 1163 -bbe6 e 1809 1163 -bbf4 27 1828 1163 -bc1b 14 1838 1163 -bc2f 15 1840 1163 -bc44 b 1844 1163 -bc4f 15 1846 1163 -bc64 5 1852 1163 -bc69 7 1853 1163 -bc70 4 1854 1163 -bc74 1 1857 1163 -bc75 5 1859 1163 -bc7a 7 1877 1163 -bc81 3 1887 1163 -bc84 2 1888 1163 -bc86 1a 1378 1163 -bca0 7 1892 1163 -bca7 11 1897 1163 -bcb8 10 1900 1163 -bcc8 3 1901 1163 -bccb 5 1903 1163 -bcd0 6 1961 1163 -bcd6 6 1987 1163 -bcdc 16 2026 1163 -bcf2 2 2045 1163 -bcf4 5 2051 1163 -bcf9 2 2071 1163 -bcfb 4 2074 1163 -bcff 6 2080 1163 -bd05 2 2099 1163 -bd07 5 2105 1163 -bd0c 10 2128 1163 -bd1c 7 2129 1163 -bd23 7 2130 1163 -bd2a c 2136 1163 -bd36 2 2142 1163 -bd38 6 2148 1163 -bd3e 7 2149 1163 -bd45 2 2150 1163 -bd47 4 2151 1163 -bd4b a 2152 1163 -bd55 3 2153 1163 -bd58 6 2157 1163 -bd5e 3 2158 1163 -bd61 6 2163 1163 -bd67 10 2165 1163 -bd77 10 2166 1163 -bd87 c 2168 1163 -bd93 3 2170 1163 -bd96 3 2172 1163 -bd99 2 2173 1163 -bd9b 8 2175 1163 -bda3 1 2176 1163 -bda4 19 2180 1163 -bdbd 9 2181 1163 -bdc6 1 2182 1163 -bdc7 2 2185 1163 -bdc9 4 1625 1163 -bdcd 8 1626 1163 -bdd5 c 1628 1163 -bde1 7 1629 1163 -bde8 2 1630 1163 -bdea 4 1629 1163 -bdee 8 1631 1163 -bdf6 a 2201 1163 -be00 7 2204 1163 -be07 6 2205 1163 -be0d 6 2207 1163 -be13 2 2208 1163 -be15 4 2210 1163 -be19 6 2212 1163 -be1f 2 2213 1163 -be21 4 2215 1163 -be25 6 2217 1163 -be2b 7 2218 1163 -be32 b 2224 1163 -be3d 6 2228 1163 -be43 11 2230 1163 -be54 11 2234 1163 -be65 d 2236 1163 -be72 f 2238 1163 -be81 a 2263 1163 -be8b 3 2267 1163 -be8e 3 2268 1163 -be91 3 2269 1163 -be94 1a 2276 1163 -beae 7 2278 1163 -beb5 e 2282 1163 -bec3 a 2283 1163 -becd 2 1690 1163 -becf 4 2279 1163 -bed3 2 2285 1163 -bed5 d 2286 1163 -bee2 c 2290 1163 -beee 11 2292 1163 -beff 6 2297 1163 -bf05 8 2298 1163 -bf0d 4 2299 1163 -bf11 1 2298 1163 -bf12 1b 1073 1163 -bf2d 17 1690 1163 -bf44 10 2376 1163 -bf54 38 2377 1163 -FUNC bf8c 97 10 _vswprintf_l -bf8c 7 125 1425 -bf93 24 130 1425 -bfb7 8 135 1425 -bfbf 29 155 1425 -bfe8 1d 166 1425 -c005 18 167 1425 -c01d 4 169 1425 -c021 2 183 1425 -FUNC c023 17 c _vswprintf -c023 0 192 1425 -c023 16 195 1425 -c039 1 197 1425 -FUNC c03a 5 10 __vswprintf_l -c03a 0 205 1425 -c03a 5 208 1425 -FUNC c03f 55 10 _vscwprintf_helper -c03f 7 430 1425 -c046 24 435 1425 -c06a 28 441 1425 -c092 2 443 1425 -FUNC c094 18 8 _vscwprintf -c094 0 449 1425 -c094 17 450 1425 -c0ab 1 451 1425 -FUNC c0ac 1a c _vscwprintf_l -c0ac 0 458 1425 -c0ac 19 459 1425 -c0c5 1 460 1425 -FUNC c0c6 18 8 _vscwprintf_p -c0c6 0 466 1425 -c0c6 17 467 1425 -c0dd 1 468 1425 -FUNC c0de 1a c _vscwprintf_p_l -c0de 0 475 1425 -c0de 19 476 1425 -c0f7 1 477 1425 -FUNC c0f8 14e 14 vfprintf_helper -c0f8 c 51 1462 -c104 5 54 1462 -c109 2e 56 1462 -c137 c 57 1462 -c143 3 60 1462 -c146 7 62 1462 -c14d 3 63 1462 -c150 b0 65 1462 -c200 5 66 1462 -c205 8 68 1462 -c20d 10 69 1462 -c21d a 70 1462 -c227 c 74 1462 -c233 3 78 1462 -c236 6 79 1462 -c23c a 75 1462 -FUNC c246 1e 10 _vfprintf_l -c246 0 87 1462 -c246 1d 88 1462 -c263 1 89 1462 -FUNC c264 1e 10 _vfprintf_s_l -c264 0 97 1462 -c264 1d 98 1462 -c281 1 99 1462 -FUNC c282 1e 10 _vfprintf_p_l -c282 0 107 1462 -c282 1d 108 1462 -c29f 1 109 1462 -FUNC c2a0 1c c vfprintf -c2a0 0 116 1462 -c2a0 1b 117 1462 -c2bb 1 118 1462 -FUNC c2bc 1c c vfprintf_s -c2bc 0 125 1462 -c2bc 1b 126 1462 -c2d7 1 127 1462 -FUNC c2d8 1c c _vfprintf_p -c2d8 0 134 1462 -c2d8 1b 135 1462 -c2f3 1 136 1462 -FUNC c2f4 25 4 write_char -c2f4 0 2433 1053 -c2f4 a 2434 1053 -c2fe 2 2437 1053 -c300 12 2440 1053 -c312 3 2444 1053 -c315 1 2447 1053 -c316 2 2446 1053 -c318 1 2447 1053 -FUNC c319 25 c write_multi_char -c319 6 2498 1053 -c31f 2 2501 1053 -c321 e 2500 1053 -c32f 6 2501 1053 -c335 7 2499 1053 -c33c 2 2504 1053 -FUNC c33e 4f 4 write_string -c33e 0 2563 1053 -c33e 12 2564 1053 -c350 6 2566 1053 -c356 2 2567 1053 -c358 11 2570 1053 -c369 6 2571 1053 -c36f a 2573 1053 -c379 a 2574 1053 -c383 9 2569 1053 -c38c 1 2579 1053 -FUNC c38d 91c 10 _woutput_s_l -c38d 29 975 1053 -c3b6 3 976 1053 -c3b9 f 1007 1053 -c3c8 24 2172 1053 -c3ec 2f 1031 1053 -c41b 18 1036 1053 -c433 2e 1073 1053 -c461 16 1078 1053 -c477 e 1079 1053 -c485 11 1124 1053 -c496 10 1131 1053 -c4a6 2 1171 1053 -c4a8 13 1173 1053 -c4bb 3 1174 1053 -c4be 5 1175 1053 -c4c3 1e 1179 1053 -c4e1 3 1193 1053 -c4e4 5 1194 1053 -c4e9 4 1181 1053 -c4ed 5 1182 1053 -c4f2 4 1184 1053 -c4f6 5 1185 1053 -c4fb 7 1190 1053 -c502 5 1191 1053 -c507 3 1187 1053 -c50a 5 1196 1053 -c50f 6 1200 1053 -c515 5 1206 1053 -c51a e 1233 1053 -c528 4 1235 1053 -c52c 3 1236 1053 -c52f 5 1239 1053 -c534 10 1241 1053 -c544 5 1243 1053 -c549 4 1248 1053 -c54d 5 1249 1053 -c552 6 1253 1053 -c558 5 1259 1053 -c55d e 1284 1053 -c56b 4 1285 1053 -c56f 5 1287 1053 -c574 10 1289 1053 -c584 5 1291 1053 -c589 1b 1295 1053 -c5a4 7 1362 1053 -c5ab 5 1363 1053 -c5b0 6 1301 1053 -c5b6 2 1303 1053 -c5b8 7 1304 1053 -c5bf 5 1306 1053 -c5c4 4 1308 1053 -c5c8 5 1310 1053 -c5cd 4 1358 1053 -c5d1 5 1359 1053 -c5d6 10 1322 1053 -c5e6 3 1324 1053 -c5e9 c 1325 1053 -c5f5 d 1327 1053 -c602 3 1329 1053 -c605 7 1330 1053 -c60c 5 1332 1053 -c611 3c 1337 1053 -c64d 4 1352 1053 -c651 14 1166 1053 -c665 5 1167 1053 -c66a 32 1378 1053 -c69c d 1716 1053 -c6a9 4 1724 1053 -c6ad 18 1749 1053 -c6c5 c 1750 1053 -c6d1 c 1381 1053 -c6dd 9 1383 1053 -c6e6 8 1564 1053 -c6ee 4 1565 1053 -c6f2 d 1584 1053 -c6ff 3 1589 1053 -c702 13 1610 1053 -c715 4 1611 1053 -c719 8 1612 1053 -c721 19 1614 1053 -c73a 13 1618 1053 -c74d 1 1620 1053 -c74e 9 1621 1053 -c757 5 1622 1053 -c75c 1e 1378 1053 -c77a 9 1397 1053 -c783 f 1415 1053 -c792 3 1420 1053 -c795 25 1430 1053 -c7ba 3 1434 1053 -c7bd 2 1436 1053 -c7bf 4 1437 1053 -c7c3 6 1439 1053 -c7c9 3 1440 1053 -c7cc 5 1506 1053 -c7d1 5 1523 1053 -c7d6 e 1541 1053 -c7e4 6 1546 1053 -c7ea b 1548 1053 -c7f5 7 1549 1053 -c7fc 5 1550 1053 -c801 4 1551 1053 -c805 5 1553 1053 -c80a 8 1543 1053 -c812 7 1544 1053 -c819 5 1557 1053 -c81e 34 1378 1053 -c852 9 1908 1053 -c85b 9 1910 1053 -c864 8 1668 1053 -c86c d 1688 1053 -c879 6 1702 1053 -c87f 7 1703 1053 -c886 2 1704 1053 -c888 5 1706 1053 -c88d 7 1708 1053 -c894 5 1710 1053 -c899 4 1864 1053 -c89d 7 1869 1053 -c8a4 c 1933 1053 -c8b0 8 1939 1053 -c8b8 5 1958 1053 -c8bd 8 1751 1053 -c8c5 9 1752 1053 -c8ce 5 1753 1053 -c8d3 3 1754 1053 -c8d6 9 1756 1053 -c8df f 1759 1053 -c8ee 3 1760 1053 -c8f1 15 1765 1053 -c906 7 1767 1053 -c90d e 1809 1053 -c91b 27 1828 1053 -c942 14 1838 1053 -c956 15 1840 1053 -c96b b 1844 1053 -c976 15 1846 1053 -c98b 5 1852 1053 -c990 7 1853 1053 -c997 4 1854 1053 -c99b 1 1857 1053 -c99c 5 1859 1053 -c9a1 3 1877 1053 -c9a4 7 1887 1053 -c9ab 2 1888 1053 -c9ad 1a 1378 1053 -c9c7 7 1892 1053 -c9ce 11 1897 1053 -c9df 10 1900 1053 -c9ef 3 1901 1053 -c9f2 5 1903 1053 -c9f7 6 1961 1053 -c9fd 6 1987 1053 -ca03 16 2026 1053 -ca19 2 2045 1053 -ca1b 5 2051 1053 -ca20 2 2071 1053 -ca22 4 2074 1053 -ca26 6 2080 1053 -ca2c 2 2099 1053 -ca2e 5 2105 1053 -ca33 10 2128 1053 -ca43 7 2129 1053 -ca4a 7 2130 1053 -ca51 c 2136 1053 -ca5d 2 2142 1053 -ca5f 6 2148 1053 -ca65 7 2149 1053 -ca6c 2 2150 1053 -ca6e 4 2151 1053 -ca72 a 2152 1053 -ca7c 3 2153 1053 -ca7f 6 2157 1053 -ca85 3 2158 1053 -ca88 6 2163 1053 -ca8e 10 2165 1053 -ca9e 10 2166 1053 -caae c 2168 1053 -caba 3 2170 1053 -cabd 3 2172 1053 -cac0 2 2173 1053 -cac2 8 2175 1053 -caca 1 2176 1053 -cacb 19 2180 1053 -cae4 9 2181 1053 -caed 1 2182 1053 -caee 2 2185 1053 -caf0 4 1625 1053 -caf4 8 1626 1053 -cafc c 1628 1053 -cb08 7 1629 1053 -cb0f 2 1630 1053 -cb11 4 1629 1053 -cb15 8 1631 1053 -cb1d a 2201 1053 -cb27 7 2204 1053 -cb2e 6 2205 1053 -cb34 6 2207 1053 -cb3a 2 2208 1053 -cb3c 4 2210 1053 -cb40 6 2212 1053 -cb46 2 2213 1053 -cb48 4 2215 1053 -cb4c 6 2217 1053 -cb52 7 2218 1053 -cb59 b 2224 1053 -cb64 6 2228 1053 -cb6a 11 2230 1053 -cb7b 11 2234 1053 -cb8c d 2236 1053 -cb99 f 2238 1053 -cba8 a 2263 1053 -cbb2 3 2267 1053 -cbb5 3 2268 1053 -cbb8 3 2269 1053 -cbbb 1a 2276 1053 -cbd5 7 2278 1053 -cbdc e 2282 1053 -cbea a 2283 1053 -cbf4 2 1690 1053 -cbf6 4 2279 1053 -cbfa 2 2285 1053 -cbfc d 2286 1053 -cc09 c 2290 1053 -cc15 11 2292 1053 -cc26 6 2297 1053 -cc2c 8 2298 1053 -cc34 16 2299 1053 -cc4a 7 1073 1053 -cc51 10 2310 1053 -cc61 10 2376 1053 -cc71 38 2377 1053 -FUNC cca9 154 10 _validate_param_reuseW -cca9 3 606 1108 -ccac 21 610 1108 -cccd 13 617 1108 -cce0 13 618 1108 -ccf3 10 620 1108 -cd03 4a 629 1108 -cd4d 54 632 1108 -cda1 2 633 1108 -cda3 1a 639 1108 -cdbd f 645 1108 -cdcc 23 626 1108 -cdef c 614 1108 -cdfb 2 646 1108 -FUNC cdfd 25 4 write_char -cdfd 0 2433 1108 -cdfd a 2434 1108 -ce07 2 2437 1108 -ce09 12 2440 1108 -ce1b 3 2444 1108 -ce1e 1 2447 1108 -ce1f 2 2446 1108 -ce21 1 2447 1108 -FUNC ce22 25 c write_multi_char -ce22 6 2498 1108 -ce28 2 2501 1108 -ce2a e 2500 1108 -ce38 6 2501 1108 -ce3e 7 2499 1108 -ce45 2 2504 1108 -FUNC ce47 4f 4 write_string -ce47 0 2563 1108 -ce47 12 2564 1108 -ce59 6 2566 1108 -ce5f 2 2567 1108 -ce61 11 2570 1108 -ce72 6 2571 1108 -ce78 a 2573 1108 -ce82 a 2574 1108 -ce8c 9 2569 1108 -ce95 1 2579 1108 -FUNC ce96 f60 10 _woutput_p_l -ce96 1b 975 1108 -ceb1 20 1013 1108 -ced1 28 2172 1108 -cef9 2c 1031 1108 -cf25 4 1036 1108 -cf29 3 1038 1108 -cf2c 3 1041 1108 -cf2f 3 1043 1108 -cf32 f 1046 1108 -cf41 44 1073 1108 -cf85 1a 1078 1108 -cf9f 11 1079 1108 -cfb0 16 1082 1108 -cfc6 6 1084 1108 -cfcc 1c 1087 1108 -cfe8 6 1089 1108 -cfee 16 1091 1108 -d004 7 1093 1108 -d00b 2 1095 1108 -d00d 7 1097 1108 -d014 6 1101 1108 -d01a c 1103 1108 -d026 7 1104 1108 -d02d f 1106 1108 -d03c 1d 1109 1108 -d059 8 1112 1108 -d061 5 1131 1108 -d066 3 1117 1108 -d069 7 1131 1108 -d070 9 1120 1108 -d079 b 1131 1108 -d084 24 1137 1108 -d0a8 5 1145 1108 -d0ad 2 1171 1108 -d0af 16 1173 1108 -d0c5 3 1174 1108 -d0c8 5 1175 1108 -d0cd 1f 1179 1108 -d0ec 7 1193 1108 -d0f3 5 1194 1108 -d0f8 7 1181 1108 -d0ff 5 1182 1108 -d104 7 1184 1108 -d10b 5 1185 1108 -d110 a 1190 1108 -d11a 5 1191 1108 -d11f 6 1187 1108 -d125 5 1196 1108 -d12a a 1200 1108 -d134 6 1203 1108 -d13a a 1206 1108 -d144 2 1209 1108 -d146 c 1211 1108 -d152 6 1212 1108 -d158 e 1214 1108 -d166 1c 1216 1108 -d182 8 1219 1108 -d18a 12 1221 1108 -d19c a 1274 1108 -d1a6 5 1275 1108 -d1ab c 1228 1108 -d1b7 b 1233 1108 -d1c2 7 1235 1108 -d1c9 3 1236 1108 -d1cc 5 1239 1108 -d1d1 10 1241 1108 -d1e1 5 1243 1108 -d1e6 4 1248 1108 -d1ea 5 1249 1108 -d1ef 6 1253 1108 -d1f5 6 1256 1108 -d1fb a 1259 1108 -d205 2 1262 1108 -d207 c 1264 1108 -d213 6 1265 1108 -d219 12 1267 1108 -d22b c 1280 1108 -d237 b 1284 1108 -d242 4 1285 1108 -d246 5 1287 1108 -d24b 22 1274 1108 -d26d 10 1289 1108 -d27d 5 1291 1108 -d282 1b 1295 1108 -d29d a 1362 1108 -d2a7 5 1363 1108 -d2ac 6 1301 1108 -d2b2 2 1303 1108 -d2b4 d 1304 1108 -d2c1 5 1306 1108 -d2c6 7 1308 1108 -d2cd 5 1310 1108 -d2d2 7 1358 1108 -d2d9 5 1359 1108 -d2de 10 1322 1108 -d2ee 3 1324 1108 -d2f1 12 1325 1108 -d303 d 1327 1108 -d310 3 1329 1108 -d313 d 1330 1108 -d320 5 1332 1108 -d325 24 1337 1108 -d349 4 1352 1108 -d34d 13 1166 1108 -d360 5 1167 1108 -d365 a 1342 1108 -d36f 5 1366 1108 -d374 36 1378 1108 -d3aa d 1716 1108 -d3b7 7 1724 1108 -d3be 14 1726 1108 -d3d2 9 1728 1108 -d3db 2a 1739 1108 -d405 b 1381 1108 -d410 9 1383 1108 -d419 b 1564 1108 -d424 7 1565 1108 -d42b d 1584 1108 -d438 b 1586 1108 -d443 a 1589 1108 -d44d 5 1592 1108 -d452 22 1378 1108 -d474 d 1394 1108 -d481 b 1397 1108 -d48c 2 1400 1108 -d48e 9 1402 1108 -d497 6 1404 1108 -d49d 24 1406 1108 -d4c1 5 1407 1108 -d4c6 d 1411 1108 -d4d3 c 1415 1108 -d4df 3 1420 1108 -d4e2 28 1430 1108 -d50a 7 1434 1108 -d511 2 1436 1108 -d513 7 1437 1108 -d51a 9 1439 1108 -d523 7 1440 1108 -d52a 5 1506 1108 -d52f 6 1520 1108 -d535 a 1523 1108 -d53f 2 1526 1108 -d541 9 1528 1108 -d54a 4 1530 1108 -d54e 6 1533 1108 -d554 c 1537 1108 -d560 b 1541 1108 -d56b 9 1546 1108 -d574 b 1548 1108 -d57f 7 1549 1108 -d586 5 1550 1108 -d58b 4 1551 1108 -d58f 5 1553 1108 -d594 8 1543 1108 -d59c 7 1544 1108 -d5a3 5 1557 1108 -d5a8 38 1378 1108 -d5e0 15 1908 1108 -d5f5 11 1910 1108 -d606 6 1665 1108 -d60c a 1668 1108 -d616 2 1671 1108 -d618 9 1673 1108 -d621 6 1675 1108 -d627 1f 1677 1108 -d646 5 1678 1108 -d64b c 1682 1108 -d657 d 1688 1108 -d664 9 1702 1108 -d66d 7 1703 1108 -d674 2 1704 1108 -d676 5 1706 1108 -d67b 7 1708 1108 -d682 5 1710 1108 -d687 7 1864 1108 -d68e 7 1869 1108 -d695 6 1910 1108 -d69b 9 1933 1108 -d6a4 a 1936 1108 -d6ae f 1939 1108 -d6bd 5 1942 1108 -d6c2 1a 1739 1108 -d6dc 21 1109 1108 -d6fd 17 1749 1108 -d714 9 1750 1108 -d71d 8 1751 1108 -d725 9 1752 1108 -d72e 5 1753 1108 -d733 3 1754 1108 -d736 a 1756 1108 -d740 f 1759 1108 -d74f 2 1760 1108 -d751 13 1765 1108 -d764 3 1767 1108 -d767 7 1806 1108 -d76e 9 1809 1108 -d777 2 1812 1108 -d779 a 1818 1108 -d783 6 1821 1108 -d789 16 1822 1108 -d79f 24 1828 1108 -d7c3 16 1838 1108 -d7d9 15 1840 1108 -d7ee b 1844 1108 -d7f9 15 1846 1108 -d80e 5 1852 1108 -d813 a 1853 1108 -d81d 4 1854 1108 -d821 1 1857 1108 -d822 5 1859 1108 -d827 7 1877 1108 -d82e 7 1887 1108 -d835 2 1888 1108 -d837 1a 1378 1108 -d851 7 1892 1108 -d858 14 1897 1108 -d86c 10 1900 1108 -d87c 3 1901 1108 -d87f 5 1903 1108 -d884 9 1944 1108 -d88d 28 1948 1108 -d8b5 5 1949 1108 -d8ba 7 1961 1108 -d8c1 4 1964 1108 -d8c5 6 1970 1108 -d8cb 9 1972 1108 -d8d4 28 1976 1108 -d8fc 5 1977 1108 -d901 c 1981 1108 -d90d 5 1987 1108 -d912 5 2019 1108 -d917 5 2020 1108 -d91c 6 2023 1108 -d922 b 2026 1108 -d92d 5 2029 1108 -d932 9 2031 1108 -d93b 4 2033 1108 -d93f 2 2036 1108 -d941 d 2040 1108 -d94e 5 2045 1108 -d953 6 2048 1108 -d959 b 2051 1108 -d964 5 2054 1108 -d969 9 2056 1108 -d972 4 2058 1108 -d976 2 2061 1108 -d978 d 2065 1108 -d985 2 2071 1108 -d987 5 2074 1108 -d98c 6 2077 1108 -d992 a 2080 1108 -d99c 2 2083 1108 -d99e 9 2085 1108 -d9a7 6 2087 1108 -d9ad 17 2089 1108 -d9c4 15 2114 1108 -d9d9 5 2115 1108 -d9de d 2094 1108 -d9eb 2 2099 1108 -d9ed 6 2102 1108 -d9f3 a 2105 1108 -d9fd 2 2108 1108 -d9ff 9 2110 1108 -da08 6 2112 1108 -da0e e 2119 1108 -da1c f 2128 1108 -da2b 7 2129 1108 -da32 c 2130 1108 -da3e c 2136 1108 -da4a 4 2142 1108 -da4e 6 2148 1108 -da54 7 2149 1108 -da5b 2 2150 1108 -da5d 1a 2114 1108 -da77 3 2151 1108 -da7a 10 2152 1108 -da8a 3 2153 1108 -da8d 7 2157 1108 -da94 3 2158 1108 -da97 6 2163 1108 -da9d 11 2165 1108 -daae 12 2166 1108 -dac0 d 2168 1108 -dacd 3 2170 1108 -dad0 b 2173 1108 -dadb 8 2175 1108 -dae3 1 2176 1108 -dae4 20 2180 1108 -db04 9 2181 1108 -db0d 1 2182 1108 -db0e 5 2185 1108 -db13 9 1594 1108 -db1c 9 1596 1108 -db25 c 1603 1108 -db31 c 1610 1108 -db3d 4 1611 1108 -db41 8 1612 1108 -db49 11 1614 1108 -db5a 13 1618 1108 -db6d 1 1620 1108 -db6e 9 1621 1108 -db77 2 1622 1108 -db79 19 1598 1108 -db92 5 1625 1108 -db97 8 1626 1108 -db9f c 1628 1108 -dbab 6 1629 1108 -dbb1 2 1630 1108 -dbb3 4 1629 1108 -dbb7 8 1631 1108 -dbbf 10 2189 1108 -dbcf a 2201 1108 -dbd9 a 2204 1108 -dbe3 6 2205 1108 -dbe9 6 2207 1108 -dbef 2 2208 1108 -dbf1 4 2210 1108 -dbf5 6 2212 1108 -dbfb 2 2213 1108 -dbfd 4 2215 1108 -dc01 6 2217 1108 -dc07 7 2218 1108 -dc0e b 2224 1108 -dc19 9 2228 1108 -dc22 11 2230 1108 -dc33 11 2234 1108 -dc44 13 2236 1108 -dc57 f 2238 1108 -dc66 a 2263 1108 -dc70 3 2267 1108 -dc73 3 2268 1108 -dc76 3 2269 1108 -dc79 1a 2276 1108 -dc93 7 2278 1108 -dc9a e 2282 1108 -dca8 a 2283 1108 -dcb2 2 2310 1108 -dcb4 4 2279 1108 -dcb8 2 2285 1108 -dcba d 2286 1108 -dcc7 f 2290 1108 -dcd6 11 2292 1108 -dce7 6 2297 1108 -dced 8 2298 1108 -dcf5 4 2299 1108 -dcf9 1 2298 1108 -dcfa 12 1073 1108 -dd0c c 2310 1108 -dd18 c 2314 1108 -dd24 10 2319 1108 -dd34 16 2321 1108 -dd4a 2 2360 1108 -dd4c 9 2361 1108 -dd55 6 2362 1108 -dd5b 2 2344 1108 -dd5d 3 2345 1108 -dd60 2 2346 1108 -dd62 2 2324 1108 -dd64 6 2325 1108 -dd6a 9 2319 1108 -dd73 13 1043 1108 -dd86 17 1121 1108 -dd9d f 1818 1108 -ddac 10 2376 1108 -ddbc 3a 2377 1108 -FUNC ddf6 1f 0 _initp_misc_cfltcvt_tab -ddf6 2 54 4074 -ddf8 8 56 4074 -de00 14 58 4074 -de14 1 60 4074 -FUNC de20 29 4 _ValidateImageBase -de20 0 44 3159 -de20 b 50 3159 -de2b 2 52 3159 -de2d 1 68 3159 -de2e 5 55 3159 -de33 6 56 3159 -de39 2 58 3159 -de3b d 62 3159 -de48 1 68 3159 -FUNC de50 42 8 _FindPESection -de50 0 92 3159 -de50 9 99 3159 -de59 19 108 3159 -de72 10 111 3159 -de82 a 108 3159 -de8c 5 123 3159 -de91 1 124 3159 -FUNC dea0 bb 4 _IsNonwritableInCurrentImage -dea0 33 149 3159 -ded3 7 156 3159 -deda f 164 3159 -dee9 2 166 3159 -deeb 8 174 3159 -def3 e 175 3159 -df01 2 176 3159 -df03 2 178 3159 -df05 12 185 3159 -df17 12 195 3159 -df29 17 187 3159 -df40 9 193 3159 -df49 12 195 3159 -FUNC df5b 19 4 _initp_misc_winsig -df5b 0 57 2785 -df5b 9 58 2785 -df64 5 59 2785 -df69 5 60 2785 -df6e 5 61 2785 -df73 1 62 2785 -FUNC df74 9b 4 ctrlevent_capture -df74 c 89 2785 -df80 9 94 2785 -df89 3 95 2785 -df8c 5 102 2785 -df91 5 103 2785 -df96 e 104 2785 -dfa4 7 105 2785 -dfab 2 107 2785 -dfad 5 108 2785 -dfb2 e 109 2785 -dfc0 7 110 2785 -dfc7 1 109 2785 -dfc8 9 113 2785 -dfd1 7 117 2785 -dfd8 c 120 2785 -dfe4 5 124 2785 -dfe9 4 128 2785 -dfed 2 120 2785 -dfef 8 121 2785 -dff7 6 130 2785 -dffd 7 131 2785 -e004 3 138 2785 -e007 8 139 2785 -FUNC e00f 34 4 siglookup -e00f 0 634 2785 -e00f b 635 2785 -e01a 15 645 2785 -e02f f 649 2785 -e03e 2 653 2785 -e040 2 658 2785 -e042 1 659 2785 -FUNC e043 d 0 __get_sigabrt -e043 0 676 2785 -e043 c 677 2785 -e04f 1 678 2785 -FUNC e050 9 0 __fpecode -e050 0 699 2785 -e050 8 700 2785 -e058 1 701 2785 -FUNC e059 9 0 __pxcptinfoptrs -e059 0 721 2785 -e059 8 722 2785 -e061 1 723 2785 -FUNC e062 23d 8 signal -e062 c 219 2785 -e06e 4 224 2785 -e072 3 230 2785 -e075 3 244 2785 -e078 12 230 2785 -e08a 2f 244 2785 -e0b9 13 327 2785 -e0cc 7 334 2785 -e0d3 8 335 2785 -e0db a 342 2785 -e0e5 17 346 2785 -e0fc 10 352 2785 -e10c 13 367 2785 -e11f 3 380 2785 -e122 e 382 2785 -e130 3 395 2785 -e133 17 401 2785 -e14a 5 390 2785 -e14f 5 401 2785 -e154 8 246 2785 -e15c 4 247 2785 -e160 12 254 2785 -e172 14 257 2785 -e186 6 259 2785 -e18c 2 261 2785 -e18e f 263 2785 -e19d a 264 2785 -e1a7 18 268 2785 -e1bf f 288 2785 -e1ce 4 289 2785 -e1d2 b 291 2785 -e1dd 2 293 2785 -e1df f 279 2785 -e1ee 4 280 2785 -e1f2 b 282 2785 -e1fd 2 284 2785 -e1ff f 296 2785 -e20e 4 297 2785 -e212 b 299 2785 -e21d 2 301 2785 -e21f f 271 2785 -e22e 4 272 2785 -e232 c 274 2785 -e23e c 305 2785 -e24a 9 309 2785 -e253 4 407 2785 -e257 3 305 2785 -e25a 9 306 2785 -e263 19 410 2785 -e27c 1a 419 2785 -e296 3 417 2785 -e299 6 423 2785 -FUNC e29f 1b0 4 raise -e29f c 452 2785 -e2ab 5 459 2785 -e2b0 3 460 2785 -e2b3 1f 462 2785 -e2d2 a 488 2785 -e2dc 4 489 2785 -e2e0 8 490 2785 -e2e8 a 465 2785 -e2f2 2 467 2785 -e2f4 11 492 2785 -e305 2 493 2785 -e307 f 462 2785 -e316 1c 500 2785 -e332 a 476 2785 -e33c 2 478 2785 -e33e a 470 2785 -e348 2 472 2785 -e34a a 481 2785 -e354 7 482 2785 -e35b a 502 2785 -e365 2 510 2785 -e367 4 509 2785 -e36b 6 510 2785 -e371 5 515 2785 -e376 7 520 2785 -e37d 5 527 2785 -e382 7 528 2785 -e389 5 530 2785 -e38e f 543 2785 -e39d 6 544 2785 -e3a3 3 545 2785 -e3a6 5 551 2785 -e3ab 6 552 2785 -e3b1 7 553 2785 -e3b8 5 561 2785 -e3bd 1c 568 2785 -e3d9 d 571 2785 -e3e6 5 568 2785 -e3eb 7 574 2785 -e3f2 c 577 2785 -e3fe 5 582 2785 -e403 8 588 2785 -e40b 2 589 2785 -e40d 6 577 2785 -e413 6 578 2785 -e419 9 579 2785 -e422 5 590 2785 -e427 f 597 2785 -e436 6 598 2785 -e43c 5 603 2785 -e441 6 604 2785 -e447 2 607 2785 -e449 6 608 2785 -FUNC e44f a 4 _initp_misc_rand_s -e44f 0 58 3075 -e44f 9 59 3075 -e458 1 60 3075 -FUNC e459 104 4 rand_s -e459 3 66 3075 -e45c b 67 3075 -e467 2b 68 3075 -e492 c 71 3075 -e49e d 77 3075 -e4ab 4 78 3075 -e4af 1e 80 3075 -e4cd e 83 3075 -e4db 4 84 3075 -e4df 2f 86 3075 -e50e 9 88 3075 -e517 5 89 3075 -e51c 16 94 3075 -e532 7 103 3075 -e539 9 107 3075 -e542 b 109 3075 -e54d 9 110 3075 -e556 6 112 3075 -e55c 1 113 3075 -FUNC e55d 15a 14 __getlocaleinfo -e55d 1d 70 3523 -e57a 7 76 3523 -e581 87 109 3523 -e608 13 103 3523 -e61b 5 114 3523 -e620 7 115 3523 -e627 3 141 3523 -e62a 12 142 3523 -e63c 20 106 3523 -e65c 5 108 3523 -e661 7 109 3523 -e668 4 111 3523 -e66c 5 118 3523 -e671 1a 126 3523 -e68b 2 127 3523 -e68d 2 129 3523 -e68f 10 134 3523 -e69f 16 135 3523 -e6b5 2 139 3523 -FUNC e6b7 a 4 _initp_misc_purevirt -e6b7 0 166 3523 -e6b7 9 167 3523 -e6c0 1 168 3523 -FUNC e6c1 a 4 _initp_misc_initcrit -e6c1 0 47 3609 -e6c1 9 48 3609 -e6ca 1 49 3609 -FUNC e6cb 10 8 __crtInitCritSecNoSpinCount -e6cb 0 76 3609 -e6cb a 77 3609 -e6d5 3 78 3609 -e6d8 3 79 3609 -FUNC e6db c5 8 __crtInitCritSecAndSpinCount -e6db c 109 3609 -e6e7 5 111 3609 -e6ec e 112 3609 -e6fa 4 114 3609 -e6fe 1b 120 3609 -e719 4 121 3609 -e71d 2 129 3609 -e71f b 130 3609 -e72a 4 131 3609 -e72e e 134 3609 -e73c 4 136 3609 -e740 5 149 3609 -e745 c 152 3609 -e751 3 155 3609 -e754 b 161 3609 -e75f 2 162 3609 -e761 1a 163 3609 -e77b 9 170 3609 -e784 8 171 3609 -e78c 4 173 3609 -e790 7 174 3609 -e797 3 176 3609 -e79a 6 177 3609 -FUNC e7a0 5e 4 _isatty -e7a0 0 37 4912 -e7a0 16 44 4912 -e7b6 2 59 4912 -e7b8 29 45 4912 -e7e1 1 59 4912 -e7e2 1b 58 4912 -e7fd 1 59 4912 -FUNC e7fe 2f 0 CPtoLCID -e7fe 0 329 4615 -e7fe 14 330 4615 -e812 2 345 4615 -e814 1 346 4615 -e815 5 342 4615 -e81a 1 346 4615 -e81b 5 339 4615 -e820 1 346 4615 -e821 5 336 4615 -e826 1 346 4615 -e827 5 333 4615 -e82c 1 346 4615 -FUNC e82d 55 0 setSBCS -e82d 4 363 4615 -e831 14 368 4615 -e845 3 371 4615 -e848 3 374 4615 -e84b 3 376 4615 -e84e 8 379 4615 -e856 a 381 4615 -e860 9 382 4615 -e869 b 384 4615 -e874 d 385 4615 -e881 1 386 4615 -FUNC e882 18a 0 setSBUpLow -e882 1d 402 4615 -e89f f 412 4615 -e8ae d 415 4615 -e8bb c 416 4615 -e8c7 e 420 4615 -e8d5 3 419 4615 -e8d8 28 421 4615 -e900 1d 427 4615 -e91d 23 432 4615 -e940 25 437 4615 -e965 2 442 4615 -e967 a 443 4615 -e971 5 445 4615 -e976 9 446 4615 -e97f 5 448 4615 -e984 5 450 4615 -e989 e 451 4615 -e997 2 453 4615 -e999 8 454 4615 -e9a1 5 442 4615 -e9a6 8 456 4615 -e9ae 2c 472 4615 -e9da 5 466 4615 -e9df 5 468 4615 -e9e4 7 469 4615 -e9eb 2 471 4615 -e9ed 3 472 4615 -e9f0 5 460 4615 -e9f5 17 474 4615 -FUNC ea0c a4 0 __updatetmbcinfo -ea0c c 496 4615 -ea18 7 499 4615 -ea1f 10 500 4615 -ea2f 3 533 4615 -ea32 4 536 4615 -ea36 8 538 4615 -ea3e 2 541 4615 -ea40 6 542 4615 -ea46 8 501 4615 -ea4e 4 503 4615 -ea52 e 506 4615 -ea60 17 512 4615 -ea77 7 517 4615 -ea7e 11 524 4615 -ea8f 7 525 4615 -ea96 11 528 4615 -eaa7 9 530 4615 -FUNC eab0 7a 0 getSystemCP -eab0 7 282 4615 -eab7 b 284 4615 -eac2 b 289 4615 -eacd a 291 4615 -ead7 14 292 4615 -eaeb 5 295 4615 -eaf0 a 297 4615 -eafa 8 298 4615 -eb02 5 302 4615 -eb07 12 305 4615 -eb19 f 308 4615 -eb28 2 309 4615 -FUNC eb2a 1d9 8 _setmbcp_nolock -eb2a 15 686 4615 -eb3f b 693 4615 -eb4a 9 696 4615 -eb53 7 698 4615 -eb5a 7 699 4615 -eb61 3 703 4615 -eb64 2 705 4615 -eb66 19 708 4615 -eb7f 2a 743 4615 -eba9 13 751 4615 -ebbc f 756 4615 -ebcb 15 761 4615 -ebe0 17 764 4615 -ebf7 c 766 4615 -ec03 f 712 4615 -ec12 15 715 4615 -ec27 9 720 4615 -ec30 8 723 4615 -ec38 12 724 4615 -ec4a 9 723 4615 -ec53 5 720 4615 -ec58 12 715 4615 -ec6a 20 731 4615 -ec8a d 733 4615 -ec97 7 736 4615 -ec9e 5 737 4615 -eca3 6 767 4615 -eca9 10 766 4615 -ecb9 8 771 4615 -ecc1 7 772 4615 -ecc8 b 775 4615 -ecd3 3 778 4615 -ecd6 2 780 4615 -ecd8 3 782 4615 -ecdb 8 785 4615 -ece3 2 789 4615 -ece5 6 794 4615 -eceb 6 797 4615 -ecf1 3 746 4615 -ecf4 f 802 4615 -FUNC ed03 3c 0 _getmbcp -ed03 6 819 4615 -ed09 a 821 4615 -ed13 9 822 4615 -ed1c 10 823 4615 -ed2c 2 826 4615 -ed2e f 825 4615 -ed3d 2 826 4615 -FUNC ed3f 19a 4 _setmbcp -ed3f c 574 4615 -ed4b 4 575 4615 -ed4f a 579 4615 -ed59 5 581 4615 -ed5e 3 582 4615 -ed61 b 585 4615 -ed6c 9 587 4615 -ed75 d 593 4615 -ed82 8 595 4615 -ed8a c 597 4615 -ed96 3 607 4615 -ed99 16 612 4615 -edaf 1a 614 4615 -edc9 7 615 4615 -edd0 3 619 4615 -edd3 9 620 4615 -eddc 17 622 4615 -edf3 8 624 4615 -edfb 4 625 4615 -edff 8 630 4615 -ee07 8 631 4615 -ee0f 8 632 4615 -ee17 a 633 4615 -ee21 d 634 4615 -ee2e 3 633 4615 -ee31 c 635 4615 -ee3d a 636 4615 -ee47 3 635 4615 -ee4a c 637 4615 -ee56 d 638 4615 -ee63 3 637 4615 -ee66 1c 640 4615 -ee82 7 641 4615 -ee89 6 645 4615 -ee8f 3 646 4615 -ee92 e 648 4615 -eea0 9 650 4615 -eea9 2 653 4615 -eeab 5 654 4615 -eeb0 8 660 4615 -eeb8 7 661 4615 -eebf b 662 4615 -eeca 2 668 4615 -eecc 4 673 4615 -eed0 3 682 4615 -eed3 6 683 4615 -FUNC eed9 1e 0 __initmbctable -eed9 0 843 4615 -eed9 9 853 4615 -eee2 8 854 4615 -eeea a 855 4615 -eef4 2 860 4615 -eef6 1 861 4615 -FUNC eef7 6 0 ___setlc_active_func -eef7 0 90 2995 -eef7 5 91 2995 -eefc 1 92 2995 -FUNC eefd 6 0 ___unguarded_readlc_active_add_func -eefd 0 104 2995 -eefd 5 105 2995 -ef02 1 106 2995 -FUNC ef03 140 4 __freetlocinfo -ef03 3 144 2995 -ef06 26 152 2995 -ef2c e 155 2995 -ef3a 6 157 2995 -ef40 d 158 2995 -ef4d e 162 2995 -ef5b 6 164 2995 -ef61 d 165 2995 -ef6e b 168 2995 -ef79 d 169 2995 -ef86 e 176 2995 -ef94 11 178 2995 -efa5 13 179 2995 -efb8 e 180 2995 -efc6 e 181 2995 -efd4 17 188 2995 -efeb 6 190 2995 -eff1 9 191 2995 -effa 6 194 2995 -f000 13 197 2995 -f013 7 199 2995 -f01a 10 205 2995 -f02a d 207 2995 -f037 b 214 2995 -f042 1 215 2995 -FUNC f043 86 4 __addlocaleref -f043 3 225 2995 -f046 e 227 2995 -f054 a 228 2995 -f05e 3 229 2995 -f061 a 231 2995 -f06b 3 232 2995 -f06e a 234 2995 -f078 3 235 2995 -f07b a 237 2995 -f085 3 238 2995 -f088 6 240 2995 -f08e f 242 2995 -f09d 3 243 2995 -f0a0 d 245 2995 -f0ad 9 246 2995 -f0b6 12 248 2995 -f0c8 1 249 2995 -FUNC f0c9 8c 4 __removelocaleref -f0c9 1 259 2995 -f0ca b 261 2995 -f0d5 9 263 2995 -f0de a 265 2995 -f0e8 3 266 2995 -f0eb a 268 2995 -f0f5 3 269 2995 -f0f8 a 271 2995 -f102 3 272 2995 -f105 a 274 2995 -f10f 3 275 2995 -f112 6 277 2995 -f118 f 279 2995 -f127 3 280 2995 -f12a d 282 2995 -f137 9 283 2995 -f140 11 285 2995 -f151 3 287 2995 -f154 1 288 2995 -FUNC f155 24 0 _copytlocinfo_nolock -f155 3 302 2995 -f158 d 303 2995 -f165 7 304 2995 -f16c 3 305 2995 -f16f 9 306 2995 -f178 1 308 2995 -FUNC f179 3e 0 _updatetlocinfoEx_nolock -f179 0 321 2995 -f179 9 324 2995 -f182 2 326 2995 -f184 4 327 2995 -f188 8 334 2995 -f190 5 339 2995 -f195 6 341 2995 -f19b e 350 2995 -f1a9 7 351 2995 -f1b0 3 355 2995 -f1b3 1 356 2995 -f1b4 2 325 2995 -f1b6 1 356 2995 -FUNC f1b7 76 0 __updatetlocinfo -f1b7 c 382 2995 -f1c3 7 384 2995 -f1ca 10 386 2995 -f1da 8 397 2995 -f1e2 4 399 2995 -f1e6 8 401 2995 -f1ee 2 404 2995 -f1f0 6 405 2995 -f1f6 8 387 2995 -f1fe 4 388 2995 -f202 11 390 2995 -f213 e 392 2995 -f221 8 394 2995 -f229 4 395 2995 -FUNC f22d 66 4 _configthreadlocale -f22d 2 420 2995 -f22f 5 434 2995 -f234 10 435 2995 -f244 19 437 2995 -f25d 1d 456 2995 -f27a 3 444 2995 -f27d 2 445 2995 -f27f 6 440 2995 -f285 2 441 2995 -f287 7 452 2995 -f28e 4 460 2995 -f292 1 462 2995 -FUNC f293 53 0 sync_legacy_variables_lk -f293 0 489 2995 -f293 e 490 2995 -f2a1 9 491 2995 -f2aa c 492 2995 -f2b6 c 493 2995 -f2c2 c 494 2995 -f2ce c 495 2995 -f2da b 496 2995 -f2e5 1 497 2995 -FUNC f2e6 96 4 _free_locale -f2e6 c 517 2995 -f2f2 9 518 2995 -f2fb 1c 522 2995 -f317 7 524 2995 -f31e 4 526 2995 -f322 8 534 2995 -f32a 3 535 2995 -f32d 8 537 2995 -f335 11 540 2995 -f346 7 541 2995 -f34d c 543 2995 -f359 7 552 2995 -f360 3 553 2995 -f363 7 554 2995 -f36a 6 556 2995 -f370 3 543 2995 -f373 9 545 2995 -FUNC f37c 5 4 __free_locale -f37c 0 562 2995 -f37c 5 563 2995 -FUNC f381 88 0 _get_current_locale -f381 c 687 2995 -f38d 7 689 2995 -f394 14 691 2995 -f3a8 b 693 2995 -f3b3 4 694 2995 -f3b7 5 697 2995 -f3bc 5 698 2995 -f3c1 5 706 2995 -f3c6 6 707 2995 -f3cc 8 708 2995 -f3d4 4 709 2995 -f3d8 8 710 2995 -f3e0 c 712 2995 -f3ec 9 715 2995 -f3f5 2 717 2995 -f3f7 6 718 2995 -f3fd 3 712 2995 -f400 9 713 2995 -FUNC f409 5 0 __get_current_locale -f409 0 722 2995 -f409 5 723 2995 -FUNC f40e 3 4 __init_dummy -f40e 0 1283 2995 -f40e 2 1284 2995 -f410 1 1285 2995 -FUNC f411 3e c _strcats -f411 2 1288 2995 -f413 f 1294 2995 -f422 26 1296 2995 -f448 6 1294 2995 -f44e 1 1299 2995 -FUNC f44f 129 8 __lc_strtolc -f44f 6 1302 2995 -f455 11 1307 2995 -f466 c 1309 2995 -f472 7 1310 2995 -f479 b 1313 2995 -f484 25 1315 2995 -f4a9 6 1317 2995 -f4af 2 1318 2995 -f4b1 15 1323 2995 -f4c6 1d 1328 2995 -f4e3 9 1329 2995 -f4ec 10 1331 2995 -f4fc c 1332 2995 -f508 14 1334 2995 -f51c 28 1335 2995 -f544 9 1340 2995 -f54d b 1348 2995 -f558 18 1350 2995 -f570 6 1338 2995 -f576 2 1353 2995 -FUNC f578 6b c __lc_lctostr -f578 5 1356 2995 -f57d 25 1357 2995 -f5a2 7 1358 2995 -f5a9 16 1359 2995 -f5bf c 1360 2995 -f5cb 16 1361 2995 -f5e1 2 1362 2995 -FUNC f5e3 171 0 _setlocale_get_all -f5e3 4 1124 2995 -f5e7 3 1126 2995 -f5ea 1d 1134 2995 -f607 3 1137 2995 -f60a 3 1139 2995 -f60d 2 1140 2995 -f60f 2f 1143 2995 -f63e 26 1146 2995 -f664 10 1147 2995 -f674 5 1148 2995 -f679 4 1141 2995 -f67d 2f 1143 2995 -f6ac a 1144 2995 -f6b6 8 1152 2995 -f6be 14 1154 2995 -f6d2 9 1156 2995 -f6db e 1159 2995 -f6e9 9 1161 2995 -f6f2 7 1165 2995 -f6f9 7 1166 2995 -f700 9 1168 2995 -f709 15 1170 2995 -f71e 9 1172 2995 -f727 e 1175 2995 -f735 9 1177 2995 -f73e 12 1183 2995 -f750 4 1187 2995 -FUNC f754 1d4 18 _expandlocale -f754 15 1198 2995 -f769 41 1230 2995 -f7aa 14 1211 2995 -f7be b 1216 2995 -f7c9 26 1219 2995 -f7ef 4 1220 2995 -f7f3 3 1222 2995 -f7f6 4 1223 2995 -f7fa 4 1224 2995 -f7fe 7 1226 2995 -f805 2 1228 2995 -f807 8 1230 2995 -f80f 6 1234 2995 -f815 2f 1236 2995 -f844 4 1241 2995 -f848 e 1243 2995 -f856 6 1244 2995 -f85c 10 1246 2995 -f86c 6 1247 2995 -f872 9 1251 2995 -f87b 10 1253 2995 -f88b a 1255 2995 -f895 2 1260 2995 -f897 8 1263 2995 -f89f 26 1267 2995 -f8c5 5 1271 2995 -f8ca e 1272 2995 -f8d8 5 1273 2995 -f8dd 10 1274 2995 -f8ed 22 1276 2995 -f90f 5 1277 2995 -f914 2 1212 2995 -f916 12 1278 2995 -FUNC f928 2f6 4 _setlocale_set_cat -f928 19 980 2995 -f941 5 993 2995 -f946 2f 998 2995 -f975 7 1000 2995 -f97c 19 1002 2995 -f995 6 1004 2995 -f99b c 1007 2995 -f9a7 16 1008 2995 -f9bd 2 1010 2995 -f9bf 3 1013 2995 -f9c2 d 1014 2995 -f9cf 2c 1015 2995 -f9fb 3 1016 2995 -f9fe 39 1019 2995 -fa37 6 1020 2995 -fa3d 15 1021 2995 -fa52 17 1022 2995 -fa69 a 1029 2995 -fa73 6 1031 2995 -fa79 18 1037 2995 -fa91 7 1039 2995 -fa98 8 1053 2995 -faa0 14 1054 2995 -fab4 18 1055 2995 -facc 2 1039 2995 -face a 1044 2995 -fad8 d 1046 2995 -fae5 b 1047 2995 -faf0 9 1058 2995 -faf9 26 1066 2995 -fb1f 2 1069 2995 -fb21 10 1071 2995 -fb31 22 1072 2995 -fb53 2 1081 2995 -fb55 4 1082 2995 -fb59 5 1083 2995 -fb5e 9 1085 2995 -fb67 6 1088 2995 -fb6d 9 1089 2995 -fb76 12 1091 2995 -fb88 6 1094 2995 -fb8e e 1095 2995 -fb9c f 1096 2995 -fbab 9 1097 2995 -fbb4 5 1099 2995 -fbb9 24 1106 2995 -fbdd 7 1109 2995 -fbe4 8 1110 2995 -fbec 6 1111 2995 -fbf2 18 1116 2995 -fc0a 3 1118 2995 -fc0d 11 1119 2995 -FUNC fc1e 1ce 4 _setlocale_nolock -fc1e 1a 873 2995 -fc38 7 877 2995 -fc3f 5 904 2995 -fc44 17 880 2995 -fc5b 5 882 2995 -fc60 12 888 2995 -fc72 1d 890 2995 -fc8f 2 894 2995 -fc91 d 898 2995 -fc9e 1e 900 2995 -fcbc 11 904 2995 -fccd 1d 907 2995 -fcea e 904 2995 -fcf8 1b 913 2995 -fd13 6 916 2995 -fd19 24 918 2995 -fd3d 18 922 2995 -fd55 3 923 2995 -fd58 7 925 2995 -fd5f 1 926 2995 -fd60 9 928 2995 -fd69 c 930 2995 -fd75 4 901 2995 -fd79 19 935 2995 -fd92 3 937 2995 -fd95 4 939 2995 -fd99 11 941 2995 -fdaa c 943 2995 -fdb6 2 947 2995 -fdb8 3 949 2995 -fdbb 2 952 2995 -fdbd 3 953 2995 -fdc0 9 937 2995 -fdc9 5 956 2995 -fdce 2 961 2995 -fdd0 3 962 2995 -fdd3 2 965 2995 -fdd5 5 966 2995 -fdda 12 972 2995 -FUNC fdec f3 8 _create_locale -fdec 0 605 2995 -fdec 10 609 2995 -fdfc 13 612 2995 -fe0f b 614 2995 -fe1a 4 610 2995 -fe1e c 658 2995 -fe2a 8 617 2995 -fe32 7 619 2995 -fe39 2 621 2995 -fe3b 14 623 2995 -fe4f 7 625 2995 -fe56 7 626 2995 -fe5d 2 628 2995 -fe5f c 630 2995 -fe6b 14 632 2995 -fe7f 7 634 2995 -fe86 7 635 2995 -fe8d 9 637 2995 -fe96 2 640 2995 -fe98 13 642 2995 -feab 8 644 2995 -feb3 7 645 2995 -feba 7 646 2995 -fec1 9 647 2995 -feca 2 648 2995 -fecc 2 650 2995 -fece 5 652 2995 -fed3 5 653 2995 -fed8 7 657 2995 -FUNC fedf 5 8 __create_locale -fedf 0 665 2995 -fedf 5 666 2995 -FUNC fee4 170 8 setlocale -fee4 c 791 2995 -fef0 5 792 2995 -fef5 25 797 2995 -ff1a a 799 2995 -ff24 5 801 2995 -ff29 4 806 2995 -ff2d 3 807 2995 -ff30 1b 808 2995 -ff4b 8 818 2995 -ff53 7 819 2995 -ff5a a 820 2995 -ff64 8 822 2995 -ff6c 19 826 2995 -ff85 18 834 2995 -ff9d a 836 2995 -ffa7 8 839 2995 -ffaf 7 840 2995 -ffb6 a 841 2995 -ffc0 7 842 2995 -ffc7 f 846 2995 -ffd6 c 847 2995 -ffe2 18 849 2995 -fffa 5 850 2995 -ffff b 852 2995 -1000a 8 822 2995 -10012 9 823 2995 -1001b 3 852 2995 -1001e 9 853 2995 -10027 2 855 2995 -10029 6 856 2995 -1002f 8 857 2995 -10037 c 860 2995 -10043 3 865 2995 -10046 6 866 2995 -1004c 3 860 2995 -1004f 5 862 2995 -FUNC 10054 15f 14 _wctomb_s_l -10054 8 56 6128 -1005c 11 57 6128 -1006d 7 60 6128 -10074 2 62 6128 -10076 4 64 6128 -1007a 7 67 6128 -10081 3 69 6128 -10084 23 74 6128 -100a7 b 77 6128 -100b2 c 79 6128 -100be a 81 6128 -100c8 8 83 6128 -100d0 b 85 6128 -100db b 125 6128 -100e6 13 126 6128 -100f9 5 136 6128 -100fe 4 91 6128 -10102 2c 93 6128 -1012e 2 94 6128 -10130 7 96 6128 -10137 6 98 6128 -1013d 15 100 6128 -10152 27 115 6128 -10179 7 129 6128 -10180 2 131 6128 -10182 2 133 6128 -10184 f 117 6128 -10193 10 119 6128 -101a3 b 121 6128 -101ae 5 123 6128 -FUNC 101b3 1b 10 wctomb_s -101b3 0 144 6128 -101b3 1a 145 6128 -101cd 1 146 6128 -FUNC 101ce 4f c _wctomb_l -101ce 6 178 6128 -101d4 f 181 6128 -101e3 1f 183 6128 -10202 19 184 6128 -1021b 2 185 6128 -FUNC 1021d 30 8 wctomb -1021d 4 191 6128 -10221 4 192 6128 -10225 1a 195 6128 -1023f 7 196 6128 -10246 2 197 6128 -10248 3 196 6128 -1024b 2 197 6128 -FUNC 1024d 36 8 _isleadbyte_l -1024d 6 55 6490 -10253 b 56 6490 -1025e 23 57 6490 -10281 2 58 6490 -FUNC 10283 e 4 isleadbyte -10283 0 63 6490 -10283 d 64 6490 -10290 1 65 6490 -FUNC 10291 16 8 _iswalpha_l -10291 0 71 6490 -10291 15 72 6490 -102a6 1 73 6490 -FUNC 102a7 11 4 iswalpha -102a7 0 78 6490 -102a7 10 79 6490 -102b7 1 80 6490 -FUNC 102b8 13 8 _iswupper_l -102b8 0 86 6490 -102b8 12 87 6490 -102ca 1 88 6490 -FUNC 102cb e 4 iswupper -102cb 0 93 6490 -102cb d 94 6490 -102d8 1 95 6490 -FUNC 102d9 13 8 _iswlower_l -102d9 0 101 6490 -102d9 12 102 6490 -102eb 1 103 6490 -FUNC 102ec e 4 iswlower -102ec 0 108 6490 -102ec d 109 6490 -102f9 1 110 6490 -FUNC 102fa 13 8 _iswdigit_l -102fa 0 116 6490 -102fa 12 117 6490 -1030c 1 118 6490 -FUNC 1030d e 4 iswdigit -1030d 0 123 6490 -1030d d 124 6490 -1031a 1 125 6490 -FUNC 1031b 16 8 _iswxdigit_l -1031b 0 131 6490 -1031b 15 132 6490 -10330 1 133 6490 -FUNC 10331 11 4 iswxdigit -10331 0 138 6490 -10331 10 139 6490 -10341 1 140 6490 -FUNC 10342 13 8 _iswspace_l -10342 0 146 6490 -10342 12 147 6490 -10354 1 148 6490 -FUNC 10355 e 4 iswspace -10355 0 153 6490 -10355 d 154 6490 -10362 1 155 6490 -FUNC 10363 13 8 _iswpunct_l -10363 0 161 6490 -10363 12 162 6490 -10375 1 163 6490 -FUNC 10376 e 4 iswpunct -10376 0 168 6490 -10376 d 169 6490 -10383 1 170 6490 -FUNC 10384 16 8 _iswalnum_l -10384 0 176 6490 -10384 15 177 6490 -10399 1 178 6490 -FUNC 1039a 11 4 iswalnum -1039a 0 183 6490 -1039a 10 184 6490 -103aa 1 185 6490 -FUNC 103ab 16 8 _iswprint_l -103ab 0 191 6490 -103ab 15 192 6490 -103c0 1 193 6490 -FUNC 103c1 11 4 iswprint -103c1 0 198 6490 -103c1 10 199 6490 -103d1 1 200 6490 -FUNC 103d2 16 8 _iswgraph_l -103d2 0 206 6490 -103d2 15 207 6490 -103e7 1 208 6490 -FUNC 103e8 11 4 iswgraph -103e8 0 213 6490 -103e8 10 214 6490 -103f8 1 215 6490 -FUNC 103f9 13 8 _iswcntrl_l -103f9 0 221 6490 -103f9 12 222 6490 -1040b 1 223 6490 -FUNC 1040c e 4 iswcntrl -1040c 0 228 6490 -1040c d 229 6490 -10419 1 230 6490 -FUNC 1041a c 4 iswascii -1041a 0 235 6490 -1041a b 236 6490 -10425 1 237 6490 -FUNC 10426 26 8 _iswcsym_l -10426 0 243 6490 -10426 21 244 6490 -10447 1 245 6490 -10448 3 244 6490 -1044b 1 245 6490 -FUNC 1044c 21 4 __iswcsym -1044c 0 250 6490 -1044c 1c 251 6490 -10468 1 252 6490 -10469 3 251 6490 -1046c 1 252 6490 -FUNC 1046d 26 8 _iswcsymf_l -1046d 0 258 6490 -1046d 21 259 6490 -1048e 1 260 6490 -1048f 3 259 6490 -10492 1 260 6490 -FUNC 10493 21 4 __iswcsymf -10493 0 265 6490 -10493 1c 266 6490 -104af 1 267 6490 -104b0 3 266 6490 -104b3 1 267 6490 -FUNC 104c0 95 0 _aulldvrm -104c0 0 45 5113 -104c0 1 47 5113 -104c1 4 79 5113 -104c5 2 80 5113 -104c7 2 81 5113 -104c9 4 82 5113 -104cd 4 83 5113 -104d1 2 84 5113 -104d3 2 85 5113 -104d5 2 86 5113 -104d7 4 87 5113 -104db 2 88 5113 -104dd 2 89 5113 -104df 2 94 5113 -104e1 4 95 5113 -104e5 2 96 5113 -104e7 2 97 5113 -104e9 4 98 5113 -104ed 2 99 5113 -104ef 2 100 5113 -104f1 2 107 5113 -104f3 4 108 5113 -104f7 4 109 5113 -104fb 4 110 5113 -104ff 2 112 5113 -10501 2 113 5113 -10503 2 114 5113 -10505 2 115 5113 -10507 2 116 5113 -10509 2 117 5113 -1050b 2 118 5113 -1050d 2 119 5113 -1050f 4 128 5113 -10513 2 129 5113 -10515 4 130 5113 -10519 2 131 5113 -1051b 2 132 5113 -1051d 2 133 5113 -1051f 4 141 5113 -10523 2 142 5113 -10525 2 143 5113 -10527 4 144 5113 -1052b 2 145 5113 -1052d 1 147 5113 -1052e 4 148 5113 -10532 4 149 5113 -10536 2 151 5113 -10538 4 160 5113 -1053c 4 161 5113 -10540 2 162 5113 -10542 2 163 5113 -10544 3 164 5113 -10547 2 169 5113 -10549 2 170 5113 -1054b 2 171 5113 -1054d 2 172 5113 -1054f 2 173 5113 -10551 1 179 5113 -10552 3 181 5113 -FUNC 10558 90 0 _local_unwind4 -FUNC 105e8 46 0 _unwind_handler4 -FUNC 1062e 1c 4 _seh_longjmp_unwind4 -FUNC 1064a 17 0 _EH4_CallFilterFunc -FUNC 10661 19 0 _EH4_TransferToHandler -FUNC 1067a 1a 0 _EH4_GlobalUnwind -FUNC 10694 17 8 _EH4_LocalUnwind -FUNC 106ab 33 0 write_char -106ab 0 2433 1218 -106ab a 2434 1218 -106b5 2 2437 1218 -106b7 21 2442 1218 -106d8 2 2444 1218 -106da 1 2447 1218 -106db 2 2446 1218 -106dd 1 2447 1218 -FUNC 106de 24 c write_multi_char -106de 6 2498 1218 -106e4 2 2501 1218 -106e6 e 2500 1218 -106f4 5 2501 1218 -106f9 7 2499 1218 -10700 2 2504 1218 -FUNC 10702 4a 4 write_string -10702 0 2563 1218 -10702 12 2564 1218 -10714 6 2566 1218 -1071a 2 2567 1218 -1071c e 2570 1218 -1072a 5 2571 1218 -1072f a 2573 1218 -10739 9 2574 1218 -10742 9 2569 1218 -1074b 1 2579 1218 -FUNC 1074c 9b0 10 _output_s_l -1074c 1b 975 1218 -10767 45 1036 1218 -107ac 2d 1031 1218 -107d9 b1 1033 1218 -1088a 8 1036 1218 -10892 28 1073 1218 -108ba 17 1078 1218 -108d1 e 1079 1218 -108df 11 1124 1218 -108f0 12 1131 1218 -10902 2 1171 1218 -10904 13 1173 1218 -10917 3 1174 1218 -1091a 5 1175 1218 -1091f 1e 1179 1218 -1093d 3 1193 1218 -10940 5 1194 1218 -10945 4 1181 1218 -10949 5 1182 1218 -1094e 4 1184 1218 -10952 5 1185 1218 -10957 7 1190 1218 -1095e 5 1191 1218 -10963 4 1187 1218 -10967 5 1196 1218 -1096c 5 1200 1218 -10971 9 1206 1218 -1097a b 1233 1218 -10985 4 1235 1218 -10989 3 1236 1218 -1098c 5 1239 1218 -10991 10 1241 1218 -109a1 5 1243 1218 -109a6 4 1248 1218 -109aa 5 1249 1218 -109af 5 1253 1218 -109b4 9 1259 1218 -109bd b 1284 1218 -109c8 4 1285 1218 -109cc 5 1287 1218 -109d1 10 1289 1218 -109e1 5 1291 1218 -109e6 18 1295 1218 -109fe 7 1362 1218 -10a05 5 1363 1218 -10a0a 5 1301 1218 -10a0f 1 1303 1218 -10a10 a 1304 1218 -10a1a 5 1306 1218 -10a1f 4 1308 1218 -10a23 5 1310 1218 -10a28 4 1358 1218 -10a2c 5 1359 1218 -10a31 c 1322 1218 -10a3d 2 1324 1218 -10a3f f 1325 1218 -10a4e a 1327 1218 -10a58 2 1329 1218 -10a5a a 1330 1218 -10a64 5 1332 1218 -10a69 30 1337 1218 -10a99 4 1352 1218 -10a9d 4 1154 1218 -10aa1 10 1158 1218 -10ab1 11 1160 1218 -10ac2 3 1161 1218 -10ac5 b 1163 1218 -10ad0 b 1166 1218 -10adb 5 1167 1218 -10ae0 32 1378 1218 -10b12 d 1716 1218 -10b1f 4 1724 1218 -10b23 18 1749 1218 -10b3b c 1750 1218 -10b47 8 1381 1218 -10b4f 9 1385 1218 -10b58 8 1561 1218 -10b60 7 1562 1218 -10b67 d 1584 1218 -10b74 3 1589 1218 -10b77 15 1635 1218 -10b8c 4 1636 1218 -10b90 8 1637 1218 -10b98 f 1639 1218 -10ba7 1d 1378 1218 -10bc4 12 1448 1218 -10bd6 16 1467 1218 -10bec 4 1470 1218 -10bf0 7 1471 1218 -10bf7 2 1472 1218 -10bf9 6 1499 1218 -10bff 7 1500 1218 -10c06 6 1503 1218 -10c0c 5 1506 1218 -10c11 5 1523 1218 -10c16 e 1541 1218 -10c24 6 1546 1218 -10c2a d 1548 1218 -10c37 7 1549 1218 -10c3e 5 1550 1218 -10c43 4 1551 1218 -10c47 5 1553 1218 -10c4c 8 1543 1218 -10c54 7 1544 1218 -10c5b 5 1557 1218 -10c60 34 1378 1218 -10c94 9 1908 1218 -10c9d 9 1910 1218 -10ca6 8 1668 1218 -10cae d 1688 1218 -10cbb 6 1702 1218 -10cc1 7 1703 1218 -10cc8 2 1704 1218 -10cca 5 1706 1218 -10ccf 7 1708 1218 -10cd6 5 1710 1218 -10cdb 4 1864 1218 -10cdf 7 1869 1218 -10ce6 c 1933 1218 -10cf2 8 1939 1218 -10cfa 5 1958 1218 -10cff 7 1751 1218 -10d06 9 1752 1218 -10d0f 5 1753 1218 -10d14 3 1754 1218 -10d17 9 1756 1218 -10d20 f 1759 1218 -10d2f 2 1760 1218 -10d31 15 1765 1218 -10d46 8 1767 1218 -10d4e e 1809 1218 -10d5c 27 1828 1218 -10d83 14 1838 1218 -10d97 15 1840 1218 -10dac a 1844 1218 -10db6 15 1846 1218 -10dcb 5 1852 1218 -10dd0 7 1853 1218 -10dd7 4 1854 1218 -10ddb 1 1857 1218 -10ddc 5 1859 1218 -10de1 3 1877 1218 -10de4 3 1887 1218 -10de7 2 1888 1218 -10de9 1a 1378 1218 -10e03 7 1892 1218 -10e0a 11 1897 1218 -10e1b c 1900 1218 -10e27 7 1901 1218 -10e2e 5 1903 1218 -10e33 5 1961 1218 -10e38 6 1987 1218 -10e3e 14 2026 1218 -10e52 2 2045 1218 -10e54 5 2051 1218 -10e59 2 2071 1218 -10e5b 3 2074 1218 -10e5e 6 2080 1218 -10e64 2 2099 1218 -10e66 5 2105 1218 -10e6b f 2128 1218 -10e7a 7 2129 1218 -10e81 7 2130 1218 -10e88 c 2136 1218 -10e94 2 2142 1218 -10e96 6 2148 1218 -10e9c 7 2149 1218 -10ea3 2 2150 1218 -10ea5 4 2151 1218 -10ea9 a 2152 1218 -10eb3 3 2153 1218 -10eb6 6 2157 1218 -10ebc 3 2158 1218 -10ebf 6 2163 1218 -10ec5 10 2165 1218 -10ed5 10 2166 1218 -10ee5 c 2168 1218 -10ef1 3 2170 1218 -10ef4 3 2172 1218 -10ef7 2 2173 1218 -10ef9 8 2175 1218 -10f01 1 2176 1218 -10f02 19 2180 1218 -10f1b 9 2181 1218 -10f24 1 2182 1218 -10f25 2 2185 1218 -10f27 7 1640 1218 -10f2e 2 1641 1218 -10f30 4 1640 1218 -10f34 5 1642 1218 -10f39 2 1644 1218 -10f3b 4 1645 1218 -10f3f 8 1646 1218 -10f47 5 1647 1218 -10f4c 6 1648 1218 -10f52 1 1649 1218 -10f53 4 1648 1218 -10f57 6 1650 1218 -10f5d a 2201 1218 -10f67 7 2204 1218 -10f6e 6 2205 1218 -10f74 4 2207 1218 -10f78 2 2208 1218 -10f7a 4 2210 1218 -10f7e 4 2212 1218 -10f82 2 2213 1218 -10f84 4 2215 1218 -10f88 4 2217 1218 -10f8c 7 2218 1218 -10f93 9 2224 1218 -10f9c 6 2228 1218 -10fa2 11 2230 1218 -10fb3 11 2234 1218 -10fc4 d 2236 1218 -10fd1 f 2238 1218 -10fe0 d 2243 1218 -10fed 3 2249 1218 -10ff0 3 2250 1218 -10ff3 1e 2252 1218 -11011 9 2253 1218 -1101a 18 2257 1218 -11032 2 1690 1218 -11034 4 2254 1218 -11038 2 2259 1218 -1103a d 2260 1218 -11047 c 2290 1218 -11053 f 2292 1218 -11062 6 2297 1218 -11068 8 2298 1218 -11070 1b 2299 1218 -1108b 17 1125 1218 -110a2 2 1690 1218 -110a4 f 2310 1218 -110b3 10 2376 1218 -110c3 39 2377 1218 -FUNC 110fc 129 10 _validate_param_reuseA -110fc 3 606 1271 -110ff 1c 610 1271 -1111b f 617 1271 -1112a 11 618 1271 -1113b 10 620 1271 -1114b 36 629 1271 -11181 46 632 1271 -111c7 2 633 1271 -111c9 17 639 1271 -111e0 c 645 1271 -111ec 2c 626 1271 -11218 b 614 1271 -11223 2 646 1271 -FUNC 11225 33 0 write_char -11225 0 2433 1271 -11225 a 2434 1271 -1122f 2 2437 1271 -11231 21 2442 1271 -11252 2 2444 1271 -11254 1 2447 1271 -11255 2 2446 1271 -11257 1 2447 1271 -FUNC 11258 24 c write_multi_char -11258 6 2498 1271 -1125e 2 2501 1271 -11260 e 2500 1271 -1126e 5 2501 1271 -11273 7 2499 1271 -1127a 2 2504 1271 -FUNC 1127c 4a 4 write_string -1127c 0 2563 1271 -1127c 12 2564 1271 -1128e 6 2566 1271 -11294 2 2567 1271 -11296 e 2570 1271 -112a4 5 2571 1271 -112a9 a 2573 1271 -112b3 9 2574 1271 -112bc 9 2569 1271 -112c5 1 2579 1271 -FUNC 112c6 10 4 get_crtdouble_arg -112c6 0 2684 1271 -112c6 f 2685 1271 -112d5 1 2686 1271 -FUNC 112d6 f88 10 _output_p_l -112d6 1b 975 1271 -112f1 15 986 1271 -11306 b 1007 1271 -11311 2b 2172 1271 -1133c 2c 1031 1271 -11368 9b 1033 1271 -11403 8 1036 1271 -1140b 3 1038 1271 -1140e 3 1041 1271 -11411 3 1043 1271 -11414 11 1046 1271 -11425 7 1061 1271 -1142c 4 1062 1271 -11430 7 1069 1271 -11437 32 1073 1271 -11469 19 1078 1271 -11482 e 1079 1271 -11490 1a 1082 1271 -114aa 6 1084 1271 -114b0 1b 1087 1271 -114cb 5 1089 1271 -114d0 15 1091 1271 -114e5 3 1093 1271 -114e8 2 1095 1271 -114ea 6 1097 1271 -114f0 5 1101 1271 -114f5 c 1103 1271 -11501 7 1104 1271 -11508 e 1106 1271 -11516 1a 1109 1271 -11530 8 1112 1271 -11538 f 1131 1271 -11547 9 1120 1271 -11550 b 1131 1271 -1155b 21 1137 1271 -1157c 5 1145 1271 -11581 16 1173 1271 -11597 3 1174 1271 -1159a 5 1175 1271 -1159f 1f 1179 1271 -115be 7 1193 1271 -115c5 5 1194 1271 -115ca 7 1181 1271 -115d1 5 1182 1271 -115d6 6 1184 1271 -115dc 5 1185 1271 -115e1 a 1190 1271 -115eb 5 1191 1271 -115f0 7 1187 1271 -115f7 5 1196 1271 -115fc 9 1200 1271 -11605 5 1203 1271 -1160a a 1206 1271 -11614 2 1209 1271 -11616 c 1211 1271 -11622 7 1212 1271 -11629 b 1214 1271 -11634 1b 1216 1271 -1164f 8 1219 1271 -11657 12 1221 1271 -11669 9 1274 1271 -11672 5 1275 1271 -11677 c 1228 1271 -11683 b 1233 1271 -1168e 7 1235 1271 -11695 3 1236 1271 -11698 5 1239 1271 -1169d 10 1241 1271 -116ad 5 1243 1271 -116b2 3 1248 1271 -116b5 5 1249 1271 -116ba 5 1253 1271 -116bf 5 1256 1271 -116c4 a 1259 1271 -116ce 2 1262 1271 -116d0 c 1264 1271 -116dc 7 1265 1271 -116e3 f 1267 1271 -116f2 c 1280 1271 -116fe b 1284 1271 -11709 4 1285 1271 -1170d 5 1287 1271 -11712 1c 1274 1271 -1172e 10 1289 1271 -1173e 5 1291 1271 -11743 18 1295 1271 -1175b a 1362 1271 -11765 5 1363 1271 -1176a 5 1301 1271 -1176f 1 1303 1271 -11770 d 1304 1271 -1177d 5 1306 1271 -11782 7 1308 1271 -11789 5 1310 1271 -1178e 7 1358 1271 -11795 5 1359 1271 -1179a c 1322 1271 -117a6 2 1324 1271 -117a8 12 1325 1271 -117ba a 1327 1271 -117c4 2 1329 1271 -117c6 d 1330 1271 -117d3 5 1332 1271 -117d8 18 1337 1271 -117f0 3 1352 1271 -117f3 13 1158 1271 -11806 11 1160 1271 -11817 8 1161 1271 -1181f 8 1163 1271 -11827 b 1166 1271 -11832 5 1167 1271 -11837 a 1342 1271 -11841 5 1366 1271 -11846 39 1378 1271 -1187f 9 1716 1271 -11888 7 1724 1271 -1188f 12 1726 1271 -118a1 a 1728 1271 -118ab 27 1739 1271 -118d2 b 1381 1271 -118dd c 1385 1271 -118e9 b 1561 1271 -118f4 a 1562 1271 -118fe d 1584 1271 -1190b 9 1586 1271 -11914 a 1589 1271 -1191e 5 1592 1271 -11923 25 1378 1271 -11948 b 1442 1271 -11953 5 1445 1271 -11958 b 1448 1271 -11963 2 1451 1271 -11965 a 1453 1271 -1196f 27 1457 1271 -11996 5 1458 1271 -1199b a 1462 1271 -119a5 19 1467 1271 -119be 4 1470 1271 -119c2 3 1471 1271 -119c5 2 1472 1271 -119c7 5 1477 1271 -119cc b 1480 1271 -119d7 2 1483 1271 -119d9 a 1485 1271 -119e3 f 1489 1271 -119f2 a 1494 1271 -119fc 6 1499 1271 -11a02 3 1500 1271 -11a05 9 1503 1271 -11a0e 5 1506 1271 -11a13 5 1520 1271 -11a18 a 1523 1271 -11a22 2 1526 1271 -11a24 a 1528 1271 -11a2e 9 1532 1271 -11a37 6 1533 1271 -11a3d 9 1537 1271 -11a46 b 1541 1271 -11a51 9 1546 1271 -11a5a d 1548 1271 -11a67 3 1549 1271 -11a6a 5 1550 1271 -11a6f 3 1551 1271 -11a72 5 1553 1271 -11a77 8 1543 1271 -11a7f 7 1544 1271 -11a86 5 1557 1271 -11a8b 38 1378 1271 -11ac3 14 1908 1271 -11ad7 f 1910 1271 -11ae6 5 1665 1271 -11aeb a 1668 1271 -11af5 2 1671 1271 -11af7 a 1673 1271 -11b01 25 1677 1271 -11b26 5 1678 1271 -11b2b 9 1682 1271 -11b34 9 1688 1271 -11b3d 9 1702 1271 -11b46 7 1703 1271 -11b4d 2 1704 1271 -11b4f 5 1706 1271 -11b54 3 1708 1271 -11b57 5 1710 1271 -11b5c 7 1864 1271 -11b63 7 1869 1271 -11b6a f 1933 1271 -11b79 9 1936 1271 -11b82 e 1939 1271 -11b90 5 1942 1271 -11b95 1c 1739 1271 -11bb1 21 1109 1271 -11bd2 16 1749 1271 -11be8 9 1750 1271 -11bf1 7 1751 1271 -11bf8 3 1767 1271 -11bfb 5 1806 1271 -11c00 9 1809 1271 -11c09 2 1812 1271 -11c0b 5 1753 1271 -11c10 3 1754 1271 -11c13 a 1756 1271 -11c1d f 1759 1271 -11c2c 2 1760 1271 -11c2e 11 1765 1271 -11c3f a 1818 1271 -11c49 6 1821 1271 -11c4f 16 1822 1271 -11c65 26 1828 1271 -11c8b 16 1838 1271 -11ca1 17 1840 1271 -11cb8 a 1844 1271 -11cc2 17 1846 1271 -11cd9 8 1852 1271 -11ce1 a 1853 1271 -11ceb 3 1854 1271 -11cee 3 1857 1271 -11cf1 5 1859 1271 -11cf6 7 1877 1271 -11cfd 7 1887 1271 -11d04 2 1888 1271 -11d06 1a 1378 1271 -11d20 7 1892 1271 -11d27 14 1897 1271 -11d3b c 1900 1271 -11d47 7 1901 1271 -11d4e 5 1903 1271 -11d53 a 1944 1271 -11d5d 2c 1948 1271 -11d89 5 1949 1271 -11d8e 6 1961 1271 -11d94 3 1964 1271 -11d97 6 1970 1271 -11d9d a 1972 1271 -11da7 2c 1976 1271 -11dd3 5 1977 1271 -11dd8 c 1981 1271 -11de4 5 1987 1271 -11de9 4 2019 1271 -11ded 4 2020 1271 -11df1 5 2023 1271 -11df6 b 2026 1271 -11e01 5 2029 1271 -11e06 a 2031 1271 -11e10 f 2035 1271 -11e1f a 2040 1271 -11e29 2 2045 1271 -11e2b 5 2048 1271 -11e30 b 2051 1271 -11e3b 2 2054 1271 -11e3d a 2056 1271 -11e47 b 2060 1271 -11e52 a 2065 1271 -11e5c 2 2071 1271 -11e5e 4 2074 1271 -11e62 5 2077 1271 -11e67 a 2080 1271 -11e71 2 2083 1271 -11e73 a 2085 1271 -11e7d b 2089 1271 -11e88 a 2094 1271 -11e92 2 2099 1271 -11e94 5 2102 1271 -11e99 a 2105 1271 -11ea3 2 2108 1271 -11ea5 a 2110 1271 -11eaf 38 2114 1271 -11ee7 5 2115 1271 -11eec b 2119 1271 -11ef7 13 2128 1271 -11f0a 7 2129 1271 -11f11 a 2130 1271 -11f1b f 2136 1271 -11f2a 2 2142 1271 -11f2c 6 2148 1271 -11f32 7 2149 1271 -11f39 2 2150 1271 -11f3b 7 2151 1271 -11f42 a 2152 1271 -11f4c 3 2153 1271 -11f4f 6 2157 1271 -11f55 3 2158 1271 -11f58 6 2163 1271 -11f5e 10 2165 1271 -11f6e 10 2166 1271 -11f7e c 2168 1271 -11f8a 3 2170 1271 -11f8d 3 2172 1271 -11f90 2 2173 1271 -11f92 8 2175 1271 -11f9a 1 2176 1271 -11f9b 24 2180 1271 -11fbf 9 2181 1271 -11fc8 1 2182 1271 -11fc9 5 2185 1271 -11fce c 1594 1271 -11fda c 1598 1271 -11fe6 9 1603 1271 -11fef e 1635 1271 -11ffd 4 1636 1271 -12001 8 1637 1271 -12009 8 1639 1271 -12011 1c 1598 1271 -1202d 6 1640 1271 -12033 2 1641 1271 -12035 4 1640 1271 -12039 5 1642 1271 -1203e 2 1644 1271 -12040 5 1645 1271 -12045 8 1646 1271 -1204d 5 1647 1271 -12052 6 1648 1271 -12058 1 1649 1271 -12059 4 1648 1271 -1205d 6 1650 1271 -12063 10 2189 1271 -12073 a 2201 1271 -1207d a 2204 1271 -12087 6 2205 1271 -1208d 4 2207 1271 -12091 2 2208 1271 -12093 4 2210 1271 -12097 4 2212 1271 -1209b 2 2213 1271 -1209d 4 2215 1271 -120a1 4 2217 1271 -120a5 7 2218 1271 -120ac 9 2224 1271 -120b5 4 2228 1271 -120b9 11 2230 1271 -120ca 11 2234 1271 -120db 13 2236 1271 -120ee f 2238 1271 -120fd d 2243 1271 -1210a 3 2249 1271 -1210d 3 2250 1271 -12110 1e 2252 1271 -1212e 9 2253 1271 -12137 18 2257 1271 -1214f 2 2310 1271 -12151 4 2254 1271 -12155 2 2259 1271 -12157 d 2260 1271 -12164 f 2290 1271 -12173 f 2292 1271 -12182 6 2297 1271 -12188 8 2298 1271 -12190 15 2299 1271 -121a5 2 1073 1271 -121a7 f 2310 1271 -121b6 b 2314 1271 -121c1 10 2319 1271 -121d1 1d 2321 1271 -121ee 2 2360 1271 -121f0 3 2361 1271 -121f3 2 2362 1271 -121f5 2 2324 1271 -121f7 f 2325 1271 -12206 10 1043 1271 -12216 10 2376 1271 -12226 38 2377 1271 -FUNC 1225e c2 4 _putwch_nolock -1225e 11 84 4721 -1226f a 89 4721 -12279 9 91 4721 -12282 5 92 4721 -12287 a 96 4721 -12291 6 97 4721 -12297 16 103 4721 -122ad 14 105 4721 -122c1 6 106 4721 -122c7 1c 123 4721 -122e3 1e 129 4721 -12301 2 131 4721 -12303 4 133 4721 -12307 d 134 4721 -12314 a 110 4721 -1231e 2 113 4721 -FUNC 12320 9b 4 _cputws -12320 c 151 4721 -1232c 5 153 4721 -12331 30 155 4721 -12361 b 157 4721 -1236c 9 158 4721 -12375 3 159 4721 -12378 a 160 4721 -12382 17 162 4721 -12399 4 164 4721 -1239d c 169 4721 -123a9 3 172 4721 -123ac 6 173 4721 -123b2 9 170 4721 -FUNC 123bb 46 4 _putwch -123bb c 49 4721 -123c7 8 52 4721 -123cf 4 53 4721 -123d3 f 55 4721 -123e2 c 58 4721 -123ee 4 62 4721 -123f2 6 63 4721 -123f8 9 59 4721 -FUNC 12401 113 10 _mbtowc_l -12401 8 55 6355 -12409 e 56 6355 -12417 4 61 6355 -1241b 7 64 6355 -12422 3 65 6355 -12425 4 59 6355 -12429 2 116 6355 -1242b b 70 6355 -12436 8 73 6355 -1243e 7 75 6355 -12445 7 76 6355 -1244c 11 77 6355 -1245d 13 80 6355 -12470 33 90 6355 -124a3 10 93 6355 -124b3 1b 99 6355 -124ce b 95 6355 -124d9 14 96 6355 -124ed 25 108 6355 -12512 2 111 6355 -FUNC 12514 17 c mbtowc -12514 0 123 6355 -12514 16 124 6355 -1252a 1 125 6355 -FUNC 1252b 83 10 _lseeki64_nolock -1252b 5 120 4872 -12530 4 126 4872 -12534 1b 134 4872 -1254f b 136 4872 -1255a 6 138 4872 -12560 22 146 4872 -12582 7 148 4872 -12589 2 149 4872 -1258b 19 152 4872 -125a4 8 153 4872 -125ac 2 154 4872 -FUNC 125ae 119 10 _lseeki64 -125ae c 73 4872 -125ba 9 74 4872 -125c3 24 77 4872 -125e7 2f 78 4872 -12616 46 79 4872 -1265c 7 81 4872 -12663 3 82 4872 -12666 9 84 4872 -1266f 1a 85 4872 -12689 2 86 4872 -1268b b 87 4872 -12696 7 88 4872 -1269d 8 89 4872 -126a5 c 93 4872 -126b1 6 97 4872 -126b7 6 98 4872 -126bd a 94 4872 -FUNC 126c7 7d 8 _set_osfhnd -126c7 0 213 4825 -126c7 2e 216 4825 -126f5 e 217 4825 -12703 b 218 4825 -1270e 3 226 4825 -12711 2 227 4825 -12713 3 223 4825 -12716 2 224 4825 -12718 9 220 4825 -12721 5 231 4825 -12726 5 232 4825 -1272b b 234 4825 -12736 8 235 4825 -1273e 5 236 4825 -12743 1 238 4825 -FUNC 12744 81 4 _free_osfhnd -12744 0 263 4825 -12744 38 266 4825 -1277c 9 268 4825 -12785 a 269 4825 -1278f 3 277 4825 -12792 2 278 4825 -12794 3 274 4825 -12797 2 275 4825 -12799 9 271 4825 -127a2 6 282 4825 -127a8 4 283 4825 -127ac b 285 4825 -127b7 7 286 4825 -127be 6 287 4825 -127c4 1 289 4825 -FUNC 127c5 71 4 _get_osfhandle -127c5 0 312 4825 -127c5 1f 313 4825 -127e4 2 318 4825 -127e6 e 314 4825 -127f4 3d 315 4825 -12831 1 318 4825 -12832 3 317 4825 -12835 1 318 4825 -FUNC 12836 a0 4 __lock_fhandle -12836 c 437 4825 -12842 17 438 4825 -12859 7 439 4825 -12860 7 444 4825 -12867 8 446 4825 -1286f 3 447 4825 -12872 5 448 4825 -12877 14 449 4825 -1288b 3 453 4825 -1288e 3 455 4825 -12891 c 457 4825 -1289d 5 462 4825 -128a2 1d 464 4825 -128bf 3 467 4825 -128c2 6 468 4825 -128c8 5 457 4825 -128cd 9 458 4825 -FUNC 128d6 22 4 _unlock_fhandle -128d6 0 489 4825 -128d6 21 490 4825 -128f7 1 491 4825 -FUNC 128f8 19f 0 _alloc_osfhnd -128f8 c 52 4825 -12904 4 53 4825 -12908 5 56 4825 -1290d c 58 4825 -12919 8 59 4825 -12921 8 61 4825 -12929 3 62 4825 -1292c c 71 4825 -12938 f 77 4825 -12947 17 83 4825 -1295e 6 85 4825 -12964 6 89 4825 -1296a 8 90 4825 -12972 6 91 4825 -12978 6 92 4825 -1297e 14 93 4825 -12992 3 99 4825 -12995 2 101 4825 -12997 3 103 4825 -1299a 9 106 4825 -129a3 6 111 4825 -129a9 a 113 4825 -129b3 6 119 4825 -129b9 7 120 4825 -129c0 5 83 4825 -129c5 6 106 4825 -129cb 9 107 4825 -129d4 6 124 4825 -129da 4 126 4825 -129de 3 127 4825 -129e1 19 128 4825 -129fa 6 137 4825 -12a00 6 71 4825 -12a06 12 145 4825 -12a18 9 151 4825 -12a21 7 152 4825 -12a28 c 154 4825 -12a34 4 155 4825 -12a38 3 156 4825 -12a3b 4 157 4825 -12a3f 4 158 4825 -12a43 8 154 4825 -12a4b 6 165 4825 -12a51 19 166 4825 -12a6a b 167 4825 -12a75 4 171 4825 -12a79 c 178 4825 -12a85 3 186 4825 -12a88 6 187 4825 -12a8e 9 179 4825 -FUNC 12a97 115 8 _open_osfhandle -12a97 c 343 4825 -12aa3 5 347 4825 -12aa8 2 351 4825 -12aaa 6 353 4825 -12ab0 3 354 4825 -12ab3 8 356 4825 -12abb 3 357 4825 -12abe 6 359 4825 -12ac4 3 360 4825 -12ac7 9 364 4825 -12ad0 4 365 4825 -12ad4 d 367 4825 -12ae1 3 409 4825 -12ae4 6 410 4825 -12aea 5 372 4825 -12aef 5 373 4825 -12af4 5 374 4825 -12af9 3 375 4825 -12afc f 380 4825 -12b0b b 381 4825 -12b16 7 382 4825 -12b1d 2 383 4825 -12b1f 3 385 4825 -12b22 b 391 4825 -12b2d 3 393 4825 -12b30 1a 395 4825 -12b4a 9 396 4825 -12b53 9 397 4825 -12b5c 7 399 4825 -12b63 c 401 4825 -12b6f 10 409 4825 -12b7f 5 401 4825 -12b84 5 402 4825 -12b89 1b 404 4825 -12ba4 8 406 4825 -FUNC 12bac 11e c _calloc_impl -12bac c 23 5592 -12bb8 9 28 5592 -12bc1 2e 30 5592 -12bef 9 32 5592 -12bf8 4 36 5592 -12bfc 3 37 5592 -12bff 5 41 5592 -12c04 5 43 5592 -12c09 9 46 5592 -12c12 9 50 5592 -12c1b b 52 5592 -12c26 8 56 5592 -12c2e 3 57 5592 -12c31 c 58 5592 -12c3d c 60 5592 -12c49 7 64 5592 -12c50 d 65 5592 -12c5d 4 93 5592 -12c61 11 94 5592 -12c72 c 97 5592 -12c7e f 109 5592 -12c8d b 111 5592 -12c98 6 112 5592 -12c9e 5 113 5592 -12ca3 5 60 5592 -12ca8 9 61 5592 -12cb1 4 100 5592 -12cb5 7 102 5592 -12cbc 6 103 5592 -12cc2 2 105 5592 -12cc4 6 119 5592 -FUNC 12cca 3f 8 calloc -12cca 4 145 5592 -12cce 5 146 5592 -12cd3 14 147 5592 -12ce7 15 149 5592 -12cfc 8 151 5592 -12d04 3 153 5592 -12d07 2 154 5592 -FUNC 12d09 21b 8 realloc -12d09 c 64 5338 -12d15 7 69 5338 -12d1c e 70 5338 -12d2a 7 73 5338 -12d31 7 75 5338 -12d38 5 76 5338 -12d3d d 81 5338 -12d4a 5 88 5338 -12d4f 9 89 5338 -12d58 8 91 5338 -12d60 3 92 5338 -12d63 12 96 5338 -12d75 8 100 5338 -12d7d f 102 5338 -12d8c 5 103 5338 -12d91 e 104 5338 -12d9f 4 107 5338 -12da3 10 108 5338 -12db3 9 110 5338 -12dbc a 111 5338 -12dc6 5 118 5338 -12dcb 4 120 5338 -12dcf 6 121 5338 -12dd5 9 123 5338 -12dde 15 124 5338 -12df3 4 127 5338 -12df7 10 128 5338 -12e07 c 129 5338 -12e13 c 135 5338 -12e1f 6 142 5338 -12e25 4 144 5338 -12e29 1 145 5338 -12e2a 9 147 5338 -12e33 14 148 5338 -12e47 6 135 5338 -12e4d 9 137 5338 -12e56 3 148 5338 -12e59 10 158 5338 -12e69 f 181 5338 -12e78 5 186 5338 -12e7d 5 183 5338 -12e82 11 186 5338 -12e93 2 188 5338 -12e95 8 160 5338 -12e9d 5 170 5338 -12ea2 3 167 5338 -12ea5 2 172 5338 -12ea7 6 174 5338 -12ead 2 155 5338 -12eaf 4 321 5338 -12eb3 1 322 5338 -12eb4 12 323 5338 -12ec6 c 332 5338 -12ed2 b 347 5338 -12edd 5 319 5338 -12ee2 7 327 5338 -12ee9 b 328 5338 -12ef4 2 329 5338 -12ef6 6 356 5338 -12efc 5 349 5338 -12f01 5 350 5338 -12f06 4 334 5338 -12f0a 16 341 5338 -12f20 4 343 5338 -FUNC 12f24 79 c _recalloc -12f24 3 744 5338 -12f27 a 749 5338 -12f31 28 751 5338 -12f59 4 753 5338 -12f5d 9 754 5338 -12f66 b 755 5338 -12f71 b 756 5338 -12f7c a 757 5338 -12f86 10 759 5338 -12f96 5 761 5338 -12f9b 2 762 5338 -FUNC 12f9d 21 0 _get_sbh_threshold -12f9d 0 61 5281 -12f9d 9 64 5281 -12fa6 2 66 5281 -12fa8 1 81 5281 -12fa9 14 69 5281 -12fbd 1 81 5281 -FUNC 12fbe 46 4 _set_amblksiz -12fbe 0 214 5281 -12fbe 2b 216 5281 -12fe9 1 224 5281 -12fea 11 217 5281 -12ffb 5 220 5281 -13000 3 223 5281 -13003 1 224 5281 -FUNC 13004 3c 4 _get_amblksiz -13004 0 243 5281 -13004 27 245 5281 -1302b 1 253 5281 -1302c 8 246 5281 -13034 8 249 5281 -1303c 3 252 5281 -1303f 1 253 5281 -FUNC 13040 48 4 __sbh_heap_init -13040 0 274 5281 -13040 1c 275 5281 -1305c 1 285 5281 -1305d 4 278 5281 -13061 7 280 5281 -13068 c 281 5281 -13074 13 284 5281 -13087 1 285 5281 -FUNC 13088 2b 4 __sbh_find_block -13088 0 306 5281 -13088 12 307 5281 -1309a 7 316 5281 -130a1 8 317 5281 -130a9 3 319 5281 -130ac 4 314 5281 -130b0 2 321 5281 -130b2 1 322 5281 -FUNC 130b3 314 8 __sbh_free_block -130b3 6 381 5281 -130b9 7 399 5281 -130c0 9 402 5281 -130c9 18 407 5281 -130e1 3 408 5281 -130e4 d 412 5281 -130f1 3 416 5281 -130f4 5 417 5281 -130f9 6 420 5281 -130ff b 424 5281 -1310a 4 429 5281 -1310e 5 430 5281 -13113 3 431 5281 -13116 8 434 5281 -1311e 3 439 5281 -13121 b 441 5281 -1312c e 442 5281 -1313a 5 443 5281 -1313f 2 445 5281 -13141 5 448 5281 -13146 11 449 5281 -13157 9 450 5281 -13160 9 455 5281 -13169 15 459 5281 -1317e 6 463 5281 -13184 5 464 5281 -13189 3 465 5281 -1318c f 468 5281 -1319b 3 474 5281 -1319e 6 477 5281 -131a4 b 478 5281 -131af 2 479 5281 -131b1 3 483 5281 -131b4 6 484 5281 -131ba 7 485 5281 -131c1 2 486 5281 -131c3 4 489 5281 -131c7 b 493 5281 -131d2 3 498 5281 -131d5 11 501 5281 -131e6 6 502 5281 -131ec 5 503 5281 -131f1 2 505 5281 -131f3 e 508 5281 -13201 6 509 5281 -13207 6 511 5281 -1320d c 516 5281 -13219 c 517 5281 -13225 8 520 5281 -1322d e 524 5281 -1323b 6 528 5281 -13241 3 529 5281 -13244 6 530 5281 -1324a 3 531 5281 -1324d 6 532 5281 -13253 8 535 5281 -1325b 18 541 5281 -13273 e 542 5281 -13281 f 543 5281 -13290 2 545 5281 -13292 6 547 5281 -13298 10 548 5281 -132a8 13 550 5281 -132bb 5 556 5281 -132c0 4 558 5281 -132c4 b 561 5281 -132cf d 564 5281 -132dc 6 568 5281 -132e2 1a 569 5281 -132fc 15 573 5281 -13311 16 577 5281 -13327 19 578 5281 -13340 9 579 5281 -13349 6 583 5281 -1334f 8 586 5281 -13357 16 589 5281 -1336d 25 595 5281 -13392 14 599 5281 -133a6 4 600 5281 -133aa a 603 5281 -133b4 8 608 5281 -133bc 9 609 5281 -133c5 2 611 5281 -FUNC 133c7 b0 0 __sbh_alloc_new_region -133c7 0 891 5281 -133c7 13 897 5281 -133da 1e 900 5281 -133f8 4 901 5281 -133fc 12 905 5281 -1340e 9 909 5281 -13417 18 913 5281 -1342f 2 914 5281 -13431 1a 918 5281 -1344b 10 920 5281 -1345b 2 921 5281 -1345d 9 927 5281 -13466 6 930 5281 -1346c 6 933 5281 -13472 4 935 5281 -13476 1 936 5281 -FUNC 13477 106 4 __sbh_alloc_new_group -13477 5 958 5281 -1347c 3 959 5281 -1347f 9 972 5281 -13488 4 973 5281 -1348c 2 976 5281 -1348e 1 977 5281 -1348f 4 974 5281 -13493 15 981 5281 -134a8 c 986 5281 -134b4 1f 993 5281 -134d3 8 994 5281 -134db 6 998 5281 -134e1 12 1001 5281 -134f3 4 1004 5281 -134f7 7 1005 5281 -134fe 8 1011 5281 -13506 10 1013 5281 -13516 12 1016 5281 -13528 3 1001 5281 -1352b 8 1021 5281 -13533 6 1023 5281 -13539 3 1024 5281 -1353c 6 1027 5281 -13542 3 1028 5281 -13545 5 1030 5281 -1354a a 1031 5281 -13554 9 1032 5281 -1355d b 1033 5281 -13568 e 1036 5281 -13576 5 1038 5281 -1357b 2 1039 5281 -FUNC 1357d 2df c __sbh_resize_block -1357d 6 1061 5281 -13583 c 1080 5281 -1358f b 1083 5281 -1359a 3 1084 5281 -1359d 12 1085 5281 -135af 7 1089 5281 -135b6 14 1096 5281 -135ca 13 1099 5281 -135dd 7 1105 5281 -135e4 8 1106 5281 -135ec 6 1107 5281 -135f2 8 1110 5281 -135fa 3 1115 5281 -135fd 9 1117 5281 -13606 11 1118 5281 -13617 5 1119 5281 -1361c 2 1121 5281 -1361e 5 1124 5281 -13623 14 1125 5281 -13637 6 1126 5281 -1363d 9 1131 5281 -13646 9 1132 5281 -1364f 12 1135 5281 -13661 a 1141 5281 -1366b 9 1142 5281 -13674 3 1143 5281 -13677 9 1147 5281 -13680 6 1148 5281 -13686 6 1149 5281 -1368c 3 1150 5281 -1368f 6 1151 5281 -13695 8 1154 5281 -1369d 18 1160 5281 -136b5 e 1161 5281 -136c3 6 1162 5281 -136c9 2 1164 5281 -136cb 6 1166 5281 -136d1 10 1167 5281 -136e1 13 1169 5281 -136f4 c 1174 5281 -13700 9 1176 5281 -13709 6 1180 5281 -1370f 9 1182 5281 -13718 7 1100 5281 -1371f 6 1186 5281 -13725 3 1189 5281 -13728 d 1195 5281 -13735 7 1198 5281 -1373c b 1199 5281 -13747 3 1200 5281 -1374a a 1203 5281 -13754 7 1208 5281 -1375b 5 1209 5281 -13760 3 1210 5281 -13763 8 1213 5281 -1376b 3 1218 5281 -1376e b 1221 5281 -13779 e 1222 5281 -13787 5 1223 5281 -1378c 2 1225 5281 -1378e 5 1228 5281 -13793 11 1229 5281 -137a4 9 1231 5281 -137ad 9 1236 5281 -137b6 9 1237 5281 -137bf 9 1240 5281 -137c8 4 1241 5281 -137cc 5 1242 5281 -137d1 3 1243 5281 -137d4 6 1249 5281 -137da 3 1250 5281 -137dd 6 1251 5281 -137e3 3 1252 5281 -137e6 6 1253 5281 -137ec 8 1256 5281 -137f4 18 1262 5281 -1380c e 1263 5281 -1381a 6 1264 5281 -13820 2 1266 5281 -13822 6 1268 5281 -13828 10 1269 5281 -13838 13 1271 5281 -1384b 5 1276 5281 -13850 4 1278 5281 -13854 6 1281 5281 -1385a 2 1282 5281 -FUNC 1385c cd 0 __sbh_heapmin -1385c 0 1302 5281 -1385c d 1306 5281 -13869 6 1310 5281 -1386f 17 1311 5281 -13886 15 1314 5281 -1389b 16 1318 5281 -138b1 19 1319 5281 -138ca 9 1320 5281 -138d3 f 1325 5281 -138e2 11 1328 5281 -138f3 28 1333 5281 -1391b 6 1334 5281 -13921 7 1338 5281 -13928 1 1340 5281 -FUNC 13929 2e2 0 __sbh_heap_check -13929 3 1361 5281 -1392c 12 1391 5281 -1393e 8 1393 5281 -13946 16 1398 5281 -1395c 3 1401 5281 -1395f 8 1402 5281 -13967 6 1406 5281 -1396d 9 1407 5281 -13976 c 1408 5281 -13982 3 1409 5281 -13985 3 1410 5281 -13988 6 1411 5281 -1398e 4 1418 5281 -13992 1b 1421 5281 -139ad 9 1424 5281 -139b6 9 1428 5281 -139bf 1c 1438 5281 -139db 2 1445 5281 -139dd 7 1446 5281 -139e4 1 1449 5281 -139e5 c 1452 5281 -139f1 3 1456 5281 -139f4 2 1458 5281 -139f6 6 1462 5281 -139fc 5 1463 5281 -13a01 3 1464 5281 -13a04 9 1465 5281 -13a0d 1e 1470 5281 -13a2b c 1475 5281 -13a37 2 1479 5281 -13a39 4 1481 5281 -13a3d 6 1484 5281 -13a43 10 1488 5281 -13a53 e 1492 5281 -13a61 2 1498 5281 -13a63 4 1502 5281 -13a67 20 1505 5281 -13a87 19 1509 5281 -13aa0 8 1514 5281 -13aa8 3 1518 5281 -13aab 6 1520 5281 -13ab1 8 1524 5281 -13ab9 4 1527 5281 -13abd e 1532 5281 -13acb 8 1536 5281 -13ad3 6 1541 5281 -13ad9 5 1542 5281 -13ade 3 1543 5281 -13ae1 8 1544 5281 -13ae9 c 1549 5281 -13af5 11 1554 5281 -13b06 6 1559 5281 -13b0c 3 1561 5281 -13b0f e 1563 5281 -13b1d 3 1564 5281 -13b20 2 1566 5281 -13b22 8 1568 5281 -13b2a 3 1569 5281 -13b2d 1c 1575 5281 -13b49 c 1580 5281 -13b55 10 1585 5281 -13b65 17 1591 5281 -13b7c 7 1595 5281 -13b83 7 1596 5281 -13b8a 16 1597 5281 -13ba0 f 1602 5281 -13baf 18 1606 5281 -13bc7 5 1608 5281 -13bcc 2 1609 5281 -13bce 4 1403 5281 -13bd2 4 1425 5281 -13bd6 4 1453 5281 -13bda 4 1485 5281 -13bde 4 1471 5281 -13be2 4 1439 5281 -13be6 4 1493 5281 -13bea 4 1537 5281 -13bee 4 1545 5281 -13bf2 4 1550 5281 -13bf6 4 1510 5281 -13bfa 4 1581 5281 -13bfe 4 1576 5281 -13c02 4 1592 5281 -13c06 5 1603 5281 -FUNC 13c0b a8 4 _set_sbh_threshold -13c0b 1 102 5281 -13c0c a 104 5281 -13c16 3 106 5281 -13c19 1 195 5281 -13c1a a 109 5281 -13c24 25 112 5281 -13c49 5 113 5281 -13c4e 4 114 5281 -13c52 2 195 5281 -13c54 6 173 5281 -13c5a 2 175 5281 -13c5c 5 179 5281 -13c61 2d 185 5281 -13c8e 6 186 5281 -13c94 a 187 5281 -13c9e 5 188 5281 -13ca3 b 193 5281 -13cae 4 194 5281 -13cb2 1 195 5281 -FUNC 13cb3 2e3 4 __sbh_alloc_block -13cb3 6 632 5281 -13cb9 5 633 5281 -13cbe 15 650 5281 -13cd3 5 668 5281 -13cd8 7 669 5281 -13cdf 5 671 5281 -13ce4 4 672 5281 -13ce8 2 674 5281 -13cea d 677 5281 -13cf7 a 682 5281 -13d01 e 686 5281 -13d0f 3 688 5281 -13d12 2 683 5281 -13d14 5 688 5281 -13d19 4 692 5281 -13d1d 8 694 5281 -13d25 e 698 5281 -13d33 3 700 5281 -13d36 2 695 5281 -13d38 5 700 5281 -13d3d 6 705 5281 -13d43 6 709 5281 -13d49 6 711 5281 -13d4f 4 707 5281 -13d53 4 715 5281 -13d57 8 717 5281 -13d5f 6 720 5281 -13d65 3 722 5281 -13d68 2 718 5281 -13d6a 5 722 5281 -13d6f 4 726 5281 -13d73 e 727 5281 -13d81 7 728 5281 -13d88 12 733 5281 -13d9a 2 734 5281 -13d9c 6 737 5281 -13da2 3 739 5281 -13da5 2 740 5281 -13da7 1c 745 5281 -13dc3 4 749 5281 -13dc7 14 751 5281 -13ddb e 752 5281 -13de9 3 751 5281 -13dec 12 754 5281 -13dfe a 760 5281 -13e08 d 763 5281 -13e15 2 768 5281 -13e17 2 767 5281 -13e19 1 768 5281 -13e1a 4 765 5281 -13e1e 7 770 5281 -13e25 5 775 5281 -13e2a 6 776 5281 -13e30 8 777 5281 -13e38 3 778 5281 -13e3b 8 781 5281 -13e43 8 784 5281 -13e4b 3 788 5281 -13e4e e 791 5281 -13e5c 15 792 5281 -13e71 8 793 5281 -13e79 2 795 5281 -13e7b f 798 5281 -13e8a f 799 5281 -13e99 e 800 5281 -13ea7 1c 809 5281 -13ec3 6 813 5281 -13ec9 3 814 5281 -13ecc 6 815 5281 -13ed2 3 816 5281 -13ed5 6 817 5281 -13edb 8 820 5281 -13ee3 18 826 5281 -13efb b 827 5281 -13f06 10 829 5281 -13f16 2 831 5281 -13f18 6 833 5281 -13f1e d 835 5281 -13f2b 16 837 5281 -13f41 3 831 5281 -13f44 4 844 5281 -13f48 2 846 5281 -13f4a 9 848 5281 -13f53 a 853 5281 -13f5d 4 855 5281 -13f61 e 858 5281 -13f6f 13 862 5281 -13f82 7 863 5281 -13f89 5 866 5281 -13f8e 6 868 5281 -13f94 2 869 5281 -FUNC 13f96 72 4 _fclose_nolock -13f96 2 86 1752 -13f98 2a 90 1752 -13fc2 6 96 1752 -13fc8 6 105 1752 -13fce 8 106 1752 -13fd6 13 108 1752 -13fe9 5 109 1752 -13fee 7 111 1752 -13ff5 7 120 1752 -13ffc 3 121 1752 -13fff 3 126 1752 -14002 5 127 1752 -14007 1 128 1752 -FUNC 14008 7c 4 fclose -14008 c 44 1752 -14014 4 45 1752 -14018 2d 47 1752 -14045 6 50 1752 -1404b 3 51 1752 -1404e 3 64 1752 -14051 6 65 1752 -14057 7 55 1752 -1405e 3 56 1752 -14061 a 57 1752 -1406b 11 59 1752 -1407c 8 60 1752 -FUNC 14084 d 8 _ValidateRead(void const *,unsigned int) -14084 0 63 5683 -14084 3 64 5683 -14087 7 65 5683 -1408e 2 68 5683 -14090 1 71 5683 -FUNC 14091 d 8 _ValidateWrite(void *,unsigned int) -14091 0 74 5683 -14091 3 75 5683 -14094 7 76 5683 -1409b 2 79 5683 -1409d 1 82 5683 -FUNC 1409e d 4 _ValidateExecute(int (*)(void)) -1409e 0 85 5683 -1409e 3 86 5683 -140a1 7 87 5683 -140a8 2 90 5683 -140aa 1 93 5683 -FUNC 140ab f3 0 abort -140ab 1b 53 4119 -140c6 a 56 4119 -140d0 8 59 4119 -140d8 5 68 4119 -140dd 4 69 4119 -140e1 8 71 4119 -140e9 d 78 4119 -140f6 6 87 4119 -140fc 6 88 4119 -14102 6 89 4119 -14108 3 90 4119 -1410b 3 91 4119 -1410e 3 92 4119 -14111 7 93 4119 -14118 7 94 4119 -1411f 4 95 4119 -14123 4 96 4119 -14127 4 97 4119 -1412b 4 98 4119 -1412f 1 99 4119 -14130 6 100 4119 -14136 6 106 4119 -1413c 19 107 4119 -14155 3 109 4119 -14158 13 117 4119 -1416b 9 122 4119 -14174 3 123 4119 -14177 15 126 4119 -1418c a 128 4119 -14196 8 137 4119 -FUNC 1419e 1e 8 _set_abort_behavior -1419e 0 158 4119 -1419e 1d 160 4119 -141bb 1 162 4119 -FUNC 141bc 20 0 _global_unwind2 -FUNC 141dc 45 0 __unwind_handler -FUNC 14221 84 0 _local_unwind2 -FUNC 142a5 23 0 _abnormal_termination -FUNC 142c8 9 0 _NLG_Notify1 -FUNC 142d1 1f 0 _NLG_Notify -PUBLIC 142e8 0 _NLG_Dispatch2 -FUNC 142f0 3 0 _NLG_Call -PUBLIC 142f2 0 _NLG_Return2 -FUNC 142f3 a3 4 _msize -142f3 c 43 5383 -142ff 2d 47 5383 -1432c 9 51 5383 -14335 8 55 5383 -1433d 3 56 5383 -14340 e 57 5383 -1434e e 59 5383 -1435c c 61 5383 -14368 5 64 5383 -1436d 10 88 5383 -1437d 2 91 5383 -1437f 6 93 5383 -14385 8 61 5383 -1438d 9 62 5383 -FUNC 14396 6 0 HeapManager::Block::Block() -14396 6 90 5771 -FUNC 1439c 1b 8 HeapManager::Constructor(void * (*)(unsigned int),void (*)(void *)) -1439c 6 100 5771 -143a2 7 101 5771 -143a9 5 102 5771 -143ae 3 103 5771 -143b1 3 104 5771 -143b4 3 105 5771 -FUNC 143b7 26 0 HeapManager::Destructor() -143b7 9 110 5771 -143c0 2 111 5771 -143c2 5 113 5771 -143c7 15 115 5771 -143dc 1 118 5771 -FUNC 143dd 63 0 UnDecorator::getNumberOfDimensions() -143dd 0 1663 5771 -143dd c 1664 5771 -143e9 2 1665 5771 -143eb 1 1696 5771 -143ec a 1666 5771 -143f6 d 1667 5771 -14403 1 1696 5771 -14404 4 1670 5771 -14408 4 1677 5771 -1440c a 1679 5771 -14416 6 1680 5771 -1441c d 1684 5771 -14429 5 1675 5771 -1442e e 1690 5771 -1443c 3 1691 5771 -1443f 1 1696 5771 -FUNC 14440 474 0 UnDecorator::getTypeEncoding() -14440 f 2335 5771 -1444f 2 2336 5771 -14451 5 2341 5771 -14456 9 2345 5771 -1445f c 2351 5771 -1446b 9 2423 5771 -14474 2 2426 5771 -14476 2a 2427 5771 -144a0 8 2450 5771 -144a8 2 2451 5771 -144aa 24 2454 5771 -144ce 7 2462 5771 -144d5 5 2463 5771 -144da 6 2353 5771 -144e0 8 2358 5771 -144e8 b 2362 5771 -144f3 5 2363 5771 -144f8 2 2364 5771 -144fa 5 2365 5771 -144ff 9 2369 5771 -14508 1b 2373 5771 -14523 11 2377 5771 -14534 a 2393 5771 -1453e 10 2388 5771 -1454e 2 2389 5771 -14550 18 2384 5771 -14568 2 2385 5771 -1456a 12 2380 5771 -1457c 16 2399 5771 -14592 11 2418 5771 -145a3 a 2406 5771 -145ad 5 2407 5771 -145b2 15 2410 5771 -145c7 5 2422 5771 -145cc 1b 2427 5771 -145e7 a 2430 5771 -145f1 5 2431 5771 -145f6 7 2472 5771 -145fd a 2478 5771 -14607 c 2483 5771 -14613 5 2485 5771 -14618 5 2486 5771 -1461d 5 2487 5771 -14622 5 2490 5771 -14627 5 2505 5771 -1462c 5 2508 5771 -14631 5 2509 5771 -14636 5 2434 5771 -1463b 5 2435 5771 -14640 1a 2427 5771 -1465a 30 2568 5771 -1468a 5 2529 5771 -1468f 4 2530 5771 -14693 a 2531 5771 -1469d 2 2532 5771 -1469f a 2533 5771 -146a9 5 2537 5771 -146ae 5 2538 5771 -146b3 2 2539 5771 -146b5 5 2540 5771 -146ba e 2544 5771 -146c8 6 2560 5771 -146ce 10 2555 5771 -146de 2 2556 5771 -146e0 18 2551 5771 -146f8 2 2552 5771 -146fa 12 2547 5771 -1470c 2 2564 5771 -1470e a 2442 5771 -14718 2 2443 5771 -1471a a 2438 5771 -14724 2 2439 5771 -14726 5 2445 5771 -1472b c 2574 5771 -14737 14 2577 5771 -1474b a 2579 5771 -14755 18 2586 5771 -1476d 1a 2589 5771 -14787 1b 2590 5771 -147a2 5 2591 5771 -147a7 1a 2594 5771 -147c1 1b 2595 5771 -147dc 5 2596 5771 -147e1 1a 2599 5771 -147fb 10 2600 5771 -1480b 2 2601 5771 -1480d 7 2604 5771 -14814 2 2605 5771 -14816 a 2608 5771 -14820 2 2609 5771 -14822 a 2612 5771 -1482c 2 2613 5771 -1482e a 2616 5771 -14838 2 2617 5771 -1483a a 2620 5771 -14844 2 2621 5771 -14846 a 2624 5771 -14850 7 2634 5771 -14857 7 2635 5771 -1485e 7 2637 5771 -14865 10 2639 5771 -14875 3f 2648 5771 -FUNC 148b4 b 0 UnDecorator::doUnderScore() -148b4 b 4259 5771 -FUNC 148bf d 0 UnDecorator::doMSKeywords() -148bf d 4260 5771 -FUNC 148cc e 0 UnDecorator::doPtr64() -148cc e 4261 5771 -FUNC 148da e 0 UnDecorator::doFunctionReturns() -148da e 4262 5771 -FUNC 148e8 e 0 UnDecorator::doAllocationModel() -148e8 e 4263 5771 -FUNC 148f6 e 0 UnDecorator::doAllocationLanguage() -148f6 e 4264 5771 -FUNC 14904 12 0 UnDecorator::doThisTypes() -14904 12 4271 5771 -FUNC 14916 e 0 UnDecorator::doAccessSpecifiers() -14916 e 4272 5771 -FUNC 14924 e 0 UnDecorator::doThrowTypes() -14924 e 4273 5771 -FUNC 14932 e 0 UnDecorator::doMemberTypes() -14932 e 4274 5771 -FUNC 14940 b 0 UnDecorator::doNameOnly() -14940 b 4279 5771 -FUNC 1494b b 0 UnDecorator::doTypeOnly() -1494b b 4280 5771 -FUNC 14956 b 0 UnDecorator::haveTemplateParameters() -14956 b 4281 5771 -FUNC 14961 e 0 UnDecorator::doEcsu() -14961 e 4282 5771 -FUNC 1496f b 0 UnDecorator::doNoIdentCharCheck() -1496f b 4283 5771 -FUNC 1497a e 0 UnDecorator::doEllipsis() -1497a e 4284 5771 -FUNC 14988 19 4 UnDecorator::UScore(Tokens) -14988 0 4288 5771 -14988 9 4293 5771 -14991 d 4294 5771 -1499e 2 4296 5771 -149a0 1 4298 5771 -FUNC 149a1 84 8 HeapManager::getMemory(unsigned int,int) -149a1 2 134 5804 -149a3 a 137 5804 -149ad 9 139 5804 -149b6 6 140 5804 -149bc 4 146 5804 -149c0 3 147 5804 -149c3 8 149 5804 -149cb 7 153 5804 -149d2 2 154 5804 -149d4 1c 159 5804 -149f0 4 164 5804 -149f4 7 168 5804 -149fb 2 169 5804 -149fd 2 170 5804 -149ff 3 171 5804 -14a02 8 175 5804 -14a0a 2 182 5804 -14a0c 4 179 5804 -14a10 5 183 5804 -14a15 d 187 5804 -14a22 3 190 5804 -FUNC 14a25 d 0 DName::DName() -14a25 2 210 5804 -14a27 3 211 5804 -14a2a 7 220 5804 -14a31 1 221 5804 -FUNC 14a32 12 4 DName::DName(DNameNode *) -14a32 2 224 5804 -14a34 4 225 5804 -14a38 9 234 5804 -14a41 3 235 5804 -FUNC 14a44 9c 4 DName::DName(DName const &) -14a44 2 259 5804 -14a46 17 260 5804 -14a5d 10 261 5804 -14a6d d 262 5804 -14a7a d 263 5804 -14a87 10 264 5804 -14a97 4 265 5804 -14a9b e 266 5804 -14aa9 13 267 5804 -14abc 10 268 5804 -14acc 11 269 5804 -14add 3 270 5804 -FUNC 14ae0 a 0 DName::status() -14ae0 a 481 5804 -FUNC 14aea 5 0 DName::clearStatus() -14aea 5 482 5804 -FUNC 14aef 7 0 DName::setPtrRef() -14aef 7 484 5804 -FUNC 14af6 a 0 DName::isPtrRef() -14af6 a 485 5804 -FUNC 14b00 8 0 DName::setIsArray() -14b00 8 490 5804 -FUNC 14b08 a 0 DName::isArray() -14b08 a 491 5804 -FUNC 14b12 a 0 DName::isNoTE() -14b12 a 492 5804 -FUNC 14b1c 8 0 DName::setIsNoTE() -14b1c 8 493 5804 -FUNC 14b24 a 0 DName::isPinPtr() -14b24 a 494 5804 -FUNC 14b2e 8 0 DName::setIsPinPtr() -14b2e 8 495 5804 -FUNC 14b36 a 0 DName::isComArray() -14b36 a 496 5804 -FUNC 14b40 8 0 DName::setIsComArray() -14b40 8 497 5804 -FUNC 14b48 a 0 DName::isVCallThunk() -14b48 a 498 5804 -FUNC 14b52 8 0 DName::setIsVCallThunk() -14b52 8 499 5804 -FUNC 14b5a 7b 4 DName::operator=(DName const &) -14b5a 3 879 5804 -14b5d 12 880 5804 -14b6f 17 882 5804 -14b86 d 883 5804 -14b93 d 884 5804 -14ba0 d 885 5804 -14bad 10 886 5804 -14bbd 10 887 5804 -14bcd 5 889 5804 -14bd2 3 897 5804 -FUNC 14bd5 9 0 Replicator::isFull() -14bd5 9 1001 5804 -FUNC 14bde 25 4 Replicator::operator[](int) -14bde 0 1028 5804 -14bde 9 1029 5804 -14be7 b 1031 5804 -14bf2 6 1034 5804 -14bf8 5 1032 5804 -14bfd 3 1030 5804 -14c00 3 1036 5804 -FUNC 14c03 d 0 DNameNode::DNameNode() -14c03 d 1048 5804 -FUNC 14c10 4 0 DNameNode::nextNode() -14c10 4 1052 5804 -FUNC 14c14 29 4 DNameNode::operator+=(DNameNode *) -14c14 2 1131 5804 -14c16 8 1132 5804 -14c1e 8 1134 5804 -14c26 b 1139 5804 -14c31 4 1144 5804 -14c35 2 1147 5804 -14c37 3 1148 5804 -14c3a 3 1156 5804 -FUNC 14c3d 16 4 charNode::charNode(char) -14c3d 16 1166 5804 -FUNC 14c53 4 0 charNode::length() -14c53 4 1168 5804 -FUNC 14c57 4 0 charNode::getLastChar() -14c57 4 1170 5804 -FUNC 14c5b 1b 8 charNode::getString(char *,int) -14c5b 0 1173 5804 -14c5b f 1174 5804 -14c6a 5 1175 5804 -14c6f 2 1176 5804 -14c71 2 1177 5804 -14c73 3 1183 5804 -FUNC 14c76 4 0 pcharNode::length() -14c76 4 1189 5804 -FUNC 14c7a 2f 4 pDNameNode::pDNameNode(DName *) -14c7a 2f 1244 5804 -FUNC 14ca9 25 4 DNameStatusNode::DNameStatusNode(DNameStatus) -14ca9 25 1261 5804 -FUNC 14cce 4 0 DNameStatusNode::length() -14cce 4 1263 5804 -FUNC 14cd2 d 0 DNameStatusNode::getLastChar() -14cd2 d 1266 5804 -FUNC 14cdf e 0 und_strlen -14cdf 0 1283 5804 -14cdf 6 1286 5804 -14ce5 7 1287 5804 -14cec 1 1291 5804 -FUNC 14ced 20 8 und_strncpy -14ced 0 1295 5804 -14ced 1b 1296 5804 -14d08 4 1299 5804 -14d0c 1 1301 5804 -FUNC 14d0d 25 4 und_strncmp -14d0d 0 1304 5804 -14d0d 7 1305 5804 -14d14 2 1306 5804 -14d16 1 1315 5804 -14d17 a 1308 5804 -14d21 1 1310 5804 -14d22 1 1311 5804 -14d23 6 1308 5804 -14d29 8 1314 5804 -14d31 1 1315 5804 -FUNC 14d32 33 0 UnDecorator::getDataIndirectType() -14d32 33 4033 5771 -FUNC 14d65 34 0 UnDecorator::getThisType() -14d65 34 4034 5771 -FUNC 14d99 13 c operator new(unsigned int,HeapManager &,int) -14d99 13 131 5804 -FUNC 14dac 56 4 DName::DName(DName *) -14dac 0 274 5804 -14dac a 275 5804 -14db6 23 277 5804 -14dd9 13 278 5804 -14dec 2 281 5804 -14dee 4 283 5804 -14df2 3 284 5804 -14df5 7 295 5804 -14dfc 6 296 5804 -FUNC 14e02 61 4 DName::DName(DNameStatus) -14e02 2 457 5804 -14e04 21 458 5804 -14e25 1e 459 5804 -14e43 7 467 5804 -14e4a 9 469 5804 -14e53 a 470 5804 -14e5d 6 472 5804 -FUNC 14e63 17 0 DName::isValid() -14e63 17 478 5804 -FUNC 14e7a 15 0 DName::isEmpty() -14e7a 15 479 5804 -FUNC 14e8f 14 0 DName::isUDC() -14e8f 14 486 5804 -FUNC 14ea3 e 0 DName::setIsUDC() -14ea3 e 487 5804 -FUNC 14eb1 14 0 DName::isUDTThunk() -14eb1 14 488 5804 -FUNC 14ec5 25 0 DName::length() -14ec5 1 502 5804 -14ec6 2 503 5804 -14ec8 a 506 5804 -14ed2 4 507 5804 -14ed6 b 508 5804 -14ee1 5 507 5804 -14ee6 3 510 5804 -14ee9 1 512 5804 -FUNC 14eea 38 0 DName::getLastChar() -14eea 2 516 5804 -14eec 2 517 5804 -14eee 9 519 5804 -14ef7 6 520 5804 -14efd a 521 5804 -14f07 2 522 5804 -14f09 7 520 5804 -14f10 11 524 5804 -14f21 1 526 5804 -FUNC 14f22 91 8 DName::getString(char *,int) -14f22 7 530 5804 -14f29 9 531 5804 -14f32 5 535 5804 -14f37 7 537 5804 -14f3e e 538 5804 -14f4c c 544 5804 -14f58 d 550 5804 -14f65 4 553 5804 -14f69 8 555 5804 -14f71 4 561 5804 -14f75 6 565 5804 -14f7b 2 566 5804 -14f7d b 570 5804 -14f88 4 574 5804 -14f8c 2 578 5804 -14f8e 3 579 5804 -14f91 3 586 5804 -14f94 4 553 5804 -14f98 4 590 5804 -14f9c 2 593 5804 -14f9e 6 594 5804 -14fa4 6 595 5804 -14faa 5 599 5804 -14faf 4 601 5804 -FUNC 14fb3 35 4 DName::operator|=(DName const &) -14fb3 3 832 5804 -14fb6 19 835 5804 -14fcf 13 836 5804 -14fe2 3 840 5804 -14fe5 3 842 5804 -FUNC 14fe8 81 4 DName::operator=(DNameStatus) -14fe8 2 928 5804 -14fea 10 929 5804 -14ffa 12 937 5804 -1500c 26 945 5804 -15032 6 947 5804 -15038 e 948 5804 -15046 10 933 5804 -15056 d 934 5804 -15063 3 954 5804 -15066 3 956 5804 -FUNC 15069 1e 0 Replicator::Replicator() -15069 1e 1004 5804 -FUNC 15087 47 4 Replicator::operator+=(DName const &) -15087 3 1009 5804 -1508a 12 1010 5804 -1509c 20 1012 5804 -150bc 4 1017 5804 -150c0 8 1018 5804 -150c8 3 1022 5804 -150cb 3 1024 5804 -FUNC 150ce 47 0 DNameNode::clone() -150ce 3 1055 5804 -150d1 43 1056 5804 -15114 1 1057 5804 -FUNC 15115 65 8 pcharNode::pcharNode(char const *,int) -15115 1 1197 5804 -15116 1f 1200 5804 -15135 c 1201 5804 -15141 8 1205 5804 -15149 c 1207 5804 -15155 a 1210 5804 -1515f b 1211 5804 -1516a 2 1214 5804 -1516c 3 1216 5804 -1516f 4 1217 5804 -15173 7 1220 5804 -FUNC 1517a 12 0 pcharNode::getLastChar() -1517a 12 1191 5804 -FUNC 1518c 31 8 pcharNode::getString(char *,int) -1518c 0 1224 5804 -1518c b 1227 5804 -15197 2 1228 5804 -15199 21 1232 5804 -151ba 3 1234 5804 -FUNC 151bd f 0 pDNameNode::length() -151bd f 1246 5804 -FUNC 151cc f 0 pDNameNode::getLastChar() -151cc f 1248 5804 -FUNC 151db 1d 8 pDNameNode::getString(char *,int) -151db 1d 1251 5804 -FUNC 151f8 33 8 DNameStatusNode::getString(char *,int) -151f8 0 1269 5804 -151f8 b 1272 5804 -15203 2 1273 5804 -15205 23 1277 5804 -15228 3 1279 5804 -FUNC 1522b 73 14 UnDecorator::UnDecorator(char *,char const *,int,char * (*)(long),unsigned long) -1522b 16 736 5771 -15241 8 737 5771 -15249 5 738 5771 -1524e 9 740 5771 -15257 a 741 5771 -15261 5 745 5771 -15266 2 747 5771 -15268 6 748 5771 -1526e 6 749 5771 -15274 8 754 5771 -1527c 15 755 5771 -15291 d 758 5771 -FUNC 1529e 2f 4 UnDecorator::getReturnType(DName *) -1529e 3 2906 5771 -152a1 8 2907 5771 -152a9 15 2911 5771 -152be d 2915 5771 -152cb 2 2917 5771 -FUNC 152cd f 0 UnDecorator::getStorageConvention() -152cd f 4032 5771 -FUNC 152dc 79 4 DName::operator+=(DNameStatus) -152dc 4 799 5804 -152e0 17 800 5804 -152f7 20 804 5804 -15317 4 807 5804 -1531b 7 809 5804 -15322 6 811 5804 -15328 8 812 5804 -15330 2 815 5804 -15332 3 816 5804 -15335 5 818 5804 -1533a e 819 5804 -15348 7 801 5804 -1534f 3 825 5804 -15352 3 827 5804 -FUNC 15355 68 4 DName::operator=(DName *) -15355 3 901 5804 -15358 12 902 5804 -1536a 7 903 5804 -15371 29 911 5804 -1539a 6 913 5804 -153a0 c 914 5804 -153ac 2 917 5804 -153ae 9 918 5804 -153b7 3 922 5804 -153ba 3 924 5804 -FUNC 153bd a6 8 DName::doPchar(char const *,int) -153bd 3 962 5804 -153c0 1e 963 5804 -153de 6 964 5804 -153e4 c 965 5804 -153f0 10 966 5804 -15400 5 970 5804 -15405 23 984 5804 -15428 6 986 5804 -1542e 9 987 5804 -15437 2 988 5804 -15439 1b 977 5804 -15454 c 993 5804 -15460 3 995 5804 -FUNC 15463 26 4 DName::DName(char) -15463 3 238 5804 -15466 3 244 5804 -15469 7 248 5804 -15470 7 252 5804 -15477 c 253 5804 -15483 6 255 5804 -FUNC 15489 31 4 DName::DName(char const *) -15489 0 300 5804 -15489 16 312 5804 -1549f 15 313 5804 -154b4 6 315 5804 -FUNC 154ba d0 8 DName::DName(char const * &,char) -154ba 7 319 5804 -154c1 d 329 5804 -154ce f 333 5804 -154dd 8 334 5804 -154e5 9 342 5804 -154ee 40 343 5804 -1552e b 344 5804 -15539 9 355 5804 -15542 8 359 5804 -1554a 8 361 5804 -15552 9 363 5804 -1555b 3 364 5804 -1555e 2 367 5804 -15560 3 347 5804 -15563 a 378 5804 -1556d 8 380 5804 -15575 6 368 5804 -1557b 7 371 5804 -15582 6 372 5804 -15588 2 375 5804 -FUNC 1558a 69 8 DName::DName(unsigned __int64) -1558a 15 384 5804 -1559f 3 390 5804 -155a2 a 398 5804 -155ac 4 402 5804 -155b0 13 406 5804 -155c3 3 407 5804 -155c6 c 409 5804 -155d2 e 411 5804 -155e0 13 413 5804 -FUNC 155f3 96 8 DName::DName(__int64) -155f3 10 416 5804 -15603 26 436 5804 -15629 15 438 5804 -1563e 10 443 5804 -1564e 5 444 5804 -15653 c 446 5804 -1565f 6 448 5804 -15665 4 449 5804 -15669 e 452 5804 -15677 12 453 5804 -FUNC 15689 2e 4 DName::operator+(DNameStatus) -15689 1 675 5804 -1568a c 676 5804 -15696 9 679 5804 -1569f b 680 5804 -156aa 2 681 5804 -156ac 5 682 5804 -156b1 3 686 5804 -156b4 3 688 5804 -FUNC 156b7 62 4 DName::operator+=(DName const &) -156b7 2 739 5804 -156b9 f 740 5804 -156c8 13 741 5804 -156db 2 742 5804 -156dd 9 743 5804 -156e6 6 744 5804 -156ec 2 745 5804 -156ee 7 747 5804 -156f5 6 749 5804 -156fb 9 750 5804 -15704 2 751 5804 -15706 d 752 5804 -15713 3 758 5804 -15716 3 760 5804 -FUNC 15719 8b 4 DName::operator+=(DName *) -15719 2 764 5804 -1571b a 765 5804 -15725 9 766 5804 -1572e 8 767 5804 -15736 10 768 5804 -15746 8 789 5804 -1574e 20 770 5804 -1576e 4 773 5804 -15772 7 775 5804 -15779 6 777 5804 -1577f 8 778 5804 -15787 2 781 5804 -15789 3 782 5804 -1578c 5 784 5804 -15791 d 785 5804 -1579e 3 793 5804 -157a1 3 795 5804 -FUNC 157a4 1c 4 DName::operator=(char) -157a4 1 847 5804 -157a5 15 854 5804 -157ba 3 856 5804 -157bd 3 858 5804 -FUNC 157c0 2a 4 DName::operator=(char const *) -157c0 0 862 5804 -157c0 24 869 5804 -157e4 3 873 5804 -157e7 3 875 5804 -FUNC 157ea a6 0 UnDecorator::getCallingConvention() -157ea 5 2825 5771 -157ef f 2826 5771 -157fe c 2828 5771 -1580a 5 2835 5771 -1580f 1a 2845 5771 -15829 20 2852 5771 -15849 2 2875 5771 -1584b 2 2876 5771 -1584d 2 2871 5771 -1584f 2 2872 5771 -15851 2 2867 5771 -15853 2 2868 5771 -15855 2 2863 5771 -15857 2 2864 5771 -15859 1 2859 5771 -1585a 2 2860 5771 -1585c 13 2855 5771 -1586f e 2891 5771 -1587d 4 2895 5771 -15881 d 2899 5771 -1588e 2 2901 5771 -FUNC 15890 37 0 UnDecorator::getVCallThunkType() -15890 3 4057 5771 -15893 9 4059 5771 -1589c 5 4066 5771 -158a1 4 4059 5771 -158a5 4 4066 5771 -158a9 6 4061 5771 -158af c 4062 5771 -158bb a 4064 5771 -158c5 2 4170 5771 -FUNC 158c7 51 4 DName::operator+(DName const &) -158c7 1 639 5804 -158c8 c 640 5804 -158d4 b 643 5804 -158df b 644 5804 -158ea d 645 5804 -158f7 11 646 5804 -15908 2 647 5804 -1590a 8 648 5804 -15912 3 652 5804 -15915 3 654 5804 -FUNC 15918 2e 4 DName::operator+(DName *) -15918 1 658 5804 -15919 c 659 5804 -15925 9 662 5804 -1592e b 663 5804 -15939 2 664 5804 -1593b 5 665 5804 -15940 3 669 5804 -15943 3 671 5804 -FUNC 15946 6a 4 DName::operator+=(char) -15946 1 693 5804 -15947 b 694 5804 -15952 9 695 5804 -1595b 6 696 5804 -15961 2 697 5804 -15963 7 699 5804 -1596a 6 701 5804 -15970 2b 702 5804 -1599b 2 703 5804 -1599d c 704 5804 -159a9 4 710 5804 -159ad 3 712 5804 -FUNC 159b0 6c 4 DName::operator+=(char const *) -159b0 2 716 5804 -159b2 f 717 5804 -159c1 9 718 5804 -159ca 6 719 5804 -159d0 2 720 5804 -159d2 7 722 5804 -159d9 6 724 5804 -159df 28 725 5804 -15a07 2 726 5804 -15a09 d 727 5804 -15a16 3 733 5804 -15a19 3 735 5804 -FUNC 15a1c e0 0 UnDecorator::getArgumentList() -15a1c 7 3076 5771 -15a23 12 3078 5771 -15a35 29 3081 5771 -15a5e 6 3085 5771 -15a64 4 3086 5771 -15a68 2 3087 5771 -15a6a e 3088 5771 -15a78 6 3093 5771 -15a7e 6 3095 5771 -15a84 5 3100 5771 -15a89 1 3102 5771 -15a8a 11 3106 5771 -15a9b 2 3109 5771 -15a9d 16 3116 5771 -15ab3 19 3121 5771 -15acc 9 3122 5771 -15ad5 17 3126 5771 -15aec b 3132 5771 -15af7 3 3141 5771 -15afa 2 3143 5771 -FUNC 15afc 4f 4 UnDecorator::getVdispMapType(DName const &) -15afc 6 4230 5771 -15b02 d 4231 5771 -15b0f c 4232 5771 -15b1b 12 4233 5771 -15b2d 9 4234 5771 -15b36 a 4236 5771 -15b40 6 4237 5771 -15b46 3 4238 5771 -15b49 2 4239 5771 -FUNC 15b4b 22 8 operator+(char,DName const &) -15b4b 22 198 5804 -FUNC 15b6d 22 8 operator+(DNameStatus,DName const &) -15b6d 22 201 5804 -FUNC 15b8f 22 8 operator+(char const *,DName const &) -15b8f 22 204 5804 -FUNC 15bb1 2e 4 DName::operator+(char) -15bb1 1 605 5804 -15bb2 c 606 5804 -15bbe 9 609 5804 -15bc7 b 610 5804 -15bd2 2 611 5804 -15bd4 5 612 5804 -15bd9 3 616 5804 -15bdc 3 618 5804 -FUNC 15bdf 2e 4 DName::operator+(char const *) -15bdf 1 622 5804 -15be0 c 623 5804 -15bec 9 626 5804 -15bf5 b 627 5804 -15c00 2 628 5804 -15c02 5 629 5804 -15c07 3 633 5804 -15c0a 3 635 5804 -FUNC 15c0d 141 4 UnDecorator::getDimension(bool) -15c0d 7 1616 5771 -15c14 10 1618 5771 -15c24 e 1620 5771 -15c32 6 1623 5771 -15c38 f 1624 5771 -15c47 8 1625 5771 -15c4f 47 1626 5771 -15c96 4 1629 5771 -15c9a 4 1636 5771 -15c9e 8 1638 5771 -15ca6 20 1639 5771 -15cc6 d 1643 5771 -15cd3 4 1634 5771 -15cd7 b 1649 5771 -15ce2 2 1650 5771 -15ce4 5 1652 5771 -15ce9 13 1653 5771 -15cfc c 1637 5771 -15d08 4 1641 5771 -15d0c a 1653 5771 -15d16 36 1655 5771 -15d4c 2 1659 5771 -FUNC 15d4e d4 0 UnDecorator::getEnumType() -15d4e 6 2762 5771 -15d54 1a 2766 5771 -15d6e 12 2770 5771 -15d80 5 2774 5771 -15d85 2 2775 5771 -15d87 5 2779 5771 -15d8c 2 2780 5771 -15d8e 5 2786 5771 -15d93 2 2787 5771 -15d95 d 2791 5771 -15da2 1f 2801 5771 -15dc1 1e 2807 5771 -15ddf e 2814 5771 -15ded 4 2795 5771 -15df1 d 2818 5771 -15dfe 24 2820 5771 -FUNC 15e22 c4 0 UnDecorator::getArgumentTypes() -15e22 3 3035 5771 -15e25 18 3036 5771 -15e3d 9 3046 5771 -15e46 7 3051 5771 -15e4d 13 3052 5771 -15e60 c 3064 5771 -15e6c 36 3058 5771 -15ea2 b 3061 5771 -15ead 21 3039 5771 -15ece 16 3042 5771 -15ee4 2 3072 5771 -FUNC 15ee6 7e 0 UnDecorator::getThrowTypes() -15ee6 3 3148 5771 -15ee9 e 3149 5771 -15ef7 2 3150 5771 -15ef9 21 3151 5771 -15f1a 1f 3153 5771 -15f39 29 3155 5771 -15f62 2 3157 5771 -FUNC 15f64 125 c UnDecorator::getExtendedDataIndirectType(char &,bool &,int) -15f64 6 3636 5771 -15f6a 1a 3641 5771 -15f84 1c 3643 5771 -15fa0 a 3669 5771 -15faa 6 3670 5771 -15fb0 b 3672 5771 -15fbb a 3674 5771 -15fc5 21 3675 5771 -15fe6 17 3678 5771 -15ffd a 3680 5771 -16007 6 3689 5771 -1600d 2 3691 5771 -1600f 17 3693 5771 -16026 1e 3700 5771 -16044 6 3663 5771 -1604a 2 3665 5771 -1604c 3 3656 5771 -1604f d 3657 5771 -1605c 2 3659 5771 -1605e 6 3647 5771 -16064 13 3649 5771 -16077 10 3703 5771 -16087 2 3704 5771 -FUNC 16089 15f 4 UnDecorator::getArrayType(DName const &) -16089 3 3986 5771 -1608c 12 3987 5771 -1609e 7 3989 5771 -160a5 4 3991 5771 -160a9 2 3992 5771 -160ab 4 3994 5771 -160af 9 3995 5771 -160b8 2a 4026 5771 -160e2 2 4028 5771 -160e4 c 3998 5771 -160f0 9 4000 5771 -160f9 d 4001 5771 -16106 35 4005 5771 -1613b b 4009 5771 -16146 4 4010 5771 -1614a 8 4011 5771 -16152 2 4012 5771 -16154 2c 4013 5771 -16180 d 4017 5771 -1618d 9 4018 5771 -16196 12 4019 5771 -161a8 a 4023 5771 -161b2 36 4024 5771 -FUNC 161e8 31 0 UnDecorator::getLexicalFrame() -161e8 31 4031 5771 -FUNC 16219 12 0 UnDecorator::getDisplacement() -16219 12 4048 5771 -FUNC 1622b 12 0 UnDecorator::getCallIndex() -1622b 12 4049 5771 -FUNC 1623d 12 0 UnDecorator::getGuardNumber() -1623d 12 4050 5771 -FUNC 1624f 150 4 UnDecorator::getVfTableType(DName const &) -1624f 7 4174 5771 -16256 d 4175 5771 -16263 1d 4178 5771 -16280 2c 4180 5771 -162ac f 4182 5771 -162bb e 4184 5771 -162c9 5 4186 5771 -162ce 11 4188 5771 -162df 2d 4190 5771 -1630c b 4194 5771 -16317 7 4195 5771 -1631e 10 4199 5771 -1632e a 4200 5771 -16338 b 4188 5771 -16343 b 4204 5771 -1634e a 4206 5771 -16358 7 4207 5771 -1635f 9 4209 5771 -16368 a 4216 5771 -16372 6 4217 5771 -16378 2 4220 5771 -1637a 9 4221 5771 -16383 17 4222 5771 -1639a 3 4224 5771 -1639d 2 4226 5771 -FUNC 1639f a0 8 UnDecorator::getStringEncoding(char *,int) -1639f 6 1447 5771 -163a5 b 1448 5771 -163b0 22 1451 5771 -163d2 6 1456 5771 -163d8 b 1459 5771 -163e3 b 1462 5771 -163ee 13 1464 5771 -16401 c 1466 5771 -1640d 5 1469 5771 -16412 6 1470 5771 -16418 4 1471 5771 -1641c 14 1477 5771 -16430 d 1452 5771 -1643d 2 1478 5771 -FUNC 1643f 50 0 UnDecorator::getSignedDimension() -1643f 5 1603 5771 -16444 b 1604 5771 -1644f c 1605 5771 -1645b 2 1606 5771 -1645d 23 1608 5771 -16480 d 1611 5771 -1648d 2 1612 5771 -FUNC 1648f 2bb 0 UnDecorator::getTemplateConstant() -1648f 15 1877 5771 -164a4 f 1884 5771 -164b3 32 1885 5771 -164e5 9 1921 5771 -164ee b 1922 5771 -164f9 20 1924 5771 -16519 12 1931 5771 -1652b e 1932 5771 -16539 3 1937 5771 -1653c 7 1939 5771 -16543 6 1941 5771 -16549 4 1942 5771 -1654d 2 1944 5771 -1654f 4 1945 5771 -16553 2a 1950 5771 -1657d a 1900 5771 -16587 6 1902 5771 -1658d 11 1903 5771 -1659e 1b 1906 5771 -165b9 b 1892 5771 -165c4 6 2034 5771 -165ca 7 1954 5771 -165d1 26 1885 5771 -165f7 b 1990 5771 -16602 c 1991 5771 -1660e 10 1992 5771 -1661e 9 1966 5771 -16627 c 1968 5771 -16633 e 1971 5771 -16641 10 1973 5771 -16651 6 1975 5771 -16657 6 1976 5771 -1665d 3 1980 5771 -16660 29 1981 5771 -16689 a 1983 5771 -16693 a 2001 5771 -1669d a 2003 5771 -166a7 13 2007 5771 -166ba a 2008 5771 -166c4 11 2012 5771 -166d5 13 2015 5771 -166e8 a 2016 5771 -166f2 13 2021 5771 -16705 a 2022 5771 -1670f 13 2026 5771 -16722 d 2029 5771 -1672f 7 1913 5771 -16736 14 2041 5771 -FUNC 1674a d9 8 UnDecorator::getPtrRefDataType(DName const &,int) -1674a 3 3937 5771 -1674d 11 3940 5771 -1675e b 3944 5771 -16769 12 3948 5771 -1677b 12 3949 5771 -1678d 10 3951 5771 -1679d 5 3957 5771 -167a2 16 3961 5771 -167b8 d 3967 5771 -167c5 c 3968 5771 -167d1 b 3970 5771 -167dc 6 3972 5771 -167e2 1e 3974 5771 -16800 e 3976 5771 -1680e 13 3980 5771 -16821 2 3982 5771 -FUNC 16823 14 4 UnDecorator::getVbTableType(DName const &) -16823 14 4053 5771 -FUNC 16837 1b8 0 UnDecorator::getTemplateArgumentList() -16837 14 1775 5771 -1684b c 1777 5771 -16857 7 1778 5771 -1685e 2a 1781 5771 -16888 6 1785 5771 -1688e 4 1786 5771 -16892 2 1787 5771 -16894 e 1788 5771 -168a2 8 1793 5771 -168aa 5 1798 5771 -168af 1 1800 5771 -168b0 11 1804 5771 -168c1 5 1807 5771 -168c6 7 1810 5771 -168cd 7 1816 5771 -168d4 6 1817 5771 -168da 12 1818 5771 -168ec a 1820 5771 -168f6 5 1821 5771 -168fb e 1822 5771 -16909 5 1824 5771 -1690e 9 1830 5771 -16917 c 1832 5771 -16923 e 1835 5771 -16931 10 1837 5771 -16941 6 1839 5771 -16947 1 1840 5771 -16948 2 1842 5771 -1694a 25 1843 5771 -1696f 2 1846 5771 -16971 10 1847 5771 -16981 2 1850 5771 -16983 1f 1851 5771 -169a2 17 1857 5771 -169b9 9 1858 5771 -169c2 16 1862 5771 -169d8 17 1873 5771 -FUNC 169ef 56f 8 UnDecorator::getOperatorName(bool,bool *) -169ef b 1095 5771 -169fa 53 1103 5771 -16a4d 13 1183 5771 -16a60 c 1439 5771 -16a6c 1d 1440 5771 -16a89 11 1442 5771 -16a9a 5 1444 5771 -16a9f 3 1124 5771 -16aa2 8 1126 5771 -16aaa 21 1127 5771 -16acb c 1129 5771 -16ad7 a 1130 5771 -16ae1 a 1133 5771 -16aeb 7 1135 5771 -16af2 3 1136 5771 -16af5 9 1144 5771 -16afe 5 1145 5771 -16b03 6 1148 5771 -16b09 2 1154 5771 -16b0b 15 1156 5771 -16b20 18 1160 5771 -16b38 1a 1161 5771 -16b52 10 1166 5771 -16b62 b 1167 5771 -16b6d 5 1170 5771 -16b72 6 1106 5771 -16b78 f 1108 5771 -16b87 21 1103 5771 -16ba8 3d 1220 5771 -16be5 18 1240 5771 -16bfd b 1234 5771 -16c08 5 1235 5771 -16c0d 13 1245 5771 -16c20 7 1247 5771 -16c27 8 1249 5771 -16c2f 18 1220 5771 -16c47 13 1255 5771 -16c5a 7 1256 5771 -16c61 2 1257 5771 -16c63 16 1335 5771 -16c79 7 1356 5771 -16c80 6 1350 5771 -16c86 2 1352 5771 -16c88 25 1220 5771 -16cad 13 1290 5771 -16cc0 17 1291 5771 -16cd7 24 1292 5771 -16cfb 14 1313 5771 -16d0f 6 1316 5771 -16d15 5 1317 5771 -16d1a 10 1302 5771 -16d2a 20 1303 5771 -16d4a 20 1304 5771 -16d6a 20 1305 5771 -16d8a 22 1306 5771 -16dac 12 1307 5771 -16dbe c 1296 5771 -16dca 2b 1297 5771 -16df5 13 1281 5771 -16e08 17 1282 5771 -16e1f 1a 1283 5771 -16e39 5 1284 5771 -16e3e 2d 1220 5771 -16e6b 25 1364 5771 -16e90 10 1373 5771 -16ea0 13 1378 5771 -16eb3 a 1397 5771 -16ebd 13 1399 5771 -16ed0 a 1403 5771 -16eda 6 1405 5771 -16ee0 2 1408 5771 -16ee2 13 1410 5771 -16ef5 d 1413 5771 -16f02 5 1415 5771 -16f07 10 1278 5771 -16f17 b 1330 5771 -16f22 5 1428 5771 -16f27 3 1187 5771 -16f2a 13 1216 5771 -16f3d 8 1437 5771 -16f45 19 1438 5771 -FUNC 16f5e 153 4 UnDecorator::getTemplateName(bool) -16f5e 5 1700 5771 -16f63 1f 1704 5771 -16f82 16 1714 5771 -16f98 1d 1716 5771 -16fb5 23 1725 5771 -16fd8 e 1729 5771 -16fe6 6 1730 5771 -16fec 12 1732 5771 -16ffe 2 1734 5771 -17000 16 1735 5771 -17016 c 1738 5771 -17022 7 1739 5771 -17029 6 1746 5771 -1702f 21 1747 5771 -17050 c 1749 5771 -1705c a 1750 5771 -17066 a 1753 5771 -17070 6 1755 5771 -17076 6 1756 5771 -1707c 23 1769 5771 -1709f d 1705 5771 -170ac 5 1771 5771 -FUNC 170b1 1ea 4 UnDecorator::getZName(bool) -170b1 10 1007 5771 -170c1 11 1008 5771 -170d2 3 1013 5771 -170d5 26 1043 5771 -170fb b 1024 5771 -17106 5 1026 5771 -1710b 16 1028 5771 -17121 16 1030 5771 -17137 17 1031 5771 -1714e 7 1033 5771 -17155 25 1040 5771 -1717a 5 1042 5771 -1717f 29 1043 5771 -171a8 8 1045 5771 -171b0 b 1051 5771 -171bb c 1053 5771 -171c7 e 1056 5771 -171d5 10 1058 5771 -171e5 4 1060 5771 -171e9 b 1061 5771 -171f4 2 1063 5771 -171f6 a 1064 5771 -17200 10 1065 5771 -17210 2 1068 5771 -17212 d 1069 5771 -1721f 2a 1070 5771 -17249 2 1073 5771 -1724b 1a 1076 5771 -17265 11 1083 5771 -17276 9 1084 5771 -1727f f 1087 5771 -1728e d 1090 5771 -FUNC 1729b e4 0 UnDecorator::getScopedName() -1729b 7 2727 5771 -172a2 e 2728 5771 -172b0 15 2733 5771 -172c5 1a 2737 5771 -172df 2a 2738 5771 -17309 b 2742 5771 -17314 8 2743 5771 -1731c 4 2744 5771 -17320 1b 2745 5771 -1733b b 2746 5771 -17346 7 2747 5771 -1734d 2 2748 5771 -1734f 2b 2749 5771 -1737a 3 2753 5771 -1737d 2 2755 5771 -FUNC 1737f f 0 UnDecorator::getECSUName() -1737f f 2758 5771 -FUNC 1738e 100 0 UnDecorator::getECSUDataType() -1738e 3 3392 5771 -17391 20 3395 5771 -173b1 37 3399 5771 -173e8 5 3424 5771 -173ed 2 3425 5771 -173ef 5 3420 5771 -173f4 2 3421 5771 -173f6 26 3431 5771 -1741c 2 3432 5771 -1741e 5 3415 5771 -17423 2 3416 5771 -17425 5 3411 5771 -1742a 2 3412 5771 -1742c d 3407 5771 -17439 7 3439 5771 -17440 4 3441 5771 -17444 c 3442 5771 -17450 16 3446 5771 -17466 e 3450 5771 -17474 18 3404 5771 -1748c 2 3452 5771 -FUNC 1748e 46 0 UnDecorator::getSymbolName() -1748e 3 989 5771 -17491 a 990 5771 -1749b 6 991 5771 -174a1 c 992 5771 -174ad 16 997 5771 -174c3 f 1001 5771 -174d2 2 1003 5771 -FUNC 174d4 92 0 UnDecorator::getBasedType() -174d4 6 2653 5771 -174da 13 2654 5771 -174ed a 2659 5771 -174f7 17 2661 5771 -1750e c 2707 5771 -1751a 13 2699 5771 -1752d 2 2700 5771 -1752f d 2674 5771 -1753c 2 2711 5771 -1753e a 2712 5771 -17548 d 2716 5771 -17555 f 2720 5771 -17564 2 2722 5771 -FUNC 17566 b42 4 UnDecorator::composeDeclaration(DName const &) -17566 6 2045 5771 -1756c e 2046 5771 -1757a 5 2047 5771 -1757f a 2048 5771 -17589 b 2053 5771 -17594 f 2054 5771 -175a3 8 2055 5771 -175ab 15 2056 5771 -175c0 8 2057 5771 -175c8 10 2058 5771 -175d8 83 2075 5771 -1765b 7 2081 5771 -17662 19 2082 5771 -1767b 21 2083 5771 -1769c 2 2084 5771 -1769e 15 2085 5771 -176b3 27 2090 5771 -176da 33 2092 5771 -1770d 9 2094 5771 -17716 9 2096 5771 -1771f 2b 2098 5771 -1774a d 2101 5771 -17757 9 2103 5771 -17760 2d 2105 5771 -1778d 2e 2107 5771 -177bb 5 2111 5771 -177c0 3 2114 5771 -177c3 3 2115 5771 -177c6 3 2116 5771 -177c9 3 2117 5771 -177cc 3 2118 5771 -177cf 26 2121 5771 -177f5 12 2123 5771 -17807 19 2125 5771 -17820 19 2126 5771 -17839 2 2127 5771 -1783b 12 2129 5771 -1784d 19 2131 5771 -17866 1b 2134 5771 -17881 13 2141 5771 -17894 a 2142 5771 -1789e 15 2143 5771 -178b3 2 2144 5771 -178b5 f 2145 5771 -178c4 10 2147 5771 -178d4 9 2151 5771 -178dd 22 2152 5771 -178ff 2 2153 5771 -17901 13 2168 5771 -17914 c 2172 5771 -17920 14 2173 5771 -17934 1a 2174 5771 -1794e 2 2175 5771 -17950 b 2176 5771 -1795b 5 2182 5771 -17960 6 2185 5771 -17966 27 2187 5771 -1798d b 2189 5771 -17998 5 2190 5771 -1799d 1b 2194 5771 -179b8 15 2195 5771 -179cd 1d 2202 5771 -179ea 16 2204 5771 -17a00 55 2205 5771 -17a55 12 2206 5771 -17a67 2b 2207 5771 -17a92 2 2208 5771 -17a94 d 2209 5771 -17aa1 1a 2211 5771 -17abb 2e 2218 5771 -17ae9 12 2222 5771 -17afb c 2223 5771 -17b07 c 2227 5771 -17b13 15 2228 5771 -17b28 2 2229 5771 -17b2a f 2230 5771 -17b39 1a 2235 5771 -17b53 b 2237 5771 -17b5e 3 2238 5771 -17b61 5 2243 5771 -17b66 b 2245 5771 -17b71 1c 2250 5771 -17b8d 13 2251 5771 -17ba0 e 2252 5771 -17bae 2 2253 5771 -17bb0 10 2254 5771 -17bc0 3d 2255 5771 -17bfd c 2256 5771 -17c09 e 2257 5771 -17c17 4c 2258 5771 -17c63 a 2259 5771 -17c6d 4b 2260 5771 -17cb8 7 2261 5771 -17cbf 4b 2262 5771 -17d0a f 2263 5771 -17d19 f 2264 5771 -17d28 6 2268 5771 -17d2e 61 2277 5771 -17d8f 15 2281 5771 -17da4 2 2283 5771 -17da6 18 2285 5771 -17dbe 2d 2292 5771 -17deb 12 2294 5771 -17dfd 37 2296 5771 -17e34 23 2297 5771 -17e57 b7 2299 5771 -17f0e 23 2300 5771 -17f31 12 2306 5771 -17f43 37 2307 5771 -17f7a b 2308 5771 -17f85 37 2309 5771 -17fbc b 2310 5771 -17fc7 30 2311 5771 -17ff7 23 2312 5771 -1801a 36 2319 5771 -18050 1e 2320 5771 -1806e 8 2325 5771 -18076 1e 2326 5771 -18094 12 2329 5771 -180a6 2 2331 5771 -FUNC 180a8 211 0 UnDecorator::getDecoratedName() -180a8 7 861 5771 -180af e 864 5771 -180bd a 868 5771 -180c7 b 873 5771 -180d2 8 874 5771 -180da 11 876 5771 -180eb 10 878 5771 -180fb 6 882 5771 -18101 9 903 5771 -1810a 9 906 5771 -18113 8 910 5771 -1811b 6 912 5771 -18121 5 910 5771 -18126 2 915 5771 -18128 a 918 5771 -18132 19 919 5771 -1814b 6 920 5771 -18151 f 924 5771 -18160 8 925 5771 -18168 17 929 5771 -1817f a 930 5771 -18189 c 932 5771 -18195 8 933 5771 -1819d 5 934 5771 -181a2 18 935 5771 -181ba a 936 5771 -181c4 13 937 5771 -181d7 b 938 5771 -181e2 2 940 5771 -181e4 29 941 5771 -1820d 4 945 5771 -18211 10 946 5771 -18221 9 948 5771 -1822a 3 950 5771 -1822d 1c 955 5771 -18249 f 959 5771 -18258 4 976 5771 -1825c 6 962 5771 -18262 14 964 5771 -18276 19 967 5771 -1828f 5 968 5771 -18294 10 971 5771 -182a4 2 979 5771 -182a6 2 980 5771 -182a8 f 982 5771 -182b7 2 984 5771 -FUNC 182b9 28b 0 UnDecorator::getScope() -182b9 d 1482 5771 -182c6 f 1483 5771 -182d5 2a 1489 5771 -182ff 14 1492 5771 -18313 b 1495 5771 -1831e 16 1496 5771 -18334 5 1498 5771 -18339 17 1499 5771 -18350 3 1500 5771 -18353 f 1506 5771 -18362 2a 1507 5771 -1838c 10 1566 5771 -1839c 5 1567 5771 -183a1 34 1561 5771 -183d5 4 1562 5771 -183d9 5 1563 5771 -183de e 1510 5771 -183ec 5 1514 5771 -183f1 22 1515 5771 -18413 e 1518 5771 -18421 6 1519 5771 -18427 5 1522 5771 -1842c 2a 1523 5771 -18456 2 1524 5771 -18458 f 1546 5771 -18467 1a 1548 5771 -18481 b 1550 5771 -1848c 9 1551 5771 -18495 2 1554 5771 -18497 f 1530 5771 -184a6 2 1570 5771 -184a8 21 1571 5771 -184c9 a 1489 5771 -184d3 f 1577 5771 -184e2 18 1590 5771 -184fa 2 1591 5771 -184fc b 1580 5771 -18507 7 1581 5771 -1850e 2 1582 5771 -18510 2b 1583 5771 -1853b 4 1597 5771 -1853f 5 1599 5771 -FUNC 18544 341 4 UnDecorator::getFunctionIndirectType(DName const &) -18544 3 3461 5771 -18547 e 3462 5771 -18555 15 3463 5771 -1856a f 3465 5771 -18579 10 3466 5771 -18589 7 3469 5771 -18590 a 3471 5771 -1859a 6 3473 5771 -185a0 7 3475 5771 -185a7 d 3477 5771 -185b4 17 3482 5771 -185cb 9 3485 5771 -185d4 3 3486 5771 -185d7 5 3490 5771 -185dc f 3491 5771 -185eb 6 3496 5771 -185f1 13 3497 5771 -18604 b 3501 5771 -1860f 1e 3503 5771 -1862d 8 3505 5771 -18635 29 3506 5771 -1865e 2 3507 5771 -18660 17 3508 5771 -18677 f 3510 5771 -18686 4 3511 5771 -1868a 10 3518 5771 -1869a 15 3519 5771 -186af 9 3527 5771 -186b8 d 3528 5771 -186c5 30 3529 5771 -186f5 2 3530 5771 -186f7 11 3521 5771 -18708 7 3514 5771 -1870f 16 3516 5771 -18725 13 3531 5771 -18738 d 3535 5771 -18745 22 3537 5771 -18767 2 3546 5771 -18769 13 3547 5771 -1877c c 3551 5771 -18788 28 3552 5771 -187b0 1e 3557 5771 -187ce c 3558 5771 -187da 2e 3561 5771 -18808 10 3563 5771 -18818 c 3564 5771 -18824 c 3566 5771 -18830 15 3567 5771 -18845 2 3568 5771 -18847 f 3569 5771 -18856 4 3573 5771 -1885a b 3574 5771 -18865 e 3580 5771 -18873 10 3576 5771 -18883 2 3581 5771 -FUNC 18885 4e4 10 UnDecorator::getDataIndirectType(DName const &,char,DName const &,int) -18885 6 3707 5771 -1888b 23 3711 5771 -188ae 4 3713 5771 -188b2 17 3715 5771 -188c9 c 3717 5771 -188d5 10 3719 5771 -188e5 e 3723 5771 -188f3 6 3725 5771 -188f9 15 3726 5771 -1890e 17 3732 5771 -18925 11 3751 5771 -18936 a 3752 5771 -18940 32 3753 5771 -18972 5 3754 5771 -18977 11 3743 5771 -18988 a 3744 5771 -18992 25 3745 5771 -189b7 2 3746 5771 -189b9 8 3747 5771 -189c1 2 3749 5771 -189c3 19 3735 5771 -189dc a 3736 5771 -189e6 14 3737 5771 -189fa 5 3738 5771 -189ff 11 3739 5771 -18a10 6 3766 5771 -18a16 a 3768 5771 -18a20 17 3770 5771 -18a37 10 3772 5771 -18a47 1a 3778 5771 -18a61 5 3780 5771 -18a66 6 3782 5771 -18a6c 9 3787 5771 -18a75 b 3789 5771 -18a80 19 3791 5771 -18a99 c 3793 5771 -18aa5 24 3794 5771 -18ac9 c 3796 5771 -18ad5 22 3797 5771 -18af7 9 3801 5771 -18b00 5 3805 5771 -18b05 7 3806 5771 -18b0c 6 3810 5771 -18b12 1e 3812 5771 -18b30 8 3814 5771 -18b38 1b 3815 5771 -18b53 2 3816 5771 -18b55 16 3817 5771 -18b6b a 3819 5771 -18b75 13 3828 5771 -18b88 b 3833 5771 -18b93 c 3834 5771 -18b9f 8 3835 5771 -18ba7 6 3836 5771 -18bad b 3842 5771 -18bb8 b 3843 5771 -18bc3 3 3863 5771 -18bc6 6 3864 5771 -18bcc 22 3866 5771 -18bee 9 3871 5771 -18bf7 13 3872 5771 -18c0a 5 3876 5771 -18c0f 1e 3877 5771 -18c2d 5 3879 5771 -18c32 1e 3880 5771 -18c50 5 3884 5771 -18c55 e 3885 5771 -18c63 14 3889 5771 -18c77 28 3895 5771 -18c9f 2 3890 5771 -18ca1 b 3891 5771 -18cac 2 3892 5771 -18cae c 3898 5771 -18cba 17 3899 5771 -18cd1 4 3902 5771 -18cd5 6 3904 5771 -18cdb 7 3906 5771 -18ce2 8 3774 5771 -18cea 13 3918 5771 -18cfd 12 3922 5771 -18d0f 29 3925 5771 -18d38 10 3923 5771 -18d48 c 3928 5771 -18d54 3 3929 5771 -18d57 10 3931 5771 -18d67 2 3933 5771 -FUNC 18d69 14c 0 UnDecorator::operator char *() -18d69 6 762 5771 -18d6f 4 763 5771 -18d73 f 764 5771 -18d82 9 770 5771 -18d8b c 772 5771 -18d97 7 775 5771 -18d9e 1d 776 5771 -18dbb 4 782 5771 -18dbf 16 783 5771 -18dd5 9 785 5771 -18dde 5 794 5771 -18de3 9 795 5771 -18dec 13 799 5771 -18dff e 808 5771 -18e0d 2 809 5771 -18e0f 2 848 5771 -18e11 1a 810 5771 -18e2b e 813 5771 -18e39 e 811 5771 -18e47 9 817 5771 -18e50 e 819 5771 -18e5e d 820 5771 -18e6b a 824 5771 -18e75 f 825 5771 -18e84 5 828 5771 -18e89 2 829 5771 -18e8b 2 830 5771 -18e8d 5 831 5771 -18e92 1 832 5771 -18e93 5 833 5771 -18e98 1 835 5771 -18e99 5 834 5771 -18e9e 2 838 5771 -18ea0 a 839 5771 -18eaa 9 841 5771 -18eb3 2 848 5771 -FUNC 18eb5 116 c UnDecorator::getPtrRefType(DName const &,DName const &,char) -18eb5 5 3585 5771 -18eba f 3588 5771 -18ec9 d 3589 5771 -18ed6 b 3591 5771 -18ee1 20 3594 5771 -18f01 b 3595 5771 -18f0c b 3597 5771 -18f17 9 3598 5771 -18f20 14 3600 5771 -18f34 14 3606 5771 -18f48 1b 3608 5771 -18f63 a 3612 5771 -18f6d b 3615 5771 -18f78 c 3617 5771 -18f84 9 3618 5771 -18f8d c 3620 5771 -18f99 c 3622 5771 -18fa5 a 3623 5771 -18faf b 3625 5771 -18fba f 3629 5771 -18fc9 2 3632 5771 -FUNC 18fcb 1b 8 UnDecorator::getPointerType(DName const &,DName const &) -18fcb 1b 4037 5771 -FUNC 18fe6 1b 8 UnDecorator::getPointerTypeArray(DName const &,DName const &) -18fe6 1b 4040 5771 -FUNC 19001 1b 8 UnDecorator::getReferenceType(DName const &,DName const &) -19001 1b 4043 5771 -FUNC 1901c a3 18 __unDName -1901c f 604 5771 -1902b 9 606 5771 -19034 4 607 5771 -19038 a 612 5771 -19042 2 613 5771 -19044 8 614 5771 -1904c 3 615 5771 -1904f 20 618 5771 -1906f 1a 627 5771 -19089 e 628 5771 -19097 a 633 5771 -190a1 c 636 5771 -190ad 3 643 5771 -190b0 6 645 5771 -190b6 9 637 5771 -FUNC 190bf a3 1c __unDNameEx -190bf f 684 5771 -190ce 9 687 5771 -190d7 4 688 5771 -190db a 693 5771 -190e5 2 694 5771 -190e7 8 695 5771 -190ef 3 696 5771 -190f2 20 699 5771 -19112 1a 708 5771 -1912c e 709 5771 -1913a a 714 5771 -19144 c 717 5771 -19150 3 724 5771 -19153 6 726 5771 -19159 9 718 5771 -FUNC 19162 387 4 UnDecorator::getBasicDataType(DName const &) -19162 3 3162 5771 -19165 15 3163 5771 -1917a 6 3165 5771 -19180 4 3168 5771 -19184 35 3173 5771 -191b9 5 3178 5771 -191be 5 3179 5771 -191c3 5 3183 5771 -191c8 5 3184 5771 -191cd 5 3188 5771 -191d2 5 3189 5771 -191d7 5 3193 5771 -191dc 5 3194 5771 -191e1 5 3203 5771 -191e6 5 3204 5771 -191eb 2a 3173 5771 -19215 3c 3222 5771 -19251 5 3231 5771 -19256 5 3232 5771 -1925b 22 3273 5771 -1927d 5 3235 5771 -19282 5 3236 5771 -19287 f 3222 5771 -19296 5 3243 5771 -1929b 5 3244 5771 -192a0 5 3239 5771 -192a5 5 3240 5771 -192aa 5 3247 5771 -192af 5 3248 5771 -192b4 1b 3222 5771 -192cf 3 3264 5771 -192d2 6 3262 5771 -192d8 10 3264 5771 -192e8 10 3266 5771 -192f8 11 3267 5771 -19309 5 3275 5771 -1930e 2 3276 5771 -19310 5 3255 5771 -19315 2 3257 5771 -19317 3 3224 5771 -1931a 12 3343 5771 -1932c 9 3345 5771 -19335 7 3347 5771 -1933c 16 3348 5771 -19352 6 3352 5771 -19358 d 3353 5771 -19365 5 3355 5771 -1936a 5 3227 5771 -1936f 2 3278 5771 -19371 d 3281 5771 -1937e 2 3282 5771 -19380 5 3219 5771 -19385 2 3220 5771 -19387 3 3287 5771 -1938a 5 3290 5771 -1938f d 3207 5771 -1939c d 3212 5771 -193a9 9 3297 5771 -193b2 1f 3301 5771 -193d1 19 3314 5771 -193ea c 3322 5771 -193f6 2 3326 5771 -193f8 c 3307 5771 -19404 2 3308 5771 -19406 1e 3311 5771 -19424 10 3332 5771 -19434 18 3333 5771 -1944c 5 3337 5771 -19451 c 3360 5771 -1945d 5 3367 5771 -19462 d 3369 5771 -1946f 5 3371 5771 -19474 d 3372 5771 -19481 2 3373 5771 -19483 5 3374 5771 -19488 d 3375 5771 -19495 17 3380 5771 -194ac 16 3385 5771 -194c2 27 3387 5771 -FUNC 194e9 13e 4 UnDecorator::getPrimaryDataType(DName const &) -194e9 7 2962 5771 -194f0 2b 2966 5771 -1951b 12 3027 5771 -1952d d 2972 5771 -1953a c 2974 5771 -19546 a 2975 5771 -19550 b 2981 5771 -1955b 6 2984 5771 -19561 1e 2986 5771 -1957f 7 2996 5771 -19586 2 2997 5771 -19588 6 2998 5771 -1958e f 3000 5771 -1959d 8 3002 5771 -195a5 10 3004 5771 -195b5 2f 3022 5771 -195e4 16 3012 5771 -195fa 17 3008 5771 -19611 14 2969 5771 -19625 2 3030 5771 -FUNC 19627 b1 4 UnDecorator::getDataType(DName *) -19627 6 2922 5771 -1962d b 2923 5771 -19638 15 2928 5771 -1964d 10 2954 5771 -1965d 6 2934 5771 -19663 c 2936 5771 -1966f f 2937 5771 -1967e 13 2939 5771 -19691 6 2944 5771 -19697 29 2946 5771 -196c0 2 2947 5771 -196c2 14 2931 5771 -196d6 2 2957 5771 -FUNC 196d8 64 4 UnDecorator::getExternalDataType(DName const &) -196d8 7 4244 5771 -196df 1e 4247 5771 -196fd 9 4248 5771 -19706 30 4253 5771 -19736 4 4255 5771 -1973a 2 4257 5771 -FUNC 1973c 57 8 fastzero_I -FUNC 19793 8f c _VEC_memzero -FUNC 19822 14 0 _sse2_mathfcns_init -FUNC 19836 14 4 _set_SSE2_enable -FUNC 1984a 87 c fastcopy_I -FUNC 198d1 e3 c _VEC_memcpy -FUNC 199b4 1bd c __crtMessageBoxA -199b4 9 41 4033 -199bd 5 49 4033 -199c2 2 56 4033 -199c4 18 64 4033 -199dc d 66 4033 -199e9 2 67 4033 -199eb 6 69 4033 -199f1 10 76 4033 -19a01 6 78 4033 -19a07 6 80 4033 -19a0d 15 83 4033 -19a22 1a 86 4033 -19a3c 1c 88 4033 -19a58 6 89 4033 -19a5e 8 95 4033 -19a66 6 98 4033 -19a6c a 100 4033 -19a76 14 102 4033 -19a8a 14 116 4033 -19a9e 6 119 4033 -19aa4 d 120 4033 -19ab1 c 122 4033 -19abd 1f 127 4033 -19adc 1b 136 4033 -19af7 6 137 4033 -19afd 7 138 4033 -19b04 2 139 4033 -19b06 7 140 4033 -19b0d 2 142 4033 -19b0f a 144 4033 -19b19 6 146 4033 -19b1f 5 147 4033 -19b24 2 149 4033 -19b26 11 153 4033 -19b37 6 155 4033 -19b3d 5 156 4033 -19b42 8 158 4033 -19b4a b 165 4033 -19b55 5 166 4033 -19b5a 10 168 4033 -19b6a 5 173 4033 -19b6f 2 176 4033 -FUNC 19b71 71 c strcat_s -19b71 0 13 823 -19b71 30 18 823 -19ba1 c 19 823 -19bad 2 21 823 -19baf 4 23 823 -19bb3 1 25 823 -19bb4 3 26 823 -19bb7 2 29 823 -19bb9 2 32 823 -19bbb d 35 823 -19bc8 4 39 823 -19bcc 2 41 823 -19bce e 42 823 -19bdc 5 45 823 -19be1 1 46 823 -FUNC 19be2 b3 10 strncpy_s -19be2 5 13 739 -19be7 14 17 739 -19bfb 5 65 739 -19c00 2 66 739 -19c02 26 24 739 -19c28 5 25 739 -19c2d 2 28 739 -19c2f 2 29 739 -19c31 b 31 739 -19c3c 8 35 739 -19c44 d 37 739 -19c51 2 41 739 -19c53 12 45 739 -19c65 5 48 739 -19c6a 2 50 739 -19c6c 4 54 739 -19c70 6 56 739 -19c76 3 58 739 -19c79 c 59 739 -19c85 2 61 739 -19c87 e 62 739 -FUNC 19c95 46 4 _set_error_mode -19c95 0 43 3937 -19c95 15 50 3937 -19caa 6 58 3937 -19cb0 1 65 3937 -19cb1 5 54 3937 -19cb6 7 55 3937 -19cbd 1 65 3937 -19cbe 1c 61 3937 -19cda 1 65 3937 -FUNC 19cdb a 4 __set_app_type -19cdb 0 91 3937 -19cdb 9 96 3937 -19ce4 1 97 3937 -FUNC 19ce5 6 0 __get_app_type -19ce5 0 120 3937 -19ce5 5 125 3937 -19cea 1 126 3937 -FUNC 19ceb 51 10 x_ismbbtype_l -19ceb 6 213 4669 -19cf1 b 214 4669 -19cfc 4 219 4669 -19d00 3a 222 4669 -19d3a 2 223 4669 -FUNC 19d3c 15 8 _ismbbkalnum_l -19d3c 0 80 4669 -19d3c 14 81 4669 -19d50 1 82 4669 -FUNC 19d51 13 4 _ismbbkalnum -19d51 0 85 4669 -19d51 12 86 4669 -19d63 1 87 4669 -FUNC 19d64 15 8 _ismbbkprint_l -19d64 0 90 4669 -19d64 14 91 4669 -19d78 1 92 4669 -FUNC 19d79 13 4 _ismbbkprint -19d79 0 95 4669 -19d79 12 96 4669 -19d8b 1 97 4669 -FUNC 19d8c 15 8 _ismbbkpunct_l -19d8c 0 100 4669 -19d8c 14 101 4669 -19da0 1 102 4669 -FUNC 19da1 13 4 _ismbbkpunct -19da1 0 105 4669 -19da1 12 106 4669 -19db3 1 107 4669 -FUNC 19db4 18 8 _ismbbalnum_l -19db4 0 113 4669 -19db4 17 114 4669 -19dcb 1 115 4669 -FUNC 19dcc 16 4 _ismbbalnum -19dcc 0 118 4669 -19dcc 15 119 4669 -19de1 1 120 4669 -FUNC 19de2 18 8 _ismbbalpha_l -19de2 0 123 4669 -19de2 17 124 4669 -19df9 1 125 4669 -FUNC 19dfa 16 4 _ismbbalpha -19dfa 0 128 4669 -19dfa 15 129 4669 -19e0f 1 130 4669 -FUNC 19e10 18 8 _ismbbgraph_l -19e10 0 133 4669 -19e10 17 134 4669 -19e27 1 135 4669 -FUNC 19e28 16 4 _ismbbgraph -19e28 0 138 4669 -19e28 15 139 4669 -19e3d 1 140 4669 -FUNC 19e3e 18 8 _ismbbprint_l -19e3e 0 143 4669 -19e3e 17 144 4669 -19e55 1 145 4669 -FUNC 19e56 16 4 _ismbbprint -19e56 0 148 4669 -19e56 15 149 4669 -19e6b 1 150 4669 -FUNC 19e6c 15 8 _ismbbpunct_l -19e6c 0 153 4669 -19e6c 14 154 4669 -19e80 1 155 4669 -FUNC 19e81 13 4 _ismbbpunct -19e81 0 158 4669 -19e81 12 159 4669 -19e93 1 160 4669 -FUNC 19e94 15 8 _ismbblead_l -19e94 0 166 4669 -19e94 14 167 4669 -19ea8 1 168 4669 -FUNC 19ea9 13 4 _ismbblead -19ea9 0 171 4669 -19ea9 12 172 4669 -19ebb 1 173 4669 -FUNC 19ebc 15 8 _ismbbtrail_l -19ebc 0 176 4669 -19ebc 14 177 4669 -19ed0 1 178 4669 -FUNC 19ed1 13 4 _ismbbtrail -19ed1 0 181 4669 -19ed1 12 182 4669 -19ee3 1 183 4669 -FUNC 19ee4 53 8 _ismbbkana_l -19ee4 6 189 4669 -19eea b 190 4669 -19ef5 10 192 4669 -19f05 1f 194 4669 -19f24 2 197 4669 -19f26 f 196 4669 -19f35 2 197 4669 -FUNC 19f37 e 4 _ismbbkana -19f37 0 200 4669 -19f37 d 201 4669 -19f44 1 202 4669 -FUNC 19f45 44 4 _getbuf -19f45 0 43 1893 -19f45 6 50 1893 -19f4b 16 58 1893 -19f61 4 61 1893 -19f65 7 62 1893 -19f6c 2 65 1893 -19f6e 4 69 1893 -19f72 6 70 1893 -19f78 7 71 1893 -19f7f 3 75 1893 -19f82 6 76 1893 -19f88 1 79 1893 -FUNC 19f89 1de 8 _fputwc_nolock -19f89 15 90 2124 -19f9e b 93 2124 -19fa9 48 95 2124 -19ff1 6 101 2124 -19ff7 45 104 2124 -1a03c 27 115 2124 -1a063 9 116 2124 -1a06c 22 120 2124 -1a08e 2 121 2124 -1a090 8 124 2124 -1a098 42 127 2124 -1a0da 17 133 2124 -1a0f1 6 139 2124 -1a0f7 7 141 2124 -1a0fe 34 143 2124 -1a132 6 146 2124 -1a138 6 150 2124 -1a13e d 151 2124 -1a14b d 153 2124 -1a158 f 154 2124 -FUNC 1a167 78 8 fputwc -1a167 c 48 2124 -1a173 2e 52 2124 -1a1a1 3 55 2124 -1a1a4 7 57 2124 -1a1ab 3 58 2124 -1a1ae 11 60 2124 -1a1bf c 63 2124 -1a1cb 4 67 2124 -1a1cf 6 68 2124 -1a1d5 a 64 2124 -FUNC 1a1df 5 8 putwc -1a1df 0 162 2124 -1a1df 5 163 2124 -FUNC 1a1e4 1f7 14 wcstoxl -1a1e4 8 82 6173 -1a1ec b 88 6173 -1a1f7 3 92 6173 -1a1fa b 95 6173 -1a205 2f 97 6173 -1a234 12 98 6173 -1a246 9 103 6173 -1a24f 2 105 6173 -1a251 18 106 6173 -1a269 6 108 6173 -1a26f 4 109 6173 -1a273 2 110 6173 -1a275 6 112 6173 -1a27b 5 113 6173 -1a280 5 115 6173 -1a285 b 118 6173 -1a290 9 119 6173 -1a299 f 120 6173 -1a2a8 9 123 6173 -1a2b1 7 121 6173 -1a2b8 6 126 6173 -1a2be 1a 128 6173 -1a2d8 2 129 6173 -1a2da 5 130 6173 -1a2df d 135 6173 -1a2ec c 141 6173 -1a2f8 15 143 6173 -1a30d 12 144 6173 -1a31f 5 148 6173 -1a324 4 152 6173 -1a328 c 159 6173 -1a334 4 165 6173 -1a338 6 166 6173 -1a33e 9 178 6173 -1a347 6 181 6173 -1a34d 3 183 6173 -1a350 4 184 6173 -1a354 2 186 6173 -1a356 c 161 6173 -1a362 5 173 6173 -1a367 2 174 6173 -1a369 24 189 6173 -1a38d 5 192 6173 -1a392 c 193 6173 -1a39e 6 194 6173 -1a3a4 10 195 6173 -1a3b4 8 201 6173 -1a3bc 2 203 6173 -1a3be 6 205 6173 -1a3c4 3 207 6173 -1a3c7 12 209 6173 -1a3d9 2 210 6173 -FUNC 1a3db 29 c wcstol -1a3db 3 217 6173 -1a3de 8 218 6173 -1a3e6 13 220 6173 -1a3f9 9 224 6173 -1a402 2 226 6173 -FUNC 1a404 1b 10 _wcstol_l -1a404 0 234 6173 -1a404 1a 235 6173 -1a41e 1 236 6173 -FUNC 1a41f 2a c wcstoul -1a41f 3 243 6173 -1a422 7 244 6173 -1a429 14 246 6173 -1a43d a 250 6173 -1a447 2 252 6173 -FUNC 1a449 1b 10 _wcstoul_l -1a449 0 260 6173 -1a449 1a 261 6173 -1a463 1 262 6173 -FUNC 1a464 9 0 _fptrap -1a464 0 46 2503 -1a464 8 47 2503 -1a46c 1 48 2503 -FUNC 1a46d 54 8 _isalpha_l -1a46d 6 57 6535 -1a473 b 58 6535 -1a47e 41 60 6535 -1a4bf 2 61 6535 -FUNC 1a4c1 2b 4 isalpha -1a4c1 0 66 6535 -1a4c1 9 67 6535 -1a4ca 13 69 6535 -1a4dd 1 75 6535 -1a4de d 73 6535 -1a4eb 1 75 6535 -FUNC 1a4ec 4f 8 _isupper_l -1a4ec 6 81 6535 -1a4f2 b 82 6535 -1a4fd 3c 84 6535 -1a539 2 85 6535 -FUNC 1a53b 29 4 isupper -1a53b 0 90 6535 -1a53b 9 91 6535 -1a544 11 93 6535 -1a555 1 99 6535 -1a556 d 97 6535 -1a563 1 99 6535 -FUNC 1a564 4f 8 _islower_l -1a564 6 105 6535 -1a56a b 106 6535 -1a575 3c 108 6535 -1a5b1 2 109 6535 -FUNC 1a5b3 29 4 islower -1a5b3 0 114 6535 -1a5b3 9 115 6535 -1a5bc 11 117 6535 -1a5cd 1 123 6535 -1a5ce d 121 6535 -1a5db 1 123 6535 -FUNC 1a5dc 4f 8 _isdigit_l -1a5dc 6 129 6535 -1a5e2 b 130 6535 -1a5ed 3c 132 6535 -1a629 2 133 6535 -FUNC 1a62b 29 4 isdigit -1a62b 0 138 6535 -1a62b 9 139 6535 -1a634 11 141 6535 -1a645 1 147 6535 -1a646 d 145 6535 -1a653 1 147 6535 -FUNC 1a654 54 8 _isxdigit_l -1a654 6 153 6535 -1a65a b 154 6535 -1a665 41 156 6535 -1a6a6 2 157 6535 -FUNC 1a6a8 2b 4 isxdigit -1a6a8 0 162 6535 -1a6a8 9 163 6535 -1a6b1 13 165 6535 -1a6c4 1 171 6535 -1a6c5 d 169 6535 -1a6d2 1 171 6535 -FUNC 1a6d3 4f 8 _isspace_l -1a6d3 6 177 6535 -1a6d9 b 178 6535 -1a6e4 3c 180 6535 -1a720 2 181 6535 -FUNC 1a722 29 4 isspace -1a722 0 186 6535 -1a722 9 187 6535 -1a72b 11 189 6535 -1a73c 1 195 6535 -1a73d d 193 6535 -1a74a 1 195 6535 -FUNC 1a74b 4f 8 _ispunct_l -1a74b 6 201 6535 -1a751 b 202 6535 -1a75c 3c 204 6535 -1a798 2 205 6535 -FUNC 1a79a 29 4 ispunct -1a79a 0 210 6535 -1a79a 9 211 6535 -1a7a3 11 213 6535 -1a7b4 1 219 6535 -1a7b5 d 217 6535 -1a7c2 1 219 6535 -FUNC 1a7c3 54 8 _isalnum_l -1a7c3 6 225 6535 -1a7c9 b 226 6535 -1a7d4 41 228 6535 -1a815 2 229 6535 -FUNC 1a817 2b 4 isalnum -1a817 0 234 6535 -1a817 9 235 6535 -1a820 13 237 6535 -1a833 1 243 6535 -1a834 d 241 6535 -1a841 1 243 6535 -FUNC 1a842 54 8 _isprint_l -1a842 6 249 6535 -1a848 b 250 6535 -1a853 41 252 6535 -1a894 2 253 6535 -FUNC 1a896 2b 4 isprint -1a896 0 258 6535 -1a896 9 259 6535 -1a89f 13 261 6535 -1a8b2 1 267 6535 -1a8b3 d 265 6535 -1a8c0 1 267 6535 -FUNC 1a8c1 54 8 _isgraph_l -1a8c1 6 273 6535 -1a8c7 b 274 6535 -1a8d2 41 276 6535 -1a913 2 277 6535 -FUNC 1a915 2b 4 isgraph -1a915 0 282 6535 -1a915 9 283 6535 -1a91e 13 285 6535 -1a931 1 291 6535 -1a932 d 289 6535 -1a93f 1 291 6535 -FUNC 1a940 4f 8 _iscntrl_l -1a940 6 297 6535 -1a946 b 298 6535 -1a951 3c 300 6535 -1a98d 2 301 6535 -FUNC 1a98f 29 4 iscntrl -1a98f 0 306 6535 -1a98f 9 307 6535 -1a998 11 309 6535 -1a9a9 1 315 6535 -1a9aa d 313 6535 -1a9b7 1 315 6535 -FUNC 1a9b8 d 4 __isascii -1a9b8 0 320 6535 -1a9b8 c 321 6535 -1a9c4 1 322 6535 -FUNC 1a9c5 8 4 __toascii -1a9c5 0 327 6535 -1a9c5 7 328 6535 -1a9cc 1 329 6535 -FUNC 1a9cd 1f 8 _iscsymf_l -1a9cd 0 335 6535 -1a9cd 1a 336 6535 -1a9e7 1 337 6535 -1a9e8 3 336 6535 -1a9eb 1 337 6535 -FUNC 1a9ec 1a 4 __iscsymf -1a9ec 0 341 6535 -1a9ec 15 342 6535 -1aa01 1 343 6535 -1aa02 3 342 6535 -1aa05 1 343 6535 -FUNC 1aa06 1f 8 _iscsym_l -1aa06 0 349 6535 -1aa06 1a 350 6535 -1aa20 1 351 6535 -1aa21 3 350 6535 -1aa24 1 351 6535 -FUNC 1aa25 1c 4 __iscsym -1aa25 0 356 6535 -1aa25 17 357 6535 -1aa3c 1 358 6535 -1aa3d 3 357 6535 -1aa40 1 358 6535 -FUNC 1aa41 12 8 _MarkAllocaS -1aa41 0 207 2895 -1aa41 8 208 2895 -1aa49 6 210 2895 -1aa4f 3 211 2895 -1aa52 1 214 2895 -FUNC 1aa53 1b 4 _freea -1aa53 0 249 2895 -1aa53 8 251 2895 -1aa5b 3 253 2895 -1aa5e 8 255 2895 -1aa66 7 257 2895 -1aa6d 1 266 2895 -FUNC 1aa6e 13b 18 __crtGetLocaleInfoW_stat -1aa6e f 60 2876 -1aa7d 14 68 2876 -1aa91 d 70 2876 -1aa9e 8 71 2876 -1aaa6 b 73 2876 -1aab1 f 74 2876 -1aac0 5 79 2876 -1aac5 13 81 2876 -1aad8 7 86 2876 -1aadf 2 140 2876 -1aae1 8 96 2876 -1aae9 b 97 2876 -1aaf4 16 100 2876 -1ab0a 7 101 2876 -1ab11 48 104 2876 -1ab59 2 105 2876 -1ab5b 2 106 2876 -1ab5d e 110 2876 -1ab6b 7 113 2876 -1ab72 2 121 2876 -1ab74 2 123 2876 -1ab76 17 130 2876 -1ab8d 6 134 2876 -1ab93 4 136 2876 -1ab97 12 141 2876 -FUNC 1aba9 3b 18 __crtGetLocaleInfoW -1aba9 6 151 2876 -1abaf b 152 2876 -1abba 28 161 2876 -1abe2 2 162 2876 -FUNC 1abe4 13d 18 __crtGetLocaleInfoA_stat -1abe4 f 60 4251 -1abf3 17 68 4251 -1ac0a a 70 4251 -1ac14 8 71 4251 -1ac1c b 73 4251 -1ac27 f 74 4251 -1ac36 11 79 4251 -1ac47 4 86 4251 -1ac4b 5 96 4251 -1ac50 b 97 4251 -1ac5b 13 100 4251 -1ac6e 7 101 4251 -1ac75 49 104 4251 -1acbe 2 105 4251 -1acc0 2 106 4251 -1acc2 10 110 4251 -1acd2 3 114 4251 -1acd5 6 124 4251 -1acdb 2 126 4251 -1acdd 15 135 4251 -1acf2 7 139 4251 -1acf9 4 141 4251 -1acfd 12 81 4251 -1ad0f 12 145 4251 -FUNC 1ad21 3b 18 __crtGetLocaleInfoA -1ad21 6 155 4251 -1ad27 b 156 4251 -1ad32 28 165 4251 -1ad5a 2 166 4251 -FUNC 1ad5c 1a 4 strncnt -1ad5c 0 48 4203 -1ad5c 6 49 4203 -1ad62 6 52 4203 -1ad68 1 53 4203 -1ad69 5 52 4203 -1ad6e 7 55 4203 -1ad75 1 56 4203 -FUNC 1ad76 3a2 20 __crtLCMapStringA_stat -1ad76 12 99 4203 -1ad88 d 108 4203 -1ad95 1b 109 4203 -1adb0 8 110 4203 -1adb8 b 111 4203 -1adc3 a 112 4203 -1adcd 5 119 4203 -1add2 19 120 4203 -1adeb 5 124 4203 -1adf0 1 125 4203 -1adf1 3 127 4203 -1adf4 16 133 4203 -1ae0a 9 213 4203 -1ae13 8 235 4203 -1ae1b 8 236 4203 -1ae23 27 247 4203 -1ae4a 6 248 4203 -1ae50 48 251 4203 -1ae98 3 252 4203 -1ae9b 6 253 4203 -1aea1 19 262 4203 -1aeba 21 271 4203 -1aedb 8 274 4203 -1aee3 9 277 4203 -1aeec 9 279 4203 -1aef5 12 288 4203 -1af07 5 292 4203 -1af0c 4b 298 4203 -1af57 4 299 4203 -1af5b 18 309 4203 -1af73 3 312 4203 -1af76 6 322 4203 -1af7c 2 325 4203 -1af7e 17 335 4203 -1af95 7 342 4203 -1af9c 8 344 4203 -1afa4 9 346 4203 -1afad b 141 4203 -1afb8 8 142 4203 -1afc0 5 143 4203 -1afc5 8 144 4203 -1afcd 11 146 4203 -1afde 7 147 4203 -1afe5 9 153 4203 -1afee 15 155 4203 -1b003 5 156 4203 -1b008 2 157 4203 -1b00a 1b 164 4203 -1b025 7 166 4203 -1b02c 41 169 4203 -1b06d 2 170 4203 -1b06f 28 196 4203 -1b097 2 183 4203 -1b099 2 184 4203 -1b09b 25 190 4203 -1b0c0 7 198 4203 -1b0c7 2 199 4203 -1b0c9 1a 202 4203 -1b0e3 5 204 4203 -1b0e8 9 205 4203 -1b0f1 c 206 4203 -1b0fd 7 207 4203 -1b104 2 208 4203 -1b106 12 350 4203 -FUNC 1b118 43 24 __crtLCMapStringA -1b118 6 363 4203 -1b11e b 364 4203 -1b129 30 376 4203 -1b159 2 377 4203 -FUNC 1b15b 1b8 1c __crtGetStringTypeA_stat -1b15b f 66 4155 -1b16a 10 75 4155 -1b17a 18 79 4155 -1b192 8 80 4155 -1b19a b 82 4155 -1b1a5 f 83 4155 -1b1b4 11 88 4155 -1b1c5 9 120 4155 -1b1ce 8 141 4155 -1b1d6 8 142 4155 -1b1de 27 153 4155 -1b205 6 154 4155 -1b20b 3e 157 4155 -1b249 2 158 4155 -1b24b 2 159 4155 -1b24d f 161 4155 -1b25c 13 169 4155 -1b26f 11 174 4155 -1b280 6 176 4155 -1b286 6 178 4155 -1b28c 2 90 4155 -1b28e 5 94 4155 -1b293 8 95 4155 -1b29b 5 96 4155 -1b2a0 8 97 4155 -1b2a8 e 99 4155 -1b2b6 4 100 4155 -1b2ba 5 104 4155 -1b2bf 17 106 4155 -1b2d6 2 107 4155 -1b2d8 2 108 4155 -1b2da 3 109 4155 -1b2dd 15 112 4155 -1b2f2 6 113 4155 -1b2f8 7 114 4155 -1b2ff 2 115 4155 -1b301 12 182 4155 -FUNC 1b313 40 20 __crtGetStringTypeA -1b313 6 194 4155 -1b319 b 195 4155 -1b324 2d 206 4155 -1b351 2 207 4155 -FUNC 1b353 6 0 __pwctype_func -1b353 0 24 3986 -1b353 5 25 3986 -1b358 1 26 3986 -FUNC 1b359 29 0 __pctype_func -1b359 0 29 3986 -1b359 7 35 3986 -1b360 3 36 3986 -1b363 18 38 3986 -1b37b 6 39 3986 -1b381 1 40 3986 -FUNC 1b382 419 0 _get_lc_time -1b382 6 94 3379 -1b388 12 104 3379 -1b39a 3 105 3379 -1b39d 2 170 3379 -1b39f 9 108 3379 -1b3a8 16 112 3379 -1b3be 15 113 3379 -1b3d3 15 114 3379 -1b3e8 18 115 3379 -1b400 15 116 3379 -1b415 13 117 3379 -1b428 14 118 3379 -1b43c 18 120 3379 -1b454 15 121 3379 -1b469 15 122 3379 -1b47e 15 123 3379 -1b493 18 124 3379 -1b4ab 15 125 3379 -1b4c0 15 126 3379 -1b4d5 15 128 3379 -1b4ea 18 129 3379 -1b502 15 130 3379 -1b517 15 131 3379 -1b52c 15 132 3379 -1b541 18 133 3379 -1b559 15 134 3379 -1b56e 15 135 3379 -1b583 15 136 3379 -1b598 18 137 3379 -1b5b0 15 138 3379 -1b5c5 15 139 3379 -1b5da 15 141 3379 -1b5ef 18 142 3379 -1b607 15 143 3379 -1b61c 15 144 3379 -1b631 15 145 3379 -1b646 18 146 3379 -1b65e 18 147 3379 -1b676 18 148 3379 -1b68e 18 149 3379 -1b6a6 1b 150 3379 -1b6c1 18 151 3379 -1b6d9 18 152 3379 -1b6f1 18 154 3379 -1b709 1b 155 3379 -1b724 18 160 3379 -1b73c 18 161 3379 -1b754 1b 163 3379 -1b76f 20 165 3379 -1b78f a 169 3379 -1b799 2 170 3379 -FUNC 1b79b 190 4 __free_lc_time -1b79b 1 179 3379 -1b79c c 180 3379 -1b7a8 8 183 3379 -1b7b0 8 184 3379 -1b7b8 8 185 3379 -1b7c0 8 186 3379 -1b7c8 8 187 3379 -1b7d0 8 188 3379 -1b7d8 7 189 3379 -1b7df 8 191 3379 -1b7e7 8 192 3379 -1b7ef 8 193 3379 -1b7f7 8 194 3379 -1b7ff 8 195 3379 -1b807 8 196 3379 -1b80f 8 197 3379 -1b817 8 199 3379 -1b81f b 200 3379 -1b82a 8 201 3379 -1b832 8 202 3379 -1b83a 8 203 3379 -1b842 8 204 3379 -1b84a 8 205 3379 -1b852 8 206 3379 -1b85a 8 207 3379 -1b862 8 208 3379 -1b86a 8 209 3379 -1b872 8 210 3379 -1b87a 8 212 3379 -1b882 8 213 3379 -1b88a 8 214 3379 -1b892 8 215 3379 -1b89a 8 216 3379 -1b8a2 b 217 3379 -1b8ad b 218 3379 -1b8b8 b 219 3379 -1b8c3 b 220 3379 -1b8ce b 221 3379 -1b8d9 b 222 3379 -1b8e4 b 223 3379 -1b8ef b 225 3379 -1b8fa b 226 3379 -1b905 b 228 3379 -1b910 b 229 3379 -1b91b f 230 3379 -1b92a 1 232 3379 -FUNC 1b92b 73 4 __init_time -1b92b 4 56 3379 -1b92f f 60 3379 -1b93e 16 64 3379 -1b954 4 65 3379 -1b958 b 67 3379 -1b963 6 69 3379 -1b969 8 70 3379 -1b971 2 71 3379 -1b973 6 73 3379 -1b979 2 74 3379 -1b97b 2 75 3379 -1b97d 18 78 3379 -1b995 2 82 3379 -1b997 6 83 3379 -1b99d 1 84 3379 -FUNC 1b99e 33 0 fix_grouping -1b99e 0 32 3427 -1b99e 8 40 3427 -1b9a6 a 43 3427 -1b9b0 4 45 3427 -1b9b4 1 61 3427 -1b9b5 6 40 3427 -1b9bb 1 63 3427 -1b9bc 4 50 3427 -1b9c0 2 52 3427 -1b9c2 7 55 3427 -1b9c9 6 56 3427 -1b9cf 2 60 3427 -FUNC 1b9d1 40 4 __free_lconv_num -1b9d1 1 211 3427 -1b9d2 8 212 3427 -1b9da a 215 3427 -1b9e4 7 216 3427 -1b9eb b 218 3427 -1b9f6 7 219 3427 -1b9fd b 221 3427 -1ba08 8 222 3427 -1ba10 1 223 3427 -FUNC 1ba11 1c8 4 __init_numeric -1ba11 7 84 3427 -1ba18 4 92 3427 -1ba1c 2 93 3427 -1ba1e 11 96 3427 -1ba2f 3 177 3427 -1ba32 3 178 3427 -1ba35 c 179 3427 -1ba41 14 102 3427 -1ba55 8 103 3427 -1ba5d 9 108 3427 -1ba66 13 113 3427 -1ba79 9 115 3427 -1ba82 2 116 3427 -1ba84 2 118 3427 -1ba86 9 120 3427 -1ba8f 12 125 3427 -1baa1 8 127 3427 -1baa9 a 128 3427 -1bab3 7 129 3427 -1baba 2 131 3427 -1babc 19 140 3427 -1bad5 15 142 3427 -1baea 1b 144 3427 -1bb05 2 146 3427 -1bb07 c 148 3427 -1bb13 1e 154 3427 -1bb31 2 156 3427 -1bb33 17 154 3427 -1bb4a b 164 3427 -1bb55 9 165 3427 -1bb5e c 166 3427 -1bb6a 8 168 3427 -1bb72 7 169 3427 -1bb79 2 170 3427 -1bb7b 13 186 3427 -1bb8e 11 191 3427 -1bb9f b 193 3427 -1bbaa d 194 3427 -1bbb7 9 197 3427 -1bbc0 9 198 3427 -1bbc9 9 200 3427 -1bbd2 5 201 3427 -1bbd7 2 202 3427 -FUNC 1bbd9 33 0 fix_grouping -1bbd9 0 214 3470 -1bbd9 8 222 3470 -1bbe1 a 225 3470 -1bbeb 4 227 3470 -1bbef 1 243 3470 -1bbf0 6 222 3470 -1bbf6 1 245 3470 -1bbf7 4 232 3470 -1bbfb 2 234 3470 -1bbfd 7 237 3470 -1bc04 6 238 3470 -1bc0a 2 242 3470 -FUNC 1bc0c 89 4 __free_lconv_mon -1bc0c 1 255 3470 -1bc0d 8 256 3470 -1bc15 b 259 3470 -1bc20 7 260 3470 -1bc27 b 262 3470 -1bc32 7 263 3470 -1bc39 b 265 3470 -1bc44 7 266 3470 -1bc4b b 268 3470 -1bc56 7 269 3470 -1bc5d b 271 3470 -1bc68 7 272 3470 -1bc6f b 274 3470 -1bc7a 7 275 3470 -1bc81 b 277 3470 -1bc8c 8 278 3470 -1bc94 1 279 3470 -FUNC 1bc95 2c4 4 __init_monetary -1bc95 8 65 3470 -1bc9d 6 73 3470 -1bca3 13 77 3470 -1bcb6 3 187 3470 -1bcb9 3 188 3470 -1bcbc a 189 3470 -1bcc6 11 83 3470 -1bcd7 8 84 3470 -1bcdf f 89 3470 -1bcee 7 91 3470 -1bcf5 2 92 3470 -1bcf7 2 94 3470 -1bcf9 9 96 3470 -1bd02 f 101 3470 -1bd11 6 103 3470 -1bd17 9 104 3470 -1bd20 2 105 3470 -1bd22 2 107 3470 -1bd24 4 112 3470 -1bd28 14 117 3470 -1bd3c 14 119 3470 -1bd50 14 121 3470 -1bd64 17 123 3470 -1bd7b 14 125 3470 -1bd8f 14 128 3470 -1bda3 14 130 3470 -1bdb7 17 133 3470 -1bdce 14 135 3470 -1bde2 14 137 3470 -1bdf6 14 139 3470 -1be0a 17 141 3470 -1be21 14 143 3470 -1be35 14 145 3470 -1be49 17 147 3470 -1be60 2 149 3470 -1be62 6 150 3470 -1be68 6 151 3470 -1be6e 8 152 3470 -1be76 b 153 3470 -1be81 5 154 3470 -1be86 1c 157 3470 -1bea2 2 159 3470 -1bea4 17 157 3470 -1bebb c 169 3470 -1bec7 3 175 3470 -1beca 32 181 3470 -1befc 11 194 3470 -1bf0d 15 199 3470 -1bf22 b 201 3470 -1bf2d d 202 3470 -1bf3a 9 204 3470 -1bf43 9 205 3470 -1bf4c 6 206 3470 -1bf52 5 208 3470 -1bf57 2 209 3470 -FUNC 1bf59 395 4 __init_ctype -1bf59 11 59 3562 -1bf6a 6 60 3562 -1bf70 1f 82 3562 -1bf8f 7 84 3562 -1bf96 20 89 3562 -1bfb6 7 94 3562 -1bfbd 10 98 3562 -1bfcd b 100 3562 -1bfd8 b 102 3562 -1bfe3 12 104 3562 -1bff5 2f 106 3562 -1c024 5 109 3562 -1c029 2 112 3562 -1c02b e 113 3562 -1c039 15 115 3562 -1c04e a 118 3562 -1c058 4 121 3562 -1c05c 8 124 3562 -1c064 e 126 3562 -1c072 9 128 3562 -1c07b b 129 3562 -1c086 b 128 3562 -1c091 2c 140 3562 -1c0bd 33 155 3562 -1c0f0 2d 166 3562 -1c11d 37 178 3562 -1c154 11 180 3562 -1c165 17 182 3562 -1c17c 15 183 3562 -1c191 d 180 3562 -1c19e 12 189 3562 -1c1b0 f 190 3562 -1c1bf 12 191 3562 -1c1d1 18 195 3562 -1c1e9 11 198 3562 -1c1fa 13 199 3562 -1c20d e 200 3562 -1c21b e 201 3562 -1c229 9 203 3562 -1c232 6 204 3562 -1c238 9 206 3562 -1c241 9 207 3562 -1c24a 9 208 3562 -1c253 9 209 3562 -1c25c 9 210 3562 -1c265 9 213 3562 -1c26e 4 214 3562 -1c272 8 217 3562 -1c27a 8 218 3562 -1c282 8 219 3562 -1c28a 10 220 3562 -1c29a 13 227 3562 -1c2ad 2 231 3562 -1c2af 6 232 3562 -1c2b5 a 233 3562 -1c2bf a 234 3562 -1c2c9 a 235 3562 -1c2d3 a 236 3562 -1c2dd 2 238 3562 -1c2df f 240 3562 -FUNC 1c2ee 29 0 ___mb_cur_max_func -1c2ee 0 248 3562 -1c2ee 7 254 3562 -1c2f5 3 255 3562 -1c2f8 18 257 3562 -1c310 6 259 3562 -1c316 1 260 3562 -FUNC 1c317 16 4 ___mb_cur_max_l_func -1c317 0 263 3562 -1c317 15 264 3562 -1c32c 1 265 3562 -FUNC 1c32d 26 0 ___lc_codepage_func -1c32d 0 268 3562 -1c32d 7 274 3562 -1c334 3 275 3562 -1c337 18 277 3562 -1c34f 3 279 3562 -1c352 1 280 3562 -FUNC 1c353 26 0 ___lc_collate_cp_func -1c353 0 284 3562 -1c353 7 290 3562 -1c35a 3 291 3562 -1c35d 18 293 3562 -1c375 3 295 3562 -1c378 1 296 3562 -FUNC 1c379 26 0 ___lc_handle_func -1c379 0 300 3562 -1c379 7 306 3562 -1c380 3 307 3562 -1c383 18 309 3562 -1c39b 3 311 3562 -1c39e 1 312 3562 -FUNC 1c39f 3 4 __init_collate -1c39f 0 41 3650 -1c39f 2 42 3650 -1c3a1 1 43 3650 -FUNC 1c3a2 fe 4 _Getdays_l -1c3a2 9 111 516 -1c3ab d 115 516 -1c3b8 9 117 516 -1c3c1 9 119 516 -1c3ca 28 120 516 -1c3f2 b 121 516 -1c3fd c 123 516 -1c409 4 126 516 -1c40d 30 128 516 -1c43d 8 129 516 -1c445 31 131 516 -1c476 12 132 516 -1c488 3 134 516 -1c48b 13 137 516 -1c49e 2 138 516 -FUNC 1c4a0 9 0 _Getdays -1c4a0 0 142 516 -1c4a0 8 143 516 -1c4a8 1 144 516 -FUNC 1c4a9 fe 4 _Getmonths_l -1c4a9 9 150 516 -1c4b2 d 154 516 -1c4bf 16 156 516 -1c4d5 2b 159 516 -1c500 b 160 516 -1c50b 8 162 516 -1c513 a 163 516 -1c51d 2d 167 516 -1c54a 8 168 516 -1c552 2c 170 516 -1c57e 11 171 516 -1c58f 3 173 516 -1c592 13 176 516 -1c5a5 2 177 516 -FUNC 1c5a7 9 0 _Getmonths -1c5a7 0 181 516 -1c5a7 8 182 516 -1c5af 1 183 516 -FUNC 1c5b0 355 4 _Gettnames_l -1c5b0 9 189 516 -1c5b9 d 193 516 -1c5c6 9 195 516 -1c5cf 9 197 516 -1c5d8 28 198 516 -1c600 d 199 516 -1c60d 29 200 516 -1c636 18 201 516 -1c64e 11 202 516 -1c65f f 203 516 -1c66e f 204 516 -1c67d 7 205 516 -1c684 e 206 516 -1c692 8 208 516 -1c69a 12 212 516 -1c6ac 13 213 516 -1c6bf 6 214 516 -1c6c5 2a 215 516 -1c6ef 6 216 516 -1c6f5 d 217 516 -1c702 26 218 516 -1c728 1c 219 516 -1c744 18 221 516 -1c75c 6 222 516 -1c762 26 223 516 -1c788 a 224 516 -1c792 5 225 516 -1c797 2a 226 516 -1c7c1 18 227 516 -1c7d9 30 230 516 -1c809 a 231 516 -1c813 30 233 516 -1c843 a 234 516 -1c84d 30 236 516 -1c87d a 237 516 -1c887 30 239 516 -1c8b7 a 240 516 -1c8c1 30 242 516 -1c8f1 12 245 516 -1c903 2 246 516 -FUNC 1c905 9 0 _Gettnames -1c905 0 250 516 -1c905 8 251 516 -1c90d 1 252 516 -FUNC 1c90e 20 0 _store_str -1c90e 0 869 516 -1c90e f 871 516 -1c91d 7 872 516 -1c924 9 873 516 -1c92d 1 875 516 -FUNC 1c92e 36 0 _store_number -1c92e 0 965 516 -1c92e 8 973 516 -1c936 c 976 516 -1c942 2 977 516 -1c944 b 978 516 -1c94f 2 981 516 -1c951 2 982 516 -1c953 1 983 516 -1c954 7 988 516 -1c95b 3 989 516 -1c95e 5 990 516 -1c963 1 991 516 -FUNC 1c964 79 4 _store_num -1c964 8 909 516 -1c96c 2 910 516 -1c96e 8 912 516 -1c976 33 913 516 -1c9a9 2 914 516 -1c9ab 4 917 516 -1c9af 8 918 516 -1c9b7 b 919 516 -1c9c2 c 921 516 -1c9ce 5 923 516 -1c9d3 2 924 516 -1c9d5 2 926 516 -1c9d7 4 927 516 -1c9db 2 928 516 -FUNC 1c9dd 3e6 10 _expandtime -1c9dd 5 548 516 -1c9e2 4f 558 516 -1ca31 16 659 516 -1ca47 5 662 516 -1ca4c 16 587 516 -1ca62 7 589 516 -1ca69 5 590 516 -1ca6e 16 571 516 -1ca84 7 573 516 -1ca8b 5 574 516 -1ca90 5 822 516 -1ca95 7 823 516 -1ca9c 5 824 516 -1caa1 16 667 516 -1cab7 10 668 516 -1cac7 2 669 516 -1cac9 5 672 516 -1cace 23 558 516 -1caf1 6 787 516 -1caf7 5 789 516 -1cafc 15 736 516 -1cb11 2 737 516 -1cb13 2 739 516 -1cb15 5 740 516 -1cb1a 15 722 516 -1cb2f 2 723 516 -1cb31 16 742 516 -1cb47 4 743 516 -1cb4b 2 744 516 -1cb4d 5 745 516 -1cb52 6 746 516 -1cb58 8 747 516 -1cb60 1 748 516 -1cb61 5 752 516 -1cb66 f 715 516 -1cb75 5 718 516 -1cb7a 3 696 516 -1cb7d 2 699 516 -1cb7f 1d 804 516 -1cb9c 6 806 516 -1cba2 d 808 516 -1cbaf 2 809 516 -1cbb1 37 558 516 -1cbe8 19 678 516 -1cc01 8 680 516 -1cc09 2 681 516 -1cc0b 15 650 516 -1cc20 13 652 516 -1cc33 5 653 516 -1cc38 1e 601 516 -1cc56 2 603 516 -1cc58 5 606 516 -1cc5d 2 607 516 -1cc5f 2 608 516 -1cc61 25 615 516 -1cc86 2 617 516 -1cc88 1 627 516 -1cc89 2 642 516 -1cc8b e 579 516 -1cc99 7 581 516 -1cca0 5 582 516 -1cca5 2d 562 516 -1ccd2 6 564 516 -1ccd8 5 565 516 -1ccdd e 687 516 -1cceb 3 689 516 -1ccee 5 690 516 -1ccf3 15 558 516 -1cd08 2 834 516 -1cd0a 5 814 516 -1cd0f 19 817 516 -1cd28 5 819 516 -1cd2d d 795 516 -1cd3a b 798 516 -1cd45 5 799 516 -1cd4a 11 762 516 -1cd5b 5 764 516 -1cd60 1 774 516 -1cd61 5 776 516 -1cd66 16 729 516 -1cd7c 6 731 516 -1cd82 5 732 516 -1cd87 16 704 516 -1cd9d 3 705 516 -1cda0 b 706 516 -1cdab 2 707 516 -1cdad e 708 516 -1cdbb 6 839 516 -1cdc1 2 840 516 -FUNC 1cdc3 45d 18 _store_winword -1cdc3 10 1035 516 -1cdd3 5 1043 516 -1cdd8 a 1053 516 -1cde2 3 1043 516 -1cde5 6 1053 516 -1cdeb 2 1054 516 -1cded 6 1049 516 -1cdf3 2 1050 516 -1cdf5 6 1046 516 -1cdfb 10 1057 516 -1ce0b 4 1066 516 -1ce0f 8 1067 516 -1ce17 6 1069 516 -1ce1d d 1075 516 -1ce2a a 1076 516 -1ce34 8 1077 516 -1ce3c 4 1078 516 -1ce40 2a 1085 516 -1ce6a b 1087 516 -1ce75 31 1092 516 -1cea6 7 1093 516 -1cead 3 1097 516 -1ceb0 13 1100 516 -1cec3 10 1101 516 -1ced3 b 1102 516 -1cede b 1103 516 -1cee9 9 1106 516 -1cef2 3 1291 516 -1cef5 12 1292 516 -1cf07 11 1114 516 -1cf18 5 1117 516 -1cf1d b 1120 516 -1cf28 37 1125 516 -1cf5f 14 1274 516 -1cf73 c 1277 516 -1cf7f 8 1283 516 -1cf87 4 1284 516 -1cf8b 9 1286 516 -1cf94 c 1287 516 -1cfa0 5 1277 516 -1cfa5 e 1128 516 -1cfb3 7 1133 516 -1cfba 7 1132 516 -1cfc1 7 1130 516 -1cfc8 2 1131 516 -1cfca 5 1134 516 -1cfcf a 1156 516 -1cfd9 7 1158 516 -1cfe0 2 1159 516 -1cfe2 5 1160 516 -1cfe7 11 1175 516 -1cff8 5 1176 516 -1cffd 11 1177 516 -1d00e 6 1178 516 -1d014 2 1179 516 -1d016 5 1180 516 -1d01b b 1225 516 -1d026 13 1226 516 -1d039 4 1228 516 -1d03d 1a 1233 516 -1d057 9 1236 516 -1d060 8 1242 516 -1d068 4 1243 516 -1d06c 9 1246 516 -1d075 8 1247 516 -1d07d 5 1277 516 -1d082 1 1230 516 -1d083 5 1250 516 -1d088 12 1136 516 -1d09a 7 1141 516 -1d0a1 7 1140 516 -1d0a8 7 1138 516 -1d0af 2 1139 516 -1d0b1 5 1142 516 -1d0b6 29 1125 516 -1d0df e 1144 516 -1d0ed 7 1147 516 -1d0f4 2 1146 516 -1d0f6 5 1148 516 -1d0fb 7 1182 516 -1d102 b 1183 516 -1d10d 2 1184 516 -1d10f 6 1185 516 -1d115 12 1187 516 -1d127 17 1188 516 -1d13e c 1191 516 -1d14a 8 1197 516 -1d152 4 1198 516 -1d156 8 1201 516 -1d15e 2 1202 516 -1d160 5 1203 516 -1d165 9 1204 516 -1d16e 1a 1205 516 -1d188 9 1207 516 -1d191 8 1212 516 -1d199 4 1213 516 -1d19d 9 1215 516 -1d1a6 8 1216 516 -1d1ae 2 1220 516 -1d1b0 d 1168 516 -1d1bd 7 1170 516 -1d1c4 2 1171 516 -1d1c6 2 1172 516 -1d1c8 d 1162 516 -1d1d5 7 1164 516 -1d1dc 2 1165 516 -1d1de 2 1166 516 -1d1e0 d 1150 516 -1d1ed 7 1152 516 -1d1f4 2 1153 516 -1d1f6 1b 1268 516 -1d211 3 1272 516 -1d214 5 1273 516 -1d219 7 1194 516 -FUNC 1d220 1af 18 _Strftime_l -1d220 6 356 516 -1d226 4 361 516 -1d22a 13 362 516 -1d23d 33 364 516 -1d270 33 365 516 -1d2a3 d 368 516 -1d2b0 10 375 516 -1d2c0 e 385 516 -1d2ce a 387 516 -1d2d8 1e 435 516 -1d2f6 4 438 516 -1d2fa a 446 516 -1d304 5 447 516 -1d309 b 452 516 -1d314 3 453 516 -1d317 2 454 516 -1d319 7 400 516 -1d320 1 405 516 -1d321 2 408 516 -1d323 5 409 516 -1d328 1 411 516 -1d329 1 412 516 -1d32a 1d 415 516 -1d347 1 428 516 -1d348 5 385 516 -1d34d 5 464 516 -1d352 5 469 516 -1d357 13 470 516 -1d36a 3 441 516 -1d36d f 478 516 -1d37c b 481 516 -1d387 2 483 516 -1d389 b 402 516 -1d394 2 403 516 -1d396 5 421 516 -1d39b 7 423 516 -1d3a2 2 464 516 -1d3a4 18 485 516 -1d3bc 11 488 516 -1d3cd 2 490 516 -FUNC 1d3cf 1e 14 _strftime_l -1d3cf 3 291 516 -1d3d2 19 292 516 -1d3eb 2 293 516 -FUNC 1d3ed 1d 10 strftime -1d3ed 0 300 516 -1d3ed 1c 301 516 -1d409 1 302 516 -FUNC 1d40a 1e 14 _Strftime -1d40a 3 343 516 -1d40d 19 345 516 -1d426 2 346 516 -FUNC 1d428 26 0 localeconv -1d428 0 69 3302 -1d428 5 75 3302 -1d42d 1b 78 3302 -1d448 5 79 3302 -1d44d 1 80 3302 -FUNC 1d450 46 8 strcspn -1d450 4 191 924 -1d454 2 198 924 -1d456 1 199 924 -1d457 1 200 924 -1d458 1 201 924 -1d459 1 202 924 -1d45a 1 203 924 -1d45b 1 204 924 -1d45c 1 205 924 -1d45d 1 206 924 -1d45e 6 212 924 -1d464 2 216 924 -1d466 2 217 924 -1d468 2 218 924 -1d46a 3 219 924 -1d46d 4 220 924 -1d471 2 221 924 -1d473 3 227 924 -1d476 6 229 924 -1d47c 3 234 924 -1d47f 2 236 924 -1d481 2 237 924 -1d483 2 238 924 -1d485 3 239 924 -1d488 4 240 924 -1d48c 2 245 924 -1d48e 2 255 924 -1d490 3 257 924 -1d493 3 259 924 -FUNC 1d496 60 c TranslateName -1d496 3 340 3849 -1d499 3 342 3849 -1d49c 3 343 3849 -1d49f b 346 3849 -1d4aa a 348 3849 -1d4b4 14 349 3849 -1d4c8 6 351 3849 -1d4ce a 352 3849 -1d4d8 2 353 3849 -1d4da 4 354 3849 -1d4de 2 355 3849 -1d4e0 3 356 3849 -1d4e3 7 346 3849 -1d4ea a 359 3849 -1d4f4 2 360 3849 -FUNC 1d4f6 14 0 GetLcidFromDefault -1d4f6 0 761 3849 -1d4f6 7 762 3849 -1d4fd c 763 3849 -1d509 1 764 3849 -FUNC 1d50a 77 0 ProcessCodePage -1d50a 13 784 3849 -1d51d 1a 787 3849 -1d537 11 795 3849 -1d548 8 799 3849 -1d550 2 801 3849 -1d552 18 791 3849 -1d56a 3 793 3849 -1d56d 7 805 3849 -1d574 d 806 3849 -FUNC 1d581 1e 4 TestDefaultCountry -1d581 0 826 3849 -1d581 2 830 3849 -1d583 15 832 3849 -1d598 3 835 3849 -1d59b 1 836 3849 -1d59c 2 833 3849 -1d59e 1 836 3849 -FUNC 1d59f 32 0 LcidFromHexString -1d59f 1 893 3849 -1d5a0 2 895 3849 -1d5a2 2 897 3849 -1d5a4 9 899 3849 -1d5ad 5 900 3849 -1d5b2 8 901 3849 -1d5ba 3 902 3849 -1d5bd 10 903 3849 -1d5cd 3 906 3849 -1d5d0 1 907 3849 -FUNC 1d5d1 1b 0 GetPrimaryLen -1d5d1 0 926 3849 -1d5d1 2 927 3849 -1d5d3 3 930 3849 -1d5d6 12 931 3849 -1d5e8 1 933 3849 -1d5e9 2 935 3849 -1d5eb 1 938 3849 -FUNC 1d5ec 96 4 CountryEnumProc -1d5ec 15 717 3849 -1d601 7 718 3849 -1d608 f 719 3849 -1d617 23 725 3849 -1d63a 3 728 3849 -1d63d 3 729 3849 -1d640 12 731 3849 -1d652 b 734 3849 -1d65d a 738 3849 -1d667 b 741 3849 -1d672 10 742 3849 -FUNC 1d682 72 8 TestDefaultLanguage -1d682 11 858 3849 -1d693 22 864 3849 -1d6b5 4 865 3849 -1d6b9 d 867 3849 -1d6c6 1c 871 3849 -1d6e2 2 872 3849 -1d6e4 3 874 3849 -1d6e7 d 875 3849 -FUNC 1d6f4 1d0 4 LangCountryEnumProc -1d6f4 16 435 3849 -1d70a 7 436 3849 -1d711 d 437 3849 -1d71e 27 444 3849 -1d745 4 447 3849 -1d749 8 448 3849 -1d751 16 450 3849 -1d767 1d 456 3849 -1d784 2 460 3849 -1d786 11 462 3849 -1d797 7 467 3849 -1d79e 5 468 3849 -1d7a3 6 472 3849 -1d7a9 1a 475 3849 -1d7c3 14 482 3849 -1d7d7 3 483 3849 -1d7da a 487 3849 -1d7e4 b 490 3849 -1d7ef 6 493 3849 -1d7f5 3 494 3849 -1d7f8 12 501 3849 -1d80a 1d 506 3849 -1d827 6 510 3849 -1d82d c 513 3849 -1d839 16 518 3849 -1d84f 8 522 3849 -1d857 14 528 3849 -1d86b 2 531 3849 -1d86d 2 540 3849 -1d86f 1b 550 3849 -1d88a f 553 3849 -1d899 7 557 3849 -1d8a0 5 558 3849 -1d8a5 3 559 3849 -1d8a8 b 566 3849 -1d8b3 11 567 3849 -FUNC 1d8c4 bf 4 LanguageEnumProc -1d8c4 15 624 3849 -1d8d9 7 625 3849 -1d8e0 f 626 3849 -1d8ef 23 632 3849 -1d912 3 635 3849 -1d915 3 636 3849 -1d918 11 639 3849 -1d929 7 643 3849 -1d930 2 650 3849 -1d932 1d 651 3849 -1d94f f 654 3849 -1d95e a 658 3849 -1d968 b 662 3849 -1d973 10 663 3849 -FUNC 1d983 2c 0 GetLcidFromCountry -1d983 0 686 3849 -1d983 10 687 3849 -1d993 11 689 3849 -1d9a4 6 693 3849 -1d9aa 4 694 3849 -1d9ae 1 695 3849 -FUNC 1d9af 65 0 GetLcidFromLangCountry -1d9af 0 386 3849 -1d9af 7 388 3849 -1d9b6 1a 389 3849 -1d9d0 5 390 3849 -1d9d5 17 392 3849 -1d9ec 10 394 3849 -1d9fc 13 402 3849 -1da0f 4 403 3849 -1da13 1 404 3849 -FUNC 1da14 3c 0 GetLcidFromLanguage -1da14 0 591 3849 -1da14 13 593 3849 -1da27 e 594 3849 -1da35 10 596 3849 -1da45 6 600 3849 -1da4b 4 601 3849 -1da4f 1 602 3849 -FUNC 1da50 1e3 c __get_qualified_locale -1da50 4 205 3849 -1da54 5 208 3849 -1da59 12 212 3849 -1da6b 7 215 3849 -1da72 5 217 3849 -1da77 3 222 3849 -1da7a f 223 3849 -1da89 10 226 3849 -1da99 d 230 3849 -1daa6 a 232 3849 -1dab0 5 235 3849 -1dab5 2 237 3849 -1dab7 5 240 3849 -1dabc 5 243 3849 -1dac1 14 248 3849 -1dad5 a 250 3849 -1dadf 5 252 3849 -1dae4 2 254 3849 -1dae6 5 256 3849 -1daeb 2 261 3849 -1daed a 263 3849 -1daf7 28 266 3849 -1db1f 2 268 3849 -1db21 13 271 3849 -1db34 3 277 3849 -1db37 6 278 3849 -1db3d 17 281 3849 -1db54 32 285 3849 -1db86 d 289 3849 -1db93 6 290 3849 -1db99 8 293 3849 -1dba1 7 295 3849 -1dba8 8 296 3849 -1dbb0 4 297 3849 -1dbb4 8 301 3849 -1dbbc d 305 3849 -1dbc9 23 306 3849 -1dbec 2 307 3849 -1dbee f 308 3849 -1dbfd 2 309 3849 -1dbff 12 311 3849 -1dc11 2 312 3849 -1dc13 14 313 3849 -1dc27 5 315 3849 -1dc2c 6 286 3849 -1dc32 1 316 3849 -FUNC 1dc33 12 0 cmpResult -FUNC 1dc45 18 0 cmpBYTE -FUNC 1dc5d 40 0 cmpWORD -FUNC 1dc9d 78 0 cmpDWORD -FUNC 1dd15 1490 0 unaligned_memcmp -FUNC 1f1a5 1680 c memcmp -FUNC 20825 be c strncmp -20825 4 42 876 -20829 5 43 876 -2082e 7 45 876 -20835 7 46 876 -2083c 6 48 876 -20842 d 51 876 -2084f 11 56 876 -20860 c 61 876 -2086c c 66 876 -20878 15 71 876 -2088d 2 81 876 -2088f a 73 876 -20899 a 68 876 -208a3 a 63 876 -208ad 10 58 876 -208bd 2 79 876 -208bf a 81 876 -208c9 1 85 876 -208ca 4 86 876 -208ce 5 79 876 -208d3 4 89 876 -208d7 2 90 876 -208d9 a 83 876 -FUNC 208f0 40 8 strpbrk -208f0 4 191 869 -208f4 2 198 869 -208f6 1 199 869 -208f7 1 200 869 -208f8 1 201 869 -208f9 1 202 869 -208fa 1 203 869 -208fb 1 204 869 -208fc 1 205 869 -208fd 1 206 869 -208fe 6 212 869 -20904 2 216 869 -20906 2 217 869 -20908 2 218 869 -2090a 3 219 869 -2090d 4 220 869 -20911 2 221 869 -20913 5 227 869 -20918 2 236 869 -2091a 2 237 869 -2091c 2 238 869 -2091e 3 239 869 -20921 4 240 869 -20925 2 247 869 -20927 3 248 869 -2092a 3 257 869 -2092d 3 259 869 -FUNC 20930 82 c _iswctype_l -20930 6 66 6445 -20936 8 69 6445 -2093e 6 70 6445 -20944 8 71 6445 -2094c 18 72 6445 -20964 2 73 6445 -20966 b 75 6445 -20971 25 85 6445 -20996 3 86 6445 -20999 d 87 6445 -209a6 a 89 6445 -209b0 2 90 6445 -FUNC 209b2 6e 8 iswctype -209b2 4 96 6445 -209b6 8 97 6445 -209be 2 99 6445 -209c0 2 122 6445 -209c2 8 101 6445 -209ca 14 103 6445 -209de 2 122 6445 -209e0 9 106 6445 -209e9 25 117 6445 -20a0e 10 121 6445 -20a1e 2 122 6445 -FUNC 20a20 5 8 is_wctype -20a20 0 148 6445 -20a20 5 149 6445 -FUNC 20a25 22b 14 strtoxl -20a25 8 80 6309 -20a2d b 86 6309 -20a38 3 89 6309 -20a3b b 92 6309 -20a46 30 94 6309 -20a76 11 95 6309 -20a87 c 100 6309 -20a93 34 101 6309 -20ac7 5 102 6309 -20acc 5 104 6309 -20ad1 4 105 6309 -20ad5 2 106 6309 -20ad7 5 108 6309 -20adc 3 109 6309 -20adf 1d 111 6309 -20afc 4 118 6309 -20b00 5 121 6309 -20b05 9 122 6309 -20b0e a 123 6309 -20b18 9 126 6309 -20b21 7 124 6309 -20b28 2 129 6309 -20b2a 5 140 6309 -20b2f f 142 6309 -20b3e 1 143 6309 -20b3f 9 144 6309 -20b48 8 149 6309 -20b50 c 154 6309 -20b5c 8 155 6309 -20b64 7 156 6309 -20b6b 13 157 6309 -20b7e 5 160 6309 -20b83 4 164 6309 -20b87 b 171 6309 -20b92 4 177 6309 -20b96 6 178 6309 -20b9c 8 190 6309 -20ba4 6 193 6309 -20baa 3 195 6309 -20bad 4 196 6309 -20bb1 2 198 6309 -20bb3 c 173 6309 -20bbf 3 185 6309 -20bc2 2 186 6309 -20bc4 24 201 6309 -20be8 5 204 6309 -20bed c 205 6309 -20bf9 6 206 6309 -20bff 10 207 6309 -20c0f 7 213 6309 -20c16 2 215 6309 -20c18 6 217 6309 -20c1e 3 219 6309 -20c21 12 221 6309 -20c33 7 113 6309 -20c3a 2 115 6309 -20c3c 12 116 6309 -20c4e 2 222 6309 -FUNC 20c50 29 c strtol -20c50 3 229 6309 -20c53 8 230 6309 -20c5b 13 232 6309 -20c6e 9 236 6309 -20c77 2 238 6309 -FUNC 20c79 1b 10 _strtol_l -20c79 0 246 6309 -20c79 1a 247 6309 -20c93 1 248 6309 -FUNC 20c94 2a c strtoul -20c94 3 255 6309 -20c97 7 256 6309 -20c9e 14 258 6309 -20cb2 a 262 6309 -20cbc 2 264 6309 -FUNC 20cbe 1b 10 _strtoul_l -20cbe 0 272 6309 -20cbe 1a 273 6309 -20cd8 1 274 6309 -FUNC 20cd9 1f 0 __initconin -20cd9 0 58 5008 -20cd9 1e 65 5008 -20cf7 1 67 5008 -FUNC 20cf8 1f 0 __initconout -20cf8 0 90 5008 -20cf8 1e 97 5008 -20d16 1 98 5008 -FUNC 20d17 2d 0 __termcon -20d17 0 120 5008 -20d17 16 121 5008 -20d2d 3 122 5008 -20d30 f 125 5008 -20d3f 4 126 5008 -20d43 1 128 5008 -FUNC 20d44 94 4 _close_nolock -20d44 1 72 5094 -20d45 54 93 5094 -20d99 a 99 5094 -20da3 2 96 5094 -20da5 6 101 5094 -20dab b 103 5094 -20db6 11 105 5094 -20dc7 7 107 5094 -20dce 5 108 5094 -20dd3 4 111 5094 -20dd7 1 112 5094 -FUNC 20dd8 cd 4 _close -20dd8 c 42 5094 -20de4 23 46 5094 -20e07 2f 47 5094 -20e36 20 48 5094 -20e56 7 50 5094 -20e5d 3 52 5094 -20e60 9 53 5094 -20e69 c 54 5094 -20e75 2 55 5094 -20e77 b 56 5094 -20e82 4 57 5094 -20e86 c 61 5094 -20e92 3 65 5094 -20e95 6 66 5094 -20e9b a 62 5094 -FUNC 20ea5 2c 4 _freebuf -20ea5 1 47 1927 -20ea6 f 50 1927 -20eb5 8 52 1927 -20ebd 7 54 1927 -20ec4 8 55 1927 -20ecc 4 56 1927 -20ed0 1 58 1927 -FUNC 20ed1 2a 0 _purecall -20ed1 0 43 3119 -20ed1 b 44 3119 -20edc 5 45 3119 -20ee1 2 47 3119 -20ee3 7 54 3119 -20eea c 56 3119 -20ef6 5 57 3119 -FUNC 20efb 22 4 _set_purecall_handler -20efb 1 82 3119 -20efc b 85 3119 -20f07 12 86 3119 -20f19 3 88 3119 -20f1c 1 89 3119 -FUNC 20f1d d 0 _get_purecall_handler -20f1d 0 92 3119 -20f1d c 93 3119 -20f29 1 94 3119 -FUNC 20f30 34 0 _allmul -20f30 0 47 5116 -20f30 4 62 5116 -20f34 4 63 5116 -20f38 2 64 5116 -20f3a 4 65 5116 -20f3e 2 66 5116 -20f40 4 68 5116 -20f44 2 69 5116 -20f46 3 71 5116 -20f49 1 74 5116 -20f4a 2 81 5116 -20f4c 2 82 5116 -20f4e 4 84 5116 -20f52 4 85 5116 -20f56 2 86 5116 -20f58 4 88 5116 -20f5c 2 89 5116 -20f5e 2 90 5116 -20f60 1 92 5116 -20f61 3 94 5116 -FUNC 20f64 11 4 atol -20f64 0 55 6631 -20f64 10 56 6631 -20f74 1 57 6631 -FUNC 20f75 15 8 _atol_l -20f75 0 64 6631 -20f75 14 65 6631 -20f89 1 66 6631 -FUNC 20f8a 5 4 atoi -20f8a 0 99 6631 -20f8a 5 100 6631 -FUNC 20f8f 5 8 _atoi_l -20f8f 0 107 6631 -20f8f 5 108 6631 -FUNC 20f94 11 4 _atoi64 -20f94 0 143 6631 -20f94 10 144 6631 -20fa4 1 145 6631 -FUNC 20fa5 15 8 _atoi64_l -20fa5 0 151 6631 -20fa5 14 152 6631 -20fb9 1 153 6631 -FUNC 20fba 50 0 has_osfxsr_set -FUNC 2100a 60 0 _get_sse2_info -FUNC 2106a d 0 __sse2_available_init -FUNC 21077 170 8 _flswbuf -21077 5 93 1980 -2107c c 104 1980 -21088 8 106 1980 -21090 b 107 1980 -2109b 4 108 1980 -2109f a 109 1980 -210a9 4 110 1980 -210ad b 111 1980 -210b8 2 113 1980 -210ba 4 124 1980 -210be 4 125 1980 -210c2 8 126 1980 -210ca 3 127 1980 -210cd 8 128 1980 -210d5 3 137 1980 -210d8 11 138 1980 -210e9 9 141 1980 -210f2 25 151 1980 -21117 7 153 1980 -2111e d 158 1980 -2112b 5 162 1980 -21130 5 163 1980 -21135 7 164 1980 -2113c 7 166 1980 -21143 10 167 1980 -21153 2 168 1980 -21155 6 131 1980 -2115b 5 132 1980 -21160 2e 169 1980 -2118e 13 171 1980 -211a1 2 174 1980 -211a3 9 181 1980 -211ac 2 186 1980 -211ae 1d 195 1980 -211cb 5 201 1980 -211d0 4 202 1980 -211d4 7 203 1980 -211db a 209 1980 -211e5 2 212 1980 -FUNC 211e7 182 4 _wchartodigit -211e7 0 32 6613 -211e7 1b 41 6613 -21202 1 73 6613 -21203 e 42 6613 -21211 19 44 6613 -2122a 1 73 6613 -2122b 14 45 6613 -2123f 14 46 6613 -21253 14 47 6613 -21267 14 48 6613 -2127b 14 49 6613 -2128f 14 50 6613 -212a3 18 51 6613 -212bb 18 52 6613 -212d3 18 53 6613 -212eb 14 54 6613 -212ff 14 55 6613 -21313 12 56 6613 -21325 14 57 6613 -21339 14 58 6613 -2134d c 59 6613 -21359 2 62 6613 -2135b 4 67 6613 -2135f 6 69 6613 -21365 3 71 6613 -21368 1 73 6613 -FUNC 21369 b6 c _isctype_l -21369 7 114 6399 -21370 b 118 6399 -2137b d 121 6399 -21388 f 122 6399 -21397 1f 124 6399 -213b6 3 126 6399 -213b9 d 129 6399 -213c6 2 130 6399 -213c8 a 133 6399 -213d2 26 144 6399 -213f8 10 146 6399 -21408 15 149 6399 -2141d 2 150 6399 -FUNC 2141f 2f 8 _isctype -2141f 0 156 6399 -2141f 9 157 6399 -21428 12 159 6399 -2143a 1 165 6399 -2143b 12 163 6399 -2144d 1 165 6399 -FUNC 21450 2c 0 _alloca_probe_16 -21450 0 44 2632 -21450 1 46 2632 -21451 4 47 2632 -21455 2 48 2632 -21457 3 49 2632 -2145a 2 50 2632 -2145c 2 51 2632 -2145e 2 52 2632 -21460 1 53 2632 -21461 5 54 2632 -21466 1 59 2632 -21467 4 60 2632 -2146b 2 61 2632 -2146d 3 62 2632 -21470 2 63 2632 -21472 2 64 2632 -21474 2 65 2632 -21476 1 66 2632 -21477 5 67 2632 -PUBLIC 21466 0 _alloca_probe_8 -FUNC 2147c 47 4 __ansicp -2147c 10 39 2934 -2148c 1c 44 2934 -214a8 3 45 2934 -214ab 2 46 2934 -214ad a 47 2934 -214b7 c 49 2934 -FUNC 214c3 1b2 18 __convertcp -214c3 16 79 2934 -214d9 10 83 2934 -214e9 18 85 2934 -21501 17 90 2934 -21518 13 92 2934 -2152b 6 93 2934 -21531 d 99 2934 -2153e 2 101 2934 -21540 c 103 2934 -2154c 2a 115 2934 -21576 15 111 2934 -2158b 7 112 2934 -21592 1c 115 2934 -215ae 3 116 2934 -215b1 2 117 2934 -215b3 10 119 2934 -215c3 15 127 2934 -215d8 7 129 2934 -215df 18 138 2934 -215f7 3 139 2934 -215fa 2 140 2934 -215fc 1f 149 2934 -2161b 11 151 2934 -2162c 12 160 2934 -2163e 9 162 2934 -21647 3 163 2934 -2164a 2 164 2934 -2164c 6 165 2934 -21652 5 166 2934 -21657 9 174 2934 -21660 3 177 2934 -21663 12 178 2934 -FUNC 21675 34 4 _get_daylight -21675 0 35 487 -21675 27 36 487 -2169c 1 41 487 -2169d 8 39 487 -216a5 3 40 487 -216a8 1 41 487 -FUNC 216a9 34 4 _get_dstbias -216a9 0 44 487 -216a9 27 45 487 -216d0 1 50 487 -216d1 8 48 487 -216d9 3 49 487 -216dc 1 50 487 -FUNC 216dd 34 4 _get_timezone -216dd 0 53 487 -216dd 27 54 487 -21704 1 59 487 -21705 8 57 487 -2170d 3 58 487 -21710 1 59 487 -FUNC 21711 a2 10 _get_tzname -21711 3 62 487 -21714 10 63 487 -21724 4 64 487 -21728 3 66 487 -2172b 7 68 487 -21732 27 69 487 -21759 20 63 487 -21779 f 72 487 -21788 8 73 487 -21790 4 76 487 -21794 5 78 487 -21799 5 80 487 -2179e 13 82 487 -217b1 2 83 487 -FUNC 217b3 6 0 __daylight -217b3 0 118 487 -217b3 5 119 487 -217b8 1 120 487 -FUNC 217b9 6 0 __dstbias -217b9 0 123 487 -217b9 5 124 487 -217be 1 125 487 -FUNC 217bf 6 0 __timezone -217bf 0 128 487 -217bf 5 129 487 -217c4 1 130 487 -FUNC 217c5 6 0 __tzname -217c5 0 133 487 -217c5 5 134 487 -217ca 1 135 487 -FUNC 217cb c 4 _set_daylight -217cb c 189 418 -FUNC 217d7 c 4 _set_dstbias -217d7 c 190 418 -FUNC 217e3 c 4 _set_timezone -217e3 c 191 418 -FUNC 217ef 349 0 _tzset_nolock -217ef c 124 440 -217fb 5 127 440 -21800 3 129 440 -21803 3 130 440 -21806 3 131 440 -21809 3 132 440 -2180c 3 133 440 -2180f 8 135 440 -21817 3 136 440 -2181a 8 139 440 -21822 1b 142 440 -2183d 1b 143 440 -21858 1b 144 440 -21873 8 149 440 -2187b 6 154 440 -21881 f 160 440 -21890 18 165 440 -218a8 14 260 440 -218bc b 268 440 -218c7 4 274 440 -218cb 7 275 440 -218d2 16 277 440 -218e8 6 281 440 -218ee 32 283 440 -21920 9 174 440 -21929 7 175 440 -21930 6 176 440 -21936 13 179 440 -21949 9 183 440 -21952 b 188 440 -2195d 9 190 440 -21966 e 191 440 -21974 12 199 440 -21986 3 201 440 -21989 c 203 440 -21995 2 205 440 -21997 3 206 440 -2199a 3 214 440 -2199d 27 234 440 -219c4 8 235 440 -219cc 2 236 440 -219ce 7 237 440 -219d5 23 247 440 -219f8 9 248 440 -21a01 2 249 440 -21a03 8 250 440 -21a0b 7 256 440 -21a12 a 288 440 -21a1c a 289 440 -21a26 a 290 440 -21a30 c 292 440 -21a3c 9 296 440 -21a45 23 301 440 -21a68 8 310 440 -21a70 7 311 440 -21a77 1 312 440 -21a78 10 318 440 -21a88 11 320 440 -21a99 5 292 440 -21a9e 9 293 440 -21aa7 5 325 440 -21aac e 329 440 -21aba d 330 440 -21ac7 5 335 440 -21acc b 339 440 -21ad7 d 340 440 -21ae4 5 344 440 -21ae9 3 345 440 -21aec 6 350 440 -21af2 4 351 440 -21af6 21 352 440 -21b17 2 354 440 -21b19 5 355 440 -21b1e a 357 440 -21b28 a 358 440 -21b32 6 360 440 -FUNC 21b38 1f5 24 cvtdate -21b38 6 409 440 -21b3e 4 412 440 -21b42 c 414 440 -21b4e 52 424 440 -21ba0 4c 430 440 -21bec 14 436 440 -21c00 2 437 440 -21c02 2 438 440 -21c04 46 447 440 -21c4a 3 449 440 -21c4d 2 452 440 -21c4f 3c 457 440 -21c8b 3 459 440 -21c8e 27 467 440 -21cb5 6 472 440 -21cbb 2 474 440 -21cbd 29 485 440 -21ce6 11 486 440 -21cf7 a 487 440 -21d01 8 488 440 -21d09 d 490 440 -21d16 6 491 440 -21d1c 6 492 440 -21d22 9 499 440 -21d2b 2 503 440 -FUNC 21d2d 1ae 0 _isindst_nolock -21d2d 5 554 440 -21d32 20 558 440 -21d52 5 560 440 -21d57 7 561 440 -21d5e 1b 568 440 -21d79 c 569 440 -21d85 7 573 440 -21d8c 34 584 440 -21dc0 2 585 440 -21dc2 19 596 440 -21ddb 40 611 440 -21e1b 2 612 440 -21e1d 1e 623 440 -21e3b 2 626 440 -21e3d 14 641 440 -21e51 1a 653 440 -21e6b d 660 440 -21e78 d 664 440 -21e85 8 666 440 -21e8d 4 674 440 -21e91 2 697 440 -21e93 8 673 440 -21e9b 8 675 440 -21ea3 4 676 440 -21ea7 14 679 440 -21ebb 4 681 440 -21ebf b 682 440 -21eca 2 685 440 -21ecc d 691 440 -21ed9 2 694 440 -FUNC 21edb 4f 0 __tzset -21edb c 85 440 -21ee7 a 88 440 -21ef1 8 90 440 -21ef9 3 91 440 -21efc 8 93 440 -21f04 5 94 440 -21f09 6 95 440 -21f0f c 98 440 -21f1b 6 103 440 -21f21 9 99 440 -FUNC 21f2a 38 0 _tzset -21f2a c 109 440 -21f36 8 110 440 -21f3e 4 111 440 -21f42 5 113 440 -21f47 c 115 440 -21f53 6 118 440 -21f59 9 116 440 -FUNC 21f62 41 4 _isindst -21f62 c 538 440 -21f6e 8 541 440 -21f76 4 542 440 -21f7a b 543 440 -21f85 c 544 440 -21f91 3 548 440 -21f94 6 549 440 -21f9a 9 545 440 -FUNC 21fa3 35 8 __ascii_stricmp -21fa3 a 75 693 -21fad c 80 693 -21fb9 3 81 693 -21fbc c 82 693 -21fc8 3 83 693 -21fcb 9 85 693 -21fd4 3 87 693 -21fd7 1 88 693 -FUNC 21fd8 d3 c _stricmp_l -21fd8 7 47 693 -21fdf b 49 693 -21fea 36 52 693 -22020 32 53 693 -22052 8 55 693 -2205a e 57 693 -22068 15 63 693 -2207d 11 64 693 -2208e 8 65 693 -22096 13 68 693 -220a9 2 69 693 -FUNC 220ab 50 8 _stricmp -220ab 4 94 693 -220af a 95 693 -220b9 24 98 693 -220dd 6 99 693 -220e3 1 107 693 -220e4 5 101 693 -220e9 10 105 693 -220f9 2 107 693 -FUNC 220fb f0 10 _strnicmp_l -220fb 7 51 650 -22102 d 54 650 -2210f b 56 650 -2211a 33 59 650 -2214d 7 60 650 -22154 32 61 650 -22186 8 63 650 -2218e 1d 65 650 -221ab 15 71 650 -221c0 11 72 650 -221d1 d 74 650 -221de 6 76 650 -221e4 5 79 650 -221e9 2 80 650 -FUNC 221eb 5c c _strnicmp -221eb 4 125 650 -221ef a 127 650 -221f9 24 130 650 -2221d 5 131 650 -22222 a 132 650 -2222c 1 141 650 -2222d 5 134 650 -22232 13 138 650 -22245 2 141 650 -FUNC 22247 db c xtoa_s -22247 8 93 6581 -2224f 24 102 6581 -22273 24 103 6581 -22297 19 105 6581 -222b0 b 106 6581 -222bb a 112 6581 -222c5 6 114 6581 -222cb 7 116 6581 -222d2 2 118 6581 -222d4 2 121 6581 -222d6 5 124 6581 -222db 5 128 6581 -222e0 3 129 6581 -222e3 2 130 6581 -222e5 6 131 6581 -222eb 3 135 6581 -222ee e 136 6581 -222fc 8 139 6581 -22304 2 141 6581 -22306 2 142 6581 -22308 3 148 6581 -2230b 6 152 6581 -22311 3 154 6581 -22314 1 155 6581 -22315 4 156 6581 -22319 5 158 6581 -2231e 4 160 6581 -FUNC 22322 28 10 _itoa_s -22322 3 172 6581 -22325 d 175 6581 -22332 4 176 6581 -22336 2 177 6581 -22338 10 178 6581 -22348 2 181 6581 -FUNC 2234a 25 10 _ltoa_s -2234a 3 189 6581 -2234d 20 190 6581 -2236d 2 191 6581 -FUNC 2236f 18 10 _ultoa_s -2236f 0 199 6581 -2236f 17 200 6581 -22386 1 201 6581 -FUNC 22387 f6 14 x64toa_s -22387 7 309 6581 -2238e 25 318 6581 -223b3 5 319 6581 -223b8 19 321 6581 -223d1 b 322 6581 -223dc 3 327 6581 -223df 20 333 6581 -223ff 3 336 6581 -22402 1e 352 6581 -22420 3 344 6581 -22423 2 345 6581 -22425 5 346 6581 -2242a 5 351 6581 -2242f 13 352 6581 -22442 5 355 6581 -22447 3 357 6581 -2244a 13 358 6581 -2245d 4 364 6581 -22461 9 368 6581 -2246a 3 370 6581 -2246d 1 371 6581 -2246e 7 372 6581 -22475 4 375 6581 -22479 4 377 6581 -FUNC 2247d 33 14 _i64toa_s -2247d 3 390 6581 -22480 2e 391 6581 -224ae 2 392 6581 -FUNC 224b0 1d 14 _ui64toa_s -224b0 4 400 6581 -224b4 17 401 6581 -224cb 2 402 6581 -FUNC 224cd 224 1c __crtGetStringTypeW_stat -224cd 10 64 2828 -224dd 9 72 2828 -224e6 7 73 2828 -224ed 14 75 2828 -22501 11 79 2828 -22512 8 80 2828 -2251a b 82 2828 -22525 f 83 2828 -22534 4 88 2828 -22538 13 90 2828 -2254b 7 95 2828 -22552 2 199 2828 -22554 8 119 2828 -2255c b 120 2828 -22567 5 121 2828 -2256c b 122 2828 -22577 e 128 2828 -22585 5 130 2828 -2258a 3 131 2828 -2258d 1d 142 2828 -225aa 6 143 2828 -225b0 40 146 2828 -225f0 3 147 2828 -225f3 6 148 2828 -225f9 d 150 2828 -22606 1a 160 2828 -22620 4d 164 2828 -2266d 4 165 2828 -22671 5 170 2828 -22676 b 171 2828 -22681 3 174 2828 -22684 23 178 2828 -226a7 12 186 2828 -226b9 f 189 2828 -226c8 4 187 2828 -226cc 7 191 2828 -226d3 8 194 2828 -226db 4 196 2828 -226df 12 200 2828 -FUNC 226f1 3e 1c __crtGetStringTypeW -226f1 6 211 2828 -226f7 b 212 2828 -22702 2b 222 2828 -2272d 2 223 2828 -FUNC 2272f 294 14 strtoxq -2272f 8 80 6264 -22737 b 86 6264 -22742 3 89 6264 -22745 b 92 6264 -22750 31 94 6264 -22781 12 95 6264 -22793 c 100 6264 -2279f 37 102 6264 -227d6 2 103 6264 -227d8 9 105 6264 -227e1 4 106 6264 -227e5 2 107 6264 -227e7 6 109 6264 -227ed 9 110 6264 -227f6 8 112 6264 -227fe 6 115 6264 -22804 9 116 6264 -2280d a 117 6264 -22817 9 120 6264 -22820 3 118 6264 -22823 5 123 6264 -22828 10 125 6264 -22838 1 126 6264 -22839 9 127 6264 -22842 26 132 6264 -22868 e 137 6264 -22876 8 138 6264 -2287e 6 139 6264 -22884 11 140 6264 -22895 5 143 6264 -2289a 31 154 6264 -228cb 4 160 6264 -228cf 6 161 6264 -228d5 a 173 6264 -228df 7 176 6264 -228e6 6 178 6264 -228ec 6 179 6264 -228f2 5 181 6264 -228f7 19 156 6264 -22910 b 168 6264 -2291b 5 169 6264 -22920 35 184 6264 -22955 5 187 6264 -2295a c 188 6264 -22966 a 189 6264 -22970 6 190 6264 -22976 7 191 6264 -2297d 2 192 6264 -2297f 7 193 6264 -22986 8 195 6264 -2298e 5 197 6264 -22993 6 199 6264 -22999 13 201 6264 -229ac 15 203 6264 -229c1 2 204 6264 -FUNC 229c3 29 c _strtoi64 -229c3 3 211 6264 -229c6 8 212 6264 -229ce 13 214 6264 -229e1 9 218 6264 -229ea 2 220 6264 -FUNC 229ec 1b 10 _strtoi64_l -229ec 0 227 6264 -229ec 1a 228 6264 -22a06 1 229 6264 -FUNC 22a07 2a c _strtoui64 -22a07 3 236 6264 -22a0a 7 237 6264 -22a11 14 239 6264 -22a25 a 243 6264 -22a2f 2 245 6264 -FUNC 22a31 1b 10 _strtoui64_l -22a31 0 253 6264 -22a31 1a 254 6264 -22a4b 1 255 6264 -FUNC 22a50 2b 0 _chkstk -22a50 0 65 2634 -22a50 1 69 2634 -22a51 4 73 2634 -22a55 2 74 2634 -22a57 2 79 2634 -22a59 2 80 2634 -22a5b 2 81 2634 -22a5d 2 83 2634 -22a5f 5 84 2634 -22a64 2 87 2634 -22a66 2 88 2634 -22a68 2 89 2634 -22a6a 1 90 2634 -22a6b 1 91 2634 -22a6c 2 92 2634 -22a6e 3 93 2634 -22a71 1 94 2634 -22a72 5 98 2634 -22a77 2 99 2634 -22a79 2 100 2634 -FUNC 22a7b 81 4 _getenv_helper_nolock -22a7b 0 95 3904 -22a7b 10 103 3904 -22a8b 3 104 3904 -22a8e 1 169 3904 -22a8f e 128 3904 -22a9d 7 131 3904 -22aa4 2 132 3904 -22aa6 6 135 3904 -22aac c 140 3904 -22ab8 9 142 3904 -22ac1 2 150 3904 -22ac3 22 154 3904 -22ae5 3 164 3904 -22ae8 6 150 3904 -22aee 5 168 3904 -22af3 9 169 3904 -FUNC 22afc 93 c _getenv_s_helper -22afc 7 220 3904 -22b03 21 224 3904 -22b24 15 226 3904 -22b39 4 227 3904 -22b3d 3 229 3904 -22b40 a 233 3904 -22b4a 3 234 3904 -22b4d 2 236 3904 -22b4f 7 239 3904 -22b56 6 240 3904 -22b5c 2 243 3904 -22b5e 5 246 3904 -22b63 5 251 3904 -22b68 20 254 3904 -22b88 5 256 3904 -22b8d 2 257 3904 -FUNC 22b8f a2 8 _dupenv_s_helper -22b8f 6 339 3904 -22b95 21 344 3904 -22bb6 9 346 3904 -22bbf 2 348 3904 -22bc1 5 350 3904 -22bc6 8 352 3904 -22bce 6 353 3904 -22bd4 2 355 3904 -22bd6 9 358 3904 -22bdf b 362 3904 -22bea 6 364 3904 -22bf0 b 366 3904 -22bfb 9 367 3904 -22c04 1e 370 3904 -22c22 7 371 3904 -22c29 2 373 3904 -22c2b 4 375 3904 -22c2f 2 376 3904 -FUNC 22c31 83 4 getenv -22c31 c 75 3904 -22c3d 2a 78 3904 -22c67 18 79 3904 -22c7f 8 81 3904 -22c87 3 82 3904 -22c8a c 83 3904 -22c96 c 85 3904 -22ca2 3 89 3904 -22ca5 6 90 3904 -22cab 9 86 3904 -FUNC 22cb4 d8 10 getenv_s -22cb4 c 198 3904 -22cc0 8 201 3904 -22cc8 5 202 3904 -22ccd a1 203 3904 -22d6e c 205 3904 -22d7a 3 209 3904 -22d7d 6 210 3904 -22d83 9 206 3904 -FUNC 22d8c e6 c _dupenv_s -22d8c c 303 3904 -22d98 8 306 3904 -22da0 5 307 3904 -22da5 af 311 3904 -22e54 c 314 3904 -22e60 3 318 3904 -22e63 6 319 3904 -22e69 9 315 3904 -FUNC 22e72 8 4 _tolower -22e72 0 48 6218 -22e72 7 49 6218 -22e79 1 50 6218 -FUNC 22e7a 117 8 _tolower_l -22e7a 8 70 6218 -22e82 b 74 6218 -22e8d c 77 6218 -22e99 31 79 6218 -22eca f 80 6218 -22ed9 14 82 6218 -22eed 2b 86 6218 -22f18 3 88 6218 -22f1b d 91 6218 -22f28 2 92 6218 -22f2a b 94 6218 -22f35 a 97 6218 -22f3f 25 110 6218 -22f64 6 112 6218 -22f6a 5 116 6218 -22f6f 6 117 6218 -22f75 1a 119 6218 -22f8f 2 120 6218 -FUNC 22f91 27 4 tolower -22f91 0 143 6218 -22f91 9 145 6218 -22f9a f 147 6218 -22fa9 1 153 6218 -22faa d 151 6218 -22fb7 1 153 6218 -FUNC 22fc0 61 c __ascii_strnicmp -22fc0 6 69 871 -22fc6 3 75 871 -22fc9 2 76 871 -22fcb 2 77 871 -22fcd 3 79 871 -22fd0 3 80 871 -22fd3 2 82 871 -22fd5 2 83 871 -22fd7 5 84 871 -22fdc 2 89 871 -22fde 2 91 871 -22fe0 2 93 871 -22fe2 2 95 871 -22fe4 2 97 871 -22fe6 2 98 871 -22fe8 3 100 871 -22feb 3 101 871 -22fee 2 103 871 -22ff0 2 104 871 -22ff2 2 106 871 -22ff4 2 107 871 -22ff6 2 109 871 -22ff8 2 112 871 -22ffa 2 113 871 -22ffc 2 115 871 -22ffe 2 116 871 -23000 2 118 871 -23002 2 121 871 -23004 2 122 871 -23006 3 124 871 -23009 2 125 871 -2300b 2 128 871 -2300d 2 129 871 -2300f 2 130 871 -23011 5 133 871 -23016 2 134 871 -23018 2 135 871 -2301a 2 138 871 -2301c 5 140 871 -FUNC 23021 ec 10 _mbsnbicoll_l -23021 7 53 4518 -23028 b 55 4518 -23033 9 57 4518 -2303c 13 58 4518 -2304f 33 61 4518 -23082 6 62 4518 -23088 23 63 4518 -230ab 8 65 4518 -230b3 14 66 4518 -230c7 23 74 4518 -230ea 10 75 4518 -230fa 11 77 4518 -2310b 2 79 4518 -FUNC 2310d 17 c _mbsnbicoll -2310d 0 85 4518 -2310d 16 86 4518 -23123 1 87 4518 -FUNC 23124 95 0 __wtomb_environ -23124 7 43 2699 -2312b 3 44 2699 -2312e 9 45 2699 -23137 c 52 2699 -23143 12 57 2699 -23155 11 61 2699 -23166 12 65 2699 -23178 10 72 2699 -23188 5 74 2699 -2318d 9 76 2699 -23196 3 77 2699 -23199 9 81 2699 -231a2 5 84 2699 -231a7 2 85 2699 -231a9 5 58 2699 -231ae 9 67 2699 -231b7 2 68 2699 -FUNC 231b9 1a 8 strnlen -231b9 0 38 864 -231b9 19 45 864 -231d2 1 49 864 -FUNC 231d3 1a 4 strncnt -231d3 0 50 4345 -231d3 6 51 4345 -231d9 6 54 4345 -231df 1 55 4345 -231e0 5 54 4345 -231e5 7 57 4345 -231ec 1 58 4345 -FUNC 231ed 389 18 __crtCompareStringA_stat -231ed 10 96 4345 -231fd 31 280 4345 -2322e c 107 4345 -2323a b 109 4345 -23245 a 110 4345 -2324f 5 118 4345 -23254 1b 119 4345 -2326f 7 122 4345 -23276 1f 123 4345 -23295 6 120 4345 -2329b 7 121 4345 -232a2 3 124 4345 -232a5 2 125 4345 -232a7 17 130 4345 -232be 7 189 4345 -232c5 8 201 4345 -232cd 8 202 4345 -232d5 d 208 4345 -232e2 5 214 4345 -232e7 8 215 4345 -232ef 2 218 4345 -232f1 6 219 4345 -232f7 5 222 4345 -232fc 4 223 4345 -23300 f 231 4345 -2330f 2 232 4345 -23311 5 237 4345 -23316 4 239 4345 -2331a 2 240 4345 -2331c 10 244 4345 -2332c a 246 4345 -23336 7 244 4345 -2333d 2 262 4345 -2333f 5 253 4345 -23344 6 255 4345 -2334a 8 256 4345 -23352 10 260 4345 -23362 11 262 4345 -23373 7 260 4345 -2337a 2 262 4345 -2337c 1a 280 4345 -23396 6 281 4345 -2339c 4d 284 4345 -233e9 4 285 4345 -233ed 6 286 4345 -233f3 19 295 4345 -2340c 17 305 4345 -23423 46 309 4345 -23469 4 310 4345 -2346d 13 320 4345 -23480 17 326 4345 -23497 7 328 4345 -2349e 8 331 4345 -234a6 9 333 4345 -234af 4 132 4345 -234b3 5 137 4345 -234b8 8 138 4345 -234c0 5 139 4345 -234c5 8 140 4345 -234cd e 142 4345 -234db 6 143 4345 -234e1 5 148 4345 -234e6 19 155 4345 -234ff 2 156 4345 -23501 6 157 4345 -23507 19 163 4345 -23520 4 164 4345 -23524 7 166 4345 -2352b 5 167 4345 -23530 3 169 4345 -23533 3 170 4345 -23536 18 178 4345 -2354e 6 179 4345 -23554 6 181 4345 -2355a 8 182 4345 -23562 2 184 4345 -23564 12 337 4345 -FUNC 23576 40 20 __crtCompareStringA -23576 6 349 4345 -2357c b 350 4345 -23587 2d 361 4345 -235b4 2 362 4345 -FUNC 235b6 f8 10 _strnicoll_l -235b6 7 55 603 -235bd b 57 603 -235c8 9 59 603 -235d1 13 60 603 -235e4 33 63 603 -23617 6 64 603 -2361d 23 65 603 -23640 a 67 603 -2364a 15 68 603 -2365f 21 78 603 -23680 b 80 603 -2368b 10 81 603 -2369b 11 84 603 -236ac 2 85 603 -FUNC 236ae 27 c _strnicoll -236ae 3 92 603 -236b1 9 93 603 -236ba 1 101 603 -236bb 5 95 603 -236c0 13 99 603 -236d3 2 101 603 -FUNC 236d5 4d 4 findenv -236d5 1 387 3036 -236d6 8 390 3036 -236de 12 394 3036 -236f0 d 399 3036 -236fd 9 390 3036 -23706 e 407 3036 -23714 1 408 3036 -23715 c 400 3036 -23721 1 408 3036 -FUNC 23722 5d 0 copy_environ -23722 4 428 3036 -23726 2 429 3036 -23728 6 434 3036 -2372e 2 464 3036 -23730 7 438 3036 -23737 8 439 3036 -2373f 14 443 3036 -23753 8 444 3036 -2375b 6 448 3036 -23761 11 458 3036 -23772 4 448 3036 -23776 2 461 3036 -23778 5 463 3036 -2377d 2 464 3036 -FUNC 2377f 24c 8 __crtsetenv -2377f 6 76 3036 -23785 2c 89 3036 -237b1 2 91 3036 -237b3 1c 98 3036 -237cf 5 114 3036 -237d4 13 125 3036 -237e7 c 126 3036 -237f3 4 130 3036 -237f7 d 153 3036 -23804 9 155 3036 -2380d b 100 3036 -23818 6 101 3036 -2381e 2 356 3036 -23820 3 164 3036 -23823 6 165 3036 -23829 f 171 3036 -23838 2 172 3036 -2383a 2 173 3036 -2383c 8 176 3036 -23844 f 178 3036 -23853 2 179 3036 -23855 2 180 3036 -23857 6 196 3036 -2385d 5 197 3036 -23862 2 200 3036 -23864 10 207 3036 -23874 9 210 3036 -2387d a 216 3036 -23887 6 218 3036 -2388d 5 235 3036 -23892 5 238 3036 -23897 5 241 3036 -2389c c 222 3036 -238a8 4 221 3036 -238ac 1d 230 3036 -238c9 2 233 3036 -238cb 9 245 3036 -238d4 4 250 3036 -238d8 2 251 3036 -238da 2f 255 3036 -23909 8 258 3036 -23911 3 259 3036 -23914 5 262 3036 -23919 5 264 3036 -2391e 21 287 3036 -2393f 25 289 3036 -23964 21 338 3036 -23985 4 339 3036 -23989 b 343 3036 -23994 7 346 3036 -2399b 5 349 3036 -239a0 8 351 3036 -239a8 6 352 3036 -239ae 8 355 3036 -239b6 8 271 3036 -239be 6 274 3036 -239c4 7 276 3036 -FUNC 239cb 50 4 _strdup -239cb 1 66 901 -239cc b 70 901 -239d7 6 71 901 -239dd 9 73 901 -239e6 e 77 901 -239f4 1c 80 901 -23a10 4 81 901 -23a14 6 84 901 -23a1a 1 85 901 -FUNC 23a1b ba c _mbschr_l -23a1b 7 53 4568 -23a22 b 55 4568 -23a2d 32 58 4568 -23a5f 8 60 4568 -23a67 d 61 4568 -23a74 a 65 4568 -23a7e 7 67 4568 -23a85 10 69 4568 -23a95 3 70 4568 -23a98 8 72 4568 -23aa0 d 63 4568 -23aad 8 76 4568 -23ab5 e 77 4568 -23ac3 10 79 4568 -23ad3 2 80 4568 -FUNC 23ad5 13 8 _mbschr -23ad5 0 86 4568 -23ad5 12 87 4568 -23ae7 1 88 4568 -FUNC 23b00 be 8 strchr -23b00 0 60 928 -23b00 2 68 928 -23b02 4 69 928 -23b06 1 73 928 -23b07 2 74 928 -23b09 3 75 928 -23b0c 4 76 928 -23b10 6 77 928 -23b16 2 78 928 -23b18 2 81 928 -23b1a 3 82 928 -23b1d 2 83 928 -23b1f 2 84 928 -23b21 2 85 928 -23b23 2 86 928 -23b25 6 87 928 -23b2b 2 88 928 -23b2d 2 91 928 -23b2f 1 92 928 -23b30 2 93 928 -23b32 3 94 928 -23b35 1 95 928 -23b36 2 96 928 -23b38 2 101 928 -23b3a 5 102 928 -23b3f 2 104 928 -23b41 2 105 928 -23b43 2 107 928 -23b45 2 108 928 -23b47 2 110 928 -23b49 3 111 928 -23b4c 3 113 928 -23b4f 2 114 928 -23b51 2 116 928 -23b53 3 117 928 -23b56 6 119 928 -23b5c 2 120 928 -23b5e 5 124 928 -23b63 2 125 928 -23b65 5 127 928 -23b6a 2 128 928 -23b6c 6 130 928 -23b72 2 131 928 -23b74 1 134 928 -23b75 1 135 928 -23b76 1 137 928 -23b77 2 138 928 -23b79 1 139 928 -23b7a 3 142 928 -23b7d 2 143 928 -23b7f 2 144 928 -23b81 2 145 928 -23b83 2 146 928 -23b85 2 147 928 -23b87 2 148 928 -23b89 2 149 928 -23b8b 2 150 928 -23b8d 3 151 928 -23b90 2 152 928 -23b92 2 153 928 -23b94 2 154 928 -23b96 2 155 928 -23b98 2 156 928 -23b9a 2 157 928 -23b9c 2 158 928 -23b9e 2 159 928 -23ba0 2 160 928 -23ba2 1 163 928 -23ba3 1 164 928 -23ba4 3 165 928 -23ba7 1 166 928 -23ba8 1 167 928 -23ba9 3 170 928 -23bac 1 171 928 -23bad 1 172 928 -23bae 1 173 928 -23baf 1 174 928 -23bb0 3 177 928 -23bb3 1 178 928 -23bb4 1 179 928 -23bb5 1 180 928 -23bb6 1 181 928 -23bb7 3 184 928 -23bba 1 185 928 -23bbb 1 186 928 -23bbc 1 187 928 -23bbd 1 188 928 -PUBLIC 23b06 0 __from_strstr_to_strchr -FUNC 240b9 14 0 `operator new'::`6'::`dynamic atexit destructor for 'nomem'' -STACK WIN 4 41b0 86 13 0 8 0 e0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4240 41 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4290 18 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 42ae 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42af 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42c6 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42d1 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42d2 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 42f3 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4332 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4371 3f c 0 0 c 50 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 43b0 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43b1 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 43c8 af c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4464 12 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 4477 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 448d 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44a3 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44b7 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44cd 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 44e1 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4506 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 451c f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 452b 62 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 452c 60 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 452d 5c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 454a 35 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 458d 42 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 458e 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 45cf da c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 466c 15 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 46a0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 46a9 53 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 46f2 9 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 46fc 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4705 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 470b b1 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4713 a8 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4785 33 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47bc 20 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47dc 3c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 47dd 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4818 2e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4846 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 487c 2a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48a6 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48bc 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48c1 30 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 48c6 2b 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 48f1 7 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48f8 7 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 48ff 7 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4906 52 8 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 490c 4c 2 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 4958 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 498e 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 49c4 36 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 49fa 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4a14 30 1 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4a15 2e 0 0 10 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4a44 d5 7 0 1c 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4a4b ce 0 0 1c 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 4b19 9d 5 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4b1e 98 0 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 4bb6 73 7 0 14 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4bbb 6c 2 0 14 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 4bbc 6a 1 0 14 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 4bbd 68 0 0 14 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 4c29 28 5 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4c2e 22 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4c51 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4c72 4c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4c73 4a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4cbe 5e 6 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4d1c 4a b 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4d26 1b 1 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4d27 16 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4d66 19 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d67 17 9 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4d7f 6a 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 4de9 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4df8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e06 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e07 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e22 f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e31 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e39 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e54 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e70 1f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e8f 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e93 b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4e9e 5 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4ea3 11 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4eb4 4e 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4eb5 4a 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4eba 44 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4ebb 42 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f02 18 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4f1a 58 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4f1b 54 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f20 4e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f34 37 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f72 56 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4f73 52 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f78 4c 3 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4f79 4a 2 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 4fc8 16 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4fde d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4feb 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 4fec 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5004 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5005 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 501c b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5027 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5028 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5040 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5041 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5058 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5063 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5064 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 507b 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 507c 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5093 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 509e 1c 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 509f 18 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50ba 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50bb 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50dc 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50dd 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50fe 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 50ff 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5120 7b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5124 75 4 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5128 70 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 519b 5b 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 51a2 52 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 51a3 50 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 51f6 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5200 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 520a a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5214 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 521e a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5228 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 524c 41 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 528d 1b6 c 0 0 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5405 14 0 0 0 c 2c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 5443 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 544d a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5457 fc 1c 0 14 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5553 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5554 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5575 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5582 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 558b 24 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 55af 10 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 55bf 9 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 55c8 96 7 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 55cf 8d 0 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 55fb 60 0 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 565e 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5678 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5694 1f 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 56b3 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 56cf 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 56ec 20 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 570c 1d 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5729 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 573a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 574b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5761 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5777 14f c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 58bc 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 58c6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 58e0 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 58fa 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5912 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 592c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5944 f6 7 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 594b ed 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5973 c4 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5977 bf 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 5a3a 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5a61 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5a89 87 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5a8d 81 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5ab2 5b 0 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5b10 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5b2b 107 5 0 18 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5b30 100 0 0 18 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5b5b d4 0 0 18 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5b5f cf 0 0 18 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 5c32 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c50 27 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5c77 28 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 5c9f 24 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5cc3 26 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5ce9 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5cfe 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d07 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d10 18 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d11 16 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d28 20 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d29 1e 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d48 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d4d 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d7f 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5d84 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5dbb 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5dc0 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5df7 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5dfc 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e33 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e38 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e6f 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5e74 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5ea6 37 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5eab 31 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5edd 92 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5f1b 34 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5f1c 32 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 5f6f e2 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6039 11 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 6051 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6062 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6073 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6082 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6091 4c 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6092 4a 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 616b 33 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 619e 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 61d4 36 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 620a 39 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6243 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6257 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6266 f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6275 96 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6276 94 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 62ba 4a 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 62bb 46 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 630b 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6313 26 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 633a 82 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6341 78 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 63bc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 63ca 3 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 63cd 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6400 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6404 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 6424 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6429 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 642a 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 646e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 647b 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 648b e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6499 994 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 64bb 945 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 64c2 93b 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 64c5 937 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 6e2d 3b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6e68 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6e7b 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6e8e 1e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6e8f 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6eac 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6ec7 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6ec8 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6ef1 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6f0c 2a 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6f0d 28 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6fa0 24 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6fd0 196 14 0 10 0 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 6fd4 d3 10 0 10 4 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 24 - ^ = -STACK WIN 4 6fd9 cd b 0 10 8 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 6fda cb a 0 10 c 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 6fe4 c0 0 0 10 10 14 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 28 - ^ = $ebx $T0 24 - ^ = -STACK WIN 4 7166 90 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 71eb a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 71f6 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7210 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 722a 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7244 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 725c 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7274 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 728c 104 9 0 0 0 328 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7390 5c6 22 0 c 0 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 73b2 597 0 0 c 4 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 73fe 542 0 0 c 8 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ = -STACK WIN 4 740c 533 0 0 c c 594 0 1 $T0 $ebp 1304 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1436 - ^ = -STACK WIN 4 7956 dc c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7a28 9 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 7a32 2d 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a37 27 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7a5f e1 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7b36 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 7b40 49 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7b41 3b 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7b42 39 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7b89 55 8 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7b8a 53 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 7b91 4b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 7b97 2a 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 7bde 15 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7bf3 18 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7c0b c3 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7cc5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 7cce 31 7 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7cd5 28 0 0 4 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7cff 240 c 0 0 c 64 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 7f28 4 0 0 0 c 64 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 7f3f 4c 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f40 4a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f41 48 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f8b 21 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7f8c 1f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7fac 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7fbc 40 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7fbd 3e 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7fbe 3c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ffc 48 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ffd 46 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 7ffe 44 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8044 4b 2 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8045 49 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8046 47 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 808f 50 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8090 4e 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8091 4c 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 80df 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 80e7 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 80f1 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 80fb 8e c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8151 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8189 9f c 0 0 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 821f 8 0 0 0 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8228 19 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8229 15 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8241 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 824c 22 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 824d 1e 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 826e 5c 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 826f 5a 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8270 58 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 82ca 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 830e e1 c 0 10 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8390 a 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 83ce 20 0 0 10 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 83ef 45 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8434 54 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8477 9 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8488 25 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 848f 1d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 84ad 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 84c0 b3 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 84c7 9a 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 84c8 98 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8573 4c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 85bf 139 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 85c0 137 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 85cf 127 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 85d0 11f 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 85d1 11d 0 0 8 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 86f8 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 86fc 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8714 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 872e 33 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8747 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8761 32 c 0 8 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8779 a 0 0 8 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8793 3b c 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 87b4 a 0 0 14 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 87ce 79 6 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 87f0 52 0 0 4 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 87f1 50 0 0 4 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 8847 49 c 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8890 30 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8891 2a 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 8892 28 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 88c0 82 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 88c1 7b 7 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 88c8 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 8942 19c 14 0 18 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 89d2 9 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8a62 7b 0 0 18 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8ade 17f c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8c49 4 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8c5d 91 c 0 10 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8ce2 4 0 0 10 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 8cee 143 9 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8cfe 131 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 8d02 12c 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 8d05 128 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 8e31 6c 3 0 1c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8e9d f2 6 0 20 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8ea3 ea 0 0 20 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8eb3 d9 0 0 20 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8f31 5a 0 0 20 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 8f8f 356 17 0 20 0 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 8f99 34a d 0 20 4 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 8fa5 33d 1 0 20 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 8fa6 33b 0 0 20 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 92e5 18 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 92e6 14 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 92fd e4 6 0 20 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9301 de 2 0 20 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 9302 dc 1 0 20 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 9303 da 0 0 20 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 93e1 6c 7 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 93e7 64 1 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 93e8 62 0 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 9408 41 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 944d 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 944e 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 94bb 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 94c4 6e 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 94c5 6c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9532 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 953b 15 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9550 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9556 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9557 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9588 19 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 95a1 3d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 95de bf c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9694 8 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 969d 77 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 969e 75 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 969f 71 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9714 18 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9715 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 972c 121 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9835 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9841 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 984d 69 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9857 4b 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9860 25 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 98b6 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 98bc 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 98c2 184 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 98c3 182 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 98de 166 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9a46 39 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9a66 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9a7f 13 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9a92 37 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9ab6 4 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9ac9 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9b2c b9 5 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9b2e b5 3 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 9b2f b3 2 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9b30 b1 1 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9b31 af 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9be5 2f 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9be6 2d 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9c14 3c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9c4a 5 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9c50 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9c62 4f c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9ca8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9cb1 75 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9cf9 2c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9d26 c3 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9d27 c1 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 9d35 9c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9d3c 94 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9d3d 90 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 9de9 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9df3 31 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9df4 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e24 9 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e2d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e3a 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 9e5c 22 3 0 18 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9e7e 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9ee5 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9eee f5 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 9fd7 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 9fe3 70 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a04a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a053 31 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a084 eb c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a163 b 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a16f 53 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 a1b9 8 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 a258 65 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 a25d 5f 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 a262 59 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 a263 57 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 aa15 3d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 aa52 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 aa60 1a0 8 0 4 0 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 aa62 19c 6 0 4 4 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 aa67 196 1 0 4 8 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 aa68 194 0 0 4 c 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 aa85 176 0 0 4 10 4 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 20 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 ac00 20 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac20 39 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac59 1 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac5a 32 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac65 1c 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ac8c 15e 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ac92 156 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 acaa 13d 0 0 8 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 acb0 136 0 0 8 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 adea 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae05 db b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ae06 c3 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ae0f b9 1 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ae10 b7 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ae5f 67 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 aee0 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 aeea 198 e 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 aef2 187 6 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 aef8 180 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 b082 b9 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b089 b0 a 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 b092 a6 1 0 0 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 b093 a4 0 0 0 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 b13b 135 b 0 0 0 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b143 12a 3 0 0 4 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ = -STACK WIN 4 b144 128 2 0 0 8 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 b145 126 1 0 0 c 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 b146 124 0 0 0 10 8 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 16 - ^ = $ebx $T0 12 - ^ = -STACK WIN 4 b270 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b271 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b272 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b294 24 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b295 22 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b296 20 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b2b8 5b 6 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b2be 43 0 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b313 5a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b36d 74 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b36e 72 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 b37a 53 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 b381 4b 0 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 b38c 30 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 b3e1 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b3e7 94 15 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b3fb 7e 1 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 b3fc 7c 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 b418 5f 0 0 0 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 b47b 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b483 160 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b488 159 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b4c5 11b 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 b52c b3 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 b5e3 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b608 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b60c 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b62d 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 b632 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 b633 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 b67c 910 30 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 b69e 8c1 e 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 b6a5 8b7 7 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 b6ac 8af 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 bf8c 97 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 bf93 8e 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 bfbf 61 0 0 10 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 c023 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c03a 5 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c03f 55 7 0 10 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c046 4c 0 0 10 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c094 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0ac 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0c6 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0de 1a 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c0f8 14e c 0 14 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c23c 9 0 0 14 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 c246 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c264 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c282 1e 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c2a0 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c2bc 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c2d8 1c 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c2f4 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c319 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c31d 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c33e 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 c343 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 c344 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 c38d 91c 2c 0 10 0 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 c3a9 8d3 10 0 10 4 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 c3b0 8c9 9 0 10 8 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 c3b9 8bf 0 0 10 c 474 0 1 $T0 $ebp 1012 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1144 - ^ = -STACK WIN 4 cca9 154 9 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ccb1 14a 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ccb2 148 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 cdfd 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ce22 25 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ce26 1f 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ce47 4f a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ce4c 49 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ce4d 47 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ce96 f60 2a 0 10 0 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ceb8 f0f 8 0 10 4 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ = -STACK WIN 4 ceb9 f0b 7 0 10 8 ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ = -STACK WIN 4 cec0 f03 0 0 10 c ad4 0 1 $T0 $ebp 1160 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2776 - ^ = -STACK WIN 4 ddf6 1f 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ddf7 1d 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ddf8 1b 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 de20 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 de50 42 18 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 de5e 33 a 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 de5f 31 9 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 de68 27 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 dea0 bb 33 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 deba a1 19 0 4 10 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 df29 14 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 df5b 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 df74 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 dfed 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 e00f 34 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e01a 1d 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e043 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e050 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e059 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e062 23d c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e257 b 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 e29f 1b0 c 0 4 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e40d 14 0 0 4 c 30 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 e44f a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e459 104 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e45a 102 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 e45b 100 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 e45c fe 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = -STACK WIN 4 e495 c4 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 4 - ^ = $ebx $T0 16 - ^ = -STACK WIN 4 e55d 15a 24 0 14 0 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e576 bc b 0 14 4 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 e577 b8 a 0 14 8 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 e581 ad 0 0 14 c 94 0 1 $T0 $ebp 100 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 152 - ^ = -STACK WIN 4 e6b7 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e6c1 a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e6cb 10 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e6db c5 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e761 17 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 e7a0 5e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e7b8 45 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e7fe 2f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e82d 55 b 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 e82e 53 a 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 e82f 51 9 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 e830 4f 8 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 e831 4d 7 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 e882 18a 1d 0 0 0 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 e89e 161 1 0 0 4 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ = -STACK WIN 4 e89f 15d 0 0 0 8 51c 0 1 $T0 $ebp 1180 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 1312 - ^ = -STACK WIN 4 ea0c a4 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 eaa4 b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 eab0 7a 7 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 eab7 71 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 eb2a 1d9 19 0 8 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 eb3b 1c1 8 0 8 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 eb3f 1ba 4 0 8 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 eb43 1b5 0 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 ed03 3c 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 ed3f 19a c 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 eea0 8 0 0 4 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 eed9 1e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 eef7 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 eefd 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ef03 140 12 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 ef04 13e 11 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 ef05 13c 10 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 ef06 13a f 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 ef15 12a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 f043 86 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f044 84 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f045 82 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 f046 80 5 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 f04b 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 f0c9 8c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f0ca 8a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f0d3 7e 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 f0d4 7c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 f0d5 7a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 12 - ^ = $ebx $T0 8 - ^ = -STACK WIN 4 f155 24 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f156 22 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f165 12 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f179 3e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f182 31 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f1b7 76 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f221 8 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 f22d 66 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f22e 64 1 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f22f 62 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f293 53 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f2e6 96 c 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f370 b 0 0 4 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 f37c 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f381 88 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f3fd b 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 f409 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f40e 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f411 3e 2 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f412 3c 1 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f413 3a 0 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f41e 2e 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 f44f 129 6 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f453 123 2 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 f454 121 1 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 f455 11f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 f578 6b 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f57c 4d 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 f57d 4b 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 f5e3 171 4 0 0 0 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 f5e7 169 0 0 0 4 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 20 - ^ = -STACK WIN 4 f606 149 0 0 0 8 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ = -STACK WIN 4 f607 141 0 0 0 c 10 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 24 - ^ = $ebx $T0 20 - ^ = -STACK WIN 4 f754 1d4 1e 0 18 0 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f76d 1b1 5 0 18 4 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 f76e 1ad 4 0 18 8 b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 f772 1a8 0 0 18 c b4 0 1 $T0 $ebp 96 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 184 - ^ = -STACK WIN 4 f928 2f6 17 0 4 0 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 f93e 2d6 1 0 4 4 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ = -STACK WIN 4 f93f 2d2 0 0 4 8 1c4 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 456 - ^ = -STACK WIN 4 fc1e 1ce 18 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 fc37 1ab 0 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 fc38 1a7 0 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 fc3f 19f 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 fdec f3 7 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fdf2 2c 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fdf3 2a 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fedf 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 fee4 170 c 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1000a 10 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1001b b 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1004c 7 0 0 8 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 10054 15f 10 0 14 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1005b a1 9 0 14 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1005c b2 8 0 14 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 10064 96 0 0 14 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 101b3 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 101ce 4f 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1021d 30 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1024d 36 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10283 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10291 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102a7 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102b8 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102cb e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102d9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102ec e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 102fa 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1030d e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1031b 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10331 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10342 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10355 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10363 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10376 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10384 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1039a 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103ab 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103c1 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103d2 16 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103e8 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 103f9 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1040c e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1041a c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10426 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1044c 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1046d 26 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10493 21 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 106ab 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 106de 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 106e2 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 10702 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 10707 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 10708 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1074c 9b0 2c 0 10 0 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1076e 960 a 0 10 4 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 10775 956 3 0 10 8 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 10778 952 0 0 10 c 278 0 1 $T0 $ebp 504 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 636 - ^ = -STACK WIN 4 110fc 129 8 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11103 120 1 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11104 11e 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 11225 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 11258 24 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1125c 1e 2 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1127c 4a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 11281 44 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 11282 42 4 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 112c6 10 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 112d6 f88 2a 0 10 0 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 112f8 f39 8 0 10 4 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ = -STACK WIN 4 112f9 f35 7 0 10 8 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ = -STACK WIN 4 11300 f2d 0 0 10 c 8d0 0 1 $T0 $ebp 656 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 2260 - ^ = -STACK WIN 4 1225e c2 11 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1226f 9e 0 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12320 9b c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 123b2 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 123bb 46 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 123f8 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12401 113 8 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12408 21 1 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 12409 1f 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 12514 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1252b 83 13 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12534 78 a 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1253e 6d 0 0 10 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 125ae 119 c 0 10 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 126bd 9 0 0 10 c 24 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 126c7 7d 8 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 126ce 75 1 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 126cf 73 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 126fd 2c 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ = -STACK WIN 4 12744 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12749 7b 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1274e 75 1 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1274f 73 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 127c5 71 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 127e6 4f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12836 a0 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 128c8 d 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 128d6 22 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 128f8 19f c 0 0 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 129c5 e 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12a8e 8 0 0 0 c 28 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12a97 115 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12b7f 2c 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12bac 11e c 0 c c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12ca3 d 0 0 c c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12cca 3f 9 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12cd3 34 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12cec 18 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12d09 21b c 0 8 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12e47 e 0 0 8 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 12f24 79 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 12f2b 70 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 12f61 39 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 12f62 37 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 12f9d 21 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12fbe 46 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 12fc9 3a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13004 3c 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13009 36 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13040 48 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13088 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 130b3 314 11 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 130c0 305 4 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 130c4 300 0 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 130f1 2d2 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 133c7 b0 d 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 133cd a9 7 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 133d4 a1 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13477 106 11 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 13483 f8 5 0 4 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 13484 f6 4 0 4 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 13488 f1 0 0 4 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1357d 2df 12 0 c 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1358a 2d0 5 0 c 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1358b 2ce 4 0 c 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1358f 2c9 0 0 c c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 1385c cd 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13929 2e2 f 0 0 0 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 13938 294 0 0 0 4 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 1394d 27e 0 0 0 8 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 13950 27a 0 0 0 c 138 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 316 - ^ = -STACK WIN 4 13c0b a8 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13c0c a6 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13c54 5d 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13cb3 2e3 2a 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 13cd7 2bd 6 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 13cdc 2b7 1 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 13cdd 2b5 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 13f96 72 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 13f97 70 6 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 13f98 6e 5 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 13f9d 68 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 14008 7c c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14079 a 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 14084 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14091 d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1409e d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 140ab f3 23 0 0 4 328 0 1 $T0 $ebp 680 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1419e 1e 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 142f3 a3 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14385 10 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 14396 6 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1439c 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 143b7 26 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 143b8 24 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 143dd 63 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14440 474 a 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14447 42e 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 14448 42c 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 14449 42a 1 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1444a 428 0 0 0 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 148b4 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148bf d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148cc e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148da e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148e8 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 148f6 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14904 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14916 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14924 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14932 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14940 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1494b b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14956 b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14961 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1496f b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1497a e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14988 19 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 149a1 84 13 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 149a2 80 12 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 149a3 7e 11 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 149c9 57 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 12 - ^ = -STACK WIN 4 14a25 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14a32 12 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14a44 9c 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14a57 86 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ae0 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14aea 5 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14aef 7 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14af6 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b00 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b08 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b12 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b1c 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b24 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b2e 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b36 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b40 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b48 a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b52 8 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b5a 7b 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14b5d 75 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14bd5 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14bde 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c03 d 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c10 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c14 29 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c26 f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c3d 16 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c53 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c57 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c5b 1b 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c76 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14c7a 2f 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ca9 25 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14cce 4 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14cd2 d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14cdf e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ced 20 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14d0d 25 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14d32 33 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14d65 34 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14d99 13 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14dac 56 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14db2 4d 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e02 61 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e03 5d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e04 59 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e63 17 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e7a 15 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14e8f 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ea3 e 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14eb1 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ec5 25 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ec6 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14ed2 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14eea 38 2 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14eeb 36 1 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14eec 32 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14f22 91 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14f26 89 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14f27 87 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 14f5c 40 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 14fb3 35 2 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14fb6 2f 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14fe8 81 b 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14fe9 7d a 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 14fea 79 9 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15069 1e 3 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1506a 1c 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15087 47 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15088 43 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 150ce 47 7 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 150cf 45 6 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 150d0 43 5 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 150d1 41 4 0 0 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 15115 65 11 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15116 61 10 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1511b 5b b 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1511c 57 a 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1517a 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1518c 31 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 151bd f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 151cc f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 151db 1d 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 151f8 33 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1522b 73 7 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1522f 6b 3 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15230 5b 2 0 14 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1529e 2f 3 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 152cd f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 152dc 79 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 152dd 75 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 152de 71 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15355 68 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15356 64 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 153bd a6 3 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 153be a2 2 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 153de 81 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 153f0 6e 0 0 8 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 15463 26 3 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15464 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15489 31 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1548e 29 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 154ba d0 7 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 154be b3 3 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 154bf b1 2 0 8 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 154ce 9f 0 0 8 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 1558a 69 13 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1559b 4f 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1559c 4b 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1559d 49 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 155f3 96 22 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15607 79 e 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15615 66 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1563a 29 0 0 8 c 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 15689 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1568a 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 156b7 62 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 156b8 5e 7 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 156b9 5a 6 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15719 8b a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1571a 87 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1571b 83 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157a4 1c 9 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157a5 18 8 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157c0 2a 7 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157c5 22 2 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 157ea a6 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15890 37 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 158c7 51 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 158c8 4d 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15918 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15919 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15946 6a a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15947 66 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1594e 5e 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 159b0 6c a 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 159b1 68 9 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 159b2 64 8 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15a1c e0 e 0 4 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15a23 d7 7 0 4 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15a2a cd 0 0 4 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15a45 b1 0 0 4 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 15afc 4f 6 0 8 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15b02 47 0 0 8 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15b4b 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15b6d 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15b8f 22 5 0 c 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15bb1 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15bb2 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15bdf 2e 1 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15be0 2a 0 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 15c0d 141 7 0 8 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15c14 138 0 0 8 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15c95 b3 0 0 8 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 15c96 b1 0 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 15d4e d4 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15e22 c4 e 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15ee6 7e d 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15f64 125 11 0 10 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 15f75 112 0 0 10 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16089 15f f 0 8 0 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16098 4a 0 0 8 4 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 160f0 b3 0 0 8 8 28 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 161e8 31 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16219 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1622b 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1623d 12 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1624f 150 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16256 147 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1639f a0 6 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1643f 50 5 0 4 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1648f 2bb 2b 0 4 0 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 164aa 296 10 0 4 4 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 164b3 28a 7 0 4 8 d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 164ba 282 0 0 4 c d0 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 1674a d9 b 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 167b8 17 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16823 14 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 16837 1b8 18 0 4 0 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16848 1a0 7 0 4 4 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1684f 18d 0 0 4 8 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16870 168 0 0 4 c 60 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 108 - ^ = -STACK WIN 4 169ef 56f 22 0 c 0 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16a03 97 e 0 c 4 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ = -STACK WIN 4 16a11 88 0 0 c 8 a0 0 1 $T0 $ebp 108 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 164 - ^ = -STACK WIN 4 16f5e 153 10 0 8 0 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 16f82 11b 0 0 8 4 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 16f89 113 0 0 8 8 d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 16f92 109 0 0 8 c d0 0 1 $T0 $ebp 112 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 212 - ^ = -STACK WIN 4 170b1 1ea 1b 0 8 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 170cc 1c8 0 0 8 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 17154 111 0 0 8 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 17155 10f 0 0 8 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 64 - ^ = -STACK WIN 4 1729b e4 15 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 172a2 db e 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 172b0 ca 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1737f f 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1738e 100 19 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1739a f2 d 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 173a7 e4 0 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1748e 46 3 0 4 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 174d4 92 6 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 17566 b42 14 0 8 0 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 17571 b35 9 0 8 4 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1757a b2b 0 0 8 8 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 175e3 abe 0 0 8 c 6c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 120 - ^ = -STACK WIN 4 180a8 211 13 0 4 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 180af 208 c 0 4 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 180bb 1fb 0 0 4 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 182b9 28b 1f 0 4 0 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 182c5 27a 13 0 4 4 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 182c6 278 12 0 4 8 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 182d8 263 0 0 4 c 98 0 1 $T0 $ebp 116 + = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 156 - ^ = -STACK WIN 4 18544 341 d 0 8 0 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 18589 2f7 0 0 8 4 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 185f0 28f 0 0 8 8 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 185f1 28d 0 0 8 c 30 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 52 - ^ = -STACK WIN 4 18885 4e4 18 0 14 0 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 18893 4d4 a 0 14 4 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 18894 4d2 9 0 14 8 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 1889d 4c8 0 0 14 c 54 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 88 - ^ = -STACK WIN 4 18d69 14c 6 0 0 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 18eb5 116 5 0 10 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 18ed6 59 0 0 10 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 18fcb 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 18fe6 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19001 1b 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1901c a3 f 0 18 c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 190b6 8 0 0 18 c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 190bf a3 f 0 1c c 94 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19159 8 0 0 1c c 94 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 19162 387 12 0 8 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19172 350 2 0 8 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 19173 34e 1 0 8 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 19174 34c 0 0 8 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 194e9 13e 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 194f0 135 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19627 b1 6 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 196d8 64 7 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 196df 5b 0 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1973c 57 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19793 8f 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19822 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19836 14 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1984a 87 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 198d1 e3 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 199b4 1bd 9 0 c 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 199bb 1b4 2 0 c 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 199bc 1b2 1 0 c 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 199bd 1b0 0 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 19b71 71 b 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19b76 6b 6 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 19b7b 65 1 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 19b7c 63 0 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 19be2 b3 e 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19be6 1a a 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 19be7 2e 9 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 19bf0 e 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 19c95 46 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19c9a 40 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19cdb a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ce5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ceb 51 6 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19d3c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19d51 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19d64 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19d79 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19d8c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19da1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19db4 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19dcc 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19de2 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19dfa 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e10 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e28 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e3e 18 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e56 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e6c 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e81 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19e94 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ea9 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ebc 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ed1 13 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19ee4 53 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19f37 e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19f45 44 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 19f89 1de 1a 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 19f9a 1c6 9 0 8 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 19f9b 1c2 8 0 8 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 19fa3 1b9 0 0 8 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1a167 78 c 0 8 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a1d5 9 0 0 8 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 1a1df 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a1e4 1f7 8 0 14 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a1eb 1ee 1 0 14 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1a1ec 1ec 0 0 14 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1a246 174 0 0 14 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1a3db 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a404 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a41f 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a449 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a464 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a46d 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a4c1 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a4ec 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a53b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a564 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a5b3 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a5dc 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a62b 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a654 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a6a8 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a6d3 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a722 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a74b 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a79a 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a7c3 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a817 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a842 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a896 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a8c1 54 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a915 2b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a940 4f 6 0 8 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1a98f 29 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a9b8 d 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a9c5 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a9cd 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1a9ec 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1aa06 1f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1aa25 1c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1aa41 12 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1aa53 1b 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1aa6e 13b 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1aa83 126 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1aba9 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1abe4 13d 1d 0 18 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1abf9 128 8 0 18 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1ad21 3b 6 0 18 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1ad5c 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1ad76 3a2 1d 0 20 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1ad87 391 c 0 20 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 1b118 43 6 0 24 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1b15b 1b8 1d 0 1c 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1b170 1a3 8 0 1c c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 1b313 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1b353 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b359 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b382 419 6 0 0 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1b3a4 3f5 0 0 0 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1b3a5 3ed 0 0 0 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1b79b 190 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b79c 18e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b92b 73 4 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b92c 71 3 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1b92d 6f 2 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1b92e 6d 1 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1b92f 6b 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1b99e 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b9a5 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1b9a6 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1b9d1 40 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1b9d2 3e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1ba11 1c8 11 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1ba18 1bf a 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1ba1c 1ba 6 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1ba22 1b3 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1bbd9 33 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bbe0 16 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1bbe1 14 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1bc0c 89 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bc0d 87 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1bc95 2c4 c 0 4 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1bc9c 2bb 5 0 4 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1bc9d 2b9 4 0 4 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1bca1 2b4 0 0 4 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 1bf59 395 1b 0 4 0 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1bf6a 37d a 0 4 4 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1bf6d 377 7 0 4 8 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1bf74 36f 0 0 4 c 48 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 76 - ^ = -STACK WIN 4 1c2ee 29 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c317 16 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c32d 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c353 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c379 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c39f 3 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c3a2 fe 9 0 4 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1c3a9 e9 2 0 4 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1c3aa e7 1 0 4 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1c3ab e5 0 0 4 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 1c4a0 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c4a9 fe 9 0 4 0 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1c4b0 e9 2 0 4 4 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 1c4b1 e7 1 0 4 8 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 1c4b2 e5 0 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 1c5a7 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c5b0 355 9 0 4 0 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1c5b7 34c 2 0 4 4 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1c5b8 348 1 0 4 8 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1c5b9 346 0 0 4 c 24 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 40 - ^ = -STACK WIN 4 1c905 9 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c90e 20 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c912 1b 2 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c917 15 0 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c92e 36 6 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1c934 2f 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1c964 79 8 0 4 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1c969 72 3 0 4 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1c96a 70 2 0 4 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1c9dd 3e6 11 0 10 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1c9e2 3df c 0 10 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1c9e9 3d7 5 0 10 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1c9ea 3d5 4 0 10 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 1cdc3 45d 1d 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1cdd7 449 9 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1d220 1af a 0 18 0 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d22a 1a3 0 0 18 4 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1d270 15c 0 0 18 8 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1d2a3 128 0 0 18 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 36 - ^ = -STACK WIN 4 1d3cf 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d3ed 1d 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d40a 1e 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d428 26 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d496 60 6 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d49c 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 1d4a5 45 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 1d4a6 43 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 1d4f6 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d50a 77 11 0 0 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d51b 5f 0 0 0 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d581 1e 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d59f 32 1 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d5a0 30 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d5d1 1b 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d5ec 96 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d5fd 7c 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d5fe 78 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d682 72 11 0 8 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d693 5a 0 0 8 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d6cf 13 0 0 8 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d6f4 1d0 13 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d705 1b6 2 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 1d706 1b2 1 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 1d707 1b0 0 0 4 c 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 128 - ^ = -STACK WIN 4 1d8c4 bf 12 0 4 0 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d8d5 a5 1 0 4 4 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d8d6 a1 0 0 4 8 7c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1d983 2c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1d9af 65 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1da14 3c 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1da50 1e3 4 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1da51 1e1 3 0 c 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 1da52 1df 2 0 c 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1da53 1dd 1 0 c c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1da54 1db 0 0 c 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 1dc33 12 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dc45 18 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dc5d 40 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dc9d 78 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dd15 1490 4 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dd16 83f 3 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1dd17 83d 2 0 0 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 1f1a5 1680 5 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1f1a9 15f8 1 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1f1aa 15f6 0 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 1f1db 86c 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 20825 be 9 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2082e a9 0 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 20840 96 0 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 20930 82 6 0 c 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 209b2 6e 4 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20a20 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20a25 22b 8 0 14 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20a2c 222 1 0 14 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20a2d 220 0 0 14 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20a8b 1c1 0 0 14 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 32 - ^ = -STACK WIN 4 20c50 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20c79 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20c94 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20cbe 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20cd9 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20cf8 1f 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20d17 2d 9 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20d20 23 0 0 0 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20d44 94 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20d45 92 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20d4a 8c 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20dd8 cd c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20e9b 9 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 20ea5 2c 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20ea6 2a 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20ed1 2a 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20efb 22 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20efc 20 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f1d d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f64 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f75 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f8a 5 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f8f 5 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20f94 11 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20fa5 15 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 20fba 50 c 0 0 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 20fd7 1c 0 0 0 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 2100a 60 9 0 0 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21013 57 0 0 0 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 2106a d 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21077 170 5 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2107c 169 0 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 210e1 103 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 21125 be 0 0 8 c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 211e7 182 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21369 b6 7 0 c 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21370 ad 0 0 c 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 2141f 2f 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2147c 47 10 0 4 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 214c3 1b2 2a 0 18 8 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 214e0 195 d 0 18 c 34 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 56 - ^ = -STACK WIN 4 21675 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 2167a 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 216a9 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 216ae 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 216dd 34 5 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 216e2 2e 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21711 a2 c 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21718 99 5 0 10 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 2171d 93 0 0 10 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 2172b 84 0 0 10 c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 217b3 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217b9 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217bf 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217c5 6 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217cb c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217d7 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217e3 c 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 217ef 349 c 0 0 c 3c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21a99 d 0 0 0 c 3c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 21b38 1f5 14 0 24 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21b47 1e4 5 0 24 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 21b48 1e2 4 0 24 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 21b49 1e0 3 0 24 c c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 21d2d 1ae 5 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21d32 15f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21d62 12e 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 21edb 4f c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21f21 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 21f2a 38 c 0 0 c 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21f59 8 0 0 0 c 18 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 21f62 41 c 0 4 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21f9a 8 0 0 4 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 21fa3 35 a 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21fa8 2f 5 0 8 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21fad 27 0 0 8 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 21fd8 d3 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 21fdf ca 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 22020 88 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 22068 33 0 0 c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 220ab 50 4 0 8 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 220af 4a 0 0 8 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 220fb f0 e 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22102 e7 7 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 22108 e0 1 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 22109 de 0 0 10 c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 221eb 5c 4 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 221ef 56 0 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22247 db 8 0 c 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2224c d2 3 0 c 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2224d d0 2 0 c 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 22277 a5 0 0 c c 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 22322 28 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2234a 25 3 0 10 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2236f 18 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22387 f6 c 0 14 0 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2238e eb 5 0 14 4 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 22393 e5 0 0 14 8 c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 16 - ^ = -STACK WIN 4 2247d 33 3 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22498 16 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 224b0 1d 4 0 14 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 224b4 17 0 0 14 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 224cd 224 17 0 1c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 224e2 20f 2 0 1c c 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 226f1 3e 6 0 1c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2272f 294 8 0 14 0 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22736 28b 1 0 14 4 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 22737 289 0 0 14 8 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 22793 1f9 0 0 14 c 38 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 60 - ^ = -STACK WIN 4 229c3 29 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 229ec 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22a07 2a 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22a31 1b 0 0 10 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22a7b 81 8 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22a83 70 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22a92 60 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 22a93 5e 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 8 - ^ = -STACK WIN 4 22afc 93 7 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22b00 8d 3 0 c 4 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 22b01 8b 2 0 c 8 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 22b40 4b 0 0 c c 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 4 - ^ = -STACK WIN 4 22b8f a2 6 0 8 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22b94 9b 1 0 8 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22b95 99 0 0 8 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22c31 83 c 0 4 c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22cab 8 0 0 4 c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 22cb4 d8 c 0 10 c 1c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22d83 8 0 0 10 c 1c 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 22d8c e6 c 0 c c 20 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22e69 8 0 0 c c 20 0 1 $T0 $ebp = $T2 $esp = $T1 .raSearchStart = $eip $T1 ^ = $ebp $T0 = $esp $T1 4 + = $L $T0 .cbSavedRegs - = $P $T1 4 + .cbParams + = -STACK WIN 4 22e72 8 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 22e7a 117 8 0 8 0 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 22e81 10e 1 0 8 4 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 22e82 10c 0 0 8 8 18 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 28 - ^ = -STACK WIN 4 22f91 27 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 23021 ec 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 23028 e3 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 23088 82 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 2310d 17 0 0 c 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 23124 95 a 0 0 0 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2312a 7d 4 0 0 4 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2312b 7b 3 0 0 8 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 2312e 77 0 0 0 c 8 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 12 - ^ = -STACK WIN 4 231b9 1a 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 231d3 1a 0 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 231ed 389 16 0 18 8 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 23201 375 2 0 18 c 2c 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 48 - ^ = -STACK WIN 4 23576 40 6 0 20 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 235b6 f8 7 0 10 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 235bd ef 0 0 10 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 2361d 8e 0 0 10 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 236ae 27 3 0 c 0 0 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 236d5 4d 1 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 236d6 48 0 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 23722 5d 4 0 0 0 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 2373e 3f 0 0 0 4 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2373f 3d 0 0 0 8 4 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 8 - ^ = -STACK WIN 4 2377f 24c f 0 8 0 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 23789 95 5 0 8 4 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 2378e 8f 0 0 8 8 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 237b1 6b 0 0 8 c 14 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 24 - ^ = -STACK WIN 4 239cb 50 6 0 4 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 239cc 4e 5 0 4 4 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebx $T0 4 - ^ = -STACK WIN 4 239d1 48 0 0 4 8 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 239dc 3c 0 0 4 c 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 239dd 3a 0 0 4 10 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = $ebp $T0 8 - ^ = $ebx $T0 4 - ^ = -STACK WIN 4 23a1b ba 7 0 c 0 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = -STACK WIN 4 23a22 b1 0 0 c 4 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 23a5f 73 0 0 c 8 10 0 1 $T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + = $L $T0 .cbSavedRegs - = $P $T0 8 + .cbParams + = $ebx $T0 20 - ^ = -STACK WIN 4 23ad5 13 0 0 8 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 4 240b9 14 0 0 0 0 0 0 1 $T2 $esp .cbLocals + .cbSavedRegs + = $T0 .raSearchStart = $eip $T0 ^ = $esp $T0 4 + = -STACK WIN 0 1000 13 0 0 4 0 0 0 0 0 -STACK WIN 0 1020 1b 0 0 10 0 0 0 0 0 -STACK WIN 0 1040 1b 0 0 10 0 0 0 0 0 -STACK WIN 0 1060 19 8 0 4 0 0 0 0 0 -STACK WIN 0 1080 b 0 0 0 0 0 0 0 0 -STACK WIN 0 1090 24 3 0 4 0 0 0 0 0 -STACK WIN 0 10c0 f 0 0 8 0 0 0 0 0 -STACK WIN 0 10d0 17 0 0 4 0 0 0 0 0 -STACK WIN 0 10f0 27 9 0 10 0 0 0 0 0 -STACK WIN 0 1120 27 9 0 10 0 0 0 0 0 -STACK WIN 0 1150 d 0 0 8 0 0 0 0 0 -STACK WIN 0 1160 13 0 0 4 0 0 0 0 0 -STACK WIN 0 1180 21 d 0 10 0 0 0 0 0 -STACK WIN 0 11b0 21 d 0 10 0 0 0 0 0 -STACK WIN 0 11e0 7 0 0 0 0 0 0 0 0 -STACK WIN 0 11f0 6b 28 0 4 8 10 0 0 0 -STACK WIN 0 1260 32 3 0 0 0 0 0 0 0 -STACK WIN 0 12a0 e 0 0 0 0 0 0 0 0 -STACK WIN 0 12b0 47 3 0 4 0 0 0 0 0 -STACK WIN 0 1300 19 8 0 4 0 0 0 0 0 -STACK WIN 0 1320 32 3 0 0 0 0 0 0 0 -STACK WIN 0 1360 47 3 0 4 0 0 0 0 0 -STACK WIN 0 13b0 19 8 0 4 0 0 0 0 0 -STACK WIN 0 13d0 32 3 0 0 0 0 0 0 0 -STACK WIN 0 1410 47 3 0 4 0 0 0 0 0 -STACK WIN 0 1460 19 8 0 4 0 0 0 0 0 -STACK WIN 0 1480 71 29 0 4 c 10 0 0 0 -STACK WIN 0 1500 1b 0 0 8 0 0 0 0 0 -STACK WIN 0 1520 35 4 0 0 0 0 0 0 0 -STACK WIN 0 1560 20b 2d 0 14 14 14 0 0 1 -STACK WIN 0 19f0 31 0 0 0 0 0 0 0 0 -STACK WIN 0 1a30 51 d 0 4 c 0 0 0 0 -STACK WIN 0 1a90 c7 7 0 4 10 8 0 0 1 -STACK WIN 0 1b60 36 0 0 0 0 0 0 0 0 -STACK WIN 0 1ba0 3 0 0 0 0 0 0 0 0 -STACK WIN 0 1db0 81 2 0 8 0 0 0 0 0 -STACK WIN 0 1e40 1d 7 0 0 0 0 0 0 0 -STACK WIN 0 1e60 a2 3a 0 4 10 c4 0 0 0 -STACK WIN 0 1f10 142 c 0 c 0 38 0 0 1 -STACK WIN 0 2060 138 38 0 0 8 244 0 0 0 -STACK WIN 0 21a0 3b 7 0 4 0 0 0 0 0 -STACK WIN 0 21e0 25 5 0 4 0 0 0 0 0 -STACK WIN 0 2210 26 3 0 0 0 0 0 0 0 -STACK WIN 0 2240 e 0 0 0 0 0 0 0 0 -STACK WIN 0 2250 4 0 0 0 0 0 0 0 0 -STACK WIN 0 2260 11 0 0 0 0 0 0 0 0 -STACK WIN 0 2280 27 3 0 0 0 0 0 0 0 -STACK WIN 0 22b0 b 0 0 0 0 0 0 0 0 -STACK WIN 0 22c0 24 3 0 4 0 0 0 0 0 -STACK WIN 0 22f0 e 0 0 0 0 0 0 0 0 -STACK WIN 0 2300 c 0 0 0 0 0 0 0 0 -STACK WIN 0 2310 26 0 0 0 0 0 0 0 0 -STACK WIN 0 2340 1d 1 0 0 0 0 0 0 0 -STACK WIN 0 2360 1d 1 0 0 0 0 0 0 0 -STACK WIN 0 2380 13 0 0 0 0 0 0 0 0 -STACK WIN 0 23a0 23 0 0 0 0 0 0 0 0 -STACK WIN 0 23d0 56 5 0 0 8 c 0 0 0 -STACK WIN 0 2430 47 c 0 0 c 8 0 0 0 -STACK WIN 0 24f0 23 1 0 0 0 4 0 0 0 -STACK WIN 0 2520 3f b 0 8 0 0 0 0 0 -STACK WIN 0 2560 20 0 0 0 0 0 0 0 0 -STACK WIN 0 2580 20 0 0 0 0 0 0 0 0 -STACK WIN 0 25a0 1d 0 0 0 0 0 0 0 0 -STACK WIN 0 25c0 da 11 0 c 0 0 0 0 1 -STACK WIN 0 26a0 27 8 0 4 0 0 0 0 0 -STACK WIN 0 26d0 4a d 0 8 0 0 0 0 0 -STACK WIN 0 2720 e 0 0 0 0 0 0 0 0 -STACK WIN 0 2730 5 2 0 4 0 0 0 0 0 -STACK WIN 0 2740 5 2 0 4 0 0 0 0 0 -STACK WIN 0 2750 3 2 0 0 0 0 0 0 0 -STACK WIN 0 2760 b 0 0 0 0 0 0 0 0 -STACK WIN 0 2770 ef 11 0 c 0 0 0 0 1 -STACK WIN 0 2860 2b 8 0 4 0 0 0 0 0 -STACK WIN 0 2890 4f d 0 8 0 0 0 0 0 -STACK WIN 0 28e0 e 0 0 0 0 0 0 0 0 -STACK WIN 0 28f0 5 2 0 4 0 0 0 0 0 -STACK WIN 0 2900 3 2 0 0 0 0 0 0 0 -STACK WIN 0 2910 13 0 0 0 0 0 0 0 0 -STACK WIN 0 2930 86 a 0 10 10 4 0 0 1 -STACK WIN 0 29c0 23 0 0 0 0 0 0 0 0 -STACK WIN 0 29f0 1 0 0 0 0 0 0 0 0 -STACK WIN 0 2a00 26 0 0 0 0 0 0 0 0 -STACK WIN 0 2a30 23 0 0 0 0 0 0 0 0 -STACK WIN 0 2a60 76 23 0 0 4 50 0 0 0 -STACK WIN 0 2ae0 3 0 0 4 0 0 0 0 0 -STACK WIN 0 2af0 1 0 0 0 0 0 0 0 0 -STACK WIN 0 2b00 21 0 0 0 0 0 0 0 0 -STACK WIN 0 2b30 32 6 0 4 8 0 0 0 0 -STACK WIN 0 2b70 2f 6 0 0 8 0 0 0 0 -STACK WIN 0 2ba0 20 0 0 0 0 0 0 0 0 -STACK WIN 0 2bc0 20 0 0 0 0 0 0 0 0 -STACK WIN 0 2be0 1d 0 0 0 0 0 0 0 0 -STACK WIN 0 2c00 c1 5 0 8 0 0 0 0 1 -STACK WIN 0 2cd0 83 8 0 8 0 0 0 0 1 -STACK WIN 0 2d60 1f 0 0 4 0 0 0 0 0 -STACK WIN 0 2d80 bc b 0 8 0 0 0 0 1 -STACK WIN 0 2e40 e 0 0 0 0 0 0 0 0 -STACK WIN 0 2e50 5 2 0 4 0 0 0 0 0 -STACK WIN 0 2e60 e 0 0 8 0 0 0 0 0 -STACK WIN 0 2e70 da 4 0 8 0 0 0 0 1 -STACK WIN 0 2f50 97 8 0 8 0 0 0 0 1 -STACK WIN 0 2ff0 4 0 0 0 0 0 0 0 0 -STACK WIN 0 3000 23 0 0 4 0 0 0 0 0 -STACK WIN 0 3030 c7 e 0 8 0 0 0 0 1 -STACK WIN 0 3100 e 0 0 0 0 0 0 0 0 -STACK WIN 0 3110 5 2 0 4 0 0 0 0 0 -STACK WIN 0 3120 e 0 0 8 0 0 0 0 0 -STACK WIN 0 3130 6 0 0 0 0 0 0 0 0 -STACK WIN 0 3140 208 6 0 8 10 8 0 0 1 -STACK WIN 0 33d0 1 0 0 0 0 0 0 0 0 -STACK WIN 0 33e0 8 0 0 0 0 0 0 0 0 -STACK WIN 0 33f0 56 3 0 0 0 10 0 0 0 -STACK WIN 0 3450 32 0 0 4 0 0 0 0 0 -STACK WIN 0 3490 28 0 0 0 0 0 0 0 0 -STACK WIN 0 34c0 19 0 0 0 0 0 0 0 0 -STACK WIN 0 34e0 21 0 0 0 0 0 0 0 0 -STACK WIN 0 3510 19 8 0 4 0 0 0 0 0 -STACK WIN 0 3530 7 0 0 0 0 0 0 0 0 -STACK WIN 0 3540 6 0 0 0 0 0 0 0 0 -STACK WIN 0 36d0 39 8 0 4 0 0 0 0 0 -STACK WIN 0 3710 6 0 0 0 0 0 0 0 0 -STACK WIN 0 38a0 3a 8 0 4 0 0 0 0 0 -STACK WIN 0 38e0 6 0 0 0 0 0 0 0 0 -STACK WIN 0 38f0 32 0 0 4 0 0 0 0 0 -STACK WIN 0 3930 19 0 0 0 0 0 0 0 0 -STACK WIN 0 3950 56 7 0 4 0 c 0 0 0 -STACK WIN 0 39b0 4 0 0 0 0 0 0 0 0 -STACK WIN 0 39c0 59 7 0 4 0 c 0 0 0 -STACK WIN 0 3a20 6 0 0 0 0 0 0 0 0 -STACK WIN 0 3a30 21 d 0 10 0 0 0 0 0 -STACK WIN 0 3a60 27 9 0 10 0 0 0 0 0 -STACK WIN 0 3a90 24 f 0 0 0 0 0 0 0 -STACK WIN 0 3ac0 1 0 0 0 0 0 0 0 0 -STACK WIN 0 3ad0 15 0 0 0 0 0 0 0 0 -STACK WIN 0 3af0 21 d 0 10 0 0 0 0 0 -STACK WIN 0 3b20 27 9 0 10 0 0 0 0 0 -STACK WIN 0 3b50 22 d 0 0 0 0 0 0 0 -STACK WIN 0 3b80 10 0 0 0 0 0 0 0 0 -STACK WIN 0 3b90 25 11 0 0 0 0 0 0 0 -STACK WIN 0 3bc0 4f a 0 0 0 10 0 0 0 -STACK WIN 0 3c10 54 7 0 8 0 c 0 0 0 -STACK WIN 0 3c70 57 7 0 8 0 c 0 0 0 -STACK WIN 0 3cd0 19 8 0 4 0 0 0 0 0 -STACK WIN 0 3cf0 7 1 0 0 0 4 0 0 0 -STACK WIN 0 3d00 21 d 0 14 0 0 0 0 0 -STACK WIN 0 3d30 7 1 0 0 0 4 0 0 0 -STACK WIN 0 3d40 27 9 0 14 0 0 0 0 0 -STACK WIN 0 3d70 3 0 0 0 0 0 0 0 0 -STACK WIN 0 3d80 1 0 0 0 0 0 0 0 0 -STACK WIN 0 3d90 7 1 0 0 0 4 0 0 0 -STACK WIN 0 3da0 15 0 0 4 0 0 0 0 0 -STACK WIN 0 3dc0 1 0 0 4 0 0 0 0 0 -STACK WIN 0 3dd0 15 0 0 8 0 0 0 0 0 -STACK WIN 0 3df0 21 d 0 14 0 0 0 0 0 -STACK WIN 0 3e20 27 9 0 14 0 0 0 0 0 -STACK WIN 0 3e50 22 d 0 0 0 0 0 0 0 -STACK WIN 0 3e80 10 0 0 0 0 0 0 0 0 -STACK WIN 0 3e90 7 1 0 0 0 4 0 0 0 -STACK WIN 0 3ea0 25 11 0 c 0 0 0 0 0 -STACK WIN 0 3ed0 3 0 0 4 0 0 0 0 0 -STACK WIN 0 3ee0 15 0 0 0 0 0 0 0 0 -STACK WIN 0 3f00 22 d 0 8 0 0 0 0 0 -STACK WIN 0 3f30 13 0 0 0 0 0 0 0 0 -STACK WIN 0 3f50 1 0 0 0 0 0 0 0 0 -STACK WIN 0 3f60 15 0 0 8 0 0 0 0 0 -STACK WIN 0 3f80 22 d 0 0 0 0 0 0 0 -STACK WIN 0 3fb0 15 0 0 4 0 0 0 0 0 -STACK WIN 0 3fd0 15 0 0 4 0 0 0 0 0 -STACK WIN 0 3ff0 13 0 0 4 0 0 0 0 0 -STACK WIN 0 4010 ae e 0 4 0 54 0 0 0 -STACK WIN 0 40c0 ae e 0 4 0 4c 0 0 0 -STACK WIN 0 4170 40 7 0 4 0 0 0 0 0 -STACK WIN 0 4464 13 0 0 0 0 0 0 0 0 -STACK WIN 0 466c 16 0 0 0 0 0 0 0 0 -STACK WIN 0 46a0 9 0 0 0 0 0 0 0 0 -STACK WIN 0 46f2 a 0 0 0 0 0 0 0 0 -STACK WIN 0 5405 14 0 0 0 0 0 0 0 0 -STACK WIN 0 58bc a 0 0 0 0 0 0 0 0 -STACK WIN 0 6039 12 0 0 0 0 0 0 0 0 -STACK WIN 0 60e0 8b 0 0 4 0 0 0 0 0 -STACK WIN 0 71eb b 0 0 0 0 0 0 0 0 -STACK WIN 0 7a28 a 0 0 0 0 0 0 0 0 -STACK WIN 0 7b36 a 0 0 0 0 0 0 0 0 -STACK WIN 0 7cc5 9 0 0 0 0 0 0 0 0 -STACK WIN 0 7f28 4 0 0 0 0 0 0 0 0 -STACK WIN 0 8151 9 0 0 0 0 0 0 0 0 -STACK WIN 0 821f 9 0 0 0 0 0 0 0 0 -STACK WIN 0 8390 a 0 0 0 0 0 0 0 0 -STACK WIN 0 83ce 21 0 0 0 0 0 0 0 0 -STACK WIN 0 8477 9 0 0 0 0 0 0 0 0 -STACK WIN 0 8714 a 0 0 0 0 0 0 0 0 -STACK WIN 0 8747 a 0 0 0 0 0 0 0 0 -STACK WIN 0 8779 a 0 0 0 0 0 0 0 0 -STACK WIN 0 87b4 a 0 0 0 0 0 0 0 0 -STACK WIN 0 89d2 9 0 0 0 0 0 0 0 0 -STACK WIN 0 8a62 7c 0 0 0 0 0 0 0 0 -STACK WIN 0 8c49 4 0 0 0 0 0 0 0 0 -STACK WIN 0 8ce2 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9694 9 0 0 0 0 0 0 0 0 -STACK WIN 0 9835 c 0 0 0 0 0 0 0 0 -STACK WIN 0 9841 c 0 0 0 0 0 0 0 0 -STACK WIN 0 9a66 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9ab6 4 0 0 0 0 0 0 0 0 -STACK WIN 0 9ae0 4c 8 0 c 10 0 0 0 1 -STACK WIN 0 9c4a 6 0 0 0 0 0 0 0 0 -STACK WIN 0 9ca8 9 0 0 0 0 0 0 0 0 -STACK WIN 0 9ee5 9 0 0 0 0 0 0 0 0 -STACK WIN 0 9fd7 c 0 0 0 0 0 0 0 0 -STACK WIN 0 a04a 9 0 0 0 0 0 0 0 0 -STACK WIN 0 a163 c 0 0 0 0 0 0 0 0 -STACK WIN 0 a1b9 9 0 0 0 0 0 0 0 0 -STACK WIN 0 a1d0 88 0 0 8 0 0 0 0 0 -STACK WIN 0 a2c0 7a 0 0 c 0 0 0 0 0 -STACK WIN 0 c23c a 0 0 0 0 0 0 0 0 -STACK WIN 0 df29 14 0 0 0 0 0 0 0 0 -STACK WIN 0 dfed a 0 0 0 0 0 0 0 0 -STACK WIN 0 e257 c 0 0 0 0 0 0 0 0 -STACK WIN 0 e40d 15 0 0 0 0 0 0 0 0 -STACK WIN 0 e761 17 0 0 0 0 0 0 0 0 -STACK WIN 0 eaa4 c 0 0 0 0 0 0 0 0 -STACK WIN 0 eea0 9 0 0 0 0 0 0 0 0 -STACK WIN 0 f221 9 0 0 0 0 0 0 0 0 -STACK WIN 0 f370 c 0 0 0 0 0 0 0 0 -STACK WIN 0 f3fd c 0 0 0 0 0 0 0 0 -STACK WIN 0 1000a 11 0 0 0 0 0 0 0 0 -STACK WIN 0 1001b c 0 0 0 0 0 0 0 0 -STACK WIN 0 1004c 8 0 0 0 0 0 0 0 0 -STACK WIN 0 10558 90 3 0 c c 0 0 0 0 -STACK WIN 0 105e8 46 0 0 10 4 0 0 0 1 -STACK WIN 0 1064a 17 4 0 0 10 0 0 0 1 -STACK WIN 0 10661 19 0 0 0 0 0 0 0 0 -STACK WIN 0 10694 17 1 0 8 4 0 0 0 1 -STACK WIN 0 123b2 9 0 0 0 0 0 0 0 0 -STACK WIN 0 123f8 9 0 0 0 0 0 0 0 0 -STACK WIN 0 126bd a 0 0 0 0 0 0 0 0 -STACK WIN 0 128c8 e 0 0 0 0 0 0 0 0 -STACK WIN 0 129c5 f 0 0 0 0 0 0 0 0 -STACK WIN 0 12a8e 9 0 0 0 0 0 0 0 0 -STACK WIN 0 12b7f 2d 0 0 0 0 0 0 0 0 -STACK WIN 0 12ca3 e 0 0 0 0 0 0 0 0 -STACK WIN 0 12e47 f 0 0 0 0 0 0 0 0 -STACK WIN 0 14079 b 0 0 0 0 0 0 0 0 -STACK WIN 0 14221 84 3 0 8 c 0 0 0 0 -STACK WIN 0 142a5 23 0 0 0 0 0 0 0 0 -STACK WIN 0 142f0 3 0 0 0 0 0 0 0 0 -STACK WIN 0 14385 11 0 0 0 0 0 0 0 0 -STACK WIN 0 190b6 9 0 0 0 0 0 0 0 0 -STACK WIN 0 19159 9 0 0 0 0 0 0 0 0 -STACK WIN 0 1a1d5 a 0 0 0 0 0 0 0 0 -STACK WIN 0 20e9b a 0 0 0 0 0 0 0 0 -STACK WIN 0 20fd7 1c 0 0 0 0 0 0 0 0 -STACK WIN 0 21a99 e 0 0 0 0 0 0 0 0 -STACK WIN 0 21f21 9 0 0 0 0 0 0 0 0 -STACK WIN 0 21f59 9 0 0 0 0 0 0 0 0 -STACK WIN 0 21f9a 9 0 0 0 0 0 0 0 0 -STACK WIN 0 22cab 9 0 0 0 0 0 0 0 0 -STACK WIN 0 22d83 9 0 0 0 0 0 0 0 0 -STACK WIN 0 22e69 9 0 0 0 0 0 0 0 0 -STACK WIN 0 23b00 be 0 0 8 0 0 0 0 0 diff --git a/thirdparty/google-breakpad/r318/src/processor/testdata/test_app.cc b/thirdparty/google-breakpad/r318/src/processor/testdata/test_app.cc deleted file mode 100644 index f230ef3f..00000000 --- a/thirdparty/google-breakpad/r318/src/processor/testdata/test_app.cc +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// This file is used to generate minidump2.dmp and minidump2.sym. -// cl /Zi test_app.cc /Fetest_app.exe /I google_breakpad/src \ -// google_breakpad/src/client/windows/releasestaticcrt/exception_handler.lib -// Then run test_app to generate a dump, and dump_syms to create the .sym file. - -#include - -#include "client/windows/handler/exception_handler.h" - -namespace { - -static bool callback(const wchar_t *dump_path, const wchar_t *id, - void *context, EXCEPTION_POINTERS *exinfo, - MDRawAssertionInfo *assertion, - bool succeeded) { - if (succeeded) { - printf("dump guid is %ws\n", id); - } else { - printf("dump failed\n"); - } - fflush(stdout); - - return succeeded; -} - -static void CrashFunction() { - int *i = reinterpret_cast(0x45); - *i = 5; // crash! -} - -} // namespace - -int main(int argc, char **argv) { - google_breakpad::ExceptionHandler eh( - L".", NULL, callback, NULL, - google_breakpad::ExceptionHandler::HANDLER_ALL); - CrashFunction(); - printf("did not crash?\n"); - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/stamp-h1 b/thirdparty/google-breakpad/r318/src/stamp-h1 deleted file mode 100644 index 57ea58e4..00000000 --- a/thirdparty/google-breakpad/r318/src/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for src/config.h diff --git a/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/Makefile b/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/Makefile deleted file mode 100644 index 7d74abad..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -CXX=g++ -CC=gcc - -CXXFLAGS=-gstabs -I../../.. -DNDEBUG -Wall -D_REENTRANT - -.PHONY:all clean - -BIN=dump_syms - -all:$(BIN) - -DUMP_OBJ=dump_symbols.o guid_creator.o dump_syms.o file_id.o md5.o - -dump_syms:$(DUMP_OBJ) - $(CXX) $(CXXFLAGS) -o $@ $^ - -dump_symbols.o:../../../common/linux/dump_symbols.cc - $(CXX) $(CXXFLAGS) -c $^ - -guid_creator.o:../../../common/linux/guid_creator.cc - $(CXX) $(CXXFLAGS) -c $^ - -file_id.o:../../../common/linux/file_id.cc - $(CXX) $(CXXFLAGS) -c $^ - -md5.o:../../../common/md5.c - $(CC) $(CXXFLAGS) -c $^ - -clean: - rm -f $(BIN) $(DUMP_OBJ) diff --git a/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/dump_syms.cc b/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/dump_syms.cc deleted file mode 100644 index e7eb0a2d..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/linux/dump_syms/dump_syms.cc +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include - -#include "common/linux/dump_symbols.h" - -using namespace google_breakpad; - -int main(int argc, char **argv) { - if (argc != 2) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return 1; - } - - const char *binary = argv[1]; - - DumpSymbols dumper; - if (!dumper.WriteSymbolFile(binary, fileno(stdout))) { - fprintf(stderr, "Failed to write symbol file.\n"); - return 1; - } - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/Makefile b/thirdparty/google-breakpad/r318/src/tools/linux/symupload/Makefile deleted file mode 100644 index c0c49eed..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -CXX=g++ - -CXXFLAGS=-gstabs -I../../.. -Wall -D_REENTRANT - -.PHONY:all clean - -BIN=minidump_upload sym_upload - -all:$(BIN) - -DUMP_UPLOAD_OBJ=minidump_upload.o http_upload.o -SYM_UPLOAD_OBJ=sym_upload.o http_upload.o - -minidump_upload:$(DUMP_UPLOAD_OBJ) - $(CXX) $(CXXFLAGS) -ldl -o $@ $^ - -sym_upload:$(SYM_UPLOAD_OBJ) - $(CXX) $(CXXFLAGS) -ldl -o $@ $^ - -http_upload.o:../../../common/linux/http_upload.cc - $(CXX) $(CXXFLAGS) `curl-config --cflags` -c $^ - -clean: - rm *.o $(BIN) diff --git a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/minidump_upload.cc b/thirdparty/google-breakpad/r318/src/tools/linux/symupload/minidump_upload.cc deleted file mode 100644 index cab6ad43..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/minidump_upload.cc +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_upload.m: Upload a minidump to a HTTP server. The upload is sent as -// a multipart/form-data POST request with the following parameters: -// prod: the product name -// ver: the product version -// symbol_file: the breakpad format symbol file - -#include - -#include - -#include "common/linux/http_upload.h" - -using google_breakpad::HTTPUpload; - -struct Options { - std::string minidumpPath; - std::string uploadURLStr; - std::string product; - std::string version; - std::string proxy; - std::string proxy_user_pwd; - bool success; -}; - -//============================================================================= -static void Start(Options *options) { - std::map parameters; - // Add parameters - parameters["prod"] = options->product; - parameters["ver"] = options->version; - - // Send it - std::string response, error; - bool success = HTTPUpload::SendRequest(options->uploadURLStr, - parameters, - options->minidumpPath, - "upload_file_minidump", - options->proxy, - options->proxy_user_pwd, - &response, - &error); - - if (success) { - printf("Successfully sent the minidump file.\n"); - } else { - printf("Failed to send minidump: %s\n", error.c_str()); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } - options->success = success; -} - -//============================================================================= -static void -Usage(int argc, const char *argv[]) { - fprintf(stderr, "Submit minidump information.\n"); - fprintf(stderr, "Usage: %s [options...] -p -v " - "\n", argv[0]); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " should be a minidump.\n"); - fprintf(stderr, " is the destination for the upload\n"); - - fprintf(stderr, "-p:\t Product name\n"); - fprintf(stderr, "-v:\t Product version\n"); - fprintf(stderr, "-x:\t Use HTTP proxy on given port\n"); - fprintf(stderr, "-u:\t Set proxy user and password\n"); - fprintf(stderr, "-h:\t Usage\n"); - fprintf(stderr, "-?:\t Usage\n"); -} - -//============================================================================= -static void -SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - char ch; - - while ((ch = getopt(argc, (char * const *)argv, "p:u:v:x:h?")) != -1) { - switch (ch) { - case 'p': - options->product = optarg; - break; - case 'u': - options->proxy_user_pwd = optarg; - break; - case 'v': - options->version = optarg; - break; - case 'x': - options->proxy = optarg; - break; - - default: - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 2) { - fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]); - Usage(argc, argv); - exit(1); - } - - options->minidumpPath = argv[optind]; - options->uploadURLStr = argv[optind + 1]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - Options options; - SetupOptions(argc, argv, &options); - Start(&options); - return options.success ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/sym_upload.cc b/thirdparty/google-breakpad/r318/src/tools/linux/symupload/sym_upload.cc deleted file mode 100644 index 4e4da065..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/linux/symupload/sym_upload.cc +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// symupload.cc: Upload a symbol file to a HTTP server. The upload is sent as -// a multipart/form-data POST request with the following parameters: -// code_file: the basename of the module, e.g. "app" -// debug_file: the basename of the debugging file, e.g. "app" -// debug_identifier: the debug file's identifier, usually consisting of -// the guid and age embedded in the pdb, e.g. -// "11111111BBBB3333DDDD555555555555F" -// version: the file version of the module, e.g. "1.2.3.4" -// os: the operating system that the module was built for -// cpu: the CPU that the module was built for -// symbol_file: the contents of the breakpad-format symbol file - -#include - -#include -#include -#include -#include -#include -#include - -#include "common/linux/http_upload.h" - -using google_breakpad::HTTPUpload; - -typedef struct { - std::string symbolsPath; - std::string uploadURLStr; - std::string proxy; - std::string proxy_user_pwd; - std::string version; - bool success; -} Options; - -static void TokenizeByChar(const std::string &source_string, - int c, std::vector *results) { - assert(results); - std::string::size_type cur_pos = 0, next_pos = 0; - while ((next_pos = source_string.find(c, cur_pos)) != std::string::npos) { - if (next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos, next_pos - cur_pos)); - cur_pos = next_pos + 1; - } - if (cur_pos < source_string.size() && next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos)); -} - -//============================================================================= -// Parse out the module line which have 5 parts. -// MODULE -static bool ModuleDataForSymbolFile(const std::string &file, - std::vector *module_parts) { - assert(module_parts); - const size_t kModulePartNumber = 5; - FILE *fp = fopen(file.c_str(), "r"); - if (fp) { - char buffer[1024]; - if (fgets(buffer, sizeof(buffer), fp)) { - std::string line(buffer); - std::string::size_type line_break_pos = line.find_first_of('\n'); - if (line_break_pos == std::string::npos) { - assert(!"The file is invalid!"); - fclose(fp); - return false; - } - line.resize(line_break_pos); - const char kDelimiter = ' '; - TokenizeByChar(line, kDelimiter, module_parts); - if (module_parts->size() != kModulePartNumber) - module_parts->clear(); - } - fclose(fp); - } - - return module_parts->size() == kModulePartNumber; -} - -//============================================================================= -static std::string CompactIdentifier(const std::string &uuid) { - std::vector components; - TokenizeByChar(uuid, '-', &components); - std::string result; - for (size_t i = 0; i < components.size(); ++i) - result += components[i]; - return result; -} - -//============================================================================= -static void Start(Options *options) { - std::map parameters; - options->success = false; - std::vector module_parts; - if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) { - fprintf(stderr, "Failed to parse symbol file!\n"); - return; - } - - std::string compacted_id = CompactIdentifier(module_parts[3]); - - // Add parameters - if (!options->version.empty()) - parameters["version"] = options->version; - - // MODULE - // 0 1 2 3 4 - parameters["os"] = module_parts[1]; - parameters["cpu"] = module_parts[2]; - parameters["debug_file"] = module_parts[4]; - parameters["code_file"] = module_parts[4]; - parameters["debug_identifier"] = compacted_id; - std::string response, error; - bool success = HTTPUpload::SendRequest(options->uploadURLStr, - parameters, - options->symbolsPath, - "symbol_file", - options->proxy, - options->proxy_user_pwd, - &response, - &error); - - if (success) { - printf("Successfully sent the symbol file.\n"); - } else { - printf("Failed to send symbol file: %s\n", error.c_str()); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } - options->success = success; -} - -//============================================================================= -static void -Usage(int argc, const char *argv[]) { - fprintf(stderr, "Submit symbol information.\n"); - fprintf(stderr, "Usage: %s [options...] \n", argv[0]); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " should be created by using the dump_syms tool.\n"); - fprintf(stderr, " is the destination for the upload\n"); - fprintf(stderr, "-v:\t Version information (e.g., 1.2.3.4)\n"); - fprintf(stderr, "-x:\t Use HTTP proxy on given port\n"); - fprintf(stderr, "-u:\t Set proxy user and password\n"); - fprintf(stderr, "-h:\t Usage\n"); - fprintf(stderr, "-?:\t Usage\n"); -} - -//============================================================================= -static void -SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - char ch; - - while ((ch = getopt(argc, (char * const *)argv, "u:v:x:h?")) != -1) { - switch (ch) { - case 'u': - options->proxy_user_pwd = optarg; - break; - case 'v': - options->version = optarg; - break; - case 'x': - options->proxy = optarg; - break; - - default: - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 2) { - fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]); - Usage(argc, argv); - exit(1); - } - - options->symbolsPath = argv[optind]; - options->uploadURLStr = argv[optind + 1]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - Options options; - SetupOptions(argc, argv, &options); - Start(&options); - return options.success ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.mm b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.mm deleted file mode 100644 index f90ee42f..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.mm +++ /dev/null @@ -1,362 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// crash_report.mm: Convert the contents of a minidump into a format that -// looks more like Apple's CrashReporter format - -#include - -#include -#include - -#include - -#include - -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/call_stack.h" -#include "google_breakpad/processor/code_module.h" -#include "google_breakpad/processor/minidump.h" -#include "google_breakpad/processor/minidump_processor.h" -#include "google_breakpad/processor/process_state.h" -#include "google_breakpad/processor/stack_frame_cpu.h" -#include "google_breakpad/processor/system_info.h" -#include "processor/pathname_stripper.h" -#include "processor/scoped_ptr.h" -#include "processor/simple_symbol_supplier.h" - -#include "on_demand_symbol_supplier.h" - -using std::string; - -using google_breakpad::BasicSourceLineResolver; -using google_breakpad::CallStack; -using google_breakpad::CodeModule; -using google_breakpad::CodeModules; -using google_breakpad::MinidumpProcessor; -using google_breakpad::OnDemandSymbolSupplier; -using google_breakpad::PathnameStripper; -using google_breakpad::ProcessState; -using google_breakpad::scoped_ptr; -using google_breakpad::StackFrame; -using google_breakpad::StackFramePPC; -using google_breakpad::StackFrameX86; -using google_breakpad::SystemInfo; - -typedef struct { - NSString *minidumpPath; - NSString *searchDir; - NSString *symbolSearchDir; -} Options; - -//============================================================================= -static int PrintRegister(const char *name, u_int32_t value, int sequence) { - if (sequence % 4 == 0) { - printf("\n"); - } - printf("%6s = 0x%08x ", name, value); - return ++sequence; -} - -//============================================================================= -static void PrintStack(const CallStack *stack, const string &cpu) { - int frame_count = stack->frames()->size(); - char buffer[1024]; - for (int frame_index = 0; frame_index < frame_count; ++frame_index) { - const StackFrame *frame = stack->frames()->at(frame_index); - const CodeModule *module = frame->module; - printf("%2d ", frame_index); - - if (module) { - // Module name (20 chars max) - strcpy(buffer, PathnameStripper::File(module->code_file()).c_str()); - int maxStr = 20; - buffer[maxStr] = 0; - printf("%-*s", maxStr, buffer); - - strcpy(buffer, module->version().c_str()); - buffer[maxStr] = 0; - - printf("%-*s",maxStr, buffer); - - u_int64_t instruction = frame->instruction; - - // PPC only: Adjust the instruction to match that of Crash reporter. The - // instruction listed is actually the return address. See the detailed - // comments in stackwalker_ppc.cc for more information. - if (cpu == "ppc" && frame_index) - instruction += 4; - - printf(" 0x%08llx ", instruction); - - // Function name - if (!frame->function_name.empty()) { - printf("%s", frame->function_name.c_str()); - if (!frame->source_file_name.empty()) { - string source_file = PathnameStripper::File(frame->source_file_name); - printf(" + 0x%llx (%s:%d)", - instruction - frame->source_line_base, - source_file.c_str(), frame->source_line); - } else { - printf(" + 0x%llx", instruction - frame->function_base); - } - } - } - printf("\n"); - } -} - -//============================================================================= -static void PrintRegisters(const CallStack *stack, const string &cpu) { - int sequence = 0; - const StackFrame *frame = stack->frames()->at(0); - if (cpu == "x86") { - const StackFrameX86 *frame_x86 = - reinterpret_cast(frame); - - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EIP) - sequence = PrintRegister("eip", frame_x86->context.eip, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESP) - sequence = PrintRegister("esp", frame_x86->context.esp, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBP) - sequence = PrintRegister("ebp", frame_x86->context.ebp, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EBX) - sequence = PrintRegister("ebx", frame_x86->context.ebx, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_ESI) - sequence = PrintRegister("esi", frame_x86->context.esi, sequence); - if (frame_x86->context_validity & StackFrameX86::CONTEXT_VALID_EDI) - sequence = PrintRegister("edi", frame_x86->context.edi, sequence); - if (frame_x86->context_validity == StackFrameX86::CONTEXT_VALID_ALL) { - sequence = PrintRegister("eax", frame_x86->context.eax, sequence); - sequence = PrintRegister("ecx", frame_x86->context.ecx, sequence); - sequence = PrintRegister("edx", frame_x86->context.edx, sequence); - sequence = PrintRegister("efl", frame_x86->context.eflags, sequence); - } - } else if (cpu == "ppc") { - const StackFramePPC *frame_ppc = - reinterpret_cast(frame); - - if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_ALL == - StackFramePPC::CONTEXT_VALID_ALL) { - sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence); - sequence = PrintRegister("srr1", frame_ppc->context.srr1, sequence); - sequence = PrintRegister("cr", frame_ppc->context.cr, sequence); - sequence = PrintRegister("xer", frame_ppc->context.xer, sequence); - sequence = PrintRegister("lr", frame_ppc->context.lr, sequence); - sequence = PrintRegister("ctr", frame_ppc->context.ctr, sequence); - sequence = PrintRegister("mq", frame_ppc->context.mq, sequence); - sequence = PrintRegister("vrsave", frame_ppc->context.vrsave, sequence); - - sequence = 0; - char buffer[5]; - for (int i = 0; i < MD_CONTEXT_PPC_GPR_COUNT; ++i) { - sprintf(buffer, "r%d", i); - sequence = PrintRegister(buffer, frame_ppc->context.gpr[i], sequence); - } - } else { - if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_SRR0) - sequence = PrintRegister("srr0", frame_ppc->context.srr0, sequence); - if (frame_ppc->context_validity & StackFramePPC::CONTEXT_VALID_GPR1) - sequence = PrintRegister("r1", frame_ppc->context.gpr[1], sequence); - } - } - - printf("\n"); -} - -static void PrintModules(const CodeModules *modules) { - if (!modules) - return; - - printf("\n"); - printf("Loaded modules:\n"); - - u_int64_t main_address = 0; - const CodeModule *main_module = modules->GetMainModule(); - if (main_module) { - main_address = main_module->base_address(); - } - - unsigned int module_count = modules->module_count(); - for (unsigned int module_sequence = 0; - module_sequence < module_count; - ++module_sequence) { - const CodeModule *module = modules->GetModuleAtSequence(module_sequence); - assert(module); - u_int64_t base_address = module->base_address(); - printf("0x%08llx - 0x%08llx %s %s%s %s\n", - base_address, base_address + module->size() - 1, - PathnameStripper::File(module->code_file()).c_str(), - module->version().empty() ? "???" : module->version().c_str(), - main_module != NULL && base_address == main_address ? - " (main)" : "", - module->code_file().c_str()); - } -} - -//============================================================================= -static void Start(Options *options) { - string minidump_file([options->minidumpPath fileSystemRepresentation]); - - BasicSourceLineResolver resolver; - string search_dir = options->searchDir ? - [options->searchDir fileSystemRepresentation] : ""; - string symbol_search_dir = options->symbolSearchDir ? - [options->symbolSearchDir fileSystemRepresentation] : ""; - scoped_ptr symbol_supplier( - new OnDemandSymbolSupplier(search_dir, symbol_search_dir)); - scoped_ptr - minidump_processor(new MinidumpProcessor(symbol_supplier.get(), &resolver)); - ProcessState process_state; - if (minidump_processor->Process(minidump_file, &process_state) != - MinidumpProcessor::PROCESS_OK) { - fprintf(stderr, "MinidumpProcessor::Process failed\n"); - return; - } - - const SystemInfo *system_info = process_state.system_info(); - string cpu = system_info->cpu; - - // Convert the time to a string - u_int32_t time_date_stamp = process_state.time_date_stamp(); - struct tm timestruct; - gmtime_r(reinterpret_cast(&time_date_stamp), ×truct); - char timestr[20]; - strftime(timestr, 20, "%Y-%m-%d %H:%M:%S", ×truct); - printf("Date: %s GMT\n", timestr); - - printf("Operating system: %s (%s)\n", system_info->os.c_str(), - system_info->os_version.c_str()); - printf("Architecture: %s\n", cpu.c_str()); - - if (process_state.crashed()) { - printf("Crash reason: %s\n", process_state.crash_reason().c_str()); - printf("Crash address: 0x%llx\n", process_state.crash_address()); - } else { - printf("No crash\n"); - } - - int requesting_thread = process_state.requesting_thread(); - if (requesting_thread != -1) { - printf("\n"); - printf("Thread %d (%s)\n", - requesting_thread, - process_state.crashed() ? "crashed" : - "requested dump, did not crash"); - PrintStack(process_state.threads()->at(requesting_thread), cpu); - } - - // Print all of the threads in the dump. - int thread_count = process_state.threads()->size(); - for (int thread_index = 0; thread_index < thread_count; ++thread_index) { - if (thread_index != requesting_thread) { - // Don't print the crash thread again, it was already printed. - printf("\n"); - printf("Thread %d\n", thread_index); - PrintStack(process_state.threads()->at(thread_index), cpu); - } - } - - // Print the crashed registers - if (requesting_thread != -1) { - printf("\nThread %d:", requesting_thread); - PrintRegisters(process_state.threads()->at(requesting_thread), cpu); - } - - // Print information about modules - PrintModules(process_state.modules()); -} - -//============================================================================= -static void Usage(int argc, const char *argv[]) { - fprintf(stderr, "Convert a minidump to a crash report. Breakpad symbol " - "files will be used (or created if missing) in /tmp.\n" - "If a symbol-file-search-dir is specified, any symbol " - "files in it will be used instead of being loaded from " - "modules on disk.\n" - "If modules cannot be found at the paths stored in the " - "minidump file, they will be searched for at " - "/.\n"); - fprintf(stderr, "Usage: %s [-s module-search-dir] [-S symbol-file-search-dir] minidump-file\n", argv[0]); - fprintf(stderr, "\t-s: Specify a search directory to use for missing modules\n" - "\t-S: Specify a search directory to use for symbol files\n" - "\t-h: Usage\n" - "\t-?: Usage\n"); -} - -//============================================================================= -static void SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - char ch; - - while ((ch = getopt(argc, (char * const *)argv, "S:s:h?")) != -1) { - switch (ch) { - case 's': - options->searchDir = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:optarg - length:strlen(optarg)]; - break; - - case 'S': - options->symbolSearchDir = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:optarg - length:strlen(optarg)]; - break; - - case 'h': - case '?': - Usage(argc, argv); - exit(1); - break; - } - } - - if ((argc - optind) != 1) { - fprintf(stderr, "%s: Missing minidump file\n", argv[0]); - Usage(argc, argv); - exit(1); - } - - options->minidumpPath = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:argv[optind] - length:strlen(argv[optind])]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - Options options; - - bzero(&options, sizeof(Options)); - SetupOptions(argc, argv, &options); - Start(&options); - [pool release]; - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.mode1v3 b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.mode1v3 deleted file mode 100644 index 19006537..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.mode1v3 +++ /dev/null @@ -1,1382 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - A1E1BA6B0F6AC39A009B13EF - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - build-and-go - com.apple.ide.PBXToolbarStopButton - get-info - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - BecomeActive - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 13 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 614}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 632}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 85 150 1091 673 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 203pt - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - MyNewFile14.java - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - MyNewFile14.java - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {883, 454}} - RubberWindowFrame - 85 150 1091 673 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 454pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 459}, {883, 173}} - RubberWindowFrame - 85 150 1091 673 0 0 1440 878 - - Module - XCDetailModule - Proportion - 173pt - - - Proportion - 883pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - A1E1BA690F6AC39A009B13EF - 1CE0B1FE06471DED0097A5F4 - A1E1BA6A0F6AC39A009B13EF - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - A1E1BA7D0F6AC47E009B13EF - A1E1BA7E0F6AC47E009B13EF - 1CD10A99069EF8BA00B06720 - A1E1BA710F6AC46D009B13EF - 1C78EAAD065D492600B07095 - /Users/julienbachmann/Documents/development/breakpad/google-breakpad/src/tools/mac/crash_report/crash_report.xcodeproj - - WindowString - 85 150 1091 673 0 0 1440 878 - WindowToolsV3 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {500, 218}} - RubberWindowFrame - 127 277 500 500 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 218pt - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{0, 223}, {500, 236}} - RubberWindowFrame - 127 277 500 500 0 0 1440 878 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 459pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - A1E1BA710F6AC46D009B13EF - A1E1BA720F6AC46D009B13EF - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowString - 127 277 500 500 0 0 1440 878 - WindowToolGUID - A1E1BA710F6AC46D009B13EF - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debugger - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {316, 185}} - {{316, 0}, {378, 185}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 185}} - {{0, 185}, {694, 196}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 381}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 120 - Value - 85 - Summary - 148 - - Frame - {{316, 0}, {378, 185}} - RubberWindowFrame - 127 355 694 422 0 0 1440 878 - - RubberWindowFrame - 127 355 694 422 0 0 1440 878 - - Module - PBXDebugSessionModule - Proportion - 381pt - - - Proportion - 381pt - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - - TableOfContents - - 1CD10A99069EF8BA00B06720 - A1E1BA730F6AC46D009B13EF - 1C162984064C10D400B95A72 - A1E1BA740F6AC46D009B13EF - A1E1BA750F6AC46D009B13EF - A1E1BA760F6AC46D009B13EF - A1E1BA770F6AC46D009B13EF - A1E1BA780F6AC46D009B13EF - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 127 355 694 422 0 0 1440 878 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - MENUSEPARATOR - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debuggerConsole - IsVertical - - Layout - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {996, 432}} - RubberWindowFrame - 182 229 996 473 0 0 1440 878 - - Module - PBXDebugCLIModule - Proportion - 432pt - - - Proportion - 432pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - - TableOfContents - - 1C78EAAD065D492600B07095 - A1E1BA790F6AC46D009B13EF - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 182 229 996 473 0 0 1440 878 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.pbxuser b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.pbxuser deleted file mode 100644 index 2aadc374..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/julienbachmann.pbxuser +++ /dev/null @@ -1,102 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = A1E1BA660F6AC372009B13EF /* crash_report */; - activeTarget = 8DD76F960486AA7600D96B5E /* crash_report */; - codeSenseManager = A1E1BA6D0F6AC39A009B13EF /* Code sense */; - executables = ( - A1E1BA660F6AC372009B13EF /* crash_report */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 22, - 300, - 532, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXExecutablesDataSource_ActiveFlagID, - PBXExecutablesDataSource_NameID, - PBXExecutablesDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 644, - 20, - 48.16259765625, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 258655090; - PBXWorkspaceStateSaveDate = 258655090; - }; - sourceControlManager = A1E1BA6C0F6AC39A009B13EF /* Source Control */; - userBuildSettings = { - }; - }; - 8DD76F960486AA7600D96B5E /* crash_report */ = { - activeExec = 0; - executables = ( - A1E1BA660F6AC372009B13EF /* crash_report */, - ); - }; - A1E1BA660F6AC372009B13EF /* crash_report */ = { - isa = PBXExecutable; - activeArgIndices = ( - YES, - YES, - ); - argumentStrings = ( - "-S /Users/julienbachmann/Documents/development/breakpad/", - "/Users/julienbachmann/Documents/development/breakpad/99A6167A-F022-43DE-B785-7C8F87710096.dmp", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = crash_report; - savedGlobals = { - }; - sourceDirectories = ( - ); - }; - A1E1BA6C0F6AC39A009B13EF /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - }; - A1E1BA6D0F6AC39A009B13EF /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj deleted file mode 100644 index 4b31f5ff..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj +++ /dev/null @@ -1,450 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 557800400BE1F28500EC23E0 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5578003E0BE1F28500EC23E0 /* macho_utilities.cc */; }; - 557800410BE1F28500EC23E0 /* macho_utilities.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5578003F0BE1F28500EC23E0 /* macho_utilities.h */; }; - 8B40BDC00C0638E4009535AF /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8B40BDBF0C0638E4009535AF /* logging.cc */; }; - 8DD76F9A0486AA7600D96B5E /* crash_report.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* crash_report.mm */; settings = {ATTRIBUTES = (); }; }; - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; - 9B35FEE40B2675F9008DE8C7 /* code_module.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE20B2675F9008DE8C7 /* code_module.h */; }; - 9B35FEE50B2675F9008DE8C7 /* code_modules.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE30B2675F9008DE8C7 /* code_modules.h */; }; - 9B35FEE90B26761C008DE8C7 /* basic_code_module.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE60B26761C008DE8C7 /* basic_code_module.h */; }; - 9B35FEEA0B26761C008DE8C7 /* basic_code_modules.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */; }; - 9B35FEEB0B26761C008DE8C7 /* basic_code_modules.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */; }; - 9B3904960B2E52D90059FABE /* basic_source_line_resolver.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */; }; - 9B3904970B2E52D90059FABE /* source_line_resolver_interface.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */; }; - 9B3904990B2E52FD0059FABE /* basic_source_line_resolver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */; }; - 9B44619E0B66C66B00BBB817 /* system_info.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B44619D0B66C66B00BBB817 /* system_info.h */; }; - 9BDF172C0B1B8B2400F8391B /* call_stack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172A0B1B8B2400F8391B /* call_stack.cc */; }; - 9BDF172D0B1B8B2400F8391B /* minidump_processor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */; }; - 9BDF17410B1B8B9A00F8391B /* minidump.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF173F0B1B8B9A00F8391B /* minidump.cc */; }; - 9BDF17540B1B8BF900F8391B /* stackwalker_ppc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */; }; - 9BDF17550B1B8BF900F8391B /* stackwalker_x86.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */; }; - 9BDF17560B1B8BF900F8391B /* stackwalker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF17530B1B8BF900F8391B /* stackwalker.cc */; }; - 9BDF175D0B1B8C1B00F8391B /* process_state.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF175B0B1B8C1B00F8391B /* process_state.cc */; }; - 9BDF176D0B1B8CB100F8391B /* on_demand_symbol_supplier.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */; }; - 9BDF176E0B1B8CB100F8391B /* on_demand_symbol_supplier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */; }; - 9BDF1A280B1BD58200F8391B /* pathname_stripper.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */; }; - 9BDF1AB90B1BE70C00F8391B /* range_map.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1A7B0B1BE30100F8391B /* range_map.h */; }; - 9BDF1ABA0B1BE70D00F8391B /* range_map-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */; }; - 9BDF1AFC0B1BEB6300F8391B /* address_map-inl.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */; }; - 9BDF1AFD0B1BEB6300F8391B /* address_map.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF1AFB0B1BEB6300F8391B /* address_map.h */; }; - 9BDF21A60B1E825400F8391B /* dump_syms.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BDF192D0B1BC15D00F8391B /* dump_syms.h */; }; - 9BDF21A70B1E825400F8391B /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF192E0B1BC15D00F8391B /* dump_syms.mm */; }; - 9BE650B20B52FE3000611104 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AC0B52FE3000611104 /* file_id.cc */; }; - 9BE650B30B52FE3000611104 /* file_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650AD0B52FE3000611104 /* file_id.h */; }; - 9BE650B40B52FE3000611104 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650AE0B52FE3000611104 /* macho_id.cc */; }; - 9BE650B50B52FE3000611104 /* macho_id.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650AF0B52FE3000611104 /* macho_id.h */; }; - 9BE650B60B52FE3000611104 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650B00B52FE3000611104 /* macho_walker.cc */; }; - 9BE650B70B52FE3000611104 /* macho_walker.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BE650B10B52FE3000611104 /* macho_walker.h */; }; - F9C7ECE50E8ABCA600E953AD /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE20E8ABCA600E953AD /* bytereader.cc */; }; - F9C7ECE60E8ABCA600E953AD /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */; }; - F9C7ECE70E8ABCA600E953AD /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */; }; - FD6625CD0CF4D45C004AC844 /* stackwalker_amd64.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */; }; - FD8EDEAE0CADDAD400A5EDF1 /* stackwalker_sparc.cc in Sources */ = {isa = PBXBuildFile; fileRef = FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */; }; - FD8EDEAF0CADDAD400A5EDF1 /* stackwalker_sparc.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - 9BDF176D0B1B8CB100F8391B /* on_demand_symbol_supplier.h in CopyFiles */, - 9BDF1AB90B1BE70C00F8391B /* range_map.h in CopyFiles */, - 9BDF1ABA0B1BE70D00F8391B /* range_map-inl.h in CopyFiles */, - 9BDF1AFC0B1BEB6300F8391B /* address_map-inl.h in CopyFiles */, - 9BDF1AFD0B1BEB6300F8391B /* address_map.h in CopyFiles */, - 9BDF21A60B1E825400F8391B /* dump_syms.h in CopyFiles */, - 9B35FEE40B2675F9008DE8C7 /* code_module.h in CopyFiles */, - 9B35FEE50B2675F9008DE8C7 /* code_modules.h in CopyFiles */, - 9B35FEE90B26761C008DE8C7 /* basic_code_module.h in CopyFiles */, - 9B35FEEB0B26761C008DE8C7 /* basic_code_modules.h in CopyFiles */, - 9B3904960B2E52D90059FABE /* basic_source_line_resolver.h in CopyFiles */, - 9B3904970B2E52D90059FABE /* source_line_resolver_interface.h in CopyFiles */, - 9BE650B30B52FE3000611104 /* file_id.h in CopyFiles */, - 9BE650B50B52FE3000611104 /* macho_id.h in CopyFiles */, - 9BE650B70B52FE3000611104 /* macho_walker.h in CopyFiles */, - 9B44619E0B66C66B00BBB817 /* system_info.h in CopyFiles */, - 557800410BE1F28500EC23E0 /* macho_utilities.h in CopyFiles */, - FD8EDEAF0CADDAD400A5EDF1 /* stackwalker_sparc.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 08FB7796FE84155DC02AAC07 /* crash_report.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = crash_report.mm; sourceTree = ""; }; - 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 5578003E0BE1F28500EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; }; - 5578003F0BE1F28500EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; }; - 8B40BDBF0C0638E4009535AF /* logging.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = logging.cc; path = ../../../processor/logging.cc; sourceTree = SOURCE_ROOT; }; - 8DD76FA10486AA7600D96B5E /* crash_report */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = crash_report; sourceTree = BUILT_PRODUCTS_DIR; }; - 9B35FEE20B2675F9008DE8C7 /* code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_module.h; path = ../../../google_breakpad/processor/code_module.h; sourceTree = SOURCE_ROOT; }; - 9B35FEE30B2675F9008DE8C7 /* code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_modules.h; path = ../../../google_breakpad/processor/code_modules.h; sourceTree = SOURCE_ROOT; }; - 9B35FEE60B26761C008DE8C7 /* basic_code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_module.h; path = ../../../processor/basic_code_module.h; sourceTree = SOURCE_ROOT; }; - 9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_code_modules.cc; path = ../../../processor/basic_code_modules.cc; sourceTree = SOURCE_ROOT; }; - 9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_modules.h; path = ../../../processor/basic_code_modules.h; sourceTree = SOURCE_ROOT; }; - 9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = basic_source_line_resolver.h; sourceTree = ""; }; - 9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_interface.h; sourceTree = ""; }; - 9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_source_line_resolver.cc; path = ../../../processor/basic_source_line_resolver.cc; sourceTree = SOURCE_ROOT; }; - 9B44619D0B66C66B00BBB817 /* system_info.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = system_info.h; sourceTree = ""; }; - 9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = breakpad_types.h; sourceTree = ""; }; - 9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_format.h; sourceTree = ""; }; - 9BDF16FC0B1B8ACD00F8391B /* call_stack.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = call_stack.h; sourceTree = ""; }; - 9BDF16FD0B1B8ACD00F8391B /* memory_region.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = memory_region.h; sourceTree = ""; }; - 9BDF16FE0B1B8ACD00F8391B /* minidump.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump.h; sourceTree = ""; }; - 9BDF16FF0B1B8ACD00F8391B /* minidump_processor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_processor.h; sourceTree = ""; }; - 9BDF17000B1B8ACD00F8391B /* process_state.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = process_state.h; sourceTree = ""; }; - 9BDF17010B1B8ACD00F8391B /* stack_frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stack_frame.h; sourceTree = ""; }; - 9BDF17020B1B8ACD00F8391B /* stack_frame_cpu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stack_frame_cpu.h; sourceTree = ""; }; - 9BDF17030B1B8ACD00F8391B /* stackwalker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = stackwalker.h; sourceTree = ""; }; - 9BDF17040B1B8ACD00F8391B /* symbol_supplier.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = symbol_supplier.h; sourceTree = ""; }; - 9BDF172A0B1B8B2400F8391B /* call_stack.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = call_stack.cc; path = ../../../processor/call_stack.cc; sourceTree = SOURCE_ROOT; }; - 9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump_processor.cc; path = ../../../processor/minidump_processor.cc; sourceTree = SOURCE_ROOT; }; - 9BDF173F0B1B8B9A00F8391B /* minidump.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minidump.cc; path = ../../../processor/minidump.cc; sourceTree = SOURCE_ROOT; }; - 9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_ppc.cc; path = ../../../processor/stackwalker_ppc.cc; sourceTree = SOURCE_ROOT; }; - 9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_x86.cc; path = ../../../processor/stackwalker_x86.cc; sourceTree = SOURCE_ROOT; }; - 9BDF17530B1B8BF900F8391B /* stackwalker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker.cc; path = ../../../processor/stackwalker.cc; sourceTree = SOURCE_ROOT; }; - 9BDF175B0B1B8C1B00F8391B /* process_state.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = process_state.cc; path = ../../../processor/process_state.cc; sourceTree = SOURCE_ROOT; }; - 9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = on_demand_symbol_supplier.h; sourceTree = ""; }; - 9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = on_demand_symbol_supplier.mm; sourceTree = ""; }; - 9BDF192D0B1BC15D00F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = SOURCE_ROOT; }; - 9BDF192E0B1BC15D00F8391B /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = SOURCE_ROOT; }; - 9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pathname_stripper.cc; path = ../../../processor/pathname_stripper.cc; sourceTree = SOURCE_ROOT; }; - 9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "range_map-inl.h"; path = "../../../processor/range_map-inl.h"; sourceTree = SOURCE_ROOT; }; - 9BDF1A7B0B1BE30100F8391B /* range_map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = range_map.h; path = ../../../processor/range_map.h; sourceTree = SOURCE_ROOT; }; - 9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "address_map-inl.h"; path = "../../../processor/address_map-inl.h"; sourceTree = SOURCE_ROOT; }; - 9BDF1AFB0B1BEB6300F8391B /* address_map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = address_map.h; path = ../../../processor/address_map.h; sourceTree = SOURCE_ROOT; }; - 9BE650AC0B52FE3000611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; }; - 9BE650AD0B52FE3000611104 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; }; - 9BE650AE0B52FE3000611104 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; }; - 9BE650AF0B52FE3000611104 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; }; - 9BE650B00B52FE3000611104 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; }; - 9BE650B10B52FE3000611104 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; }; - F9C7ECE20E8ABCA600E953AD /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/mac/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; }; - F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/mac/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; }; - F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/mac/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; }; - FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_amd64.cc; path = ../../../processor/stackwalker_amd64.cc; sourceTree = SOURCE_ROOT; }; - FD6625C50CF4D438004AC844 /* stackwalker_amd64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stackwalker_amd64.h; path = ../../../processor/stackwalker_amd64.h; sourceTree = SOURCE_ROOT; }; - FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = stackwalker_sparc.cc; path = ../../../processor/stackwalker_sparc.cc; sourceTree = SOURCE_ROOT; }; - FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stackwalker_sparc.h; path = ../../../processor/stackwalker_sparc.h; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DD76F9B0486AA7600D96B5E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* crash_report */ = { - isa = PBXGroup; - children = ( - F9C7ECE10E8ABC7F00E953AD /* DWARF */, - 5578003E0BE1F28500EC23E0 /* macho_utilities.cc */, - 5578003F0BE1F28500EC23E0 /* macho_utilities.h */, - 9BDF192D0B1BC15D00F8391B /* dump_syms.h */, - 9BDF192E0B1BC15D00F8391B /* dump_syms.mm */, - 08FB7796FE84155DC02AAC07 /* crash_report.mm */, - 9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */, - 9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */, - 08FB7795FE84155DC02AAC07 /* breakpad */, - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - ); - name = crash_report; - sourceTree = ""; - }; - 08FB7795FE84155DC02AAC07 /* breakpad */ = { - isa = PBXGroup; - children = ( - 9BE650AB0B52FE1A00611104 /* common */, - 9BDF17280B1B8B0200F8391B /* processor */, - 9BDF16F70B1B8ACD00F8391B /* google_breakpad */, - ); - name = breakpad; - sourceTree = ""; - }; - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 08FB779EFE84155DC02AAC07 /* Foundation.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8DD76FA10486AA7600D96B5E /* crash_report */, - ); - name = Products; - sourceTree = ""; - }; - 9BDF16F70B1B8ACD00F8391B /* google_breakpad */ = { - isa = PBXGroup; - children = ( - 9BDF16F80B1B8ACD00F8391B /* common */, - 9BDF16FB0B1B8ACD00F8391B /* processor */, - ); - name = google_breakpad; - path = ../../../google_breakpad; - sourceTree = SOURCE_ROOT; - }; - 9BDF16F80B1B8ACD00F8391B /* common */ = { - isa = PBXGroup; - children = ( - 9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */, - 9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */, - ); - path = common; - sourceTree = ""; - }; - 9BDF16FB0B1B8ACD00F8391B /* processor */ = { - isa = PBXGroup; - children = ( - 9B3904940B2E52D90059FABE /* basic_source_line_resolver.h */, - 9BDF16FC0B1B8ACD00F8391B /* call_stack.h */, - 9B35FEE20B2675F9008DE8C7 /* code_module.h */, - 9B35FEE30B2675F9008DE8C7 /* code_modules.h */, - 9BDF16FD0B1B8ACD00F8391B /* memory_region.h */, - 9BDF16FE0B1B8ACD00F8391B /* minidump.h */, - 9BDF16FF0B1B8ACD00F8391B /* minidump_processor.h */, - 9BDF17000B1B8ACD00F8391B /* process_state.h */, - 9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */, - 9BDF17010B1B8ACD00F8391B /* stack_frame.h */, - 9BDF17020B1B8ACD00F8391B /* stack_frame_cpu.h */, - 9BDF17030B1B8ACD00F8391B /* stackwalker.h */, - 9BDF17040B1B8ACD00F8391B /* symbol_supplier.h */, - 9B44619D0B66C66B00BBB817 /* system_info.h */, - ); - path = processor; - sourceTree = ""; - }; - 9BDF17280B1B8B0200F8391B /* processor */ = { - isa = PBXGroup; - children = ( - 9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */, - 9BDF1AFA0B1BEB6300F8391B /* address_map-inl.h */, - 9BDF1AFB0B1BEB6300F8391B /* address_map.h */, - 9B35FEE60B26761C008DE8C7 /* basic_code_module.h */, - 9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */, - 9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */, - 9BDF172A0B1B8B2400F8391B /* call_stack.cc */, - 8B40BDBF0C0638E4009535AF /* logging.cc */, - 9BDF173F0B1B8B9A00F8391B /* minidump.cc */, - 9BDF172B0B1B8B2400F8391B /* minidump_processor.cc */, - 9BDF1A270B1BD58200F8391B /* pathname_stripper.cc */, - 9BDF175B0B1B8C1B00F8391B /* process_state.cc */, - 9BDF1A7A0B1BE30100F8391B /* range_map-inl.h */, - 9BDF1A7B0B1BE30100F8391B /* range_map.h */, - 9BDF17530B1B8BF900F8391B /* stackwalker.cc */, - 9BDF17510B1B8BF900F8391B /* stackwalker_ppc.cc */, - 9BDF17520B1B8BF900F8391B /* stackwalker_x86.cc */, - FD8EDEAC0CADDAD400A5EDF1 /* stackwalker_sparc.cc */, - FD8EDEAD0CADDAD400A5EDF1 /* stackwalker_sparc.h */, - FD6625C40CF4D438004AC844 /* stackwalker_amd64.cc */, - FD6625C50CF4D438004AC844 /* stackwalker_amd64.h */, - ); - name = processor; - sourceTree = ""; - }; - 9BE650AB0B52FE1A00611104 /* common */ = { - isa = PBXGroup; - children = ( - 9BE650AC0B52FE3000611104 /* file_id.cc */, - 9BE650AD0B52FE3000611104 /* file_id.h */, - 9BE650AE0B52FE3000611104 /* macho_id.cc */, - 9BE650AF0B52FE3000611104 /* macho_id.h */, - 9BE650B00B52FE3000611104 /* macho_walker.cc */, - 9BE650B10B52FE3000611104 /* macho_walker.h */, - ); - name = common; - sourceTree = ""; - }; - F9C7ECE10E8ABC7F00E953AD /* DWARF */ = { - isa = PBXGroup; - children = ( - F9C7ECE20E8ABCA600E953AD /* bytereader.cc */, - F9C7ECE30E8ABCA600E953AD /* dwarf2reader.cc */, - F9C7ECE40E8ABCA600E953AD /* functioninfo.cc */, - ); - name = DWARF; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8DD76F960486AA7600D96B5E /* crash_report */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "crash_report" */; - buildPhases = ( - 8DD76F990486AA7600D96B5E /* Sources */, - 8DD76F9B0486AA7600D96B5E /* Frameworks */, - 8DD76F9E0486AA7600D96B5E /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = crash_report; - productInstallPath = "$(HOME)/bin"; - productName = crash_report; - productReference = 8DD76FA10486AA7600D96B5E /* crash_report */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "crash_report" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 08FB7794FE84155DC02AAC07 /* crash_report */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8DD76F960486AA7600D96B5E /* crash_report */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DD76F990486AA7600D96B5E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9A0486AA7600D96B5E /* crash_report.mm in Sources */, - 9BDF172C0B1B8B2400F8391B /* call_stack.cc in Sources */, - 9BDF172D0B1B8B2400F8391B /* minidump_processor.cc in Sources */, - 9BDF17410B1B8B9A00F8391B /* minidump.cc in Sources */, - 9BDF17540B1B8BF900F8391B /* stackwalker_ppc.cc in Sources */, - 9BDF17550B1B8BF900F8391B /* stackwalker_x86.cc in Sources */, - 9BDF17560B1B8BF900F8391B /* stackwalker.cc in Sources */, - 9BDF175D0B1B8C1B00F8391B /* process_state.cc in Sources */, - 9BDF176E0B1B8CB100F8391B /* on_demand_symbol_supplier.mm in Sources */, - 9BDF1A280B1BD58200F8391B /* pathname_stripper.cc in Sources */, - 9BDF21A70B1E825400F8391B /* dump_syms.mm in Sources */, - 9B35FEEA0B26761C008DE8C7 /* basic_code_modules.cc in Sources */, - 9B3904990B2E52FD0059FABE /* basic_source_line_resolver.cc in Sources */, - 9BE650B20B52FE3000611104 /* file_id.cc in Sources */, - 9BE650B40B52FE3000611104 /* macho_id.cc in Sources */, - 9BE650B60B52FE3000611104 /* macho_walker.cc in Sources */, - 557800400BE1F28500EC23E0 /* macho_utilities.cc in Sources */, - 8B40BDC00C0638E4009535AF /* logging.cc in Sources */, - FD8EDEAE0CADDAD400A5EDF1 /* stackwalker_sparc.cc in Sources */, - FD6625CD0CF4D45C004AC844 /* stackwalker_amd64.cc in Sources */, - F9C7ECE50E8ABCA600E953AD /* bytereader.cc in Sources */, - F9C7ECE60E8ABCA600E953AD /* dwarf2reader.cc in Sources */, - F9C7ECE70E8ABCA600E953AD /* functioninfo.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB927508733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(GCC_PREPROCESSOR_DEFINITIONS)", - _GLIBCXX_DEBUG_PEDANTIC, - _GLIBCXX_DEBUG, - _GLIBCPP_CONCEPT_CHECKS, - ); - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = "-lcrypto"; - PRODUCT_NAME = crash_report; - USER_HEADER_SEARCH_PATHS = "../../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 1DEB927608733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - GCC_C_LANGUAGE_STANDARD = c99; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = "-lcrypto"; - PRODUCT_NAME = crash_report; - USER_HEADER_SEARCH_PATHS = "../../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Release; - }; - 1DEB927908733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - 1DEB927A08733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "crash_report" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927508733DD40010E9CD /* Debug */, - 1DEB927608733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "crash_report" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927908733DD40010E9CD /* Debug */, - 1DEB927A08733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.h b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.h deleted file mode 100644 index 9c0e8b78..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// on_demand_symbol_supplier.h: Provides a Symbol Supplier that will create -// a breakpad symbol file on demand. - -#ifndef TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__ -#define TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__ - -#include -#include -#include "google_breakpad/processor/symbol_supplier.h" - -namespace google_breakpad { - -using std::map; -using std::string; -class MinidumpModule; - -class OnDemandSymbolSupplier : public SymbolSupplier { - public: - // |search_dir| is the directory to search for alternative symbols with - // the same name as the module in the minidump - OnDemandSymbolSupplier(const string &search_dir, - const string &symbol_search_dir); - virtual ~OnDemandSymbolSupplier() {} - - // Returns the path to the symbol file for the given module. - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file); - - // Returns the path to the symbol file for the given module. - virtual SymbolResult GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data); - protected: - // Search directory - string search_dir_; - string symbol_search_dir_; - - // When we create a symbol file for a module, save the name of the module - // and the path to that module's symbol file. - map module_file_map_; - - // Return the name for |module| This will be the value used as the key - // to the |module_file_map_|. - string GetNameForModule(const CodeModule *module); - - // Find the module on local system. If the module resides in a different - // location than the full path in the minidump, this will be the location - // used. - string GetLocalModulePath(const CodeModule *module); - - // Return the full path for |module|. - string GetModulePath(const CodeModule *module); - - // Return the path to the symbol file for |module|. If an empty string is - // returned, then |module| doesn't have a symbol file. - string GetModuleSymbolFile(const CodeModule *module); - - // Generate the breakpad symbol file for |module|. Return true if successful. - // File is generated in /tmp. - bool GenerateSymbolFile(const CodeModule *module, - const SystemInfo *system_info); -}; - -} // namespace google_breakpad - -#endif // TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__ diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.mm b/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.mm deleted file mode 100644 index 4123a27c..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/crash_report/on_demand_symbol_supplier.mm +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -#include -#include -#include -#include -#include - -#include "google_breakpad/processor/basic_source_line_resolver.h" -#include "google_breakpad/processor/minidump.h" -#include "google_breakpad/processor/system_info.h" -#include "processor/pathname_stripper.h" - -#include "on_demand_symbol_supplier.h" -#include "dump_syms.h" - -using std::map; -using std::string; - -using google_breakpad::OnDemandSymbolSupplier; -using google_breakpad::PathnameStripper; -using google_breakpad::SymbolSupplier; -using google_breakpad::SystemInfo; - -OnDemandSymbolSupplier::OnDemandSymbolSupplier(const string &search_dir, - const string &symbol_search_dir) - : search_dir_(search_dir) { - NSFileManager *mgr = [NSFileManager defaultManager]; - int length = symbol_search_dir.length(); - if (length) { - // Load all sym files in symbol_search_dir into our module_file_map - // A symbol file always starts with a line like this: - // MODULE mac x86 BBF0A8F9BEADDD2048E6464001CA193F0 GoogleDesktopDaemon - // or - // MODULE mac ppc BBF0A8F9BEADDD2048E6464001CA193F0 GoogleDesktopDaemon - const char *symbolSearchStr = symbol_search_dir.c_str(); - NSString *symbolSearchPath = - [mgr stringWithFileSystemRepresentation:symbolSearchStr - length:strlen(symbolSearchStr)]; - NSDirectoryEnumerator *dirEnum = [mgr enumeratorAtPath:symbolSearchPath]; - NSString *fileName; - NSCharacterSet *hexSet = - [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"]; - NSCharacterSet *newlineSet = - [NSCharacterSet characterSetWithCharactersInString:@"\r\n"]; - while ((fileName = [dirEnum nextObject])) { - // Check to see what type of file we have - NSDictionary *attrib = [dirEnum fileAttributes]; - NSString *fileType = [attrib objectForKey:NSFileType]; - if ([fileType isEqualToString:NSFileTypeDirectory]) { - // Skip subdirectories - [dirEnum skipDescendents]; - } else { - NSString *filePath = [symbolSearchPath stringByAppendingPathComponent:fileName]; - NSString *dataStr = [[[NSString alloc] initWithContentsOfFile:filePath] autorelease]; - if (dataStr) { - // Check file to see if it is of appropriate type, and grab module - // name. - NSScanner *scanner = [NSScanner scannerWithString:dataStr]; - BOOL goodScan = [scanner scanString:@"MODULE mac " intoString:nil]; - if (goodScan) { - goodScan = ([scanner scanString:@"x86 " intoString:nil] || - [scanner scanString:@"ppc " intoString:nil]); - if (goodScan) { - NSString *moduleID; - goodScan = [scanner scanCharactersFromSet:hexSet - intoString:&moduleID]; - if (goodScan) { - // Module IDs are always 33 chars long - goodScan = [moduleID length] == 33; - if (goodScan) { - NSString *moduleName; - goodScan = [scanner scanUpToCharactersFromSet:newlineSet - intoString:&moduleName]; - if (goodScan) { - goodScan = [moduleName length] > 0; - if (goodScan) { - const char *moduleNameStr = [moduleName UTF8String]; - const char *filePathStr = [filePath fileSystemRepresentation]; - // Map our file - module_file_map_[moduleNameStr] = filePathStr; - } - } - } - } - } - } - } - } - } - } -} - -SymbolSupplier::SymbolResult -OnDemandSymbolSupplier::GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file) { - string path(GetModuleSymbolFile(module)); - - if (path.empty()) { - if (!GenerateSymbolFile(module, system_info)) - return NOT_FOUND; - - path = GetModuleSymbolFile(module); - } - - if (path.empty()) - return NOT_FOUND; - - *symbol_file = path; - return FOUND; -} - -SymbolSupplier::SymbolResult -OnDemandSymbolSupplier::GetSymbolFile(const CodeModule *module, - const SystemInfo *system_info, - string *symbol_file, - string *symbol_data) { - SymbolSupplier::SymbolResult s = GetSymbolFile(module, - system_info, - symbol_file); - - - if (s == FOUND) { - ifstream in(symbol_file->c_str()); - getline(in, *symbol_data, std::string::traits_type::to_char_type( - std::string::traits_type::eof())); - in.close(); - } - - return s; -} - -string OnDemandSymbolSupplier::GetLocalModulePath(const CodeModule *module) { - NSFileManager *mgr = [NSFileManager defaultManager]; - const char *moduleStr = module->code_file().c_str(); - NSString *modulePath = - [mgr stringWithFileSystemRepresentation:moduleStr length:strlen(moduleStr)]; - const char *searchStr = search_dir_.c_str(); - NSString *searchDir = - [mgr stringWithFileSystemRepresentation:searchStr length:strlen(searchStr)]; - - if ([mgr fileExistsAtPath:modulePath]) - return module->code_file(); - - // If the module is not found, try to start appending the components to the - // search string and stop if a file (not dir) is found or all components - // have been appended - NSArray *pathComponents = [modulePath componentsSeparatedByString:@"/"]; - int count = [pathComponents count]; - NSMutableString *path = [NSMutableString string]; - - for (int i = 0; i < count; ++i) { - [path setString:searchDir]; - - for (int j = 0; j < i + 1; ++j) { - int idx = count - 1 - i + j; - [path appendFormat:@"/%@", [pathComponents objectAtIndex:idx]]; - } - - BOOL isDir; - if ([mgr fileExistsAtPath:path isDirectory:&isDir] && (!isDir)) { - return [path fileSystemRepresentation]; - } - } - - return ""; -} - -string OnDemandSymbolSupplier::GetModulePath(const CodeModule *module) { - return module->code_file(); -} - -string OnDemandSymbolSupplier::GetNameForModule(const CodeModule *module) { - return PathnameStripper::File(module->code_file()); -} - -string OnDemandSymbolSupplier::GetModuleSymbolFile(const CodeModule *module) { - string name(GetNameForModule(module)); - map::iterator result = module_file_map_.find(name); - - return (result == module_file_map_.end()) ? "" : (*result).second; -} - -static float GetFileModificationTime(const char *path) { - float result = 0; - struct stat file_stat; - if (stat(path, &file_stat) == 0) - result = (float)file_stat.st_mtimespec.tv_sec + - (float)file_stat.st_mtimespec.tv_nsec / 1.0e9; - - return result; -} - -bool OnDemandSymbolSupplier::GenerateSymbolFile(const CodeModule *module, - const SystemInfo *system_info) { - bool result = true; - string name = GetNameForModule(module); - string module_path = GetLocalModulePath(module); - NSString *symbol_path = [NSString stringWithFormat:@"/tmp/%s.%s.sym", - name.c_str(), system_info->cpu.c_str()]; - - if (module_path.empty()) - return false; - - // Check if there's already a symbol file cached. Ensure that the file is - // newer than the module. Otherwise, generate a new one. - BOOL generate_file = YES; - if ([[NSFileManager defaultManager] fileExistsAtPath:symbol_path]) { - // Check if the module file is newer than the saved symbols - float cache_time = - GetFileModificationTime([symbol_path fileSystemRepresentation]); - float module_time = - GetFileModificationTime(module_path.c_str()); - - if (cache_time > module_time) - generate_file = NO; - } - - if (generate_file) { - NSString *module_str = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:module_path.c_str() - length:module_path.length()]; - DumpSymbols *dump = [[DumpSymbols alloc] initWithContentsOfFile:module_str]; - const char *archStr = system_info->cpu.c_str(); - if ([dump setArchitecture:[NSString stringWithUTF8String:archStr]]) { - [dump writeSymbolFile:symbol_path]; - } else { - printf("Architecture %s not available for %s\n", archStr, name.c_str()); - result = false; - } - [dump release]; - } - - // Add the mapping - if (result) - module_file_map_[name] = [symbol_path fileSystemRepresentation]; - - return result; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.mode1v3 b/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.mode1v3 deleted file mode 100644 index bbe7c45e..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.mode1v3 +++ /dev/null @@ -1,1395 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - A1E1BA470F6AC023009B13EF - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - build-and-go - com.apple.ide.PBXToolbarStopButton - get-info - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - BecomeActive - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - 1C37FBAC04509CD000000102 - A1E1BA610F6AC2ED009B13EF - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 21 - 20 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 601}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 619}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 42 172 1152 660 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 203pt - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - dump_syms_tool.mm - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - dump_syms_tool.mm - _historyCapacity - 0 - bookmark - A1E1BA7C0F6AC47E009B13EF - history - - A1E1BA430F6AC023009B13EF - - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {944, 441}} - RubberWindowFrame - 42 172 1152 660 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 441pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 446}, {944, 173}} - RubberWindowFrame - 42 172 1152 660 0 0 1440 878 - - Module - XCDetailModule - Proportion - 173pt - - - Proportion - 944pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - A1E1BA450F6AC023009B13EF - 1CE0B1FE06471DED0097A5F4 - A1E1BA460F6AC023009B13EF - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - A1E1BA590F6AC157009B13EF - A1E1BA5A0F6AC157009B13EF - 1C78EAAD065D492600B07095 - 1CD10A99069EF8BA00B06720 - A1E1BA380F6ABEA8009B13EF - /Users/julienbachmann/Documents/development/breakpad/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj - - WindowString - 42 172 1152 660 0 0 1440 878 - WindowToolsV3 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {500, 218}} - RubberWindowFrame - 63 309 500 500 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 218pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{0, 223}, {500, 236}} - RubberWindowFrame - 63 309 500 500 0 0 1440 878 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 459pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - A1E1BA380F6ABEA8009B13EF - A1E1BA390F6ABEA8009B13EF - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowString - 63 309 500 500 0 0 1440 878 - WindowToolGUID - A1E1BA380F6ABEA8009B13EF - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debugger - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {316, 185}} - {{316, 0}, {378, 185}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 185}} - {{0, 185}, {694, 196}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 381}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 120 - Value - 85 - Summary - 148 - - Frame - {{316, 0}, {378, 185}} - RubberWindowFrame - 63 387 694 422 0 0 1440 878 - - RubberWindowFrame - 63 387 694 422 0 0 1440 878 - - Module - PBXDebugSessionModule - Proportion - 381pt - - - Proportion - 381pt - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - - TableOfContents - - 1CD10A99069EF8BA00B06720 - A1E1BA520F6AC157009B13EF - 1C162984064C10D400B95A72 - A1E1BA530F6AC157009B13EF - A1E1BA540F6AC157009B13EF - A1E1BA550F6AC157009B13EF - A1E1BA560F6AC157009B13EF - A1E1BA570F6AC157009B13EF - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 63 387 694 422 0 0 1440 878 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - MENUSEPARATOR - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debuggerConsole - IsVertical - - Layout - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {792, 524}} - RubberWindowFrame - -1040 93 792 565 -1680 -150 1680 1050 - - Module - PBXDebugCLIModule - Proportion - 524pt - - - Proportion - 524pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - - TableOfContents - - 1C78EAAD065D492600B07095 - A1E1BA580F6AC157009B13EF - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - -1040 93 792 565 -1680 -150 1680 1050 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.pbxuser b/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.pbxuser deleted file mode 100644 index 5c389b44..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/julienbachmann.pbxuser +++ /dev/null @@ -1,181 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = A1E1BA300F6ABE94009B13EF /* dump_syms */; - activeTarget = 8DD76F960486AA7600D96B5E /* dump_syms */; - breakpoints = ( - ); - codeSenseManager = A1E1BA3C0F6ABEB3009B13EF /* Code sense */; - executables = ( - A1E1BA300F6ABE94009B13EF /* dump_syms */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 22, - 300, - 593, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXExecutablesDataSource_ActiveFlagID, - PBXExecutablesDataSource_NameID, - PBXExecutablesDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 705, - 20, - 48.16259765625, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 16, - 200, - 50, - 645, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXSymbolsDataSource_SymbolTypeIconID, - PBXSymbolsDataSource_SymbolNameID, - PBXSymbolsDataSource_SymbolTypeID, - PBXSymbolsDataSource_ReferenceNameID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 665, - 60, - 20, - 48.16259765625, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 258653844; - PBXWorkspaceStateSaveDate = 258653844; - }; - perUserProjectItems = { - A1E1BA430F6AC023009B13EF /* PBXTextBookmark */ = A1E1BA430F6AC023009B13EF /* PBXTextBookmark */; - A1E1BA7C0F6AC47E009B13EF /* PBXTextBookmark */ = A1E1BA7C0F6AC47E009B13EF /* PBXTextBookmark */; - }; - sourceControlManager = A1E1BA3B0F6ABEB3009B13EF /* Source Control */; - userBuildSettings = { - }; - }; - 08FB7796FE84155DC02AAC07 /* dump_syms.mm */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1038, 17150}}"; - sepNavSelRange = "{1613, 0}"; - sepNavVisRange = "{42504, 964}"; - sepNavWindowFrame = "{{15, 58}, {750, 815}}"; - }; - }; - 8DD76F960486AA7600D96B5E /* dump_syms */ = { - activeExec = 0; - executables = ( - A1E1BA300F6ABE94009B13EF /* dump_syms */, - ); - }; - 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {883, 2002}}"; - sepNavSelRange = "{4828, 5}"; - sepNavVisRange = "{4210, 683}"; - }; - }; - A1E1BA300F6ABE94009B13EF /* dump_syms */ = { - isa = PBXExecutable; - activeArgIndices = ( - YES, - ); - argumentStrings = ( - "\"/Users/julienbachmann/Documents/development/crash test/CrashTest.app/Contents/MacOS/CrashTest\"", - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = dump_syms; - savedGlobals = { - }; - sourceDirectories = ( - ); - variableFormatDictionary = { - }; - }; - A1E1BA3B0F6ABEB3009B13EF /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - }; - A1E1BA3C0F6ABEB3009B13EF /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - A1E1BA430F6AC023009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */; - name = "dump_syms_tool.mm: 13"; - rLen = 0; - rLoc = 574; - rType = 0; - vrLen = 1633; - vrLoc = 0; - }; - A1E1BA7C0F6AC47E009B13EF /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */; - name = "dump_syms_tool.mm: 137"; - rLen = 5; - rLoc = 4828; - rType = 0; - vrLen = 683; - vrLoc = 4210; - }; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj deleted file mode 100644 index 6f22c0d0..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj +++ /dev/null @@ -1,280 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 5578008B0BE1F3AB00EC23E0 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 557800890BE1F3AB00EC23E0 /* macho_utilities.cc */; }; - 8DD76F9A0486AA7600D96B5E /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* dump_syms.mm */; settings = {ATTRIBUTES = (); }; }; - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; - 9BDF18700B1BB43700F8391B /* dump_syms_tool.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */; }; - 9BE650470B52F6D800611104 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650410B52F6D800611104 /* file_id.cc */; }; - 9BE650490B52F6D800611104 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650430B52F6D800611104 /* macho_id.cc */; }; - 9BE6504B0B52F6D800611104 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9BE650450B52F6D800611104 /* macho_walker.cc */; }; - F95B42320E0E22D100DBDE83 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422C0E0E22D100DBDE83 /* bytereader.cc */; }; - F95B42330E0E22D100DBDE83 /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */; }; - F9C7ED430E8AD93000E953AD /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C7ED420E8AD93000E953AD /* functioninfo.cc */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 08FB7796FE84155DC02AAC07 /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = ""; }; - 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 557800890BE1F3AB00EC23E0 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; }; - 5578008A0BE1F3AB00EC23E0 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; }; - 8DD76FA10486AA7600D96B5E /* dump_syms */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dump_syms; sourceTree = BUILT_PRODUCTS_DIR; }; - 9BDF186D0B1BB43700F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = ""; }; - 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dump_syms_tool.mm; sourceTree = ""; }; - 9BE650410B52F6D800611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; }; - 9BE650420B52F6D800611104 /* file_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = file_id.h; path = ../../../common/mac/file_id.h; sourceTree = SOURCE_ROOT; }; - 9BE650430B52F6D800611104 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; }; - 9BE650440B52F6D800611104 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; }; - 9BE650450B52F6D800611104 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; }; - 9BE650460B52F6D800611104 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; }; - F95B422B0E0E22D100DBDE83 /* bytereader-inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "bytereader-inl.h"; path = "../../../common/mac/dwarf/bytereader-inl.h"; sourceTree = SOURCE_ROOT; }; - F95B422C0E0E22D100DBDE83 /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/mac/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; }; - F95B422D0E0E22D100DBDE83 /* bytereader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bytereader.h; path = ../../../common/mac/dwarf/bytereader.h; sourceTree = SOURCE_ROOT; }; - F95B422E0E0E22D100DBDE83 /* dwarf2enums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2enums.h; path = ../../../common/mac/dwarf/dwarf2enums.h; sourceTree = SOURCE_ROOT; }; - F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/mac/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; }; - F95B42300E0E22D100DBDE83 /* dwarf2reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dwarf2reader.h; path = ../../../common/mac/dwarf/dwarf2reader.h; sourceTree = SOURCE_ROOT; }; - F95B42310E0E22D100DBDE83 /* line_state_machine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = line_state_machine.h; path = ../../../common/mac/dwarf/line_state_machine.h; sourceTree = SOURCE_ROOT; }; - F9C7ED420E8AD93000E953AD /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/mac/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; }; - F9F5344D0E7C902C0012363F /* functioninfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = functioninfo.h; path = ../../../common/mac/dwarf/functioninfo.h; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DD76F9B0486AA7600D96B5E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* dump_syms */ = { - isa = PBXGroup; - children = ( - F9F5344B0E7C8FFC0012363F /* DWARF */, - 557800890BE1F3AB00EC23E0 /* macho_utilities.cc */, - 5578008A0BE1F3AB00EC23E0 /* macho_utilities.h */, - 9BE650410B52F6D800611104 /* file_id.cc */, - 9BE650420B52F6D800611104 /* file_id.h */, - 9BE650430B52F6D800611104 /* macho_id.cc */, - 9BE650440B52F6D800611104 /* macho_id.h */, - 9BE650450B52F6D800611104 /* macho_walker.cc */, - 9BE650460B52F6D800611104 /* macho_walker.h */, - 9BDF186D0B1BB43700F8391B /* dump_syms.h */, - 08FB7796FE84155DC02AAC07 /* dump_syms.mm */, - 9BDF186E0B1BB43700F8391B /* dump_syms_tool.mm */, - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - ); - name = dump_syms; - sourceTree = ""; - }; - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 08FB779EFE84155DC02AAC07 /* Foundation.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8DD76FA10486AA7600D96B5E /* dump_syms */, - ); - name = Products; - sourceTree = ""; - }; - F9F5344B0E7C8FFC0012363F /* DWARF */ = { - isa = PBXGroup; - children = ( - F9C7ED420E8AD93000E953AD /* functioninfo.cc */, - F9F5344D0E7C902C0012363F /* functioninfo.h */, - F95B422E0E0E22D100DBDE83 /* dwarf2enums.h */, - F95B422F0E0E22D100DBDE83 /* dwarf2reader.cc */, - F95B42300E0E22D100DBDE83 /* dwarf2reader.h */, - F95B422D0E0E22D100DBDE83 /* bytereader.h */, - F95B422B0E0E22D100DBDE83 /* bytereader-inl.h */, - F95B422C0E0E22D100DBDE83 /* bytereader.cc */, - F95B42310E0E22D100DBDE83 /* line_state_machine.h */, - ); - name = DWARF; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8DD76F960486AA7600D96B5E /* dump_syms */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "dump_syms" */; - buildPhases = ( - 8DD76F990486AA7600D96B5E /* Sources */, - 8DD76F9B0486AA7600D96B5E /* Frameworks */, - 8DD76F9E0486AA7600D96B5E /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = dump_syms; - productInstallPath = "$(HOME)/bin"; - productName = dump_syms; - productReference = 8DD76FA10486AA7600D96B5E /* dump_syms */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */; - compatibilityVersion = "Xcode 2.4"; - hasScannedForEncodings = 1; - mainGroup = 08FB7794FE84155DC02AAC07 /* dump_syms */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8DD76F960486AA7600D96B5E /* dump_syms */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DD76F990486AA7600D96B5E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9A0486AA7600D96B5E /* dump_syms.mm in Sources */, - F9C7ED430E8AD93000E953AD /* functioninfo.cc in Sources */, - 9BDF18700B1BB43700F8391B /* dump_syms_tool.mm in Sources */, - 9BE650470B52F6D800611104 /* file_id.cc in Sources */, - 9BE650490B52F6D800611104 /* macho_id.cc in Sources */, - 9BE6504B0B52F6D800611104 /* macho_walker.cc in Sources */, - 5578008B0BE1F3AB00EC23E0 /* macho_utilities.cc in Sources */, - F95B42320E0E22D100DBDE83 /* bytereader.cc in Sources */, - F95B42330E0E22D100DBDE83 /* dwarf2reader.cc in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB927508733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEPLOYMENT_POSTPROCESSING = YES; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_C_LANGUAGE_STANDARD = "compiler-default"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - HEADER_SEARCH_PATHS = ( - "../../../**", - "$(inherited)", - ); - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = "-lcrypto"; - PRODUCT_NAME = dump_syms; - WARNING_CFLAGS = "-Wall"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 1DEB927608733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_CHAR_IS_UNSIGNED_CHAR = YES; - GCC_C_LANGUAGE_STANDARD = "compiler-default"; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - HEADER_SEARCH_PATHS = ( - "../../../**", - "$(inherited)", - ); - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = "-lcrypto"; - PRODUCT_NAME = dump_syms; - STRIP_STYLE = "non-global"; - WARNING_CFLAGS = "-Wall"; - ZERO_LINK = NO; - }; - name = Release; - }; - 1DEB927908733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - 1DEB927A08733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "dump_syms" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927508733DD40010E9CD /* Debug */, - 1DEB927608733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927908733DD40010E9CD /* Debug */, - 1DEB927A08733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.m b/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.m deleted file mode 100644 index 3729a8d5..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.m +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dump_syms_tool.m: Command line tool that uses the DumpSymbols class. -// TODO(waylonis): accept stdin - -#include -#include - -#include "dump_syms.h" -#include "common/mac/macho_utilities.h" - -typedef struct { - NSString *srcPath; - NSString *arch; - NSString *uuidStr; - BOOL result; -} Options; - -//============================================================================= -static void Start(Options *options) { - DumpSymbols *dump = [[DumpSymbols alloc] - initWithContentsOfFile:options->srcPath]; - - if (!dump) { - fprintf(stderr, "%s is not a valid Mach-o file\n", - [options->srcPath fileSystemRepresentation]); - options->result = NO; - return; - } - - if (![dump setArchitecture:options->arch]) { - fprintf(stderr, "Architecture: %s not available in %s\n", - [options->arch UTF8String], - [options->srcPath fileSystemRepresentation]); - options->result = NO; - return; - } - - options->result = [dump writeSymbolFile:@"-"]; -} - -//============================================================================= -static void Usage(int argc, const char *argv[]) { - fprintf(stderr, "Output a Breakpad symbol file from a Mach-o file.\n"); - fprintf(stderr, "Usage: %s [-a ppc|i386|x86] \n", - argv[0]); - fprintf(stderr, "\t-a: Architecture type [default: native]\n"); - fprintf(stderr, "\t-h: Usage\n"); - fprintf(stderr, "\t-?: Usage\n"); -} - -//============================================================================= -static void SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - const NXArchInfo *localArchInfo = NXGetLocalArchInfo(); - char ch; - - if (localArchInfo) { - if (localArchInfo->cputype & CPU_ARCH_ABI64) - options->arch = (localArchInfo->cputype == CPU_TYPE_POWERPC64) ? @"ppc64": - @"x86_64"; - else - options->arch = (localArchInfo->cputype == CPU_TYPE_POWERPC) ? @"ppc" : - @"x86"; - } - - while ((ch = getopt(argc, (char * const *)argv, "a:h?")) != -1) { - switch (ch) { - case 'a': - if (strcmp("ppc", optarg) == 0) - options->arch = @"ppc"; - else if (strcmp("x86", optarg) == 0 || strcmp("i386", optarg) == 0) - options->arch = @"x86"; - else if (strcmp("ppc64", optarg) == 0) - options->arch = @"ppc64"; - else if (strcmp("x86_64", optarg) == 0) - options->arch = @"x86_64"; - else { - fprintf(stderr, "%s: Invalid architecture: %s\n", argv[0], optarg); - Usage(argc, argv); - exit(1); - } - break; - case '?': - case 'h': - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 1) { - fprintf(stderr, "Must specify Mach-o file\n"); - Usage(argc, argv); - exit(1); - } - - options->srcPath = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:argv[optind] - length:strlen(argv[optind])]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - Options options; - - bzero(&options, sizeof(Options)); - SetupOptions(argc, argv, &options); - Start(&options); - - [pool release]; - - return !options.result; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.mm b/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.mm deleted file mode 100644 index 827cea41..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/dump_syms/dump_syms_tool.mm +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// dump_syms_tool.m: Command line tool that uses the DumpSymbols class. -// TODO(waylonis): accept stdin - -#include -#include - -#include "dump_syms.h" -#include "common/mac/macho_utilities.h" - -typedef struct { - NSString *srcPath; - NSString *arch; - NSString *uuidStr; - BOOL result; -} Options; - -//============================================================================= -static void Start(Options *options) { - DumpSymbols *dump = [[DumpSymbols alloc] - initWithContentsOfFile:options->srcPath]; - - if (!dump) { - fprintf(stderr, "%s is not a valid Mach-o file\n", - [options->srcPath fileSystemRepresentation]); - options->result = NO; - return; - } - - if (![dump setArchitecture:options->arch]) { - fprintf(stderr, "Architecture: %s not available in %s\n", - [options->arch UTF8String], - [options->srcPath fileSystemRepresentation]); - options->result = NO; - return; - } - - options->result = [dump writeSymbolFile:@"-"]; -} - -//============================================================================= -static void Usage(int argc, const char *argv[]) { - fprintf(stderr, "Output a Breakpad symbol file from a Mach-o file.\n"); - fprintf(stderr, "Usage: %s [-a ppc|i386|x86] \n", - argv[0]); - fprintf(stderr, "\t-a: Architecture type [default: native]\n"); - fprintf(stderr, "\t-h: Usage\n"); - fprintf(stderr, "\t-?: Usage\n"); -} - -//============================================================================= -static void SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - const NXArchInfo *localArchInfo = NXGetLocalArchInfo(); - signed char ch; - - if (localArchInfo) { - if (localArchInfo->cputype & CPU_ARCH_ABI64) - options->arch = (localArchInfo->cputype == CPU_TYPE_POWERPC64) ? @"ppc64": - @"x86_64"; - else - options->arch = (localArchInfo->cputype == CPU_TYPE_POWERPC) ? @"ppc" : - @"x86"; - } - - while ((ch = getopt(argc, (char * const *)argv, "a:h?")) != -1) { - switch (ch) { - case 'a': - if (strcmp("ppc", optarg) == 0) - options->arch = @"ppc"; - else if (strcmp("x86", optarg) == 0 || strcmp("i386", optarg) == 0) - options->arch = @"x86"; - else if (strcmp("ppc64", optarg) == 0) - options->arch = @"ppc64"; - else if (strcmp("x86_64", optarg) == 0) - options->arch = @"x86_64"; - else { - fprintf(stderr, "%s: Invalid architecture: %s\n", argv[0], optarg); - Usage(argc, argv); - exit(1); - } - break; - case '?': - case 'h': - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 1) { - fprintf(stderr, "Must specify Mach-o file\n"); - Usage(argc, argv); - exit(1); - } - - options->srcPath = [[NSFileManager defaultManager] - stringWithFileSystemRepresentation:argv[optind] - length:strlen(argv[optind])]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - Options options; - - bzero(&options, sizeof(Options)); - SetupOptions(argc, argv, &options); - Start(&options); - - [pool release]; - - return !options.result; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/minidump_upload.m b/thirdparty/google-breakpad/r318/src/tools/mac/symupload/minidump_upload.m deleted file mode 100644 index 4f9d8c7a..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/minidump_upload.m +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// minidump_upload.m: Upload a minidump to a HTTP server. The upload is sent as -// a multipart/form-data POST request with the following parameters: -// prod: the product name -// ver: the product version -// symbol_file: the breakpad format symbol file - -#import - -#import - -#import "common/mac/HTTPMultipartUpload.h" - -typedef struct { - NSString *minidumpPath; - NSString *uploadURLStr; - NSString *product; - NSString *version; - BOOL success; -} Options; - -//============================================================================= -static void Start(Options *options) { - NSURL *url = [NSURL URLWithString:options->uploadURLStr]; - HTTPMultipartUpload *ul = [[HTTPMultipartUpload alloc] initWithURL:url]; - NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - - // Add parameters - [parameters setObject:options->product forKey:@"prod"]; - [parameters setObject:options->version forKey:@"ver"]; - [ul setParameters:parameters]; - - // Add file - [ul addFileAtPath:options->minidumpPath name:@"upload_file_minidump"]; - - // Send it - NSError *error = nil; - NSData *data = [ul send:&error]; - NSString *result = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; - - NSLog(@"Send: %@", error ? [error description] : @"No Error"); - NSLog(@"Response: %d", [[ul response] statusCode]); - NSLog(@"Result: %d bytes\n%@", [data length], result); - - [result release]; - [ul release]; - options->success = !error; -} - -//============================================================================= -static void -Usage(int argc, const char *argv[]) { - fprintf(stderr, "Submit minidump information.\n"); - fprintf(stderr, "Usage: %s -p -v " - "\n", argv[0]); - fprintf(stderr, " should be a minidump.\n"); - fprintf(stderr, " is the destination for the upload\n"); - - fprintf(stderr, "\t-h: Usage\n"); - fprintf(stderr, "\t-?: Usage\n"); -} - -//============================================================================= -static void -SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - char ch; - - while ((ch = getopt(argc, (char * const *)argv, "p:v:h?")) != -1) { - switch (ch) { - case 'p': - options->product = [NSString stringWithCString:optarg]; - break; - case 'v': - options->version = [NSString stringWithCString:optarg]; - break; - - default: - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 2) { - fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]); - Usage(argc, argv); - exit(1); - } - - options->minidumpPath = [NSString stringWithCString:argv[optind]]; - options->uploadURLStr = [NSString stringWithCString:argv[optind + 1]]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - Options options; - - bzero(&options, sizeof(Options)); - SetupOptions(argc, argv, &options); - Start(&options); - - [pool release]; - return options.success ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.m b/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.m deleted file mode 100644 index d4a30150..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.m +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// symupload.m: Upload a symbol file to a HTTP server. The upload is sent as -// a multipart/form-data POST request with the following parameters: -// code_file: the basename of the module, e.g. "app" -// debug_file: the basename of the debugging file, e.g. "app" -// debug_identifier: the debug file's identifier, usually consisting of -// the guid and age embedded in the pdb, e.g. -// "11111111BBBB3333DDDD555555555555F" -// os: the operating system that the module was built for -// cpu: the CPU that the module was built for (x86 or ppc) -// symbol_file: the contents of the breakpad-format symbol file - -#include - -#include -#include "HTTPMultipartUpload.h" - -typedef struct { - NSString *symbolsPath; - NSString *uploadURLStr; - BOOL success; -} Options; - -//============================================================================= -static NSArray *ModuleDataForSymbolFile(NSString *file) { - NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:file]; - NSData *data = [fh readDataOfLength:1024]; - NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - NSScanner *scanner = [NSScanner scannerWithString:str]; - NSString *line; - NSMutableArray *parts = nil; - const int MODULE_ID_INDEX = 3; - - if ([scanner scanUpToString:@"\n" intoString:&line]) { - parts = [[NSMutableArray alloc] init]; - NSScanner *moduleInfoScanner = [NSScanner scannerWithString:line]; - NSString *moduleInfo; - // Get everything BEFORE the module name. None of these properties - // can have spaces. - for (int i = 0; i <= MODULE_ID_INDEX; i++) { - [moduleInfoScanner scanUpToString:@" " intoString:&moduleInfo]; - [parts addObject:moduleInfo]; - } - - // Now get the module name. This can have a space so we scan to - // the end of the line. - [moduleInfoScanner scanUpToString:@"\n" intoString:&moduleInfo]; - [parts addObject:moduleInfo]; - } - - [str release]; - - return parts; -} - -//============================================================================= -static NSString *CompactIdentifier(NSString *uuid) { - NSMutableString *str = [NSMutableString stringWithString:uuid]; - [str replaceOccurrencesOfString:@"-" withString:@"" options:0 - range:NSMakeRange(0, [str length])]; - - return str; -} - -//============================================================================= -static void Start(Options *options) { - NSURL *url = [NSURL URLWithString:options->uploadURLStr]; - HTTPMultipartUpload *ul = [[HTTPMultipartUpload alloc] initWithURL:url]; - NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; - NSArray *moduleParts = ModuleDataForSymbolFile(options->symbolsPath); - NSMutableString *compactedID = - [NSMutableString stringWithString:[moduleParts objectAtIndex:3]]; - [compactedID replaceOccurrencesOfString:@"-" withString:@"" options:0 - range:NSMakeRange(0, [compactedID length])]; - - // Add parameters - [parameters setObject:compactedID forKey:@"debug_identifier"]; - - // MODULE - // 0 1 2 3 4 - [parameters setObject:[moduleParts objectAtIndex:1] forKey:@"os"]; - [parameters setObject:[moduleParts objectAtIndex:2] forKey:@"cpu"]; - [parameters setObject:[moduleParts objectAtIndex:4] forKey:@"debug_file"]; - [parameters setObject:[moduleParts objectAtIndex:4] forKey:@"code_file"]; - [ul setParameters:parameters]; - - NSArray *keys = [parameters allKeys]; - int count = [keys count]; - for (int i = 0; i < count; ++i) { - NSString *key = [keys objectAtIndex:i]; - NSString *value = [parameters objectForKey:key]; - fprintf(stdout, "'%s' = '%s'\n", [key UTF8String], - [value UTF8String]); - } - - // Add file - [ul addFileAtPath:options->symbolsPath name:@"symbol_file"]; - - // Send it - NSError *error = nil; - NSData *data = [ul send:&error]; - NSString *result = [[NSString alloc] initWithData:data - encoding:NSUTF8StringEncoding]; - - fprintf(stdout, "Send: %s\n", error ? [[error description] UTF8String] : - "No Error"); - fprintf(stdout, "Response: %d\n", [[ul response] statusCode]); - fprintf(stdout, "Result: %d bytes\n%s\n", [data length], [result UTF8String]); - - [result release]; - [ul release]; - options->success = !error; -} - -//============================================================================= -static void -Usage(int argc, const char *argv[]) { - fprintf(stderr, "Submit symbol information.\n"); - fprintf(stderr, "Usage: %s \n", argv[0]); - fprintf(stderr, " should be created by using the dump_syms tool.\n"); - fprintf(stderr, " is the destination for the upload\n"); - fprintf(stderr, "\t-h: Usage\n"); - fprintf(stderr, "\t-?: Usage\n"); -} - -//============================================================================= -static void -SetupOptions(int argc, const char *argv[], Options *options) { - extern int optind; - char ch; - - while ((ch = getopt(argc, (char * const *)argv, "h?")) != -1) { - switch (ch) { - default: - Usage(argc, argv); - exit(0); - break; - } - } - - if ((argc - optind) != 2) { - fprintf(stderr, "%s: Missing symbols file and/or upload-URL\n", argv[0]); - Usage(argc, argv); - exit(1); - } - - options->symbolsPath = [NSString stringWithCString:argv[optind]]; - options->uploadURLStr = [NSString stringWithCString:argv[optind + 1]]; -} - -//============================================================================= -int main (int argc, const char * argv[]) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - Options options; - - bzero(&options, sizeof(Options)); - SetupOptions(argc, argv, &options); - Start(&options); - - [pool release]; - return options.success ? 0 : 1; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj b/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj deleted file mode 100644 index d2f4a1ca..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj +++ /dev/null @@ -1,303 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - 8DD76F9A0486AA7600D96B5E /* symupload.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* symupload.m */; settings = {ATTRIBUTES = (); }; }; - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; - 9BC1D49E0B37427A00F2A2B4 /* minidump_upload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD836000B0544BA0055103E /* minidump_upload.m */; }; - 9BD8336A0B03E4080055103E /* HTTPMultipartUpload.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9BD833680B03E4080055103E /* HTTPMultipartUpload.h */; }; - 9BD8336B0B03E4080055103E /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */; }; - 9BD836180B0549F70055103E /* HTTPMultipartUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 8; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - 9BD8336A0B03E4080055103E /* HTTPMultipartUpload.h in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 08FB7796FE84155DC02AAC07 /* symupload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = symupload.m; sourceTree = ""; }; - 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8DD76FA10486AA7600D96B5E /* symupload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = symupload; sourceTree = BUILT_PRODUCTS_DIR; }; - 9BD833680B03E4080055103E /* HTTPMultipartUpload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPMultipartUpload.h; path = ../../../common/mac/HTTPMultipartUpload.h; sourceTree = ""; }; - 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTTPMultipartUpload.m; path = ../../../common/mac/HTTPMultipartUpload.m; sourceTree = ""; }; - 9BD835FB0B0544950055103E /* minidump_upload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidump_upload; sourceTree = BUILT_PRODUCTS_DIR; }; - 9BD836000B0544BA0055103E /* minidump_upload.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = minidump_upload.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DD76F9B0486AA7600D96B5E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9BD835F90B0544950055103E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 08FB7794FE84155DC02AAC07 /* symupload */ = { - isa = PBXGroup; - children = ( - 08FB7796FE84155DC02AAC07 /* symupload.m */, - 9BD836000B0544BA0055103E /* minidump_upload.m */, - 9BD833680B03E4080055103E /* HTTPMultipartUpload.h */, - 9BD833690B03E4080055103E /* HTTPMultipartUpload.m */, - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - ); - name = symupload; - sourceTree = ""; - }; - 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 08FB779EFE84155DC02AAC07 /* Foundation.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8DD76FA10486AA7600D96B5E /* symupload */, - 9BD835FB0B0544950055103E /* minidump_upload */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8DD76F960486AA7600D96B5E /* symupload */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "symupload" */; - buildPhases = ( - 8DD76F990486AA7600D96B5E /* Sources */, - 8DD76F9B0486AA7600D96B5E /* Frameworks */, - 8DD76F9E0486AA7600D96B5E /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = symupload; - productInstallPath = "$(HOME)/bin"; - productName = symupload; - productReference = 8DD76FA10486AA7600D96B5E /* symupload */; - productType = "com.apple.product-type.tool"; - }; - 9BD835FA0B0544950055103E /* minidump_upload */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9BD836020B0544BB0055103E /* Build configuration list for PBXNativeTarget "minidump_upload" */; - buildPhases = ( - 9BD835F80B0544950055103E /* Sources */, - 9BD835F90B0544950055103E /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = minidump_upload; - productName = minidump_upload; - productReference = 9BD835FB0B0544950055103E /* minidump_upload */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "symupload" */; - hasScannedForEncodings = 1; - mainGroup = 08FB7794FE84155DC02AAC07 /* symupload */; - projectDirPath = ""; - targets = ( - 8DD76F960486AA7600D96B5E /* symupload */, - 9BD835FA0B0544950055103E /* minidump_upload */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DD76F990486AA7600D96B5E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DD76F9A0486AA7600D96B5E /* symupload.m in Sources */, - 9BD8336B0B03E4080055103E /* HTTPMultipartUpload.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9BD835F80B0544950055103E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9BD836180B0549F70055103E /* HTTPMultipartUpload.m in Sources */, - 9BC1D49E0B37427A00F2A2B4 /* minidump_upload.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB927508733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - INSTALL_PATH = "$(HOME)/bin"; - PRODUCT_NAME = symupload; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 1DEB927608733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - ppc, - i386, - ); - GCC_C_LANGUAGE_STANDARD = c99; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - INSTALL_PATH = "$(HOME)/bin"; - PRODUCT_NAME = symupload; - USER_HEADER_SEARCH_PATHS = "../../../** $(inherited)"; - ZERO_LINK = NO; - }; - name = Release; - }; - 1DEB927908733DD40010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Debug; - }; - 1DEB927A08733DD40010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Release; - }; - 9BD836030B0544BB0055103E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = ( - "-framework", - Foundation, - "-framework", - AppKit, - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_upload; - USER_HEADER_SEARCH_PATHS = "../../../**"; - ZERO_LINK = NO; - }; - name = Debug; - }; - 9BD836040B0544BB0055103E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; - INSTALL_PATH = "$(HOME)/bin"; - OTHER_LDFLAGS = ( - "-framework", - Foundation, - "-framework", - AppKit, - ); - PREBINDING = NO; - PRODUCT_NAME = minidump_upload; - USER_HEADER_SEARCH_PATHS = "../../../**"; - ZERO_LINK = NO; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "symupload" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927508733DD40010E9CD /* Debug */, - 1DEB927608733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "symupload" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB927908733DD40010E9CD /* Debug */, - 1DEB927A08733DD40010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9BD836020B0544BB0055103E /* Build configuration list for PBXNativeTarget "minidump_upload" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 9BD836030B0544BB0055103E /* Debug */, - 9BD836040B0544BB0055103E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/Makefile b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/Makefile deleted file mode 100644 index f0a4c11a..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2007, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -# Author: Alfred Peng - -CXX=CC -CC=cc - -CXXFLAGS=-g -xs -xdebugformat=stabs -I../../.. -I../../../common/solaris -lelf -ldemangle -D_REENTRANT - -.PHONY:all clean - -BIN=dump_syms - -all:$(BIN) - -DUMP_OBJ=dump_symbols.o guid_creator.o dump_syms.o file_id.o md5.o - -dump_syms:$(DUMP_OBJ) - $(CXX) $(CXXFLAGS) -o $@ $^ - -dump_symbols.o:../../../common/solaris/dump_symbols.cc - $(CXX) $(CXXFLAGS) -c $^ - -guid_creator.o:../../../common/solaris/guid_creator.cc - $(CXX) $(CXXFLAGS) -c $^ - -file_id.o:../../../common/solaris/file_id.cc - $(CXX) $(CXXFLAGS) -c $^ - -md5.o:../../../common/md5.c - $(CC) $(CXXFLAGS) -c $^ - -test:all - ./run_regtest.sh - -clean: - rm -f $(BIN) $(DUMP_OBJ) diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/dump_syms.cc b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/dump_syms.cc deleted file mode 100644 index 54cea57e..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/dump_syms.cc +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Author: Alfred Peng - -#include -#include - -#include "common/solaris/dump_symbols.h" - -using namespace google_breakpad; - -int main(int argc, char **argv) { - if (argc != 2) { - fprintf(stderr, "Usage: %s \n", argv[0]); - return 1; - } - - const char *binary = argv[1]; - - DumpSymbols dumper; - if (!dumper.WriteSymbolFile(binary, fileno(stdout))) { - fprintf(stderr, "Failed to write symbol file.\n"); - return 1; - } - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/run_regtest.sh b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/run_regtest.sh deleted file mode 100644 index ffb34330..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/run_regtest.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2007, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -./dump_syms testdata/dump_syms_regtest.o > testdata/dump_syms_regtest.new -status=$? - -if [ $status -ne 0 ] ; then - echo "FAIL, dump_syms failed" - exit $status -fi - -diff -u testdata/dump_syms_regtest.new testdata/dump_syms_regtest.sym > \ - testdata/dump_syms_regtest.diff -status=$? - -if [ $status -eq 0 ] ; then - rm testdata/dump_syms_regtest.diff testdata/dump_syms_regtest.new - echo "PASS" -else - echo "FAIL, see testdata/dump_syms_regtest.[new|diff]" -fi - -exit $status diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc deleted file mode 100644 index e617a23b..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.cc +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// ./dump_syms dump_syms_regtest.pdb > dump_syms_regtest.sym - -namespace google_breakpad { - -class C { - public: - C() : member_(1) {} - virtual ~C() {} - - void set_member(int value) { member_ = value; } - int member() const { return member_; } - - void f() { member_ = g(); } - virtual int g() { return 2; } - static char* h(const C &that) { return 0; } - - private: - int member_; -}; - -static int i() { - return 3; -} - -} // namespace google_breakpad - -int main(int argc, char **argv) { - google_breakpad::C object; - object.set_member(google_breakpad::i()); - object.f(); - int value = object.g(); - char *nothing = object.h(object); - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs deleted file mode 100644 index c5f93ef7..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.stabs +++ /dev/null @@ -1,129 +0,0 @@ - - -Debugging Stab table -- 104 entries - - 0: .stabs "dump_syms_regtest.cc",N_UNDF,0x0,0x67,0x71c - 1: .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/",N_SO,0x0,0x0,0x0 - 2: .stabs "dump_syms_regtest.cc",N_SO,0x0,0x4,0x0 - 3: .stabs "",N_OBJ,0x0,0x0,0x0 - 4: .stabs "",N_OBJ,0x0,0x0,0x0 - 5: .stabs "V=9.0;DBG_GEN=5.0.8;dm;cd;backend;ptf;ptx;ptk;s;g;R=5.8<>;G=.XAB6Z2hOiL$Gl1b.;A=2",N_OPT,0x0,0x0,0x46fcb88e - 6: .stabs "dump_syms_regtest.cc",N_SOL,0x0,0x0,0x0 - 7: .stabs "char:t(0,1)=bsc1;0;8",N_ISYM,0x0,0x0,0x0 - 8: .stabs "short:t(0,2)=bs2;0;16",N_ISYM,0x0,0x0,0x0 - 9: .stabs "int:t(0,3)=bs4;0;32",N_ISYM,0x0,0x0,0x0 - 10: .stabs "long:t(0,4)=bs4;0;32",N_ISYM,0x0,0x0,0x0 - 11: .stabs "long long:t(0,5)=bs8;0;64",N_ISYM,0x0,0x0,0x0 - 12: .stabs "unsigned char:t(0,6)=buc1;0;8",N_ISYM,0x0,0x0,0x0 - 13: .stabs "unsigned short:t(0,7)=bu2;0;16",N_ISYM,0x0,0x0,0x0 - 14: .stabs "unsigned:t(0,8)=bu4;0;32",N_ISYM,0x0,0x0,0x0 - 15: .stabs "unsigned long:t(0,9)=bu4;0;32",N_ISYM,0x0,0x0,0x0 - 16: .stabs "unsigned long long:t(0,10)=bu8;0;64",N_ISYM,0x0,0x0,0x0 - 17: .stabs "signed char:t(0,11)=bsc1;0;8",N_ISYM,0x0,0x0,0x0 - 18: .stabs "wchar_t:t(0,12)=buc4;0;32",N_ISYM,0x0,0x0,0x0 - 19: .stabs "void:t(0,13)=bs0;0;0",N_ISYM,0x0,0x0,0x0 - 20: .stabs "float:t(0,14)=R1;4",N_ISYM,0x0,0x0,0x0 - 21: .stabs "double:t(0,15)=R2;8",N_ISYM,0x0,0x0,0x0 - 22: .stabs "long double:t(0,16)=R6;12",N_ISYM,0x0,0x0,0x0 - 23: .stabs "...:t(0,17)=buv4;0;32",N_ISYM,0x0,0x0,0x0 - 24: .stabs "bool:t(0,18)=bub1;0;8",N_ISYM,0x0,0x0,0x0 - 25: .stabs "__1nPgoogle_breakpad_:T(0,19)=Yn0google_breakpad;",N_ISYM,0x0,0x0,0x0 - 26: .stabs "nBC(0,19):U(0,20)",N_ESYM,0x0,0x0,0x0 - 27: .stabs "nBC(0,19):T(0,20)=Yc8C;;AcHmember_:(0,3),32,32;;Cc2t6M_v K2c2T6M_v CcKset_member6Mi_v CcGmember6kM_i CcBf6M_v K3cBg6M_i GcBh6Frk1_pc;;;2 0;;;;110;",N_ESYM,0x0,0x8,0x0 - 28: .stabs "main:F(0,3);(0,3);(0,21)=*(0,22)=*(0,1)",N_FUN,0x0,0x38,0x0 - 29: .stabs "main",N_MAIN,0x0,0x0,0x0 - 30: .stabs "argc:p(0,3)",N_PSYM,0x0,0x4,0x8 - 31: .stabs "argv:p(0,21)",N_PSYM,0x0,0x4,0xc - 32: .stabn N_LBRAC,0x0,0x1,0x12 - 33: .stabs "object:(0,20)",N_LSYM,0x0,0x8,0xfffffff4 - 34: .stabs "value:(0,3)",N_LSYM,0x0,0x4,0xfffffff0 - 35: .stabs "nothing:(0,22)",N_LSYM,0x0,0x4,0xffffffec - 36: .stabn N_SLINE,0x0,0x39,0x12 - 37: .stabs "object:2",N_CONSTRUCT,0x0,0xc,0x12 - 38: .stabn N_SLINE,0x2,0x3a,0x1e - 39: .stabn N_SLINE,0x0,0x3b,0x36 - 40: .stabn N_SLINE,0x0,0x3c,0x42 - 41: .stabn N_SLINE,0x0,0x3d,0x57 - 42: .stabn N_SLINE,0x0,0x3f,0x6c - 43: .stabs "2:0",N_DESTRUCT,0x0,0xc,0x73 - 44: .stabn N_SLINE,0xfffffffe,0x40,0x9c - 45: .stabn N_RBRAC,0x0,0x1,0x9c - 46: .stabs "__1cPgoogle_breakpadBi6F_i_:f(0,3)",N_FUN,0x0,0x32,0x0 - 47: .stabn N_LBRAC,0x0,0x1,0x6 - 48: .stabn N_SLINE,0x0,0x33,0x6 - 49: .stabn N_SLINE,0x0,0x34,0x10 - 50: .stabn N_RBRAC,0x0,0x1,0x10 - 51: .stabs "__1cPgoogle_breakpadBC2t6M_v_:F(0,13);(0,23)=*(0,20)",N_FUN,0x0,0x24,0x0 - 52: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 53: .stabn N_LBRAC,0x0,0x1,0x3 - 54: .stabn N_SLINE,0x0,0x24,0x25 - 55: .stabn N_RBRAC,0x0,0x1,0x25 - 56: .stabs "__1cPgoogle_breakpadBC2T6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x25,0x0 - 57: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 58: .stabn N_LBRAC,0x0,0x1,0x3 - 59: .stabn N_SLINE,0x0,0x25,0x3 - 60: .stabn N_RBRAC,0x0,0x1,0x3 - 61: .stabs "__1cPgoogle_breakpadBCKset_member6Mi_v_:F(0,13);(0,23);(0,3)",N_FUN,0x0,0x27,0x0 - 62: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 63: .stabs "value:p(0,3)",N_PSYM,0x0,0x4,0xc - 64: .stabn N_LBRAC,0x0,0x1,0x3 - 65: .stabn N_SLINE,0x0,0x27,0x3 - 66: .stabn N_SLINE,0x0,0x27,0xc - 67: .stabn N_RBRAC,0x0,0x1,0xc - 68: .stabs "__1cPgoogle_breakpadBCBf6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x2a,0x0 - 69: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 70: .stabn N_LBRAC,0x0,0x1,0x3 - 71: .stabn N_SLINE,0x0,0x2a,0x3 - 72: .stabn N_SLINE,0x0,0x2a,0x1d - 73: .stabn N_RBRAC,0x0,0x1,0x1d - 74: .stabs "__1cPgoogle_breakpadBCBg6M_i_:F(0,3);(0,23)",N_FUN,0x0,0x2b,0x0 - 75: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 76: .stabn N_LBRAC,0x0,0x1,0x6 - 77: .stabn N_SLINE,0x0,0x2b,0x6 - 78: .stabn N_SLINE,0x0,0x2b,0x10 - 79: .stabn N_RBRAC,0x0,0x1,0x10 - 80: .stabs "__1cPgoogle_breakpadBCBh6Frk1_pc_:F(0,22);(0,24)=&(0,25)=k(0,20)",N_FUN,0x0,0x2c,0x0 - 81: .stabs "that:p(0,24)",N_PSYM,0x0,0x4,0x8 - 82: .stabn N_LBRAC,0x0,0x1,0x6 - 83: .stabn N_SLINE,0x0,0x2c,0x6 - 84: .stabn N_SLINE,0x0,0x2c,0x10 - 85: .stabn N_RBRAC,0x0,0x1,0x10 - 86: .stabs "__1cPgoogle_breakpadBC2T5B6M_v_:F(0,13);(0,23)",N_FUN,0x0,0x25,0x0 - 87: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 88: .stabn N_LBRAC,0x0,0x1,0x3 - 89: .stabn N_SLINE,0x0,0x25,0xf - 90: .stabn N_RBRAC,0x0,0x1,0xf - 91: .stabs "__SLIP.DELETER__A:f(0,13);(0,23);(0,3)",N_FUN,0x0,0x25,0x0 - 92: .stabs "this:p(0,23)",N_PSYM,0x0,0x4,0x8 - 93: .stabs "delete:p(0,3)",N_PSYM,0x0,0x4,0xc - 94: .stabn N_LBRAC,0x0,0x1,0x3 - 95: .stabn N_LBRAC,0x0,0x2,0x3 - 96: .stabn N_RBRAC,0x0,0x2,0x28 - 97: .stabn N_RBRAC,0x0,0x1,0x28 - 98: .stabs "true:l(0,18);1",N_LSYM,0x0,0x4,0x0 - 99: .stabs "false:l(0,18);0",N_LSYM,0x0,0x4,0x0 - 100: .stabs "__1c2k6Fpv_v_:P(0,13);(0,26)=*(0,13)",N_FUN,0x0,0x0,0x0 - 101: .stabs "__1cPgoogle_breakpadBC2t5B6M_v_:F__1cPgoogle_breakpadBC2t6M_v_",N_ALIAS,0x0,0x0,0x0 - 102: .stabs "cbD__RTTI__1nPgoogle_breakpadBC_(0,19):YR(0,20)",N_LSYM,0x0,0x0,0x0 - 103: .stabn N_ENDM,0x0,0x0,0x0 - - -Index Stab table -- 17 entries - - 0: .stabs "dump_syms_regtest.cc",N_UNDF,0x0,0x10,0x3b1 - 1: .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/",N_SO,0x0,0x0,0x0 - 2: .stabs "dump_syms_regtest.cc",N_SO,0x0,0x4,0x0 - 3: .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata",N_OBJ,0x0,0x0,0x0 - 4: .stabs "dump_syms_regtest.o",N_OBJ,0x0,0x0,0x0 - 5: .stabs "V=9.0;DBG_GEN=5.0.8;dm;cd;backend;ptf;ptx;ptk;s;g;R=5.8<>;G=.XAB6Z2hOiL$Gl1b.;A=2",N_OPT,0x0,0x0,0x46fcb88e - 6: .stabs "/export/home/alfred/cvs/breakpad/google-breakpad20070927/src/tools/solaris/dump_syms/testdata/; /ws/on10-tools-prc/SUNWspro/SS11/prod/bin/CC -g -xs -xdebugformat=stabs -I../../.. -I../../../common/solaris -D_REENTRANT -xs dump_syms_regtest.cc -Qoption ccfe -prefix -Qoption ccfe .XAB6Z2hOiL\$Gl1b.",N_CMDLINE,0x0,0x0,0x0 - 7: .stabs "__1nPgoogle_breakpadBC_:U",N_ESYM,0x0,0x0,0x0 - 8: .stabs "main",N_MAIN,0x0,0x0,0x0 - 9: .stabs "main",N_FUN,0x0,0x0,0x0 - 10: .stabs "__1cPgoogle_breakpadBC2t6M_v_",N_FUN,0x0,0x0,0x0 - 11: .stabs "__1cPgoogle_breakpadBC2T6M_v_",N_FUN,0x0,0x0,0x0 - 12: .stabs "__1cPgoogle_breakpadBCKset_member6Mi_v_",N_FUN,0x0,0x0,0x0 - 13: .stabs "__1cPgoogle_breakpadBCBf6M_v_",N_FUN,0x0,0x0,0x0 - 14: .stabs "__1cPgoogle_breakpadBCBg6M_i_",N_FUN,0x0,0x0,0x0 - 15: .stabs "__1cPgoogle_breakpadBCBh6Frk1_pc_",N_FUN,0x0,0x0,0x0 - 16: .stabs "__1cPgoogle_breakpadBC2T5B6M_v_",N_FUN,0x0,0x0,0x0 diff --git a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym b/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym deleted file mode 100644 index 44d3c539..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym +++ /dev/null @@ -1,33 +0,0 @@ -MODULE solaris x86 3DC8191474338D8587339B5FB3E2C62A0 dump_syms_regtest.o -FILE 0 dump_syms_regtest.cc -FUNC 0 156 0 main -12 18 57 0 -1e 12 58 0 -36 24 59 0 -42 12 60 0 -57 21 61 0 -6c 21 63 0 -9c 48 64 0 -FUNC 0 16 0 int google_breakpad::i() -6 6 51 0 -10 10 52 0 -FUNC 0 37 0 google_breakpad::C::C() -25 37 36 0 -FUNC 0 3 0 google_breakpad::C::~C() -3 3 37 0 -FUNC 0 12 0 void google_breakpad::C::set_member(int) -3 3 39 0 -c 9 39 0 -FUNC 0 29 0 void google_breakpad::C::f() -3 3 42 0 -1d 26 42 0 -FUNC 0 16 0 int google_breakpad::C::g() -6 6 43 0 -10 10 43 0 -FUNC 0 16 0 char*google_breakpad::C::h(const google_breakpad::C&) -6 6 44 0 -10 10 44 0 -FUNC 0 15 0 google_breakpad::C::~C #Nvariant 1() -f 15 37 0 -FUNC 0 0 0 __SLIP.DELETER__A -FUNC 0 0 0 void operator delete(void*) diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.cc b/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.cc deleted file mode 100644 index 2b6278ba..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.cc +++ /dev/null @@ -1,522 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// ms_symbol_server_converter.cc: Obtain symbol files from a Microsoft -// symbol server, and convert them to Breakpad's dumped format. -// -// See ms_symbol_server_converter.h for documentation. -// -// Author: Mark Mentovai - -#include -#include - -#include -#include - -#include "tools/windows/converter/ms_symbol_server_converter.h" -#include "common/windows/pdb_source_line_writer.h" -#include "common/windows/string_utils-inl.h" - -// SYMOPT_NO_PROMPTS is not defined in earlier platform SDKs. Define it -// in that case, in the event that this code is used with a newer version -// of DbgHelp at runtime that recognizes the option. The presence of this -// bit in the symbol options should not harm earlier versions of DbgHelp. -#ifndef SYMOPT_NO_PROMPTS -#define SYMOPT_NO_PROMPTS 0x00080000 -#endif // SYMOPT_NO_PROMPTS - -namespace google_breakpad { - -// Use sscanf_s if it is available, to quench the warning about scanf being -// deprecated. Use scanf where sscanf_is not available. Note that the -// parameters passed to sscanf and sscanf_s are only compatible as long as -// fields of type c, C, s, S, and [ are not used. -#if _MSC_VER >= 1400 // MSVC 2005/8 -#define SSCANF sscanf_s -#else // _MSC_VER >= 1400 -#define SSCANF sscanf -#endif // _MSC_VER >= 1400 - -bool GUIDOrSignatureIdentifier::InitializeFromString( - const string &identifier) { - type_ = TYPE_NONE; - - size_t length = identifier.length(); - - if (length > 32 && length <= 40) { - // GUID - if (SSCANF(identifier.c_str(), - "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%X", - &guid_.Data1, &guid_.Data2, &guid_.Data3, - &guid_.Data4[0], &guid_.Data4[1], - &guid_.Data4[2], &guid_.Data4[3], - &guid_.Data4[4], &guid_.Data4[5], - &guid_.Data4[6], &guid_.Data4[7], - &age_) != 12) { - return false; - } - - type_ = TYPE_GUID; - } else if (length > 8 && length <= 15) { - // Signature - if (SSCANF(identifier.c_str(), "%08X%x", &signature_, &age_) != 2) { - return false; - } - - type_ = TYPE_SIGNATURE; - } else { - return false; - } - - return true; -} - -#undef SSCANF - -MSSymbolServerConverter::MSSymbolServerConverter( - const string &local_cache, const vector &symbol_servers) - : symbol_path_(), - fail_dns_(false), - fail_timeout_(false), - fail_not_found_(false) { - // Setting local_cache can be done without verifying that it exists because - // SymSrv will create it if it is missing - any creation failures will occur - // at that time, so there's nothing to check here, making it safe to - // assign this in the constructor. - - assert(symbol_servers.size() > 0); - - // These are characters that are interpreted as having special meanings in - // symbol_path_. - const char *kInvalidCharacters = "*;"; - assert(local_cache.find_first_of(kInvalidCharacters) == string::npos); - - for (vector::const_iterator symbol_server = symbol_servers.begin(); - symbol_server != symbol_servers.end(); - ++symbol_server) { - // The symbol path format is explained by - // http://msdn.microsoft.com/library/en-us/debug/base/using_symsrv.asp . - // "srv*" is the same as "symsrv*symsrv.dll*", which means that - // symsrv.dll is to be responsible for locating symbols. symsrv.dll - // interprets the rest of the string as a series of symbol stores separated - // by '*'. "srv*local_cache*symbol_server" means to check local_cache - // first for the symbol file, and if it is not found there, to check - // symbol_server. Symbol files found on the symbol server will be placed - // in the local cache, decompressed. - // - // Multiple specifications in this format may be presented, separated by - // semicolons. - - assert((*symbol_server).find_first_of(kInvalidCharacters) == string::npos); - symbol_path_ += "srv*" + local_cache + "*" + *symbol_server + ";"; - } - - // Strip the trailing semicolon. - symbol_path_.erase(symbol_path_.length() - 1); -} - -// A stack-based class that manages SymInitialize and SymCleanup calls. -class AutoSymSrv { - public: - AutoSymSrv() : initialized_(false) {} - - ~AutoSymSrv() { - if (!Cleanup()) { - // Print the error message here, because destructors have no return - // value. - fprintf(stderr, "~AutoSymSrv: SymCleanup: error %d\n", GetLastError()); - } - } - - bool Initialize(HANDLE process, char *path, bool invade_process) { - process_ = process; - initialized_ = SymInitialize(process, path, invade_process) == TRUE; - return initialized_; - } - - bool Cleanup() { - if (initialized_) { - if (SymCleanup(process_)) { - initialized_ = false; - return true; - } - return false; - } - - return true; - } - - private: - HANDLE process_; - bool initialized_; -}; - -// A stack-based class that "owns" a pathname and deletes it when destroyed, -// unless told not to by having its Release() method called. Early deletions -// are supported by calling Delete(). -class AutoDeleter { - public: - AutoDeleter(const string &path) : path_(path) {} - - ~AutoDeleter() { - int error; - if ((error = Delete()) != 0) { - // Print the error message here, because destructors have no return - // value. - fprintf(stderr, "~AutoDeleter: Delete: error %d for %s\n", - error, path_.c_str()); - } - } - - int Delete() { - if (path_.empty()) - return 0; - - int error = remove(path_.c_str()); - Release(); - return error; - } - - void Release() { - path_.clear(); - } - - private: - string path_; -}; - -MSSymbolServerConverter::LocateResult -MSSymbolServerConverter::LocateSymbolFile(const MissingSymbolInfo &missing, - string *symbol_file) { - assert(symbol_file); - symbol_file->clear(); - - GUIDOrSignatureIdentifier identifier; - if (!identifier.InitializeFromString(missing.debug_identifier)) { - fprintf(stderr, - "LocateSymbolFile: Unparseable debug_identifier for %s %s %s\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_FAILURE; - } - - HANDLE process = GetCurrentProcess(); // CloseHandle is not needed. - AutoSymSrv symsrv; - if (!symsrv.Initialize(process, - const_cast(symbol_path_.c_str()), - false)) { - fprintf(stderr, "LocateSymbolFile: SymInitialize: error %d for %s %s %s\n", - GetLastError(), - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_FAILURE; - } - - if (!SymRegisterCallback64(process, SymCallback, - reinterpret_cast(this))) { - fprintf(stderr, - "LocateSymbolFile: SymRegisterCallback64: error %d for %s %s %s\n", - GetLastError(), - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_FAILURE; - } - - // SYMOPT_DEBUG arranges for SymCallback to be called with additional - // debugging information. This is used to determine the nature of failures. - DWORD options = SymGetOptions() | SYMOPT_DEBUG | SYMOPT_NO_PROMPTS | - SYMOPT_FAIL_CRITICAL_ERRORS | SYMOPT_SECURE; - SymSetOptions(options); - - // SymCallback will set these as needed inisde the SymFindFileInPath call. - fail_dns_ = false; - fail_timeout_ = false; - fail_not_found_ = false; - - // Do the lookup. - char path[MAX_PATH]; - if (!SymFindFileInPath( - process, NULL, - const_cast(missing.debug_file.c_str()), - const_cast(identifier.guid_or_signature_pointer()), - identifier.age(), 0, - identifier.type() == GUIDOrSignatureIdentifier::TYPE_GUID ? - SSRVOPT_GUIDPTR : SSRVOPT_DWORDPTR, - path, SymFindFileInPathCallback, this)) { - DWORD error = GetLastError(); - if (error == ERROR_FILE_NOT_FOUND) { - // This can be returned for a number of reasons. Use the crumbs - // collected by SymCallback to determine which one is relevant. - - // These errors are possibly transient. - if (fail_dns_ || fail_timeout_) { - return LOCATE_RETRY; - } - - // This is an authoritiative file-not-found message. - if (fail_not_found_) { - fprintf(stderr, - "LocateSymbolFile: SymFindFileInPath: LOCATE_NOT_FOUND error " - "for %s %s %s\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_NOT_FOUND; - } - - // If the error is FILE_NOT_FOUND but none of the known error - // conditions are matched, fall through to LOCATE_FAILURE. - } - - fprintf(stderr, - "LocateSymbolFile: SymFindFileInPath: error %d for %s %s %s\n", - error, - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_FAILURE; - } - - // The AutoDeleter ensures that the file is only kept when returning - // LOCATE_SUCCESS. - AutoDeleter deleter(path); - - // Do the cleanup here even though it will happen when symsrv goes out of - // scope, to allow it to influence the return value. - if (!symsrv.Cleanup()) { - fprintf(stderr, "LocateSymbolFile: SymCleanup: error %d for %s %s %s\n", - GetLastError(), - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str()); - return LOCATE_FAILURE; - } - - deleter.Release(); - - *symbol_file = path; - return LOCATE_SUCCESS; -} - -// static -BOOL CALLBACK MSSymbolServerConverter::SymCallback(HANDLE process, - ULONG action, - ULONG64 data, - ULONG64 context) { - MSSymbolServerConverter *self = - reinterpret_cast(context); - - switch (action) { - case CBA_EVENT: { - IMAGEHLP_CBA_EVENT *cba_event = - reinterpret_cast(data); - - // Put the string into a string object to be able to use string::find - // for substring matching. This is important because the not-found - // message does not use the entire string but is appended to the URL - // that SymSrv attempted to retrieve. - string desc(cba_event->desc); - - // desc_action maps strings (in desc) to boolean pointers that are to - // be set to true if the string matches. - struct desc_action { - const char *desc; // The substring to match. - bool *action; // On match, this pointer will be set to true. - }; - - static const desc_action desc_actions[] = { - // When a DNS error occurs, it could be indiciative of network - // problems. - { "SYMSRV: The server name or address could not be resolved\n", - &self->fail_dns_ }, - - // This message is produced if no connection is opened. - { "SYMSRV: A connection with the server could not be established\n", - &self->fail_timeout_ }, - - // This message is produced if a connection is established but the - // server fails to respond to the HTTP request. - { "SYMSRV: The operation timed out\n", - &self->fail_timeout_ }, - - // This message is produced when the requested file is not found, - // even if one or more of the above messages are also produced. - // It's trapped to distinguish between not-found and unknown-failure - // conditions. Note that this message will not be produced if a - // connection is established and the server begins to respond to the - // HTTP request but does not finish transmitting the file. - { " not found\n", - &self->fail_not_found_ } - }; - - for (int desc_action_index = 0; - desc_action_index < sizeof(desc_actions) / sizeof(desc_action); - ++desc_action_index) { - if (desc.find(desc_actions[desc_action_index].desc) != string::npos) { - *(desc_actions[desc_action_index].action) = true; - break; - } - } - - break; - } - } - - // This function is a mere fly on the wall. Treat everything as unhandled. - return FALSE; -} - -// static -BOOL CALLBACK MSSymbolServerConverter::SymFindFileInPathCallback( - char *filename, void *context) { - // FALSE ends the search, indicating that the located symbol file is - // satisfactory. - return FALSE; -} - -MSSymbolServerConverter::LocateResult -MSSymbolServerConverter::LocateAndConvertSymbolFile( - const MissingSymbolInfo &missing, - bool keep_symbol_file, - string *converted_symbol_file, - string *symbol_file) { - assert(converted_symbol_file); - converted_symbol_file->clear(); - if (symbol_file) { - symbol_file->clear(); - } - - string pdb_file; - LocateResult result = LocateSymbolFile(missing, &pdb_file); - if (result != LOCATE_SUCCESS) { - return result; - } - - if (symbol_file && keep_symbol_file) { - *symbol_file = pdb_file; - } - - // Conversion may fail because the file is corrupt. If a broken file is - // kept in the local cache, LocateSymbolFile will not hit the network again - // to attempt to locate it. To guard against problems like this, the - // symbol file in the local cache will be removed if conversion fails. - AutoDeleter pdb_deleter(pdb_file); - - // Be sure that it's a .pdb file, since we'll be replacing .pdb with .sym - // for the converted file's name. - string pdb_extension = pdb_file.substr(pdb_file.length() - 4); - // strcasecmp is called _stricmp here. - if (_stricmp(pdb_extension.c_str(), ".pdb") != 0) { - fprintf(stderr, "LocateAndConvertSymbolFile: " - "LocateSymbolFile: no .pdb extension for %s %s %s %s\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str(), - pdb_file.c_str()); - return LOCATE_FAILURE; - } - - // PDBSourceLineWriter wants the filename as a wstring, so convert it. - wstring pdb_file_w; - if (!WindowsStringUtils::safe_mbstowcs(pdb_file, &pdb_file_w)) { - fprintf(stderr, "LocateAndConvertSymbolFile: " - "WindowsStringUtils::safe_mbstowcs failed for %s %s %s %s\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str(), - pdb_file.c_str()); - return LOCATE_FAILURE; - } - - PDBSourceLineWriter writer; - if (!writer.Open(pdb_file_w, PDBSourceLineWriter::PDB_FILE)) { - fprintf(stderr, "LocateAndConvertSymbolFile: " - "PDBSourceLineWriter::Open failed for %s %s %s %ws\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str(), - pdb_file_w.c_str()); - return LOCATE_FAILURE; - } - - *converted_symbol_file = pdb_file.substr(0, pdb_file.length() - 4) + ".sym"; - - FILE *converted_output = NULL; -#if _MSC_VER >= 1400 // MSVC 2005/8 - errno_t err; - if ((err = fopen_s(&converted_output, converted_symbol_file->c_str(), "w")) - != 0) { -#else // _MSC_VER >= 1400 - // fopen_s and errno_t were introduced in MSVC8. Use fopen for earlier - // environments. Don't use fopen with MSVC8 and later, because it's - // deprecated. fopen does not provide reliable error codes, so just use - // -1 in the event of a failure. - int err; - if (!(converted_output = fopen(converted_symbol_file->c_str(), "w"))) { - err = -1; -#endif // _MSC_VER >= 1400 - fprintf(stderr, "LocateAndConvertSymbolFile: " - "fopen_s: error %d for %s %s %s %s\n", - err, - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str(), - converted_symbol_file->c_str()); - return LOCATE_FAILURE; - } - - AutoDeleter sym_deleter(*converted_symbol_file); - - bool success = writer.WriteMap(converted_output); - fclose(converted_output); - - if (!success) { - fprintf(stderr, "LocateAndConvertSymbolFile: " - "PDBSourceLineWriter::WriteMap failed for %s %s %s %s\n", - missing.debug_file.c_str(), - missing.debug_identifier.c_str(), - missing.version.c_str(), - pdb_file.c_str()); - return LOCATE_FAILURE; - } - - if (keep_symbol_file) { - pdb_deleter.Release(); - } - - sym_deleter.Release(); - - return LOCATE_SUCCESS; -} - -} // namespace google_breakpad diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.h b/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.h deleted file mode 100644 index fffb7b8b..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.h +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// ms_symbol_server_converter.h: Obtain symbol files from a Microsoft -// symbol server, and convert them to Breakpad's dumped format. -// -// At runtime, MSSymbolServerConverter and code that it calls depend on being -// able to locate suitable versions of dbghelp.dll and symsrv.dll. For best -// results, place these files in the same directory as the executable. -// dbghelp.dll and symsrv.dll as supplied with Debugging Tools for Windows are -// both redistributable, as indicated by the package's redist.txt file. -// -// When connecting to Microsoft's symbol server at -// http://msdl.microsoft.com/download/symbols/, which provides access to -// symbols for the operating system itself, symsrv.dll requires agreement to -// Microsoft's "Terms of Use for Microsoft Symbols and Binaries." Because this -// library places the symbol engine into a promptless mode, the dialog with the -// terms will not appear, and use of Microsoft's symbol server will not be -// possible. To indicate agreement to the terms, create a file called -// symsrv.yes in the same directory as symsrv.dll. (Note that symsrv.dll will -// also recognize a symsrv.no file as indicating that you do not accept the -// terms; the .yes file takes priority over the .no file.) The terms of use -// are contained within symsrv.dll; they were formerly available online at -// http://www.microsoft.com/whdc/devtools/debugging/symsrvTOU2.mspx , but -// do not appear to be available online any longer as of January, 2007. It is -// possible to view the terms from within WinDbg (Debugging Tools for Windows) -// by removing any symsrv.yes and symsrv.no files from WinDbg's directory, -// setting the symbol path to include Microsoft's symbol server (.sympath), and -// attempting to load symbols from their server (.reload). -// -// This code has been tested with dbghelp.dll 6.5.3.7 and symsrv.dll 6.5.3.8, -// included with Microsoft Visual Studio 8 in Common7/IDE. This has also -// been tested with dbghelp.dll and symsrv.dll 6.6.7.5, included with that -// version of Debugging Tools for Windows, available at -// http://www.microsoft.com/whdc/devtools/debugging/ . -// -// Author: Mark Mentovai - - -#ifndef MS_SYMBOL_SERVER_CONVERTER_H__ -#define MS_SYMBOL_SERVER_CONVERTER_H__ - -#include - -#include -#include - -namespace google_breakpad { - -using std::string; -using std::vector; - -// MissingSymbolInfo contains the subset of the information in the processor's -// CodeModule structure relevant to obtaining a missing symbol file. Only -// debug_file and debug_identifier are relevant in actually obtaining the -// missing file; the other fields are for convenience. -struct MissingSymbolInfo { - string code_file; - string code_identifier; - string debug_file; - string debug_identifier; - string version; -}; - -class GUIDOrSignatureIdentifier { - public: - enum GUIDOrSignatureType { - TYPE_NONE = 0, - TYPE_GUID, - TYPE_SIGNATURE - }; - - GUIDOrSignatureIdentifier() : type_(TYPE_NONE) {} - - // Converts |identifier|, a debug_identifier-formatted string, into its - // component fields: either a GUID and age, or signature and age. If - // successful, sets the relevant fields in the object, including the type - // field, and returns true. On error, returns false. - bool InitializeFromString(const string &identifier); - - GUIDOrSignatureType type() const { return type_; } - GUID guid() const { return guid_; } - DWORD signature() const { return signature_; } - int age() const { return age_; } - const void *guid_or_signature_pointer() const { return &guid_; } - - private: - GUIDOrSignatureType type_; - - // An identifier contains either a 128-bit uuid or a 32-bit signature. - union { - GUID guid_; - DWORD signature_; - }; - - // All identifiers used here have age fields, which indicate a specific - // revision given a uuid or signature. - int age_; -}; - -class MSSymbolServerConverter { - public: - enum LocateResult { - LOCATE_FAILURE = 0, - LOCATE_NOT_FOUND, // Authoritative: the file is not present. - LOCATE_RETRY, // Transient (network?) error, try again later. - LOCATE_SUCCESS - }; - - // Create a new object. local_cache is the location (pathname) of a local - // symbol store used to hold downloaded and converted symbol files. This - // directory will be created by LocateSymbolFile when it successfully - // retrieves a symbol file. symbol_servers contains a list of locations (URLs - // or pathnames) of the upstream symbol server stores, given in order of - // preference, with the first string in the vector identifying the first - // store to try. The vector must contain at least one string. None of the - // strings passed to this constructor may contain asterisk ('*') or semicolon - // (';') characters, as the symbol engine uses these characters as separators. - MSSymbolServerConverter(const string &local_cache, - const vector &symbol_servers); - - // Locates the symbol file specified by the identifying information in - // |missing|, by checking the symbol stores identified when the object - // was created. When returning LOCATE_SUCCESS, symbol_file is set to - // the pathname of the decompressed symbol file as it is stored in the - // local cache. - LocateResult LocateSymbolFile(const MissingSymbolInfo &missing, - string *symbol_file); - - // Calls LocateSymbolFile and converts the returned symbol file to the - // dumped-symbol format, storing it adjacent to the symbol file. The - // only conversion supported is from pdb files. Returns the return - // value of LocateSymbolFile, or if LocateSymbolFile succeeds but - // conversion fails, returns LOCATE_FAILURE. The pathname to the - // pdb file and to the converted symbol file are returned in - // converted_symbol_file and symbol_file. symbol_file is optional and - // may be NULL. If only the converted symbol file is desired, set - // keep_symbol_file to false to indicate that the original symbol file - // (pdb) should be deleted after conversion. - LocateResult LocateAndConvertSymbolFile(const MissingSymbolInfo &missing, - bool keep_symbol_file, - string *converted_symbol_file, - string *symbol_file); - - private: - // Called by various SymSrv functions to report status as progress is made - // and to allow the callback to influence processing. Messages sent to this - // callback can be used to distinguish between the various failure modes - // that SymFindFileInPath might encounter. - static BOOL CALLBACK SymCallback(HANDLE process, ULONG action, ULONG64 data, - ULONG64 context); - - // Called by SymFindFileInPath (in LocateSymbolFile) after a candidate - // symbol file is located, when it's present in the local cache. - // SymFindFileInPath actually seems to accept NULL for a callback function - // and behave properly for our needs in that case, but the documentation - // doesn't mention it, so this little callback is provided. - static BOOL CALLBACK SymFindFileInPathCallback(char *filename, - void *context); - - // The search path used by SymSrv, built based on the arguments to the - // constructor. - string symbol_path_; - - // SymCallback will set at least one of these failure variables if - // SymFindFileInPath fails for an expected reason. - bool fail_dns_; // DNS failures (fail_not_found_ will also be set). - bool fail_timeout_; // Timeouts (fail_not_found_ will also be set). - bool fail_not_found_; // The file could not be found. If this is the only - // fail_* member set, then it is authoritative. -}; - -} // namespace google_breakpad - -#endif // MS_SYMBOL_SERVER_CONVERTER_H__ diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.vcproj b/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.vcproj deleted file mode 100644 index 6a72ec03..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/converter/ms_symbol_server_converter.vcproj +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.cc b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.cc deleted file mode 100644 index 3e8827b6..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2006, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// Windows utility to dump the line number data from a pdb file to -// a text-based format that we can use from the minidump processor. - -#include - -#include - -#include "common/windows/pdb_source_line_writer.h" - -using std::wstring; -using google_breakpad::PDBSourceLineWriter; - -int wmain(int argc, wchar_t **argv) { - if (argc < 2) { - fprintf(stderr, "Usage: %ws \n", argv[0]); - return 1; - } - - PDBSourceLineWriter writer; - if (!writer.Open(wstring(argv[1]), PDBSourceLineWriter::ANY_FILE)) { - fprintf(stderr, "Open failed\n"); - return 1; - } - - if (!writer.WriteMap(stdout)) { - fprintf(stderr, "WriteMap failed\n"); - return 1; - } - - writer.Close(); - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.vcproj b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.vcproj deleted file mode 100644 index f64236d9..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/dump_syms.vcproj +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/run_regtest.sh b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/run_regtest.sh deleted file mode 100644 index 1f20f64f..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/run_regtest.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2006, Google 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: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * 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. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# 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 -# OWNER 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. - -Release/dump_syms.exe testdata/dump_syms_regtest.pdb | \ - tr -d '\015' > \ - testdata/dump_syms_regtest.new -status=$? - -if [ $status -ne 0 ] ; then - echo "FAIL, dump_syms.exe failed" - exit $status -fi - -diff -u testdata/dump_syms_regtest.new testdata/dump_syms_regtest.sym > \ - testdata/dump_syms_regtest.diff -status=$? - -if [ $status -eq 0 ] ; then - rm testdata/dump_syms_regtest.diff testdata/dump_syms_regtest.new - echo "PASS" -else - echo "FAIL, see testdata/dump_syms_regtest.[new|diff]" -fi - -exit $status diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc deleted file mode 100644 index ce53f582..00000000 --- a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2007, Google 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: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// 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 -// OWNER 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. - -// cl /Zi dump_syms_regtest.cc -// dump_syms dump_syms_regtest.pdb | tr -d '\015' > dump_syms_regtest.sym - -namespace google_breakpad { - -class C { - public: - C() : member_(1) {} - virtual ~C() {} - - void set_member(int value) { member_ = value; } - int member() const { return member_; } - - void f() { member_ = g(); } - virtual int g() { return 2; } - static char* h(const C &that) { return 0; } - - private: - int member_; -}; - -static int i() { - return 3; -} - -} // namespace google_breakpad - -int main(int argc, char **argv) { - google_breakpad::C object; - object.set_member(google_breakpad::i()); - object.f(); - int value = object.g(); - char *nothing = object.h(object); - - return 0; -} diff --git a/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb b/thirdparty/google-breakpad/r318/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb deleted file mode 100644 index bb3e14efb734304cd7ba503cf772c024af25f366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846848 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

  • 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%0DfgdR?Ax4hU_{BC|J2E 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%0AVJ)}>JgoF#4J`0u#={4jz(a>q);u(u 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 C{z3!* diff --git a/thirdparty/google-breakpad/r318/lib/win32/breakpad.lib b/thirdparty/google-breakpad/r318/lib/win32/breakpad.lib deleted file mode 100644 index 6e6e82b304883f265a2f342138352fd36f3418ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10305410 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